Rails i18n:翻訳呼び出しを短くする(少なくともビューで)
-
25-10-2019 - |
質問
特定のフィールドを翻訳する乾燥方法は何ですか?
私の安らかな眺めでは、ショービューでこのような繰り返しのスニペットがあります。
...
<dt><%= t("activerecord.attributes.user.firstname") %></dt>
<dd><%= @user.firstname %></dd>
...
今、書く代わりに t("activerecord.attributes.user.attr_name")
何度も何度も書きたいだけです t(:attr_name)
(に似ている f.label :firstname
フォームビューで)。
基本的に、これは(少なくとも残りのビューでは)問題ではないはずです。I18Nモジュールは controller
モデル名を外挿して、正しい翻訳文字列を推測する方法。
私の質問:誰かがこのアプローチで実践的な経験をしましたか?それのためのルビーグさえあるでしょうか?または:落とし穴はありますか、私は考えていませんか?
解決
私は思われる、 ActiveModel::Translation#human_attribute_name
トリックはありますか(例: <%= User.human_attribute_name :firstname %>
).
他のヒント
これを行うための推奨される方法は、これを部分的なものにすることです(例: app/views/user/_form.html.erb
あるいは app/views/user/_user.html.erb
)、次に、先頭のドットで名前の前に、したがって:
<dt><%= t(".firstname") %></dt>
<dd><%= user.firstname %></dd>
詳しくは: 例 (から Railsを使用したアジャイルWeb開発); Railsドキュメント
所属していません StackOverflow