#!/usr/bin/python3 import polib from googletrans import Translator, LANGCODES from time import sleep def main(): ttl = Translator() po = polib.pofile('in.po') cnt = 0 print(f"Current progress: {str(po.percent_translated())}") print("Initiating") src_language = 'english' src_language_code = LANGCODES.get(src_language) if src_language_code is None: print(f"Error: '{src_language}' language is invalid. Please check 'src_language' variable. Here is the list of valid languages: {', '.join(LANGCODES.keys())}") return dest_language = 'portuguese' dest_language_code = LANGCODES.get(dest_language) if dest_language_code is None: print(f"Error: '{dest_language}' language is invalid. Please check 'dest_language' variable. Here is the list of valid languages: {', '.join(LANGCODES.keys())}") return for e in po.untranslated_entries(): if "#" not in e.msgid and "%%" not in e.msgid: cnt += 1 try: e.msgstr = ttl.translate(str(e.msgid), src=src_language_code, dest=dest_language_code).text except Exception as ex: print(ex) sleep(0.25) print(f"{e.msgid}\n-> {e.msgstr}") if (cnt % 20) == 0: po.save() sleep(1) # Safety timer print("\033[33;1mSaved Successfully\033[0m") po.save() print(f"Translated {cnt} entries") print(f"Progress afterwards: {str(po.percent_translated())}") if __name__ == '__main__': main()