Rails i18n и структура yml для меток форм - PullRequest
25 голосов
/ 19 августа 2010

Согласно документации ActionView .Цитата:

Текст метки будет по умолчанию соответствовать имени атрибута, если только перевод не найден в текущей локали I18n (через views.labels. . ) или вы не укажете его явно.

У меня есть модель "пользователь" и форма регистрации.Вот фрагмент соответствующей части:

<% form_for(@user) do |f| %>
    ...
    <p>
    <%= f.label :username %>
    <%= f.text_field :username, :class => 'full_width' %>
    </p>
    ...
<% end %>

Точки скрывают неважный код.

Как я понимаю документация, если я предоставляю перевод в моем файле локали, в данном случае: dk,мой dk.yml выглядит так:

dk:
    views:
        labels:
            user:
                username:
                    "blahblah"

Rails должен переводить текст метки и вставлять «blahblah» вместо «Username».

Это не происходит, поэтому я, должно быть, пропустилчто-то.Любая помощь приветствуется.

Ответы [ 3 ]

42 голосов
/ 20 сентября 2011

В Rails 3.1 это немного изменилось.

<% form_for @post do |f| %>
  <%= f.label :title %>
  <%= f.text_field :title %>
  <%= f.submit %>
<% end %>

en:
  helpers:
    label:
      post:
        title: 'Customized title'
29 голосов
/ 20 августа 2010

Я думаю, что нашел другое решение здесь.

Мое приложение было версии 2.3.5.Я изменил его на 2.3.8, и <%= f.label :username %> теперь использует перевод:

dk:
  activerecord:
    attributes:
      user:
        username:

Я нашел подсказку в этом билете:

https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n

1 голос
/ 19 августа 2010

Это потому, что метод label, который вы вызываете, не тот из ActionView::Helpers::FormHelper, а фактически метод label_tag из ActionView::Helpers::FormTagHelper.Метод form_for переписывает код в данном блоке, добавляя _tag к используемым помощникам формы.Таким образом, вы не смотрите документацию для правильного метода!

Я еще не использовал этот метод, так как иногда метка для поля может отличаться от нескольких форм, использующих одну и ту же модель, поэтому я 'я написал своего помощника.

...