133 lines
6.2 KiB
Python
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."
|
|
}
|