Symfony 2设置翻译文件

时间:2015-05-01 08:22:53

标签: symfony internationalization yaml

我无法为我的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,它开始工作了。 normaly。

3 个答案:

答案 0 :(得分:2)

首先它应该是@ {xlshid29指示的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

的原因

答案 1 :(得分:0)

message.en.yml重命名为messages.en.yml,它应该有效。

答案 2 :(得分:0)

你的yaml文件的格式是不正确的,并且twig中的翻译是错误的。

<强> message.en.yml

base.title.homePage: TeamERP IMS for BA

<强> your.twig.html

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

您可以根据需要使用翻译组件,但最好是用您的主要语言(TeamERP IMS for BA)写下正确的句子并翻译它们。考虑将翻译文件提供给应该翻译的母语人士:

<强> 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" %}