У меня есть файл с французскими переводами, расположенных в FooBundle/Resources/translations/messages.fr.xlf
Переводы не работает в Symfony2
Пример:
<?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 |
+----------+---------------+----------------------+
Любая идея, что происходит здесь не так?
Просто протестирован с кодом без изменений (Symfony 2.6.3), и он работает без проблем. Попробуйте вывести настройки пакета framework и проверьте, что все, что связано с услугой переводчика, в порядке. – COil