I needed to rename a whole load of files that were in Japanese. So I wrote a python program that translates the filename using google translate.
It’s not at all fancy, just run it and pass the filenames to translate and rename.
E.g.:
$ ls こんにちは世界.png $ sudo pip3 install googletrans $ translate_rename.py こんにちは世界.png こんにちは世界.png -> Hello_World.png $ ls Hello_World.png
#!/usr/bin/python3
import sys, re, os
from googletrans import Translator
translator = Translator()
sourceLanguage = 'ja'
destLanguage = 'en'
# Set to false to actually rename the files
dryRun = True
def translate_and_rename(filename):
filenameSplit = filename.rsplit('.',1)
translated = translator.translate(filenameSplit[0], src=sourceLanguage, dest=destLanguage).text
translated = re.sub( '[^a-zA-Z0-9.]+', '_', translated).strip().title()
if len(filenameSplit) > 1:
translated += '.' + filenameSplit[1]
if filename == translated:
print(filename, ' (unchanged)')
else:
print(filename, " -> ", translated)
if not dryRun:
os.rename(filename, translated)
def main(argv):
if len(argv) == 1:
print("Need to pass filenames to translate and rename")
for x in argv[1:]:
translate_and_rename(x)
if dryRun:
print()
print(" Dry run only - no actual changes made ")
print()
print("Edit this file and set DryRun to True")
if __name__ == "__main__":
main(sys.argv)