Symfony 4 翻译

Symfony 4 translation

我一直在努力解决这个问题: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>

一直在控制器中尝试(收到 "missing translation key" 警告):

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

或在树枝中:

{{ 'homepage.presta'|trans }}  

但没有任何效果..最后我想根据浏览器语言翻译成正确的语言,然后如果在导航栏中选择了某种语言(比如在 cookie 中?)。

/**
 * @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> 作为你的翻译而不是 id homepage_presta

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