У меня есть требование изменить язык моего приложения с английского на хинди. Я не могу сделать это в Android 8.0.
public static void setUpLanguage(SqrrlApplication application, String languageIsoCode) {
try {
Locale locale = new Locale(languageIsoCode);
Locale.setDefault(locale);
Resources res = application.getResources();
Configuration config = new Configuration(res.getConfiguration());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
config.setLocale(locale);
application.getApplicationContext().createConfigurationContext(config);
}else{
config.locale = locale;
}
res.updateConfiguration(config, res.getDisplayMetrics());
} catch (Exception e) {
e.printStackTrace();
}
}
Обратите внимание: однако, если я изменю язык своего устройства в настройках устройства, мое приложение изменится на версию на хинди.
У меня есть папка values-hi в res со строками на хинди.
Спасибо.
меняется ли ваш языковой стандарт при перезапуске приложения?
@Gautam Нет, это не влияет, когда я перезапускаю приложение.
даже я использую тот же код для обновления локали, но все мои действия расширяют BaseActivity и переопределяют метод attachBaseContext. Внутри этого я вызываю super.attachBaseContext ({вызывая метод setUpLanguage, который возвращает контекст, который передается изначально}).
Нужно ли мне использовать метод attachBaseContext?
да, попробуйте переопределить его внутри активности




Возможный дубликат Как изменить язык приложения Android O / Oreo / api 26 и это также stackoverflow.com/questions/39705739/…