Shop Projekt - Dokumentation
Shop LDM
Teil 01: Labels
Dieses Modul verwaltet die Mehrsprachigkeit und Textbausteine des Shops.
Anstatt Texte direkt im Code zu speichern, werden Label-Keys definiert, die sprachspezifische Übersetzungen enthalten.
- language: Hält die unterstützten Sprachen (z. B. Deutsch, English, Français).
- label_key: Enthält eindeutige Schlüssel für Textelemente (z. B. Buttons, Fehlermeldungen).
- label: Enthält die konkrete Übersetzung eines label_key pro Sprache.
- text: Enthält die konkrete Übersetzung der Texte
- page: Definiert Shop-Seiten wie Checkout, Profil, Startseite.
- lp_content: Verknüpft LabelKeys mit bestimmten Seiten, falls sie nicht global gelten.
Es erlaubt, die Shop-Oberfläche dynamisch in beliebigen Sprachen auszugeben und Texte jederzeit anzupassen, ohne den Code ändern zu müssen.
Language (Sprachen)
Zweck: Basis-Tabelle für unterstützte Sprachen.
Felder:
- lan_ID (PK)
- lan_key VARCHAR(5) UNIQUE -- Sprachcode (z. B. 'DE', 'EN')
- lan_name VARCHAR(50) -- Anzeigename (z. B. 'Deutsch', 'English', 'Français')Label Key (Label-Schlüssel)
Zweck: Eindeutige Kennung für Texte. Unterstützt Gruppierungen und globale Gültigkeit.
Felder:
- lky_ID (PK)
- lky_key VARCHAR(50) UNIQUE -- Schlüsselname für ein Label
- lky_group VARCHAR(200) -- Gruppierung (z.B. 'nav', 'btn')
- lky_is_global BOOLEAN -- 1 = global (seitenunabhängig), 0 = seitengebunden
Trigger: global oder Seiten gebunden
Hinweis: für die key ist empfehlenswert Präfix zu benutzenLabel (Kurztexte)
Zweck: Speichert Übersetzungen für UI-Labels (z.B. Buttons, Menüs).
Felder:
- lab_ID (PK)
- lan_ID (FK → language.lan_ID)
- lky_ID (FK → label_key.lky_ID)
- lab_value TEXT -- z. B. 'In den Warenkorb', 'Add to cart'
- UNIQUE(lky_ID, lan_ID) -- ein LabelKey pro Sprache nur einmalText (Langtexte)
Zweck: Wie tb_label, jedoch für umfangreiche Inhalte (LONGTEXT) wie Beschreibungen.
Felder:
- tex_ID (PK)
- lan_ID (FK → language.lan_ID)
- lky_ID (FK → label_key.lky_ID) -- Ich verwende hier den Rest der label Struktur
- tex_value LONGTEXT -- z. B. AGB-Absätze, Hilfe Text
- UNIQUE (lky_ID, lan_ID) -- ein LabelKey pro Sprache nur einmalPage (Seiten-Definition)
Zweck: Definiert die verschiedenen Seiten der Webanwendung. Muss identisch zu den globalen Seitenkonstanten sein.
Felder:
- pag_ID (PK)
- pag_key VARCHAR(100) UNIQUE -- eindeutiger Schlüssel für die Seite (z. B. 'checkout', 'profile')lp_content (Verbindung)
Zweck: Verknüpft LabelKeys mit bestimmten Seiten, falls sie nicht global gelten.
Felder:
- lky_ID (PK, FK → label_key.lky_ID)
- pag_ID (PK, FK → page.pag_ID)
Hinweis: Nur für label_key ohne globaltrg_labelkey_global_check Trigger
Auslöser: Vor dem Einfügen in tb_lp_content
Prozess:
1. Überprüfen, ob der LabelKey global ist
2. Wenn global, Einfügen verhindern
Ausgabe:
- Fehlermeldung, wenn globaler LabelKey eingefügt wirdvw_label_export View
Zweck: Konsolidierte Ansicht für die Label-Keys mit ihren Übersetzungen und zugeordneten Seiten.
Felder:
- lky_ID LabelKey
- lky_key LabelKey -- Schlüsselname für ein Label
- lky_group LabelKey -- Gruppierung (z.B. 'nav', 'btn')
- lky_is_global LabelKey -- 1 = global, 0 = seitengebunden
- lan_ID Sprache
- pag_IDs Seite -- Komma-separierte Liste aller zugeordneten Seiten-IDs
- label_value Label -- Endgültiger Textwert nach Fallback-Logikvw_pages View
Zweck: Konsolidierte Ansicht für die Seiten mit ihren sprachspezifischen Namen.
Felder:
- lan_ID Sprache
- pag_ID Seite
- pag_key Seite -- Eindeutiger Schlüssel der Seite
- pag_name Seite -- Sprachspezifischer Name der Seite oder pag_key als Fallback