Перевод 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.