Internationalisierungen

Administratoren

PmWiki unterstützt die Internationalisierung von Netzseiten, erlaubt etwa Buchstaben mit Akzenten oder Umlauten in Seitennamen und bietet fast vollständige Anpassungsmöglichkeiten für PmWiki-Meldungen. Die meisten Anpassungen werden von PmWiki mittels der Funktion XLPage() zu Verfügung gestellt, die einen Satz von Übersetzungsvariablen aus einer Wikiseite lädt, üblicherweise XLPage genannt, die Seite kann aber beliebig umbenannt werden.

Der Rest dieser Seite widmet sich der Installation, Konfiguration und dem Gebrauch der Unterstützung anderer Sprachen. Wenn Sie nach Werkzeugen und Hilfe suchen, um PmWiki in Ihrer Sprache zu lokalisieren oder wie Sie die vorhandene Übersetzung verbessern können, beginnen Sie mit der Seite Localization — dem Übersetzungsportal.

Laden von Übersetzungs-Seiten

Seiten in vielen anderen Sprachen, darunter Französisch, Deutsch, Holländisch und Spanisch, werden in der pmwiki.com Website bereits bereitgestellt und gepflegt. Sie können ein Archiv dieser Übersetzungen von http://pmichaud.com/pub/pmwiki/i18n/ herunterladen. Entpacken Sie einfach das(die) Archiv(e) in das Verzeichnis, das Ihre pmwiki.php-Installation enthält. Jedes Archiv enthält eine Reihe von Dateien, die im wikilib.d/-Verzeichnis gespeichert werden, sowie einige spezielle Skripten für Übersetzungen, die andere Zeichensätze als iso-8859-1 (standardmäßig von PmWiki verwendet) benutzen. Sie können auch den Zeichensatz UTF-8 benutzen.

Für eine deutsche Installation reicht es, die Dateien PmwikiDe.* in das Verzeichnis wikilib.d zu entpacken und hochzuladen.

Nach dem Installieren der Übersetzungs-Seiten aktivieren Sie eine bestimmte Sprache, indem Sie einen Aufruf von XLPage() in Ihre config.php einfügen. Beispielsweise erfolgt das Auswählen der deutschsprachigen Meldungen mittels

include_once("scripts/xlpage-utf-8.php"); # optional
XLPage('de','PmWikiDe.XLPage');

Diese Anweisung lädt die deutschen Übersetzungen ('de') von der Seite PmWikiDe.XLPage. Die "include once"-Zeile wird empfohlen, wenn Sie ein neues Wiki aufsetzen und sie sollte vor der XLPage-Zeile stehen. Für Sprachen mit anderen Alphabeten als dem lateinischen ist die "include once"-Zeile zwingend nötig. Diese Zeilen sollten nahe des Beginns der config.php stehen.

Es ist problemlos möglich, mehrere Übersetzungsseiten zu laden. Wenn Sie also eigene Übersetzungen nutzen wollen, ohne die aus dem i18n-Archiv zu verändern, erzeugen Sie einfach eine neue Seite (siehe unten) und laden Sie. Ihre eigenen Übersetzungen müssen zuerst geladen werden, um Vorrang zu haben:

XLPage('de','PmWikiDe.XLPageLokal');  # meine eigenen Übersetzungen
XLPage('de','PmWikiDe.XLPage');       # aus i18n.tgz

Wenn Sie in Ihrem Wiki mehrere Sprachversionen anbieten und $Title zur Auswahl der Sprache verwenden wollen, benötigen Sie etwas Code in der Anpassungsdatei der Gruppe (siehe $Title). Wenn Ihr Wiki z. B. deutsche und englische Bereiche enthält und die deutschen Seiten in der Gruppe De sind, können Sie eine Datei De.php im Verzeichnis local/ mit folgendem Inhalt erstellen:

<?php if (!defined('PmWiki')) exit();
##wechsle zu deutschen Meldungen
XLPage('de','PmWikiDe.XLPage');

Es bietet sich in diesem Fall an, auch eine Datei PmwikiDe.php gleichen Inhalts zu erstellen, um in der PmWikiDe-Gruppe Zugriff auf die deutsche Dokumentation von PmWiki zu bekommen. En.php ist in diesem Fall nicht nötig, da Englisch die Standardsprache ist.

