WvdS Internationalization (i18n)
i18n macht Seiteninhalt mehrsprachig, ohne die Seite zu vervielfachen: die Marke schluessel setzt an Ort und Stelle den Text der aktuellen Sprache ein — aus einer CSV-Tabelle, einer Einstellung oder unmittelbar aus der Marke. Gedacht ist das Paket für Autoren, die Menüs, Schaltflächen und Bausteine in mehreren Sprachen führen, und für Vorlagen-Entwickler, die dieselben Texte aus PHP heraus brauchen.
Erste Schritte
Schnelleinstieg: Einen Text zweisprachig ausgeben — der kürzeste Weg zum ersten Ergebnis, in drei Schritten.
Übersetzungstabelle anlegen → Marke auf einer Seite setzen → Sprachwahl prüfen
Häufige Aufgaben
| Was Sie wollen | Für wen | Wo Sie das tun | Anleitung |
|---|---|---|---|
| einen übersetzten Text einsetzen | Autor | Marke schluessel | Übersetzungs-Key |
| eine Übersetzung ohne Tabelle schreiben | Autor | Marke mit Sprachpaaren | Inline-Übersetzung |
| einen Text in einer festen Sprache erzwingen | Autor | Marke mit Sprachangabe | Explizite Sprache |
| einen Konfigurationswert anzeigen | Autor | Marke auf einen Config-Wert | Config-Wert |
| Übersetzungen pflegen | Autor | CSV-Tabelle | CSV-Format |
| verstehen, welche Sprache gewählt wird | alle | – | Spracherkennung |
| dieselben Texte aus PHP verwenden | Entwickler | – | Integration in Vorlagen |
Definition
Das wki18n 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
Startseite Kontakt
Laedt den Wert aus i18n.csv basierend auf der aktuellen Sprache.
Explizite Sprache
Startseite Home
Erzwingt eine bestimmte Sprache, unabhaengig vom Browser.
Inline-Uebersetzung
de:Ja|en:Yes|sl:Da de:Speichern|en:Save|sl:Shrani
Direkte Uebersetzung ohne CSV-Datei.
Config-Wert
conf:title conf:tagline
Liest DokuWiki-Konfiguration mit Mehrsprach-Parsing.
Template-Config
tpl:footerText tpl:topSidebarTitle
Liest Template-Konfiguration mit Mehrsprach-Parsing.
CSV-Format
Die Uebersetzungen werden in lib/plugins/wki18n/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 -
defaultLangKonfiguration
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
===== menu_navigation ===== * [[..:start|Startseite]] * [[..:docs:index|Projekt-Dokumentation]] * [[..:contact|Kontakt]]
Ergebnis (Browser: de):
- Startseite
- Projekt-Dokumentation
- Kontakt
Beispiel 2: Inline in Buttons
<button>de:Absenden|en:Submit|sl:Pošlji</button>
Beispiel 3: Footer mit Template-Config
<footer> tpl:footerText </footer>
Beispiel 4: Explizite Sprache fuer Links
Sprachen: [[..:de:start|Startseite]] |
[[..:en:start|Home]] |
[[..:sl:start|Domov]]
Ergebnis:
- Sprachen: Startseite | Home | Domov
Integration in Templates
PHP-Nutzung
<?php // Helper laden $helper = plugin_load('helper', 'wki18n'); if ($helper) { // Uebersetzung holen echo hsc($helper->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
Such-und-Ersetzen
Alt: {{wk:lang>
Neu: {{wk:i18n>
Alt: {{wk:lang:
Neu: {{wk:i18n:
Versionshinweise
| Version | Datum | Aenderungen |
|---|---|---|
| 1.0.0 | 2026-01-29 | Erstveroeffentlichung (Nachfolger von wvdslang) |
Siehe auch
- WvdS.DokuWiki.Cond Plugin - Bedingte Inhalte und Redirects
- WvdS Snippet Plugin - Wiederverwendbare HTML-Bausteine
- WvdS.DokuWiki.Flat Template - Template mit Sprachwechsler
Technische Referenz
Klasse: syntax_plugin_wki18n
Datei: lib/plugins/wki18n/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_wki18n
Datei: lib/plugins/wki18n/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 |
<wk:audit stack=„doku“ title=„wki18n Plugin“>
<wk:include ref="code:qualitaet" critical="true">[x][x][x][x]</wk:include> <wk:include ref="stacks:dokuwiki-php">[x][x][x][x][x]</wk:include> <wk:include ref="sicherheit:kritis" critical="true">[x][x][x][x][x]</wk:include>
</wk:audit>
DISCUSSION
Paketangaben
Plugin: wki18n
Version: 1.0.0
Namespace: lib/plugins/wki18n/
Autor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Lizenz: GPL 2
wvdslang Plugin.
Die Redirect-Funktionalitaet wurde in das wvdscond Plugin verschoben (Separation of Concerns).