mirror of
https://github.com/pdxlocations/contact.git
synced 2026-10-31 00:01:57 +01:00
fix No Help Available translation
This commit is contained in:
1 parent
055aaeb633
commit
f39a09646a
5 files changed
+60
-53
No files matched your search
@@ -8,7 +8,9 @@ from typing import List
|
|||||||
from contact.utilities.save_to_radio import save_changes
|
from contact.utilities.save_to_radio import save_changes
|
||||||
import contact.ui.default_config as config
|
import contact.ui.default_config as config
|
||||||
from contact.utilities.config_io import config_export, config_import
|
from contact.utilities.config_io import config_export, config_import
|
||||||
from contact.utilities.control_utils import parse_ini_file, transform_menu_path
|
from contact.utilities.control_utils import transform_menu_path
|
||||||
|
from contact.utilities.i18n import t
|
||||||
|
from contact.utilities.ini_utils import parse_ini_file
|
||||||
from contact.utilities.input_handlers import (
|
from contact.utilities.input_handlers import (
|
||||||
get_repeated_input,
|
get_repeated_input,
|
||||||
get_text_input,
|
get_text_input,
|
||||||
@@ -16,7 +18,6 @@ from contact.utilities.input_handlers import (
|
|||||||
get_list_input,
|
get_list_input,
|
||||||
get_admin_key_input,
|
get_admin_key_input,
|
||||||
)
|
)
|
||||||
from contact.utilities.i18n import t
|
|
||||||
from contact.ui.colors import get_color
|
from contact.ui.colors import get_color
|
||||||
from contact.ui.dialog import dialog
|
from contact.ui.dialog import dialog
|
||||||
from contact.ui.menus import generate_menu_from_protobuf
|
from contact.ui.menus import generate_menu_from_protobuf
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from typing import Any, List, Dict, Optional
|
|||||||
from contact.ui.colors import get_color, setup_colors, COLOR_MAP
|
from contact.ui.colors import get_color, setup_colors, COLOR_MAP
|
||||||
import contact.ui.default_config as config
|
import contact.ui.default_config as config
|
||||||
from contact.ui.nav_utils import move_highlight, draw_arrows, update_help_window
|
from contact.ui.nav_utils import move_highlight, draw_arrows, update_help_window
|
||||||
from contact.utilities.control_utils import parse_ini_file
|
from contact.utilities.ini_utils import parse_ini_file
|
||||||
from contact.utilities.input_handlers import get_list_input
|
from contact.utilities.input_handlers import get_list_input
|
||||||
from contact.utilities.i18n import t
|
from contact.utilities.i18n import t
|
||||||
from contact.utilities.singleton import menu_state
|
from contact.utilities.singleton import menu_state
|
||||||
|
|||||||
@@ -1,55 +1,7 @@
|
|||||||
from typing import Optional, Tuple, Dict, List
|
from typing import List
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
def parse_ini_file(ini_file_path: str) -> Tuple[Dict[str, str], Dict[str, str]]:
|
|
||||||
"""Parses an INI file and returns a mapping of keys to human-readable names and help text."""
|
|
||||||
|
|
||||||
field_mapping: Dict[str, str] = {}
|
|
||||||
help_text: Dict[str, str] = {}
|
|
||||||
current_section: Optional[str] = None
|
|
||||||
|
|
||||||
with open(ini_file_path, "r", encoding="utf-8") as f:
|
|
||||||
for line in f:
|
|
||||||
line = line.strip()
|
|
||||||
|
|
||||||
# Skip empty lines and comments
|
|
||||||
if not line or line.startswith(";") or line.startswith("#"):
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Handle sections like [config.device]
|
|
||||||
if line.startswith("[") and line.endswith("]"):
|
|
||||||
current_section = line[1:-1]
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Parse lines like: key, "Human-readable name", "helptext"
|
|
||||||
parts = [p.strip().strip('"') for p in line.split(",", 2)]
|
|
||||||
if len(parts) >= 2:
|
|
||||||
key = parts[0]
|
|
||||||
|
|
||||||
# If key is 'title', map directly to the section
|
|
||||||
if key == "title":
|
|
||||||
full_key = current_section
|
|
||||||
else:
|
|
||||||
full_key = f"{current_section}.{key}" if current_section else key
|
|
||||||
|
|
||||||
# Use the provided human-readable name or fallback to key
|
|
||||||
human_readable_name = parts[1] if parts[1] else key
|
|
||||||
field_mapping[full_key] = human_readable_name
|
|
||||||
|
|
||||||
# Handle help text or default
|
|
||||||
help = parts[2] if len(parts) == 3 and parts[2] else "No help available."
|
|
||||||
help_text[full_key] = help
|
|
||||||
|
|
||||||
else:
|
|
||||||
# Handle cases with only the key present
|
|
||||||
full_key = f"{current_section}.{key}" if current_section else key
|
|
||||||
field_mapping[full_key] = key
|
|
||||||
help_text[full_key] = "No help available."
|
|
||||||
|
|
||||||
return field_mapping, help_text
|
|
||||||
|
|
||||||
|
|
||||||
def transform_menu_path(menu_path: List[str]) -> List[str]:
|
def transform_menu_path(menu_path: List[str]) -> List[str]:
|
||||||
"""Applies path replacements and normalizes entries in the menu path."""
|
"""Applies path replacements and normalizes entries in the menu path."""
|
||||||
path_replacements = {"Radio Settings": "config", "Module Settings": "module"}
|
path_replacements = {"Radio Settings": "config", "Module Settings": "module"}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import contact.ui.default_config as config
|
import contact.ui.default_config as config
|
||||||
from contact.utilities.control_utils import parse_ini_file
|
from contact.utilities.ini_utils import parse_ini_file
|
||||||
|
|
||||||
_translations = {}
|
_translations = {}
|
||||||
_language = None
|
_language = None
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
from typing import Optional, Tuple, Dict
|
||||||
|
from contact.utilities import i18n
|
||||||
|
|
||||||
|
|
||||||
|
def parse_ini_file(ini_file_path: str) -> Tuple[Dict[str, str], Dict[str, str]]:
|
||||||
|
"""Parses an INI file and returns a mapping of keys to human-readable names and help text."""
|
||||||
|
try:
|
||||||
|
default_help = i18n.t("ui.help.no_help", default="No help available.")
|
||||||
|
except Exception:
|
||||||
|
default_help = "No help available."
|
||||||
|
|
||||||
|
field_mapping: Dict[str, str] = {}
|
||||||
|
help_text: Dict[str, str] = {}
|
||||||
|
current_section: Optional[str] = None
|
||||||
|
|
||||||
|
with open(ini_file_path, "r", encoding="utf-8") as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
# Skip empty lines and comments
|
||||||
|
if not line or line.startswith(";") or line.startswith("#"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Handle sections like [config.device]
|
||||||
|
if line.startswith("[") and line.endswith("]"):
|
||||||
|
current_section = line[1:-1]
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Parse lines like: key, "Human-readable name", "helptext"
|
||||||
|
parts = [p.strip().strip('"') for p in line.split(",", 2)]
|
||||||
|
if len(parts) >= 2:
|
||||||
|
key = parts[0]
|
||||||
|
|
||||||
|
# If key is 'title', map directly to the section
|
||||||
|
if key == "title":
|
||||||
|
full_key = current_section
|
||||||
|
else:
|
||||||
|
full_key = f"{current_section}.{key}" if current_section else key
|
||||||
|
|
||||||
|
# Use the provided human-readable name or fallback to key
|
||||||
|
human_readable_name = parts[1] if parts[1] else key
|
||||||
|
field_mapping[full_key] = human_readable_name
|
||||||
|
|
||||||
|
# Handle help text or default
|
||||||
|
help = parts[2] if len(parts) == 3 and parts[2] else default_help
|
||||||
|
help_text[full_key] = help
|
||||||
|
|
||||||
|
else:
|
||||||
|
# Handle cases with only the key present
|
||||||
|
full_key = f"{current_section}.{key}" if current_section else key
|
||||||
|
field_mapping[full_key] = key
|
||||||
|
help_text[full_key] = default_help
|
||||||
|
|
||||||
|
return field_mapping, help_text
|
||||||
Reference in new issue
Block a user