Android: So erhalten Sie Zeichenfolgen in einem bestimmten Gebietsschema, OHNE das aktuelle Gebietsschema zu ändern

Anwendungsfall: Protokollieren von Fehlermeldungen, wie sie dem Benutzer angezeigt werden.

Sie möchten jedoch keine Nachrichten in Ihrem Protokoll haben, die vom Gebietsschema des Benutzergeräts abhängen. Andererseits möchten Sie das Gebietsschema des Benutzergeräts nicht nur für Ihre (technische) Protokollierung ändern. Kann das erreicht werden? Ich habe hier beim Stackoverflow ein paar mögliche Lösungen gefunden:

Wie bekomme ich Zeichenfolge aus verschiedenen Gebietsschemas in Android?Kann ich auf Ressourcen von einem anderen Android-Gebietsschema zugreifen?android - Ermittelt eine Zeichenfolge aus dem Standardgebietsschema unter Verwendung einer Zeichenfolge in einem bestimmten Gebietsschemavielleicht sogarandroid - Gebietsschema innerhalb der App selbst ändern

Sie alle führen jedoch zu einer Änderung des Gebietsschemas meines Geräts (bis zur nächsten Konfigurationsänderung).

Wie auch immer, meine derzeitige Problemumgehung sieht folgendermaßen aus:

public String getStringInDefaultLocale(int resId) {
    Resources currentResources = getResources();
    AssetManager assets = currentResources.getAssets();
    DisplayMetrics metrics = currentResources.getDisplayMetrics();
    Configuration config = new Configuration(
            currentResources.getConfiguration());
    config.locale = DEFAULT_LOCALE;
    /*
     * Note: This (temporiarily) changes the devices locale! TODO find a
     * better way to get the string in the specific locale
     */
    Resources defaultLocaleResources = new Resources(assets, metrics,
            config);
    String string = defaultLocaleResources.getString(resId);
    // Restore device-specific locale
    new Resources(assets, metrics, currentResources.getConfiguration());
    return string;
}

Um ehrlich zu sein, mag ich diesen Ansatz überhaupt nicht. Es ist nicht effizient und - wenn man an Parallelität denkt und all das - könnte es dazu führen, dass eine bestimmte Ansicht im "falschen" Gebietsschema angezeigt wird.

Also - Irgendwelche Ideen? Vielleicht könnte dies mit erreicht werdenResourceBundles, genau wie in Standard-Java?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage