Android: как получить строку в определенной локали БЕЗ изменения текущей локали

Вариант использования: регистрация сообщений об ошибках, отображаемых для пользователя.

Однако ты нене хочу, чтобы в вашем журнале были сообщения, зависящие от локали пользователяустройство. С другой стороны, вы нене хочу менять язык пользователяУстройство только для вашей (технической) регистрации. Можно ли этого достичь? Я нашел несколько потенциальных решений здесь на stackoverflow:

как получить строку из разных локалей в Android?Могу ли я получить доступ к ресурсам из разных локалей android?android - получает строку из локали по умолчанию, используя строку в определенной локалиможет быть дажеAndroid - изменение языка внутри самого приложения

Однако все они приводят к изменению локали моего устройства (до следующего изменения конфигурации).

Во всяком случае, мой текущий обходной путь выглядит так:

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;
}

Если честно, я неМне не нравится такой подход. Это'неэффективно и - думая о параллелизме и всем этом - это может привести к некоторому мнению внеправильно" локали.

Итак - есть идеи? Может быть, это может быть достигнуто с помощьюResourceBundleс, как в стандартной Java?

Ответы на вопрос(4)

Ваш ответ на вопрос