ruby-on-rails - Rails 5:以重音字符开头的“人性化”短语不会大写它们
问题描述
根据官方文档,本地化工作正常。但是我发现 Rails 的humanize
方法不能正确地将句子的第一个字符大写,如果它是重音的。
例如,如果我在config/locales/fr.yml 中有:
fr:
about_me: "à propos de moi"
...并在视图中:
<%= t("about_me").humanize %>
...浏览器中的输出是
我的提议
...而应该是
一个建议
如果我将 更改à
为a
,humanize
则按预期工作。
请注意,在法语中,大写字母的重音有时会被省略,但让我们把它放在一边。我会很高兴:
À 提议 de moi
我是否只需要硬编码 YAML 文件中的大写字母来解决这个问题?我自然不想诉诸于此。
解决方案
我建议在 YAML 中进行,大小写取决于语言和上下文;例如,德语将所有名词大写,但英语仅将专有名词和您已经知道的法语中的重音问题,德语之间的关系ß
等SS
。通过简单的字符串操作来正确处理非常容易出错。您最好将人类可读的字符串视为从 I18N/L10N 字符串数据库中提取并按原样提供给用户的不透明且不可变的数据片段。
这是更多的工作,但正确是很重要的。
推荐阅读
- javascript - 在 Heroku 上部署应用程序后,浏览器未收到 JWT cookie
- python - [DRF]:序列化程序中具有相关 ID 的额外字段
- python - 如何在不告诉c位置的情况下向数组添加值
- ios - 在 Testflight 中上传 iPA 失败
- angular - Ionic - Anguler:使用 HttpClient 获取数据
- swift - NavigationLink 不会转到下一个屏幕?
- python - 子类化 sklearn LinearSVC 以用作 sklearn GridSearchCV 的估计器
- tensorflow - 加载 keras 模型 h5 时出错,需要将模型从 tf.keras 转换为 keras
- c# - 如何仅将项目添加到以前未添加的列表中?(C# - ASP.NET)
- typescript - 如何在 Microsoft Visual Studio 2019 中调试 nestjs 程序?