Трудно быть первым. Как я переводила Beautiful Soup

Дата публикации: 05.06.2021

Трудно быть первым ребенком в семье.

Даже если у тебя прекрасные родители (как у меня), которые не делают из тебя няньку для младших, и помнят, что ты вообще-то тоже ребенок, лет эдак до 16 хотя бы. Все равно, первым быть трудно.

Если ты первый, то именно ты — первопроходец. Именно на тебе родители учатся быть родителями. Именно с тобой они набивают все основные шишки. Младшим, как правило, проще, им достаются уже опытные мама и папа.

О чем это я. Да, о Beautiful Soup — в конце концов, там тоже есть понятия «родителей», «детей» и «сиблингов» (то есть сестер или братьев).

Перевод официальной англоязычной документация для Beautiful Soup на русский язык — это мой первый проект на GeekWriter. Как первый ребенок. С ним я осваивала новую для себя технологию генерации документации из Sphinx. Его я переводила не на коленке, а подобрала более-менее подходящий переводческий инструментарий. И именно он в итоге получился, пожалуй, самым успешным из проектов на GeekWriter. Во всяком случае, самым востребованным у внешней аудитории.

Рассказываю, как это было.

Во-первых. Зачем я вообще начала переводить

Точно не помню всей своей мотивации, но, как минимум, были такие причины:

  • Поскольку я периодически использовала Beautiful Soup, то подумала, что неплохо бы углубиться в документацию. Перевести оригинал на русский — это довольно эффективный способ разобраться, что к чему.

  • Я уже знала про генератор документации Sphinx, и мне интересно было, как он работает. Я увидела, что документация Beautiful Soup сделана именно на Sphinx. Подумала, что это неплохой повод изучить технологию.

Первые шаги. Что и как я делала

Вкратце, последовательность действия была такова:

  1. Скачала исходник документации в формате RST с сайта crummy.com.

  2. Установила Sphinx и прогнала через него скачанный исходник, чтобы ознакомиться со Sphinx и одновременно получить более пригодный для чтения вариант документации.

    На мой взгляд, оригинал не очень приятно читать, он сделан на старой «классической» теме для Sphinx. В классической теме примеры кода мелковаты, а страница пестрит ненужным разноцветьем. Более современная тема Alabaster куда приятнее для глаза, именно ее я использую на GeekWriter.

  3. Для перевода сначала пробовала Transifex, но он попросил для бесплатной версии подтвердить, что я могу предоставить исходный код. Не для меня.

  4. Воспользовалась сервисом Wordfast Anywhere. Он бесплатный, без всяких доступов к репозиториям. Выгрузила в Wordfast Anywhere англоязычный исходник.

  5. После перевода скачала результирующий текстовый файл, внесла необходимые исправления (ниже я написала, что именно испортил Wordfast Anywhere и что пришлось исправлять) и опубликовала русскоязычную документацию в Sphinx.

  6. Выложила документацию на Geekwriter.

  7. Русскоязычный исходник в формате RST выложила на Github и сообщила о том, что теперь есть русский перевод, в дискуссионной группе Beautiful Soup. Леонард Ричардсон, автор библиотеки Beautiful Soup, на основе моего исходника опубликовал русскоязычную документацию на своем сайте.

    На момент написания статьи (июнь 2021) на сайте Леонарда так и лежит та, самая первая, версия русскоязычной документации, хотя на GeekWriter перевод уже дважды обновлялся.

Первое знакомство с Wordfast Anywhere

До Beautiful Soup я не пробовала переводить что-то более-менее масштабное. Когда надо перевести пару абзацев или пару страниц, то не заморачиваешься: копипастишь в тот же Word и просто переводишь как-нибудь.

Но если нужно что-то посерьезнее, а тем более если есть вероятность, что перевод надо будет потом поддерживать, обновлять, то такой примитивный способ не годится. Нужны специальные инструменты, то есть CAT-системы (CAT — аббревиатура от Computer-assisted translation).

CAT-система делает работу переводчика проще за счет автоматизации перевода: тут и машинный перевод, и память переводов, откуда автоматически подставляются подходящие фрагменты, и много чего еще. Wordfast Anywhere как раз относится к таким CAT-системам.

Так вот, CAT, конечно, это круто. Wordfast довольно быстро сообразил, например, что Beautiful Soup не надо переводить. И в целом неплохой получается перевод местами. Но…

  • Исходные файлы формата RST сервис не поддерживат, так что пришлось сохранить англоязычный исходник в TXT. Не такая уж большая проблема, конечно, особенно если речь не идет о десятках исходников.

  • При претранслейте Wordfast Anywhere очень вольно обращается со знаками препинания и прочими не буквенными и не числовыми символами. Например, вставляет пробелы, меняет символы местами. Из-за этого в дальнейшем Sphinx не может корректно обработать RST, и получаются некрасивости.

  • Переводить таблицы через Wordfast Anywhere просто ужасно. Форматирование сбивается, и в интерфейсе это невозможно отследить. Варианты действий:

    • Не переводить таблицы сразу, оставить на потом, и перевести уже потом в почти готовом документе.

    • Переводить таблицы и форматировать без Wordfast Anywhere, а потом построчно копипастить.

    • Может быть, можно вынести таблицу в отдельный файл и сослаться на неё. Надо это проверить. Плюс это точно надо делать в файле с языком-источником и потом копировать ту же структуру в файлах переводов.

Другие трудности перевода

Сначала я было взялась переводить текст в примерах кода (в документации Beautiful Soup используется в качестве примера отрывок из Алисы в стране чудес). Даже нашла несколько разных переводов, включая чудесный перевод Бориса Заходера. Но довольно быстро отказалась от этой затеи, когда увидела, что результаты разбора документа могут в итоге отличаться, потому что в оригинале немного другая пунктуация. Заглянула в переводы на другие языки и убедилась, что остальные переводчики пошли тем же путём. Так что все примеры в документации остались строго англоязычными.

Постскриптум

Если бы я переводила документацию Beautiful Soup сейчас, то, возможно, сделала бы все как-то иначе. Может, не стала бы использовать Wordfast Anywhere, а взяла что-то помощнее. Может быть, воспользовалась бы предусмотренными в Sphinx возможностями локализации (sphinx-intl), как я сделала при переводе документации для Miniconda. Может, со временем я найду еще более эффективные способы работы над переводами. Но первый опыт не должен быть идеальным. Он просто должен быть. Согласны?