我正在使用JMSTranslationBundle
(v1.1.0)从我的来源提取翻译密钥,但原因不明(我一直在搜索过去4小时的原因 - 真的),脚本找不到placeholder
文本。它发现:验证消息,模板中的可翻译字符串,PHP表单中的文本......以及应该 EXCEPT placeholder
文本的所有内容。我查看了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
如果您需要更多信息,请在评论中提问,我们很乐意为您提供。
非常感谢你的帮助!
答案 0 :(得分:3)
我终于发现了!
我使用v1.1.0
文档中建议的最新稳定版本Installation
请使用最新的稳定分支替换上面代码段中的dev-master,例如1.0。*。
所以我将版本~1.1
添加到作曲家中。不幸的是,此版本已经 10个月,并且不包含解决placeholder
问题的最新合并( 9个月前)!
因此,如果您需要提取placeholder
元素,请使用dev-master
版本而不是推荐的“最新稳定版”~1.1
!
我希望这篇文章可以帮助你节省超过8小时搜索后撕掉自己头脑的冲动; - )
快乐的编码!