2019.06 2020.06

Mehrsprachigkeit

Über die Gestaltung mehrsprachiger Applikationen in MyCoRe

Die Nutzung von I18N

MyCoRe ist von Anfang an darauf ausgelegt, mehrsprachige Anwendungen zu unterstützen. Dies betrifft sowohl die Metadaten wie auch die Navigation in der Anwendung. Die Internationalisierung wird allgemein mit I18N abgekürzt. Grundlage bildet dabei das Encoding UTF-8.

I18N-property Dateien haben den Namensaufbau messager_{iso_language_code}.properties. Je nach verwendetem Build-System sind sie an folgenden stellen zu patzieren.

Komponente Pfad Anmerkung
Maven-Komponente src/main/resources/config/{component}/ Die Übersetzungen werden automatisch mit eingebunden.
Applikationen nach dem Skeleton-Konzept ~/.mycore/{application}/ Die Übersetzungen werden automatisch mit eingebunden.
Build-Prozess mit ANT modules/{modul_name}/config/ Die einzelnen i18n-Teile müssen mittels merge zusammengefügt und nach webapps/WEB-INF/classes kopiert werden.

Anwendungsbereiche von I18N in MyCoRe

Für das Erstellen der i18n-Dateien in Eclipse empfielt sich das RessourceBundle-Plugin. Hier können die Schriftzeichen nativ eingetragen werden. Das Plugin wandelt diese sebstständig in ein entsprechendes Encoding um. Da das i18n-Konzept dem der properties entspricht, ist die notation auch entsprechend. Bei der Wahl der i18n-Bezeichner sollte dabei die Applikationsstruktur erkennbar sein.

1
 mycore.component.basis.part.subpart = Mein Text

in folgenden Bereichen von MyCoRe kann ein i18n-Property eingesetzt werden:

Komponente Codestelle Anmerkung
MyCoReWebPage title -Attribute als Text i18n
  section -Tag als Attribute i18n
  i18n -Tag als Attribute key
XEditor xed:output -Tag als Attribute i18n
XSLT 1.0-3.0 $DefaultLang -Variable Enthält die Standardsprache der Anwendung.
XSLT 1.0-3.0 $CurrentLang -Variable Enthält die aktuelle Sprache der Anwendung.
XSLT 1.0-3.0 über Zugriff auf den i18n-URIresolver <xsl:value-of select="document('i18n:my_property')/i18n{...}" />
XSLT 1.0 deprecate for 2020.06 i18n -XALAN-Extension xmlns:i18n="xalan://org.mycore.services.i18n.MCRTranslation"
... select="i18n:translate('...')"