Android语言环境已更改,但应用程序中没有翻译的字符串
以下是我的Android应用程序的应用程序代码:Android语言环境已更改,但应用程序中没有翻译的字符串,android,localization,Android,Localization,以下是我的Android应用程序的应用程序代码: public class MyApplication extends Application { private Locale locale = null; @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);
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());
}
}
}
我必须更改settings.getString(getString(R.string.pref_语言),“”)的值代码>来自我的应用程序的设置活动
问题是使用getString()
方法访问的字符串(具有翻译)中没有一个显示翻译文本
EDIT1:我使用的是Android 8.0当您使用getString(R.string.pref\u语言)
时,只要提供翻译,调用就会从匹配的Locale.getDefault()
语言返回字符串
如果未提供翻译,它将返回默认语言,即在values/strings.xml
文件中使用的语言
所有翻译的值都在values xx
文件夹中,其中xx是该语言的两个字母的ISO代码。在android 8中,区域设置的行为发生了变化,现在每个活动上下文都将采用其区域设置,即如果您在Activity1中更改了Activity1的区域设置,那么Activity2将保持默认区域设置
解决方案是更改每个活动的区域设置,您的问题将得到解决。Log.i(“区域设置”,lang)
返回我设置的语言的2位代码(hi),我还提供了用getString()
引用的字符串的翻译,但我仍然没有得到翻译后的值。。。我记得我第一次遇到类似的问题时。我来自挪威,这里有两种书面语言,尼诺尔斯克语和博克马尔语。起初,我试图为no提供翻译,但我需要为nb(bokmal)和nn(nynorsk)提供翻译。你会面临类似的问题吗?你在使用安卓8吗?安卓8在本地版上有一些变化是的,安卓8.0从这个答案中得到了一些提示:它现在起作用了。我面临着同样的问题。。如何更改每个活动的区域设置?我是否应该在setContentView()方法仍然不起作用之前在onCreate中执行此操作。系统的区域设置已更改,但未获取该区域设置的字符串文件值。我可以看到应用程序中的日期更改为该语言环境。