Lokalize — среда перевода интерфейсов KDE, которая работает с файлами Gettext PO и XLIFF. В отличие от простого редактора, она хранит память переводов, проверяет глоссарий, синхронизирует шаблоны и умеет сравнивать версии. Для команды, которая ведёт русскую локализацию большого проекта, это важнее красивой подсветки. Ниже — обзор возможностей и рабочий маршрут от установки до проверки файла перед коммитом.
Кому и зачем
Lokalize рассчитан на переводчиков, а не на разработчиков. Интерфейс делится на три области: список строк, редактор с оригиналом и переводом, панели памяти и глоссария. Основная единица работы — сообщение msgid/msgstr. Программа показывает контекст, комментарии разработчика, флаги и место в исходном коде.
Инструмент бесплатный, входит в проект KDE и доступен в репозиториях большинства дистрибутивов. Его сильная сторона — глубокая интеграция с процессом KDE: шаблоны, скрипты проверки, общие глоссарии. Слабая — порог входа и привязка к формату PO.
Установка
В Debian, Ubuntu и Linux Mint пакет называется lokalize. Вместе с ним стоит поставить gettext: утилиты msgfmt, msgmerge и msgcat понадобятся для проверки и слияния. Дополнительно может потребоваться pology — набор скриптов для контроля качества, но он есть не во всех репозиториях.
sudo apt install lokalize gettext
lokalize --version
msgfmt --version
which msgmerge
Для KDE-сборок удобнее установить meta-пакет с инструментами локализации, но для работы с одним PO-файлом достаточно двух пакетов. После первого запуска программа предложит выбрать язык и каталог проектов.
Проект и структура каталогов
Проект в Lokalize задаёт каталог с переводами, каталог с шаблонами и код языка. Файл проекта имеет расширение .lokalize и хранит пути. Это позволяет держать рядом несколько языков и не путаться в абсолютных путях.
[General]
ProjectID=ru-kde
LangCode=ru
PoBaseDir=/home/user/kde/ru
PotBaseDir=/home/user/kde/templates
Типовая раскладка: в po лежат файлы .po, в templates — соответствующие .pot. Имена должны совпадать, иначе синхронизация не найдёт пару. Перед началом стоит убедиться, что кодировка UTF-8, а в заголовке PO заполнены Language, Plural-Forms и Content-Type.
tree -L 2 ~/kde
kde/
├── po/kcm_settings.po
├── po/kcm_users.po
└── templates/kcm_settings.pot
Такой структуры достаточно для небольшого проекта. Когда файлов становятся десятки, каталоги разносят по модулям KDE, чтобы поиск и сборка не тормозили.
Память переводов и глоссарий
Память переводов хранит пары «оригинал — перевод» и подсказывает совпадения при наборе. Чем больше проект, тем полезнее: повторяющиеся строки в KDE встречаются постоянно. Глоссарий фиксирует термины и не даёт перевести одно понятие тремя разными словами.
Обе базы можно импортировать и экспортировать. Для обмена с другими инструментами используется TMX, для глоссариев — TBX. При командной работе базы стоит хранить в отдельном репозитории и обновлять перед началом сессии, иначе переводчики разойдутся в терминологии.
Синхронизация с шаблоном
Когда разработчики меняют строки, .pot обновляется, а .po нужно слить. Lokalize умеет делать это в режиме синхронизации, но тот же результат даёт msgmerge. Перед слиянием полезно сохранить копию: конфликты в PO выглядят как несколько msgstr подряд и требуют ручного разбора.
msgmerge --update --backup=none ru.po template.pot
msgattrib --no-obsolete ru.po -o ru-clean.po
msgfmt --check -o /dev/null ru-clean.po
msgcat --use-first ru-clean.po -o final.po
Флаг —no-obsolete убирает устаревшие строки, которые уже не встречаются в коде. Проверка msgfmt —check ловит несоответствие формата и проблемные последовательности. Если файл не проходит проверку, коммитить его нельзя: сломанный PO может уронить сборку переводов.
Контроль качества
Встроенные проверки Lokalize следят за согласованностью тегов, длиной строки и повторяющимися пробелами. Более строгие правила задаёт pology: он умеет проверять ускорители, пунктуацию, единицы измерения и соответствие глоссарию. Набор правил настраивается под проект.
posieve check-rules ru.po
posieve check-accelerators ru.po
posieve stats ru.po
posieve --help
Ускорители — символы после амперсанда в пунктах меню — отдельная боль локализации. Дубликаты и потерянные маркеры ломают навигацию с клавиатуры. Проверку стоит запускать до ревью, а не после.
Работа с git и ревью
Файлы переводов лежат в git, поэтому действуют обычные правила: маленькие коммиты, осмысленные сообщения, отдельная ветка на тему. Lokalize не заменяет систему контроля версий, но показывает различия и позволяет быстро найти изменённые строки. Для ревью удобно смотреть diff только по нужному файлу.
git switch -c ru/fix-settings
git diff --stat
git add po/kcm_settings.po
git commit -m "ru: уточнить перевод настроек"
Перед пушем стоит прогнать проверки и убедиться, что не осталось строк с fuzzy. Fuzzy-переводы не попадают в собранный каталог, поэтому «переведённая» строка может остаться английской в интерфейсе.
Эргономика
Скорость работы в Lokalize зависит от привычки. Основные действия стоит выучить сразу: переход к следующей непереведённой строке, копирование оригинала, вставка термина из глоссария, поиск по проекту. Панели можно скрывать, оставляя больше места редактору.
- переход к следующей непереведённой строке;
- копирование оригинала в поле перевода;
- поиск по всем файлам проекта;
- проверка орфографии и глоссария.
Точные сочетания зависят от версии и темы рабочего стола, их удобно переназначить под себя в настройках. Для больших экранов полезен режим с вертикальным разделением оригинала и перевода.
Ограничения
Lokalize не предназначен для вёрстки, субтитров и маркетинговых текстов. Он также не заменяет системы управления переводом с ролями и сроками. Для проекта на сотни тысяч строк без автоматизации не обойтись: понадобятся скрипты, CI и единые правила.
Ещё один минус — документация. Часть возможностей описана в wiki и рассчитана на участников KDE. Новому человеку проще начать с одного файла и постепенно добавлять память переводов и проверки.
Чек-лист перед коммитом
- Файл в UTF-8, заголовок PO заполнен.
- Нет строк со статусом fuzzy.
- msgfmt —check проходит без ошибок.
- Термины совпадают с глоссарием.
- Ускорители меню не дублируются.
- Diff содержит только нужные строки.
Итог
Lokalize — зрелый инструмент для тех, кто переводит интерфейсы KDE и готов разобраться в процессе. Он даёт память переводов, глоссарий, синхронизацию с шаблонами и проверки, которые экономят время на больших файлах. Для одиночного PO-файла хватит и простого редактора, но в командной работе выигрыш заметен. Главное — не забывать про msgfmt и git: инструмент помогает, но ответственность за качество остаётся на переводчике.