Android string.xml - ein paar Dinge, an die Sie sich erinnern sollten

Guten tag Ich präsentiere Ihnen eine kostenlose Übersetzung eines Artikels von GDE (Google Developer Expert) Dmytro Danylyk . Eigentlich ist hier das Original . Der Artikel beschreibt die richtigen Vorgehensweisen für die Arbeit mit strings.xml und ist insbesondere für Entwickler nützlich, die mehrsprachige Anwendungen entwickeln. Ich bitte um katze



In diesem Artikel geht es um so ein triviales Android-Ding wie string.xml.


Nicht wiederverwenden


Verwenden Sie keine Zeilen für verschiedene Bildschirme

Stellen wir uns vor, Sie haben einen Ladedialog auf dem Anmelde- oder Anmeldebildschirm . Da beide Bildschirme über einen Ladedialog verfügen, verwenden Sie dieselben Zeilen - R.string.loading .


Bild

res / values ​​/ strings.xml.


Wenn Sie später andere verwenden möchten, müssen Sie zwei verschiedene Zeilen erstellen und diese direkt in den .java-Klassen ändern. Wenn Sie von Anfang an andere Zeilen verwenden, müssen Sie nur die Datei strings.xml ändern .


Bild

res / values ​​/ strings.xml


Sie werden nie im Voraus wissen, welche Sprache Sie hinzufügen müssen, um Unterstützung und Übersetzung zu erhalten. Es dreht sich alles um den Kontext: In einer Sprache können Sie dasselbe Wort in einem Kontext, aber in einem anderen verwenden - dieses Wort passt nicht zur Bedeutung.


Bild

res / values ​​/ strings.xml


Bild

res / values-UA / strings.xml


Beachten Sie, dass in diesem Fall die englische Version strings.xml das gleiche Wort verwendet - „Ja“ für beide Fälle R.string.download_file_yes und R.string.terms_of_use_yes Saiten .
Aber die ukrainische Version strings.xml verwendet 2 verschiedene Wörter - „Garazd“ für R.string.download_file_yes und „So“ für R.string.terms_of_use_yes .


Trennen


Separate Zeilen, die zu einem Bildschirm gehören, mit Präfixen und Kommentaren

Bild

res / values ​​/ strings.xml


  1. Fügen Sie jeder Zeile ein Präfix in Form eines Bildschirmnamens hinzu, um besser zu verstehen, zu welchem ​​Bildschirm diese Ressource gehört.
  2. Mit einer sauberen Datei string.xml können Sie auf einfache Weise verschiedene Sprachen unterstützen und übersetzen - Bildschirm für Bildschirm.

Erstellen Sie für jeden Bildschirm eine andere strings.xml

Wenn Sie möchten, können Sie für jeden Bildschirm eine Datei string.xml erstellen - settings-strings.xml, profile-strings.xml . Normalerweise hat die Anwendung jedoch ungefähr 10-20 Bildschirme. Sie müssen 10-20 string.xml- Dateien in jedem Sprachordner haben . Ich denke, das wird ein Durcheinander.


Formatierung


Verwenden Sie Resources # getString (int id, Object ... formatArgs), um Zeichenfolgen zu formatieren

Verketten Sie niemals über den Operator + , da in anderen Sprachen die Wortreihenfolge variieren kann.


Bild

res / values ​​/ strings.xml


Bild

Java-Code


Die richtige Methode ist die Verwendung von Resources # getString (int id, Object ... formatArgs) .


Bild

res / values ​​/ strings.xml


Bild

res / values-UA / strings.xml


Bild

Java-Code


Plural


Verwenden Sie Resources # getQuantityString (int id, int quantity) für quantitative Zeichenfolgen

Lösen Sie nicht mehrere Probleme in Java-Code, da verschiedene Sprachen unterschiedliche Regeln für die Mehrfachvereinbarung haben


Bild

res / values ​​/ strings.xml


Bild

Java-Code


Der richtige Weg ist die Verwendung von Resources # getQuantityString (int id, int quantity)


Bild

res / values ​​/ strings.xml


Bild

Java-Code


Worthervorhebung


Verwenden Sie HTML-Text, um statische Wörter hervorzuheben

Wenn Sie die Farbe einiger Wörter in TextView ändern möchten, ist ForegroundColorSpan nicht immer die beste Option, da die Hervorhebung über einen Index erfolgt und in einer mehrsprachigen Anwendung nicht sicher ist. Es ist besser, in Ihrer Datei strings.xml HTML-Schriftfarben-Tags zu verwenden .
Angenommen, Sie haben den Text "Spiele entdecken und spielen". Sie möchten das Wort "Entdecken" und das Wort "Spielen" in Blau hervorheben.


Bild

res / values ​​/ strings.xml


Bild

Java-Code


Jetzt auch beliebt: