2017-11-23 6 views
-3

Ich arbeite jetzt an android i18n. Es gibt einige strings.xml Dateien in so vielen values-xxxx Verzeichnissen, aber der Produktmanager möchte diese strings.xml Dateien in den Server setzen, App erhalten strings.xml Datei das ROM-Netzwerk von einem Language-Parameter dynamisch.Aber strings.xml wird auf folgende Arten verwendet: @ string/xx, Widget.setText (R.string.xx), getString (R.string.xx), Toast.make (x, R.string.x, x) und so weiter ... Wie man Android dynamisch lädt strings.xml einfach? Oder hast du einen einfacheren Weg, mein Problem zu lösen? Vielen Dank!Wie dynamisch strings.xml dynamisch laden?

+0

Ressourcen sind schreibgeschützt, daher können Sie sie nicht ersetzen. Verwenden Sie Lokalisierungsfunktionen (-en, -it, -de ...) für die Sprache –

+0

Produktmanager? Was? – ADM

+0

Ihr Produktmanager sollte die Entwickler nicht stören. Ja wirklich. –

Antwort

0

Frome eine App Ich arbeitete an:

Nach dem Start der App einen API-Aufruf machen. Der Server antwortet mit einem JSON, der alle Zeichenfolgen enthält. Nach dem Parsen können wir alle Strings dynamisch in den richtigen Kontext setzen oder Objekte oder sogar den JSON zum Abrufen der Strings bei Bedarf behalten.

Hoffe, diese Idee kann Ihnen helfen.

0

Ich verstehe, dass Produktmanager dies aus einem bestimmten Grund ändern möchte.

Meine Lösung wäre wie folgt:

  1. alle Zeichenfolge halten zu anderer Sprache auf dem Server mit unterschiedlichem URL-Muster verwendet. In kurzen URL, um Zeichenfolge zu bekommen sollte wie http://www.example.com/strings/{lang_param}/ Beispiel: http://www.example.com/strings/en/, http://www.example.com/strings/pt-br/ etwas wie das sein.
  2. Lassen Sie den Server JSON zurückgeben, wobei der Schlüssel der Zeichenfolgen identisch sein würde, aber die Werte basierend auf dem URL-Parameter d. H. lang_param. Zusammen mit JSON-Server muss eine Identität zurückgeben muss angeben, ob einige Zeichenfolgen Elemente geändert werden oder nicht. Dieser Identitätshash muss in der gemeinsamen Präferenz beibehalten werden, damit beim nächsten Start der App der Serverprüfungshash abgefragt werden kann. Wenn sie unterschiedlich sind, werden sie durch neue Änderungen ersetzt.
  3. Es ist zwingend erforderlich, dass Standardstrings beibehalten werden. xml im internen Speicher der Anwendung unter Verwendung File file = new File(context.getFilesDir(), filename); gegeben auf https://developer.android.com/training/data-storage/files.html.
  4. Sobald Sie die neue Datei aktualisieren interne Speicher JSON-Datei und erstellen Sie eine Hilfsmethode, die diese JSON analysiert. Bitte beachten Sie, dass Sie verschiedene Hashes und JSON-Zeichenketten-Dateien basierend auf verschiedenen Sprachen pflegen müssen.