Перейти к содержанию

Перевод RimLoc (i18n)

CLI‑сообщения RimLoc локализуются через Fluent (FTL) и встраиваются на этапе сборки. Ниже — как добавить или обновить перевод.

Быстрый старт — без кода

Перевод можно сделать прямо в GitHub:

1) Откройте crates/rimloc-cli/i18n/en/ (английская версия). 2) Создайте рядом папку crates/rimloc-cli/i18n/<lang>/ (например, es, de, fr). 3) Скопируйте в неё rimloc.ftl и rimloc-tests.ftl из en/. 4) Переведите только значения — ключи и плейсхолдеры не меняйте. 5) Закоммитьте и откройте Pull Request. Укажите код языка и (по возможности) приложите скрин --help.

Предпочитаете локально? Ниже есть команды для запуска тестов.

Структура

  • crates/rimloc-cli/i18n/en/rimloc.ftl — английский источник истины.
  • crates/rimloc-cli/i18n/<lang>/rimloc.ftl — другие локали зеркалируют ключи EN.
  • crates/rimloc-cli/i18n/<lang>/rimloc-tests.ftl — тестовые сообщения.

Для <lang> используйте IETF/ISO коды (ru, de, fr). RimLoc подбирает языки по языковому коду; региональные теги игнорируются.

Добавление новой локали

1) Скопируйте английские файлы:

crates/rimloc-cli/i18n/en/rimloc.ftl → crates/rimloc-cli/i18n/<lang>/rimloc.ftl
crates/rimloc-cli/i18n/en/rimloc-tests.ftl → crates/rimloc-cli/i18n/<lang>/rimloc-tests.ftl

2) Переведите значения, ключи и плейсхолдеры оставьте как в EN. - Ключи: строчные с дефисами. - Плейсхолдеры: {name}, {0}, %s, %d — не менять.

3) Запустите тесты:

cargo test --package rimloc-cli -- tests_i18n
cargo test --workspace

4) Проверьте локализованный help:

rimloc-cli --ui-lang <lang> --help

Если всё прошло — язык подключится автоматически (доп. регистрации не требуется).

Обновление строк

  • Сначала правьте EN (добавление/удаление ключей), затем синхронизируйте другие локали.
  • Набор ключей во всех локалях должен совпадать — это проверяется тестами.
  • Для координации изменений можно завести issue (см. «Issue Guidelines»).

Плейсхолдеры

Смотрите раздел Плейсхолдеры. Несовпадающие или испорченные плейсхолдеры будут ловиться validate-po --strict.

Примеры (токены не меняем):

EN: Found {count} files
RU: Найдено {count} файлов

EN: Invalid value: %s
RU: Неверное значение: %s

Полезные редакторы

  • PO: Poedit (Windows/macOS/Linux), Gtranslator (GNOME), Lokalize (KDE), VS Code с расширениями для gettext.
  • FTL (Fluent): расширения VS Code для “Fluent/FTL” дают подсветку и базовые проверки. Подойдёт любой редактор.

Чек‑лист

  • [ ] Ключи без изменений (переводим только значения)
  • [ ] Плейсхолдеры сохранены ({…}, %…)
  • [ ] На месте оба файла: rimloc.ftl и rimloc-tests.ftl
  • [ ] В PR указан код языка и, по возможности, скрин --help

Перевод документации (опционально)

  • Скопируйте страницы из docs/en/... в docs/<lang>/..., сохраняя структуру.
  • Держите разделы синхронизированными между языками (одинаковые заголовки/порядок).
  • Предпросмотр локально:
python -m venv .venv && source .venv/bin/activate
pip install -r requirements-docs.txt
mkdocs serve
  • Для новой локали сайта нужно добавить язык в mkdocs.yml (плагин i18n). Создайте issue или упомяните это в PR.