【问题标题】:Android : Restrict Language in an ApplicationAndroid:限制应用程序中的语言
【发布时间】:2012-06-24 17:14:45
【问题描述】:

是否可以在 android 应用程序中限制语言,即当用户更改语言时,我只希望英语和法语语言需要生效。问题是当用户选择荷兰语时,选项菜单名称是英文但 MORE(如果有更多选项要显示,系统生成的菜单选项)是荷兰语。我希望 More 是英文的。
请帮忙
尼茨

【问题讨论】:

  • 那么您想要做的是修改用户的语言设置,以便系统级菜单的工作方式有所不同?为什么?
  • 我的应用程序将只支持两种语言!!!我希望更多是英语或法语
  • 所以你说荷兰语的人总是能听懂英语?为什么不联系一些可以翻译您的应用程序中的字符串以使其成为多语言的人?
  • 我认为你可以做一些类似的事情,如果用户选择了 Dutch lang,然后当涉及到你的活动时,有菜单 MORE ..so 以编程方式将语言环境更改为 ENGLISH,并尽快由于菜单被隐藏或在 Activity onDestroy 中再次将 LOCALE 更改为荷兰语。

标签: android android-menu


【解决方案1】:

您可以在应用程序中以编程方式设置语言环境:

  Configuration configuration = context.getResources().getConfiguration();
  configuration.locale = new Locale(selectedLanguage);
  context.getResources().updateConfiguration(configuration, context.getResources().getDisplayMetrics());

其中 selectedLanguage 是保存您的语言缩写的变量,而 context 保存对 Context 的引用。

这些关于 SO 的早期答案进一步讨论了可能的解决方案:

Change language settings (locale) for the device

Changing Locale within the app itself

Change language programmatically in Android

【讨论】:

    【解决方案2】:

    当您按下菜单键时,选项中显示的“更多”一词是系统生成的字符串,因此无论您的应用支持什么系统语言,它都会匹配任何系统语言。

    如果您希望“更多”一词以法语或英语显示,您必须减少您拥有的菜单项的数量,以便系统不会显示它,然后手动添加“更多” “ 选项。您手动添加的更多选项不会自动显示其余菜单选项,因此您必须将它们移动到它们自己的上下文菜单中。

    【讨论】:

      【解决方案3】:

      我认为您可以通过两种方式解决您的问题。

      第一个,将“更多”资源字符串更改为如下资源文件:

      <?xml version="1.0" encoding="utf-8"?>
      <resources xmlns:tools="http://schemas.android.com/tools"tools:ignore="MissingTranslation">
          <string name="more_btn">More</string>
      </resources>
      

      或者,您可以简单地将字符串值复制到 values-fr 和 values-en 目录中。

      【讨论】:

      • @NitZRobotKoder,我以为您正在实现自己的上下文菜单。就本机而言,我认为你做不到,但我对此不是 100% 确定。
      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 2011-09-19
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多