【问题标题】:Lowercase of nouns not correct in German德语名词小写不正确
【发布时间】:2016-01-07 10:35:41
【问题描述】:

我的应用程序使用不同语言的资源包 (I18N)。

string.toLowerCase()

整个应用程序都使用小写字母来组合句子。

问题德语名词的小写不正确。

资源包:

  • 英文:resource_day = Day
  • 德语:resource_day = Tag

句子:

  • 英文:这是第一个day。
  • 德语:Dies ist der erste Tag.

如您所见:德语使用大写字母作为名词。

代码:

sentence = resource_start + number + resource_day.toLowerCase();

区分英语和德语的最佳方法是什么?

【问题讨论】:

  • 如何将资源包中的单个单词保持小写(但在德语名词的情况下大写)并在需要时将它们变为大写(即与您当前的方法相反)?
  • 我希望不要这样做,但这可能是唯一的解决方案。我的资源包很长,并且到处都使用此字符串连接。这将在大量工作中证明存在忘记某些关键字的风险。感谢您的意见。
  • 你为什么还要麻烦组合句子?只需将它们全部写出来,您将拥有正确的德语大写更少用于组合文本的无用逻辑。
  • 这句话只是一个例子。其他示例是在输入字段之前和之后的下拉框或标签之后的关键字。不是一个理想的世界,但这是项目的当前状态。感谢您的反馈。

标签: java locale lowercase


【解决方案1】:

最好的方法是在资源中存储完整的句子并为可变部分使用占位符:

ZH

resource_day = This is the {0} day.
day_first = first

德国

resource_day = Dies ist der {0} Tag.
day_first = erste

并将其用作

String day_number = "day_first";
MessageFormat.format(RESOURCE_BUNDLE.getString("resource_day"), 
   RESOURCE_BUNDLE.getString(day_number);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2021-10-30
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多