使用翻译服务在公共静态数组中翻译文本

时间:2014-09-09 12:35:25

标签: php symfony translation

我在用户个人资料页面上显示用户的当前状态。 有3种可能的状态,并以数字形式保存在数据库中(1 =启用帐户,2 =帐户禁用等...)

要将整数格式化为有意义的文本,我创建了一个Twig扩展,在其中列出了公共静态数组中的所有3种可能的状态,如下所示:

public static $aAllowedStatuses = array(
    StatusModel::STATUS_DISABLED => 'Account disabled',
    StatusModel::STATUS_ENABLED => 'Account enabled',
    StatusModel::STATUS_TECHNICAL_PROBLEM => 'Account disabled because of technical problem'
);

我想翻译这些文本,所以我将翻译服务注入了我的twig扩展并尝试更改

StatusModel::STATUS_DISABLED => 'Account disabled'

StatusModel::STATUS_DISABLED => $this->translator->trans('Account disabled')

但我在我的IDE(phpStorm)中收到此错误:不允许表达式作为字段默认值

我做错了什么?或者有更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您无法在数组构造中使用表达式。

之后你可以这样做:

$aAllowedStatuses[StatusModel::STATUS_DISABLED] => $this->translator->trans('Account disabled');

答案 1 :(得分:0)

在PHP中定义属性时,无法评估任何代码。

您可以做的是在构造函数中翻译它们,例如:

public function __construct(Translator $translator)
{
    foreach (self::$allowedStatuses as $key => $message) {
        self::$allowedStatuses[$key] = $translator->trans($message);
    }
}