-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathlanguage_manager.py
49 lines (40 loc) · 1.5 KB
/
language_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from typing import Dict, List, Any
from utils import JsonUtility
from settings import GeneralSettings
class LanguageManager:
data: Dict = None
registered_widgets: List[Any] = []
@staticmethod
def update_language() -> None:
LanguageManager.initialize()
LanguageManager.update_widgets_text()
@staticmethod
def update_widgets_text() -> None:
"""
Updates language in all registered widgets based on the current language.
"""
for widget in LanguageManager.registered_widgets:
try:
widget.update_widgets_text()
except Exception as error:
print(f"language_manager.py L-25 : {error}")
@staticmethod
def initialize() -> None:
lang_file = f"data\\languages\\{GeneralSettings.settings["lang_code"]}.json"
LanguageManager.data = JsonUtility.read_from_file(lang_file)
@staticmethod
def register_widget(widget: Any) -> None:
"""
Registers a widget with the LanguageManager for language updates.
Args:
widget (Any): The widget to register.
"""
LanguageManager.registered_widgets.append(widget)
@staticmethod
def unregister_widget(widget: Any) -> None:
"""
Unregisters a widget from the LanguageManager.
Args:
widget (Any): The widget to LanguageManager.
"""
LanguageManager.registered_widgets.remove(widget)