Als Alternative zur Anpassungsdatei "pro Gruppe" ist auch folgender Code in der config.php möglich, der testet, ob eine XLPage in der Gruppe der angeforderten Seite ist und sie dann lädt:

    
$xlpage = FmtPageName('$Group.XLPage', $pagename);
if (PageExists($xlpage)) XLPage($xlpage, $xlpage);

Danach müssen Sie alle relevanten XLPage-Seiten in jede Gruppe kopieren, die die entsprechende Sprachunterstützung haben soll.

Siehe auch (englisch) Cookbook:MultiLanguage

Neue Übersetzungen erstellen

Wenn für die von Ihnen gewünschte Sprache keine Übersetzungsseiten existieren, ist es einfach, selbst welche zu erstellen! Eine XLPage-Übersetzungsdatei ist eine Datei, die einfach Zeilen der folgenden Form enthält:

   'Ausdruck' => 'übersetzter Ausdruck',

Dabei ist "Ausdruck" eine internationalisierte Phrase (durch $[phrase] gekennzeichnet in PmWiki's $...Fmt Variablen und "übersetzter Ausdruck" ist das, was in Ihrer speziellen Sprache auf den Bildschirm kommt. Beispielsweise wandelt die Zeile (in PmWikiDe.XLPage)

'Search' => 'Suchen',

"$[Search]" bei der Ausgabe in "Suchen" um. Die Datei Lokalisation:XLPageVorlage ist ein guter Ausgangspunkt, um eine neue XLPage-Datei zu erstellen und hat die meisten der PmWiki-Phrasen bereits aufgelistet. Beachten Sie, dass der Übersetzungsmechanismus nur Phrasen übersetzt, die in den $...Fmt-Ausdrücken (der verschiedenen .php-Skripten) als übersetzbar gekennzeichnet sind mdash; es werden keine Wörter übersetzt, die in den Wiki-Formatierungsanweisungen auftauchen.

Wenn Sie neue Versionen von PmWiki-Seiten in anderen Sprachen erstellen, erwägen bitte, sie zu den originalen PmWiki-Seiten hinzuzufügen, so dass sie mittels des i18n-Archives auch anderen zugänglich gemacht werden! Sie sollten auf jeden Fall das Das Lokalisationsportal aufsuchen, um weitere Informationen für eine effektive Internationalisierung von PmWiki zu erhalten.

Anmerkung: Der Ausdruck "i18n" wird üblicherweise als Abkürzung für das englische Wort "internationalization" verwendet. Die Abkürzung kommt daher, dass zwischen dem ersten "i" und dem abschließenden "n" in "internationalization" genau 18 Buchstaben stehen -- und nur wenige PC-Nutzer all diese 18 Buchstaben extra tippen wollen.

Sonderzeichen in WikiLinks ermöglichen

Um Sonderzeichen wie zum Beispiel deutsche Umlaute in WikiLinks zu ermöglichen, muss die "locale"-Einstellung des Servers richtig eingestellt werden, damit PmWiki den passenden Zeichensatzdefinition verwendet.

Falls das wegen beschränktem Zugriff auf die Serverkonfiguration (Hosting) nicht möglich ist, kann PmWiki so eingestellt werden, dass eine bestimmte "locale"-Einstellung aus den XLPage Optionen verwendet wird (siehe XLPageTemplate).

Für deutsche Umlaute ist zum Beispiel erforderlich:

  • 'Locale' => 'deu', <- für Windows-Server, siehe MSDN List of locale identifiers
  • 'Locale' => 'de_DE', <- für Linux-Server; für die UTF-8-Dekodierung müssen Sie eventuell bei einigen Installationen 'de_DE.utf8' oder 'de_DE.UTF-8' setzen.

Hinweis: Die erforderliche "locale" Einstellung kann vom Betriebssystem und der spezifischen Installation abhängen.

<< Wikistile anpassen | Dokumentationsindex | Lokale Einstellungen >>


Wenn mein Wiki internationalisiert ist durch die config.php, wie kehre ich für eine bestimmte Gruppe zu Englisch zurück?

Benutzen Sie das $XLLangs = array('en'); in der Anpassungsdatei der Gruppe ("group customizations").

Wenn mein Wiki in Englisch ist und ich nur eine Seite oder eine Gruppe auf Spanisch haben will, schreibe ich dann XLPage('es','PmWikiEs.XLPage'); in die Gruppen- oder Seitenkonfigurationsdatei?

Ja, das ist gewöhnlich die beste Methode. Wenn Sie das mit vielen verteilten Seiten tun oder mit mehreren Sprachen, finden Sie es vielleicht leichter zu verwalten, wenn Sie die Übersetzungen alle in config.php laden wie hier:

    XLPage('es','PmWikiEs.XLPage');
    XLPage('fr','PmWikiFr.XLPage');
    XLPage('ru','PmWikiRu.XLPage');
    $XLLangs = array('en');

In der Gruppen- oder Seitenkonfigurationsdatei müssen sie dann nur $XLLangs = array('es'); schreiben, um die Sprache einzustellen, die benutzt werden soll (in diesem Beispiel Spanisch).

Anmerkung: Obwohl diese Methode leichter zu verwalten ist, ist sie etwas langsamer, weil jedes Mal alle Übersetzungstabellen für jedes Seitenansehen geladen werden, auch wenn sie nicht gebraucht werden.

Wofür steht der erste Parameter in dieser Funktion? Wie wird er benutzt?

Der XLPage-Mechanismus erlaubt mehrere Übersetzungssätze zu laden, der erste Parameter dient dazu, diesen Satz zu bestimmen.

Angenommen, ich will zum Beispiel Übersetzungen für normales Französisch und kanadisches Französisch haben. Anstatt zwei ganz und gar getrennte Sätze von Seiten zu verwalten, kann ich dies tun:

    XLPage('fr', 'PmWikiFr.XLPage');
    XLPage('fr-ca', 'PmWikiFrCa.XLPage');

PmWikiFr.XLPage würde die ganzen Standardfranzösisch-Übersetzungen enthalten, wohingegen PmWikiFrCA.XLPage nur die kanada-spezifischen Übersetzungen enthalten muss — d. h. jene, die sich von denen aus der französischen Seite unterscheiden.

Der erste Parameter unterscheidet die zwei Sätze der Übersetzungen. Zusätzlich kann ein config.php-Skript die $XLLangs-Variable benutzen, um die Reihenfolge der Übersetzungen einzustellen, wenn es also eine Gruppe oder Seite gibt, wo ich nur die Standardfranzösich-Übersetztung haben möchte, setze ich:

    $XLLangs = array('fr', 'en');

und PmWiki nutzt nur die 'fr'- und 'en'- Übersetzungen (in dieser Reihenfolge), egal, wie viele Übersetzungen mit XLPage() geladen worden sind.

Wie kann ich eine Übersetzung für einen individuellen String in einer PHP-Datei hinzufügen?

Benutzen Sie die XLSDV()-Funktion, um eine Übersetzung für einen bestimmten (englischen) String zu liefern. Zum Beispiel hiermit in der config.php-Datei

    XLSDV('nl', array('my English expression'=>'mijn Nederlandse uitdrukking'));

wird jedes Vorkommen des Variablenausdrucks $[my English expression] im Wikiquelltext im Standardkontext (englisch) als my English expression ausgegeben, aber als mijn Nederlandse uitdrukking in niederländischem (nl) Kontext, z. B. wenn XLPage('nl',...) für jene Seite in der config.php oder einem Kochbuchrezept aufgerufen worden ist.

Wenn Sie eine Übersetzung in einer PHP-Datei erhalten wollen, benutzen Sie die XL()-Funktion:

    $local_string = XL("my English expression");

Aber seien Sie auf der Hut: Die XLPage()-Funktion benutzt intern auch die XLDV()-Funktion für ihre Übersetzungspaare und nur die erste Definition wird akzeptiert. Wenn daher die niederländische XLPage bereits einen Übersetzung für ihren String wie

   'my English expression' => 'bla bla',

besitzt und Sie wollen den überschreiben, müssen sie Ihr XLDV('nl', ...) vor dem Aufruf vom korrespondierenden XLPage('nl',...) benutzen. Andernfalls, durch Benutzen von XLSDV() nach XLPage() — z. B. innerhalb eine Rezeptes, das später in der config.php geladen wird — wird ihre Übersetzung nur funktionieren, solange keiner 'my English expression' in jener XLPage definiert.


Übersetzung von PmWiki.Internationalizations Originalseite auf PmWikiDe.Internationalizations - Rückverweise
Zuletzt geändert:
PmWikiDe.Internationalizations am 10.06.2012
PmWiki.Internationalizations am 25.08.2012