feat: Change Directory Architecture & load LanguageCode

This commit is contained in:
Ting-Jun Wang 2021-04-24 17:40:39 +08:00
parent fb9261e8ef
commit d9f9f03454
Signed by: snsd0805
GPG Key ID: 8DB0D22BC1217D33
6 changed files with 139 additions and 14 deletions

View File

@ -5,9 +5,11 @@ from urllib.parse import quote
class GoogleTranslator():
def __init__(self, fr, to):
# set up
self.languageCode = {}
self.fr = fr
self.to = to
print("from {} to {}".format(fr, to))
self.loadLanguageCode()
self.URL = "https://translate.google.com.tw/_/TranslateWebserverUi/data/batchexecute?\
rpcids=MkEWBc&\
@ -28,6 +30,15 @@ class GoogleTranslator():
# can't sure whether it works for everyone, token in this URL might been blocked.
self.DATA = "f.req=%5B%5B%5B%22MkEWBc%22%2C%22%5B%5B%5C%22{}%5C%22%2C%5C%22{}%5C%22%2C%5C%22{}%5C%22%2Ctrue%5D%2C%5Bnull%5D%5D%22%2Cnull%2C%22generic%22%5D%5D%5D&at=AD08yZn6jdbpV8qLjfergSwRT4IO%3A1618543754261&"
def loadLanguageCode(self):
with open('LanguageCode.csv') as fp:
data = fp.readlines()
data = [line.replace('\n', '') for line in data]
for line in data:
country, code = line.split(',')
self.languageCode[country] = code
def translate(self, text):
'''
return a string which translate from self.fr to self.to

109
LanguageCode.csv Normal file
View File

@ -0,0 +1,109 @@
Afrikaans,af
Albanian,sq
Amharic,am
Arabic,ar
Armenian,hy
Azerbaijani,az
Basque,eu
Belarusian,be
Bengali,bn
Bosnian,bs
Bulgarian,bg
Catalan,ca
Cebuano,ceb
Chinese (Simplified),zh-CN
Chinese (Traditional),zh-TW
Corsican,co
Croatian,hr
Czech,cs
Danish,da
Dutch,nl
English,en
Esperanto,eo
Estonian,et
Finnish,fi
French,fr
Frisian,fy
Galician,gl
Georgian,ka
German,de
Greek,el
Gujarati,gu
Haitian Creole,ht
Hausa,ha
Hawaiian,haw
Hebrew,he
Hindi,hi
Hmong,hmn
Hungarian,hu
Icelandic,is
Igbo,ig
Indonesian,id
Irish,ga
Italian,it
Japanese,ja
Javanese,jv
Kannada,kn
Kazakh,kk
Khmer,km
Kinyarwanda,rw
Korean,ko
Kurdish,ku
Kyrgyz,ky
Lao,lo
Latin,la
Latvian,lv
Lithuanian,lt
Luxembourgish,lb
Macedonian,mk
Malagasy,mg
Malay,ms
Malayalam,ml
Maltese,mt
Maori,mi
Marathi,mr
Mongolian,mn
Myanmar(Burmese),my
Nepali,ne
Norwegian,no
Nyanja(Chichewa),ny
Odia(Oriya),or
Pashto,ps
Persian,fa
Polish,pl
Portuguese(Portugal or Brazil),pt
Punjabi,pa
Romanian,ro
Russian,ru
Samoan,sm
Scots Gaelic,gd
Serbian,sr
Sesotho,st
Shona,sn
Sindhi,sd
Sinhala(Sinhalese),si
Slovak,sk
Slovenian,sl
Somali,so
Spanish,es
Sundanese,su
Swahili,sw
Swedish,sv
Tagalog(Filipino),tl
Tajik,tg
Tamil,ta
Tatar,tt
Telugu,te
Thai,th
Turkish,tr
Turkmen,tk
Ukrainian,uk
Urdu,ur
Uyghur,ug
Uzbek,uz
Vietnamese,vi
Welsh,cy
Xhosa,xh
Yiddish,yi
Yoruba,yo
Zulu,zu
1 Afrikaans af
2 Albanian sq
3 Amharic am
4 Arabic ar
5 Armenian hy
6 Azerbaijani az
7 Basque eu
8 Belarusian be
9 Bengali bn
10 Bosnian bs
11 Bulgarian bg
12 Catalan ca
13 Cebuano ceb
14 Chinese (Simplified) zh-CN
15 Chinese (Traditional) zh-TW
16 Corsican co
17 Croatian hr
18 Czech cs
19 Danish da
20 Dutch nl
21 English en
22 Esperanto eo
23 Estonian et
24 Finnish fi
25 French fr
26 Frisian fy
27 Galician gl
28 Georgian ka
29 German de
30 Greek el
31 Gujarati gu
32 Haitian Creole ht
33 Hausa ha
34 Hawaiian haw
35 Hebrew he
36 Hindi hi
37 Hmong hmn
38 Hungarian hu
39 Icelandic is
40 Igbo ig
41 Indonesian id
42 Irish ga
43 Italian it
44 Japanese ja
45 Javanese jv
46 Kannada kn
47 Kazakh kk
48 Khmer km
49 Kinyarwanda rw
50 Korean ko
51 Kurdish ku
52 Kyrgyz ky
53 Lao lo
54 Latin la
55 Latvian lv
56 Lithuanian lt
57 Luxembourgish lb
58 Macedonian mk
59 Malagasy mg
60 Malay ms
61 Malayalam ml
62 Maltese mt
63 Maori mi
64 Marathi mr
65 Mongolian mn
66 Myanmar(Burmese) my
67 Nepali ne
68 Norwegian no
69 Nyanja(Chichewa) ny
70 Odia(Oriya) or
71 Pashto ps
72 Persian fa
73 Polish pl
74 Portuguese(Portugal or Brazil) pt
75 Punjabi pa
76 Romanian ro
77 Russian ru
78 Samoan sm
79 Scots Gaelic gd
80 Serbian sr
81 Sesotho st
82 Shona sn
83 Sindhi sd
84 Sinhala(Sinhalese) si
85 Slovak sk
86 Slovenian sl
87 Somali so
88 Spanish es
89 Sundanese su
90 Swahili sw
91 Swedish sv
92 Tagalog(Filipino) tl
93 Tajik tg
94 Tamil ta
95 Tatar tt
96 Telugu te
97 Thai th
98 Turkish tr
99 Turkmen tk
100 Ukrainian uk
101 Urdu ur
102 Uyghur ug
103 Uzbek uz
104 Vietnamese vi
105 Welsh cy
106 Xhosa xh
107 Yiddish yi
108 Yoruba yo
109 Zulu zu

4
TUI/Box.py Normal file
View File

@ -0,0 +1,4 @@
import npyscreen
class EditBox(npyscreen.BoxTitle):
_contained_widget = npyscreen.MultiLineEdit

View File

@ -1,15 +1,8 @@
import npyscreen
import curses
from TUI.Box import EditBox
from GoogleTranslator import GoogleTranslator
class TranslatorApp(npyscreen.NPSAppManaged):
def onStart(self):
npyscreen.setTheme(npyscreen.Themes.ColorfulTheme)
self.addForm("MAIN", MainForm, name="Google Translator - TUI")
class Box(npyscreen.BoxTitle):
_contained_widget = npyscreen.MultiLineEdit
class MainForm(npyscreen.FormBaseNew):
def create(self):
# set translator
@ -31,19 +24,20 @@ class MainForm(npyscreen.FormBaseNew):
# get terminal's size
y, x = self.useable_space()
self.input = self.add(Box, name="Input (from)", footer=self.translator.fr,
self.input = self.add(EditBox, name="Input (from)", footer=self.translator.fr,
max_width=x//2-5, max_height=y//3,
relx=3, rely=3,
value="Hello world"
)
self.output = self.add(Box, name="Output (to)", footer=self.translator.to,
self.output = self.add(EditBox, name="Output (to)", footer=self.translator.to,
max_width=x//2-5, max_height=y//3,
relx=x//2+2, rely=3,
value="你好,世界", editable=False
value="你好,世界",
editable=False
)
self.readme = self.add(Box, name="README",
self.readme = self.add(EditBox, name="README",
max_width=x-5, max_height=y//3*2-6,
relx=3, rely=y//3+4,
value='''

7
TUI/TranslatorApp.py Normal file
View File

@ -0,0 +1,7 @@
import npyscreen
from TUI.MainForm import MainForm
class TranslatorApp(npyscreen.NPSAppManaged):
def onStart(self):
npyscreen.setTheme(npyscreen.Themes.ColorfulTheme)
self.addForm("MAIN", MainForm, name="Google Translator - TUI")

View File

@ -1,4 +1,4 @@
from tui import TranslatorApp
from TUI.TranslatorApp import TranslatorApp
app = TranslatorApp()
app.run()