Symfony 3 - 无法加载翻译“messages”文件

时间:2018-04-19 11:48:19

标签: php xml symfony twig translation

我是Symfony 3的新手,我希望你能帮助我。

我想在我的项目中使用翻译组件,我按照这个步骤“https://symfony.com/doc/3.4/translation.html#configuration”但是当我用CLI清除缓存时,我有这个错误并且翻译不起作用:

>php bin/console cache:clear

// Clearing the cache for the dev environment with debug true


In XliffFileLoader.php line 56:

  Unable to load "C:\wamp64\www\MyWebSite/translations\messages.en_US.xlf": [ERROR 64] XML declaration allowed only at the start of the document (in n/a - line 2, column 6)


In XmlUtils.php line 62:

  [ERROR 64] XML declaration allowed only at the start of the document (in n/a - line 2, column 6)

这些是我的文件:

  • 应用程序/配置/ config.yml

    parameters:
        locale: en
    
    framework:
        #esi: ~
        translator: { fallbacks: ['%locale%'] }
    
  • 翻译\ messages.fr_FR.xlf

    <!-- messages.fr.xlf -->
    <?xml version="1.0"?>
    <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
        <file source-language="en" datatype="plaintext" original="file.ext">
            <body>
                <trans-unit id="symfony_is_great">
                    <source>Symfony is great</source>
                    <target>J'aime Symfony</target>
                </trans-unit>
            </body>
        </file>
    </xliff>
    
  • 我在Twig文件中使用tanslation

    {% trans %} Symfony is great { endtrans %}
    

我希望你能帮助我!!

1 个答案:

答案 0 :(得分:0)

XML解析器正在大喊大叫,因为文档声明需要在第一行。所以切换这两行,该错误应该消失:

<!-- messages.fr.xlf -->
<?xml version="1.0"?>

翻译可能无法正常工作,因为模板中的字符串周围有空格,而不是xml文件中的空格:

<source>Symfony is great</source>
{% trans %} Symfony is great { endtrans %}