Ну, следующее решение протестировано на Symfony 3.4, может немного отличаться для версий Symfony 4. *.
В вашем config.yml
настройте все языки, на которых будет работать сайт под опцией параметров, например:
parameters:
locale: fr
locales: [en, fr, es]
Снова в config.yml
установите резервный язык и пути перевода к вашим переводам:
framework:
translator:
fallback: "%locale%"
paths: ['%kernel.root_dir%/../src/AppBundle/Resources/translations']
Затем определите ваши маршруты следующим образом (пример определения yml):
home:
path: /{_locale}/home
defaults: { _controller: AppBundle:Default:home }
Тогда все могут получить доступ к вашей домашней странице в каждой предоставленной вами локали (отвечая на вопрос, как отобразить язык в URL).
www.mydomaine.com/fr/home
www.mydomaine.com/en/home
www.mydomaine.com/es/home
Теперь, если вопрос также о том, как получить переведенный контент на странице вашего веб-сайта. Вы можете использовать разные форматы файлов для хранения переводов, я снова пойду с .yml
, например. Обычно переводы помещаются в файлы, такие как messages.en.yml
(как и для других языков, создайте те же файлы с другой локалью, например, messages.fr.yml
).
Затем при условии, что у вас есть ключ foo
в ваших файлах переводов, например foo: bar
, вы можете отобразить его значение в ветке, используя фильтр trans
: {{ 'foo'|trans({}, 'messages')} }}
.
Более подробную информацию вы можете найти в официальной документации