support scheduler progress i18n (#6069)

This commit is contained in:
jxxghp
2026-07-07 06:04:45 +08:00
committed by GitHub
parent 827ed8330c
commit 8245124e82
4 changed files with 246 additions and 1 deletions

View File

@@ -218,9 +218,31 @@ class LocaleHelper:
for pattern, target in cls._load_pattern_matchers(locale):
matched = pattern.fullmatch(text)
if matched:
return cls._format(target, matched.groupdict())
return cls._format(
target,
cls._build_pattern_values(locale, matched.groupdict()),
)
return None
@classmethod
def _build_pattern_values(cls, locale: str, values: dict[str, str]) -> dict[str, str]:
"""
为动态模板补充可选的占位值翻译。
"""
pattern_values = dict(values)
catalog = cls._load_catalog(locale)
default_catalog = (
cls._load_catalog(cls.DEFAULT_LOCALE)
if locale != cls.DEFAULT_LOCALE
else catalog
)
for name, value in values.items():
translated = cls._lookup_message(catalog, value)
if translated is None and locale != cls.DEFAULT_LOCALE:
translated = cls._lookup_message(default_catalog, value)
pattern_values[f"{name}_i18n"] = translated or value
return pattern_values
@staticmethod
@lru_cache(maxsize=16)
def _load_pattern_matchers(locale: str) -> list[tuple[re.Pattern[str], str]]: