направляющие i18n - перевод текста со ссылками внутри

Я хотел бы к i18n текст, который похож на это:

Уже подписанный?Авторизоваться!

Обратите внимание, что существует ссылка на текст. На этом примере это указывает на Google - в действительности это укажет на мое приложение log_in_path.

Я нашел два способа сделать это, но ни один из них не выглядит "правильным".

Первым путем я знаю, включает наличие этого мой en.yml:

log_in_message: "Already signed up? Log in!"

И по моему мнению:

<%= t('log_in_message', :url => login_path) %>

Это работает, но наличие часть на en.yml не выглядит очень чистым мне.

Другая опция, которую я знаю, использует локализованные представления - login.en.html.erb, и login.es.html.erb.

Это также не чувствует себя хорошо, так как единственная другая строка была бы вышеупомянутой; остальная часть представления (~30 строк) была бы повторена для всех представлений. Это не был бы очень DRY.

Я предполагаю, что мог использовать "локализованный partials", но это кажется также cumberstone; я думаю, что предпочитаю первую опцию наличию такого количества крошечных файлов представления.

Таким образом, мой вопрос: существует ли "надлежащий" способ реализовать это?

92
задан idmean 16 February 2016 в 13:24
поделиться

2 ответа

en.yml

log_in_message_html: "This is a text, with a %{href} inside."
log_in_href: "link"

login.html.erb

<p> <%= t("log_in_message_html", href: link_to(t("log_in_href"), login_path)) %> </p>
171
ответ дан 24 November 2019 в 06:28
поделиться

Почему бы не использовать первый способ, но разделить его на

log_in_message: Already signed up?
log_in_link_text: Log in!

И затем

<p> <%= t('log_in_message') %> <%= link_to t('log_in_link_text'), login_path %> </p>
-4
ответ дан 24 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: