Archived
1
0
Fork 0

add locale config field

This commit is contained in:
yzhh 2023-09-20 16:22:47 +08:00
parent 90052c2951
commit bd918c83b1
5 changed files with 21 additions and 14 deletions

View file

@ -29,6 +29,7 @@ langsmith_api_key =
[cfg]
base_superuser = "QQ|2596322644"
debug = false
locale = "zh_cn"
cache_path = "./cache/"
command_prefix = ["~", ""]
confirm_command = ["是", "对", "對", "yes", "Yes", "YES", "y", "Y"]

View file

@ -6,7 +6,7 @@ from typing import Union, Dict
from core.exceptions import InvalidCommandFormatError
from core.types import MessageSession, Module
from core.utils.i18n import Locale
from core.utils.i18n import Locale, default_locale
from .args import parse_argv, Template, templates_to_str, DescPattern
from ..logger import Logger
@ -21,7 +21,7 @@ class CommandParser:
self.origin_template = args
self.msg: Union[MessageSession, None] = msg
self.options_desc = []
self.lang = self.msg.locale if self.msg is not None else Locale('zh_cn')
self.lang = self.msg.locale if self.msg is not None else Locale(default_locale)
help_docs = {}
for match in (
args.command_list.set if self.msg is None else args.command_list.get(

View file

@ -10,13 +10,18 @@ from config import Config
from .text import remove_suffix
default_locale = Config('locale')
if not default_locale:
default_locale = 'zh_cn'
# Load all locale files into memory
# We might change this behavior in the future and read them on demand as
# locale files get too large
class LocaleNode():
'''本地化树节点'''
class LocaleNode:
"""本地化树节点"""
value: str
children: dict
@ -25,11 +30,11 @@ class LocaleNode():
self.children = {}
def query_node(self, path: str):
'''查询本地化树节点'''
"""查询本地化树节点"""
return self._query_node(path.split('.'))
def _query_node(self, path: list):
'''通过路径队列查询本地化树节点'''
"""通过路径队列查询本地化树节点"""
if len(path) == 0:
return self
nxt_node = path[0]
@ -39,11 +44,11 @@ class LocaleNode():
return None
def update_node(self, path: str, write_value: str):
'''更新本地化树节点'''
"""更新本地化树节点"""
return self._update_node(path.split('.'), write_value)
def _update_node(self, path: list, write_value: str):
'''通过路径队列更新本地化树节点'''
"""通过路径队列更新本地化树节点"""
if len(path) == 0:
self.value = write_value
return
@ -115,7 +120,7 @@ class Locale:
return key in self.data
def t(self, key: Union[str, dict], fallback_failed_prompt=True, *args, **kwargs) -> str:
'''获取本地化字符串'''
"""获取本地化字符串"""
if isinstance(key, dict):
if (ft := key.get(self.locale)) is not None:
return ft
@ -128,7 +133,7 @@ class Locale:
return Template(localized).safe_substitute(*args, **kwargs)
def get_locale_node(self, path: str):
'''获取本地化节点'''
"""获取本地化节点"""
return self.data.query_node(path)
def get_string_with_fallback(self, key: str, fallback_failed_prompt) -> str:
@ -166,4 +171,4 @@ def tl_str(locale: Locale, text: str, fallback_failed_prompt=False) -> str:
return text
__all__ = ['Locale', 'load_locale_file', 'get_available_locales', 'tl_str']
__all__ = ['Locale', 'load_locale_file', 'get_available_locales', 'tl_str', 'default_locale']

View file

@ -3,6 +3,7 @@ from sqlalchemy.dialects.mysql import LONGTEXT
from database.orm import Session, DB_LINK
from database.orm_base import Base
from core.utils.i18n import default_locale
is_mysql = DB_LINK.startswith('mysql')
@ -25,7 +26,7 @@ class TargetInfo(Base):
options = Column(LONGTEXT if is_mysql else Text, default='{}')
custom_admins = Column(LONGTEXT if is_mysql else Text, default='[]')
muted = Column(Boolean, default=False)
locale = Column(String(512), default='zh_cn')
locale = Column(String(512), default=default_locale)
petal = Column(Integer, default=0)

View file

@ -13,7 +13,7 @@ from core.builtins import Url
from core.dirty_check import check
from core.logger import Logger
from core.utils.http import get_url
from core.utils.i18n import Locale
from core.utils.i18n import Locale, default_locale
from modules.wiki.utils.dbutils import WikiSiteInfo as DBSiteInfo, Audit
@ -43,7 +43,7 @@ class QueryInfo:
self.headers = headers if headers is not None else {
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'}
self.prefix = prefix
self.locale = Locale(locale if locale is not None else 'zh_cn')
self.locale = Locale(locale if locale is not None else default_locale)
class WikiInfo: