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:
copilot-swe-agent[bot] 2026-02-07 22:56:51 +00:00
parent 81da436400
commit 05e09f577b
3 changed files with 32 additions and 15 deletions

View File

@ -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))

View File

@ -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, [])

View File

@ -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