Grav - многоязычный

Многоязычность определяется как использование на вашем веб-сайте разных языков. Мы изучим различные процедуры, которые помогут вам использовать несколько языков на вашем сайте Grav.

Основы многоязычия

Обычно Grav нужен файл .md для представления любой страницы. Когда вы включаете многоязычную поддержку, он будет искать такой файл, какdefault.en.md или же default.fr.md..

Конфигурация языка

Вы должны сначала настроить базовую языковую конфигурацию в вашем user/config/system.yamlфайл. файл.

Language:
   Supported:
      - en
      - Fr

Сделав это, вы включили многоязычную поддержку в Grav. В приведенном выше кодеen означает английский язык и frозначает французский. Это означает, что ваш сайт будет поддерживать эти два языка. Здесь язык по умолчанию - en (английский) . Если вы сначала напишете Fr (французский) , он станет вашим языком по умолчанию.

Страницы на нескольких языках

Если ваш язык по умолчанию установлен как English, то Grav будет искать default.en.mdфайл. Если этот файл не найден, Grav ищет другой язык, который вы установили. Если оба языка не найдены, выполняется поискdefault.md файл.

Example

файл default.en.md

---
title: Home
---

# Grav is Running!
## You have installed **Grav** successfully

Приведенный выше код сгенерирует следующий вывод -

Для французского как языка по умолчанию файл default.fr.md будет иметь вид -

---
titre: Accueil
---

# Grav est en marche!
## Vous avez installé ** ** Grav succès

Приведенный выше код сгенерирует следующий вывод -

Активный язык через URL

Если вы хотите обновить URL-адрес своего веб-сайта с помощью языкового кода, выполните следующие действия:

Example

Если вы хотите, чтобы ваш сайт был на английском языке, введите в браузере следующую строку -

http://www.mysite.com/en

Если вы хотите, чтобы ваш сайт был на французском языке, введите в браузере следующую строку -

http://www.mysite.com/fr

Активный язык через браузер

У Grav есть возможность получить http_accept_languagevalue и сравните их с представленным поддерживаемым языком. Если вы хотите, чтобы это работало, включитеuser/system.yaml файл в языковом разделе как -

language :
   http_accept_language : true

Домашняя страница на основе языка

Чтобы иметь домашнюю страницу на основе языка, вы должны включить следующий код в вашем site.yaml файл -

home:
   aliases:
      en: /homepage
      fr: /page-d-accueil

Таким образом, Grav определит, какой язык использовать из активных языков.

Следующий код заставит Grav перенаправить вас на ваш языковой маршрут по умолчанию. И опция include_route заставляет добавить код языка в ваш URL-адрес, напримерhttp://www.mysite.com/en/home

languages:
   home_redirect:
      include_lang: true
      include_route: false

Языковые шаблоны Twig

Если ваш файл - default.en.md , то Grav будет искать файл ветки как default.html.twig . Если вам нужен файл ветки для конкретного языка, вы должны загрузить его в корневой уровень языковой папки. Если ваша нынешняя тема вtemplates/default.html.twig вы должны создать templates/en/ папку и поместите в нее папку для английского языка как: templates/en/default.html.twig

Переключатель языков

Плагин переключения языков доступен в Grav Package Manager (GPM) .

Переводы через Twig

Используйте фильтр ветки и функцию t () . Оба действуют одинаково. Если у вас есть другой файл ветки, он позволяет вам переводить из массива.

Языковые переводы плагинов и тем

Предоставьте свои переводы в плагинах и темах, создав languages.yaml файл в корне вашей темы или плагина (/user/plugins/error/languages.yaml) и должен содержать все поддерживаемые языки.

Переопределения перевода

Если вы хотите переопределить перевод, вы должны поместить пару значений в языковой файл в папке user / languages ​​/ .

Продвинутый

Environment – Based Language Handling

Можно направлять пользователей на правильную версию вашего сайта по URL-адресу. Если URL вашего сайтаhttp://english.yoursite.com, псевдоним для вашего стандарта http://www.yoursite.com, то вы можете создать конфигурацию как /user/english.yoursite.com/config/system.yaml..

languages:
   supported:
      - fr
      - en

Он использует обратный языковой порядок. В приведенном выше коде fr является языком по умолчанию. Если вы измените порядок, оставив en вверху и fr внизу, тогда en станет языком по умолчанию.

Языковые псевдонимы Маршруты

Очень сложно переключаться между разными языковыми версиями одной и той же страницы, вы можете использовать Page.rawRoute()на вашем объекте страницы. Он получает один и тот же необработанный маршрут для разных языковых переводов одной страницы. Поместите код языка впереди, чтобы получить правильный маршрут.

Если вы находитесь на странице на французском языке с настраиваемым маршрутом -

/ma-page-francaise-personnalisee

Английская страница имеет собственный маршрут -

/my-custom-french-page

Вы получаете необработанную страницу французской страницы, и это может быть -

/blog/custom/my-page

Затем просто добавьте нужный язык, который будет вашим новым URL-адресом.

/en/blog/custom/my-page

Поддержка переводов

Grav предоставляет простой механизм для предоставления переводов в Twig через PHP для использования в темах и плагинах. Он включен по умолчанию и используетenязык, если не указан конкретный язык. Чтобы включить или отключить, перейдите в файл system.yaml и внесите изменения.

languages:
   translations: true

Вы можете предоставлять переводы разными способами и в разных местах. На первом месте папка system / languages. Файлы должны быть созданы вen.yaml, fr.yamlи т.д. формат. Каждый файл yaml должен состоять из массива или вложенных массивов пар ключей.

SITE_NAME: My Blog Site
HEADER:
   MAIN_TEXT: Welcome to my new blog site
   SUB_TEXT: Check back daily for the latest news

Session Based Active Language

Вы можете активировать хранение активного языка на основе сеанса. Для включения необходимо иметьsession : enables : true в system.yaml и включите настройку языка.

languages:
   session_store_active: true

Language Switcher

Установите плагин переключения языка из GPM.

Setup with language specific domains

Иметь конфигурацию обработки языка на основе среды для назначения языков по умолчанию. Добавьте эту опцию в свой system.yaml; он должен быть установлен в значение true.

pages.redirect_default_route: true

Добавьте следующее в свой .htaccess файл и выберите языковые ярлыки и доменные имена в соответствии с вашими требованиями.

# http://www.cheat-sheets.org/saved-copy/mod_rewrite_cheat_sheet.pdf
# http://www.workingwith.me.uk/articles/scripting/mod_rewrite

# handle top level e.g. http://Grav-site.com/de
RewriteRule ^en/?$ "http://Grav-site.com" [R = 301, L]
RewriteRule ^de/?$ "http://Grav-site.de" [R = 301, L]

# handle sub pages, exclude admin path
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^en/(.*)$ "http://Grav-site.com/$1" [R = 301, L]
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^de/(.*)$ "http://Grav-site.de/$1" [R = 301, L]