【问题标题】:How to programmatically suppress specific locale in Android application如何以编程方式抑制 Android 应用程序中的特定语言环境
【发布时间】:2011-09-09 05:18:32
【问题描述】:

我们都知道,Android 应用程序在支持不同语言环境方面具有高度可定制性。就我而言,我的应用程序目前支持 6 个语言环境,并且一切正常。每当用户选择电话区域设置时,应用程序就会切换到另一个区域设置和所有菜单,消息都是本地语言。

现在的问题是我希望以编程方式抑制应用程序中的特定区域设置,因为我将使用不同的渠道、定价政策等(并不总是通过 Android 市场)在不同的国家/地区分发应用程序。因此,如果应用程序是针对中国的 - 用户无法将语言环境切换为英语或法语。

最简单的方法是从应用程序中删除其他语言环境资源 - 我明白这一点。但是从源代码维护的角度来看,它不是很舒服,所以我希望有一些程序化的方式来拒绝/抑制应用程序中的某些语言环境。

有什么想法吗?

【问题讨论】:

  • 意味着您从整个应用程序中设置区域设置?并选择您的语言环境所有数据都使用选定的语言???这一切都是你想要的编程方式???
  • @MiteshTechMe:你仔细阅读帖子了吗?如果没有 - 请再读一遍
  • 据我所知,您必须手动操作。您可以使用 MiteshTechMe 的代码在您的应用程序中重置(不支持的)语言环境(以一种您可以抑制其他语言环境的方式。)

标签: android internationalization locale


【解决方案1】:

使用此代码...

    private void callSwitchLang(String langCode) {
    Locale locale = new Locale(langCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics()); 
onCreate(null);
}

在那个方法中,你传递你选择的语言代码....

【讨论】:

  • 您的回复中的 onCreate(null); 是什么。
  • onCreate(null);用于重置您的应用程序...当您调用 onCreate(null);比应用程序将您选择的语言更改为应用程序...
  • 有一种预感,所以这是一个贯穿整个生命周期的黑客行为。我知道这种方法,但 onCreate(null) 是新的。谢谢!为您的回应。
  • @MiteshTechMe:您的代码意味着我可以将语言环境更改为所需的语言并重新加载必要的资源。但是如果用户更改手机的区域设置怎么办?我怎样才能拦截这个事件,否则应用程序会加载用户设置的语言环境,嗯?
  • 通过使用此代码,应用程序区域设置将改变...之后,如果用户更改设备区域设置,则应用程序无关紧要.....
猜你喜欢
  • 2019-09-18
  • 2021-04-13
  • 2013-02-26
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多