5

Jaki jest DRY sposób tłumaczenia niektórych pól?Szyny I18n: skróć wywołania translate (przynajmniej w widokach)

W moim relaksującego poglądów, mam pewne powtarzające się fragmenty, jak to w show-view:

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

Teraz, zamiast pisać t("activerecord.attributes.user.attr_name") kółko, chciałbym napisać tylko t(:attr_name) (podobne do f.label :firstname w widokach formularza).

Zasadniczo nie powinno to stanowić problemu (przynajmniej dla widoków RESTful), ponieważ moduł I18n może wykonać zapytanie o metodę controller ekstrapolacji nazwy modelu, a następnie odgadnąć prawidłowy ciąg translacji.

Moje pytanie: Czy ktoś miał praktyczne doświadczenie z tym podejściem? Czy może to być nawet RubyGem? Albo: czy są pułapki, o których nie myślałem?

Odpowiedz

2

zalecany sposób to zrobić, aby umieścić to na częściowe (np app/views/user/_form.html.erb lub nawet app/views/user/_user.html.erb), a następnie poprzedzić nazwę z kropką, a więc:

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

Więcej informacji: examples (od Agile Web Development with Rails); Rails documentation

+3

Używanie stronniczości wydaje się być całkiem niezłe, ale myślę, że będzie ono WYSOKIE, jeśli ta sama zawartość będzie wyświetlana w sposób powtarzalny. Dokumentacja mówi również, że wywołanie 't ('. Foo')' z szablonu people/index.html.erb wywołuje 't ('people.index.foo')'. Nie chcę utrzymywać bałaganu w moich plikach locale ... – DMKE