Files
StreamCap/app/core/config/language_manager.py
Hmily 142c437dbd refactor: restructure app directory for better organization (#155)
* refactor: restructure app directory for better organization

* update: add missing changes to __init__.py
2025-07-19 16:01:02 +08:00

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()