我正在使用JMSTranslationBundle(v1.1.0)从源中提取翻译键,但是由于未知的原因(我一直在搜索过去4个小时的原因-实际上),脚本找不到占位符文本.它发现:验证消息,模板中的可翻译字符串,PHP表单中的文本…以及除占位符文本之外的所有内容.我检查了JMSTranslationBundle存储库,并且此功能是在9个月前添加的,没有任何实际问题.
这是一个例子:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('password', 'repeated', array(
'first_name' => 'password',
'second_name' => 'confirm',
'type' => 'password',
'invalid_message' => 'user.auth.password.invalidMessage',
'first_options' => array(
'label' => 'user.auth.password.password.label'
),
'second_options' => array(
'label' => 'user.auth.password.confirmation.label'
),
'options' => array(
'label_attr' => array(
'class' => 'control-label'
),
'attr' => array(
'placeholder' => 'user.auth.password.password.placeholder'
)),
));
}
该脚本将找到:
> user.auth.password.invalidMessage,
> user.auth.password.password.label和
> user.auth.password.confirmation.label
但找不到user.auth.password.password.placeholder
我的日志文件中没有错误,没有详细模式(-vvv)出现,因此我不知道在哪里查看.
这是我正在使用的命令行(以防万一它来自命令行):
php app/console translation:extract --env=dev --keep --bundle=AcmeMyBundle --output-dir=./src/Acme/MyBundle/Resources/translations/ en
如果您需要更多信息,请在评论中提问,我们将很乐意为您提供.
非常感谢你的帮助 !
解决方法:
我终于发现了!
我使用了安装文档中建议的最新稳定版本v1.1.0
Please replace dev-master in the snippet above with the latest stable branch, for example 1.0.*.
因此我将〜1.1版本添加到了composer中.不幸的是,这个版本已经有10个月的历史了,并且不包含解决占位符问题的最新合并(这是9个月前)!
因此,如果您需要提取占位符元素,请使用dev-master版本而不是建议的“最新稳定版本”〜1.1!
我希望这篇博文能节省您8个多小时的搜索;-)
编码愉快!