Skip to content

Commit 2cf726d

Browse files
committed
Update the translator
1 parent 1cfa64f commit 2cf726d

File tree

2 files changed

+292
-0
lines changed

2 files changed

+292
-0
lines changed

seleniumbase/translate/master_dict.py

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,20 @@ def get_parent_classes_list():
4545
parent_classes.append("CasoDePrueba")
4646
return parent_classes
4747

48+
def get_masterqa_parent_classes_list():
49+
parent_classes = []
50+
parent_classes.append("MasterQA")
51+
parent_classes.append("MasterQA_中文")
52+
parent_classes.append("MasterQA_Nederlands")
53+
parent_classes.append("MasterQA_Français")
54+
parent_classes.append("MasterQA_Italiano")
55+
parent_classes.append("MasterQA_日本語")
56+
parent_classes.append("MasterQA_한국어")
57+
parent_classes.append("MasterQA_Português")
58+
parent_classes.append("MasterQA_Русский")
59+
parent_classes.append("MasterQA_Español")
60+
return parent_classes
61+
4862
def get_parent_class_lang(parent_class):
4963
parent_class_lang = {}
5064
parent_class_lang["BaseCase"] = "English"
@@ -62,6 +76,23 @@ def get_parent_class_lang(parent_class):
6276
"" % (parent_class, parent_class_lang.keys()))
6377
return parent_class_lang[parent_class]
6478

79+
def get_mqa_par_class_lang(parent_class):
80+
parent_class_lang = {}
81+
parent_class_lang["MasterQA"] = "English"
82+
parent_class_lang["MasterQA_中文"] = "Chinese"
83+
parent_class_lang["MasterQA_Nederlands"] = "Dutch"
84+
parent_class_lang["MasterQA_Français"] = "French"
85+
parent_class_lang["MasterQA_Italiano"] = "Italian"
86+
parent_class_lang["MasterQA_日本語"] = "Japanese"
87+
parent_class_lang["MasterQA_한국어"] = "Korean"
88+
parent_class_lang["MasterQA_Português"] = "Portuguese"
89+
parent_class_lang["MasterQA_Русский"] = "Russian"
90+
parent_class_lang["MasterQA_Español"] = "Spanish"
91+
if parent_class not in parent_class_lang.keys():
92+
raise Exception("Invalid parent_class {%s} not in {%s}!"
93+
"" % (parent_class, parent_class_lang.keys()))
94+
return parent_class_lang[parent_class]
95+
6596
def get_lang_parent_class(language):
6697
lang_parent_class = {}
6798
lang_parent_class["English"] = "BaseCase"
@@ -79,6 +110,23 @@ def get_lang_parent_class(language):
79110
"" % (language, lang_parent_class.keys()))
80111
return lang_parent_class[language]
81112

113+
def get_mqa_lang_par_class(language):
114+
lang_parent_class = {}
115+
lang_parent_class["English"] = "MasterQA"
116+
lang_parent_class["Chinese"] = "MasterQA_中文"
117+
lang_parent_class["Dutch"] = "MasterQA_Nederlands"
118+
lang_parent_class["French"] = "MasterQA_Français"
119+
lang_parent_class["Italian"] = "MasterQA_Italiano"
120+
lang_parent_class["Japanese"] = "MasterQA_日本語"
121+
lang_parent_class["Korean"] = "MasterQA_한국어"
122+
lang_parent_class["Portuguese"] = "MasterQA_Português"
123+
lang_parent_class["Russian"] = "MasterQA_Русский"
124+
lang_parent_class["Spanish"] = "MasterQA_Español"
125+
if language not in lang_parent_class.keys():
126+
raise Exception("Invalid language {%s} not in {%s}!"
127+
"" % (language, lang_parent_class.keys()))
128+
return lang_parent_class[language]
129+
82130
def get_import_line(language):
83131
import_line = {}
84132
# - The Default Import Line:
@@ -108,6 +156,35 @@ def get_import_line(language):
108156
"" % (language, import_line.keys()))
109157
return import_line[language]
110158

