Skip to content

Commit 15d3e96

Browse files
committed
Update the Universal Translator API
1 parent c9ab15a commit 15d3e96

File tree

2 files changed

+92
-20
lines changed

2 files changed

+92
-20
lines changed

seleniumbase/translate/master_dict.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,37 @@ def get_import_line(language):
108108
"" % (language, import_line.keys()))
109109
return import_line[language]
110110

111+
def get_locale_code(language):
112+
locale_codes = {}
113+
locale_codes["English"] = "en"
114+
locale_codes["Chinese"] = "zh"
115+
locale_codes["Dutch"] = "nl"
116+
locale_codes["French"] = "fr"
117+
locale_codes["Italian"] = "it"
118+
locale_codes["Japanese"] = "ja"
119+
locale_codes["Korean"] = "ko"
120+
locale_codes["Portuguese"] = "pt"
121+
locale_codes["Russian"] = "ru"
122+
locale_codes["Spanish"] = "es"
123+
if language not in locale_codes.keys():
124+
raise Exception("Invalid language {%s} not in {%s}!"
125+
"" % (language, locale_codes.keys()))
126+
return locale_codes[language]
127+
128+
def get_locale_list():
129+
locale_list = []
130+
locale_list.append("en")
131+
locale_list.append("zh")
132+
locale_list.append("nl")
133+
locale_list.append("fr")
134+
locale_list.append("it")
135+
locale_list.append("ja")
136+
locale_list.append("ko")
137+
locale_list.append("pt")
138+
locale_list.append("ru")
139+
locale_list.append("es")
140+
return locale_list
141+
111142

112143
class MD_L_Codes:
113144
# Master Dictionary Language Codes

seleniumbase/translate/translator.py

Lines changed: 61 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def process_test_file(code_lines, new_lang):
119119
changed = True
120120
new_parent = MD_F.get_lang_parent_class(new_lang)
121121
new_line = (
122-
'%sclass %s(%s)%s'
122+
'%sclass %s(%s):%s'
123123
'' % (whitespace, name, new_parent, comments))
124124
else:
125125
new_line = line
@@ -157,7 +157,7 @@ def process_test_file(code_lines, new_lang):
157157

158158
seleniumbase_lines.append(line)
159159

160-
return seleniumbase_lines, changed
160+
return seleniumbase_lines, changed, detected_lang
161161

162162

163163
def main():
@@ -171,7 +171,6 @@ def main():
171171
c7 = colorama.Fore.BLACK + colorama.Back.MAGENTA
172172
cr = colorama.Style.RESET_ALL
173173
expected_arg = ("[A SeleniumBase Python file]")
174-
# num_args = len(sys.argv)
175174
command_args = sys.argv[2:]
176175

177176
seleniumbase_file = command_args[0]
@@ -257,11 +256,11 @@ def main():
257256
specify_lang = specify_lang.replace('>*', c5 + ">*")
258257
specify_lang = specify_lang.replace('*<', "*<" + cr)
259258
specify_lang = specify_lang.replace(
260-
"Language Options:", c3 + "Language Options:" + cr)
259+
"Language Options:", c4 + "Language Options:" + cr)
261260
specify_lang = specify_lang.replace(
262-
"> ******** ", c4 + "> ******** " + cr)
261+
"> ******** ", c3 + "> ******** " + cr)
263262
specify_lang = specify_lang.replace(
264-
" ******** <", c4 + " ******** <" + cr)
263+
" ******** <", c3 + " ******** <" + cr)
265264
specify_lang = specify_lang.replace("--en", c2 + "--en" + cr)
266265
specify_lang = specify_lang.replace("--zh", c2 + "--zh" + cr)
267266
specify_lang = specify_lang.replace("--nl", c2 + "--nl" + cr)
@@ -286,11 +285,11 @@ def main():
286285
specify_action = specify_action.replace(">*", c6 + ">*")
287286
specify_action = specify_action.replace("*<", "*<" + cr)
288287
specify_action = specify_action.replace(
289-
"Action Options:", c3 + "Action Options:" + cr)
288+
"Action Options:", c4 + "Action Options:" + cr)
290289
specify_action = specify_action.replace(
291-
"> *** ", c4 + "> *** " + cr)
290+
"> *** ", c3 + "> *** " + cr)
292291
specify_action = specify_action.replace(
293-
" *** <", c4 + " *** <" + cr)
292+
" *** <", c3 + " *** <" + cr)
294293
specify_action = specify_action.replace(" -p", " " + c1 + "-p" + cr)
295294
specify_action = specify_action.replace(" -o", " " + c1 + "-o" + cr)
296295
specify_action = specify_action.replace(" -c", " " + c1 + "-c" + cr)
@@ -300,9 +299,9 @@ def main():
300299
" --overwrite", " " + c1 + "--overwrite" + cr)
301300
specify_action = specify_action.replace(
302301
" --copy", " " + c1 + "--copy" + cr)
303-
example_run = example_run.replace("Examples:", c3 + "Examples:" + cr)
304-
example_run = example_run.replace("> *** ", c4 + "> *** " + cr)
305-
example_run = example_run.replace(" *** <", c4 + " *** <" + cr)
302+
example_run = example_run.replace("Examples:", c4 + "Examples:" + cr)
303+
example_run = example_run.replace("> *** ", c3 + "> *** " + cr)
304+
example_run = example_run.replace(" *** <", c3 + " *** <" + cr)
306305
example_run = example_run.replace(" -p", " " + c1 + "-p" + cr)
307306
example_run = example_run.replace(" -o", " " + c1 + "-o" + cr)
308307
example_run = example_run.replace(" -c", " " + c1 + "-c" + cr)
@@ -312,9 +311,9 @@ def main():
312311
example_run = example_run.replace(" --zh", " " + c2 + "--zh" + cr)
313312
example_run = example_run.replace(" --pt", " " + c2 + "--pt" + cr)
314313
example_run = example_run.replace(" --nl", " " + c2 + "--nl" + cr)
315-
usage = usage.replace("Usage:", c3 + "Usage:" + cr)
316-
usage = usage.replace("> *** ", c4 + "> *** " + cr)
317-
usage = usage.replace(" *** <", c4 + " *** <" + cr)
314+
usage = usage.replace("Usage:", c4 + "Usage:" + cr)
315+
usage = usage.replace("> *** ", c3 + "> *** " + cr)
316+
usage = usage.replace(" *** <", c3 + " *** <" + cr)
318317
usage = usage.replace("SB_FILE.py", c4 + "SB_FILE.py" + cr)
319318
usage = usage.replace("LANGUAGE", c2 + "LANGUAGE" + cr)
320319
usage = usage.replace("ACTION", c1 + "ACTION" + cr)
@@ -342,13 +341,14 @@ def main():
342341

