Интеграция работы с памятью переводов в систему локализации 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»» и разработанные инструменты будут в него добавлены.