8

symfony 2 の翻訳ファイルで config.yml のグローバル変数を使用することは可能ですか? はいの場合、いくつかの例または有用なリンクを教えてください。

4

2 に答える 2

3

1 つ (またはすべて) の twig グローバルを翻訳に挿入するには、翻訳サービスをオーバーライドする必要があります。詳細な説明が必要な場合は、この回答を確認してください。これが私がしたことです:

パラメーターをオーバーライドしtranslator.classます (例: 内parameters.yml):

translator.class:  Acme\YourBundle\Translation\Translator

新しいTranslatorサービスを作成します。

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

class Translator extends BaseTranslator
{

}

最後に と の両方transをオーバーライドしtransChoiceます。

/**
 * {@inheritdoc}
 */
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
    return parent::trans(
        $id,
        array_merge($this->container->get('twig')->getGlobals(), $parameters),
        $domain,
        $locale
    );
}

/**
 * {@inheritdoc}
 */
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
{
    return parent::transChoice(
        $id,
        $number,
        array_merge($this->container->get('twig')->getGlobals(), $parameters),
        $domain,
        $locale
    );
}

この例では、すべてのtwig グローバルを注入しています。次のように 1 つだけ注入できます。

array_merge(['%your_global%' => $this->container->get('twig')->getGlobals()['your_global']], $parameters)
于 2016-01-22T15:42:04.757 に答える