Я использую Symfony 4 и установил систему перевода, используя
composer require symfony/translation
Я создал два файла в сообщениях /translations
:
Использование php bin/console debug:translation es
Я также получаю правильный результат:
----------- ---------- ------ ---------------------- -------------------------------
State Domain Id Message Preview (es) Fallback Message Preview (en)
----------- ---------- ------ ---------------------- -------------------------------
messages test Value ES Value EN
----------- ---------- ------ ---------------------- -------------------------------
Записи выглядят так:
<trans-unit id="test">
<source>test</source>
<target>Value EN</target>
</trans-unit>
и это:
<trans-unit id="test">
<source>test</source>
<target>Value ES</target>
</trans-unit>
В моем контроллере я установил локаль, которая, кажется, работает нормально и также представлена вшаблоны Twig:
public function index(Request $request, TranslatorInterface $translator)
{
$request->setLocale('es');
// prints 'es'
print $request->getLocale();
return $this->render();
}
А в Twig:
{# prints 'es' #}
{{ app.request.locale }}
Однако, когда я сейчас запускаю:
print $translator->trans('test');
или:
{{ 'test'|trans }}
Я всегда получаю Value EN
, что кажется неправильным, как и должно быть Value ES
.
Я запускаю Symfony 4.0 и очищаю кэш несколько раз - даже удаляювся папка.
translations.yml
выглядит так:
framework:
default_locale: '%locale%'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks:
- '%locale%'
А services.yml
выглядит так:
parameters:
locale: 'en'
locales: en|de|es
Что яздесь не хватает?