18 Resourcen und Unterstützung mehrerer Sprachen in Apps

Die Unterstützung mehrerer Sprachen in einer Android-App, auch als Internationalisierung oder Lokalisierung bezeichnet, ist ein wichtiger Schritt, um eine breitere Benutzerbasis zu erreichen und eine bessere Benutzererfahrung für Personen in verschiedenen Ländern oder mit verschiedenen Muttersprachen zu bieten.

Android bietet mehrere Tools und Techniken, um die Internationalisierung und Lokalisierung von Apps zu erleichtern. Hier sind einige Schlüsselkonzepte und Schritte, die Sie befolgen sollten, um mehrere Sprachen in Ihrer Android-App zu unterstützen:

  1. Ressourcen Externalisieren: Der erste Schritt zur Unterstützung mehrerer Sprachen besteht darin, alle in Ihrer App verwendeten Texte und andere lokalisierte Ressourcen (wie Bilder oder Sounds) zu externalisieren. Anstatt Texte direkt in Ihren Code zu schreiben, sollten Sie sie in Ressourcendateien platzieren, die Android automatisch für Sie verwaltet.

  2. Strings.xml: Texte sollten in XML-Dateien unter res/values gespeichert werden, in der Regel in einer Datei namens strings.xml. In dieser Datei können Sie für jeden Text in Ihrer App einen eindeutigen Namen und den entsprechenden Text in Ihrer Standardsprache angeben.

  3. Alternative Ressourcen: Um Texte in anderen Sprachen bereitzustellen, können Sie alternative strings.xml-Dateien in sprachspezifischen Ressourcenordnern erstellen. Zum Beispiel könnten Sie einen Ordner res/values-fr für Französisch und res/values-de für Deutsch erstellen. In diesen Dateien definieren Sie die gleichen Textnamen wie in Ihrer Standard-strings.xml-Datei, aber mit den übersetzten Texten.

  4. Verwendung von Ressourcen: Im Code referenzieren Sie Texte über ihre Namen, indem Sie R.string.text_name verwenden. Android wählt dann automatisch den richtigen Text basierend auf der aktuell eingestellten Sprache des Geräts aus.

  5. Rechts-nach-links-Sprachen: Beachten Sie, dass einige Sprachen wie Arabisch oder Hebräisch von rechts nach links geschrieben werden. Android unterstützt diese Sprachen und kann automatisch das Layout Ihrer App umkehren, wenn sie in einer solchen Sprache angezeigt wird. Sie sollten jedoch sicherstellen, dass Ihr Layout korrekt funktioniert, wenn es umgekehrt wird.

  6. Formatierung von Zahlen und Daten: Achten Sie darauf, dass Zahlen, Daten, Währungen und ähnliche Daten in verschiedenen Ländern und Sprachen unterschiedlich formatiert sein können. Android stellt Klassen wie NumberFormat und DateFormat bereit, um diese Daten korrekt zu formatieren.

Die Unterstützung mehrerer Sprachen kann etwas Aufwand erfordern, insbesondere wenn es um die Übersetzung und die Anpassung an kulturelle Unterschiede geht. Es kann jedoch einen großen Unterschied machen, um Ihre App für Benutzer in der ganzen Welt zugänglich und nützlich zu machen.

18.1 Zugriff auf String Resourcen aus dem Code

Um auf eine String-Ressource aus dem Java-Code Ihrer Android-App zuzugreifen, verwenden Sie die Methode getString(int) der Context-Klasse. Der Parameter ist die Ressourcen-ID des Strings, den Sie abrufen möchten. Die Ressourcen-ID ist normalerweise in der Form R.string.string_name, wobei string_name der Name ist, den Sie dem String in Ihrer Ressourcendatei gegeben haben.

Zunächst definieren Sie einen String in Ihrer strings.xml-Datei, die sich im res/values-Verzeichnis Ihrer App befindet:

<resources>
    <string name="welcome_message">Willkommen bei unserer App!</string>
</resources>

Dann können Sie in Ihrem Java-Code auf diesen String zugreifen:

String welcomeMessage = getResources().getString(R.string.welcome_message);

In diesem Code ruft getResources() die Resources-Instanz für Ihre Anwendung ab, und getString(R.string.welcome_message) ruft den String mit der angegebenen Ressourcen-ID ab.

Dieser abgerufene String kann dann verwendet werden, um z.B. einem TextView-Element in Ihrer Benutzeroberfläche Text zuzuweisen:

TextView textView = findViewById(R.id.my_text_view);
textView.setText(welcomeMessage);

Es ist wichtig zu beachten, dass Sie auf Ressourcen immer über den aktuellen Context zugreifen sollten. In einer Aktivität können Sie this oder getApplicationContext() als Context verwenden. Innerhalb eines Fragment können Sie getActivity() oder getContext() verwenden. In anderen Komponenten wie z.B. einem BroadcastReceiver oder einem Service können Sie den von den entsprechenden Methoden bereitgestellten Context verwenden.