@Qixing

Как включить перевод в symfony для форм?

Сделал все по инструкции.
Файл app/config.yml
framework:
    #esi:             ~
    translator:      { fallback: "%locale%" }
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
        assets_version: 0.1a
    default_locale:  "%locale%"

В parameters.yml locale указан
locale: ru
Мой messages.ru.yml который лежит src/MyBundle/Resources/translations/messages.ru.yml
form:
    maker: Производитель
    category: Раздел


Генератор формы
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(
                'maker',
                'entity',
                array(
                    'class' => 'MyBundle:ItemMaker',
                    'property' => 'name',
                    'empty_value' => '-- Все --'
                )
            )

        ->add(
        'category',
        'entity',
        array(
            'class' => 'MyBundleCategory',
            'property' => 'name',
            'empty_value' => '-- Все --'
        )
    );
    }

Проверяем дебагером:
dcc8a60aed464ac493782c2429f7e424.png

Делаю вывод формы:
<div class="filterForm__fld">
                  
                    <div class="filterForm__fld__title">
                        {{ form_label(form.maker) }}
                    </div>

                        {{ form_widget(form.maker, { 'attr': {'class': 'select select_t1 w100p'} }) }}
                </div>
                <div class="filterForm__fld">
                    <div class="filterForm__fld__title">
                        {{ form_label(form.category) }}
                    </div>
                    {{ form_widget(form.category, { 'attr': {'class': 'select select_t1 w100p'} }) }}
                </div>


В итоге лейблы {{ form_label(form.maker) }} не переведены , так и выводятся maker и category
  • Вопрос задан
  • 3384 просмотра
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
не делайте в messages.ru.yml раздел "forms:", поставьте перевод прямо так, как написано на странице. У вас в форме поля maker и category, а на странице они выводятся как Maker и Category. Так?
Напишите в переводе именно так:
Maker: Создатель
Category: Категория

Ну а если хотите добавлять префикс form, то добавьте в описание формы атрибут label:
$builder
        ->add(
            'maker',
            'entity',
            array(
                'label' => 'form.maker',
                'class' => 'MyBundle:ItemMaker',
                'property' => 'name',
                'empty_value' => '-- Все --'
            )
        )

        ->add(
            'category',
            'entity',
            array(
                'label' => 'form.category',
                'class' => 'MyBundleCategory',
                'property' => 'name',
                'empty_value' => '-- Все --'
            )
);

то есть, укажите label в том же виде, как фреймворк его видит в файле перевода. Но тогда не забудьте добавить и английский перевод! (если он вам нужен)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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