Приложению Android не удается загрузить локализованные ресурсы (values-uk, Values-ru) на определенных устройствах в завиAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Приложению Android не удается загрузить локализованные ресурсы (values-uk, Values-ru) на определенных устройствах в зави

Сообщение Anonymous »

У меня есть приложение для Android, которое поддерживает несколько языков: английский, украинский и русский. Приложение отлично работает при установке непосредственно из Android Studio на любое устройство. Однако при загрузке приложения из Google Play Store происходит странное поведение только на некоторых устройствах:
Если языковой стандарт устройства установлен на украинский, приложение нормально загружает все языки (UA, RU, EN).
Если в качестве языкового стандарта устройства выбран русский, приложение загружает только RU и EN, но украинские ресурсы (values-uk) не загружаются.
Если языковой стандарт устройства установлен на английский, ни RU, ни UA. ресурсы загружаются — работает только английский язык.
Я тщательно протестировал это и включил журналы, которые показывают, что языковой стандарт установлен правильно во время выполнения, поэтому я не подозреваю, что проблема связана с самой логикой кода.
Вот соответствующий код для изменения языка приложения:

Код: Выделить всё

private fun changeAppLanguage(selectedLanguage: String) {
val languages = resources.getStringArray(R.array.languages)
when (selectedLanguage) {
languages[0] -> {
updateLanguageSettings("uk")
}
languages[1] -> {
updateLanguageSettings("ru")
}
languages[2] -> {
updateLanguageSettings("en")
}
else -> {
updateLanguageSettings("en")
}
}
}

@SuppressLint("AppBundleLocaleChanges")
@Suppress("DEPRECATION")
private fun updateLanguageSettings(language: String) {
saveLanguage(language)
val locale = Locale(language)
val config = resources.configuration
Locale.setDefault(locale)
config.setLocale(locale)
resources.updateConfiguration(config, resources.displayMetrics)
updateViews()
}
Вот структура моих папок с ресурсами (см. изображение):
(https://i.sstatic.net/5StXJlHO.png)
  • Проверено, что все локализованные ресурсы правильно включены в декомпилированный APK (ничего не пропущено).
  • В build.gradle добавлено следующее, чтобы обеспечить доступность ресурсов. явно упакованы:

Код: Выделить всё

resourceConfigurations += listOf("en", "ru", "uk", "uk-rUA")
resConfigs("en", "ru", "uk", "uk-rUA")
  • Зарегистрированы значения локали, чтобы убедиться, что приложение устанавливает их правильно во время выполнения:
    Locale.getDefault() возвращает правильные значения ( uk, ru и т. д.).
    resources.configuration.locale также отражает желаемую локаль.
Несмотря на это, поведение остается непоследовательным в зависимости от в системе устройства по умолчанию локаль.

Подробнее здесь: https://stackoverflow.com/questions/792 ... on-certain
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»