Skip to content

Latest commit

 

History

History
109 lines (87 loc) · 6.3 KB

File metadata and controls

109 lines (87 loc) · 6.3 KB

📚 Outline с русским переводом Build Status Version

❓ Зачем

Поддержка русского языка в Outline прекращена в версии 0.71.0 по некоторым причинам.

📝 Примечания

🐳 Установка

Warning

Перед обновлением ОБЯЗАТЕЛЬНО делайте бэкап!

Следуйте официальной инструкции, только в качестве image укажите flameshikari/outline-ru:latest (желательно зафиксировать версию, заменив latest на один из доступных тегов). Например:

services:
  outline:
    image: flameshikari/outline-ru:1.5.0
    # image: ghcr.io/flameshikari/outline-ru:1.5.0
    env_file: ./docker.env
    expose:
      - 3000
    volumes:
      - storage-data:/var/lib/outline/data
    depends_on:
      - postgres
      - redis

  ...

🛠️ Разработка

Ключевые файлы

Описание работы скрипта

Скрипт translation/merge.py используется для объединения английского и русского переводов во временный файл. Скрипт не имеет интерактивного режима и каких-либо аргументов/опций, он просто запускается (с выводом некоторой полезной информации) и делает следующее:

  • сохраняет актуальные переведённые строки
  • удаляет неактуальные переведённые строки
  • если в русском переводе есть одинаковые key/value пары, то они считаются исключениями (например, HTML или API) и переносятся как есть
  • новые непереведённые строки добавляются в конец

Также скрипт конвертирует строки с суффиксом _plural (англ. множественное число) в строки с числовыми суффиксами, поддерживающие склонение по падежам. Например, имеем исходные данные:

{
  // ...
  "{{ count }} comment": "{{ count }} comment",
  "{{ count }} comment_plural": "{{ count }} comments"
  // ...
}

Строки после конвертации скриптом:

{
  // ...
  "{{ count }} comment_0": "[NOT TRANSLATED]",
  "{{ count }} comment_1": "[NOT TRANSLATED]",
  "{{ count }} comment_2": "[NOT TRANSLATED]"
  // ...
}

Конвертированные строки после перевода:

{
  // ...
  "{{ count }} comment_0": "{{ count }} комментарий", // ед. число, им. падеж
  "{{ count }} comment_1": "{{ count }} комментария", // ед. число, род. падеж
  "{{ count }} comment_2": "{{ count }} комментариев" // мн. число, род. падеж
  // ...
}

Документация: множественное число в i18next с JSON-форматом версии 3

Быстрый старт

  1. Клонирование репозитория с подмодулем:

    git clone --recurse-submodules git@github.com:flameshikari/outline-ru.git
  2. Пулл изменений в подмодуле и переключение на последний доступный тег:

    git submodule foreach 'git pull --rebase --tags && git checkout v1.5.0'
  3. Запуск контейнеров:

    docker compose up -d --build

    Веб-интерфейс Outline будет доступен по этой ссылке; входить с помощью OpenID Connect под логином/паролем outline.

  4. Формирование временного файла с помощью translation/merge.py:

    python translation/merge.py

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