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" %}
我无法为我的 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" %}