是否可以使用从服务接收的 XML 在运行时翻译 android 应用程序?如果可能的话,有人可以指出我正确的方向。
谢谢你。
是否可以使用从服务接收的 XML 在运行时翻译 android 应用程序?如果可能的话,有人可以指出我正确的方向。
谢谢你。
警告
我读过的所有内容都表明,让您的应用更改语言不是一个好主意,因为 Android 框架不支持它,并且可能会导致问题。
话虽如此,我已经在我的应用程序中完成了它,虽然它有点痛苦,但它似乎到目前为止还有效。如果你想这样做,我就是这样做的。您需要为每种语言创建一个单独的strings.xml
文件。strings.xml
在values
文件夹中作为您的默认值,然后可能是strings.xml
在说values-es
西班牙语字符串的文件夹中。我使用以下代码根据RadioButton
用户选择来更改配置设置
final Configuration LANG_CONFIG = ChooseLocale.this.getResources().getConfiguration();
Locale newLocale = new Locale("English");
curLang = ChooseLocale.this.getLanguage();
if ((curLang.equals("English")) || (curLang.equalsIgnoreCase("Ingles")))
{
newLocale = new Locale("en_US");
}
else
{
newLocale = new Locale("es");
}
Toast.makeText(getApplicationContext(), newLangToast + " " + curLang , Toast.LENGTH_SHORT).show();
Configuration config = getBaseContext().getResources().getConfiguration();
Locale.setDefault(newLocale);
config.locale = newLocale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
SharedPreferences.Editor editor = langPref.edit();
editor.putString(LANG_PREF, curLang);
editor.commit();
这条线是更新配置最重要的
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
我从我的getLanguage()
函数中获取语言环境,可以根据需要进行处理。我还必须添加
@Override
public void onConfigurationChanged(Configuration newConfig) {
newConfig = Globals.getUserLanguage(this);
super.onConfigurationChanged(newConfig);
到每个允许方向改变的活动,并将其添加到我onCreate()
的每个活动中
final SharedPreferences langPref = getSharedPreferences (LANG_PREF, 0);
if (Globals.langConfig != null)
this.onConfigurationChanged(Globals.langConfig);
我还添加android:configChanges="orientation|locale"
到清单中允许改变方向的每个活动