diff --git a/contact/localisations/en.ini b/contact/localisations/en.ini index 01a4e59..dfc477c 100644 --- a/contact/localisations/en.ini +++ b/contact/localisations/en.ini @@ -1,4 +1,19 @@ #field_name, "Human readable field name with first word capitalized", "Help text with [warning]warnings[/warning], [note]notes[/note], [underline]underlines[/underline], \033[31mANSI color codes\033[0m and \nline breaks." +Main Menu, "Main Menu", "" +User Settings, "User Settings", "" +Channels, "Channels", "" +Radio Settings, "Radio Settings", "" +Module Settings, "Module Settings", "" +App Settings, "App Settings", "" +Export Config File, "Export Config File", "" +Load Config File, "Load Config File", "" +Config URL, "Config URL", "" +Reboot, "Reboot", "" +Reset Node DB, "Reset Node DB", "" +Shutdown, "Shutdown", "" +Factory Reset, "Factory Reset", "" +Exit, "Exit", "" + [User Settings] user, "User" longName, "Node long name", "If you are a licensed HAM operator and have enabled HAM mode, this must be set to your HAM operator call sign." diff --git a/contact/localisations/ru.ini b/contact/localisations/ru.ini index 236c72b..f2c402b 100644 --- a/contact/localisations/ru.ini +++ b/contact/localisations/ru.ini @@ -1,4 +1,19 @@ #field_name, "Human readable field name with first word capitalized", "Help text with [warning]warnings[/warning], [note]notes[/note], [underline]underlines[/underline], \033[31mANSI color codes\033[0m and \nline breaks." +Main Menu, "Главное меню", "" +User Settings, "Настройки пользователя", "" +Channels, "Каналы", "" +Radio Settings, "Настройки радио", "" +Module Settings, "Настройки модулей", "" +App Settings, "Настройки приложения", "" +Export Config File, "Экспорт конфигурации", "" +Load Config File, "Загрузить конфигурацию", "" +Config URL, "URL конфигурации", "" +Reboot, "Перезагрузить", "" +Reset Node DB, "Сбросить БД узлов", "" +Shutdown, "Выключить", "" +Factory Reset, "Сброс до заводских", "" +Exit, "Выход", "" + [User Settings] user, "Пользователь" longName, "Полное имя ноды", "Если вы являетесь лицензированным оператором HAM и включили режим HAM, этот режим должен быть установлен в качестве позывного вашего оператора HAM." diff --git a/contact/ui/control_ui.py b/contact/ui/control_ui.py index 0f3a2fa..5673e02 100644 --- a/contact/ui/control_ui.py +++ b/contact/ui/control_ui.py @@ -60,6 +60,21 @@ def reload_translations() -> None: field_mapping, help_text = parse_ini_file(translation_file) +def get_translated_header(menu_path: List[str]) -> str: + if not menu_path: + return "" + + transformed_path = transform_menu_path(menu_path) + translated_parts = [] + for idx, part in enumerate(menu_path): + if idx == 0: + translated_parts.append(field_mapping.get(part, part)) + continue + full_key = ".".join(transformed_path[:idx]) + translated_parts.append(field_mapping.get(full_key, part)) + return " > ".join(translated_parts) + + def display_menu() -> tuple[object, object]: # if help_win: # min_help_window_height = 6 @@ -92,7 +107,7 @@ def display_menu() -> tuple[object, object]: menu_pad = curses.newpad(len(menu_state.current_menu) + 1, w - 8) menu_pad.bkgd(get_color("background")) - header = " > ".join(word.title() for word in menu_state.menu_path) + header = get_translated_header(menu_state.menu_path) if len(header) > w - 4: header = header[: w - 7] + "..." menu_win.addstr(1, 2, header, get_color("settings_breadcrumbs", bold=True)) diff --git a/contact/ui/user_config.py b/contact/ui/user_config.py index 3e19d73..4328813 100644 --- a/contact/ui/user_config.py +++ b/contact/ui/user_config.py @@ -64,6 +64,21 @@ def get_app_settings_help_path_parts(menu_path: List[str]) -> List[str]: return parts +def get_app_settings_header(menu_path: List[str]) -> str: + if not menu_path: + return "" + translated_parts = [] + for idx, part in enumerate(menu_path): + if idx == 0: + translated_parts.append(field_mapping.get(part, part)) + continue + if part in ("Main Menu", "App Settings"): + continue + full_key = ".".join(get_app_settings_path_parts(menu_path[: idx + 1])) + translated_parts.append(lookup_app_settings_label(full_key, part)) + return " > ".join(translated_parts) + + # Compute an effective width that fits the current terminal def get_effective_width() -> int: # Leave space for borders; ensure a sane minimum @@ -237,7 +252,7 @@ def display_menu() -> tuple[Any, Any, List[str]]: menu_pad.bkgd(get_color("background")) # Display the menu path - header = " > ".join(menu_state.menu_path) + header = get_app_settings_header(menu_state.menu_path) if len(header) > w - 4: header = header[: w - 7] + "..." menu_win.addstr(1, 2, header, get_color("settings_breadcrumbs", bold=True))