2015-05-01 2 views
1

Я не могу настроить перевод для моего проекта Symfony 2. Я вручную создал папку внутри app\Resources\translations\message.en.yml и его содержание:Symfony 2 настройка файлов перевода

base: 
    title: 
     homePage: TeamERP IMS for BA 

Затем на шаблоне ветки базы внутри моей пачки Я пытаюсь назвать:

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

Тогда на config.yml I имеет следующий :

framework: 
    translator: { fallbacks: en } 

Я получаю эту ошибку:

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

Что я делаю неправильно?

Edit: после устранения проблемы здесь:

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

Я перестал получать ошибку, спасибо за это. Теперь страница не giveng ошибки, но не загрузит страницу с предупреждением в журналах в порядке:

[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. Я только что сделал composer update из-за this, и он начал работать. нормально.

ответ

2

Прежде всего, это должно быть messages.en.yml как указано @ xurshid29, но самое главное, он должен быть

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

внутри шаблона. Значение, переданное фильтру trans, должно быть строкой, но base.title.homePage|trans будет расширен до примерно $base->getTitle()->getHomepage(), потому что это синтаксис переменной Twig. Вот почему вы получаете сообщение об ошибке Variable "base" does not exist.

+0

Я изменил точное имя, а также сделал это '{{'base.title.homePage' | trans}}'. Я больше не получаю ошибку, но когда я загружаю страницу, заголовок показывает «base.title.homePage», а не «TeamERP IMS for BA». – wti

+0

Вы включили переводы, как описано здесь: http://symfony.com/doc/2.7/book/translation.html#configuration –

+0

@wti В документации говорится: «framework: -> translator: -> FALLBACKS: [en] (с массивом значения), но в моем локальном проекте я устанавливал его как «framework: -> translator: -> FALLBACK: en (без S)», а в вашей конфигурации вы смешиваете их, например, «framework: -> translator: - > FALLBACKS: ru'. Я думаю, что это вызывает проблему. – xurshid29

0

Переименовать message.en.yml в messages.en.yml, он должен работать.

+0

я уже сделал, и очистил кэш, то же самое сообщение об ошибке. – wti

+0

@wti Посмотрите на ответ Стефана Герига – xurshid29

0

Формат вашего файла yaml не соответствует действительности, а перевод в веточке неправильный.

message.en.yml

base.title.homePage: TeamERP IMS for BA 

your.twig.html

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

Вы можете использовать компонент перевода, как вам нравится, но лучше записать правильные предложения на вашем основном языке (TeamERP IMS для 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" %}

+2

Ваше первое предположение неверно. Загрузчик YAML от Symfony поддерживает структурированные файлы перевода, как показано здесь: http://symfony.com/doc/current/components/translation/usage.html. –

+0

Я тоже это пробовал: 'base.title.homePage: TeamERP IMS for BA' не работает, проверьте Редактировать в моем исходном вопросе. – wti

+0

@StefanGehrig спасибо, не знал и использовал его таким образом. – Aitch

Смежные вопросы