Mehrsprachigkeit
Grundsätzliche Aktivierung Mehrsprachigkeit
Um Mehrsprachigkeit für einen Namensraum grundsätzlich zu aktivieren, muss im Namensraum eine API languages erstellt werden, welche die Sprachen für den Namensraum definiert. Dafür empfiehlt sich eine JSON-Struktur wie folgt:
{
"application": "Tutorial",
"label": "languages",
"project": "NeuroomNet-CMS Tutorial",
"fields": {
"code": {
"cms": {
"column": true,
"unique": true
},
"empty": false,
"type": "string"
},
"display": {
"cms": {
"column": true
},
"type": "string",
"optional": true
}
},
"hideId": true
}
curl -X POST -H "Content-Type: application/json" --user "<myuser>":"<mypassword>" -d @@CreateApi-languages.json https://<url>/schema/tutorial/languages
Es können aber auch Varianten dieser JSON-Struktur verwendet werden, sofern folgendes beachtet wird:
- Es muss in dieser API immer ein Feld code geben, das von der Art Zeichenkette ist. Dieses Feld ist verpflichtend, eindeutig (unique) und darf keine leeren Werte enthalten (empty)
- Es wird dringend empfohlen eine weitere Zeichenkette display anzulegen, die im CMS-Frontend zur Sprachauswahl1 verwendet wird - ist dieses Feld nicht vorhanden oder kein Wert angegeben, so wird code zur Auswahl verwendet
Ansonsten ist folgendes zu beachten bei der Benutzung bzw. Füllung der API mit Sprachen:
- In die API werden die Sprachen eingefügt, welche für den Namensraum zu Verfügung stehen sollen
- Dabei sollten im Feld code immer Standardkürzel für Sprachen verwendet werden, wie z.B. en, de oder fr - lediglich en hat im CMS eine besondere Bedeutung und wird als Rückfallsprache verwendet, eine Konsistenz hilft aber sicher beim Verständnis
Nach Anlegen der API und füllen dieser mit den Sprachen Deutsch, Englisch und Französisch über das CMS-Frontend sieht sie wie folgt aus im CMS-Frontend:
Spätestens nach Reload der Webseite des CMS-Frontends (hier am Bsp. api1) erscheint die Sprachenauswahl:
Verwendung der Mehrsprachigkeit in Datenstrukturen
Die alleinige Hinzufügung und Füllung der API languages zu einem Namensraum sorgt noch nicht dafür, dass tatsächlich Content (insbesondere, aber nicht ausschließlich, Texte) übersetzt werden bzw. tatsächlich in mehreren Sprachen im CMS vorliegen können. Um dies zu ermöglichen, muss das Attribut localizable gesetzt werden für entsprechende Felder in den API-Datenstrukturen, die übersetzbar sein sollen.
Falls das Attribut localizable gesetzt ist für einen Wert in einer Objektstruktur, dann wird im Protokoll anstatt diesem einen Wert eine Unter-Objektstruktur verwendet, bei der Name des Feldes eine erlaubte Sprache (e.g. en oder fr) ist und der Wert dem Format des Datentyps genügt:
{
"country-name": "Deutschland"
}
wird im Protokoll zu:
{
"country-name": {
"de": "Deutschland",
"en": "Germany",
"fr": "Allemagne"
}
}s
Footnotes
-
Sobald für einen Namensraum die API languages existiert, erscheint in der Editieransicht von API-Elementen auch eine Sprachauswahl, über die festgelegt wird, für welche Sprache die jeweiligen Werte angezeigt oder editiert werden. ↩