Интеграция работы с памятью переводов в систему локализации PyBabel (Павел Бозин, OSEDUCONF-2025)

Материал из 0x1.tv

Докладчик
Павел Бозин

Разработка расширенного функционала для инструмента PyBabel, позволяющего работать с памятью переводов.

Разработка включает создание функции pybabel concat, предназначенной для объединения нескольких файлов в один, а также функции pybabel merge, обеспечивающей обновление файлов переводов с использованием памяти переводов. Подготовить pull request для внесения изменений в открытое сообщество разработчиков PyBabel, с соблюдением установленных ими дисциплин программирования.

Предусматривается поддержка и сопровождение pull request в процессе его согласования и утверждения в сообществе.

Видео

Презентация

Thesis

Современная разработка программ нуждается в эффективной локализации, что связано с управлением большими объёмами переведённых текстов. В нашем проекте мы добавили новые функции в «PyBabel», чтобы упростить этот процесс.

Цель работы была в том, чтобы расширить возможности «PyBabel» с помощью новых функций «pybabel concat» и «pybabel merge», которые являются аналогами «msgcat» и «msgmerge» из утилиты «gettext». Это позволяет легче объединять и обновлять файлы переводов, что актуально для компаний, стремящихся избежать лишних затрат на сторонние инструменты управления переводами.

В рамках проекта была разработана функция «pybabel concat», которая позволяет объединять несколько .po файлов в один. При возникновении конфликтов в переводах приоритет отдаётся переводу из первого файла, при этом флаги, местоположения и другая информация сообщений объединяются. Также был создан инструмент «pybabel merge», который даёт возможность объединять файлы с использованием памяти переводов. Для работы с памятью переводов реализованы два режима: добавление перевода, только если он отсутствует в выходном файле, или перезапись существующих переводов из памяти.

Общий процесс перевода с новыми процессами состоит в следующем: сначала применяется команда pybabel concat для создания компендиума переводов, этот собранный компендиум затем редактируется определённой группой специалистов. Когда разработчик вносит изменения в код и добавляет новые тексты, он может переводить их самостоятельно, опираясь на компендиум как на основной или вспомогательный источник переводов. Схема этого процесса представлена на рисунке

Процесс перевода с использованием новых инструментов

Новые функции облегчают управление переводами, предоставляя инструменты для автоматизации процессов «из коробки». Это выгодно для компаний, которые хотят минимизировать затраты на приобретение и внедрение сторонних инструментов для управления переводами. Даже в рамках учебных проектов добавленные функции окажутся полезными, поскольку они позволяют студентам не только работать с предоставленным преподавателем компендиумом переводов, но и использовать общие термины во всех проектах. Это упрощает понимание материала и уменьшает путаницу при работе с различными текстами, а также способствует более эффективному обучению в изучении процессов локализации.

На момент написания тезисов коммит находится в состоянии «pull request»'а в репозитории сообщества «PyBabel». Планируем довести процесс до конца, чтобы код официально был принят. Также планируется развитие этих инструментов и проверка их совместимости с дистрибутивом ОС «ALT Linux». Проект выполняется в рамках курса на UNИX «Совместная разработка приложений на «Python»» и разработанные инструменты будут в него добавлены.


Примечания и ссылки