在樹枝模板中翻譯內容看起來簡單直接:我運行bin/console translation:update
來填充翻譯文件。問題在於它似乎忽略了表單。如何翻譯Symfony 3格式?
在創建實體,存儲庫和表單/類型之後,我在樹枝模板中使用{{ form_row(form.field) }}
來繪製表單元素。
在如何自定義和翻譯表單標籤,佔位符和錯誤消息方面是否有一套行之有效的做法?
必須使用form_label
和form_widget
而不是form_row
來自定義標籤嗎?
在樹枝模板中翻譯內容看起來簡單直接:我運行bin/console translation:update
來填充翻譯文件。問題在於它似乎忽略了表單。如何翻譯Symfony 3格式?
在創建實體,存儲庫和表單/類型之後,我在樹枝模板中使用{{ form_row(form.field) }}
來繪製表單元素。
在如何自定義和翻譯表單標籤,佔位符和錯誤消息方面是否有一套行之有效的做法?
必須使用form_label
和form_widget
而不是form_row
來自定義標籤嗎?
您可以創建例如這裏命名forms.es.yml
文件,你可以把你TRADUCTIONS在西班牙,並在您的形式,你可以像這樣的IT連鎖:
//LoginType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email',
EmailType::class,
[
'translation_domain' => 'forms', //It's translate the label
'constraints' => [
new Email([
'message' => 'email'
])
]
]
)
->add('password',
RepeatedType::class,
[
'type' => PasswordType::class,
'invalid_message' => 'cliente.password_not_equal',
'first_options' => ['label' => 'cliente.password'],
'second_options' => ['label' => 'cliente.repeat_password'],
'translation_domain' => 'forms', //Here is again
'constraints' => [
new NotBlank([
'message' => 'not_blank'
])
]
]
)
->add('current_uri', HiddenType::class);
}
它的工作原理,因爲symfony的2
另一種方法是在你的樹枝,只打印控件和翻譯標籤:
//index.html.twig
<label>
{{'form.email'|trans({})}}
{{ form_widget('form.email') }} //It only prints the input tag
</label>
是一種簡單的方法,但不太可重複使用的。
我認爲第一種方法運作良好。我面臨的唯一問題是:如果我運行'bin/console translation:update en',它似乎忽略了我所有的表單。我需要手動維護翻譯文件嗎? – user3429660
對不起,但我想是的。如果有辦法自動執行,我不知道它:c。其實我手動維護它。 – Koronos
對我來說只有2ed的方式工作? –
要作爲文檔https://symfony.com/doc/current/validation/translations.html
解釋你需要用的key/value票面validators.lang_used.format文件轉換形式錯誤。然後通過消息密鑰的Assert驗證通過密鑰。
在實體
// src/Entity/Author.php
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank(message="author.name.not_blank")
*/
public $name;
}
在表單創建
$form = $this->createFormBuilder()
->setMethod('GET')
->add('email', TextType::class, [
'constraints' => [
new NotBlank(['message' => 'error.not_blank']),
],
'label' => 'label.email-domain'
])
->getForm();
要翻譯標籤只是傳遞的鑰匙,「標籤」,按鍵需要的前綴標籤一個現場直播的消息。*文件。
翻譯上查看純文本(鍵/值對郵件定義。*文件)
{{ 'save_button'|trans }}
瞧https://github.com/symfony/demo找實體定義翻譯的例子,查看文件和表單類型
不要你使用FormTypes?嘗試將轉換器注入FormType並轉換字段標籤。 – Chris