簡體   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