81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
# 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()) |