Files
yakpanel-core/class/public/translations.py

81 lines
2.6 KiB
Python
Raw Normal View History

2026-04-07 02:04:22 +05:30
# Language translations
import os
import glob
import json
import public
translations = {}
login_translations = {}
# Load translations
def load_translations():
# if len(translations.keys()) > 0:
# return translations
# scan_pattern = '{}/YakPanel/static/vite/lang/*/*.json'.format(public.get_panel_path())
# 获取设置语言 避免配置被覆盖
path = "/www/server/panel/YakPanel/languages/language.pl"
lang = ""
if os.path.exists(path):
with open(path, 'r', encoding='utf-8') as data:
lang = data.read()
key = 'en'
filename = '/www/server/panel/YakPanel/languages/settings.json'
if os.path.exists(filename):
try:
with open(filename, 'r', encoding='utf-8') as file:
data = json.load(file)
key = data['default']
if lang != '':
if key != lang:
data['default'] = lang
key = lang
with open(filename, 'w', encoding='utf-8') as file:
file.write(json.dumps(data, indent=4))
except:
pass
scan_pattern_dir = '{}/YakPanel/static/vite/lang/{}'.format(public.get_panel_path(), key)
if not os.path.exists(scan_pattern_dir):
key = 'en'
# 改获取用户设置的语言 没有使用默认英语
scan_pattern = '{}/YakPanel/static/vite/lang/{}/*.json'.format(public.get_panel_path(), key)
try:
for path in glob.glob(scan_pattern):
lan = os.path.basename(os.path.dirname(path))
if lan not in translations:
translations[lan] = {}
with open(path, 'r') as fp:
translations[lan].update(json.loads(fp.read()))
# 只保留最新设置的语言
translations2 = {k: v for k, v in translations.items() if k == key or k == translations.get(key)}
return translations2
except:
public.print_log(public.get_error_info())
# 只返回登录语言包
def load_login_translations():
# if len(login_translations.keys()) > 0:
# return login_translations
scan_pattern = '{}/YakPanel/static/vite/lang/*/login.json'.format(public.get_panel_path())
try:
for path in glob.glob(scan_pattern):
lan = os.path.basename(os.path.dirname(path))
if lan not in login_translations:
login_translations[lan] = {}
with open(path, 'r') as fp:
login_translations[lan].update(json.loads(fp.read()))
return login_translations
except:
public.print_log(public.get_error_info())