symfony - symfony & translation : 如何翻译标准表达和形式?
问题描述
Symfony 的新手我创建了一个登录表单(make:auth)并安装了翻译器。我在表单模板中添加了 login.html.twig
{% block body %}
<h1>{% trans %}Hello{% endtrans %}</h1>
<form method="post">
...
并在翻译目录中定义了一个 messages.fr.yml,其中包含 Hello : Bonjour。
这行得通,当我显示我的表格时,你好很好地翻译成 Bonjour
但是,所有其他标签都没有翻译(用户名、密码等)
这似乎是合乎逻辑的,因为条目没有{% trans %} {% endtrans %}
命令
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<label for="inputUsername" class="sr-only">Username</label>
问题1:有没有办法自动翻译所有这些标签?
问题 2:是否存在包含所有标准使用消息/标签的翻译文件?
谢谢您的帮助
解决方案
表单标签的默认设置是使用“人性化”版本。然后可以在messages
翻译域中翻译那个。
您可以通过label
在构建器中直接设置表单(元素)来更改它
->add('fieldName', TextType::class, [
'label' => 'fieldName_translation_key',
])
或在模板中:
{{ form_row(form.fieldname, {label: 'fieldname_translation_key'}) }}
{# this also works with form_widget/form_label, depending on the form element #}
如果您想对字段使用关键字翻译,您可以label_format
在表单本身(在configure
方法中,作为一个选项)或其所有元素上手动设置(使用描述的占位符)。
我个人更喜欢这种label_format
方法,因为我很少“手动”呈现表单。
您还可以设置translation_domain
参数以将使用的翻译域 ( messages
) 更改为其他内容。
推荐阅读
- r - 为什么 R 中的 all.equal 不测试每个观察值的差异,其中不匹配发生在容差量上,而不是聚合平均值?
- typescript - Typescript - 在我的界面中获取属性类型以避免使用任何
- xul - 无法在 Thunderbird 68.5.0 附加组件的 xul 对话框中触发 ondialogaccept 事件处理程序
- react-native - 导航回到开始屏幕
- shell - 您不能将变量与字符串结合起来查找另一个变量吗?
- ubuntu - Kerberos 服务启动时出现错误:无法在 Ubuntu 18 上打开 DB2 数据库
- assembly - 汇编中的 x86 实模式分段
- reactjs - 盖茨比 | 更新表单时反应组件闪烁
- python - 将 main.py 更改为 __init__.py 后 app.yaml 无法找到入口点
- java - 如何使while循环检查字符串中是否有16位数字