init
This commit is contained in:
90
app/core/utils/morelang.py
Normal file
90
app/core/utils/morelang.py
Normal file
@@ -0,0 +1,90 @@
|
||||
# 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")
|
||||
Reference in New Issue
Block a user