Fix language selection issue - now shows language menu on first run

Co-authored-by: longzheng268 <38132402+longzheng268@users.noreply.github.com>
pull/116/head
copilot-swe-agent[bot] 1 month ago
parent 89ea36f2ce
commit b410feddd2

@ -16,6 +16,7 @@ TRANSLATIONS = {
'Install permanent SSH', 'Install permanent SSH',
'Install firmware (from directory "firmware")', 'Install firmware (from directory "firmware")',
'{{{ Other functions }}}', '{{{ Other functions }}}',
'Change language',
'[[ Reboot device ]]', '[[ Reboot device ]]',
'Exit' 'Exit'
], ],
@ -52,6 +53,7 @@ TRANSLATIONS = {
'安装永久SSH', '安装永久SSH',
'安装固件 (从 "firmware" 目录)', '安装固件 (从 "firmware" 目录)',
'{{{ 其他功能 }}}', '{{{ 其他功能 }}}',
'更改语言',
'[[ 重启设备 ]]', '[[ 重启设备 ]]',
'退出' '退出'
], ],
@ -88,6 +90,7 @@ TRANSLATIONS = {
'Установить постоянный SSH', 'Установить постоянный SSH',
'Установить прошивку (из папки "firmware")', 'Установить прошивку (из папки "firmware")',
'{{{ Другие функции }}}', '{{{ Другие функции }}}',
'Изменить язык',
'[[ Перезагрузить устройство ]]', '[[ Перезагрузить устройство ]]',
'Выход' 'Выход'
], ],

@ -28,6 +28,10 @@ def save_config(config):
def get_language(): def get_language():
"""Get current language setting""" """Get current language setting"""
config = load_config() config = load_config()
# Return None if no config file exists or no language is set
# This will trigger the language selection menu
if not os.path.exists(CONFIG_FILE) or 'language' not in config:
return None
return config.get('language', 'en') return config.get('language', 'en')
def set_language(lang): def set_language(lang):

@ -16,7 +16,7 @@ gw = gateway.Gateway(detect_device = False, detect_ssh = False)
# Check for language preference or show language menu # Check for language preference or show language menu
current_lang = lang_config.get_language() current_lang = lang_config.get_language()
if current_lang not in i18n.get_supported_languages(): if current_lang is None or current_lang not in i18n.get_supported_languages():
current_lang = lang_config.show_language_menu() current_lang = lang_config.show_language_menu()
def get_header(delim, suffix = ''): def get_header(delim, suffix = ''):
@ -35,7 +35,7 @@ def menu1_show():
if i == 1: # IP address item needs formatting if i == 1: # IP address item needs formatting
print(' {} - {}'.format(i, item.format(gw.ip_addr))) print(' {} - {}'.format(i, item.format(gw.ip_addr)))
else: else:
print(' {} - {}'.format(i if i <= 9 else 0, item)) print(' {} - {}'.format(i if i <= 10 else 0, item))
def menu1_process(id): def menu1_process(id):
if id == 1: if id == 1:
@ -49,7 +49,8 @@ def menu1_process(id):
if id == 6: return "install_ssh.py" if id == 6: return "install_ssh.py"
if id == 7: return "install_fw.py" if id == 7: return "install_fw.py"
if id == 8: return "__menu2" if id == 8: return "__menu2"
if id == 9: return "reboot.py" if id == 9: return "__change_language"
if id == 10: return "reboot.py"
if id == 0: sys.exit(0) if id == 0: sys.exit(0)
return None return None
@ -127,6 +128,12 @@ def menu():
if cmd == '__menu2': if cmd == '__menu2':
level = 2 level = 2
continue continue
if cmd == '__change_language':
# Show language menu and restart with new language
global current_lang
current_lang = lang_config.show_language_menu()
level = 1
continue
#print("cmd2 =", cmd) #print("cmd2 =", cmd)
if isinstance(cmd, str): if isinstance(cmd, str):
result = subprocess.run([sys.executable, cmd]) result = subprocess.run([sys.executable, cmd])

Loading…
Cancel
Save