В настоящее время я работаю над проектом, который будет поддерживать несколько язык. Я написал все строки для всех языков.
Я использую BaseActivity, класс Application и LocaleHelper для управления локализацией своего приложения.
А потом я обнаружил такое поведение в своем приложении. После того, как я установил Locale на другой язык, строки в некоторых действиях изменяются и исправляются, но НЕ в MainActivity, хотя у них есть одинаковые строки. Я попытался перезапустить приложение, но оно все еще не работает.
У меня также есть еще одно действие, в котором некоторые слова в действии были переведены, но все слова внутри фрагмента и recyclerview вообще не были переведены.
Я до сих пор не могу понять, почему это не переведено должным образом. Может ли кто-нибудь мне помочь??
Вот фрагмент:
Класс приложения< /p>
Код: Выделить всё
@Override
public void onCreate() {
super.onCreate();
LocaleUtil.setLocale(new Locale(LocaleUtil.with(this).getPreference()));
LocaleUtil.updateConfig(this,getBaseContext().getResources().getConfiguration());
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LocaleUtil.setLocale(new Locale(LocaleUtil.with(this).getPreference()));
LocaleUtil.updateConfig(this, newConfig);
}
Код: Выделить всё
public BaseActivity() {
LocaleUtil.updateConfig(this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
initLocale();
super.onCreate(savedInstanceState);
}
public void initLocale(){
localeUtil = new LocaleUtil(this);
localeUtil.setListener(this);
localeUtil.setLanguageByCode(localeUtil.getPreference());
}
(ОБНОВЛЕНИЕ)
Я узнал, что мне нужно setLocale снова всякий раз, когда я хочу получить доступ к Strings.xml для любых представлений в представлении recyclerview и фрагменте. Это совершенно неудобно, и я беспокоюсь о производительности. Мне бы хотелось услышать лучший совет по смене языка.
Подробнее здесь: https://stackoverflow.com/questions/470 ... d-properly
Мобильная версия