Переопределение имен атрибутов модели с использованием I18n - не получается - PullRequest
6 голосов
/ 14 сентября 2010

Я пытаюсь переопределить строку, используемую для описания атрибута 'login' в моей модели User, на "Имя пользователя". Я думал, что это было установлено в vendor/rails/activerecord/lib/active_record/locale/en.yml. Я попытался изменить его здесь и в моем config/locales/en.yml файле, и ни в одном случае он не работает (я перезагружаю сервер после каждого изменения).

В обоих случаях это делается так:

en:
...
  activerecord:
    attributes:
         user:
           login: User Name

Когда я проверяю это, например, имея f.label: логин в моей новой форме пользователя, он появляется как «Логин», а не «Имя пользователя». Я работаю под какой-то фундаментальной ошибкой о том, как это работает, или это действительно не работает? В любом случае, кто-нибудь может сказать мне, как это исправить? спасибо, макс

Ответы [ 4 ]

2 голосов
/ 16 марта 2015

Я отвечаю на это здесь по запросу кого-то ... Я исправил это и не обновил свой вопрос, извините.Я был в правильных строках в своем вопросе, но у меня не было правильного «пути» к клавишам: названия полей, как они отображаются, называются «метками», и у них есть свой собственный раздел за пределами: activerecordчасть ямля.

Правильный способ сделать это -

en:
  user:
    labels:
      login: "User Name"
      email: "Email Address"

, где «пользователь» - это название модели в нижнем регистре, а логин и адрес электронной почты - поля.

2 голосов
/ 12 сентября 2013

В случае, если у кого-то из вас возникли проблемы, перевод не загружается, я отлаживаю так:

Сначала я использую скрипт в https://stackoverflow.com/a/10211540/474597 для настройки ведения журнала.Затем, когда я запускаю сервер и отображаю страницы, я вижу в этом журнале ключи, используемые для получения переводов.Затем я могу проверить, правильны ли используемые мной ключи.


Одна ловушка заключается в том, что первый ключ не обязательно является ключом, который они будут использовать.Я видел случаи, когда он загружает правильный ключ, а затем ищет другой ключ, который не имеет перевода, что приводит к переводу на английский язык.Мне пришлось поместить перевод в эти два ключа.

Например: мой Foo has_many Bar и Bar has_many Duu, а Duu имеет столбец цены.Чтобы перевести этот ценовой столбец, я должен иметь следующее, чтобы оно работало:

  activerecord:
    attributes:
      'foo/bar/duu':
        price: "price"

Даже при том, что журнал имеет это:

:duu
:"activerecord.attributes.duu.text"
:"activerecord.errors.models.duu.attributes.text.blank"
:"activerecord.errors.models.duu.blank"
:"activerecord.errors.messages.blank"
:"errors.attributes.text.blank"
:"errors.messages.blank"
:"activerecord.attributes.foo/bars/duus.text"
1 голос
/ 17 января 2013

Я думаю, что вы можете найти то, что вы ищете здесь: http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

0 голосов
/ 15 сентября 2010

Вы можете сохранить строку «Имя пользователя» под любым именем в файле en.yml:

en:
 user:
   user_name: User Name

и по вашему мнению

<%= f.label :login, t('user.user_name') %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...