在form.placeholder Symfony 4中进行内部转换

时间:2018-10-30 11:27:29

标签: symfony symfony4

我正在根据数据库(而非语言环境)中定义的值来翻译我的应用程序。

这是表格的一部分:

$builder
        ->add('email', EmailType::class, array( 'required' => 'required', 'attr' => array( 'class' => 'form-control','placeholder' => 'Email')))
        ->add('username', TextType::class, array( 'required' => 'required', 'attr' => array( 'class' => 'form-control', 'autofocus' => 'autofocus','placeholder' => 'Username')))
        ->add('plainPassword', RepeatedType::class, array(
            'type' => PasswordType::class,
            'first_options'  => array('label' => 'Password', 'attr' => array( 'class' => 'form-control repeat', 'placeholder' => 'Password')),
            'second_options' => array('label' => 'Repeat Password', 'attr' => array( 'class' => 'form-control', 'placeholder' => 'Repeat password')),
        ))
        ->add('termsAccepted', CheckboxType::class, array(
            'mapped' => false,
            'constraints' => new IsTrue(),
            'attr' => array('class' => 'pull-left')
    ))
    ;

这是我的树枝模板的一部分

<h1 class="h3 mb-3 font-weight-normal form-header">{% trans into lang %}Register{% endtrans %}</h1>
{{ form_start(form, { 'attr': {'class': 'form-signin'} }) }}
{{ form_row(form.username, {'label':false}) }}
{{ form_row(form.email, {'label':false}) }}
{{ form_row(form.plainPassword.first, {'label':false}) }}
{{ form_row(form.plainPassword.second, {'label':false}) }}
{{ form_row(form.termsAccepted, {'label':false}) }}
<p class="terms">Check here to indicate that you read and agree the  <a href="{{ path('privacy_policy') }}">Privacy Policy.</a></p>
<button class="btn btn-lg btn-primary btn-block" type="submit">Register</button>
{{ form_end(form) }}

基于: {%trans into lang%}要翻译的文本{%endtrans%}

如果我尝试翻译整个字段,请以“仅翻译可以简单地进行文本翻译”作为例外。

有什么技巧可以直接将占位符传递到我的树枝模板上。

2 个答案:

答案 0 :(得分:0)

对于动态内容,您应该改用反滤镜。

{{ message|trans(arguments = [], domain = null, locale = null) }}

应该像

{{ textToTranslate | trans([], null, lang) }}

答案 1 :(得分:0)

优良作法是使用翻译键。 在Twig,它看起来像:

{{ 'some_bundle.special_controller.its_view.your_trans_key'|trans }}

在messages.en.yml中:

some_bundle:
  special_controller:
    its_view:
      your_trans_key: 'This is translation key!'
      other_key: 'And this is another translation key!'
  second_controller:
    and_its_view:
      some_key: 'The Key'

的。您可以按照自己的方式来构造键。

编辑:如果您将此长键放在Form占位符上,它将起作用:

...'placeholder' => 'some_bundle.some_form.plain_password.password')),
...'placeholder' => 'some_bundle.some_form.plain_password.repeat_password')),

默认的Symfony视图应翻译此密钥。看看。