繁体   English   中英

跟踪 ActiveRecord 的 i18n 验证消息的最佳方式是什么?

[英]What's the best way to keep track of ActiveRecord's i18n validation messages?

我经常忘记用我所有应用程序的语言翻译activerecord.errors.models.user.attributes.name.blank之类的东西。 有人对跟踪缺少翻译的地方有什么建议吗?

您可以做的一件事是在您的测试环境中设置I18n.config.exception_handler =:raise_i18n_exception 它不会捕捉到所有东西,但它超级简单,总比没有好。

(在 config/environments/test.rb 它只是I18n.exception_handler =:raise_i18n_exception

Gettext 是翻译中的事实标准。 它的功能非常丰富,坦率地说,我讨厌试图重新发明轮子的应用程序。 这就是为什么我总是切换到 gettext-rails(或 fastgettext)插件。

它适用于模型: http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html#Models

而且......它解决了你的问题。 Gettext 可以帮助您跟踪未翻译的字符串 - 您可以配置为向您发出尖叫或只返回未翻译的字符串(默认)。

您可以检查翻译插件,该插件为您的翻译键添加了一点 web 管理控制台(并显示缺少哪些键以及丢失的位置)。

它可能有点旧,但可以与 Rails 2 一起使用,如果您要完成修复一些配置问题的任务(或者只是选择那里已经可用的拉取请求),它甚至应该可以与 3 一起使用。

前段时间我在想一种简单的方法来在所有应用程序中共享所有常见的翻译。 这个railscasts 插曲让我知道了如何做到这一点。

简而言之,您可以链接不同的翻译后端,i18n gem 将按定义的顺序使用它们,所以我想使用 Redis 后端* 来存储所有常见的翻译(例如 AR 验证消息)并将其用作所有的后备后端我需要 i18n 的应用程序。

这种方法可以从另一个角度解决您的问题:一次编写翻译并永久共享。 此外,每当您发现丢失的翻译时,您都会为所有使用共享后端的应用程序修复它。

我还没有实现这个,因为我没有时间这样做,但我的想法是做一些类似于提到的翻译接口来管理翻译并使用 railscast 中显示的方法共享它们。

希望这会有所帮助。

* Redis或任何其他持久网络键值存储对于该任务都可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM