Symfony2 =>树枝布局无法翻译

时间:2014-11-02 00:39:16

标签: symfony twig translation

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

模板(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"

谢谢!

1 个答案:

答案 0 :(得分: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');,也可以尝试直接在控制器中使用$this->get('translator')->trans('Some message');
  • 如果仍然无效,请确保BOM不在翻译文件中。那是我的理由。

在翻译文件中留意BOM。翻译yml文件的翻译人员使用UTF8,这是好的,但编辑他在文件的开头使用了留空BOM。这很危险,可能是因为PHP's UTF8 BOM bug,因为它会在文件的第一部分添加几个不可见的字符。

顺便说一下,debugging your translations也可能非常有帮助。

Btw2,抱歉两次发送此答案,但我无法发表评论并链接到原始问题:)