Implement the translation feature

This commit is contained in:
DevilXD committed 2022-08-18 22:28:30 +02:00
1 parent 3c81268501
commit 05466364d1
14 files changed
+1041 -220

No files matched your search

+11 -3
View File
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
class SettingsFile(TypedDict):
proxy: URL
language: str
autostart: bool
exclude: set[str]
priority: list[str]
@@ -25,6 +26,7 @@ default_settings: SettingsFile = {
"priority": [],
"exclude": set(),
"autostart": False,
"language": "English",
"priority_only": True,
"autostart_tray": False,
}
@@ -41,12 +43,15 @@ class Settings:
logging_level: int
# from settings file
proxy: URL
language: str
autostart: bool
exclude: set[str]
priority: list[str]
priority_only: bool
autostart_tray: bool
PASSTHROUGH = ("_settings", "_args", "_altered")
def __init__(self, args: ParsedArgs):
self._settings: SettingsFile = json_load(SETTINGS_PATH, default_settings)
self._args: ParsedArgs = args
@@ -54,14 +59,17 @@ class Settings:
# default logic of reading settings is to check args first, then the settings file
def __getattr__(self, name: str, /) -> Any:
if hasattr(self._args, name):
if name in self.PASSTHROUGH:
# passthrough
return getattr(super(), name)
elif hasattr(self._args, name):
return getattr(self._args, name)
elif name in self._settings:
return self._settings[name] # type: ignore[literal-required]
return getattr(super(), name)
def __setattr__(self, name: str, value: Any, /) -> None:
if name in ("_settings", "_args", "_altered"):
if name in self.PASSTHROUGH:
# passthrough
return super().__setattr__(name, value)
elif name in self._settings:
@@ -78,4 +86,4 @@ class Settings:
def save(self, *, force: bool = False) -> None:
if self._altered or force:
json_save(SETTINGS_PATH, self._settings)
json_save(SETTINGS_PATH, self._settings, sort=True)