Question

Quelle est la façon DRY de traduire certains champs?

Dans mon point de vue RESTful, j'ai quelques extraits de répétition, comme celui-ci dans un show-vue:

...
<dt><%= t("activerecord.attributes.user.firstname") %></dt>
<dd><%= @user.firstname %></dd>
...

Maintenant, au lieu d'écrire t("activerecord.attributes.user.attr_name") encore et encore, je voudrais écrire que t(:attr_name) (similaire à f.label :firstname sous la forme-vues).

En fait, cela ne devrait pas être un problème (au moins pour les vues RESTful), car le module I18n peut interroger la méthode controller pour extrapoler le nom du modèle et devinez juste la chaîne de traduction correcte.

Ma question: Est-ce que quelqu'un a une expérience pratique avec cette approche? Y aurait-il même un rubygem pour cela? Ou: y at-il des pièges, je ne pensais pas

?
Était-ce utile?

La solution

Je semble, ActiveModel::Translation#human_attribute_name le tour est joué (par exemple <%= User.human_attribute_name :firstname %>).

Autres conseils

La méthode recommandée pour ce faire est de mettre cela en une partie (par exemple app/views/user/_form.html.erb ou même app/views/user/_user.html.erb), puis faites précéder le nom commençant par un point, donc:

<dt><%= t(".firstname") %></dt>
<dd><%= user.firstname %></dd>

Plus d'informations: exemples ( Agile Web Development avec Rails ); documentation Rails

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top