343342
with open(seleniumbase_file, 'r', encoding='utf-8') as f:
344343
all_code = f.read()
345-
if "def test_" not in all_code:
346-
raise Exception("\n\n`%s` is not a valid SeleniumBase unittest file!\n"
344+
if "def test_" not in all_code and "from seleniumbase" not in all_code:
345+
raise Exception("\n\n`%s` is not a valid SeleniumBase test file!\n"
347346
"\nExpecting: %s\n"
348347
% (seleniumbase_file, expected_arg))
349348
code_lines = all_code.split('\n')
350349

351-
seleniumbase_lines, changed = process_test_file(code_lines, new_lang)
350+
seleniumbase_lines, changed, d_l = process_test_file(code_lines, new_lang)
351+
detected_lang = d_l
352352

353353
if not changed:
354354
msg = ('\n*> [%s] was already in %s! * No changes were made! <*\n'
@@ -357,13 +357,54 @@ def main():
357357
print(msg)
358358
return
359359

360+
save_line = ("[[[[%s]]]] was translated to [[[%s]]]! "
361+
"(Previous: %s)\n"
362+
"" % (seleniumbase_file, new_lang, detected_lang))
363+
save_line = save_line.replace("[[[[", "" + c4)
364+
save_line = save_line.replace("]]]]", cr + "")
365+
save_line = save_line.replace("[[[", "" + c2)
366+
save_line = save_line.replace("]]]", cr + "")
367+
360368
if print_only:
369+
print("")
370+
print(save_line)
371+
print(c1 + "* Here are the results: >>>" + cr)
372+
print("--------------------------------------------------------------")
361373
for line in seleniumbase_lines:
362374
print(line)
375+
print("--------------------------------------------------------------")
376+
377+
new_file_name = None
378+
if copy:
379+
base_file_name = seleniumbase_file.split('.py')[0]
380+
new_locale = MD_F.get_locale_code(new_lang)
381+
new_ext = "_" + new_locale + ".py"
382+
for locale in MD_F.get_locale_list():
383+
ext = "_" + locale + ".py"
384+
if seleniumbase_file.endswith(ext):
385+
base_file_name = seleniumbase_file.split(ext)[0]
386+
break
387+
new_file_name = base_file_name + new_ext
388+
elif overwrite:
389+
new_file_name = seleniumbase_file
390+
else:
391+
pass # Print-only run already done
363392

364-
return
393+
if not print_only:
394+
print("")
395+
print(save_line)
396+
else:
397+
pass # Print-only run already done
365398

366-
# TODO: Finish writing this for -o and -c options (File Writing)
399+
if new_file_name:
400+
out_file = codecs.open(new_file_name, "w+", encoding='utf-8')
401+
out_file.writelines("\r\n".join(seleniumbase_lines))
402+
out_file.close()
403+
results_saved = ("The translation was saved to: [[[%s]]]\n"
404+
"" % new_file_name)
405+
results_saved = results_saved.replace("[[[", "" + c1)
406+
results_saved = results_saved.replace("]]]", cr + "")
407+
print(results_saved)
367408

368409

369410
if __name__ == "__main__":

0 commit comments

Comments
 (0)