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]