以下是我的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());
}
}
}
我必须从我的应用的设置活动中更改settings.getString(getString(R.string.pref_language), "");
的值。
问题是没有字符串(有翻译)并且使用getString()
方法访问,显示翻译后的文本。
EDIT1:我使用的是Android 8.0
答案 0 :(得分:0)
当您使用getString(R.string.pref_language)
时,只要提供了翻译,调用就会返回匹配Locale.getDefault()
语言的字符串。
如果未提供翻译,则会返回默认语言,即您在values/strings.xml
文件中使用的语言。
所有翻译的值都在values-xx
个文件夹中,其中xx是该语言的2个字母ISO代码。