Durch Sprachdateien ist es möglich den Inhalt einer Seite mehrsprachig zu entwickeln, ohne dabei verschiedene Seiten erstellen zu müssen. Innerhalb von Sprachdateien werden Sprachvariabeln definiert, die in einem Template oder PHP Datei durch den zugehörigen Wert in der jeweils ausgewählten Sprache des Benutzers ausgegeben werden.
1 Die XSD auf GitHub
https://github.com/WoltLab/WCF/blob/master/XSD/language.xsd
2 Package.xml
Innerhalb der package.xml kann man der Installations- bzw. der Updateroutine durch folgenden instruction-Tag sagen, dass nun Sprachvariabeln installiert bzw. geupdatet werden soll(en).
Das WSC erkennt nun alle im Ordner "language" enthaltene language PIP´s, zu der es einen entsprechenden Sprachcode gibt (z.B. de.xml für Deutsch, en.xml für Englisch etc.)
3 Mögliche Parameter
Tag | Parameter | Definition |
language | languagecode="Sprachcode" languagename="Sprache" countrycode="Landescode" |
Einleitendes Elternelement |
category | name="ea.example" | Kategorie für die Sprachvariabel |
item | name="ea.example.test.first" | Sprachvariabelnamen |
4 Aufbau einer Sprachdatei
Innerhalb des language-Tags gibt man mittels des Parameters languagecode die Sprache an, zu der man neue Sprachvariabeln erstellen bzw. updaten möchte.
XML: language/de.xml
<?xml version="1.0" encoding="UTF-8"?>
<language xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/2019/language.xsd" languagecode="de">
<category name="ea.example">
<item name="ea.example.test.first"><![CDATA[Erster Test]]></item>
<item name="ea.example.test.second"><![CDATA[Zweiter Test {$foo}]]></item>
</category>
</language>
5 Gut zu wissen
- Zur Benennung von Sprachvariablen und Kategorien dürfen folgende Zeichen verwendet werden: a-zA-Z0-9-.
- Kategorien dürfen minimal aus drei Blöcken bestehen, die mit einem Punkt getrennt werden.
- Der Name einer Sprachvariablen muss mit dem Namen der zugehörigen Kategorie beginnen z. B. "wcf.acp.global.variable"
- Sprachdateien sollten immer im utf-8 Format abgespeichert werden
- Templatescripting wie z.B. die Verwendung von {if} ist möglich (Ausnahme bildet hier die Kategorie wcf.global)
- Es wird der Name der Sprachvariabel zurückgegeben, wenn man versucht eine undefinierte Sprachvariabel zu benutzen
- Anders als alle anderen PiPs können Sprachvariabeln nicht über das Language-PiP gelöscht werden.
6 Aufruf einer Sprachvariabel
6.1 PHP Datei
PHP
//Statischer Aufruf
WCF::getLanguage()->get('ea.example.test.first')
// Dynamischer Aufruf
WCF::getLanguage()->getDynamicVariable('ea.example.test.second', ['foo' => $this])
6.2 Template
Siehe: {lang}
Ihr habt Fragen oder Anregungen? Lob oder Kritik? Lasst es mich doch durch einen Kommentar von euch wissen!