159+
def get_mqa_im_line(language):
160+
import_line = {}
161+
# - The Default Import Line:
162+
import_line["English"] = (
163+
"from seleniumbase import MasterQA")
164+
# - Translated Import Lines:
165+
import_line["Chinese"] = (
166+
"from seleniumbase.translate.chinese import MasterQA_中文")
167+
import_line["Dutch"] = (
168+
"from seleniumbase.translate.dutch import MasterQA_Nederlands")
169+
import_line["French"] = (
170+
"from seleniumbase.translate.french import MasterQA_Français")
171+
import_line["Italian"] = (
172+
"from seleniumbase.translate.italian import MasterQA_Italiano")
173+
import_line["Japanese"] = (
174+
"from seleniumbase.translate.japanese import MasterQA_日本語")
175+
import_line["Korean"] = (
176+
"from seleniumbase.translate.korean import MasterQA_한국어")
177+
import_line["Portuguese"] = (
178+
"from seleniumbase.translate.portuguese import MasterQA_Português")
179+
import_line["Russian"] = (
180+
"from seleniumbase.translate.russian import MasterQA_Русский")
181+
import_line["Spanish"] = (
182+
"from seleniumbase.translate.spanish import MasterQA_Español")
183+
if language not in import_line.keys():
184+
raise Exception("Invalid language {%s} not in {%s}!"
185+
"" % (language, import_line.keys()))
186+
return import_line[language]
187+
111188
def get_locale_code(language):
112189
locale_codes = {}
113190
locale_codes["English"] = "en"
@@ -196,6 +273,18 @@ class MD:
196273
md["update_text"][8] = "обновить_текст"
197274
md["update_text"][9] = "actualizar_texto"
198275

