symfony - 在另一个翻译中引用翻译

标签 symfony symfony-2.1

我有这种情况:

unit:
    sqkm: Square Kilometers

my_translation: Size is %size% ## I want to append the value of unit.sqkm here ##

有没有办法引用unit.sqkm的翻译内my_translation key ?

编辑 :请注意,我知道如何通过 Twig 做到这一点。我的问题是:有没有办法在翻译文件中做到这一点 .

最佳答案

我为此扩展了 Symfony Tanslator:

<?php

namespace Bundle\Program\Translation;

use Symfony\Bundle\FrameworkBundle\Translation\Translator as BaseTranslator;

class Translator extends BaseTranslator
{
    /**
     * Uses Symfony Translator to translate, but enables referencing other translations via @@code@@
     */
    public function trans($id, array $parameters = array(), $domain = null, $locale = null)
    {
        $text = parent::trans($id, $parameters, $domain, $locale);

        $translations = [];

        $delimiter = "@@";
        $strLen = strlen($delimiter);
        $pos = strpos($text, $delimiter);

        while ($pos !== false) {
            $startsAt = $pos + $strLen;
            $endsAt = strpos($text, $delimiter, $startsAt);
            $translations[] = $delimiter . substr($text, $startsAt, $endsAt - $startsAt) . $delimiter;
            $pos = strpos($text, $delimiter, $endsAt + $strLen);
        }

        foreach ($translations as $translation) {
            $translationTrim = str_replace($delimiter, '', $translation);
            $text = str_replace($translation, $this->trans($translationTrim, $parameters, $domain, $locale), $text);
        }

        return $text;
    }
}

然后通过参数替换 Symfony 翻译器类:
parameters:

    translator.class: Bundle\Program\Translation\Translator

现在您可以通过 @@other.translation@@ INSIDE 您的 yml 文件引用其他翻译。

关于symfony - 在另一个翻译中引用翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258177/

相关文章:

javascript - 告诉 Symfony 的 Request 某些 ajax 请求(jquery 的 $.get(path, cb) 请求)是 "X-Requested-With"等于 "XMLHttpRequest"的请求?

php - 从 Composer 创建 Symfony2 项目时出错

交响乐2 : How do I check if a user is not logged in inside a template?

symfony - 查找/自定义 Symfony Forms Twig block 名称

symfony - 如何从 Symfony2 中的服务获取用户对象

Symfony4 - 选择退出 "environment variables"功能并保留旧的 parameters.yml 文件?

php - Symfony - 如何知道控制台命令是从 Controller 运行还是从终端运行?

ajax - Symfony2 发送表单 ajax

symfony - 如何从实体内部获取Web目录路径?

symfony - 将 app.php 重命名为 index.php 使所有路由在 symfony2 中不起作用