Сайт перевода Symfony и просмотр списка языков - PullRequest
0 голосов
/ 26 августа 2018

Здравствуйте, я пришел, потому что мне нужна небольшая помощь, я хочу перевести свой веб-сайт на 3 языка: en, fr, es Я перевел все в файле перевода, но проблема не в том, как отобразить выбор языка навеб-сайт, а также как отобразить его в URL

в моем HTML-файле balise:

<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

А как показать списки ссылок?Навстречу это языки?

1 Ответ

0 голосов
/ 26 августа 2018

Ну, следующее решение протестировано на 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')} }}.

Более подробную информацию вы можете найти в официальной документации

...