我有一个三星Galaxy y duos和一个Google Nexus 5。我的应用程序在两部手机上运行。我必须以两种语言(卡纳达语和英语)提供此应用程序。我通过切换语言环境来选择语言(按惯例)。
Nexus 5在其区域设置列表中具有区域设置“kn”,并且Y Duos中没有“kn”。但是当我尝试在values-kn文件夹中使用String.xml时,即使它没有“kn”语言环境,也可以在Y Duos中正确呈现Kannada文本。
我有一段代码,用于查找“kn”语言环境并启用/禁用卡纳达语语言功能。它在下面给出。
public boolean isLocalePresent(Locale newLocale) {
Locale[] locales = Locale.getAvailableLocales();
for (Locale locale : locales) {
if (locale.getLanguage().equals(newLocale.getLanguage()) {
return true;
}
}
return false;
}
我称之为:
if (isLocalePresent(new Locale("kn"))) {
// change default locale to "kn"
}
有人可以告诉我如何让我的应用程序在所有可以呈现Kannada文本的手机中使用Kannada文本。即使“区域设置”列表中没有“kn”区域设置,我怎么知道手机是否支持卡纳达语文本渲染。?
答案 0 :(得分:1)
我遇到了同样的问题。尝试了一些选项,并在我的应用程序中使用以下代码
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
setLocale(new Locale("kn"));
}
public void setLocale(Locale newLocale) {
Locale.setDefault(newLocale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = newLocale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}
事情按预期工作。