mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-02 02:38:30 +02:00
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import json
|
|
from pathlib import Path
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
from source.mkw.ModConfig import ModConfig
|
|
|
|
|
|
_language: str | None = None
|
|
_language_data: dict = {}
|
|
|
|
|
|
def load_language(language: str):
|
|
"""
|
|
Load a language file.
|
|
:param language: language code to load
|
|
:return:
|
|
"""
|
|
global _language, _language_data
|
|
|
|
_language = language
|
|
_language_data = json.loads(Path(f"./assets/language/{language}.json").read_text(encoding="utf8"))
|
|
|
|
|
|
def translate(text) -> str:
|
|
"""
|
|
Translate a text to the loaded language.
|
|
:param text: list of text to translate
|
|
:return: translated text
|
|
"""
|
|
return _language_data.get("translation", {}).get(text, text)
|
|
|
|
|
|
def translate_external(mod_config: "ModConfig", message_texts: dict[str, str], default: str = "") -> str:
|
|
"""
|
|
Translate any message that is not from the game.
|
|
:param mod_config: the ModConfig object
|
|
:param message_texts: a dictionary with the translation
|
|
:param default: the default message if no translation are found
|
|
:return: the translated message
|
|
"""
|
|
message = message_texts.get(_language)
|
|
if message is None: message = message_texts.get("*")
|
|
if message is None: message = default
|
|
return mod_config.multiple_safe_eval(message, args=["language"])(language=_language)
|
|
|
|
|