Files
noteshop-webapp/translations.py

133 lines
6.2 KiB
Python

import xml.etree.ElementTree as ET
from typing import List, Dict
def get_standard_items(lang: str) -> List[str]:
"""
Parses the strings.xml file for the given language and returns the
standard shopping list items.
"""
if lang == "de":
filepath = "translations/de/strings.xml"
else:
filepath = "translations/en/strings.xml"
try:
tree = ET.parse(filepath)
root = tree.getroot()
for string_array in root.findall('string-array'):
if string_array.get('name') == 'standard_list_items':
return [item.text for item in string_array.findall('item')]
except (ET.ParseError, FileNotFoundError):
return []
return []
def get_all_translations(lang: str) -> Dict[str, str]:
"""
Returns a dictionary with all UI and notification translations
for the web app.
"""
if lang == "de":
return {
"title": "Geteilte Einkaufsliste",
"placeholder": "Artikel eingeben...",
"add_button": "Hinzufügen",
"add_one_button": "+1",
"notify_button": "Änderungen abschließen & Benachrichtigen",
"sending_notification": "Sende...",
"notification_sent": "Benachrichtigung gesendet!",
"notification_title": "Einkaufsliste aktualisiert",
"empty_list_message": "Die Einkaufsliste ist leer.",
"db_version": "Datenbankversion: {version}",
"db_error": "Datenbankfehler: {error}",
"generic_notification_error": "Fehler beim Senden der Benachrichtigung.",
"example_button_text": "Beispiel",
"info_text_existing": "= ist schon in der Liste",
"info_text_new": "= noch nicht in der Liste",
"admin_panel_title": "Admin Panel",
"create_user_title": "Neuen Benutzer erstellen",
"username_label": "Benutzername",
"password_label": "Passwort",
"is_admin_label": "Ist Admin?",
"create_user_button": "Benutzer erstellen",
"change_password_title": "Passwort ändern",
"current_password_label": "Aktuelles Passwort",
"new_password_label": "Neues Passwort",
"confirm_password_label": "Neues Passwort bestätigen",
"change_password_button": "Passwort ändern",
"manage_users_title": "Benutzer verwalten",
"delete_button": "Löschen",
"logout_button": "Abmelden",
"login_title": "Anmelden",
"login_username_label": "Benutzername",
"login_password_label": "Passwort",
"login_button": "Anmelden",
"user_created_success": "Benutzer '{username}' erfolgreich erstellt.",
"login_error_incorrect": "Benutzername oder Passwort inkorrekt.",
"login_error_generic": "Ein Fehler ist aufgetreten. Bitte erneut versuchen.",
"set_deletion_password_title": "Löschpasswort festlegen",
"deletion_password_placeholder": "Löschpasswort (Optional)",
"set_deletion_password_button": "Passwort festlegen",
"password_set_success": "Passwort erfolgreich festgelegt.",
"delete_password_modal_title": "Löschen bestätigen",
"delete_password_label": "Passwort zur Bestätigung eingeben",
"cancel_button": "Abbrechen",
"password_required": "Passwort erforderlich.",
"incorrect_password": "Falsches Passwort.",
"generic_error": "Ein Fehler ist aufgetreten.",
"admin_permission_required": "Administratorberechtigung zum Löschen von Elementen erforderlich."
}
else: # Fallback to English
return {
"title": "Shared Shopping List",
"placeholder": "Enter item...",
"add_button": "Add",
"add_one_button": "+1",
"notify_button": "Finalize Changes & Notify",
"sending_notification": "Sending...",
"notification_sent": "Notification sent!",
"notification_title": "Shopping List Updated",
"empty_list_message": "The shopping list is empty.",
"db_version": "Database version: {version}",
"db_error": "Database error: {error}",
"generic_notification_error": "Error sending notification.",
"example_button_text": "Example",
"info_text_existing": "= is already on the list",
"info_text_new": "= not yet on the list",
"admin_panel_title": "Admin Panel",
"create_user_title": "Create New User",
"username_label": "Username",
"password_label": "Password",
"is_admin_label": "Is Admin?",
"create_user_button": "Create User",
"change_password_title": "Change Your Password",
"current_password_label": "Current Password",
"new_password_label": "New Password",
"confirm_password_label": "Confirm New Password",
"change_password_button": "Change Password",
"manage_users_title": "Manage Users",
"delete_button": "Delete",
"logout_button": "Logout",
"login_title": "Login",
"login_username_label": "Username",
"login_password_label": "Password",
"login_button": "Login",
"user_created_success": "User '{username}' created successfully.",
"login_error_incorrect": "Incorrect username or password.",
"login_error_generic": "An error occurred. Please try again.",
"set_deletion_password_title": "Set Deletion Password",
"deletion_password_placeholder": "Deletion Password (Optional)",
"set_deletion_password_button": "Set Password",
"password_set_success": "Password set successfully.",
"delete_password_modal_title": "Confirm Deletion",
"delete_password_label": "Enter password to confirm",
"cancel_button": "Cancel",
"password_required": "Password required.",
"incorrect_password": "Incorrect password.",
"generic_error": "An error occurred.",
"admin_permission_required": "Admin permission required to delete items."
}