"""国际化模块:提供 t(key, **kwargs) 翻译函数,支持语言切换。 模块导入时自动加载 zh_CN 作为默认语言。 通过 switch(locale) 切换语言,t() 返回当前语言的翻译文本。 """ from __future__ import annotations import json from pathlib import Path _I18N_DIR = Path(__file__).parent _translations: dict[str, str] = {} _current_locale: str = "zh_CN" def load(locale: str) -> None: """加载指定语言的翻译文件。""" global _translations, _current_locale _current_locale = locale path = _I18N_DIR / f"{locale}.json" if path.exists(): _translations = json.loads(path.read_text(encoding="utf-8")) else: _translations = {} def switch(locale: str) -> None: """切换当前语言并返回新语言代码。""" load(locale) def current_locale() -> str: """返回当前语言代码。""" return _current_locale def t(key: str, **kwargs: object) -> str: """获取翻译文本,支持 {name} 插值。 如果 key 不存在,返回 key 本身作为回退。 """ text = str(_translations.get(key, key)) if kwargs: text = text.format(**{k: v for k, v in kwargs.items()}) return text # 模块导入时自动加载默认中文翻译 load("zh_CN")