PHP-JMSTranslationBundle不提取“占位符”元素

我正在使用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个多小时的搜索;-)

编码愉快!

上一篇:PHP-MySQL数据库I18N,采用JSON方法?


下一篇:java-在Spring MVC中的form:input标签内使用spring:message标签