276+
md["assert_element"] = ["*"] * num_langs
277+
md["assert_element"][0] = "assert_element"
278+
md["assert_element"][1] = "断言元素"
279+
md["assert_element"][2] = "controleren_element"
280+
md["assert_element"][3] = "vérifier_un_élément"
281+
md["assert_element"][4] = "verificare_elemento"
282+
md["assert_element"][5] = "要素を確認する"
283+
md["assert_element"][6] = "요소_확인"
284+
md["assert_element"][7] = "verificar_elemento"
285+
md["assert_element"][8] = "подтвердить_элемент"
286+
md["assert_element"][9] = "verificar_elemento"
287+
199288
md["assert_text"] = ["*"] * num_langs
200289
md["assert_text"][0] = "assert_text"
201290
md["assert_text"][1] = "断言文本"
@@ -207,3 +296,173 @@ class MD:
207296
md["assert_text"][7] = "verificar_texto"
208297
md["assert_text"][8] = "подтвердить_текст"
209298
md["assert_text"][9] = "verificar_texto"
299+
300+
md["assert_exact_text"] = ["*"] * num_langs
301+
md["assert_exact_text"][0] = "assert_exact_text"
302+
md["assert_exact_text"][1] = "确切断言文本"
303+
md["assert_exact_text"][2] = "controleren_exacte_tekst"
304+
md["assert_exact_text"][3] = "vérifier_exactement_le_texte"
305+
md["assert_exact_text"][4] = "verificare_il_testo_esatto"
306+
md["assert_exact_text"][5] = "正確なテキストを確認する"
307+
md["assert_exact_text"][6] = "정확한_텍스트를_확인하는"
308+
md["assert_exact_text"][7] = "verificar_texto_exato"
309+
md["assert_exact_text"][8] = "подтвердить_текст_точно"
310+
md["assert_exact_text"][9] = "verificar_texto_exacto"
311+
312+
md["get_text"] = ["*"] * num_langs
313+
md["get_text"][0] = "get_text"
314+
md["get_text"][1] = "获取文本"
315+
md["get_text"][2] = "ontvang_tekst"
316+
md["get_text"][3] = "obtenir_du_texte"
317+
md["get_text"][4] = "ottenere_il_testo"
318+
md["get_text"][5] = "テキストを取得"
319+
md["get_text"][6] = "텍스트를_검색"
320+
md["get_text"][7] = "obter_texto"
321+
md["get_text"][8] = "получить_текст"
322+
md["get_text"][9] = "obtener_texto"
323+
324+
md["click_link_text"] = ["*"] * num_langs
325+
md["click_link_text"][0] = "click_link_text"
326+
md["click_link_text"][1] = "单击链接文本"
327+
md["click_link_text"][2] = "klik_linktekst"
328+
md["click_link_text"][3] = "cliquez_sur_le_texte_du_lien"
329+
md["click_link_text"][4] = "fare_clic_sul_testo_del_collegamento"
330+
md["click_link_text"][5] = "リンクテキストをクリックします"
331+
md["click_link_text"][6] = "링크_텍스트를_클릭합니다"
332+
md["click_link_text"][7] = "clique_no_texto_do_link"
333+
md["click_link_text"][8] = "нажмите_на_ссылку"
334+
md["click_link_text"][9] = "haga_clic_en_el_texto_del_enlace"
335+
336+
md["assert_link_text"] = ["*"] * num_langs
337+
md["assert_link_text"][0] = "assert_link_text"
338+
md["assert_link_text"][1] = "断言链接文本"
339+
md["assert_link_text"][2] = "controleren_linktekst"
340+
md["assert_link_text"][3] = "vérifier_le_texte_du_lien"
341+
md["assert_link_text"][4] = "verificare_testo_del_collegamento"
342+
md["assert_link_text"][5] = "リンクテキストを確認する"
343+
md["assert_link_text"][6] = "링크_텍스트_확인"
344+
md["assert_link_text"][7] = "verificar_texto_do_link"
345+
md["assert_link_text"][8] = "подтвердить_ссылку"
346+
md["assert_link_text"][9] = "verificar_texto_del_enlace"
347+
348+
md["assert_title"] = ["*"] * num_langs
349+
md["assert_title"][0] = "assert_title"
350+
md["assert_title"][1] = "断言标题"
351+
md["assert_title"][2] = "controleren_titel"
352+
md["assert_title"][3] = "vérifier_le_titre"
353+
md["assert_title"][4] = "verificare_il_titolo"
354+
md["assert_title"][5] = "タイトルを確認"
355+
md["assert_title"][6] = "제목_확인"
356+
md["assert_title"][7] = "verificar_título"
357+
md["assert_title"][8] = "подтвердить_название"
358+
md["assert_title"][9] = "verificar_título"
359+
360+
md["assert_true"] = ["*"] * num_langs
361+
md["assert_true"][0] = "assert_true"
362+
md["assert_true"][1] = "断言为真"
363+
md["assert_true"][2] = "controleren_ware"
364+
md["assert_true"][3] = "vérifier_la_vérité"
365+
md["assert_true"][4] = "verificare_correttezza"
366+
md["assert_true"][5] = "検証が正しい"
367+
md["assert_true"][6] = "올바른지_확인"
368+
md["assert_true"][7] = "verificar_verdade"
369+
md["assert_true"][8] = "подтвердить_правду"
370+
md["assert_true"][9] = "verificar_verdad"
371+
372+
md["assert_false"] = ["*"] * num_langs
373+
md["assert_false"][0] = "assert_false"
374+
md["assert_false"][1] = "断言为假"
375+
md["assert_false"][2] = "controleren_valse"
376+
md["assert_false"][3] = "vérifier_le_mensonge"
377+
md["assert_false"][4] = "verificare_falso"
378+
md["assert_false"][5] = "検証は偽です"
379+
md["assert_false"][6] = "거짓인지_확인"
380+
md["assert_false"][7] = "verificar_falso"
381+
md["assert_false"][8] = "подтвердить_ложные"
382+
md["assert_false"][9] = "verificar_falso"
383+
384+
md["go_back"] = ["*"] * num_langs
385+
md["go_back"][0] = "go_back"
386+
md["go_back"][1] = "回去"
387+
md["go_back"][2] = "terug"
388+
md["go_back"][3] = "retour"
389+
md["go_back"][4] = "indietro"
390+
md["go_back"][5] = "戻る"
391+
md["go_back"][6] = "뒤로"
392+
md["go_back"][7] = "voltar"
393+
md["go_back"][8] = "назад"
394+
md["go_back"][9] = "volver"
395+
396+
md["select_option_by_text"] = ["*"] * num_langs
397+
md["select_option_by_text"][0] = "select_option_by_text"
398+
md["select_option_by_text"][1] = "按文本选择选项"
399+
md["select_option_by_text"][2] = "optie_selecteren_per_tekst"
400+
md["select_option_by_text"][3] = "sélectionner_option_par_texte"
401+
md["select_option_by_text"][4] = "selezionare_opzione_per_testo"
402+
md["select_option_by_text"][5] = "テキストでオプションを選択"
403+
md["select_option_by_text"][6] = "텍스트로_옵션_선택"
404+
md["select_option_by_text"][7] = "selecionar_opção_por_texto"
405+
md["select_option_by_text"][8] = "выбрать_опцию_по_тексту"
406+
md["select_option_by_text"][9] = "seleccionar_opción_por_texto"
407+
408+
md["click_visible_elements"] = ["*"] * num_langs
409+
md["click_visible_elements"][0] = "click_visible_elements"
410+
md["click_visible_elements"][1] = "单击可见元素"
411+
md["click_visible_elements"][2] = "klik_zichtbare_elementen"
412+
md["click_visible_elements"][3] = "cliquez_éléments_visibles"
413+
md["click_visible_elements"][4] = "fare_clic_sugli_elementi_visibili"
414+
md["click_visible_elements"][5] = "表示要素をクリックします"
415+
md["click_visible_elements"][6] = "페이지_요소를_클릭_합니다"
416+
md["click_visible_elements"][7] = "clique_nos_elementos_visíveis"
417+
md["click_visible_elements"][8] = "нажмите_видимые_элементы"
418+
md["click_visible_elements"][9] = "haga_clic_en_elementos_visibles"
419+
420+
md["hover_and_click"] = ["*"] * num_langs
421+
md["hover_and_click"][0] = "hover_and_click"
422+
md["hover_and_click"][1] = "悬停并单击"
423+
md["hover_and_click"][2] = "zweven_en_klik"
424+
md["hover_and_click"][3] = "planer_au_dessus_et_cliquez"
425+
md["hover_and_click"][4] = "passa_il_mouse_sopra_e_fai_clic"
426+
md["hover_and_click"][5] = "上にマウスを移動しクリック"
427+
md["hover_and_click"][6] = "위로_마우스를_이동하고_클릭"
428+
md["hover_and_click"][7] = "passe_o_mouse_e_clique"
429+
md["hover_and_click"][8] = "наведите_и_нажмите"
430+
md["hover_and_click"][9] = "pasar_el_ratón_y_hacer_clic"
431+
432+
md["switch_to_frame"] = ["*"] * num_langs
433+
md["switch_to_frame"][0] = "switch_to_frame"
434+
md["switch_to_frame"][1] = "切换到帧"
435+
md["switch_to_frame"][2] = "overschakelen_naar_frame"
436+
md["switch_to_frame"][3] = "passer_au_cadre"
437+
md["switch_to_frame"][4] = "passa_al_frame"
438+
md["switch_to_frame"][5] = "フレームに切り替え"
439+
md["switch_to_frame"][6] = "프레임으로_전환"
440+
md["switch_to_frame"][7] = "mudar_para_o_quadro"
441+
md["switch_to_frame"][8] = "переключиться_на_кадр"
442+
md["switch_to_frame"][9] = "cambiar_al_marco"
443+
444+
md["switch_to_default_content"] = ["*"] * num_langs
445+
md["switch_to_default_content"][0] = "switch_to_default_content"
446+
md["switch_to_default_content"][1] = "切换到默认内容"
447+
md["switch_to_default_content"][2] = "overschakelen_naar_standaardcontent"
448+
md["switch_to_default_content"][3] = "passer_au_contenu_par_défaut"
449+
md["switch_to_default_content"][4] = "passa_al_contenuto_predefinito"
450+
md["switch_to_default_content"][5] = "デフォルトのコンテンツに切り替える"
451+
md["switch_to_default_content"][6] = "기본_콘텐츠로_전환"
452+
md["switch_to_default_content"][7] = "volte_para_o_conteúdo_padrão"
453+
md["switch_to_default_content"][8] = (
454+
"переключиться_на_содержимое_по_умолчанию")
455+
md["switch_to_default_content"][9] = "cambiar_al_contenido_predeterminado"
456+
457+
# MasterQA Only!
458+
md["verify"] = ["*"] * num_langs
459+
md["verify"][0] = "verify"
460+
md["verify"][1] = "校验"
461+
md["verify"][2] = "controleren"
462+
md["verify"][3] = "vérifier"
463+
md["verify"][4] = "verificare"
464+
md["verify"][5] = "を確認する"
465+
md["verify"][6] = "확인"
466+
md["verify"][7] = "verificar"
467+
md["verify"][8] = "подтвердить"
468+
md["verify"][9] = "verificar"

