【问题标题】:am/pm strings not localized/translated when using DateFormat使用 DateFormat 时 am/pm 字符串未本地化/翻译
【发布时间】:2014-05-15 17:37:23
【问题描述】:

当我的应用加载时,我会获取设备的设置,以便根据用户的区域设置显示日期/时间。如下图所示,模式是正确的,但 am/pm 标记没有翻译成相应的语言(在这种情况下,语言是希腊语,本地语言是“el_GR”)。有办法解决吗?

"am/pm" should be automatically translated to "πμ/μμ"


public static final DateFormat USER_DF_TIME = DateFormat.getDateTimeInstance(DateFormat.SHORT,
        DateFormat.SHORT, Locale.getDefault());

【问题讨论】:

    标签: java android simpledateformat date-formatting


    【解决方案1】:

    经过进一步调查,我发现了一个类似 Java 6 的 bug,"Swedish localization has incorrect am/pm markers"。这个 bug 早在 2007 年就被报告过,最终在 2011 年得到解决。

    另外,根据 Oracle 官方页面"The set of supported locales varies between different implementations of the Java Platform Standard Edition (Java SE)"

    在各种设备上测试我的代码,我发现它在 android 4.1.2 和 4.4 上都能正常工作,但问题仍然存在于我的 android 4.1.1 设备上。鉴于 old android's Java version is similar to Java 6 我推断这是一个 Java 语言问题,在较新的版本中得到了解决。

    【讨论】:

      【解决方案2】:

      我没有发现您的代码有问题。

          private static final Locale GREEK_LOCALE = new Locale("el", "GR");
          public static final DateFormat USER_DF_TIME = DateFormat.getDateTimeInstance(DateFormat.SHORT,
                  DateFormat.SHORT,GREEK_LOCALE );
          String dateString =USER_DF_TIME.format(new java.util.Date());
          System.out.println(dateString);
      

      正确返回 15/5/2014 2:11 μμ(我现在在 EST)

      您的默认语言环境似乎有问题。 跟随 https://stackoverflow.com/a/4212671/2182351 获取正确的语言环境

      【讨论】:

      • 非常感谢您的意见@Mani。它帮助我寻找正确的方向以找到问题(见下文我的详细信息)。请问你是在哪个安卓版本上测试代码的?
      • 希望代码不需要/使用任何 Android SDK,那么它在 Android 中重要吗? (注意**我不是安卓程序员)
      • 所以在调试代码时,您可以看到实际值,但在 Android 面板中绘画时,您是否遇到此问题?
      • 当我在 Eclipse 中运行您的代码时,但在 Android 之外,我执行了 new Locale("el", "GR");并且输出是正确的。但是当我在物理设备上执行 Locale.getDefault() 时,调试器向我显示了我在上面发布的图像。
      • 有一些建议从 Android 中获取 Default Locale 值。 getResources().getConfiguration().locale stackoverflow.com/a/8747730/2182351 。我不是 Android 专家来评论。所以检查一下。似乎问题不在于您格式化它的方式是因为 Locale.getDefault。尝试打印 hte Locale.getDefault 值并发布
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 2016-09-14
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多