mirror of
https://github.com/ihmily/StreamCap.git
synced 2026-05-08 06:26:13 +08:00
* refactor: restructure app directory for better organization * update: add missing changes to __init__.py
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
import os
|
|
|
|
from ...utils.logger import logger
|
|
from .config_manager import ConfigManager
|
|
|
|
|
|
class LanguageManager:
|
|
"""
|
|
Manages language settings and loads internationalization (i18n) configurations.
|
|
"""
|
|
|
|
def __init__(self, app):
|
|
self._observers = []
|
|
self.language = {}
|
|
self.app = app
|
|
self.load()
|
|
|
|
def load(self):
|
|
"""
|
|
Initialize the LanguageManager with settings and load the language configuration.
|
|
"""
|
|
config_manager = ConfigManager(self.app.run_path)
|
|
logger.info(f"Language Code: {self.app.settings.language_code}")
|
|
i18n_filename = f"{self.app.settings.language_code}.json"
|
|
i18n_file_path = os.path.join(self.app.run_path, "locales", i18n_filename)
|
|
self.language = config_manager.load_i18n_config(i18n_file_path)
|
|
return self.language
|
|
|
|
def add_observer(self, observer):
|
|
"""Add an observer that will be notified when the language changes."""
|
|
if observer not in self._observers:
|
|
self._observers.append(observer)
|
|
|
|
def remove_observer(self, observer):
|
|
"""Remove an observer."""
|
|
if observer in self._observers:
|
|
self._observers.remove(observer)
|
|
|
|
def notify_observers(self):
|
|
"""Notify all observers that the language has changed."""
|
|
for observer in self._observers:
|
|
if hasattr(observer, "page_name"):
|
|
observer.load_language()
|
|
else:
|
|
observer.load()
|