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 für mehrsprachige Inhalte:
- Übersetzungs-Keys - Aus CSV-Datei
- Inline-Übersetzungen -
de:Text|en:Text - Config-Werte - Mit Mehrsprach-Parsing
- Template-Werte - Mit Mehrsprach-Parsing
Anwendungsfaelle
- Mehrsprachige Navigation - Menu-Texte in verschiedenen Sprachen
- Übersetzbare UI-Elemente - Buttons, Labels, Hinweise
- Template-Integrationen - Sidebar, Footer, Header
- Zentralisierte Übersetzungen - Alle Texte in einer CSV-Datei
Syntax
Übersetzungs-Key
Startseite Kontakt
Lädt den Wert aus der Übersetzungstabelle (siehe CSV-Format) für die aktuelle Sprache.
Explizite Sprache
Startseite Home
Erzwingt eine bestimmte Sprache, unabhängig vom Browser.
Inline-Übersetzung
de:Ja|en:Yes|sl:Da de:Speichern|en:Save|sl:Shrani
Direkte Übersetzung 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
Eigene Übersetzungen gehören in data/wki18n/i18n.csv (genau: <savedir>/wki18n/i18n.csv). Die Datei liegt außerhalb des Plugin-Ordners, übersteht jede Aktualisierung und wird vom Webserver nicht ausgeliefert:
key,de,en,sl menu_home,Startseite,Home,Domov menu_contact,Kontakt,Contact,Kontakt button_save,Speichern,Save,Shrani
Das Plugin bringt in lib/plugins/wki18n/i18n.csv nur wenige allgemeine Schlüssel mit (menu_home, menu_contact, menu_back); diese Datei ersetzt jede Installation. Die eigene Tabelle wird danach gelesen und gewinnt je Schlüssel und Sprache: Eine Zeile dort überschreibt den mitgelieferten Wert in jeder Sprache, die sie füllt; eine leere Zelle lässt ihn stehen. Eine Zeile, die mit # beginnt, ist ein Kommentar.
| Spalte | Beschreibung |
|---|---|
key | Eindeutiger Schlüssel |
de | Deutsche Übersetzung |
en | Englische Übersetzung |
| … | Weitere Sprachen |
Spracherkennung
Die Sprache wird in folgender Reihenfolge ermittelt (helper.php, detectLanguage()):
- Ausdrückliche Wahl des Besuchers -
?lang=slin der Anfrage, sonst die gemerkte Wahl aus einer früheren Anfrage (Cookie). Sie gilt erst nach einem bewussten Klick in einer Sprachwahl; wer nie wählt, merkt davon nichts. - Namespace-Pfad -
de:start→ de - Sprache des öffnenden Fensters - ein Fenster wie der Medien-Dialog behält die Sprache, in der es geöffnet wurde; sie wird nicht gemerkt
- Browser-Header -
Accept-Language: de-DE→ de - DokuWiki-Sprache -
$conf['lang'] - Plugin-Standard -
defaultLangKonfiguration
Jeder Wert wird gegen die Liste languages geprüft; ein Kürzel, das dort nicht steht, wird übergangen.
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) |
Der Standard ist der Wert, den das Plugin mitbringt. Auf dieser Instanz ist languages auf de,en,sl gesetzt.
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 für 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 substition zurück (so schreibt der DokuWiki-Kern den Modus) |
getSort() | Gibt 1 zurück – vor internalmedia (320), damit ... nicht als Medienverweis gelesen wird |
connectTo($mode) | Registriert i18n Pattern |
handle($match, …) | Parst Syntax und extrahiert Content |
render($mode, …) | Gibt übersetzen Text zurück |
Klasse: helper_plugin_wki18n
Datei: lib/plugins/wki18n/helper.php
| Methode | Beschreibung |
|---|---|
get($key, $lang) | Holt Übersetzung für 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 zurück |
getContentDir() | Gibt das Verzeichnis der eigenen Übersetzungstabelle zurück, <savedir>/wki18n |
<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).