我经常忘记在我的所有应用语言中翻译activerecord.errors.models.user.attributes.name.blank
之类的内容。有没有人有任何关于跟踪翻译缺失的建议?
答案 0 :(得分:3)
您可以做的一件事是在测试环境中设置I18n.config.exception_handler = :raise_i18n_exception
。它不会捕捉到一切,但它超级简单,比没有更好。
(在config / environments / test.rb中,它只是I18n.exception_handler = :raise_i18n_exception
)
答案 1 :(得分:2)
Gettext是翻译中事实上的标准。它非常丰富,坦率地说我讨厌尝试重新发明轮子的应用程序。这就是为什么我总是切换到gettext-rails(或fastgettext)插件。
适用于模特:http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html#Models
而且......它解决了你的问题。 Gettext可以帮助您跟踪未翻译的字符串 - 您可以配置为尖叫或只返回未翻译的字符串(默认)。
答案 2 :(得分:2)
您可以查看为您的翻译密钥添加一个小型Web管理控制台的translate插件(并显示缺少哪些密钥以及在哪里)。
这可能有点旧了,但是可以使用Rails 2,如果你能解决一些配置问题(或者只是拿起那里已有的拉取请求),那么即使是3也应该可以工作。
答案 3 :(得分:1)
前段时间我想用一种简单的方法来分享所有应用中的所有常见翻译。这railscasts episode给了我一个关于如何做到这一点的想法。
简而言之,你可以链接不同的翻译后端,i18n gem将按照定义的顺序使用它们,所以我想使用Redis后端*存储所有常见的翻译(例如AR验证消息)并将其用作后备所有需要i18n的应用程序的后端。
这种方法可以从另一个角度解决您的问题:编写一次翻译并永久分享。此外,每当您发现缺少翻译时,您都会为使用共享后端的所有应用程序修复它。
我还没有实现这个,因为我没有时间这样做,但我的想法是做一些类似上面提到的translate interface来管理翻译并使用railscast中显示的方法分享它们。
希望这会有所帮助。
* Redis或任何其他持久性网络键值存储可以用于该任务。