Frage

Was ist der trockene Weg, um bestimmte Felder zu übersetzen?

In meinen erholsamen Ansichten habe ich einige wiederholte Ausschnitte wie diese in einer Show-Ansicht:

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

Jetzt anstatt zu schreiben t("activerecord.attributes.user.attr_name") Immer wieder möchte ich nur schreiben t(:attr_name) (ähnlich zu f.label :firstname in den Formviews).

Grundsätzlich sollte dies kein Problem sein (zumindest für die erholsamen Ansichten), da das i18n -Modul die abfragen könnte controller Methode, um den Modellnamen zu extrapolieren und dann einfach die richtige Übersetzungszeichenfolge zu erraten.

Meine Frage: Hatte jemand praktische Erfahrung mit diesem Ansatz? Könnte es sogar ein Rubygem dafür geben? Oder: Gibt es Fallstricke, habe ich nicht gedacht?

War es hilfreich?

Lösung

Ich scheint, ActiveModel::Translation#human_attribute_name macht den Trick (zB <%= User.human_attribute_name :firstname %>).

Andere Tipps

Die empfohlene Möglichkeit, dies zu tun app/views/user/_form.html.erb oder auch app/views/user/_user.html.erb) und dann dem Namen mit einem führenden Punkt vor, somit:

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

Mehr Informationen: Beispiele (aus Agile Webentwicklung mit Schienen); Schienendokumentation

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top