簡體   English   中英

如何在symfony2翻譯中使用配置值?

[英]How to use config value in symfony2 translation?

可以在symfony 2的翻譯文件中使用config.yml中的全局變量嗎? 如果是,請提供一些示例或有用的鏈接嗎?

要將(或所有)嫩枝全局變量注入翻譯中,您需要覆蓋翻譯服務。 如果您需要詳細說明,請查看此答案 這是我所做的:

覆蓋translator.class參數(例如,在parameters.yml ):

translator.class:  Acme\YourBundle\Translation\Translator

創建新的Translator服務:

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

class Translator extends BaseTranslator
{

}

最后覆蓋transtransChoice

/**
 * {@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
    );
}

在此示例中,我將注入所有樹枝全局變量。 您只能注入這樣的內容:

array_merge(['%your_global%' => $this->container->get('twig')->getGlobals()['your_global']], $parameters)

您可以按照以下兩個簡單步驟操作:

  1. 使用樹枝配置在所有模板中注入一個全局變量

     # app/config/parameters.yml parameters: my_favorite_website: www.stackoverflow.com 

     # app/config/config.yml twig: globals: my_favorite_website: "%my_favorite_website%" 
  2. 使用消息占位符可以將您的文本放入翻譯中:

     # messages.en.yml I.love.website: "I love %website%!!" # messages.fr.yml I.love.website: "J'adore %website%!!" 

現在,您可以在模板中使用以下twig語法來獲得預期的結果:

{{ 'I.love.website'|trans({'%website%': my_favorite_website}) }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM