AnycubicSlicer: доделываем перевод на разные языки

Если после смены языка в слайсере часть меню, кнопок или всплывающих подсказок в AnycubicSlicer всё равно показывается на английском — это не баг. AnycubicSlicer сделан на базе PrusaSlicer/OrcaSlicer и использует стандартную систему локализации gettext (файлы .po/.mo). Перевод обновляется вместе с релизами, но обычно чуть отстаёт от новых элементов интерфейса — новую строку в код добавили, а перевести на все языки ещё не успели. Такая строка просто выводится на языке оригинала (английском), пока для неё нет перевода.

Ниже — рабочий способ, которым можно закрыть конкретные “дыры” в переводе самому, не дожидаясь официального обновления.

Где лежит перевод

Файл перевода для вашего языка находится в папке установки слайсера:

resources/i18n/../AnycubicSlicer.mo

.mo — это скомпилированный бинарный файл, его нельзя открыть и отредактировать в блокноте. Редактируемая версия — .po, обычный текстовый файл со строками вида:

msgid "Original string"
msgstr "Переведённая строка"

Если msgstr пустая — в интерфейсе вместо перевода показывается msgid, то есть английский текст. Это и есть искомая “дыра”.

Рабочий способ: правим через Poedit

  1. Установи бесплатную программу Poedit — это стандартный редактор .po/.mo файлов, тот же самый, что используют официальные переводчики PrusaSlicer/OrcaSlicer.
  2. Сделай копию AnycubicSlicer.mo из resources/i18n/.. — на случай, если что-то пойдёт не так, чтобы вернуть оригинал одним движением.
  3. Открой копию .mo файла прямо в Poedit — программа умеет открывать скомпилированные .mo файлы напрямую, декомпилировать вручную не нужно.
  4. В Poedit есть фильтр “Untranslated” (непереведённые) — включи его, и увидишь ровно те строки, которые в интерфейсе вылезают на английском. Дальше выбираешь такую строку и в поле снизу вписываешь перевод.
  5. Если строка уже переведена, но криво или не по контексту слайсера — правишь её так же, просто найдя нужный msgid через поиск в Poedit.
  6. После правок нажимаем Save (или Ctrl+S) — Poedit сам пересоберёт файл обратно в .mo.
  7. Замени оригинальный AnycubicSlicer.mo в resources/i18n/.. на исправленный, перезапусти слайсер — перевод подтянется.

Это единственный способ, который реально сработал: он не требует пересборки слайсера из исходников и не трогает ничего, кроме языкового файла — работаешь через обычную программу с интерфейсом, а не через консоль.

Важный нюанс

Если строки нет в .po/.mo файле вообще (то есть она даже не помечена как непереведённая — её просто нет в списке), значит она ещё не попала в шаблон перевода на стороне разработчика. Такую строку через Poedit не добавить — она появится только с новой версией .pot-файла от Anycubic. В подавляющем большинстве случаев то, что видно на английском в уже вроде бы переведенном интерфейсе — это как раз пустой msgstr, а не полностью отсутствующая строка, так что способ выше закрывает почти все такие случаи.

Если лень руками — используйте Claude AI без подписки

Он умеет работать с .po/.mo файлами напрямую: можно прислать текущий файл перевода, он найдет все пустые/непереведённые строки, переведет их с учётом терминологии 3D-печати и вернет готовый файл — останется только положить его в resources/i18n/.. и перезапустить слайсер.