Files
leonpan-pc/app/core/utils/morelang.py
2025-10-29 22:20:21 +08:00

91 lines
2.2 KiB
Python

# 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")