Привет, я пришел в себя, потому что мне нужна небольшая помощь, Я хочу перевести свой сайт на 3 языка: en, fr, es Я перевел все в файле перевода, но проблема не в том, как отобразить выбор языка на веб-сайте, а также в том, как отобразить его в URL-адресе.
в моем balise html:
<html lang = "{{ app.request.locale }}">
и мой paramters.yaml:
parameters:
locale: fr
в моем файле перевода есть 3 таких файла:
messages.fr.yml
messages.en.yml
messages.es.yml
Я хочу отображать такой URL
www.mydomaine.com/fr/accueil
www.mydomaine.com/en/home
www.mydomaine.com/es/acogida
А как показывать списки ссылок? В сторону языков?
Что ж, следующее решение протестировано на 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')} }}
.
Более подробную информацию вы можете найти в официальная документация
Мне нужно разместить _locale во всех маршрутах, вот и все?