Home

PmWiki

pmwiki.org

edit SideBar

Internationalisierungen

Administratoren

PmWiki unterstützt die Internationalisierung von Netzseiten, erlaubt etwa Buchstaben mit Akzent 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 (üblicherweise XLPage genannt, die Seite kann aber beliebig umbenannt werden) lädt.

Der Rest der 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 dir Seite Localization? — dem Übersetzungsportal.

Laden von Übersetzungs-Seiten

Seiten in vielen Sprachen?, darunter Französisch, Deutsch, Holländisch und Spanisch, wurden in der pmwiki.com Website bereits erstellt und gepflegt. Du kannst ein Archiv dieser Übersetzungen von http://pmichaud.com/pub/pmwiki/i18n/ herunterladen. Entpacke einfach das Archiv in das Verzeichnis, das Deine pmwiki.php-Installation enthält. Das Archiv enthält eine Reihe von Dateien, die im wikilib.d/-Verzeichnis abgespeichert werden, sowie einige spezielle Skripte für Übersetzungen, die andere Zeichensätze als iso-8859-1 (standardmäßig von PmWiki verwendet) 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 aktivierst Du eine bestimmte Sprache, indem Du einen Aufruf von XLPage() in Deine config.php einfügst. Beispielsweise erfolgt das Auswählen der deutschsprachigen Meldungen mittels

    XLPage('de','PmWikiDe.XLPage');

diese Anweisung lädt die deutschen Übersetzungen ('de') von der Seite PmWikiDe.XLPage. Es ist problemlos möglich, mehrere Übersetzungsseiten zu laden. Wenn Du also eigene Übersetzungen nutzen willst, ohne die aus dem i18n-Archiv zu verändern, erzeuge einfach eine neue Seite (siehe unten) und lade sie hinterher. Deine 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 Du in Deinem Wiki mehrere Sprachversionen anbieten und $Title zur Auswahl der Sprache verwenden willst, benötigst Du etwas Code in der Anpassungsdatei der Gruppe (siehe $Title). Wenn Dein Wiki z.B. deutsche und englische Bereiche enthält, und die deutschen Seiten in der Gruppe De sind, kannst Du 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 auch für die deutsche Dokumentation von PmWiki die deutschen Sprachanpassungen zu verwenden.

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 kannst Du die entsprechende XLPage in jede Gruppe kopieren, die die entsprechende Sprachunterstützung haben soll.

Siehe auch (englisch) Cookbook:MultiLanguage

Neue Übersetzungen erstellen

Wenn für die von Dir 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] markiert in PmWiki's $...Fmt Variablen und "übersetzter Ausdruck" ist das, was in Deiner speziellen Sprache auf den Bildschirm kommt. Beispielsweise wandelt die Zeile (in PmWikiDe.XLPage)

'Search' => 'Suchen',

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

Wenn Du neue Versionen von PmWiki-Seiten in anderen Sprachen bildest, erwäge bitte, sie zu den originalen PmWiki-Seiten hinzuzufügen, so dass sie mittels des i18n-Archives auch anderen zugänglich gemacht werden!

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 in WikiLinks zu ermöglichen, muss die "locale"-Einstellung des Servers richtig eingestellt werden, damit PmWiki den passenden Zeichensatz verwendet.

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

Für deutsche Umlaute ist zum Beispiel erforderlich:

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

Auf der enlischen Version dieser Seite finden sich weitere Anmerkungen und eine FAQ.

<< 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 $XLLangs = array('en'); in der Anpassungsdatei der Gruppe.

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 man jedesmal alle Übersetzungstabellen für jedes Seitenansehen lädt, auch wenn sie nicht gebraucht werden.

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

Angenommen, ich will zum Beispiel Übersetzungen für normales Französich und canadisches 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 canada-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, egal, wieviele Übersetzungen mit XLPage() geladen worden sind.

Wie kann ich PHP benutzen, um nebenbei eine Übersetzung für einen individuellen String hinzuzufü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.

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.09.2011
PmWiki.Internationalizations am 19.12.2022