以下是我的 Android 应用程序的应用程序代码:
public class MyApplication extends Application
{
private Locale locale = null;
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (locale != null)
{
newConfig.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
@Override
public void onCreate()
{
super.onCreate();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();
String lang = settings.getString(getString(R.string.pref_language), "");
if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang))
{
locale = new Locale(lang);
Log.i("Locale" , lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}
}
我必须从我的应用程序的设置 Activity 中更改 settings.getString(getString(R.string.pref_language), "");
的值。
问题是使用 getString()
方法访问的字符串(有翻译)都没有显示翻译后的文本。
EDIT1:我正在使用 Android 8.0
最佳答案
在 android 8 中,语言环境的行为发生了变化,现在每个 Activity 上下文都将采用其语言环境,即如果您在 Activity1 中更改了 Activity1 的语言环境,那么 Activity2 将保持默认语言环境。
解决方案是更改每个 Activity 的语言环境,您的问题将得到解决。
关于Android 区域设置已更改但已翻译的字符串未出现在应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463259/