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