====== WvdS.DokuWiki.i18n Plugin ====== **Plugin:** wvdsi18n\\ **Version:** 1.0.0\\ **Namespace:** ''lib/plugins/wvdsi18n/''\\ **Autor:** Wolfgang van der Stille \\ **Lizenz:** GPL 2 ---- **Migration von wvdslang:** Dieses Plugin ersetzt das alte ''wvdslang'' Plugin. Die Redirect-Funktionalitaet wurde in das ''wvdscond'' Plugin verschoben (Separation of Concerns). ---- ===== Definition ===== Das **wvdsi18n** Plugin bietet Internationalisierungs-Funktionen fuer mehrsprachige Inhalte: * **Uebersetzungs-Keys** - Aus CSV-Datei * **Inline-Uebersetzungen** - ''de:Text|en:Text'' * **Config-Werte** - Mit Mehrsprach-Parsing * **Template-Werte** - Mit Mehrsprach-Parsing ===== Anwendungsfaelle ===== * **Mehrsprachige Navigation** - Menu-Texte in verschiedenen Sprachen * **Uebersetzbare UI-Elemente** - Buttons, Labels, Hinweise * **Template-Integrationen** - Sidebar, Footer, Header * **Zentralisierte Uebersetzungen** - Alle Texte in einer CSV-Datei ---- ===== Syntax ===== ==== Uebersetzungs-Key ==== {{wvds:i18n>menu_home}} {{wvds:i18n>menu_contact}} Laedt den Wert aus ''i18n.csv'' basierend auf der aktuellen Sprache. ==== Explizite Sprache ==== {{wvds:i18n:de>menu_home}} {{wvds:i18n:en>menu_home}} Erzwingt eine bestimmte Sprache, unabhaengig vom Browser. ==== Inline-Uebersetzung ==== {{wvds:i18n>de:Ja|en:Yes|sl:Da}} {{wvds:i18n>de:Speichern|en:Save|sl:Shrani}} Direkte Uebersetzung ohne CSV-Datei. ==== Config-Wert ==== {{wvds:i18n>conf:title}} {{wvds:i18n>conf:tagline}} Liest DokuWiki-Konfiguration mit Mehrsprach-Parsing. ==== Template-Config ==== {{wvds:i18n>tpl:footerText}} {{wvds:i18n>tpl:topSidebarTitle}} Liest Template-Konfiguration mit Mehrsprach-Parsing. ---- ===== CSV-Format ===== Die Uebersetzungen werden in ''lib/plugins/wvdsi18n/i18n.csv'' gespeichert: key,de,en,sl,it,hr menu_home,Startseite,Home,Domov,Home,Pocetna menu_contact,Kontakt,Contact,Kontakt,Contatto,Kontakt button_save,Speichern,Save,Shrani,Salva,Spremi ^ Spalte ^ Beschreibung ^ | ''key'' | Eindeutiger Schluessel | | ''de'' | Deutsche Uebersetzung | | ''en'' | Englische Uebersetzung | | ... | Weitere Sprachen | ---- ===== Spracherkennung ===== Die Sprache wird in folgender Reihenfolge ermittelt: - **Namespace-Pfad** - ''de:start'' → de - **Browser-Header** - ''Accept-Language: de-DE'' → de - **DokuWiki-Sprache** - ''$conf['lang']'' - **Plugin-Standard** - ''defaultLang'' Konfiguration ---- ===== Konfiguration ===== ^ Option ^ Standard ^ Beschreibung ^ | ''enabled'' | 1 | Plugin aktivieren | | ''languages'' | de,en,sl,it,hr | Verfuegbare Sprachen | | ''defaultLang'' | en | Standard-Sprache (Fallback) | | ''langPosition'' | 0 | Sprach-Position im Namespace (0 = erste Ebene) | ---- ===== Beispiele ===== ==== Beispiel 1: Navigation ==== ===== {{wvds:i18n>menu_navigation}} ===== * [[.:start|{{wvds:i18n>menu_home}}]] * [[.:docs:index|{{wvds:i18n>menu_docs}}]] * [[.:contact|{{wvds:i18n>menu_contact}}]] **Ergebnis (Browser: de):** * Startseite * Projekt-Dokumentation * Kontakt ==== Beispiel 2: Inline in Buttons ==== ==== Beispiel 3: Footer mit Template-Config ====
{{wvds:i18n>tpl:footerText}}
==== Beispiel 4: Explizite Sprache fuer Links ==== Sprachen: [[.:de:start|{{wvds:i18n:de>menu_home}}]] | [[.:en:start|{{wvds:i18n:en>menu_home}}]] | [[.:sl:start|{{wvds:i18n:sl>menu_home}}]] **Ergebnis:** * Sprachen: Startseite | Home | Domov ---- ===== Integration in Templates ===== ==== PHP-Nutzung ==== get('menu_home')); // Explizite Sprache echo hsc($helper->get('menu_home', 'en')); // Inline parsen echo hsc($helper->parseMultilang('de:Ja|en:Yes')); // Template-Config echo hsc($helper->getTplConfig('footerText')); } ?> ---- ===== Migration von wvdslang ===== ^ Alt (wvdslang) ^ Neu (wvdsi18n) ^ Status ^ | ''{{wvds:lang>key}}'' | ''{{wvds:i18n>key}}'' | Syntax geaendert | | ''{{wvds:lang:de>key}}'' | ''{{wvds:i18n:de>key}}'' | Syntax geaendert | | ''{{wvds:lang>de:X|en:Y}}'' | ''{{wvds:i18n>de:X|en:Y}}'' | Syntax geaendert | | ''{{wvds:redirect>...}}'' | ''{{wvds:redirect ...}}'' | Zu wvdscond verschoben | ==== Such-und-Ersetzen ==== Alt: {{wvds:lang> Neu: {{wvds:i18n> Alt: {{wvds:lang: Neu: {{wvds:i18n: ---- ===== Versionshinweise ===== ^ Version ^ Datum ^ Aenderungen ^ | 1.0.0 | 2026-01-29 | Erstveroeffentlichung (Nachfolger von wvdslang) | ---- ===== Siehe auch ===== * [[.:wvdscond]] - Bedingte Inhalte und Redirects * [[.:wvdssnippet]] - Wiederverwendbare HTML-Bausteine * [[.:flat]] - Template mit Sprachwechsler ---- ===== Technische Referenz ===== ==== Klasse: syntax_plugin_wvdsi18n ==== **Datei:** ''lib/plugins/wvdsi18n/syntax.php'' ^ Methode ^ Beschreibung ^ | ''getType()'' | Gibt ''substitution'' zurück | | ''getSort()'' | Gibt ''100'' zurueck | | ''connectTo($mode)'' | Registriert i18n Pattern | | ''handle($match, ...)'' | Parst Syntax und extrahiert Content | | ''render($mode, ...)'' | Gibt uebersetzen Text zurueck | ==== Klasse: helper_plugin_wvdsi18n ==== **Datei:** ''lib/plugins/wvdsi18n/helper.php'' ^ Methode ^ Beschreibung ^ | ''get($key, $lang)'' | Holt Uebersetzung fuer Key | | ''parseMultilang($value, $lang)'' | Parst ''de:X|en:Y'' Format | | ''getConfig($key, $lang)'' | Holt DokuWiki-Config mit Parsing | | ''getTplConfig($key, $lang)'' | Holt Template-Config mit Parsing | | ''detectLanguage()'' | Erkennt aktuelle Sprache | | ''getLanguages()'' | Gibt konfigurierte Sprachen zurueck | ---- [x][x][x][x] [x][x][x][x][x] [x][x][x][x][x] ~~DISCUSSION~~