mirror of
https://github.com/WGDashboard/WGDashboard-PRW.git
synced 2026-08-03 22:42:57 +00:00
65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
#!/bin/env python3
|
|
|
|
import os
|
|
import json
|
|
import flask
|
|
|
|
from .response import make_resp_obj
|
|
|
|
from ..config.config import config
|
|
|
|
class localeman:
|
|
def __init__(self):
|
|
_, self.wgd_config = config.read()
|
|
self.locale_path = flask.current_app.locale_path
|
|
|
|
try:
|
|
path = os.path.join(self.locale_path, "supported_locales.json")
|
|
|
|
with open(path, "r", encoding="utf-8") as locale_path:
|
|
self.active_languages = sorted(
|
|
json.load(locale_path),
|
|
key=lambda x: x.get("lang_name", "")
|
|
)
|
|
except Exception:
|
|
self.active_languages = []
|
|
|
|
def get_language(self):
|
|
ok, server_config = config.filter(self.wgd_config, "SERVER")
|
|
if not ok:
|
|
log.error("failed to filter the config in-memory")
|
|
return None
|
|
|
|
lang = server_config.get("wgdashboard_language", "en")
|
|
if lang.lower() == "en":
|
|
return None
|
|
|
|
path = os.path.join(self.locale_path, f"{lang}.json")
|
|
if os.path.isfile(path):
|
|
with open(path, "r", encoding="utf-8") as lang_file:
|
|
return json.load(lang_file)
|
|
return None
|
|
|
|
def get_available_languages():
|
|
available_languages_path = "./static/locales/supported_locales.json"
|
|
|
|
with open(os.path.join(available_languages_path), "r") as f:
|
|
language_data = json.load(f)
|
|
|
|
available_languages = sorted(language_data, key=lambda x: x['lang_name'])
|
|
|
|
return available_languages
|
|
|
|
def update_language(self, lang_id) -> bool:
|
|
path = os.path.join(self.locale_path, f"{lang_id}.json")
|
|
|
|
if not os.path.isfile(path):
|
|
lang_id = "en"
|
|
|
|
config.update("SERVER", "wgdashboard_language", lang_id)
|
|
# Very important to also refresh the config in-memory
|
|
ok, flask.current_app.wgd_config = config.read()
|
|
if not ok:
|
|
log.error("failed to refresh the in-memory configuration")
|
|
return make_resp_obj(False, 'Internal error', {}, 500)
|
|
return self.get_language() |