Android:在没有“kn”语言环境的手机中显示卡纳达语

时间:2014-01-24 12:53:44

标签: android locale

我有一个三星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”区域设置,我怎么知道手机是否支持卡纳达语文本渲染。?

1 个答案:

答案 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());
    }
}

事情按预期工作。