Мультиязычный сайт

Публикуйте заметки на нескольких языках из одного хранилища. trip2g использует подход на основе папок: каждый язык хранится в отдельной подпапке, а посетители могут переключаться между языками с помощью автоматически появляющегося переключателя.

Как это работает

Организуйте хранилище так, чтобы у каждого языка была своя папка:

docs/
  en/
    user/
      getting-started.md
      multilingual.md
  ru/
    user/
      Начало работы.md
      multilingual.md

Добавьте свойство lang на главную страницу каждого языкового раздела:

---
lang: ru
---

trip2g использует lang для связывания заметок с языком и для правильного формирования атрибута <html lang="..."> на каждой странице.

Переключение языков

Свяжите одну и ту же страницу на разных языках с помощью lang_redirect. Когда это свойство задано, в шапке страницы автоматически появляется кнопка переключения языка.

---
title: "Мультиязычный сайт"
lang_redirect: "[[en/user/multilingual]]"
---

Значение должно быть вики-ссылкой на соответствующую заметку. На английской странице укажите ссылку обратно на русскую:

---
title: "Multilingual sites"
lang_redirect: "[[ru/user/multilingual]]"
---

Переключатель языка появляется только тогда, когда связанная заметка существует и доступна посетителю.

Боковая панель для каждого языка

Разместите _sidebar.md внутри языковой папки — он будет применяться ко всем заметкам в этой папке и её подпапках:

docs/
  en/
    user/
      _sidebar.md    ← применяется ко всем EN-заметкам в user/
  ru/
    user/
      _sidebar.md    ← применяется ко всем RU-заметкам в user/

Каждая боковая панель пишется на нужном языке и ссылается только на заметки своего раздела. В RU-боковой панели используйте короткую форму вики-ссылок, так как боковая панель и заметки находятся в одной папке:

**Начало работы**
- [[Начало работы]]
- [[multilingual|Мультиязычность]]

Подвал для каждого языка

_footer.md работает так же, как _sidebar.md — поместите его в корень языкового раздела, и он применится ко всем заметкам ниже:

docs/
  en/
    _footer.md    ← подвал для всех EN-заметок
  ru/
    _footer.md    ← подвал для всех RU-заметок

Главная страница для каждого языка

Используйте систему журнала (magazine), чтобы главная страница показывала карточки только для одного языка. Свойство magazine_include_files ограничивает набор заметок-карточек, а lang помечает язык главной страницы:

---
lang: ru
content: [self, magazine]
magazine_include_files: ru/**/*.md
magazine_include_property: home_position
---
---
lang: en
content: [self, magazine]
magazine_include_files: en/**/*.md
magazine_include_property: home_position
---

Порядок карточек задаётся свойством home_position на каждой заметке:

---
home_position: 1
---

Меньшее значение — выше на странице. Заметки без home_position в журнал не попадают.

Советы

  • Единый slug — используйте одинаковый slug (например, slug: multilingual) в обеих языковых версиях, чтобы URL были предсказуемыми и удобными для перекрёстных ссылок.
  • Боковая панель для каждого языка — создайте _sidebar.md в каждой языковой папке, чтобы навигация всегда была на языке читателя.
  • Отдельные главные страницы — дайте каждому языку собственный _index.md с lang и magazine_include_files, ограниченным папкой этого языка.
  • lang_redirect добавляется не везде — указывайте его только там, где существует переведённый аналог. Страницы без пары просто не покажут переключатель языка.

Смотрите также