Symfony 2 设置翻译文件

Symfony 2 setting up translation files

我无法为我的 Symfony 2 项目设置翻译。我在 app\Resources\translations\message.en.yml 中手动创建了一个文件夹,其内容为:

base:
    title:
        homePage: TeamERP IMS for BA

然后在我的包内的基本树枝模板上,我试图调用它:

    <title>
        {% block title %}
            {{ base.title.homePage|trans }}
        {% endblock %}
    </title>

然后在 config.yml 我有以下内容:

framework:
    translator: { fallbacks: en }

我收到这个错误:

 Variable "base" does not exist in TeamERPBaseBundle::base.html.twig at line 7 

我做错了什么?

编辑: 解决这里的问题后:

{{ 'base.title.homePage'|trans }}

我不再收到错误消息,谢谢。现在页面没有给出错误但没有加载页面并在日志中显示警告:

[2015-05-01 12:42:57] translation.WARNING: Translation not found. {"id":"base.title.homePage","domain":"messages","locale":"en"} []
[2015-05-01 12:42:57] translation.WARNING: Translation not found. {"id":"Home","domain":"messages","locale":"en"} []

Edit2:我的 symfony 2.6 版本有一些问题。由于 this,我刚刚做了一个 composer update,它开始工作了。正常。

message.en.yml 重命名为 messages.en.yml,应该可以。

首先,如@xurshid29 所示,它应该是 messages.en.yml,但最重要的是它应该是

<title>
    {% block title %}
        {{ 'base.title.homePage'|trans }}
    {% endblock %}
</title>

在模板内。传递给 trans 过滤器的值必须是字符串,但 base.title.homePage|trans 会扩展为类似于 $base->getTitle()->getHomepage() 的内容,因为它是 Twig 变量语法。这就是您收到错误消息 Variable "base" does not exist.

的原因

恕我直言,您的 yaml 文件格式不正确,twig 中的翻译错误。

message.en.yml

base.title.homePage: TeamERP IMS for BA

your.twig.html

<title>
    {% block title %}
        {{ 'base.title.homePage' | trans }}
    {% endblock %}
</title>

您可以随意使用翻译组件,但更好的是用您的主要语言(BA 的 TeamERP IMS)写下正确的句子并进行翻译。考虑将翻译文件交给应该翻译它的母语人士:

message.de.yml

TeamERP IMS for BA: TeamERP IMS für BA

your.twig.html

<title>
    {% block title %}
        {% trans %}TeamERP IMS for BA{% endtrans %}
    {% endblock %}
</title>

当然还要检查域 {% trans_default_domain "message" %}