2013-06-22 152 views
2

在我问这个问题之前,我已经仔细检查了很多类似于stackoverflow的问题,但还没有解决它。Symfony 2消息翻译

该任务是使用俄语信息,而不是英语。让我们假设它是众所周知的身份验证失败消息“Bad credentials”。所以这就是我所做的。

在我的配置:

translator:  { fallback: en } 
default_locale: ru 

创建messages.ru.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>Bad credentials</source> 
       <target>My russian variant here</target> 
      </trans-unit> 
     </body> 
    </file> 
</xliff> 

最后,在我的login.html.twig:

{% if error %} 
<div class="error">{{ error.message | trans }}</div> 
{% endif %} 

如果验证失败,我仍然继续收到“Bad credentials”消息。我试图清除缓存,但它没有帮助。

也许我错过了什么。任何帮助赞赏。谢谢。

+0

你确定你把messages.ru.xliff在正确的地方? – Hast

回答

1

我想问题是因为你指定源翻译为“Bad credentials”,但你使用“error.message”作为翻译器的输入。所以,你应该messages.ru.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>error.message</source> 
       <target>My russian variant here</target> 
      </trans-unit> 
     </body> 
    </file> 
</xliff> 

或更改消息标签在你的模板:

{% if error %} 
<div class="error">{{ "Bad credentials" | trans }}</div> 
{% endif %} 
+0

其实error.message确实会返回错误的凭据。所以看起来他一切正常。 – Hast

+0

哦,你是对的,我错过了那个error.message是一个变量而不是文字 – Cyprian

+0

是的,现在我不知道什么是错的:) – Hast