我可以改变所有的文本在我的应用程序到其他文本,当我点击一个按钮或选择一个菜单项?
我实际上想做的是让我的应用程序翻译成几个非iso语言("非iso"意味着我无法在wiki的ISO-639列表中找到它们)。
所以我希望用户能够选择他们查看我的应用的语言,不管他们的手机语言设置是什么。我希望他们能够从应用程序中进行语言选择。
我在strings.xml中有所有的英文按钮和textview文本,我可以为新语言创建一个strings-xx.xml。
我将使用列出语言选项的子菜单。文本改变会响应那个菜单上的onclick事件。
摘自:当用户选择语言时如何更改应用程序的语言?
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, YOURACTIVITY.class);
startActivity(refresh);
finish();
}
你可以将任何有效的语言字符串传递给setLocale方法,比如"de"或"it",但是你必须重新启动Activity。
我不知道如果你按下后退键,你的应用程序会如何表现。如果它启动了你的"旧"活动,试着重新启动你的活动:
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, YOURACTIVITY.class);
refresh.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(refresh);
}