5
5
6
6
import polib
7
7
from googletrans import Translator
8
+ import chatgpt
8
9
9
10
from utils import refine_translations
10
11
@@ -25,13 +26,23 @@ def _get_po_paths(path: Path) -> List[Path]:
25
26
26
27
if __name__ == '__main__' :
27
28
parser = argparse .ArgumentParser ()
29
+ parser .add_argument (
30
+ "translator" ,
31
+ help = "the translator to use" ,
32
+ choices = ["google" , "chatgpt" ],
33
+ default = "google"
34
+ )
28
35
parser .add_argument (
29
36
"path" ,
30
37
help = "the path of a PO file or a directory containing PO files"
31
38
)
39
+ parser .add_argument (
40
+ "key" ,
41
+ help = "api key for chatGPT use" ,
42
+ default = ""
43
+ )
32
44
args = parser .parse_args ()
33
45
34
- translator = Translator ()
35
46
po_files = _get_po_paths (Path (args .path ).resolve ())
36
47
errors = []
37
48
for path in po_files :
@@ -41,11 +52,24 @@ def _get_po_paths(path: Path) -> List[Path]:
41
52
errors .append (f"{ path } doesn't seem to be a .po file" )
42
53
continue
43
54
44
- for entry in pofile .untranslated_entries ()[::- 1 ]:
45
- translation = translator .translate (entry .msgid , src = 'en' , dest = 'zh-TW' )
55
+ if args .translator == "google" :
56
+ translator = Translator ()
57
+ for entry in pofile .untranslated_entries ()[::- 1 ]:
58
+ translation = translator .translate (entry .msgid , src = 'en' , dest = 'zh-TW' )
59
+
60
+ print (
61
+ '#, fuzzy\n '
62
+ f'msgid "{ repr (entry .msgid )[1 :- 1 ]} "\n '
63
+ f'msgstr "{ repr (refine_translations (translation .text ))[1 :- 1 ]} "\n '
64
+ )
65
+
66
+ elif args .translator == "chatgpt" :
67
+ api_key = args .key
68
+ for entry in pofile .untranslated_entries ()[::- 1 ]:
69
+ translation = chatgpt .Translator (api_key , entry .msgid )
46
70
47
- print (
48
- '#, fuzzy\n '
49
- f'msgid "{ repr (entry .msgid )[1 :- 1 ]} "\n '
50
- f'msgstr "{ repr (refine_translations (translation .text ))[1 :- 1 ]} "\n '
51
- )
71
+ print (
72
+ '#, fuzzy\n '
73
+ f'msgid "{ repr (entry .msgid )[1 :- 1 ]} "\n '
74
+ f'msgstr "{ repr (refine_translations (translation .text ))[1 :- 1 ]} "\n '
75
+ )
0 commit comments