Skip to content

Instantly share code, notes, and snippets.

@Happy-Ferret
Forked from DollarAkshay/translate.py
Created February 20, 2022 15:39
Show Gist options
  • Save Happy-Ferret/b96b72ad04c4ee77ac684584add0e0fb to your computer and use it in GitHub Desktop.
Save Happy-Ferret/b96b72ad04c4ee77ac684584add0e0fb to your computer and use it in GitHub Desktop.
Script to translate JSON strings with googletrans library in python. Useful for web language localization
import json
import googletrans
import os
from googletrans import Translator
def translateString(data, destLangCode):
global translator
if isinstance(data, dict):
return {k: translateString(v, destLangCode) for k, v in data.items()}
else:
return translator.translate(data, src='en', dest=destLangCode).text
# Main Code
all_languages = {'af': 'afrikaans', 'sq': 'albanian', 'am': 'amharic', 'ar': 'arabic', 'hy': 'armenian', 'az': 'azerbaijani', 'eu': 'basque', 'be': 'belarusian', 'bn': 'bengali', 'bs': 'bosnian', 'bg': 'bulgarian', 'ca': 'catalan', 'ceb': 'cebuano', 'ny': 'chichewa', 'zh-cn': 'chinese (simplified)', 'zh-tw': 'chinese (traditional)', 'co': 'corsican', 'hr': 'croatian', 'cs': 'czech', 'da': 'danish', 'nl': 'dutch', 'en': 'english', 'eo': 'esperanto', 'et': 'estonian', 'tl': 'filipino', 'fi': 'finnish', 'fr': 'french', 'fy': 'frisian', 'gl': 'galician', 'ka': 'georgian', 'de': 'german', 'el': 'greek', 'gu': 'gujarati', 'ht': 'haitian creole', 'ha': 'hausa', 'haw': 'hawaiian', 'iw':
'hebrew', 'he': 'hebrew', 'hi': 'hindi', 'hmn': 'hmong', 'hu': 'hungarian', 'is': 'icelandic', 'ig': 'igbo', 'id': 'indonesian', 'ga': 'irish', 'it': 'italian', 'ja': 'japanese', 'jw': 'javanese', 'kn': 'kannada', 'kk': 'kazakh', 'km': 'khmer', 'ko': 'korean', 'ku': 'kurdish (kurmanji)', 'ky': 'kyrgyz', 'lo': 'lao', 'la': 'latin', 'lv': 'latvian', 'lt': 'lithuanian', 'lb': 'luxembourgish', 'mk': 'macedonian', 'mg': 'malagasy', 'ms': 'malay', 'ml': 'malayalam', 'mt': 'maltese', 'mi': 'maori', 'mr': 'marathi', 'mn': 'mongolian', 'my': 'myanmar (burmese)', 'ne': 'nepali', 'no': 'norwegian', 'or': 'odia', 'ps': 'pashto', 'fa': 'persian', 'pl': 'polish', 'pt': 'portuguese',
'pa': 'punjabi', 'ro': 'romanian', 'ru': 'russian', 'sm': 'samoan', 'gd': 'scots gaelic', 'sr': 'serbian', 'st': 'sesotho', 'sn': 'shona', 'sd': 'sindhi', 'si': 'sinhala', 'sk': 'slovak', 'sl': 'slovenian', 'so': 'somali', 'es': 'spanish', 'su': 'sundanese', 'sw': 'swahili', 'sv': 'swedish', 'tg': 'tajik', 'ta': 'tamil', 'te': 'telugu', 'th': 'thai', 'tr': 'turkish', 'uk': 'ukrainian', 'ur': 'urdu', 'ug': 'uyghur', 'uz': 'uzbek', 'vi': 'vietnamese', 'cy': 'welsh', 'xh': 'xhosa', 'yi': 'yiddish', 'yo': 'yoruba', 'zu': 'zulu'}
dirname = os.path.dirname(__file__)
src_filename = os.path.join(dirname, 'english.json')
destLangCodeList = [
'hi',
'kn',
'or',
'bn',
'gu',
'pa',
'ml',
'ta',
'te'
]
translator = Translator()
for destLangCode in destLangCodeList:
print('Starting translation for {:} ... '.format(all_languages[destLangCode]), end="")
with open(src_filename, 'r', encoding="utf-8") as fin:
data = json.load(fin)
translated_json = translateString(data, destLangCode)
dest_filename = os.path.join(dirname, all_languages[destLangCode]+'.json')
with open(dest_filename, 'w', encoding="utf-8") as fout:
json_dumps_str = json.dumps(translated_json, indent=4, ensure_ascii=False)
fout.write(json_dumps_str)
print('done')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment