我正在根据数据库(而非语言环境)中定义的值来翻译我的应用程序。
这是表格的一部分:
$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%}
如果我尝试翻译整个字段,请以“仅翻译可以简单地进行文本翻译”作为例外。
有什么技巧可以直接将占位符传递到我的树枝模板上。
答案 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视图应翻译此密钥。看看。