Какой тег yaml для I18n перевода кнопок действий в Rails? - PullRequest
0 голосов
/ 10 октября 2019

В моем приложении RoR 5.2 я создаю кнопки для определенных действий:

<%= button_to t('MakeCurrent'), make_current_business_rule_path(@business_rule.id), class: "buttons mid_menu" %>

Я пытался вставить переведенный ярлык в файл помощника yaml:

en:
  helpers:
    submit:
      business_area:
        create: "Create Business Area"
        update: "Update Business Area"
        MakeCurrent: "Activate this version"

Это работает длясоздавать и обновлять метки, которые являются частью стандартной формы, но не с меткой MakeCurrent, переданной методу button_to. Какая будет правильная точка входа в структуру yaml?

Большое спасибо!

1 Ответ

1 голос
/ 10 октября 2019

Это просто не то, как работает поиск I18n. Помощники по формам автоматически используют ключи с областью действия, поскольку это ограниченный вариант использования. Было бы очень удивительно и откровенно глупо, если бы Rails просто дико догадался, что произвольная кнопка - это то же самое, что и отправка формы.

Если вы хотите использовать этот ключ, вы можете использовать полный путь или передать областьна I18n.t:

t('helpers.submit.business_area.MakeCurrent')
t('MakeCurrent', scope: 'helpers.submit.business_area')

Если вы хотите сделать поиск динамическим на основе модели, вы можете использовать ActiveModel :: Naming , чтобы получить ключ перевода:

t('MakeCurrent', scope: [:helpers, :submit, @object.class.model_name.i18n_key])

Вы должны также назвать свои ключи в snake_case, чтобы следовать принципу наименьшего удивления.

...