Php 无法在Symfony 2中实现国际化

Php 无法在Symfony 2中实现国际化,php,symfony,internationalization,Php,Symfony,Internationalization,我一直在关注Symfony的每一步。但我仍然无法在Symfony中实现国际化。我收到的不是翻译的信息,而是同样的信息。我做错了什么?以下是我的设置: 1) app/config/config.yml imports: - { resource: parameters.yml } - { resource: security.yml } framework: #esi: ~ translator: { fallback: fa }

我一直在关注Symfony的每一步。但我仍然无法在Symfony中实现国际化。我收到的不是翻译的信息,而是同样的信息。我做错了什么?以下是我的设置:

1) app/config/config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }

framework:
    #esi:             ~
    translator:      { fallback: fa }
2) app/parameters.yml

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: null
    database_user: root
    locale: fa
3) 翻译文件位于src/App/AppBundle/Resources/translations/addproduct.fa.xliff中

<?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="1">
                <source>Title</source>
                <target>عنوان</target>
            </trans-unit>
        </body>
    </file>
</xliff>
  • 编号3)应该是
    src/App/AppBundle/Resources/translations
    目录中的文件。文件名需要遵循所概述的
    domain.locale.loader
    约定,例如
    app.fa.xliff

  • 如果您将文件命名为
    app.fa.xliff
    ,则
    'app'
    是您的域。您需要在
    ->trans
    方法中引用此域:


  • $translated=$this->get('translator')->trans('Title',array(),'app')

    我遵循了命名约定,但我忘了在问题中提到它。(问题更新)。我的翻译文件名是addproduct.fa.xliff。根据文档,域是一个“可选的分组方式”。我选择了“addproducts”。区域设置为fa,加载程序为xliff。现在是否正确?调用
    ->trans
    方法时,还需要引用“addproduct”域。请参见上文我答案末尾的示例,但将“app”替换为“addproduct”。每次更新翻译文件后,请记住清除缓存(
    app/console cache:clear--no warmup
    /**
     * @Route("{_locale}/test")
     */
    public function Test()
    {
        $translated = $this->get('translator')->trans('Title');
    
        return new Response($translated);
    }