Вынуть String Resource с другой локалью из с вручную созданного контекста

Я хочу в рантайме в зависимости от выбранного пользователем языка вынимать string-ресурсы из определенной локали. Для этого я написал такую функцию:


    fun getLocalizedString(requestedLocale: Locale, resourceId: Int, context: Context): String? {
        val newConfig = Configuration(context.resources.configuration)
        newConfig.setLocale(requestedLocale)
        val newContext = context.createConfigurationContext(newConfig)
        Log.d(TAG_NATIVE_LANG, "getLocaleStringResource: check new context: ${newContext.resources.configuration.locale}") // показывает локаль
        val newString = newContext.resources.getString(resourceId)
        Log.d(TAG_NATIVE_LANG, "getLocaleStringResource: check new string = $newString") //показывает вынутую стрингу

        return newString
    }

Проблемка в том, что она срабатвает, но не всегда. То есть в newContext прокинута правильная локаль всегда (это видно по логам, который показывает локаль). Но в конечном счете примерно в 80% случаев функция возвращает стрингу на дефолтном языке (даже если в newConfig была прокинута правильная локаль). Я не понимаю почему так происходит, но подозреваю что это как-то связано с особенностями работы Context-a.

Может кто-то сможет подкинуть идею, "куда копать"? Спасибо.


Ответы (0 шт):