2013-12-16 55 views
1

我正在關注Symfony的Translation document中的每一步。但是我仍然無法在Symfony中實現國際化。而不是翻譯的消息,我收到相同的消息。我做錯了什麼?這是我的設置:無法使Symfony 2中的國際化工作

1)的應用程序/配置/ config.yml

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

framework: 
    #esi:    ~ 
    translator:  { fallback: fa } 

2)的應用程序/ parameters.yml位於SRC /應用/的appbundle

parameters: 
    database_driver: pdo_mysql 
    database_host: 127.0.0.1 
    database_port: null 
    database_user: root 
    locale: fa 

3)翻譯文件/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> 

4)控制器

/** 
* @Route("{_locale}/test") 
*/ 
public function Test() 
{ 
    $translated = $this->get('translator')->trans('Title'); 

    return new Response($translated); 
} 

回答

0
  1. 3號)應在src/App/AppBundle/Resources/translations目錄中的文件。文件名需要遵循domain.locale.loader約定,如here所示,例如app.fa.xliff

  2. 如果您將文件命名爲app.fa.xliff,那麼'app'是您的域名。您需要在->trans方法來引用該域:

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

+0

我跟着的命名慣例,但我忘了提到它在我的問題。 (問題更新)。我的翻譯文件名是addproduct.fa.xliff。根據該文件的域名是「組織信息的可選方式」。我選擇了「添加產品」。 locale是fa,加載器是xliff。現在這是否正確? – bman

+0

當您調用' - > trans'方法時,還需要引用'addproduct'域。在上面的答案末尾看到示例,但用'addproduct'替換'app'。並且記得每次更新翻譯文件後清除緩存('app/console cache:clear --no-warmup')。 :) –