AItool commited on
Commit
7aa9e56
Β·
verified Β·
1 Parent(s): ac8a545

Upload 9 files

Browse files
Files changed (9) hide show
  1. README.en.md +6 -0
  2. __init__.py +0 -0
  3. app.py +106 -0
  4. helsinki_models.py +1438 -0
  5. iso639_wrapper.py +60 -0
  6. language_detection.py +13 -0
  7. language_directions.py +72 -0
  8. requirements.txt +9 -0
  9. utils.py +18 -0
README.en.md ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ # Scope of project
2
+ 1. Enable multiple languages translate based on helsinki models.βœ…
3
+ 2. Enable auto detect langauge βœ…
4
+ 3. Show error message instead of gradio error βœ…
5
+ 4. Add examples βœ…
6
+ 5. Auto detect on text change βœ…
__init__.py ADDED
File without changes
app.py ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # from responses import start
2
+ import gradio as gr
3
+ from language_directions import *
4
+ from transformers import pipeline
5
+ from adibideak import adibide_esaldiak
6
+
7
+ source_lang_dict = get_all_source_languages()
8
+ target_lang_dict = {}
9
+ source_languages = source_lang_dict.keys()
10
+
11
+ def get_auto_detect_source_dropdown(input_text):
12
+ source, _ = auto_detect_language_code(input_text)
13
+ language_name = get_name_from_iso_code(source)
14
+ source_dropdown_text = "Detected - " + language_name
15
+ update_source_languages_dict(source_lang_dict, source_dropdown_text)
16
+ source_language_dropdown = gr.Dropdown(choices=source_languages,
17
+ value=source_dropdown_text,
18
+ label="Input Language")
19
+ return source_language_dropdown, language_name
20
+
21
+ def get_target_dropdown(source_language_name, input_text):
22
+ global target_lang_dict
23
+ target_lang_dict, source_language = get_target_languages(source_lang_dict[source_language_name], input_text)
24
+ target_languages = list(target_lang_dict.keys())
25
+ default_target_value = None
26
+ if "English" in target_languages or "english" in target_languages:
27
+ default_target_value = "English"
28
+ else:
29
+ default_target_value = target_languages[0]
30
+ target_dropdown = gr.Dropdown(choices=target_languages,
31
+ value=default_target_value,
32
+ label="Output Language")
33
+ return target_dropdown
34
+
35
+ def get_dropdown_value(dropdown):
36
+ if isinstance(dropdown, gr.Dropdown):
37
+ dropdown_value = dropdown.constructor_args.get('value')
38
+ elif isinstance(dropdown, str):
39
+ dropdown_value = dropdown
40
+ return dropdown_value
41
+
42
+ def get_dropdowns(source_dropdown, input_text):
43
+ source_language_name = get_dropdown_value(source_dropdown)
44
+ if input_text and source_language_name == "Detect" or source_language_name.startswith("Detected"):
45
+ source_dropdown, source_language_name = get_auto_detect_source_dropdown(input_text)
46
+ target_dropdown = get_target_dropdown(source_language_name=source_language_name,
47
+ input_text=input_text)
48
+ return source_dropdown, target_dropdown
49
+
50
+ def input_changed(source_language_dropdown, input_text=""):
51
+ return get_dropdowns(source_dropdown=source_language_dropdown,
52
+ input_text=input_text)
53
+
54
+ def translate(input_text, source, target):
55
+ source_readable = source
56
+ if source == "Detect" or source.startswith("Detected"):
57
+ source, _ = auto_detect_language_code(input_text)
58
+ if source in source_lang_dict.keys():
59
+ source = source_lang_dict[source]
60
+ target_lang_dict, _ = get_target_languages(source)
61
+ try:
62
+ target = target_lang_dict[target]
63
+ model = f"Helsinki-NLP/opus-mt-{source}-{target}"
64
+ pipe = pipeline("translation", model=model)
65
+ translation = pipe(input_text)
66
+ return translation[0]['translation_text'], ""
67
+ except KeyError:
68
+ return "", f"Error: Translation from {source_readable} to {target} is not supported by Translation Models"
69
+
70
+
71
+ with gr.Blocks() as demo:
72
+ gr.HTML("""<html>
73
+ <head>
74
+ <style>
75
+ h1 {
76
+ text-align: center;
77
+ }
78
+ </style>
79
+ </head>
80
+ <body>
81
+ <h1>Euskera-EU Basque translator</h1>
82
+ </body>
83
+ </html>""")
84
+ with gr.Row():
85
+ with gr.Column():
86
+ source_language_dropdown = gr.Dropdown(choices=source_languages,
87
+ value="Detect",
88
+ label="Input Language - Input Hizkuntza")
89
+ input_textbox = gr.Textbox(lines=5, placeholder="Enter text to translate", label="Input Text")
90
+ with gr.Column():
91
+ target_language_dropdown = gr.Dropdown(choices=["Basque", "English", "French", "Spanish"],
92
+ value="Basque",
93
+ label="Output Language - Output Hizkuntza")
94
+ translated_textbox = gr.Textbox(lines=5, placeholder="", label="Translated Text")
95
+ info_label = gr.HTML("")
96
+ btn = gr.Button("Translate - Itzuli")
97
+ source_language_dropdown.change(input_changed, inputs=[source_language_dropdown, input_textbox], outputs=[source_language_dropdown, target_language_dropdown])
98
+ input_textbox.change(input_changed, inputs=[source_language_dropdown, input_textbox], outputs=[source_language_dropdown, target_language_dropdown])
99
+ btn.click(translate, inputs=[input_textbox,
100
+ source_language_dropdown,
101
+ target_language_dropdown],
102
+ outputs=[translated_textbox, info_label])
103
+ gr.Examples(adibide_esaldiak, inputs=[input_textbox])
104
+
105
+ if __name__ == "__main__":
106
+ demo.launch()
helsinki_models.py ADDED
@@ -0,0 +1,1438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Scraped from https://huggingface.co/Helsinki-NLP
2
+ # Scrape code:
3
+ # console.log(Array.from(document.getElementsByClassName("text-md truncate font-mono text-black dark:group-hover/repo:text-yellow-500 group-hover/repo:text-indigo-600 text-smd")).map(element => element.innerHTML));
4
+
5
+ helsinki_models = [
6
+ "Helsinki-NLP/opus-mt-tc-base-bat-zle",
7
+ "Helsinki-NLP/opus-mt-tc-base-uk-tr",
8
+ "Helsinki-NLP/opus-mt-tc-base-hu-uk",
9
+ "Helsinki-NLP/opus-mt-tc-base-uk-ces_slk",
10
+ "Helsinki-NLP/opus-mt-tc-base-zle-bat",
11
+ "Helsinki-NLP/opus-mt-tc-base-uk-fi",
12
+ "Helsinki-NLP/opus-mt-tc-base-uk-hu",
13
+ "Helsinki-NLP/opus-mt-tc-base-tr-uk",
14
+ "Helsinki-NLP/opus-mt-tc-base-uk-ro",
15
+ "Helsinki-NLP/opus-mt-tc-base-ro-uk",
16
+ "Helsinki-NLP/opus-mt-tc-base-fi-uk",
17
+ "Helsinki-NLP/opus-mt-tc-base-gmw-gmw",
18
+ "Helsinki-NLP/opus-tatoeba-de-ro",
19
+ "Helsinki-NLP/opus-mt-zlw-fiu",
20
+ "Helsinki-NLP/opus-tatoeba-en-ro",
21
+ "Helsinki-NLP/opus-mt-tc-base-en-sh",
22
+ "Helsinki-NLP/opus-tatoeba-fi-en",
23
+ "Helsinki-NLP/opus-mt-tc-big-zle-gmq",
24
+ "Helsinki-NLP/opus-mt-tc-big-gmq-he",
25
+ "Helsinki-NLP/opus-mt-tc-big-zle-pt",
26
+ "Helsinki-NLP/opus-mt-tc-big-zle-fi",
27
+ "Helsinki-NLP/opus-mt-tc-big-zle-it",
28
+ "Helsinki-NLP/opus-mt-tc-big-ar-gmq",
29
+ "Helsinki-NLP/opus-mt-tc-big-fi-zle",
30
+ "Helsinki-NLP/opus-mt-tc-big-gmq-zle",
31
+ "Helsinki-NLP/opus-mt-tc-big-zle-zls",
32
+ "Helsinki-NLP/opus-mt-tc-big-itc-eu",
33
+ "Helsinki-NLP/opus-mt-tc-big-itc-ar",
34
+ "Helsinki-NLP/opus-mt-tc-big-zle-itc",
35
+ "Helsinki-NLP/opus-mt-tc-big-gmq-tr",
36
+ "Helsinki-NLP/opus-mt-tc-big-gmq-zlw",
37
+ "Helsinki-NLP/opus-mt-tc-big-zls-itc",
38
+ "Helsinki-NLP/opus-mt-tc-big-gmq-ar",
39
+ "Helsinki-NLP/opus-mt-tc-big-zls-zle",
40
+ "Helsinki-NLP/opus-mt-tc-big-zle-es",
41
+ "Helsinki-NLP/opus-mt-tc-big-zle-fr",
42
+ "Helsinki-NLP/opus-mt-tc-big-he-itc",
43
+ "Helsinki-NLP/opus-mt-tc-big-he-gmq",
44
+ "Helsinki-NLP/opus-mt-tc-big-itc-he",
45
+ "Helsinki-NLP/opus-mt-tc-big-cel-en",
46
+ "Helsinki-NLP/opus-mt-tc-big-de-gmq",
47
+ "Helsinki-NLP/opus-mt-tc-big-zle-zle",
48
+ "Helsinki-NLP/opus-mt-tc-big-es-zle",
49
+ "Helsinki-NLP/opus-mt-tc-big-gmq-itc",
50
+ "Helsinki-NLP/opus-mt-tc-big-zle-zlw",
51
+ "Helsinki-NLP/opus-mt-tc-big-it-zle",
52
+ "Helsinki-NLP/opus-mt-tc-big-fr-zle",
53
+ "Helsinki-NLP/opus-mt-tc-big-pt-zle",
54
+ "Helsinki-NLP/opus-mt-tc-big-zlw-zle",
55
+ "Helsinki-NLP/opus-mt-tc-big-fi-zls",
56
+ "Helsinki-NLP/opus-mt-tc-big-de-zle",
57
+ "Helsinki-NLP/opus-mt-tc-big-gmq-gmq",
58
+ "Helsinki-NLP/opus-mt-tc-big-itc-tr",
59
+ "Helsinki-NLP/opus-mt-tc-big-de-es",
60
+ "Helsinki-NLP/opus-mt-tc-big-zlw-en",
61
+ "Helsinki-NLP/opus-mt-tc-big-fa-itc",
62
+ "Helsinki-NLP/opus-mt-tc-big-ar-itc",
63
+ "Helsinki-NLP/opus-mt-tc-big-eu-itc",
64
+ "Helsinki-NLP/opus-mt-tc-big-fa-gmq",
65
+ "Helsinki-NLP/opus-mt-tc-big-zls-de",
66
+ "Helsinki-NLP/opus-mt-tc-big-itc-itc",
67
+ "Helsinki-NLP/opus-mt-tc-big-lv-en",
68
+ "Helsinki-NLP/opus-mt-tc-big-en-et",
69
+ "Helsinki-NLP/opus-mt-tc-big-gmq-en",
70
+ "Helsinki-NLP/opus-mt-tc-big-en-ces_slk",
71
+ "Helsinki-NLP/opus-mt-tc-big-en-lv",
72
+ "Helsinki-NLP/opus-mt-tc-big-bg-en",
73
+ "Helsinki-NLP/opus-mt-tc-big-en-el",
74
+ "Helsinki-NLP/opus-mt-tc-big-en-bg",
75
+ "Helsinki-NLP/opus-mt-tc-big-en-ro",
76
+ "Helsinki-NLP/opus-mt-tc-big-hu-en",
77
+ "Helsinki-NLP/opus-mt-tc-big-zh-ja",
78
+ "Helsinki-NLP/opus-mt-tc-big-en-lt",
79
+ "Helsinki-NLP/opus-mt-tc-big-zle-de",
80
+ "Helsinki-NLP/opus-mt-tc-big-en-hu",
81
+ "Helsinki-NLP/opus-mt-tc-big-en-zle",
82
+ "Helsinki-NLP/opus-mt-tc-big-en-cat_oci_spa",
83
+ "Helsinki-NLP/opus-mt-tc-big-lt-en",
84
+ "Helsinki-NLP/opus-mt-tc-big-ko-en",
85
+ "Helsinki-NLP/opus-mt-tc-big-et-en",
86
+ "Helsinki-NLP/opus-mt-tc-big-en-gmq",
87
+ "Helsinki-NLP/opus-mt-tc-big-en-it",
88
+ "Helsinki-NLP/opus-mt-tc-big-sh-en",
89
+ "Helsinki-NLP/opus-mt-tc-big-zls-en",
90
+ "Helsinki-NLP/opus-mt-tc-big-en-ko",
91
+ "Helsinki-NLP/opus-mt-tc-big-zle-en",
92
+ "Helsinki-NLP/opus-mt-tc-big-en-es",
93
+ "Helsinki-NLP/opus-mt-tc-big-en-fi",
94
+ "Helsinki-NLP/opus-mt-tc-big-fr-en",
95
+ "Helsinki-NLP/opus-mt-tc-big-he-en",
96
+ "Helsinki-NLP/opus-mt-tc-big-en-fr",
97
+ "Helsinki-NLP/opus-mt-tc-big-en-ar",
98
+ "Helsinki-NLP/opus-mt-tc-big-en-pt",
99
+ "Helsinki-NLP/opus-mt-tc-big-gmw-gmw",
100
+ "Helsinki-NLP/opus-tatoeba-en-ja",
101
+ "Helsinki-NLP/opus-mt-tc-big-itc-bat",
102
+ "Helsinki-NLP/opus-mt-tc-big-tr-en",
103
+ "Helsinki-NLP/opus-mt-tc-big-it-en",
104
+ "Helsinki-NLP/opus-mt-tc-big-el-en",
105
+ "Helsinki-NLP/opus-mt-tc-big-ces_slk-en",
106
+ "Helsinki-NLP/opus-mt-tc-big-cat_oci_spa-en",
107
+ "Helsinki-NLP/opus-mt-tc-big-ar-en",
108
+ "Helsinki-NLP/opus-mt-tc-big-en-tr",
109
+ "Helsinki-NLP/opus-mt-tc-base-ces_slk-uk",
110
+ "Helsinki-NLP/opus-mt-tc-big-fi-en",
111
+ "Helsinki-NLP/opus-tatoeba-it-he",
112
+ "Helsinki-NLP/opus-tatoeba-he-it",
113
+ "Helsinki-NLP/opus-tatoeba-he-fr",
114
+ "Helsinki-NLP/opus-tatoeba-fr-it",
115
+ "Helsinki-NLP/opus-tatoeba-es-zh",
116
+ "Helsinki-NLP/opus-tatoeba-en-tr",
117
+ "Helsinki-NLP/opus-mt-zne-sv",
118
+ "Helsinki-NLP/opus-mt-zne-fr",
119
+ "Helsinki-NLP/opus-mt-zne-fi",
120
+ "Helsinki-NLP/opus-mt-zne-es",
121
+ "Helsinki-NLP/opus-mt-zlw-zlw",
122
+ "Helsinki-NLP/opus-mt-zlw-en",
123
+ "Helsinki-NLP/opus-mt-zls-zls",
124
+ "Helsinki-NLP/opus-mt-zls-en",
125
+ "Helsinki-NLP/opus-mt-zle-zle",
126
+ "Helsinki-NLP/opus-mt-zle-en",
127
+ "Helsinki-NLP/opus-mt-zh-vi",
128
+ "Helsinki-NLP/opus-mt-zh-uk",
129
+ "Helsinki-NLP/opus-mt-zh-sv",
130
+ "Helsinki-NLP/opus-mt-zh-nl",
131
+ "Helsinki-NLP/opus-mt-zh-ms",
132
+ "Helsinki-NLP/opus-mt-zh-it",
133
+ "Helsinki-NLP/opus-mt-zh-he",
134
+ "Helsinki-NLP/opus-mt-zh-fi",
135
+ "Helsinki-NLP/opus-mt-zh-en",
136
+ "Helsinki-NLP/opus-mt-zh-de",
137
+ "Helsinki-NLP/opus-mt-zh-bg",
138
+ "Helsinki-NLP/opus-mt-zai-es",
139
+ "Helsinki-NLP/opus-mt-yo-sv",
140
+ "Helsinki-NLP/opus-mt-yo-fr",
141
+ "Helsinki-NLP/opus-mt-yo-fi",
142
+ "Helsinki-NLP/opus-mt-yo-es",
143
+ "Helsinki-NLP/opus-mt-yo-en",
144
+ "Helsinki-NLP/opus-mt-yap-sv",
145
+ "Helsinki-NLP/opus-mt-yap-fr",
146
+ "Helsinki-NLP/opus-mt-yap-en",
147
+ "Helsinki-NLP/opus-mt-xh-sv",
148
+ "Helsinki-NLP/opus-mt-xh-fr",
149
+ "Helsinki-NLP/opus-mt-xh-es",
150
+ "Helsinki-NLP/opus-mt-xh-en",
151
+ "Helsinki-NLP/opus-mt-wls-sv",
152
+ "Helsinki-NLP/opus-mt-wls-fr",
153
+ "Helsinki-NLP/opus-mt-wls-en",
154
+ "Helsinki-NLP/opus-mt-war-sv",
155
+ "Helsinki-NLP/opus-mt-war-fr",
156
+ "Helsinki-NLP/opus-mt-war-fi",
157
+ "Helsinki-NLP/opus-mt-war-es",
158
+ "Helsinki-NLP/opus-mt-war-en",
159
+ "Helsinki-NLP/opus-mt-wal-en",
160
+ "Helsinki-NLP/opus-mt-wa-en",
161
+ "Helsinki-NLP/opus-mt-vsl-es",
162
+ "Helsinki-NLP/opus-mt-vi-ru",
163
+ "Helsinki-NLP/opus-mt-vi-it",
164
+ "Helsinki-NLP/opus-mt-vi-fr",
165
+ "Helsinki-NLP/opus-mt-vi-es",
166
+ "Helsinki-NLP/opus-mt-vi-eo",
167
+ "Helsinki-NLP/opus-mt-vi-en",
168
+ "Helsinki-NLP/opus-mt-vi-de",
169
+ "Helsinki-NLP/opus-mt-ve-es",
170
+ "Helsinki-NLP/opus-mt-ve-en",
171
+ "Helsinki-NLP/opus-mt-urj-urj",
172
+ "Helsinki-NLP/opus-mt-urj-en",
173
+ "Helsinki-NLP/opus-mt-ur-en",
174
+ "Helsinki-NLP/opus-mt-umb-en",
175
+ "Helsinki-NLP/opus-mt-uk-tr",
176
+ "Helsinki-NLP/opus-mt-uk-sv",
177
+ "Helsinki-NLP/opus-mt-uk-sl",
178
+ "Helsinki-NLP/opus-mt-uk-sh",
179
+ "Helsinki-NLP/opus-mt-uk-ru",
180
+ "Helsinki-NLP/opus-mt-uk-pt",
181
+ "Helsinki-NLP/opus-mt-uk-pl",
182
+ "Helsinki-NLP/opus-mt-uk-no",
183
+ "Helsinki-NLP/opus-mt-uk-nl",
184
+ "Helsinki-NLP/opus-mt-uk-it",
185
+ "Helsinki-NLP/opus-mt-uk-hu",
186
+ "Helsinki-NLP/opus-mt-uk-he",
187
+ "Helsinki-NLP/opus-mt-uk-fr",
188
+ "Helsinki-NLP/opus-mt-uk-fi",
189
+ "Helsinki-NLP/opus-mt-uk-es",
190
+ "Helsinki-NLP/opus-mt-uk-en",
191
+ "Helsinki-NLP/opus-mt-uk-de",
192
+ "Helsinki-NLP/opus-mt-uk-cs",
193
+ "Helsinki-NLP/opus-mt-uk-ca",
194
+ "Helsinki-NLP/opus-mt-uk-bg",
195
+ "Helsinki-NLP/opus-mt-tzo-es",
196
+ "Helsinki-NLP/opus-mt-ty-sv",
197
+ "Helsinki-NLP/opus-mt-ty-fr",
198
+ "Helsinki-NLP/opus-mt-ty-fi",
199
+ "Helsinki-NLP/opus-mt-ty-es",
200
+ "Helsinki-NLP/opus-mt-tw-sv",
201
+ "Helsinki-NLP/opus-mt-tw-fr",
202
+ "Helsinki-NLP/opus-mt-tw-fi",
203
+ "Helsinki-NLP/opus-mt-tw-es",
204
+ "Helsinki-NLP/opus-mt-tvl-sv",
205
+ "Helsinki-NLP/opus-mt-tvl-fr",
206
+ "Helsinki-NLP/opus-mt-tvl-fi",
207
+ "Helsinki-NLP/opus-mt-tvl-es",
208
+ "Helsinki-NLP/opus-mt-tvl-en",
209
+ "Helsinki-NLP/opus-mt-tum-sv",
210
+ "Helsinki-NLP/opus-mt-tum-fr",
211
+ "Helsinki-NLP/opus-mt-tum-es",
212
+ "Helsinki-NLP/opus-mt-tum-en",
213
+ "Helsinki-NLP/opus-mt-ts-sv",
214
+ "Helsinki-NLP/opus-mt-ts-fr",
215
+ "Helsinki-NLP/opus-mt-ts-fi",
216
+ "Helsinki-NLP/opus-mt-ts-es",
217
+ "Helsinki-NLP/opus-mt-ts-en",
218
+ "Helsinki-NLP/opus-mt-trk-en",
219
+ "Helsinki-NLP/opus-mt-tr-uk",
220
+ "Helsinki-NLP/opus-mt-tr-sv",
221
+ "Helsinki-NLP/opus-mt-tr-lt",
222
+ "Helsinki-NLP/opus-mt-tr-fr",
223
+ "Helsinki-NLP/opus-mt-tr-es",
224
+ "Helsinki-NLP/opus-mt-tr-eo",
225
+ "Helsinki-NLP/opus-mt-tr-en",
226
+ "Helsinki-NLP/opus-mt-tr-az",
227
+ "Helsinki-NLP/opus-mt-tr-ar",
228
+ "Helsinki-NLP/opus-mt-tpi-sv",
229
+ "Helsinki-NLP/opus-mt-tpi-en",
230
+ "Helsinki-NLP/opus-mt-toi-sv",
231
+ "Helsinki-NLP/opus-mt-toi-fr",
232
+ "Helsinki-NLP/opus-mt-toi-fi",
233
+ "Helsinki-NLP/opus-mt-toi-es",
234
+ "Helsinki-NLP/opus-mt-toi-en",
235
+ "Helsinki-NLP/opus-mt-to-sv",
236
+ "Helsinki-NLP/opus-mt-to-fr",
237
+ "Helsinki-NLP/opus-mt-to-es",
238
+ "Helsinki-NLP/opus-mt-to-en",
239
+ "Helsinki-NLP/opus-mt-tn-sv",
240
+ "Helsinki-NLP/opus-mt-tn-fr",
241
+ "Helsinki-NLP/opus-mt-tn-es",
242
+ "Helsinki-NLP/opus-mt-tn-en",
243
+ "Helsinki-NLP/opus-mt-tll-sv",
244
+ "Helsinki-NLP/opus-mt-tll-fr",
245
+ "Helsinki-NLP/opus-mt-tll-fi",
246
+ "Helsinki-NLP/opus-mt-tll-es",
247
+ "Helsinki-NLP/opus-mt-tll-en",
248
+ "Helsinki-NLP/opus-mt-tl-pt",
249
+ "Helsinki-NLP/opus-mt-tl-es",
250
+ "Helsinki-NLP/opus-mt-tl-en",
251
+ "Helsinki-NLP/opus-mt-tl-de",
252
+ "Helsinki-NLP/opus-mt-tiv-sv",
253
+ "Helsinki-NLP/opus-mt-tiv-fr",
254
+ "Helsinki-NLP/opus-mt-tiv-en",
255
+ "Helsinki-NLP/opus-mt-ti-en",
256
+ "Helsinki-NLP/opus-mt-th-fr",
257
+ "Helsinki-NLP/opus-mt-th-en",
258
+ "Helsinki-NLP/opus-mt-taw-en",
259
+ "Helsinki-NLP/opus-mt-swc-sv",
260
+ "Helsinki-NLP/opus-mt-swc-fr",
261
+ "Helsinki-NLP/opus-mt-swc-fi",
262
+ "Helsinki-NLP/opus-mt-swc-es",
263
+ "Helsinki-NLP/opus-mt-swc-en",
264
+ "Helsinki-NLP/opus-mt-sv-zne",
265
+ "Helsinki-NLP/opus-mt-sv-yo",
266
+ "Helsinki-NLP/opus-mt-sv-yap",
267
+ "Helsinki-NLP/opus-mt-sv-xh",
268
+ "Helsinki-NLP/opus-mt-sv-wls",
269
+ "Helsinki-NLP/opus-mt-sv-war",
270
+ "Helsinki-NLP/opus-mt-sv-ve",
271
+ "Helsinki-NLP/opus-mt-sv-umb",
272
+ "Helsinki-NLP/opus-mt-sv-uk",
273
+ "Helsinki-NLP/opus-mt-sv-ty",
274
+ "Helsinki-NLP/opus-mt-sv-tw",
275
+ "Helsinki-NLP/opus-mt-sv-tvl",
276
+ "Helsinki-NLP/opus-mt-sv-tum",
277
+ "Helsinki-NLP/opus-mt-sv-ts",
278
+ "Helsinki-NLP/opus-mt-sv-tpi",
279
+ "Helsinki-NLP/opus-mt-sv-toi",
280
+ "Helsinki-NLP/opus-mt-sv-to",
281
+ "Helsinki-NLP/opus-mt-sv-tn",
282
+ "Helsinki-NLP/opus-mt-sv-tll",
283
+ "Helsinki-NLP/opus-mt-sv-tiv",
284
+ "Helsinki-NLP/opus-mt-sv-th",
285
+ "Helsinki-NLP/opus-mt-sv-swc",
286
+ "Helsinki-NLP/opus-mt-sv-sv",
287
+ "Helsinki-NLP/opus-mt-sv-st",
288
+ "Helsinki-NLP/opus-mt-sv-srn",
289
+ "Helsinki-NLP/opus-mt-sv-sq",
290
+ "Helsinki-NLP/opus-mt-sv-sn",
291
+ "Helsinki-NLP/opus-mt-sv-sm",
292
+ "Helsinki-NLP/opus-mt-sv-sl",
293
+ "Helsinki-NLP/opus-mt-sv-sk",
294
+ "Helsinki-NLP/opus-mt-sv-sg",
295
+ "Helsinki-NLP/opus-mt-sv-rw",
296
+ "Helsinki-NLP/opus-mt-sv-run",
297
+ "Helsinki-NLP/opus-mt-sv-ru",
298
+ "Helsinki-NLP/opus-mt-sv-ro",
299
+ "Helsinki-NLP/opus-mt-sv-rnd",
300
+ "Helsinki-NLP/opus-mt-sv-pon",
301
+ "Helsinki-NLP/opus-mt-sv-pis",
302
+ "Helsinki-NLP/opus-mt-sv-pap",
303
+ "Helsinki-NLP/opus-mt-sv-pag",
304
+ "Helsinki-NLP/opus-mt-sv-ny",
305
+ "Helsinki-NLP/opus-mt-sv-nso",
306
+ "Helsinki-NLP/opus-mt-sv-no",
307
+ "Helsinki-NLP/opus-mt-sv-nl",
308
+ "Helsinki-NLP/opus-mt-sv-niu",
309
+ "Helsinki-NLP/opus-mt-sv-mt",
310
+ "Helsinki-NLP/opus-mt-sv-mos",
311
+ "Helsinki-NLP/opus-mt-sv-mh",
312
+ "Helsinki-NLP/opus-mt-sv-mfe",
313
+ "Helsinki-NLP/opus-mt-sv-lv",
314
+ "Helsinki-NLP/opus-mt-sv-lus",
315
+ "Helsinki-NLP/opus-mt-sv-lue",
316
+ "Helsinki-NLP/opus-mt-sv-lua",
317
+ "Helsinki-NLP/opus-mt-sv-lu",
318
+ "Helsinki-NLP/opus-mt-sv-ln",
319
+ "Helsinki-NLP/opus-mt-sv-lg",
320
+ "Helsinki-NLP/opus-mt-sv-kwy",
321
+ "Helsinki-NLP/opus-mt-sv-kqn",
322
+ "Helsinki-NLP/opus-mt-sv-kg",
323
+ "Helsinki-NLP/opus-mt-sv-iso",
324
+ "Helsinki-NLP/opus-mt-sv-is",
325
+ "Helsinki-NLP/opus-mt-sv-ilo",
326
+ "Helsinki-NLP/opus-mt-sv-ig",
327
+ "Helsinki-NLP/opus-mt-sv-id",
328
+ "Helsinki-NLP/opus-mt-sv-hu",
329
+ "Helsinki-NLP/opus-mt-sv-ht",
330
+ "Helsinki-NLP/opus-mt-sv-hr",
331
+ "Helsinki-NLP/opus-mt-sv-ho",
332
+ "Helsinki-NLP/opus-mt-sv-hil",
333
+ "Helsinki-NLP/opus-mt-sv-he",
334
+ "Helsinki-NLP/opus-mt-sv-ha",
335
+ "Helsinki-NLP/opus-mt-sv-guw",
336
+ "Helsinki-NLP/opus-mt-sv-gil",
337
+ "Helsinki-NLP/opus-mt-sv-gaa",
338
+ "Helsinki-NLP/opus-mt-sv-fr",
339
+ "Helsinki-NLP/opus-mt-sv-fj",
340
+ "Helsinki-NLP/opus-mt-sv-fi",
341
+ "Helsinki-NLP/opus-mt-sv-et",
342
+ "Helsinki-NLP/opus-mt-sv-es",
343
+ "Helsinki-NLP/opus-mt-sv-eo",
344
+ "Helsinki-NLP/opus-mt-sv-en",
345
+ "Helsinki-NLP/opus-mt-sv-el",
346
+ "Helsinki-NLP/opus-mt-sv-efi",
347
+ "Helsinki-NLP/opus-mt-sv-ee",
348
+ "Helsinki-NLP/opus-mt-sv-cs",
349
+ "Helsinki-NLP/opus-mt-sv-crs",
350
+ "Helsinki-NLP/opus-mt-sv-chk",
351
+ "Helsinki-NLP/opus-mt-sv-ceb",
352
+ "Helsinki-NLP/opus-mt-sv-bzs",
353
+ "Helsinki-NLP/opus-mt-sv-bi",
354
+ "Helsinki-NLP/opus-mt-sv-bg",
355
+ "Helsinki-NLP/opus-mt-sv-bem",
356
+ "Helsinki-NLP/opus-mt-sv-bcl",
357
+ "Helsinki-NLP/opus-mt-sv-ase",
358
+ "Helsinki-NLP/opus-mt-sv-ZH",
359
+ "Helsinki-NLP/opus-mt-sv-NORWAY",
360
+ "Helsinki-NLP/opus-mt-st-sv",
361
+ "Helsinki-NLP/opus-mt-st-fr",
362
+ "Helsinki-NLP/opus-mt-st-fi",
363
+ "Helsinki-NLP/opus-mt-st-es",
364
+ "Helsinki-NLP/opus-mt-st-en",
365
+ "Helsinki-NLP/opus-mt-ssp-es",
366
+ "Helsinki-NLP/opus-mt-ss-en",
367
+ "Helsinki-NLP/opus-mt-srn-sv",
368
+ "Helsinki-NLP/opus-mt-srn-fr",
369
+ "Helsinki-NLP/opus-mt-srn-es",
370
+ "Helsinki-NLP/opus-mt-srn-en",
371
+ "Helsinki-NLP/opus-mt-sq-sv",
372
+ "Helsinki-NLP/opus-mt-sq-es",
373
+ "Helsinki-NLP/opus-mt-sq-en",
374
+ "Helsinki-NLP/opus-mt-sn-sv",
375
+ "Helsinki-NLP/opus-mt-sn-fr",
376
+ "Helsinki-NLP/opus-mt-sn-es",
377
+ "Helsinki-NLP/opus-mt-sn-en",
378
+ "Helsinki-NLP/opus-mt-sm-fr",
379
+ "Helsinki-NLP/opus-mt-sm-es",
380
+ "Helsinki-NLP/opus-mt-sm-en",
381
+ "Helsinki-NLP/opus-mt-sla-sla",
382
+ "Helsinki-NLP/opus-mt-sla-en",
383
+ "Helsinki-NLP/opus-mt-sl-uk",
384
+ "Helsinki-NLP/opus-mt-sl-sv",
385
+ "Helsinki-NLP/opus-mt-sl-ru",
386
+ "Helsinki-NLP/opus-mt-sl-fr",
387
+ "Helsinki-NLP/opus-mt-sl-fi",
388
+ "Helsinki-NLP/opus-mt-sl-es",
389
+ "Helsinki-NLP/opus-mt-sk-sv",
390
+ "Helsinki-NLP/opus-mt-sk-fr",
391
+ "Helsinki-NLP/opus-mt-sk-fi",
392
+ "Helsinki-NLP/opus-mt-sk-es",
393
+ "Helsinki-NLP/opus-mt-sk-en",
394
+ "Helsinki-NLP/opus-mt-sh-uk",
395
+ "Helsinki-NLP/opus-mt-sh-eo",
396
+ "Helsinki-NLP/opus-mt-sg-sv",
397
+ "Helsinki-NLP/opus-mt-sg-fr",
398
+ "Helsinki-NLP/opus-mt-sg-fi",
399
+ "Helsinki-NLP/opus-mt-sg-es",
400
+ "Helsinki-NLP/opus-mt-sg-en",
401
+ "Helsinki-NLP/opus-mt-sem-sem",
402
+ "Helsinki-NLP/opus-mt-sem-en",
403
+ "Helsinki-NLP/opus-mt-sal-en",
404
+ "Helsinki-NLP/opus-mt-rw-sv",
405
+ "Helsinki-NLP/opus-mt-rw-fr",
406
+ "Helsinki-NLP/opus-mt-rw-es",
407
+ "Helsinki-NLP/opus-mt-rw-en",
408
+ "Helsinki-NLP/opus-mt-run-sv",
409
+ "Helsinki-NLP/opus-mt-run-es",
410
+ "Helsinki-NLP/opus-mt-run-en",
411
+ "Helsinki-NLP/opus-mt-ru-vi",
412
+ "Helsinki-NLP/opus-mt-ru-uk",
413
+ "Helsinki-NLP/opus-mt-ru-sv",
414
+ "Helsinki-NLP/opus-mt-ru-sl",
415
+ "Helsinki-NLP/opus-mt-ru-no",
416
+ "Helsinki-NLP/opus-mt-ru-lv",
417
+ "Helsinki-NLP/opus-mt-ru-lt",
418
+ "Helsinki-NLP/opus-mt-ru-hy",
419
+ "Helsinki-NLP/opus-mt-ru-he",
420
+ "Helsinki-NLP/opus-mt-ru-fr",
421
+ "Helsinki-NLP/opus-mt-ru-fi",
422
+ "Helsinki-NLP/opus-mt-ru-eu",
423
+ "Helsinki-NLP/opus-mt-ru-et",
424
+ "Helsinki-NLP/opus-mt-ru-es",
425
+ "Helsinki-NLP/opus-mt-ru-eo",
426
+ "Helsinki-NLP/opus-mt-ru-en",
427
+ "Helsinki-NLP/opus-mt-ru-da",
428
+ "Helsinki-NLP/opus-mt-ru-bg",
429
+ "Helsinki-NLP/opus-mt-ru-ar",
430
+ "Helsinki-NLP/opus-mt-roa-en",
431
+ "Helsinki-NLP/opus-mt-ro-sv",
432
+ "Helsinki-NLP/opus-mt-ro-fr",
433
+ "Helsinki-NLP/opus-mt-ro-fi",
434
+ "Helsinki-NLP/opus-mt-ro-eo",
435
+ "Helsinki-NLP/opus-mt-rnd-sv",
436
+ "Helsinki-NLP/opus-mt-rnd-fr",
437
+ "Helsinki-NLP/opus-mt-rnd-en",
438
+ "Helsinki-NLP/opus-mt-rn-ru",
439
+ "Helsinki-NLP/opus-mt-rn-fr",
440
+ "Helsinki-NLP/opus-mt-rn-es",
441
+ "Helsinki-NLP/opus-mt-rn-en",
442
+ "Helsinki-NLP/opus-mt-rn-de",
443
+ "Helsinki-NLP/opus-mt-pt-uk",
444
+ "Helsinki-NLP/opus-mt-pt-tl",
445
+ "Helsinki-NLP/opus-mt-pt-gl",
446
+ "Helsinki-NLP/opus-mt-pt-eo",
447
+ "Helsinki-NLP/opus-mt-pt-ca",
448
+ "Helsinki-NLP/opus-mt-prl-es",
449
+ "Helsinki-NLP/opus-mt-pqe-en",
450
+ "Helsinki-NLP/opus-mt-pon-sv",
451
+ "Helsinki-NLP/opus-mt-pon-fr",
452
+ "Helsinki-NLP/opus-mt-pon-fi",
453
+ "Helsinki-NLP/opus-mt-pon-es",
454
+ "Helsinki-NLP/opus-mt-pon-en",
455
+ "Helsinki-NLP/opus-mt-pl-uk",
456
+ "Helsinki-NLP/opus-mt-pl-sv",
457
+ "Helsinki-NLP/opus-mt-pl-no",
458
+ "Helsinki-NLP/opus-mt-pl-lt",
459
+ "Helsinki-NLP/opus-mt-pl-fr",
460
+ "Helsinki-NLP/opus-mt-pl-es",
461
+ "Helsinki-NLP/opus-mt-pl-eo",
462
+ "Helsinki-NLP/opus-mt-pl-en",
463
+ "Helsinki-NLP/opus-mt-pl-de",
464
+ "Helsinki-NLP/opus-mt-pl-ar",
465
+ "Helsinki-NLP/opus-mt-pis-sv",
466
+ "Helsinki-NLP/opus-mt-pis-fr",
467
+ "Helsinki-NLP/opus-mt-pis-fi",
468
+ "Helsinki-NLP/opus-mt-pis-es",
469
+ "Helsinki-NLP/opus-mt-pis-en",
470
+ "Helsinki-NLP/opus-mt-phi-en",
471
+ "Helsinki-NLP/opus-mt-pap-fr",
472
+ "Helsinki-NLP/opus-mt-pap-fi",
473
+ "Helsinki-NLP/opus-mt-pap-es",
474
+ "Helsinki-NLP/opus-mt-pap-en",
475
+ "Helsinki-NLP/opus-mt-pap-de",
476
+ "Helsinki-NLP/opus-mt-pag-sv",
477
+ "Helsinki-NLP/opus-mt-pag-fi",
478
+ "Helsinki-NLP/opus-mt-pag-es",
479
+ "Helsinki-NLP/opus-mt-pag-en",
480
+ "Helsinki-NLP/opus-mt-pag-de",
481
+ "Helsinki-NLP/opus-mt-pa-en",
482
+ "Helsinki-NLP/opus-mt-om-en",
483
+ "Helsinki-NLP/opus-mt-nyk-en",
484
+ "Helsinki-NLP/opus-mt-ny-es",
485
+ "Helsinki-NLP/opus-mt-ny-en",
486
+ "Helsinki-NLP/opus-mt-ny-de",
487
+ "Helsinki-NLP/opus-mt-nso-sv",
488
+ "Helsinki-NLP/opus-mt-nso-fr",
489
+ "Helsinki-NLP/opus-mt-nso-fi",
490
+ "Helsinki-NLP/opus-mt-nso-es",
491
+ "Helsinki-NLP/opus-mt-nso-en",
492
+ "Helsinki-NLP/opus-mt-nso-de",
493
+ "Helsinki-NLP/opus-mt-no-uk",
494
+ "Helsinki-NLP/opus-mt-no-sv",
495
+ "Helsinki-NLP/opus-mt-no-ru",
496
+ "Helsinki-NLP/opus-mt-no-pl",
497
+ "Helsinki-NLP/opus-mt-no-no",
498
+ "Helsinki-NLP/opus-mt-no-nl",
499
+ "Helsinki-NLP/opus-mt-no-fr",
500
+ "Helsinki-NLP/opus-mt-no-fi",
501
+ "Helsinki-NLP/opus-mt-no-es",
502
+ "Helsinki-NLP/opus-mt-no-de",
503
+ "Helsinki-NLP/opus-mt-no-da",
504
+ "Helsinki-NLP/opus-mt-nl-uk",
505
+ "Helsinki-NLP/opus-mt-nl-sv",
506
+ "Helsinki-NLP/opus-mt-nl-no",
507
+ "Helsinki-NLP/opus-mt-nl-fr",
508
+ "Helsinki-NLP/opus-mt-nl-fi",
509
+ "Helsinki-NLP/opus-mt-nl-es",
510
+ "Helsinki-NLP/opus-mt-nl-eo",
511
+ "Helsinki-NLP/opus-mt-nl-en",
512
+ "Helsinki-NLP/opus-mt-nl-ca",
513
+ "Helsinki-NLP/opus-mt-niu-sv",
514
+ "Helsinki-NLP/opus-mt-niu-fr",
515
+ "Helsinki-NLP/opus-mt-niu-fi",
516
+ "Helsinki-NLP/opus-mt-niu-es",
517
+ "Helsinki-NLP/opus-mt-niu-en",
518
+ "Helsinki-NLP/opus-mt-niu-de",
519
+ "Helsinki-NLP/opus-mt-nic-en",
520
+ "Helsinki-NLP/opus-mt-ng-en",
521
+ "Helsinki-NLP/opus-mt-mul-en",
522
+ "Helsinki-NLP/opus-mt-mt-sv",
523
+ "Helsinki-NLP/opus-mt-mt-fr",
524
+ "Helsinki-NLP/opus-mt-mt-fi",
525
+ "Helsinki-NLP/opus-mt-mt-es",
526
+ "Helsinki-NLP/opus-mt-mt-en",
527
+ "Helsinki-NLP/opus-mt-ms-ms",
528
+ "Helsinki-NLP/opus-mt-ms-it",
529
+ "Helsinki-NLP/opus-mt-ms-fr",
530
+ "Helsinki-NLP/opus-mt-ms-de",
531
+ "Helsinki-NLP/opus-mt-mr-en",
532
+ "Helsinki-NLP/opus-mt-mos-en",
533
+ "Helsinki-NLP/opus-mt-ml-en",
534
+ "Helsinki-NLP/opus-mt-mkh-en",
535
+ "Helsinki-NLP/opus-mt-mk-fr",
536
+ "Helsinki-NLP/opus-mt-mk-fi",
537
+ "Helsinki-NLP/opus-mt-mk-es",
538
+ "Helsinki-NLP/opus-mt-mk-en",
539
+ "Helsinki-NLP/opus-mt-mh-fi",
540
+ "Helsinki-NLP/opus-mt-mh-es",
541
+ "Helsinki-NLP/opus-mt-mh-en",
542
+ "Helsinki-NLP/opus-mt-mg-es",
543
+ "Helsinki-NLP/opus-mt-mg-en",
544
+ "Helsinki-NLP/opus-mt-mfs-es",
545
+ "Helsinki-NLP/opus-mt-mfe-es",
546
+ "Helsinki-NLP/opus-mt-mfe-en",
547
+ "Helsinki-NLP/opus-mt-lv-sv",
548
+ "Helsinki-NLP/opus-mt-lv-ru",
549
+ "Helsinki-NLP/opus-mt-lv-fr",
550
+ "Helsinki-NLP/opus-mt-lv-fi",
551
+ "Helsinki-NLP/opus-mt-lv-es",
552
+ "Helsinki-NLP/opus-mt-lv-en",
553
+ "Helsinki-NLP/opus-mt-lus-sv",
554
+ "Helsinki-NLP/opus-mt-lus-fr",
555
+ "Helsinki-NLP/opus-mt-lus-fi",
556
+ "Helsinki-NLP/opus-mt-lus-es",
557
+ "Helsinki-NLP/opus-mt-lus-en",
558
+ "Helsinki-NLP/opus-mt-luo-en",
559
+ "Helsinki-NLP/opus-mt-lun-en",
560
+ "Helsinki-NLP/opus-mt-lue-sv",
561
+ "Helsinki-NLP/opus-mt-lue-fr",
562
+ "Helsinki-NLP/opus-mt-lue-fi",
563
+ "Helsinki-NLP/opus-mt-lue-es",
564
+ "Helsinki-NLP/opus-mt-lue-en",
565
+ "Helsinki-NLP/opus-mt-lua-sv",
566
+ "Helsinki-NLP/opus-mt-lua-fr",
567
+ "Helsinki-NLP/opus-mt-lua-fi",
568
+ "Helsinki-NLP/opus-mt-lua-es",
569
+ "Helsinki-NLP/opus-mt-lua-en",
570
+ "Helsinki-NLP/opus-mt-lu-sv",
571
+ "Helsinki-NLP/opus-mt-lu-fr",
572
+ "Helsinki-NLP/opus-mt-lu-fi",
573
+ "Helsinki-NLP/opus-mt-lu-es",
574
+ "Helsinki-NLP/opus-mt-lu-en",
575
+ "Helsinki-NLP/opus-mt-lt-tr",
576
+ "Helsinki-NLP/opus-mt-lt-sv",
577
+ "Helsinki-NLP/opus-mt-lt-ru",
578
+ "Helsinki-NLP/opus-mt-lt-pl",
579
+ "Helsinki-NLP/opus-mt-lt-it",
580
+ "Helsinki-NLP/opus-mt-lt-fr",
581
+ "Helsinki-NLP/opus-mt-lt-es",
582
+ "Helsinki-NLP/opus-mt-lt-eo",
583
+ "Helsinki-NLP/opus-mt-lt-de",
584
+ "Helsinki-NLP/opus-mt-loz-sv",
585
+ "Helsinki-NLP/opus-mt-loz-fr",
586
+ "Helsinki-NLP/opus-mt-loz-fi",
587
+ "Helsinki-NLP/opus-mt-loz-es",
588
+ "Helsinki-NLP/opus-mt-loz-en",
589
+ "Helsinki-NLP/opus-mt-loz-de",
590
+ "Helsinki-NLP/opus-mt-ln-fr",
591
+ "Helsinki-NLP/opus-mt-ln-es",
592
+ "Helsinki-NLP/opus-mt-ln-en",
593
+ "Helsinki-NLP/opus-mt-ln-de",
594
+ "Helsinki-NLP/opus-mt-lg-sv",
595
+ "Helsinki-NLP/opus-mt-lg-fr",
596
+ "Helsinki-NLP/opus-mt-lg-fi",
597
+ "Helsinki-NLP/opus-mt-lg-es",
598
+ "Helsinki-NLP/opus-mt-lg-en",
599
+ "Helsinki-NLP/opus-mt-kwy-sv",
600
+ "Helsinki-NLP/opus-mt-kwy-fr",
601
+ "Helsinki-NLP/opus-mt-kwy-en",
602
+ "Helsinki-NLP/opus-mt-kwn-en",
603
+ "Helsinki-NLP/opus-mt-kqn-sv",
604
+ "Helsinki-NLP/opus-mt-kqn-fr",
605
+ "Helsinki-NLP/opus-mt-kqn-es",
606
+ "Helsinki-NLP/opus-mt-kqn-en",
607
+ "Helsinki-NLP/opus-mt-ko-sv",
608
+ "Helsinki-NLP/opus-mt-ko-ru",
609
+ "Helsinki-NLP/opus-mt-ko-hu",
610
+ "Helsinki-NLP/opus-mt-ko-fr",
611
+ "Helsinki-NLP/opus-mt-ko-fi",
612
+ "Helsinki-NLP/opus-mt-ko-es",
613
+ "Helsinki-NLP/opus-mt-ko-en",
614
+ "Helsinki-NLP/opus-mt-ko-de",
615
+ "Helsinki-NLP/opus-mt-kl-en",
616
+ "Helsinki-NLP/opus-mt-kj-en",
617
+ "Helsinki-NLP/opus-mt-kg-sv",
618
+ "Helsinki-NLP/opus-mt-kg-fr",
619
+ "Helsinki-NLP/opus-mt-kg-es",
620
+ "Helsinki-NLP/opus-mt-kg-en",
621
+ "Helsinki-NLP/opus-mt-kab-en",
622
+ "Helsinki-NLP/opus-mt-ka-ru",
623
+ "Helsinki-NLP/opus-mt-ka-en",
624
+ "Helsinki-NLP/opus-mt-jap-en",
625
+ "Helsinki-NLP/opus-mt-ja-vi",
626
+ "Helsinki-NLP/opus-mt-ja-tr",
627
+ "Helsinki-NLP/opus-mt-ja-sv",
628
+ "Helsinki-NLP/opus-mt-ja-sh",
629
+ "Helsinki-NLP/opus-mt-ja-ru",
630
+ "Helsinki-NLP/opus-mt-ja-pt",
631
+ "Helsinki-NLP/opus-mt-ja-pl",
632
+ "Helsinki-NLP/opus-mt-ja-nl",
633
+ "Helsinki-NLP/opus-mt-ja-ms",
634
+ "Helsinki-NLP/opus-mt-ja-it",
635
+ "Helsinki-NLP/opus-mt-ja-hu",
636
+ "Helsinki-NLP/opus-mt-ja-he",
637
+ "Helsinki-NLP/opus-mt-ja-fr",
638
+ "Helsinki-NLP/opus-mt-ja-fi",
639
+ "Helsinki-NLP/opus-mt-ja-es",
640
+ "Helsinki-NLP/opus-mt-ja-en",
641
+ "Helsinki-NLP/opus-mt-ja-de",
642
+ "Helsinki-NLP/opus-mt-ja-da",
643
+ "Helsinki-NLP/opus-mt-ja-bg",
644
+ "Helsinki-NLP/opus-mt-ja-ar",
645
+ "Helsinki-NLP/opus-mt-itc-itc",
646
+ "Helsinki-NLP/opus-mt-itc-en",
647
+ "Helsinki-NLP/opus-mt-it-vi",
648
+ "Helsinki-NLP/opus-mt-it-uk",
649
+ "Helsinki-NLP/opus-mt-it-sv",
650
+ "Helsinki-NLP/opus-mt-it-ms",
651
+ "Helsinki-NLP/opus-mt-it-lt",
652
+ "Helsinki-NLP/opus-mt-it-is",
653
+ "Helsinki-NLP/opus-mt-it-fr",
654
+ "Helsinki-NLP/opus-mt-it-es",
655
+ "Helsinki-NLP/opus-mt-it-eo",
656
+ "Helsinki-NLP/opus-mt-it-en",
657
+ "Helsinki-NLP/opus-mt-it-de",
658
+ "Helsinki-NLP/opus-mt-it-ca",
659
+ "Helsinki-NLP/opus-mt-it-bg",
660
+ "Helsinki-NLP/opus-mt-it-ar",
661
+ "Helsinki-NLP/opus-mt-iso-sv",
662
+ "Helsinki-NLP/opus-mt-iso-fr",
663
+ "Helsinki-NLP/opus-mt-iso-fi",
664
+ "Helsinki-NLP/opus-mt-iso-es",
665
+ "Helsinki-NLP/opus-mt-iso-en",
666
+ "Helsinki-NLP/opus-mt-is-sv",
667
+ "Helsinki-NLP/opus-mt-is-it",
668
+ "Helsinki-NLP/opus-mt-is-fr",
669
+ "Helsinki-NLP/opus-mt-is-fi",
670
+ "Helsinki-NLP/opus-mt-is-es",
671
+ "Helsinki-NLP/opus-mt-is-eo",
672
+ "Helsinki-NLP/opus-mt-is-en",
673
+ "Helsinki-NLP/opus-mt-is-de",
674
+ "Helsinki-NLP/opus-mt-ine-ine",
675
+ "Helsinki-NLP/opus-mt-ine-en",
676
+ "Helsinki-NLP/opus-mt-inc-inc",
677
+ "Helsinki-NLP/opus-mt-inc-en",
678
+ "Helsinki-NLP/opus-mt-ilo-sv",
679
+ "Helsinki-NLP/opus-mt-ilo-fi",
680
+ "Helsinki-NLP/opus-mt-ilo-es",
681
+ "Helsinki-NLP/opus-mt-ilo-en",
682
+ "Helsinki-NLP/opus-mt-ilo-de",
683
+ "Helsinki-NLP/opus-mt-iir-iir",
684
+ "Helsinki-NLP/opus-mt-iir-en",
685
+ "Helsinki-NLP/opus-mt-ig-sv",
686
+ "Helsinki-NLP/opus-mt-ig-fr",
687
+ "Helsinki-NLP/opus-mt-ig-fi",
688
+ "Helsinki-NLP/opus-mt-ig-es",
689
+ "Helsinki-NLP/opus-mt-ig-en",
690
+ "Helsinki-NLP/opus-mt-ig-de",
691
+ "Helsinki-NLP/opus-mt-id-sv",
692
+ "Helsinki-NLP/opus-mt-id-fr",
693
+ "Helsinki-NLP/opus-mt-id-fi",
694
+ "Helsinki-NLP/opus-mt-id-es",
695
+ "Helsinki-NLP/opus-mt-id-en",
696
+ "Helsinki-NLP/opus-mt-hy-ru",
697
+ "Helsinki-NLP/opus-mt-hy-en",
698
+ "Helsinki-NLP/opus-mt-hu-uk",
699
+ "Helsinki-NLP/opus-mt-hu-sv",
700
+ "Helsinki-NLP/opus-mt-hu-fr",
701
+ "Helsinki-NLP/opus-mt-hu-fi",
702
+ "Helsinki-NLP/opus-mt-hu-eo",
703
+ "Helsinki-NLP/opus-mt-hu-en",
704
+ "Helsinki-NLP/opus-mt-hu-de",
705
+ "Helsinki-NLP/opus-mt-ht-sv",
706
+ "Helsinki-NLP/opus-mt-ht-fr",
707
+ "Helsinki-NLP/opus-mt-ht-fi",
708
+ "Helsinki-NLP/opus-mt-ht-es",
709
+ "Helsinki-NLP/opus-mt-ht-en",
710
+ "Helsinki-NLP/opus-mt-hr-sv",
711
+ "Helsinki-NLP/opus-mt-hr-fr",
712
+ "Helsinki-NLP/opus-mt-hr-fi",
713
+ "Helsinki-NLP/opus-mt-hr-es",
714
+ "Helsinki-NLP/opus-mt-ho-en",
715
+ "Helsinki-NLP/opus-mt-hil-fi",
716
+ "Helsinki-NLP/opus-mt-hil-en",
717
+ "Helsinki-NLP/opus-mt-hil-de",
718
+ "Helsinki-NLP/opus-mt-hi-ur",
719
+ "Helsinki-NLP/opus-mt-hi-en",
720
+ "Helsinki-NLP/opus-mt-he-uk",
721
+ "Helsinki-NLP/opus-mt-he-sv",
722
+ "Helsinki-NLP/opus-mt-he-ru",
723
+ "Helsinki-NLP/opus-mt-he-it",
724
+ "Helsinki-NLP/opus-mt-he-fi",
725
+ "Helsinki-NLP/opus-mt-he-es",
726
+ "Helsinki-NLP/opus-mt-he-eo",
727
+ "Helsinki-NLP/opus-mt-he-de",
728
+ "Helsinki-NLP/opus-mt-he-ar",
729
+ "Helsinki-NLP/opus-mt-ha-sv",
730
+ "Helsinki-NLP/opus-mt-ha-fr",
731
+ "Helsinki-NLP/opus-mt-ha-fi",
732
+ "Helsinki-NLP/opus-mt-ha-es",
733
+ "Helsinki-NLP/opus-mt-ha-en",
734
+ "Helsinki-NLP/opus-mt-gv-en",
735
+ "Helsinki-NLP/opus-mt-guw-sv",
736
+ "Helsinki-NLP/opus-mt-guw-fr",
737
+ "Helsinki-NLP/opus-mt-guw-fi",
738
+ "Helsinki-NLP/opus-mt-guw-es",
739
+ "Helsinki-NLP/opus-mt-guw-en",
740
+ "Helsinki-NLP/opus-mt-guw-de",
741
+ "Helsinki-NLP/opus-mt-grk-en",
742
+ "Helsinki-NLP/opus-mt-gmw-gmw",
743
+ "Helsinki-NLP/opus-mt-gmw-en",
744
+ "Helsinki-NLP/opus-mt-gmq-gmq",
745
+ "Helsinki-NLP/opus-mt-gmq-en",
746
+ "Helsinki-NLP/opus-mt-gl-pt",
747
+ "Helsinki-NLP/opus-mt-gl-es",
748
+ "Helsinki-NLP/opus-mt-gl-en",
749
+ "Helsinki-NLP/opus-mt-gil-sv",
750
+ "Helsinki-NLP/opus-mt-gil-fr",
751
+ "Helsinki-NLP/opus-mt-gil-fi",
752
+ "Helsinki-NLP/opus-mt-gil-es",
753
+ "Helsinki-NLP/opus-mt-gil-en",
754
+ "Helsinki-NLP/opus-mt-gem-gem",
755
+ "Helsinki-NLP/opus-mt-gem-en",
756
+ "Helsinki-NLP/opus-mt-gaa-sv",
757
+ "Helsinki-NLP/opus-mt-gaa-fr",
758
+ "Helsinki-NLP/opus-mt-gaa-fi",
759
+ "Helsinki-NLP/opus-mt-gaa-es",
760
+ "Helsinki-NLP/opus-mt-gaa-en",
761
+ "Helsinki-NLP/opus-mt-gaa-de",
762
+ "Helsinki-NLP/opus-mt-ga-en",
763
+ "Helsinki-NLP/opus-mt-fse-fi",
764
+ "Helsinki-NLP/opus-mt-fr-zne",
765
+ "Helsinki-NLP/opus-mt-fr-yo",
766
+ "Helsinki-NLP/opus-mt-fr-yap",
767
+ "Helsinki-NLP/opus-mt-fr-xh",
768
+ "Helsinki-NLP/opus-mt-fr-wls",
769
+ "Helsinki-NLP/opus-mt-fr-war",
770
+ "Helsinki-NLP/opus-mt-fr-vi",
771
+ "Helsinki-NLP/opus-mt-fr-ve",
772
+ "Helsinki-NLP/opus-mt-fr-uk",
773
+ "Helsinki-NLP/opus-mt-fr-ty",
774
+ "Helsinki-NLP/opus-mt-fr-tw",
775
+ "Helsinki-NLP/opus-mt-fr-tvl",
776
+ "Helsinki-NLP/opus-mt-fr-tum",
777
+ "Helsinki-NLP/opus-mt-fr-ts",
778
+ "Helsinki-NLP/opus-mt-fr-tpi",
779
+ "Helsinki-NLP/opus-mt-fr-to",
780
+ "Helsinki-NLP/opus-mt-fr-tn",
781
+ "Helsinki-NLP/opus-mt-fr-tll",
782
+ "Helsinki-NLP/opus-mt-fr-tl",
783
+ "Helsinki-NLP/opus-mt-fr-tiv",
784
+ "Helsinki-NLP/opus-mt-fr-swc",
785
+ "Helsinki-NLP/opus-mt-fr-sv",
786
+ "Helsinki-NLP/opus-mt-fr-st",
787
+ "Helsinki-NLP/opus-mt-fr-srn",
788
+ "Helsinki-NLP/opus-mt-fr-sn",
789
+ "Helsinki-NLP/opus-mt-fr-sm",
790
+ "Helsinki-NLP/opus-mt-fr-sl",
791
+ "Helsinki-NLP/opus-mt-fr-sk",
792
+ "Helsinki-NLP/opus-mt-fr-sg",
793
+ "Helsinki-NLP/opus-mt-fr-rw",
794
+ "Helsinki-NLP/opus-mt-fr-run",
795
+ "Helsinki-NLP/opus-mt-fr-ru",
796
+ "Helsinki-NLP/opus-mt-fr-ro",
797
+ "Helsinki-NLP/opus-mt-fr-rnd",
798
+ "Helsinki-NLP/opus-mt-fr-pon",
799
+ "Helsinki-NLP/opus-mt-fr-pl",
800
+ "Helsinki-NLP/opus-mt-fr-pis",
801
+ "Helsinki-NLP/opus-mt-fr-pap",
802
+ "Helsinki-NLP/opus-mt-fr-pag",
803
+ "Helsinki-NLP/opus-mt-fr-ny",
804
+ "Helsinki-NLP/opus-mt-fr-nso",
805
+ "Helsinki-NLP/opus-mt-fr-no",
806
+ "Helsinki-NLP/opus-mt-fr-niu",
807
+ "Helsinki-NLP/opus-mt-fr-mt",
808
+ "Helsinki-NLP/opus-mt-fr-ms",
809
+ "Helsinki-NLP/opus-mt-fr-mos",
810
+ "Helsinki-NLP/opus-mt-fr-mh",
811
+ "Helsinki-NLP/opus-mt-fr-mfe",
812
+ "Helsinki-NLP/opus-mt-fr-lus",
813
+ "Helsinki-NLP/opus-mt-fr-lue",
814
+ "Helsinki-NLP/opus-mt-fr-lua",
815
+ "Helsinki-NLP/opus-mt-fr-lu",
816
+ "Helsinki-NLP/opus-mt-fr-loz",
817
+ "Helsinki-NLP/opus-mt-fr-ln",
818
+ "Helsinki-NLP/opus-mt-fr-lg",
819
+ "Helsinki-NLP/opus-mt-fr-kwy",
820
+ "Helsinki-NLP/opus-mt-fr-kqn",
821
+ "Helsinki-NLP/opus-mt-fr-kg",
822
+ "Helsinki-NLP/opus-mt-fr-iso",
823
+ "Helsinki-NLP/opus-mt-fr-ilo",
824
+ "Helsinki-NLP/opus-mt-fr-ig",
825
+ "Helsinki-NLP/opus-mt-fr-id",
826
+ "Helsinki-NLP/opus-mt-fr-hu",
827
+ "Helsinki-NLP/opus-mt-fr-ht",
828
+ "Helsinki-NLP/opus-mt-fr-hr",
829
+ "Helsinki-NLP/opus-mt-fr-ho",
830
+ "Helsinki-NLP/opus-mt-fr-hil",
831
+ "Helsinki-NLP/opus-mt-fr-he",
832
+ "Helsinki-NLP/opus-mt-fr-ha",
833
+ "Helsinki-NLP/opus-mt-fr-guw",
834
+ "Helsinki-NLP/opus-mt-fr-gil",
835
+ "Helsinki-NLP/opus-mt-fr-gaa",
836
+ "Helsinki-NLP/opus-mt-fr-fj",
837
+ "Helsinki-NLP/opus-mt-fr-es",
838
+ "Helsinki-NLP/opus-mt-fr-eo",
839
+ "Helsinki-NLP/opus-mt-fr-en",
840
+ "Helsinki-NLP/opus-mt-fr-el",
841
+ "Helsinki-NLP/opus-mt-fr-efi",
842
+ "Helsinki-NLP/opus-mt-fr-ee",
843
+ "Helsinki-NLP/opus-mt-fr-de",
844
+ "Helsinki-NLP/opus-mt-fr-crs",
845
+ "Helsinki-NLP/opus-mt-fr-ceb",
846
+ "Helsinki-NLP/opus-mt-fr-ca",
847
+ "Helsinki-NLP/opus-mt-fr-bzs",
848
+ "Helsinki-NLP/opus-mt-fr-bi",
849
+ "Helsinki-NLP/opus-mt-fr-bg",
850
+ "Helsinki-NLP/opus-mt-fr-ber",
851
+ "Helsinki-NLP/opus-mt-fr-bem",
852
+ "Helsinki-NLP/opus-mt-fr-bcl",
853
+ "Helsinki-NLP/opus-mt-fr-ase",
854
+ "Helsinki-NLP/opus-mt-fr-ar",
855
+ "Helsinki-NLP/opus-mt-fj-fr",
856
+ "Helsinki-NLP/opus-mt-fj-en",
857
+ "Helsinki-NLP/opus-mt-fiu-fiu",
858
+ "Helsinki-NLP/opus-mt-fiu-en",
859
+ "Helsinki-NLP/opus-mt-fi_nb_no_nn_ru_sv_en-SAMI",
860
+ "Helsinki-NLP/opus-mt-fi-zne",
861
+ "Helsinki-NLP/opus-mt-fi-yo",
862
+ "Helsinki-NLP/opus-mt-fi-yap",
863
+ "Helsinki-NLP/opus-mt-fi-xh",
864
+ "Helsinki-NLP/opus-mt-fi-wls",
865
+ "Helsinki-NLP/opus-mt-fi-war",
866
+ "Helsinki-NLP/opus-mt-fi-ve",
867
+ "Helsinki-NLP/opus-mt-fi-uk",
868
+ "Helsinki-NLP/opus-mt-fi-ty",
869
+ "Helsinki-NLP/opus-mt-fi-tw",
870
+ "Helsinki-NLP/opus-mt-fi-tvl",
871
+ "Helsinki-NLP/opus-mt-fi-ts",
872
+ "Helsinki-NLP/opus-mt-fi-tr",
873
+ "Helsinki-NLP/opus-mt-fi-tpi",
874
+ "Helsinki-NLP/opus-mt-fi-toi",
875
+ "Helsinki-NLP/opus-mt-fi-to",
876
+ "Helsinki-NLP/opus-mt-fi-tn",
877
+ "Helsinki-NLP/opus-mt-fi-tll",
878
+ "Helsinki-NLP/opus-mt-fi-tiv",
879
+ "Helsinki-NLP/opus-mt-fi-swc",
880
+ "Helsinki-NLP/opus-mt-fi-sw",
881
+ "Helsinki-NLP/opus-mt-fi-sv",
882
+ "Helsinki-NLP/opus-mt-fi-st",
883
+ "Helsinki-NLP/opus-mt-fi-srn",
884
+ "Helsinki-NLP/opus-mt-fi-sq",
885
+ "Helsinki-NLP/opus-mt-fi-sn",
886
+ "Helsinki-NLP/opus-mt-fi-sm",
887
+ "Helsinki-NLP/opus-mt-fi-sl",
888
+ "Helsinki-NLP/opus-mt-fi-sk",
889
+ "Helsinki-NLP/opus-mt-fi-sg",
890
+ "Helsinki-NLP/opus-mt-fi-rw",
891
+ "Helsinki-NLP/opus-mt-fi-run",
892
+ "Helsinki-NLP/opus-mt-fi-ru",
893
+ "Helsinki-NLP/opus-mt-fi-ro",
894
+ "Helsinki-NLP/opus-mt-fi-pon",
895
+ "Helsinki-NLP/opus-mt-fi-pis",
896
+ "Helsinki-NLP/opus-mt-fi-pap",
897
+ "Helsinki-NLP/opus-mt-fi-pag",
898
+ "Helsinki-NLP/opus-mt-fi-ny",
899
+ "Helsinki-NLP/opus-mt-fi-nso",
900
+ "Helsinki-NLP/opus-mt-fi-no",
901
+ "Helsinki-NLP/opus-mt-fi-nl",
902
+ "Helsinki-NLP/opus-mt-fi-niu",
903
+ "Helsinki-NLP/opus-mt-fi-mt",
904
+ "Helsinki-NLP/opus-mt-fi-mos",
905
+ "Helsinki-NLP/opus-mt-fi-mk",
906
+ "Helsinki-NLP/opus-mt-fi-mh",
907
+ "Helsinki-NLP/opus-mt-fi-mg",
908
+ "Helsinki-NLP/opus-mt-fi-mfe",
909
+ "Helsinki-NLP/opus-mt-fi-lv",
910
+ "Helsinki-NLP/opus-mt-fi-lus",
911
+ "Helsinki-NLP/opus-mt-fi-lue",
912
+ "Helsinki-NLP/opus-mt-fi-lua",
913
+ "Helsinki-NLP/opus-mt-fi-lu",
914
+ "Helsinki-NLP/opus-mt-fi-ln",
915
+ "Helsinki-NLP/opus-mt-fi-lg",
916
+ "Helsinki-NLP/opus-mt-fi-kqn",
917
+ "Helsinki-NLP/opus-mt-fi-kg",
918
+ "Helsinki-NLP/opus-mt-fi-it",
919
+ "Helsinki-NLP/opus-mt-fi-iso",
920
+ "Helsinki-NLP/opus-mt-fi-is",
921
+ "Helsinki-NLP/opus-mt-fi-ilo",
922
+ "Helsinki-NLP/opus-mt-fi-ig",
923
+ "Helsinki-NLP/opus-mt-fi-id",
924
+ "Helsinki-NLP/opus-mt-fi-hu",
925
+ "Helsinki-NLP/opus-mt-fi-ht",
926
+ "Helsinki-NLP/opus-mt-fi-hr",
927
+ "Helsinki-NLP/opus-mt-fi-ho",
928
+ "Helsinki-NLP/opus-mt-fi-hil",
929
+ "Helsinki-NLP/opus-mt-fi-he",
930
+ "Helsinki-NLP/opus-mt-fi-ha",
931
+ "Helsinki-NLP/opus-mt-fi-guw",
932
+ "Helsinki-NLP/opus-mt-fi-gil",
933
+ "Helsinki-NLP/opus-mt-fi-gaa",
934
+ "Helsinki-NLP/opus-mt-fi-fse",
935
+ "Helsinki-NLP/opus-mt-fi-fr",
936
+ "Helsinki-NLP/opus-mt-fi-fj",
937
+ "Helsinki-NLP/opus-mt-fi-fi",
938
+ "Helsinki-NLP/opus-mt-fi-et",
939
+ "Helsinki-NLP/opus-mt-fi-es",
940
+ "Helsinki-NLP/opus-mt-fi-eo",
941
+ "Helsinki-NLP/opus-mt-fi-en",
942
+ "Helsinki-NLP/opus-mt-fi-el",
943
+ "Helsinki-NLP/opus-mt-fi-efi",
944
+ "Helsinki-NLP/opus-mt-fi-ee",
945
+ "Helsinki-NLP/opus-mt-fi-de",
946
+ "Helsinki-NLP/opus-mt-fi-cs",
947
+ "Helsinki-NLP/opus-mt-fi-crs",
948
+ "Helsinki-NLP/opus-mt-fi-ceb",
949
+ "Helsinki-NLP/opus-mt-fi-bzs",
950
+ "Helsinki-NLP/opus-mt-fi-bg",
951
+ "Helsinki-NLP/opus-mt-fi-bem",
952
+ "Helsinki-NLP/opus-mt-fi-bcl",
953
+ "Helsinki-NLP/opus-mt-fi-ZH",
954
+ "Helsinki-NLP/opus-mt-fi-NORWAY",
955
+ "Helsinki-NLP/opus-mt-euq-en",
956
+ "Helsinki-NLP/opus-mt-eu-ru",
957
+ "Helsinki-NLP/opus-mt-eu-es",
958
+ "Helsinki-NLP/opus-mt-eu-en",
959
+ "Helsinki-NLP/opus-mt-eu-de",
960
+ "Helsinki-NLP/opus-mt-et-sv",
961
+ "Helsinki-NLP/opus-mt-et-ru",
962
+ "Helsinki-NLP/opus-mt-et-fr",
963
+ "Helsinki-NLP/opus-mt-et-fi",
964
+ "Helsinki-NLP/opus-mt-et-es",
965
+ "Helsinki-NLP/opus-mt-et-en",
966
+ "Helsinki-NLP/opus-mt-et-de",
967
+ "Helsinki-NLP/opus-mt-es-zai",
968
+ "Helsinki-NLP/opus-mt-es-yua",
969
+ "Helsinki-NLP/opus-mt-es-yo",
970
+ "Helsinki-NLP/opus-mt-es-xh",
971
+ "Helsinki-NLP/opus-mt-es-wls",
972
+ "Helsinki-NLP/opus-mt-es-war",
973
+ "Helsinki-NLP/opus-mt-es-vi",
974
+ "Helsinki-NLP/opus-mt-es-ve",
975
+ "Helsinki-NLP/opus-mt-es-uk",
976
+ "Helsinki-NLP/opus-mt-es-tzo",
977
+ "Helsinki-NLP/opus-mt-es-ty",
978
+ "Helsinki-NLP/opus-mt-es-tw",
979
+ "Helsinki-NLP/opus-mt-es-tvl",
980
+ "Helsinki-NLP/opus-mt-es-tpi",
981
+ "Helsinki-NLP/opus-mt-es-to",
982
+ "Helsinki-NLP/opus-mt-es-tn",
983
+ "Helsinki-NLP/opus-mt-es-tll",
984
+ "Helsinki-NLP/opus-mt-es-tl",
985
+ "Helsinki-NLP/opus-mt-es-swc",
986
+ "Helsinki-NLP/opus-mt-es-st",
987
+ "Helsinki-NLP/opus-mt-es-srn",
988
+ "Helsinki-NLP/opus-mt-es-sn",
989
+ "Helsinki-NLP/opus-mt-es-sm",
990
+ "Helsinki-NLP/opus-mt-es-sl",
991
+ "Helsinki-NLP/opus-mt-es-sg",
992
+ "Helsinki-NLP/opus-mt-es-rw",
993
+ "Helsinki-NLP/opus-mt-es-ru",
994
+ "Helsinki-NLP/opus-mt-es-ro",
995
+ "Helsinki-NLP/opus-mt-es-rn",
996
+ "Helsinki-NLP/opus-mt-es-prl",
997
+ "Helsinki-NLP/opus-mt-es-pon",
998
+ "Helsinki-NLP/opus-mt-es-pl",
999
+ "Helsinki-NLP/opus-mt-es-pis",
1000
+ "Helsinki-NLP/opus-mt-es-pap",
1001
+ "Helsinki-NLP/opus-mt-es-pag",
1002
+ "Helsinki-NLP/opus-mt-es-ny",
1003
+ "Helsinki-NLP/opus-mt-es-nso",
1004
+ "Helsinki-NLP/opus-mt-es-no",
1005
+ "Helsinki-NLP/opus-mt-es-nl",
1006
+ "Helsinki-NLP/opus-mt-es-niu",
1007
+ "Helsinki-NLP/opus-mt-es-mt",
1008
+ "Helsinki-NLP/opus-mt-es-mk",
1009
+ "Helsinki-NLP/opus-mt-es-mfs",
1010
+ "Helsinki-NLP/opus-mt-es-lus",
1011
+ "Helsinki-NLP/opus-mt-es-lua",
1012
+ "Helsinki-NLP/opus-mt-es-lt",
1013
+ "Helsinki-NLP/opus-mt-es-loz",
1014
+ "Helsinki-NLP/opus-mt-es-ln",
1015
+ "Helsinki-NLP/opus-mt-es-kg",
1016
+ "Helsinki-NLP/opus-mt-es-it",
1017
+ "Helsinki-NLP/opus-mt-es-iso",
1018
+ "Helsinki-NLP/opus-mt-es-is",
1019
+ "Helsinki-NLP/opus-mt-es-ilo",
1020
+ "Helsinki-NLP/opus-mt-es-ig",
1021
+ "Helsinki-NLP/opus-mt-es-id",
1022
+ "Helsinki-NLP/opus-mt-es-ht",
1023
+ "Helsinki-NLP/opus-mt-es-hr",
1024
+ "Helsinki-NLP/opus-mt-es-ho",
1025
+ "Helsinki-NLP/opus-mt-es-hil",
1026
+ "Helsinki-NLP/opus-mt-es-he",
1027
+ "Helsinki-NLP/opus-mt-es-ha",
1028
+ "Helsinki-NLP/opus-mt-es-guw",
1029
+ "Helsinki-NLP/opus-mt-es-gl",
1030
+ "Helsinki-NLP/opus-mt-es-gil",
1031
+ "Helsinki-NLP/opus-mt-es-gaa",
1032
+ "Helsinki-NLP/opus-mt-es-fr",
1033
+ "Helsinki-NLP/opus-mt-es-fj",
1034
+ "Helsinki-NLP/opus-mt-es-fi",
1035
+ "Helsinki-NLP/opus-mt-es-eu",
1036
+ "Helsinki-NLP/opus-mt-es-et",
1037
+ "Helsinki-NLP/opus-mt-es-es",
1038
+ "Helsinki-NLP/opus-mt-es-eo",
1039
+ "Helsinki-NLP/opus-mt-es-en",
1040
+ "Helsinki-NLP/opus-mt-es-el",
1041
+ "Helsinki-NLP/opus-mt-es-efi",
1042
+ "Helsinki-NLP/opus-mt-es-ee",
1043
+ "Helsinki-NLP/opus-mt-es-de",
1044
+ "Helsinki-NLP/opus-mt-es-da",
1045
+ "Helsinki-NLP/opus-mt-es-csn",
1046
+ "Helsinki-NLP/opus-mt-es-csg",
1047
+ "Helsinki-NLP/opus-mt-es-cs",
1048
+ "Helsinki-NLP/opus-mt-es-crs",
1049
+ "Helsinki-NLP/opus-mt-es-ceb",
1050
+ "Helsinki-NLP/opus-mt-es-ca",
1051
+ "Helsinki-NLP/opus-mt-es-bzs",
1052
+ "Helsinki-NLP/opus-mt-es-bi",
1053
+ "Helsinki-NLP/opus-mt-es-bg",
1054
+ "Helsinki-NLP/opus-mt-es-ber",
1055
+ "Helsinki-NLP/opus-mt-es-bcl",
1056
+ "Helsinki-NLP/opus-mt-es-ase",
1057
+ "Helsinki-NLP/opus-mt-es-ar",
1058
+ "Helsinki-NLP/opus-mt-es-aed",
1059
+ "Helsinki-NLP/opus-mt-es-NORWAY",
1060
+ "Helsinki-NLP/opus-mt-eo-sv",
1061
+ "Helsinki-NLP/opus-mt-eo-sh",
1062
+ "Helsinki-NLP/opus-mt-eo-ru",
1063
+ "Helsinki-NLP/opus-mt-eo-ro",
1064
+ "Helsinki-NLP/opus-mt-eo-pt",
1065
+ "Helsinki-NLP/opus-mt-eo-pl",
1066
+ "Helsinki-NLP/opus-mt-eo-nl",
1067
+ "Helsinki-NLP/opus-mt-eo-it",
1068
+ "Helsinki-NLP/opus-mt-eo-hu",
1069
+ "Helsinki-NLP/opus-mt-eo-he",
1070
+ "Helsinki-NLP/opus-mt-eo-fr",
1071
+ "Helsinki-NLP/opus-mt-eo-fi",
1072
+ "Helsinki-NLP/opus-mt-eo-es",
1073
+ "Helsinki-NLP/opus-mt-eo-en",
1074
+ "Helsinki-NLP/opus-mt-eo-el",
1075
+ "Helsinki-NLP/opus-mt-eo-de",
1076
+ "Helsinki-NLP/opus-mt-eo-da",
1077
+ "Helsinki-NLP/opus-mt-eo-cs",
1078
+ "Helsinki-NLP/opus-mt-eo-bg",
1079
+ "Helsinki-NLP/opus-mt-en_el_es_fi-en_el_es_fi",
1080
+ "Helsinki-NLP/opus-mt-en-zlw",
1081
+ "Helsinki-NLP/opus-mt-en-zls",
1082
+ "Helsinki-NLP/opus-mt-en-zle",
1083
+ "Helsinki-NLP/opus-mt-en-zh",
1084
+ "Helsinki-NLP/opus-mt-en-xh",
1085
+ "Helsinki-NLP/opus-mt-en-vi",
1086
+ "Helsinki-NLP/opus-mt-en-urj",
1087
+ "Helsinki-NLP/opus-mt-en-ur",
1088
+ "Helsinki-NLP/opus-mt-en-umb",
1089
+ "Helsinki-NLP/opus-mt-en-uk",
1090
+ "Helsinki-NLP/opus-mt-en-ty",
1091
+ "Helsinki-NLP/opus-mt-en-tw",
1092
+ "Helsinki-NLP/opus-mt-en-tvl",
1093
+ "Helsinki-NLP/opus-mt-en-tut",
1094
+ "Helsinki-NLP/opus-mt-en-ts",
1095
+ "Helsinki-NLP/opus-mt-en-trk",
1096
+ "Helsinki-NLP/opus-mt-en-tpi",
1097
+ "Helsinki-NLP/opus-mt-en-toi",
1098
+ "Helsinki-NLP/opus-mt-en-to",
1099
+ "Helsinki-NLP/opus-mt-en-tn",
1100
+ "Helsinki-NLP/opus-mt-en-tll",
1101
+ "Helsinki-NLP/opus-mt-en-tl",
1102
+ "Helsinki-NLP/opus-mt-en-tiv",
1103
+ "Helsinki-NLP/opus-mt-en-ti",
1104
+ "Helsinki-NLP/opus-mt-en-tdt",
1105
+ "Helsinki-NLP/opus-mt-en-swc",
1106
+ "Helsinki-NLP/opus-mt-en-sw",
1107
+ "Helsinki-NLP/opus-mt-en-sv",
1108
+ "Helsinki-NLP/opus-mt-en-st",
1109
+ "Helsinki-NLP/opus-mt-en-ss",
1110
+ "Helsinki-NLP/opus-mt-en-sq",
1111
+ "Helsinki-NLP/opus-mt-en-sn",
1112
+ "Helsinki-NLP/opus-mt-en-sm",
1113
+ "Helsinki-NLP/opus-mt-en-sla",
1114
+ "Helsinki-NLP/opus-mt-en-sk",
1115
+ "Helsinki-NLP/opus-mt-en-sit",
1116
+ "Helsinki-NLP/opus-mt-en-sg",
1117
+ "Helsinki-NLP/opus-mt-en-sem",
1118
+ "Helsinki-NLP/opus-mt-en-sal",
1119
+ "Helsinki-NLP/opus-mt-en-rw",
1120
+ "Helsinki-NLP/opus-mt-en-run",
1121
+ "Helsinki-NLP/opus-mt-en-ru",
1122
+ "Helsinki-NLP/opus-mt-en-roa",
1123
+ "Helsinki-NLP/opus-mt-en-ro",
1124
+ "Helsinki-NLP/opus-mt-en-rnd",
1125
+ "Helsinki-NLP/opus-mt-en-rn",
1126
+ "Helsinki-NLP/opus-mt-en-pqw",
1127
+ "Helsinki-NLP/opus-mt-en-pqe",
1128
+ "Helsinki-NLP/opus-mt-en-poz",
1129
+ "Helsinki-NLP/opus-mt-en-pon",
1130
+ "Helsinki-NLP/opus-mt-en-pis",
1131
+ "Helsinki-NLP/opus-mt-en-phi",
1132
+ "Helsinki-NLP/opus-mt-en-pap",
1133
+ "Helsinki-NLP/opus-mt-en-pag",
1134
+ "Helsinki-NLP/opus-mt-en-om",
1135
+ "Helsinki-NLP/opus-mt-en-nyk",
1136
+ "Helsinki-NLP/opus-mt-en-ny",
1137
+ "Helsinki-NLP/opus-mt-en-nso",
1138
+ "Helsinki-NLP/opus-mt-en-nl",
1139
+ "Helsinki-NLP/opus-mt-en-niu",
1140
+ "Helsinki-NLP/opus-mt-en-nic",
1141
+ "Helsinki-NLP/opus-mt-en-ng",
1142
+ "Helsinki-NLP/opus-mt-en-mul",
1143
+ "Helsinki-NLP/opus-mt-en-mt",
1144
+ "Helsinki-NLP/opus-mt-en-mr",
1145
+ "Helsinki-NLP/opus-mt-en-mos",
1146
+ "Helsinki-NLP/opus-mt-en-ml",
1147
+ "Helsinki-NLP/opus-mt-en-mkh",
1148
+ "Helsinki-NLP/opus-mt-en-mk",
1149
+ "Helsinki-NLP/opus-mt-en-mh",
1150
+ "Helsinki-NLP/opus-mt-en-mg",
1151
+ "Helsinki-NLP/opus-mt-en-mfe",
1152
+ "Helsinki-NLP/opus-mt-en-map",
1153
+ "Helsinki-NLP/opus-mt-en-lus",
1154
+ "Helsinki-NLP/opus-mt-en-luo",
1155
+ "Helsinki-NLP/opus-mt-en-lun",
1156
+ "Helsinki-NLP/opus-mt-en-lue",
1157
+ "Helsinki-NLP/opus-mt-en-lua",
1158
+ "Helsinki-NLP/opus-mt-en-lu",
1159
+ "Helsinki-NLP/opus-mt-en-loz",
1160
+ "Helsinki-NLP/opus-mt-en-ln",
1161
+ "Helsinki-NLP/opus-mt-en-lg",
1162
+ "Helsinki-NLP/opus-mt-en-kwy",
1163
+ "Helsinki-NLP/opus-mt-en-kwn",
1164
+ "Helsinki-NLP/opus-mt-en-kqn",
1165
+ "Helsinki-NLP/opus-mt-en-kj",
1166
+ "Helsinki-NLP/opus-mt-en-kg",
1167
+ "Helsinki-NLP/opus-mt-en-jap",
1168
+ "Helsinki-NLP/opus-mt-en-itc",
1169
+ "Helsinki-NLP/opus-mt-en-it",
1170
+ "Helsinki-NLP/opus-mt-en-iso",
1171
+ "Helsinki-NLP/opus-mt-en-is",
1172
+ "Helsinki-NLP/opus-mt-en-ine",
1173
+ "Helsinki-NLP/opus-mt-en-inc",
1174
+ "Helsinki-NLP/opus-mt-en-ilo",
1175
+ "Helsinki-NLP/opus-mt-en-iir",
1176
+ "Helsinki-NLP/opus-mt-en-ig",
1177
+ "Helsinki-NLP/opus-mt-en-id",
1178
+ "Helsinki-NLP/opus-mt-en-hy",
1179
+ "Helsinki-NLP/opus-mt-en-hu",
1180
+ "Helsinki-NLP/opus-mt-en-ht",
1181
+ "Helsinki-NLP/opus-mt-en-ho",
1182
+ "Helsinki-NLP/opus-mt-en-hil",
1183
+ "Helsinki-NLP/opus-mt-en-hi",
1184
+ "Helsinki-NLP/opus-mt-en-he",
1185
+ "Helsinki-NLP/opus-mt-en-ha",
1186
+ "Helsinki-NLP/opus-mt-en-gv",
1187
+ "Helsinki-NLP/opus-mt-en-guw",
1188
+ "Helsinki-NLP/opus-mt-en-grk",
1189
+ "Helsinki-NLP/opus-mt-en-gmw",
1190
+ "Helsinki-NLP/opus-mt-en-gmq",
1191
+ "Helsinki-NLP/opus-mt-en-gl",
1192
+ "Helsinki-NLP/opus-mt-en-gil",
1193
+ "Helsinki-NLP/opus-mt-en-gem",
1194
+ "Helsinki-NLP/opus-mt-en-gaa",
1195
+ "Helsinki-NLP/opus-mt-en-ga",
1196
+ "Helsinki-NLP/opus-mt-en-fr",
1197
+ "Helsinki-NLP/opus-mt-en-fj",
1198
+ "Helsinki-NLP/opus-mt-en-fiu",
1199
+ "Helsinki-NLP/opus-mt-en-fi",
1200
+ "Helsinki-NLP/opus-mt-en-euq",
1201
+ "Helsinki-NLP/opus-mt-en-eu",
1202
+ "Helsinki-NLP/opus-mt-en-et",
1203
+ "Helsinki-NLP/opus-mt-en-es",
1204
+ "Helsinki-NLP/opus-mt-en-eo",
1205
+ "Helsinki-NLP/opus-mt-en-el",
1206
+ "Helsinki-NLP/opus-mt-en-efi",
1207
+ "Helsinki-NLP/opus-mt-en-ee",
1208
+ "Helsinki-NLP/opus-mt-en-dra",
1209
+ "Helsinki-NLP/opus-mt-en-de",
1210
+ "Helsinki-NLP/opus-mt-en-da",
1211
+ "Helsinki-NLP/opus-mt-en-cy",
1212
+ "Helsinki-NLP/opus-mt-en-cus",
1213
+ "Helsinki-NLP/opus-mt-en-cs",
1214
+ "Helsinki-NLP/opus-mt-en-crs",
1215
+ "Helsinki-NLP/opus-mt-en-cpp",
1216
+ "Helsinki-NLP/opus-mt-en-cpf",
1217
+ "Helsinki-NLP/opus-mt-en-chk",
1218
+ "Helsinki-NLP/opus-mt-en-cel",
1219
+ "Helsinki-NLP/opus-mt-en-ceb",
1220
+ "Helsinki-NLP/opus-mt-en-ca",
1221
+ "Helsinki-NLP/opus-mt-en-bzs",
1222
+ "Helsinki-NLP/opus-mt-en-bnt",
1223
+ "Helsinki-NLP/opus-mt-en-bi",
1224
+ "Helsinki-NLP/opus-mt-en-bg",
1225
+ "Helsinki-NLP/opus-mt-en-ber",
1226
+ "Helsinki-NLP/opus-mt-en-bem",
1227
+ "Helsinki-NLP/opus-mt-en-bcl",
1228
+ "Helsinki-NLP/opus-mt-en-bat",
1229
+ "Helsinki-NLP/opus-mt-en-az",
1230
+ "Helsinki-NLP/opus-mt-en-ar",
1231
+ "Helsinki-NLP/opus-mt-en-alv",
1232
+ "Helsinki-NLP/opus-mt-en-afa",
1233
+ "Helsinki-NLP/opus-mt-en-aav",
1234
+ "Helsinki-NLP/opus-mt-en-ROMANCE",
1235
+ "Helsinki-NLP/opus-mt-en-CELTIC",
1236
+ "Helsinki-NLP/opus-mt-el-sv",
1237
+ "Helsinki-NLP/opus-mt-el-fr",
1238
+ "Helsinki-NLP/opus-mt-el-fi",
1239
+ "Helsinki-NLP/opus-mt-el-eo",
1240
+ "Helsinki-NLP/opus-mt-el-ar",
1241
+ "Helsinki-NLP/opus-mt-efi-sv",
1242
+ "Helsinki-NLP/opus-mt-efi-fr",
1243
+ "Helsinki-NLP/opus-mt-efi-fi",
1244
+ "Helsinki-NLP/opus-mt-efi-en",
1245
+ "Helsinki-NLP/opus-mt-efi-de",
1246
+ "Helsinki-NLP/opus-mt-ee-sv",
1247
+ "Helsinki-NLP/opus-mt-ee-fr",
1248
+ "Helsinki-NLP/opus-mt-ee-fi",
1249
+ "Helsinki-NLP/opus-mt-ee-es",
1250
+ "Helsinki-NLP/opus-mt-ee-en",
1251
+ "Helsinki-NLP/opus-mt-ee-de",
1252
+ "Helsinki-NLP/opus-mt-dra-en",
1253
+ "Helsinki-NLP/opus-mt-de-vi",
1254
+ "Helsinki-NLP/opus-mt-de-uk",
1255
+ "Helsinki-NLP/opus-mt-de-tl",
1256
+ "Helsinki-NLP/opus-mt-de-pon",
1257
+ "Helsinki-NLP/opus-mt-de-pl",
1258
+ "Helsinki-NLP/opus-mt-de-pis",
1259
+ "Helsinki-NLP/opus-mt-de-pap",
1260
+ "Helsinki-NLP/opus-mt-de-pag",
1261
+ "Helsinki-NLP/opus-mt-de-ny",
1262
+ "Helsinki-NLP/opus-mt-de-nso",
1263
+ "Helsinki-NLP/opus-mt-de-no",
1264
+ "Helsinki-NLP/opus-mt-de-nl",
1265
+ "Helsinki-NLP/opus-mt-de-niu",
1266
+ "Helsinki-NLP/opus-mt-de-mt",
1267
+ "Helsinki-NLP/opus-mt-de-ms",
1268
+ "Helsinki-NLP/opus-mt-de-lua",
1269
+ "Helsinki-NLP/opus-mt-de-lt",
1270
+ "Helsinki-NLP/opus-mt-de-loz",
1271
+ "Helsinki-NLP/opus-mt-de-ln",
1272
+ "Helsinki-NLP/opus-mt-de-kg",
1273
+ "Helsinki-NLP/opus-mt-de-it",
1274
+ "Helsinki-NLP/opus-mt-de-iso",
1275
+ "Helsinki-NLP/opus-mt-de-is",
1276
+ "Helsinki-NLP/opus-mt-de-ilo",
1277
+ "Helsinki-NLP/opus-mt-de-ig",
1278
+ "Helsinki-NLP/opus-mt-de-hu",
1279
+ "Helsinki-NLP/opus-mt-de-ht",
1280
+ "Helsinki-NLP/opus-mt-de-hr",
1281
+ "Helsinki-NLP/opus-mt-de-ho",
1282
+ "Helsinki-NLP/opus-mt-de-hil",
1283
+ "Helsinki-NLP/opus-mt-de-he",
1284
+ "Helsinki-NLP/opus-mt-de-ha",
1285
+ "Helsinki-NLP/opus-mt-de-guw",
1286
+ "Helsinki-NLP/opus-mt-de-gil",
1287
+ "Helsinki-NLP/opus-mt-de-gaa",
1288
+ "Helsinki-NLP/opus-mt-de-fr",
1289
+ "Helsinki-NLP/opus-mt-de-fj",
1290
+ "Helsinki-NLP/opus-mt-de-fi",
1291
+ "Helsinki-NLP/opus-mt-de-eu",
1292
+ "Helsinki-NLP/opus-mt-de-et",
1293
+ "Helsinki-NLP/opus-mt-de-es",
1294
+ "Helsinki-NLP/opus-mt-de-eo",
1295
+ "Helsinki-NLP/opus-mt-de-en",
1296
+ "Helsinki-NLP/opus-mt-de-el",
1297
+ "Helsinki-NLP/opus-mt-de-efi",
1298
+ "Helsinki-NLP/opus-mt-de-ee",
1299
+ "Helsinki-NLP/opus-mt-de-de",
1300
+ "Helsinki-NLP/opus-mt-de-da",
1301
+ "Helsinki-NLP/opus-mt-de-cs",
1302
+ "Helsinki-NLP/opus-mt-de-crs",
1303
+ "Helsinki-NLP/opus-mt-de-ca",
1304
+ "Helsinki-NLP/opus-mt-de-bzs",
1305
+ "Helsinki-NLP/opus-mt-de-bi",
1306
+ "Helsinki-NLP/opus-mt-de-bg",
1307
+ "Helsinki-NLP/opus-mt-de-bcl",
1308
+ "Helsinki-NLP/opus-mt-de-ase",
1309
+ "Helsinki-NLP/opus-mt-de-ar",
1310
+ "Helsinki-NLP/opus-mt-de-ZH",
1311
+ "Helsinki-NLP/opus-mt-da-ru",
1312
+ "Helsinki-NLP/opus-mt-da-no",
1313
+ "Helsinki-NLP/opus-mt-da-fr",
1314
+ "Helsinki-NLP/opus-mt-da-fi",
1315
+ "Helsinki-NLP/opus-mt-da-es",
1316
+ "Helsinki-NLP/opus-mt-da-eo",
1317
+ "Helsinki-NLP/opus-mt-da-en",
1318
+ "Helsinki-NLP/opus-mt-da-de",
1319
+ "Helsinki-NLP/opus-mt-cy-en",
1320
+ "Helsinki-NLP/opus-mt-cus-en",
1321
+ "Helsinki-NLP/opus-mt-csn-es",
1322
+ "Helsinki-NLP/opus-mt-csg-es",
1323
+ "Helsinki-NLP/opus-mt-cs-uk",
1324
+ "Helsinki-NLP/opus-mt-cs-sv",
1325
+ "Helsinki-NLP/opus-mt-cs-fr",
1326
+ "Helsinki-NLP/opus-mt-cs-fi",
1327
+ "Helsinki-NLP/opus-mt-cs-eo",
1328
+ "Helsinki-NLP/opus-mt-cs-en",
1329
+ "Helsinki-NLP/opus-mt-cs-de",
1330
+ "Helsinki-NLP/opus-mt-crs-sv",
1331
+ "Helsinki-NLP/opus-mt-crs-fr",
1332
+ "Helsinki-NLP/opus-mt-crs-fi",
1333
+ "Helsinki-NLP/opus-mt-crs-es",
1334
+ "Helsinki-NLP/opus-mt-crs-en",
1335
+ "Helsinki-NLP/opus-mt-crs-de",
1336
+ "Helsinki-NLP/opus-mt-cpp-en",
1337
+ "Helsinki-NLP/opus-mt-cpp-cpp",
1338
+ "Helsinki-NLP/opus-mt-cpf-en",
1339
+ "Helsinki-NLP/opus-mt-chk-sv",
1340
+ "Helsinki-NLP/opus-mt-chk-fr",
1341
+ "Helsinki-NLP/opus-mt-chk-es",
1342
+ "Helsinki-NLP/opus-mt-chk-en",
1343
+ "Helsinki-NLP/opus-mt-cel-en",
1344
+ "Helsinki-NLP/opus-mt-ceb-sv",
1345
+ "Helsinki-NLP/opus-mt-ceb-fr",
1346
+ "Helsinki-NLP/opus-mt-ceb-fi",
1347
+ "Helsinki-NLP/opus-mt-ceb-es",
1348
+ "Helsinki-NLP/opus-mt-ceb-en",
1349
+ "Helsinki-NLP/opus-mt-ccs-en",
1350
+ "Helsinki-NLP/opus-mt-cau-en",
1351
+ "Helsinki-NLP/opus-mt-ca-uk",
1352
+ "Helsinki-NLP/opus-mt-ca-pt",
1353
+ "Helsinki-NLP/opus-mt-ca-nl",
1354
+ "Helsinki-NLP/opus-mt-ca-it",
1355
+ "Helsinki-NLP/opus-mt-ca-fr",
1356
+ "Helsinki-NLP/opus-mt-ca-es",
1357
+ "Helsinki-NLP/opus-mt-ca-en",
1358
+ "Helsinki-NLP/opus-mt-ca-de",
1359
+ "Helsinki-NLP/opus-mt-bzs-sv",
1360
+ "Helsinki-NLP/opus-mt-bzs-fr",
1361
+ "Helsinki-NLP/opus-mt-bzs-fi",
1362
+ "Helsinki-NLP/opus-mt-bzs-es",
1363
+ "Helsinki-NLP/opus-mt-bzs-en",
1364
+ "Helsinki-NLP/opus-mt-bnt-en",
1365
+ "Helsinki-NLP/opus-mt-bn-en",
1366
+ "Helsinki-NLP/opus-mt-bi-sv",
1367
+ "Helsinki-NLP/opus-mt-bi-fr",
1368
+ "Helsinki-NLP/opus-mt-bi-es",
1369
+ "Helsinki-NLP/opus-mt-bi-en",
1370
+ "Helsinki-NLP/opus-mt-bg-uk",
1371
+ "Helsinki-NLP/opus-mt-bg-tr",
1372
+ "Helsinki-NLP/opus-mt-bg-sv",
1373
+ "Helsinki-NLP/opus-mt-bg-ru",
1374
+ "Helsinki-NLP/opus-mt-bg-it",
1375
+ "Helsinki-NLP/opus-mt-bg-fr",
1376
+ "Helsinki-NLP/opus-mt-bg-fi",
1377
+ "Helsinki-NLP/opus-mt-bg-es",
1378
+ "Helsinki-NLP/opus-mt-bg-eo",
1379
+ "Helsinki-NLP/opus-mt-bg-en",
1380
+ "Helsinki-NLP/opus-mt-bg-de",
1381
+ "Helsinki-NLP/opus-mt-ber-fr",
1382
+ "Helsinki-NLP/opus-mt-ber-es",
1383
+ "Helsinki-NLP/opus-mt-ber-en",
1384
+ "Helsinki-NLP/opus-mt-bem-sv",
1385
+ "Helsinki-NLP/opus-mt-bem-fr",
1386
+ "Helsinki-NLP/opus-mt-bem-fi",
1387
+ "Helsinki-NLP/opus-mt-bem-es",
1388
+ "Helsinki-NLP/opus-mt-bem-en",
1389
+ "Helsinki-NLP/opus-mt-be-es",
1390
+ "Helsinki-NLP/opus-mt-bcl-sv",
1391
+ "Helsinki-NLP/opus-mt-bcl-fr",
1392
+ "Helsinki-NLP/opus-mt-bcl-fi",
1393
+ "Helsinki-NLP/opus-mt-bcl-es",
1394
+ "Helsinki-NLP/opus-mt-bcl-en",
1395
+ "Helsinki-NLP/opus-mt-bcl-de",
1396
+ "Helsinki-NLP/opus-mt-bat-en",
1397
+ "Helsinki-NLP/opus-mt-az-tr",
1398
+ "Helsinki-NLP/opus-mt-az-es",
1399
+ "Helsinki-NLP/opus-mt-az-en",
1400
+ "Helsinki-NLP/opus-mt-ase-sv",
1401
+ "Helsinki-NLP/opus-mt-ase-fr",
1402
+ "Helsinki-NLP/opus-mt-ase-es",
1403
+ "Helsinki-NLP/opus-mt-ase-en",
1404
+ "Helsinki-NLP/opus-mt-ase-de",
1405
+ "Helsinki-NLP/opus-mt-art-en",
1406
+ "Helsinki-NLP/opus-mt-ar-tr",
1407
+ "Helsinki-NLP/opus-mt-ar-ru",
1408
+ "Helsinki-NLP/opus-mt-ar-pl",
1409
+ "Helsinki-NLP/opus-mt-ar-it",
1410
+ "Helsinki-NLP/opus-mt-ar-he",
1411
+ "Helsinki-NLP/opus-mt-ar-fr",
1412
+ "Helsinki-NLP/opus-mt-ar-es",
1413
+ "Helsinki-NLP/opus-mt-ar-eo",
1414
+ "Helsinki-NLP/opus-mt-ar-en",
1415
+ "Helsinki-NLP/opus-mt-ar-el",
1416
+ "Helsinki-NLP/opus-mt-ar-de",
1417
+ "Helsinki-NLP/opus-mt-am-sv",
1418
+ "Helsinki-NLP/opus-mt-alv-en",
1419
+ "Helsinki-NLP/opus-mt-afa-en",
1420
+ "Helsinki-NLP/opus-mt-afa-afa",
1421
+ "Helsinki-NLP/opus-mt-aed-es",
1422
+ "Helsinki-NLP/opus-mt-aav-en",
1423
+ "Helsinki-NLP/opus-mt-SCANDINAVIA-SCANDINAVIA",
1424
+ "Helsinki-NLP/opus-mt-ROMANCE-en",
1425
+ "Helsinki-NLP/opus-mt-NORTH_EU-NORTH_EU",
1426
+ "Helsinki-NLP/opus-mt-he-fr"
1427
+ ]
1428
+
1429
+ def get_clearly_formatted_langauge_directions():
1430
+ # Clearly formatted language directions only
1431
+ # Helsinki-NLP/opus-mt-tc-base-bat-zle is ignored
1432
+ # Helsinki-NLP/opus-mt-tc-fr-en is accepted due to clarity of source language being fr and target language being en
1433
+ language_directions = [model.split("Helsinki-NLP/opus-mt-")[1] for model in helsinki_models
1434
+ if (len(model.split("-"))<6 and
1435
+ "opus-mt" in model and
1436
+ len(model.split("_")) == 1)
1437
+ and len(model) < len("Helsinki-NLP/opus-mt-src-trg")]
1438
+ return language_directions
iso639_wrapper.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from iso639 import Lang, iter_langs
2
+ from regex import R
3
+
4
+
5
+ langs = [lang for lang in iter_langs()]
6
+
7
+ # iso 1
8
+ iso1_code_to_name = {lg.pt1: lg.name for lg in langs}
9
+ iso1_name_to_code = {lg.name: lg.pt1 for lg in langs}
10
+
11
+ # iso 2
12
+ iso2b_code_to_name = {lg.pt2b: lg.name for lg in langs}
13
+ iso2b_name_to_code = {lg.name: lg.pt2b for lg in langs}
14
+ iso2t_code_to_name = {lg.pt2t: lg.name for lg in langs}
15
+ iso2t_name_to_code = {lg.name: lg.pt2t for lg in langs}
16
+
17
+ # iso 3
18
+ iso3_code_to_name = {lg.pt3: lg.name for lg in langs}
19
+ iso3_name_to_code = {lg.name: lg.pt3 for lg in langs}
20
+
21
+ # iso 5
22
+ iso5_code_to_name = {lg.pt5: lg.name for lg in langs}
23
+ iso5_name_to_code = {lg.name: lg.pt5 for lg in langs}
24
+
25
+ # https://github.com/Helsinki-NLP/Tatoeba-Challenge/blob/master/README.md#in-more-detail
26
+ helsinki_precendence = ["iso3", "iso5", "iso1", "iso2t", "iso2b"]
27
+
28
+ rename_dict = {"Panjabi": "Punjabi"}
29
+
30
+ def rename_languages(language):
31
+ if language in rename_dict:
32
+ return rename_dict[language]
33
+ return language
34
+
35
+ def rename_return_value(func):
36
+ def wrapper(*args, **kwargs):
37
+ result = func(*args, **kwargs)
38
+ if isinstance(result, str):
39
+ return rename_languages(result)
40
+ elif isinstance(result, list):
41
+ return [rename_languages(item) for item in result]
42
+ elif isinstance(result, dict):
43
+ return {key: rename_languages(value) for key, value in result.items()}
44
+ else:
45
+ return result
46
+ return wrapper
47
+
48
+ @rename_return_value
49
+ def get_name_from_iso_code(iso_code, precedence=helsinki_precendence):
50
+ for code_type in precedence:
51
+ if code_type == "iso1" and iso_code in iso1_code_to_name.keys():
52
+ return iso1_code_to_name[iso_code]
53
+ elif code_type == "iso2b" and iso_code in iso2b_code_to_name.keys():
54
+ return iso2b_code_to_name[iso_code]
55
+ elif code_type == "iso2t" and iso_code in iso2t_code_to_name.keys():
56
+ return iso2t_code_to_name[iso_code]
57
+ elif code_type == "iso3" and iso_code in iso3_code_to_name.keys():
58
+ return iso3_code_to_name[iso_code]
59
+ elif code_type == "iso5" and iso_code in iso5_code_to_name.keys():
60
+ return iso5_code_to_name[iso_code]
language_detection.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pycld2 as cld2
2
+ from langdetect import detect
3
+
4
+ def detect_language(input_text):
5
+ if not input_text:
6
+ return "unknown"
7
+ _, _, details = cld2.detect(input_text)
8
+ detected_language = details[0][0].lower()
9
+ if detected_language == "unknown":
10
+ language_code = detect(input_text)
11
+ return language_code
12
+ else:
13
+ return detected_language
language_directions.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from helsinki_models import helsinki_models, get_clearly_formatted_langauge_directions
2
+ from iso639_wrapper import get_name_from_iso_code
3
+ from language_detection import detect_language
4
+ from collections import OrderedDict
5
+ from utils import convert_keys_to_lowercase, match_in_keys, match_in_values
6
+
7
+
8
+ def get_all_source_languages():
9
+ """
10
+ Returns a human-readable `dict source_languages_names:codes`
11
+ based on the available models.
12
+ """
13
+ source_languages = {}
14
+ language_directions = get_clearly_formatted_langauge_directions()
15
+
16
+ for direction in language_directions:
17
+ source_lang_code = direction.split('-')[0]
18
+ source_language_name = get_name_from_iso_code(source_lang_code)
19
+ if source_language_name:
20
+ source_languages[source_language_name] = source_lang_code
21
+ source_languages = OrderedDict(sorted(source_languages.items()))
22
+ all_source_langs_including_auto_detect = \
23
+ { **{'Detect' : 'Detect'}, **source_languages}
24
+ return all_source_langs_including_auto_detect
25
+
26
+ def update_source_languages_dict(source_languages_dict, auto_detected_language):
27
+ source_languages_dict[auto_detected_language] = "Detect"
28
+
29
+ def get_target_languages(source_language_code, input_text=None):
30
+ """
31
+ Returns a human-readable `dict of target languages names to codes`
32
+ based on the available models and the source language passed.
33
+ """
34
+ include_all_languages = False
35
+ if source_language_code == "Detect":
36
+ source_language_code, include_all_languages = auto_detect_language_code(input_text)
37
+
38
+ target_languages = {}
39
+ language_directions = get_clearly_formatted_langauge_directions()
40
+ for direction in language_directions:
41
+ if direction.startswith(f"{source_language_code}-") or include_all_languages:
42
+ target_language = direction.split('-')[1] # Extracting the last part as the target language
43
+ target_language_name = get_name_from_iso_code(target_language)
44
+ if target_language_name:
45
+ target_languages[target_language_name] = target_language
46
+ return OrderedDict(sorted(target_languages.items())), source_language_code
47
+
48
+ def auto_detect_language_code(input_text):
49
+ DEFAULT_SOURCE_LANGUAGE = "eu"
50
+ detected_language_string = DEFAULT_SOURCE_LANGUAGE
51
+ if not input_text:
52
+ return DEFAULT_SOURCE_LANGUAGE, True
53
+ language_or_code = detect_language(input_text)
54
+ if language_or_code == "unknown":
55
+ return DEFAULT_SOURCE_LANGUAGE, True
56
+ else:
57
+ detected_language_string = match_in_keys(get_all_source_languages(), language_or_code)
58
+ if not detected_language_string:
59
+ detected_language_string = match_in_values(get_all_source_languages(), language_or_code)
60
+ if detected_language_string:
61
+ return detected_language_string, False
62
+ else:
63
+ return DEFAULT_SOURCE_LANGUAGE, True
64
+
65
+
66
+ # Example usage:
67
+ # all_source_languages = get_all_source_languages()
68
+ # print("All Source Languages:", all_source_languages)
69
+
70
+ # source_language_code = "pa" # Replace with your desired source language
71
+ # target_languages = get_target_languages(source_language_code)
72
+ # print(f"Target Languages for {source_language_code}:", target_languages)
requirements.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ -i https://pypi.python.org/simple
2
+ gradio==3.*
3
+ iso639-lang
4
+ pycld2 # In future, maybe use lingua-language-detector
5
+ torch
6
+ transformers
7
+ sentencepiece
8
+ langdetect
9
+ sacremoses
utils.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from functools import cache
2
+
3
+
4
+ def convert_keys_to_lowercase(input_dict):
5
+ return {key.lower(): value for key, value in input_dict.items()}
6
+
7
+ def match_in_keys(dictionary, search_string):
8
+ lowercase_dict = convert_keys_to_lowercase(dictionary)
9
+ if search_string.lower() in list(lowercase_dict.keys()):
10
+ return lowercase_dict.get(search_string.lower())
11
+ for l_key in lowercase_dict.keys():
12
+ if l_key.startswith(search_string.lower()):
13
+ return lowercase_dict.get(l_key)
14
+
15
+ def match_in_values(dictionary, search_string):
16
+ lowercase_dict = convert_keys_to_lowercase(dictionary)
17
+ if search_string.lower() in list(lowercase_dict.values()):
18
+ return search_string