You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
5.8 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Language translations for menu system
# Supported languages: en (English), zh (Chinese), ru (Russian)
TRANSLATIONS = {
'en': {
'title': 'Xiaomi MiR Patcher',
'main_menu': [
'Set IP-address (current value: {})',
'Connect to device (install exploit)',
'Read full device info',
'Create full backup',
'Install EN/RU/ZH languages',
'Install permanent SSH',
'Install firmware (from directory "firmware")',
'{{{ Other functions }}}',
'Change language',
'[[ Reboot device ]]',
'Exit'
],
'extended_menu': [
'Set IP-address (current value: {})',
'Change root password',
'Read dmesg and syslog',
'Create a backup of the specified partition',
'Uninstall EN/RU/ZH languages',
'Set kernel boot address',
'Install bootloader (Breed/U-Boot)',
'__test__',
'[[ Reboot device ]]',
'Return to main menu'
],
'prompts': {
'select': 'Select: ',
'choice': 'Choice: ',
'enter_ip': 'Enter device IP-address: ',
'extended_functions': '(extended functions)',
'language_menu': 'Language / 语言 / Язык',
'language_prompt': 'Select language [1-English, 2-中文, 3-Русский]: ',
'bootloader_choice': 'Select bootloader [1-Breed, 2-U-Boot]: '
}
},
'zh': {
'title': '小米路由器破解工具',
'main_menu': [
'设置IP地址 (当前值: {})',
'连接设备 (安装漏洞利用)',
'读取完整设备信息',
'创建完整备份',
'安装 英文/俄文/中文 语言包',
'安装永久SSH',
'安装固件 (从 "firmware" 目录)',
'{{{ 其他功能 }}}',
'更改语言',
'[[ 重启设备 ]]',
'退出'
],
'extended_menu': [
'设置IP地址 (当前值: {})',
'修改root密码',
'读取dmesg和系统日志',
'创建指定分区备份',
'卸载 英文/俄文/中文 语言包',
'设置内核启动地址',
'安装引导程序 (Breed/U-Boot)',
'__测试__',
'[[ 重启设备 ]]',
'返回主菜单'
],
'prompts': {
'select': '请选择: ',
'choice': '请选择: ',
'enter_ip': '请输入设备IP地址: ',
'extended_functions': '(扩展功能)',
'language_menu': 'Language / 语言 / Язык',
'language_prompt': '选择语言 [1-English, 2-中文, 3-Русский]: ',
'bootloader_choice': '选择引导程序 [1-Breed, 2-U-Boot]: '
}
},
'ru': {
'title': 'Xiaomi MiR Patcher',
'main_menu': [
'Установить IP-адрес (текущее значение: {})',
'Подключиться к устройству (установить эксплойт)',
'Читать полную информацию об устройстве',
'Создать полную резервную копию',
'Установить языки EN/RU/ZH',
'Установить постоянный SSH',
'Установить прошивку (из папки "firmware")',
'{{{ Другие функции }}}',
'Изменить язык',
'[[ Перезагрузить устройство ]]',
'Выход'
],
'extended_menu': [
'Установить IP-адрес (текущее значение: {})',
'Изменить пароль root',
'Прочитать dmesg и syslog',
'Создать резервную копию указанного раздела',
'Удалить языки EN/RU/ZH',
'Установить адрес загрузки ядра',
'Установить загрузчик (Breed/U-Boot)',
'__тест__',
'[[ Перезагрузить устройство ]]',
'Вернуться в главное меню'
],
'prompts': {
'select': 'Выбрать: ',
'choice': 'Выбор: ',
'enter_ip': 'Введите IP-адрес устройства: ',
'extended_functions': '(расширенные функции)',
'language_menu': 'Language / 语言 / Язык',
'language_prompt': 'Выберите язык [1-English, 2-中文, 3-Русский]: ',
'bootloader_choice': 'Выберите загрузчик [1-Breed, 2-U-Boot]: '
}
}
}
def get_translation(lang, key, *args):
"""Get translated text for given language and key"""
if lang not in TRANSLATIONS:
lang = 'en' # fallback to English
trans = TRANSLATIONS[lang]
if key in trans:
if isinstance(trans[key], list):
return trans[key]
elif args:
return trans[key].format(*args)
else:
return trans[key]
elif key in trans.get('prompts', {}):
text = trans['prompts'][key]
if args:
return text.format(*args)
return text
else:
# fallback to English only if we're not already using English
if lang != 'en':
return get_translation('en', key, *args)
else:
# If key not found even in English, return a default message
return f"[Missing translation: {key}]"
def get_supported_languages():
"""Get list of supported language codes"""
return list(TRANSLATIONS.keys())