Enhance the self-contained module architecture with locale/translation support:
ModuleDefinition changes:
- Add locales_path attribute for module-specific translations
- Add get_locales_dir() helper method
- Include locales in validate_structure() check
i18n module changes (app/utils/i18n.py):
- Add get_module_locale_dirs() to discover module locales
- Update load_translations() to merge module translations with core
- Module translations namespaced under module code (e.g., cms.title)
- Add _deep_merge() helper for nested dictionary merging
- Add _load_json_file() helper for cleaner JSON loading
CMS module locales:
- Add app/modules/cms/locales/ with translations for all 4 languages
- en.json, fr.json, de.json, lb.json with CMS-specific strings
- Covers: pages, page editing, SEO, navigation, publishing, homepage
sections, media library, themes, actions, and messages
Usage in templates:
{{ _("cms.title") }} -> "Content Management" (en)
{{ _("cms.pages.create") }} -> "Créer une page" (fr)
{{ _("cms.publishing.draft") }} -> "Entwurf" (de)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
127 lines
4.3 KiB
JSON
127 lines
4.3 KiB
JSON
{
|
|
"title": "Content-Verwaltung",
|
|
"description": "Verwalten Sie Inhaltsseiten, Medienbibliothek und Händler-Themes",
|
|
"pages": {
|
|
"title": "Inhaltsseiten",
|
|
"subtitle": "Verwalten Sie Plattform- und Händler-Inhaltsseiten",
|
|
"create": "Seite erstellen",
|
|
"edit": "Seite bearbeiten",
|
|
"delete": "Seite löschen",
|
|
"list": "Alle Seiten",
|
|
"empty": "Keine Seiten gefunden",
|
|
"empty_search": "Keine Seiten entsprechen Ihrer Suche",
|
|
"create_first": "Erste Seite erstellen"
|
|
},
|
|
"page": {
|
|
"title": "Seitentitel",
|
|
"slug": "Slug",
|
|
"slug_help": "URL-sichere Kennung (Kleinbuchstaben, Zahlen, Bindestriche)",
|
|
"content": "Inhalt",
|
|
"content_format": "Inhaltsformat",
|
|
"format_html": "HTML",
|
|
"format_markdown": "Markdown",
|
|
"platform": "Plattform",
|
|
"vendor_override": "Händler-Überschreibung",
|
|
"vendor_override_none": "Keine (Plattform-Standard)",
|
|
"vendor_override_help_default": "Dies ist eine plattformweite Standardseite",
|
|
"vendor_override_help_vendor": "Diese Seite überschreibt den Standard nur für den ausgewählten Händler"
|
|
},
|
|
"tiers": {
|
|
"platform": "Plattform-Marketing",
|
|
"vendor_default": "Händler-Standard",
|
|
"vendor_override": "Händler-Überschreibung"
|
|
},
|
|
"seo": {
|
|
"title": "SEO & Metadaten",
|
|
"meta_description": "Meta-Beschreibung",
|
|
"meta_description_help": "Zeichen (150-160 empfohlen)",
|
|
"meta_keywords": "Meta-Schlüsselwörter",
|
|
"meta_keywords_placeholder": "schlüsselwort1, schlüsselwort2, schlüsselwort3"
|
|
},
|
|
"navigation": {
|
|
"title": "Navigation & Anzeige",
|
|
"display_order": "Anzeigereihenfolge",
|
|
"display_order_help": "Niedriger = zuerst",
|
|
"show_in_header": "Im Header anzeigen",
|
|
"show_in_footer": "Im Footer anzeigen",
|
|
"show_in_legal": "Im Rechtsbereich anzeigen",
|
|
"show_in_legal_help": "Untere Leiste neben dem Copyright"
|
|
},
|
|
"publishing": {
|
|
"published": "Veröffentlicht",
|
|
"draft": "Entwurf",
|
|
"publish_help": "Diese Seite öffentlich sichtbar machen"
|
|
},
|
|
"homepage": {
|
|
"title": "Startseiten-Abschnitte",
|
|
"subtitle": "Mehrsprachiger Inhalt",
|
|
"loading": "Abschnitte werden geladen...",
|
|
"hero": {
|
|
"title": "Hero-Abschnitt",
|
|
"badge_text": "Badge-Text",
|
|
"main_title": "Titel",
|
|
"subtitle": "Untertitel",
|
|
"buttons": "Schaltflächen",
|
|
"add_button": "Schaltfläche hinzufügen"
|
|
},
|
|
"features": {
|
|
"title": "Funktionen-Abschnitt",
|
|
"section_title": "Abschnittstitel",
|
|
"cards": "Funktionskarten",
|
|
"add_card": "Karte hinzufügen",
|
|
"icon": "Icon-Name",
|
|
"feature_title": "Titel",
|
|
"feature_description": "Beschreibung"
|
|
},
|
|
"pricing": {
|
|
"title": "Preise-Abschnitt",
|
|
"section_title": "Abschnittstitel",
|
|
"use_tiers": "Abonnement-Stufen aus der Datenbank verwenden",
|
|
"use_tiers_help": "Wenn aktiviert, werden Preiskarten dynamisch aus Ihrer Abonnement-Stufenkonfiguration abgerufen."
|
|
},
|
|
"cta": {
|
|
"title": "Call-to-Action-Abschnitt",
|
|
"main_title": "Titel",
|
|
"subtitle": "Untertitel",
|
|
"buttons": "Schaltflächen",
|
|
"add_button": "Schaltfläche hinzufügen"
|
|
}
|
|
},
|
|
"media": {
|
|
"title": "Medienbibliothek",
|
|
"upload": "Hochladen",
|
|
"upload_file": "Datei hochladen",
|
|
"delete": "Löschen",
|
|
"empty": "Keine Mediendateien",
|
|
"upload_first": "Laden Sie Ihre erste Datei hoch"
|
|
},
|
|
"themes": {
|
|
"title": "Händler-Themes",
|
|
"subtitle": "Verwalten Sie Händler-Theme-Anpassungen"
|
|
},
|
|
"actions": {
|
|
"save": "Speichern",
|
|
"saving": "Speichern...",
|
|
"update": "Seite aktualisieren",
|
|
"create": "Seite erstellen",
|
|
"cancel": "Abbrechen",
|
|
"back_to_list": "Zurück zur Liste",
|
|
"preview": "Vorschau",
|
|
"revert_to_default": "Auf Standard zurücksetzen"
|
|
},
|
|
"messages": {
|
|
"created": "Seite erfolgreich erstellt",
|
|
"updated": "Seite erfolgreich aktualisiert",
|
|
"deleted": "Seite erfolgreich gelöscht",
|
|
"reverted": "Auf Standardseite zurückgesetzt",
|
|
"error_loading": "Fehler beim Laden der Seite",
|
|
"error_saving": "Fehler beim Speichern der Seite",
|
|
"confirm_delete": "Sind Sie sicher, dass Sie diese Seite löschen möchten?"
|
|
},
|
|
"filters": {
|
|
"all_pages": "Alle Seiten",
|
|
"all_platforms": "Alle Plattformen",
|
|
"search_placeholder": "Seiten suchen..."
|
|
}
|
|
}
|