Rails 5: 'humanize' 以重音字符开头的短语没有大写
Rails 5: 'humanize' phrases that start with an accented character doesn't capitalize them
根据 the official documentation,本地化工作正常。但是我发现 Rails' humanize
方法不能正确地将句子的第一个字符大写,如果它是重音的话。
例如,如果我在 config/locales/fr.yml:
fr:
about_me: "à propos de moi"
...并且在视图中:
<%= t("about_me").humanize %>
...浏览器中的输出是
à propos de moi
...而应该是
A propos de moi
如果我将 à
更改为 a
,humanize
将按预期工作。
请注意,在法语中,大写字母的重音是 sometimes omitted,但让我们把它放在一边。我会很高兴:
À propos de moi
我是否只需要对 YAML 文件中的大写字母进行硬编码来解决这个问题?自然我不想诉诸于此。
我建议在 YAML 中进行,大小写取决于语言和上下文;例如,德语将所有名词大写,但英语仅将专有名词大写和您已经知道的法语中的重音问题,德语中 ß
和 SS
之间的关系等。头脑简单的字符串操作很容易出错。您最好将人类可读的字符串视为从 I18N/L10N 字符串数据库中提取并按原样提供给用户的不透明且不可变的数据片段。
这需要更多的工作,但保持正确很重要。
根据 the official documentation,本地化工作正常。但是我发现 Rails' humanize
方法不能正确地将句子的第一个字符大写,如果它是重音的话。
例如,如果我在 config/locales/fr.yml:
fr:
about_me: "à propos de moi"
...并且在视图中:
<%= t("about_me").humanize %>
...浏览器中的输出是
à propos de moi
...而应该是
A propos de moi
如果我将 à
更改为 a
,humanize
将按预期工作。
请注意,在法语中,大写字母的重音是 sometimes omitted,但让我们把它放在一边。我会很高兴:
À propos de moi
我是否只需要对 YAML 文件中的大写字母进行硬编码来解决这个问题?自然我不想诉诸于此。
我建议在 YAML 中进行,大小写取决于语言和上下文;例如,德语将所有名词大写,但英语仅将专有名词大写和您已经知道的法语中的重音问题,德语中 ß
和 SS
之间的关系等。头脑简单的字符串操作很容易出错。您最好将人类可读的字符串视为从 I18N/L10N 字符串数据库中提取并按原样提供给用户的不透明且不可变的数据片段。
这需要更多的工作,但保持正确很重要。