【问题标题】:Phalcon Volt, how to print translation with a variablePhalcon Volt,如何使用变量打印翻译
【发布时间】:2016-08-29 14:03:40
【问题描述】:

我将 Phalcon 与 Volt 一起用于我的多语言应用程序。

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

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

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

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

我只是希望能够使用 volt 打印相同的内容,我尝试了几件事但没有任何效果,这是我最近的尝试:

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

请帮忙,我找不到怎么做。

【问题讨论】:

  • 你不应该也在 Volt 中使用_() 函数吗?喜欢{{ t_('number....') }}
  • @NikolayMihaylov,不应该是{{ t._('number') }}吗? (缺少.
  • @Timothy 应该!谢谢:)
  • @NikolayMihaylov,快!在任何人注意到之前编辑它!
  • @Timothy 不能,编辑的时间用完了。他会阅读你的评论,不用担心;)

标签: phalcon volt


【解决方案1】:

您需要做的就是将 $t 变量(即翻译对象)分配给视图控制器中的 $this-&gt;view-&gt;t

打开你的控制器文件,找到合适的动作并添加

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

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

那么您就可以使用{{ t._('SOMETHING') }} 进行翻译了。您还可以添加一个数组,其中包含要替换的字段作为伏特转换函数中的第二个参数,如下所示:

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

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

【讨论】:

  • OP 正在询问如何使用翻译器与变量。你的例子只是一个普通的翻译。如果可能,请使用翻译变量扩展您的示例!
  • @Timothy 当然,很快就会做
  • 感谢@Luke,期待看到它的变量
  • 嗨@Luke,当我们说变量时,我们的意思是其中一个参数是翻译变量,正如您在我尝试过的问题中看到的 {{t['numbervalidation-field', [ 'field': t['Teams']]]}} 但它不起作用,那么我怎样才能将变量作为参数呢?谢谢,感谢您的帮助。
【解决方案2】:

为了便于使用,您可以使用过滤器,假设您的翻译服务是 $di-&gt;t,其内容为:

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

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

{{ 'name'|trans }}

在你的情况下,你会有两个翻译,所以它可以是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多