Phalcon Volt,如何用变量打印翻译

时间:2016-08-29 14:03:41

标签: phalcon volt

我使用Phalcon和Volt进行多语言应用。

我已经设置了一个包含以下变量的翻译文件:

'numbervalidation-field' => '%field% is a number',
'Teams' => 'Teams',

这就是我打印的方式'团队是一个数字'正确地

<?php echo $t->_("numbervalidation-field", array("field" => $t->_('Teams'))); ?>

我只是希望能够使用伏特打印相同的内容,我已经尝试了几件但没有任何作用,这是我最近的尝试:

{{t['numbervalidation-field', ['field': t['Teams']]]}}

请帮助,我无法找到如何做到这一点。

2 个答案:

答案 0 :(得分:0)

您只需将$t变量(即翻译对象)分配到视图控制器中的$this->view->t即可。

打开您的控制器文件,找到适当的操作并添加

$this->view->t = $t;

您可以使用$ t翻译字符串的地方。将它放在基本控制器中是个好主意,这样你就可以在每个视图中使用它。

然后您可以使用{{ t._('SOMETHING') }}自由使用翻译。您还可以添加一个带有字段的数组作为伏特转换函数中的第二个参数替换,如下所示:

{{ t._('CODE',[parameters]) }}

其中[parameters]是一个数组,它可以用键替换字符串字段。

答案 1 :(得分:0)

假设您的翻译服务为$di->t,您可以使用过滤器以方便使用,其内容如下:

$volt->getCompiler()->addFilter('trans', function ($resolvedArgs, $exprArgs) {
    return sprintf('$this->t->query(%s)', $resolvedArgs);
});

然后,在伏特模板中,你可以这样做:

{{ 'name'|trans }}

在您的情况下,您将有两个翻译,因此可以阅读:

{{ 'numbervalidation-field'|trans({'field': ('Teams'|trans)}) }}