#forms #symfony #dns #translation
#формы #symfony #dns #перевод
Вопрос:
у меня есть тип формы, например:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', null, [
'translation_domain' => 'Admin.Global',
])
->add('isoCode', null, [
'translation_domain' => 'Admin.Global',
])
->add('languageCode')
->add('flag_image', FileType::class, [
'mapped' => false,
'label' => 'flag',
'constraints' => [
new Image([
'maxSize' => '1024K'
])
],
'required' => false,
'translation_domain' => 'Admin.Global',
])
->add('active', CheckboxType::class, [
'label_attr' => [
'class' => 'switch-custom'
]
])
->add('isDefault', CheckboxType::class, [
'label_attr' => [
'class' => 'switch-custom'
]
]);
}
после того, как я выполню команду:
php bin/console translation:update --force en(or zh_CN)
только метка ‘name’ в Admin.Глобальный международный-icu.ru(или zh_CN).xlf файл
почему изокод и флаг не в файле xlf? и мне добавить ‘translation_domain’ => ‘Admin.Глобальный’, для каждого formtype?
Комментарии:
1. Попробуйте изменить
name
поле в этой форме на ключ, который больше нигде не встречается в вашем проекте. Например, используйтеname123
вместоname
. Запустите команду еще раз и посмотрите, попадает лиname123
ключ в файл xlf. Я почти уверен, что он туда не попадет.2. @xtx я меняю его на name123 или добавляю ‘label’ => ‘name1234’, тоже не работает
Ответ №1:
Проблема в том, что translation:update
команда, согласно документам, извлекает строки для перевода только из 2 местоположений:
- шаблоны
- любой PHP-файл / класс, который вводит или автоматически подключает службу translator и вызывает метод trans() .
Ваш класс типа формы не является ни одним из этих двух, поэтому он не обрабатывается.
Вы упомянули, что метка имени попадает в xlf-файл, в то время как другие метки этого не делают. Очевидно, что имя попало туда из какого-то другого места (например, из шаблона), а не из класса form.
Для обработки классов типов форм вы можете установить JMSTranslationBundle. Он предоставляет другую команду, translation:extract
, которая, помимо прочего, поддерживает извлечение сообщений из (цитата из документов):
все метки формы, которые определены как опции для метода -> add() FormBuilder