Lokalisierung unter Android
Das in der vorigen Lektion angepaßte Skript »50_run.cmd« erstellt ein Verzeichnis »src\res\values« im Projektordner und kopiert die Datei »strings.xml« in jenes Verzeichnis.
- Skriptauszug
- @MKDIR "%PROJECT%\src\res\values"
… - @COPY strings.xml "%PROJECT%\src\res\values\"
Falls ein Verzeichnis »src\res\values-de« im Projektordner existiert, so würde eine darin enthaltene Datei »strings.xml« verwendet werden, wenn die Sprache des Gerätes auf „Deutsch“ eingestellt wird.
(Die eingestellte Sprache kann in einem Programm auch mit »context.getResources().getConfiguration().locale.getDisplayName()« als Zeichenfolge ausgdrückt werden.)
Alle benötigten Namen eines Projektes sollten immer in dem Verzeichnis »src\res\values« definiert sein, da die Werte aus jenem Verzeichnis verwendet werden, wenn kein zu einer bestimmten Sprache passendes Verzeichnis gefunden wurde. Nach Belieben können dann weitere Verzeichnisse für bestimmte Sprachen hinzugefügt werden.
Die Sprachen können durch eine Sprachbezeichnung mit zwei oder drei Zeichen nach ISO 639 angegeben werden (mit kleinen Buchstaben), wobei die Bezeichnung mit zwei Zeichen gewählt werden muß, wenn es für die gewünschte Sprache eine Bezeichnung mit zwei Zeichen gibt. Beispielsweise steht »de« für „Deutsch“ und »en« für „Englisch“.
Übungsaufgaben
/ Übungsaufgabe
- Erstellen Sie eine Datei »strings-de.xml« im Projektordner.
- In dieser Datei soll für den Namen »hello« der Text »Hallo!« festgelegt werden.
- Erweitern Sie das Skript »50_run.cmd« um eine Zeile, welche das Verzeichnis »src\res\values-de« im Projektordner anlegt.
- Erweitern Sie das Skript »50_run.cmd« um eine Zeile, welche die Datei »strings-de.xml« als »strings.xml« in das Verzeichnis »src\res\values-de« im Projektordner kopiert.
- Vergewissern Sie sich dann das eine neu erstellte Version des Programms aus der vorigen Lektion nun das deutsche Wort „Hallo!“ anzeigt, wenn die Sprache „Deutsch“ für das Gerät eingestellt wurde, aber das englische Wort “Hello!”, wenn eine andere Sprache eingestellt wurde.