mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 16:25:36 +00:00
Add MultiLanguage support
This commit is contained in:
parent
3f33bd4955
commit
fd17ba958c
@ -3,8 +3,9 @@
|
||||
# Developed by KuiToi Dev
|
||||
# File modules.__init__.py
|
||||
# Written by: SantaSpeen
|
||||
# Version 1.0
|
||||
# Version 1.1
|
||||
# Licence: FPA
|
||||
# (c) kuitoi.su 2023
|
||||
from .console import Console
|
||||
from .config_provider import ConfigProvider, Config
|
||||
from .i18n import MultiLanguage
|
||||
|
9
src/modules/i18n/__init__.py
Normal file
9
src/modules/i18n/__init__.py
Normal file
@ -0,0 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Developed by KuiToi Dev
|
||||
# File modules.i18n.__init__.py
|
||||
# Written by: SantaSpeen
|
||||
# Version 1.0
|
||||
# Licence: FPA
|
||||
# (c) kuitoi.su 2023
|
||||
from .i18n import MultiLanguage
|
8
src/modules/i18n/files/en.json
Normal file
8
src/modules/i18n/files/en.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"hello": "Hello from KuiToi-Server!",
|
||||
"config_file": "Use kuitoi.yml for config.",
|
||||
"debug": "Getting new logging with DEBUG level!",
|
||||
"config_info": "Server config: %s",
|
||||
"init": "Initializing ready.",
|
||||
"ready": "Server started!"
|
||||
}
|
8
src/modules/i18n/files/ru.json
Normal file
8
src/modules/i18n/files/ru.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"hello": "Привет из KuiToi-Server!",
|
||||
"config_file": "Используй kuitoi.yml для настройки.",
|
||||
"debug": "Начата новая сессия логирования с уровнем DEBUG!",
|
||||
"config_info": "Конфиг сервера: %s",
|
||||
"init": "Инициализация окончена.",
|
||||
"ready": "Сервер запущен!"
|
||||
}
|
10
src/modules/i18n/i18n-builtins.pyi
Normal file
10
src/modules/i18n/i18n-builtins.pyi
Normal file
@ -0,0 +1,10 @@
|
||||
class i18n:
|
||||
hello: str = "Hello from KuiToi-Server!"
|
||||
config_file: str = "Use kuitoi.yml for config."
|
||||
debug: str = "Getting new logging with DEBUG level!"
|
||||
config_info: str = "Server config: %s"
|
||||
init: str = "Initializing ready."
|
||||
ready: str = "Server started!"
|
||||
i18n_data = {"hello":"Hello from KuiToi-Server!","config_file":"Use kuitoi.yml for config.",
|
||||
"debug":"Getting new logging with DEBUG level!","config_info":"Server config: %s",
|
||||
"init":"Initializing ready.","ready":"Server started!"}
|
67
src/modules/i18n/i18n.py
Normal file
67
src/modules/i18n/i18n.py
Normal file
@ -0,0 +1,67 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Developed by KuiToi Dev
|
||||
# File modules.i18n.i18n.py
|
||||
# Written by: SantaSpeen
|
||||
# Version 1.0
|
||||
# Licence: FPA
|
||||
# (c) kuitoi.su 2023
|
||||
import builtins
|
||||
import json
|
||||
|
||||
from core import get_logger
|
||||
|
||||
|
||||
class i18n:
|
||||
|
||||
def __init__(self, data):
|
||||
self.hello: str = data["hello"]
|
||||
self.config_file: str = data["config_file"]
|
||||
self.debug: str = data["debug"]
|
||||
self.config_info: str = data["config_info"]
|
||||
self.init: str = data["init"]
|
||||
self.ready: str = data["ready"]
|
||||
|
||||
|
||||
class MultiLanguage:
|
||||
|
||||
def __init__(self, language: str = None, files_dir="modules/i18n/files/"):
|
||||
if language is None:
|
||||
language = "en"
|
||||
self.__data = {}
|
||||
self.__i18n = None
|
||||
self.language = language
|
||||
self.files_dir = files_dir
|
||||
self.log = get_logger("i18n")
|
||||
self.set_language(language)
|
||||
|
||||
def set_language(self, language):
|
||||
self.log.debug(f"set_language({language})")
|
||||
self.language = language
|
||||
if language != "en":
|
||||
self.open_file()
|
||||
else:
|
||||
self.__data = {
|
||||
"hello": "Hello from KuiToi-Server!",
|
||||
"config_file": "Use kuitoi.yml for config.",
|
||||
"debug": "Getting new logging with DEBUG level!",
|
||||
"config_info": "Server config: %s",
|
||||
"init": "Initializing ready.",
|
||||
"ready": "Server started!"
|
||||
}
|
||||
self.__i18n = i18n(self.__data)
|
||||
|
||||
def open_file(self):
|
||||
self.log.debug("open_file")
|
||||
file = self.files_dir + self.language + ".json"
|
||||
try:
|
||||
with open(file) as f:
|
||||
self.__data.update(json.load(f))
|
||||
except FileNotFoundError:
|
||||
self.log.warning(f"Localisation {self.language} not found; Setting language to: en.")
|
||||
self.set_language("en")
|
||||
|
||||
def builtins_hook(self) -> None:
|
||||
self.log.debug("used builtins_hook")
|
||||
builtins.i18n = self.__i18n
|
||||
builtins.i18n_data = self.__data
|
Loading…
x
Reference in New Issue
Block a user