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.

197 lines
9.7 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]: '
},
'messages': {
'firmware_downgrade_title': 'FIRMWARE DOWNGRADE SUGGESTION:',
'firmware_downgrade_be3600': 'If exploits are not working on your BE3600 router, please\ndowngrade to firmware version 1.0.68 or older.',
'firmware_downgrade_tutorial': 'Firmware downgrade tutorial:\nhttps://github.com/uyez/lyq/releases/tag/be3600',
'firmware_downgrade_tool': 'You can use the Xiaomi Router Repair Tool for downgrade.',
'exploit_failed_title': 'EXPLOIT FAILED:',
'exploit_failed_message': 'All available exploits failed to work on this device.\nThis may be due to newer firmware versions that have\npatched the vulnerabilities.',
'exploit_failed_suggestion': 'Consider checking for alternative firmware versions\nor contact the community for device-specific solutions.'
}
},
'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]: '
},
'messages': {
'firmware_downgrade_title': '固件降级建议:',
'firmware_downgrade_be3600': '如果漏洞利用在您的BE3600路由器上不工作\n降级到固件版本1.0.68或更旧版本。',
'firmware_downgrade_tutorial': '固件降级教程:\nhttps://github.com/uyez/lyq/releases/tag/be3600',
'firmware_downgrade_tool': '您可以使用小米路由器修复工具进行降级。',
'exploit_failed_title': '漏洞利用失败:',
'exploit_failed_message': '所有可用的漏洞利用都无法在此设备上工作。\n这可能是由于较新的固件版本已修补了\n这些漏洞。',
'exploit_failed_suggestion': '请考虑检查替代固件版本\n或联系社区获取设备特定解决方案。'
}
},
'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]: '
},
'messages': {
'firmware_downgrade_title': 'ПРЕДЛОЖЕНИЕ ПОНИЖЕНИЯ ВЕРСИИ ПРОШИВКИ:',
'firmware_downgrade_be3600': 'Если эксплойты не работают на вашем роутере BE3600, пожалуйста\nпонизьте версию прошивки до 1.0.68 или старше.',
'firmware_downgrade_tutorial': 'Руководство по понижению версии прошивки:\nhttps://github.com/uyez/lyq/releases/tag/be3600',
'firmware_downgrade_tool': 'Вы можете использовать инструмент восстановления роутера Xiaomi для понижения версии.',
'exploit_failed_title': 'ЭКСПЛОЙТ НЕ СРАБОТАЛ:',
'exploit_failed_message': 'Все доступные эксплойты не смогли работать на этом устройстве.\nЭто может быть связано с более новыми версиями прошивки,\nкоторые исправили уязвимости.',
'exploit_failed_suggestion': 'Рассмотрите возможность проверки альтернативных версий прошивки\nили обратитесь к сообществу за решениями для конкретного устройства.'
}
}
}
def get_translation(lang, key, subkey=None, *args):
"""Get translated text for given language and key"""
if lang not in TRANSLATIONS:
lang = 'en' # fallback to English
trans = TRANSLATIONS[lang]
# Handle nested dictionary lookup
if subkey:
if key in trans and isinstance(trans[key], dict) and subkey in trans[key]:
text = trans[key][subkey]
if args:
return text.format(*args)
return text
# fallback to English
elif lang != 'en' and key in TRANSLATIONS['en'] and isinstance(TRANSLATIONS['en'][key], dict) and subkey in TRANSLATIONS['en'][key]:
text = TRANSLATIONS['en'][key][subkey]
if args:
return text.format(*args)
return text
else:
return f"{key}.{subkey}" # fallback key
# Handle normal key lookup
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, subkey, *args)
else:
# If key not found even in English, return a default message
if subkey:
return f"[Missing translation: {key}.{subkey}]"
else:
return f"[Missing translation: {key}]"
def get_supported_languages():
"""Get list of supported language codes"""
return list(TRANSLATIONS.keys())