Refactor language resolution into shared helper

This commit is contained in:
Igor Baranov 2026-07-15 12:55:38 +03:00
parent be6a4f1e9d
commit f87b8a668e
4 changed files with 26 additions and 5 deletions

View File

@ -124,10 +124,9 @@ from text import cleaned_text_to_sequence
from text.cleaner import clean_text
from tools.assets import css, js, top_html
from tools.i18n.i18n import I18nAuto, scan_language_list
from tools.i18n.i18n import I18nAuto, resolve_language
language = os.environ.get("language", "Auto")
language = sys.argv[-1] if sys.argv[-1] in scan_language_list() else language
language = resolve_language(os.environ.get("language", "Auto"))
i18n = I18nAuto(language=language)
# os.environ['PYTORCH_ENABLE_MPS_FALLBACK'] = '1' # 确保直接启动推理UI时也能够设置。

View File

@ -0,0 +1,13 @@
from tools.i18n.i18n import resolve_language
def test_resolve_language_prefers_supported_last_cli_locale():
assert resolve_language("fr_FR", ["webui.py", "zh_CN"]) == "zh_CN"
def test_resolve_language_keeps_language_for_unknown_last_argument():
assert resolve_language("fr_FR", ["webui.py", "--port", "9872"]) == "fr_FR"
def test_resolve_language_keeps_language_for_empty_argv():
assert resolve_language("fr_FR", []) == "fr_FR"

View File

@ -1,6 +1,7 @@
import json
import locale
import os
import sys
I18N_JSON_DIR: os.PathLike = os.path.join(os.path.dirname(os.path.relpath(__file__)), "locale")
@ -19,6 +20,14 @@ def scan_language_list():
return language_list
def resolve_language(language="Auto", argv=None):
if argv is None:
argv = sys.argv
if argv and argv[-1] in scan_language_list():
return argv[-1]
return language
class I18nAuto:
def __init__(self, language=None):
if language in ["Auto", None]:

View File

@ -61,9 +61,9 @@ import subprocess
from subprocess import Popen
from tools.assets import css, js, top_html
from tools.i18n.i18n import I18nAuto, scan_language_list
from tools.i18n.i18n import I18nAuto, resolve_language
language = sys.argv[-1] if sys.argv[-1] in scan_language_list() else "Auto"
language = resolve_language()
os.environ["language"] = language
i18n = I18nAuto(language=language)
from multiprocessing import cpu_count