【问题标题】:Android: Displaying Kannada Language In Phones With No "kn" LocaleAndroid:在没有“kn”区域设置的手机中显示卡纳达语
【发布时间】:2014-01-24 12:53:44
【问题描述】:

我有三星 Galaxy y Duos 和 Google Nexus 5。我的应用程序在两部手机上都运行。我必须以两种语言(卡纳达语和英语)提供此应用程序。我通过切换语言环境来选择语言(按照惯例)。

Nexus 5 的语言环境列表中有语言环境“kn”,而 Y Duos 没有“kn”。但是当我尝试在 values-kn 文件夹中使用 String.xml 时,即使 Y Duos 中没有“kn”语言环境,卡纳达语文本也会正确呈现。

我有一段代码用于查找“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"
}

谁能告诉我如何让我的应用在所有可以呈现卡纳达文本的手机中使用卡纳达文本。即使 Locale 列表中没有“kn”语言环境,我如何知道手机是否支持 Kannada 文本渲染?

【问题讨论】:

  • 嗨,你能把卡纳达语作为语言环境吗?我正在努力解决同样的问题..你能帮忙吗?
  • 该语言环境并非在所有手机上都可用。但是您可以创建一个语言为“kn”的新语言环境,并将其设置为应用程序中的默认语言环境。问题依然存在。我没有找到合适的解决方案伙伴。

标签: android locale


【解决方案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());
    }
}

一切正常。

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 2019-06-12
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多