import gettext from pathlib import Path import locale from babel import Locale LOCALE_MAP = { 'ru': 'russian', 'en': 'english', 'fr': 'french', 'de': 'german', 'es': 'spanish', 'it': 'italian', 'zh': 'schinese', 'zh_Hant': 'tchinese', 'ja': 'japanese', 'ko': 'koreana', 'pt': 'brazilian', 'pl': 'polish', 'nl': 'dutch', 'sv': 'swedish', 'no': 'norwegian', 'da': 'danish', 'fi': 'finnish', 'cs': 'czech', 'hu': 'hungarian', 'tr': 'turkish', 'ro': 'romanian', 'th': 'thai', 'uk': 'ukrainian', 'bg': 'bulgarian', 'el': 'greek', } translate = gettext.translation( domain="messages", localedir = Path(__file__).parent / "locales", fallback=True, ) _ = translate.gettext def get_system_locale(): """Возвращает системную локаль, например, 'ru_RU'. Если не удаётся определить – возвращает 'en'.""" loc = locale.getdefaultlocale()[0] return loc if loc else 'en' def get_steam_language(): try: # Babel автоматически разбирает сложные локали, например, 'zh_Hant_HK' → 'zh_Hant' system_locale = get_system_locale() if system_locale: locale = Locale.parse(system_locale) # Используем только языковой код ('ru', 'en', и т.д.) language_code = locale.language return LOCALE_MAP.get(language_code, 'english') except Exception as e: print(f"Failed to detect locale: {e}") # Если что-то пошло не так — используем английский по умолчанию return 'english' def get_egs_language(): try: # Babel автоматически разбирает сложные локали, например, 'zh_Hant_HK' → 'zh_Hant' system_locale = get_system_locale() if system_locale: locale = Locale.parse(system_locale) # Используем только языковой код ('ru', 'en', и т.д.) language_code = locale.language return language_code except Exception as e: print(f"Failed to detect locale: {e}") # Если что-то пошло не так — используем английский по умолчанию return 'en'