2014-11-02 54 views
0

我翻译我的Symfony2网站,它似乎工作正常,除了布局...我的模板扩展layout.html.twig,其中包含翻译的菜单。当我使用法语时,一切正常(这是我的默认语言环境),但当我切换到英语时,菜单保持法语状态,页面的其余部分(包含在我的模板中)以英语翻译。有人知道发生了什么吗?Symfony2 =>树枝布局不翻译

模板(services.html.twig)

{% extends "GslsAppBundle::layout.html.twig" %} 

布局(layout.html.twig)

<div id="menu"> 
     <a href="{{ path('gsls_app_homepage') }}" class="accueil">{{ "menu.accueil"|trans|raw }}</a> | 
     <a href="{{ path('gsls_app_services') }}" class="services">{{ "menu.services"|trans|raw }}</a> | 
     <a href="#" class="reservation">{{ "menu.reservation"|trans }}</a> | 
     <a href="#" class="contact">{{ "menu.contact"|trans }}</a> 
    </div> 

messages.fr.yml

menu: 
    accueil: Accueil 
    services: Services 
    reservation: Réservation 
    contact: Contactez-nous 

messages.en。 yml

menu: 
    accueil: Home 
    services: Services 
    reservation: "Book online" 
    contact: "Contact us" 

谢谢!

+0

你如何定义用户的语言环境?尝试在您的模板中使用'{{dump(app.request.locale)}}'来查看哪些语言环境存在。 – SirDerpington 2014-11-02 02:15:52

+0

我已经做到了,甚至在我的布局中它转储“EN”...但它翻译成法语:/我在我的路线中定义我的区域设置 – 2014-11-02 02:29:35

+0

如果您刚刚创建'messages.en.yml'文件,必须清除缓存才能让Symfony发现它。 – 2014-11-02 10:20:02

回答

0

我可以使用其中一种翻译,但不能使用其他翻译,也不知道为什么。如果您还有翻译问题,请阅读。

首先,标准的清单:

  • 确保you enabled and configured translator
  • 请确保translation is in proper place并遵循proper naming convenction(域(默认为消息).lang_code.file_format)。
  • 使用php app/console cache:clear命令清除缓存。
  • 尝试在Controller中手动调用$this->getRequest()->setLocale('en');,也可以尝试直接在Controller中使用$this->get('translator')->trans('Some message');
  • 如果仍不起作用,请确保BOM不在您的翻译文件中。那是我的情况。

小心翻译文件中的BOM。翻译yml文件的翻译人员使用UTF8,但是他使用的编辑器在文件的开始部分使用了BOM。这很可能是因为PHP's UTF8 BOM bug,因为它为您的文件的第一部分添加了几个不可见的字符。

btw,debugging your translations也可能非常有帮助。

Btw2,对不起,发送这个答案两次,但我不能发表评论并链接到原来的问题尚未:)