Вынуть 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.
Может кто-то сможет подкинуть идею, "куда копать"? Спасибо.