Update translation.py
Browse files- translation.py +12 -8
translation.py
CHANGED
@@ -20,16 +20,20 @@ def load_model(source_lang, target_lang):
|
|
20 |
try:
|
21 |
if source_lang == target_lang:
|
22 |
return _load_default_model()
|
|
|
23 |
model_name = f"Helsinki-NLP/opus-mt-{source_lang}-{target_lang}"
|
24 |
-
|
25 |
-
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
except Exception:
|
28 |
-
# Pivot through English if direct model fails
|
29 |
-
if source_lang != "en":
|
30 |
-
return load_model("en", target_lang)
|
31 |
-
elif target_lang != "en":
|
32 |
-
return load_model(source_lang, "en")
|
33 |
return _load_default_model()
|
34 |
|
35 |
def translate(text, source_lang, target_lang):
|
|
|
20 |
try:
|
21 |
if source_lang == target_lang:
|
22 |
return _load_default_model()
|
23 |
+
# Try direct model first
|
24 |
model_name = f"Helsinki-NLP/opus-mt-{source_lang}-{target_lang}"
|
25 |
+
try:
|
26 |
+
tokenizer = MarianTokenizer.from_pretrained(model_name)
|
27 |
+
model = MarianMTModel.from_pretrained(model_name)
|
28 |
+
return tokenizer, model
|
29 |
+
except Exception:
|
30 |
+
# Pivot through English for non-English pairs
|
31 |
+
if source_lang != "en" and target_lang != "en":
|
32 |
+
en_to_target = load_model("en", target_lang)
|
33 |
+
source_to_en = load_model(source_lang, "en")
|
34 |
+
return source_to_en if source_lang == "en" else en_to_target
|
35 |
+
return _load_default_model()
|
36 |
except Exception:
|
|
|
|
|
|
|
|
|
|
|
37 |
return _load_default_model()
|
38 |
|
39 |
def translate(text, source_lang, target_lang):
|