【问题标题】:Application with two languages两种语言的应用程序
【发布时间】:2013-02-21 22:09:58
【问题描述】:

我想用两种语言提出申请。当应用程序启动时,将有两个按钮:第一个按钮用于语言 X,第二个按钮用于英语。当我单击其中一个语言按钮时,应用程序应该以相应的语言启动。但我不知道该怎么做。有可能吗?

【问题讨论】:

  • 这是一个非常广泛的问题。我建议您查看 Android 对 localization 的支持
  • 有可能。如果您想知道究竟是什么 - 对于 Stack Overflow 来说答案太长了。熟悉 Android 上的本地化技术。
  • 您是否有任何特殊原因要在您的应用中为用户提供选择,而不是使用他们已经在系统范围内选择的选项?最佳做法是使用他们在手机其余部分使用的语言,以及Android provides simple ways to do so

标签: android localization internationalization


【解决方案1】:

更改应用的区域设置如下:

private void setLocale(Locale locale) {
    Locale.setDefault(locale);
    Resources res = getContext().getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    android.content.res.Configuration conf = res.getConfiguration();
    conf.locale = locale;
    res.updateConfiguration(conf, dm);
}

除此之外,您当然需要至少提供本地化的strings.xml

不过,如果没有更多细节,我会质疑您为什么要这样做。用户应从 Android 的设置中选择语言,并且您的应用应遵循设备的语言。这会自动发生 - 系统将选择您提供的符合语言条件的资源。

我不会尝试在此处发布有关如何提供本地化资源的指南。详情请参考Android documentation

【讨论】:

    【解决方案2】:

    当您单击其中一个按钮时,您可以在该按钮的setOnClickListener() 中设置new Locale('languageCode')

    然后重新初始化将在正确的语言环境中重新呈现的文本元素

    【讨论】:

      【解决方案3】:

      这是我的方法,对我来说很容易做到。

      使用语言作为限定符创建一组资源(绘图、字符串、布局、菜单等)。

      当您的主要活动从两个按钮开始时,在您的按钮的单击侦听器的回调方法中操作那里的语言环境时,我认为系统会根据您的语言限定符确定要使用哪些资源。

      【讨论】:

        【解决方案4】:

        本地化始终是可能的,但同样的概念也适用于 Android/智能手机和计算机。如果电话本身设置为以某种语言显示,那么您的应用程序也应该以该语言显示。作为开发人员,您的工作是确保您的解决方案和编程符合 Unicode,并处理您可能期望的某些语言特有的适当字符。

        【讨论】:

          【解决方案5】:

          如果您想使用不同的语言,您最好尝试为所需的每种语言使用不同的字符串。例如:

          values/strings.xml
          values/strings-de.xml
          values/strings-sk.xml
          values/strings-pl.xml
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-04-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多