# coding: utf-8 import json import os from loguru import logger from pathlib import Path # 导入配置 from .config import cfg, qconfig # 当前语言设置,默认为中文 _current_language = "zh" # 翻译词典 _translations = {} # 语言文件目录 _LANG_DIR = Path("app/resource/lang").absolute() # print(Path("app/resource/lang").absolute()) def load_language(lang_code="zh"): """ 加载指定语言的翻译文件 Args: lang_code: 语言代码,如 "zh"、"en" """ global _current_language, _translations try: # 构建语言文件路径 lang_file = os.path.join(_LANG_DIR, f"{lang_code}.json") # 检查文件是否存在 if not os.path.exists(lang_file): logger.warning(f"语言文件不存在: {lang_file},使用默认语言") lang_code = "zh" lang_file = os.path.join(_LANG_DIR, "zh.json") # 读取语言文件 with open(lang_file, "r", encoding="utf-8") as f: _translations = json.load(f) _current_language = lang_code logger.info(f"已加载语言: {lang_code}") except Exception as e: logger.error(f"加载语言文件失败: {e}") # 如果加载失败,使用空字典 _translations = {} def lang(text): """ 翻译文本 Args: text: 要翻译的原文 Returns: 翻译后的文本,如果没有找到翻译,则返回原文 """ # 如果翻译词典为空,尝试加载默认语言 if not _translations: load_language(_current_language) # 返回翻译后的文本,找不到则返回原文 return _translations.get(text, text) def get_current_language(): """ 获取当前语言代码 Returns: 当前语言代码 """ return _current_language # 初始化时从配置加载语言 try: if hasattr(cfg, "language"): initial_lang = qconfig.get(cfg.language) load_language(initial_lang) else: # 如果配置中没有语言设置,使用默认值 load_language() except Exception as e: logger.error(f"加载语言配置时出错: {e}") # 出错时使用默认语言 load_language("zh")