seleniumbase/translate/translator.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,23 @@ def process_test_file(code_lines, new_lang):
9898
seleniumbase_lines.append(new_line)
9999
added_line = True
100100
break
101+
data = re.match(
102+
r'^\s*' + MD_F.get_mqa_im_line(lang) + r'([\S\s]*)$', line)
103+
if data:
104+
comments = '%s' % data.group(1)
105+
new_line = None
106+
detected_lang = lang
107+
dl_code = lang_codes[detected_lang]
108+
if detected_lang != new_lang:
109+
changed = True
110+
new_line = MD_F.get_mqa_im_line(new_lang) + comments
111+
else:
112+
new_line = line
113+
if new_line.endswith(" # noqa"): # Remove flake8 skip
114+
new_line = new_line[0:-len(" # noqa")]
115+
seleniumbase_lines.append(new_line)
116+
added_line = True
117+
break
101118
if not added_line:
102119
# Probably a language missing from the translator.
103120
# Add the import line as it is and move on.
@@ -130,6 +147,22 @@ def process_test_file(code_lines, new_lang):
130147
seleniumbase_lines.append(new_line)
131148
added_line = True
132149
continue
150+
elif parent_class in MD_F.get_masterqa_parent_classes_list():
151+
detected_lang = MD_F.get_mqa_par_class_lang(parent_class)
152+
dl_code = lang_codes[detected_lang]
153+
if detected_lang != new_lang:
154+
changed = True
155+
new_parent = MD_F.get_mqa_lang_par_class(new_lang)
156+
new_line = (
157+
'%sclass %s(%s):%s'
158+
'' % (whitespace, name, new_parent, comments))
159+
else:
160+
new_line = line
161+
if new_line.endswith(" # noqa"): # Remove flake8 skip
162+
new_line = new_line[0:-len(" # noqa")]
163+
seleniumbase_lines.append(new_line)
164+
added_line = True
165+
continue
133166
if not added_line:
134167
# Probably a language missing from the translator.
135168
# Add the class definition line as it is and move on.

0 commit comments

Comments
 (0)