JMSTranslationBundle不提取占位符'分子

时间:2014-04-10 17:42:44

标签: php symfony internationalization

我正在使用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

如果您需要更多信息,请在评论中提问,我们很乐意为您提供。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:3)

终于发现了

我使用v1.1.0文档中建议的最新稳定版本Installation

  

请使用最新的稳定分支替换上面代码段中的dev-master,例如1.0。*。

所以我将版本~1.1添加到作曲家中。不幸的是,此版本已经 10个月,并且不包含解决placeholder问题的最新合并( 9个月前)!

因此,如果您需要提取placeholder元素,请使用dev-master版本而不是推荐的“最新稳定版”~1.1

我希望这篇文章可以帮助你节省超过8小时搜索后撕掉自己头脑的冲动; - )

快乐的编码!