首页 > 解决方案 > Rails 5:以重音字符开头的“人性化”短语不会大写它们

问题描述

根据官方文档,本地化工作正常。但是我发现 Rails 的humanize方法不能正确地将句子的第一个字符大写,如果它是重音的。

例如,如果我在config/locales/fr.yml 中有

fr:
  about_me: "à propos de moi"

...并在视图中:

<%= t("about_me").humanize %>

...浏览器中的输出是

我的提议

...而应该是

一个建议

如果我将 更改àahumanize则按预期工作。

请注意,在法语中,大写字母的重音有时会被省略,但让我们把它放在一边。我会很高兴:

À 提议 de moi

我是否只需要硬编码 YAML 文件中的大写字母来解决这个问题?我自然不想诉诸于此。

标签: ruby-on-railsinternationalizationrails-i18n

解决方案


我建议在 YAML 中进行,大小写取决于语言和上下文;例如,德语将所有名词大写,但英语仅将专有名词和您已经知道的法语中的重音问题,德语之间的关系ßSS。通过简单的字符串操作来正确处理非常容易出错。您最好将人类可读的字符串视为从 I18N/L10N 字符串数据库中提取并按原样提供给用户的不透明且不可变的数据片段。

这是更多的工作,但正确是很重要的。


推荐阅读