mirror of
https://github.com/LibreTranslate/LibreTranslate.git
synced 2026-02-21 10:40:15 -05:00
Restrict fallback to auto-detect only and add Chinese variants
Co-authored-by: pierotofy <1951843+pierotofy@users.noreply.github.com>
This commit is contained in:
parent
81da436400
commit
05e09f577b
@ -789,17 +789,18 @@ def create_app(args):
|
||||
if source_lang == "auto":
|
||||
candidate_langs = detect_languages(src_texts)
|
||||
detected_src_lang = candidate_langs[0]
|
||||
src_lang = get_language_with_fallback(detected_src_lang["language"], languages)
|
||||
else:
|
||||
detected_src_lang = {"confidence": 100.0, "language": source_lang}
|
||||
src_lang = next((l for l in languages if l.code == source_lang), None)
|
||||
else:
|
||||
detected_src_lang = {"confidence": 0.0, "language": "en"}
|
||||
|
||||
src_lang = get_language_with_fallback(detected_src_lang["language"], languages)
|
||||
src_lang = next((l for l in languages if l.code == "en"), None)
|
||||
|
||||
if src_lang is None:
|
||||
abort(400, description=_("%(lang)s is not supported", lang=source_lang))
|
||||
|
||||
tgt_lang = get_language_with_fallback(target_lang, languages)
|
||||
tgt_lang = next((l for l in languages if l.code == target_lang), None)
|
||||
|
||||
if tgt_lang is None:
|
||||
abort(400, description=_("%(lang)s is not supported",lang=target_lang))
|
||||
@ -977,12 +978,12 @@ def create_app(args):
|
||||
if os.path.splitext(file.filename)[1] not in frontend_argos_supported_files_format:
|
||||
abort(400, description=_("Invalid request: file format not supported"))
|
||||
|
||||
src_lang = get_language_with_fallback(source_lang, languages)
|
||||
src_lang = next((l for l in languages if l.code == source_lang), None)
|
||||
|
||||
if src_lang is None and source_lang != "auto":
|
||||
abort(400, description=_("%(lang)s is not supported", lang=source_lang))
|
||||
|
||||
tgt_lang = get_language_with_fallback(target_lang, languages)
|
||||
tgt_lang = next((l for l in languages if l.code == target_lang), None)
|
||||
|
||||
if tgt_lang is None:
|
||||
abort(400, description=_("%(lang)s is not supported", lang=target_lang))
|
||||
|
||||
@ -54,7 +54,9 @@ def get_language_with_fallback(lang_code, languages):
|
||||
|
||||
language_variants = {
|
||||
'pt': ['pb'],
|
||||
'pb': ['pt']
|
||||
'pb': ['pt'],
|
||||
'zh': ['zt'],
|
||||
'zt': ['zh']
|
||||
}
|
||||
|
||||
fallbacks = language_variants.get(lang_code, [])
|
||||
|
||||
@ -29,11 +29,11 @@ def client_with_pt(app_with_pt):
|
||||
return app_with_pt.test_client()
|
||||
|
||||
|
||||
def test_portuguese_fallback_pb_to_pt(client_with_pt):
|
||||
response = client_with_pt.post("/translate", data={
|
||||
"q": "Hello",
|
||||
"source": "en",
|
||||
"target": "pb",
|
||||
def test_auto_detect_fallback_pt_to_pb(client_with_pb):
|
||||
response = client_with_pb.post("/translate", data={
|
||||
"q": "Olá mundo",
|
||||
"source": "auto",
|
||||
"target": "en",
|
||||
"format": "text"
|
||||
})
|
||||
|
||||
@ -43,7 +43,21 @@ def test_portuguese_fallback_pb_to_pt(client_with_pt):
|
||||
assert len(response_json["translatedText"]) > 0
|
||||
|
||||
|
||||
def test_portuguese_fallback_pt_to_pb(client_with_pb):
|
||||
def test_auto_detect_fallback_pb_to_pt(client_with_pt):
|
||||
response = client_with_pt.post("/translate", data={
|
||||
"q": "Olá mundo",
|
||||
"source": "auto",
|
||||
"target": "en",
|
||||
"format": "text"
|
||||
})
|
||||
|
||||
response_json = json.loads(response.data)
|
||||
assert response.status_code == 200
|
||||
assert "translatedText" in response_json
|
||||
assert len(response_json["translatedText"]) > 0
|
||||
|
||||
|
||||
def test_explicit_language_no_fallback(client_with_pb):
|
||||
response = client_with_pb.post("/translate", data={
|
||||
"q": "Hello",
|
||||
"source": "en",
|
||||
@ -52,6 +66,6 @@ def test_portuguese_fallback_pt_to_pb(client_with_pb):
|
||||
})
|
||||
|
||||
response_json = json.loads(response.data)
|
||||
assert response.status_code == 200
|
||||
assert "translatedText" in response_json
|
||||
assert len(response_json["translatedText"]) > 0
|
||||
assert response.status_code == 400
|
||||
assert "error" in response_json
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user