代码之家  ›  专栏  ›  技术社区  ›  Antoine Nedelec

symfony 4翻译

  •  0
  • Antoine Nedelec  · 技术社区  · 7 年前

    我一直在努力解决这个问题: https://symfony.com/doc/current/translation.html

    但似乎没有人对翻译有任何问题,我必须完全弄错。

    在“services.yaml”中,我的区域设置为“fr”

    我有message.en.xlf和message.fr.xlf

    这是我的.fr:

    <?xml version="1.0"?> 
    <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
        <file source-language="en" target-language="fr" datatype="plaintext" original="file.ext">
            <body>
                <trans-unit id="homepage_presta">
                    <source>homepage.presta</source>
                    <target>Les prestations</target>
                </trans-unit>
            </body>
        </file>
     </xliff>
    

    正在控制器中尝试(收到“缺少转换密钥”警告):

    var_dump($translator->trans("homepage_presta"));
    

    或者在树枝上:

    {{ 'homepage.presta'|trans }}  
    

    但什么都没用……最后,我想根据浏览器的语言转换成正确的语言,如果在导航栏中选择了语言(比如在cookie中?).

    1 回复  |  直到 7 年前
        1
  •  2
  •   Brucie Alpha    7 年前
    /**
     * @Route("/test/translation")
     */
    public function translationAction(TranslatorInterface $translator)
    {
        dump($translator->trans("homepage.presta"));
    
        return new Response('<html><body>testaroni</body></html>');
    }
    

    为我工作…一些事情…

    1. 默认的翻译域是messages而不是message,因此您的文件应该是translations/messages.fr.xlf

    2. 我不习惯XLF,但你得用它 <source>homepage.presta</source> 你的翻译不是身份证 homepage_presta

    3. 每次创建新的翻译文件时,不要忘记清除缓存。 php bin/console cache:clear