Переводы не работают в Symfony2

У меня есть файл с французскими переводами, расположенный в FooBundle/Resources/translations/messages.fr.xlf

Пример:

<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>Foo</source>
<target>Bar</target>
</trans-unit>
</body>
</file>
</xliff>

Но я не могу заставить работать перевод, ни в контроллере:

// FooBundle/Controller/DefaultController.php
/**
* @Route("/")
* @Template()
*/
public function indexAction(Request $request)
{
$request->setLocale("fr");
$translatedMessage = $this->get('translator')->trans('Foo');

echo $translatedMessage;

return array();
}

Или шаблон веточки:

// FooBundle/Resources/views/Default/index.html.twig
{{ 'Foo'|trans }} or {% trans %}Foo{% endtrans %}

Это всегда показывает Foo (оригинальная строка).

В качестве локали по умолчанию я использую английский (‘en’). Мой конфиг локали от config.yml:

framework:
translator: { fallback: "%locale%" }
default_locale: "%locale%"...

Я пытался очистить кеш, но это не имело никакого значения.

Если я пытаюсь отладить переводы, это показывает, что они используются:

$ php app/console debug:translation fr FooBundle

+----------+---------------+----------------------+
| State(s) | Id            | Message Preview (fr) |
+----------+---------------+----------------------+
|          | Foo           | Bar                  |
+----------+---------------+----------------------+

Есть идеи, что здесь происходит?

3

Решение

Кажется, проблема была в другом комплекте, который я установил (LuneticsLocaleBundle).

Каким-то образом это должно переопределить $request->setLocale("fr"); Я делаю в контроллере, так получается, что я использовал en_US как локаль. Это была причина, по которой он не показывал переводы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]