5.8 KiB
📚 Outline с русским переводом

❓ Зачем
Поддержка русского языка в Outline прекращена в версии 0.71.0 по некоторым причинам.
📝 Примечания
- образ доступен в Docker Hub и GHCR
- за основу взят перевод из этого коммита
- сообщить о некорректном переводе можно тут
🐳 Установка
Warning
Перед обновлением ОБЯЗАТЕЛЬНО делайте бэкап!
Следуйте официальной инструкции, только в качестве image укажите flameshikari/outline-ru:latest (желательно зафиксировать версию, заменив latest на один из доступных тегов). Например:
services:
outline:
image: flameshikari/outline-ru:0.87.3
# image: ghcr.io/flameshikari/outline-ru:0.87.3
env_file: ./docker.env
expose:
- 3000
volumes:
- storage-data:/var/lib/outline/data
depends_on:
- postgres
- redis
...
🛠️ Разработка
Ключевые файлы
- русский перевод — tools/translation.json
- английский перевод — outline/shared/i18n/locales/en_US/translation.json
- временный файл — tools/translation.tmp.json (существует только локально)
Быстрый старт
-
Клонирование репозитория с подмодулем:
git clone --recurse-submodules git@github.com:flameshikari/outline-ru.git -
Пулл изменений в подмодуле и переключение на коммит с целевой версией:
cd outline git pull --rebase --tags git checkout v0.87.3 cd - -
Запуск контейнеров:
docker compose up -d --buildВеб-интерфейс Outline будет доступен по этой ссылке; входить с помощью OpenID Connect под логином/паролем
outline. -
Формирование временного файла с помощью tools/diff.py:
python tools/diff.pyПосле можно приступить к переводу сфомированного временного файла. После перевода временного файла скопируйте его в файл русского перевода. Любые изменения в русском переводе обновят открытую веб-страницу через пару секунд.
Описание
Скрипт tools/diff.py используется для объединения английского и русского переводов во временный файл. Скрипт не имеет интерактивного режима и каких-либо аргументов/опций, он просто запускается (с выводом некоторой полезной информации) и делает следующее:
- сохраняет актуальные переведённые строки
- удаляет неактуальные переведённые строки
- если в русском переводе есть одинаковые key/value пары, то они считаются исключениями (например,
HTMLилиAPI) и переносятся как есть - новые непереведённые строки добавляются в конец
Если во временном файле присутствуют две одинаковые непереведённые строки, но одна из них с суффиксом
_plural(множественное число), например:{ "{{ count }} comment": "{{ count }} comment", "{{ count }} comment_plural": "{{ count }} comments" }…то нужно заменить эти строки на следующие (для справки: множественное число в i18next с JSON-форматом версии 3):
{ "{{ count }} comment_0": "{{ count }} комментарий", "{{ count }} comment_1": "{{ count }} комментария", "{{ count }} comment_2": "{{ count }} комментариев" }