symfony & translation: как переводить стандартные выражения и формы? - PullRequest
1 голос
/ 16 октября 2019

Впервые в Symfony Я создал форму входа (make: auth) и установил переводчик. Я добавил в шаблон формы login.html.twig

    {% block body %}
    <h1>{% trans %}Hello{% endtrans %}</h1>
    <form method="post">
...

и определил в каталоге переводов файл messages.fr.yml, содержащий Hello: Bonjour.

, который работает и когда я отображаю свойформа, привет хорошо переведен на Bonjour

Но все остальные метки не переведены (имя пользователя, пароль и т. д.)

, что представляется логичным, поскольку записи не имеют {% trans %} {% endtrans %} команды

    <h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<label for="inputUsername" class="sr-only">Username</label>

вопрос 1: есть ли способ автоматического перевода всех этих меток?

вопрос 2: существуют ли файлы перевода, содержащие все стандартные используемые сообщения / метки?

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

По умолчанию для меток формы используется «очеловеченная» версия. И тогда он может быть переведен в область перевода messages.

Это можно изменить, установив label в форме (элементе) напрямую, либо в компоновщике

->add('fieldName', TextType::class, [
      'label' => 'fieldName_translation_key',
])

или в шаблоне:

{{ form_row(form.fieldname, {label: 'fieldname_translation_key'}) }}

{# this also works with form_widget/form_label, depending on the form element #}

Если вы хотите использовать переводы ключевых слов для полей, вы можете установить label_format в самой форме (в configureметод, как опция) или для всех его элементов вручную (с указанием заполнителей ).

Лично я предпочитаю метод label_format, потому что я редко отображаю форму "вручную".

Вы также можете установить параметр translation_domain, чтобы изменить используемый домен перевода (messages) на что-то другое.

0 голосов
/ 16 октября 2019

для управления переводом в ветке есть соответствующая функция trans (пример):

<label for="inputUsername" class="sr-only">{{'username' | trans}}</label>

и в вашем messages.fr.yml добавьте:

username: "Nom d 'utilisateur "

...