Глава 9. Переводы PO

Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.

9.1. Введение

Система GNU gettext предоставляет переводчикам удобный способ создания и поддержки переводов документов. Переводимые строки извлекаются из исходного документа в файл PO (Portable Object). Переводы строк добавляются с помощью отдельного редактора. Эти строки могут использоваться напрямую или собираться в полную переведённую версию исходного документа.

9.2. Быстрый старт

Предполагается, что процедура, описанная в Быстрый старт, уже выполнена. Опция TRANSLATOR необходима и уже включена по умолчанию в порте textproc/docproj.

Этот пример демонстрирует создание испанского перевода краткой статьи Високосные секунды.

Процедура: Установка PO-редактора
  1. Редактор PO необходим для редактирования файлов переводов. В этом примере используется editors/poedit.

    # pkg install poedit
Процедура: Начальная настройка

Когда создаётся новый перевод, структура каталогов должна быть создана или скопирована из оригинальной английской версии:

  1. Создайте каталог для нового перевода. Исходный текст статьи на английском находится в ~/doc/documentation/content/en/articles/leap-seconds/. Испанский перевод будет расположен в ~/doc/documentation/content/es/articles/leap-seconds/. Путь идентичен, за исключением названия языкового каталога. Исходный текст статьи на английском находится в ~/doc/en/articles/leap-seconds/. Испанский перевод будет расположен в ~/doc/es/articles/leap-seconds/. Путь идентичен, за исключением названия языкового каталога.

    % mkdir ~/doc/documentation/content/es/articles/leap-seconds
  2. Скопируйте _index.po из исходного документа в директорию перевода:

    % cp ~/doc/documentation/content/en/articles/leap-seconds/_index.po \
      ~/doc/documentation/content/es/articles/leap-seconds/

Предположим, что документ или язык также переводится через Weblate. В таком случае рекомендуется взять файл .po оттуда и загрузить переведённый документ обратно в платформу, чтобы централизовать усилия по переводу через Weblate и избежать повторной работы.

См. как загрузить файлы .po в главе Перевод офлайн в Weblate.

Процедура: Перевод

Используйте PO-редактор для ввода переводов в PO-файл. Доступно несколько различных редакторов. Здесь показан poedit из пакета:editors/poedit[].

% poedit documentation/content/es/articles/leap-seconds/_index.po
Процедура: Создание переведенного документа
  1. Сгенерируйте переведенный документ:

    % cd ~/doc
    % ./tools/translate.sh documentation es articles/leap-seconds

    Имя сгенерированного документа соответствует имени оригинала на английском языке, обычно _index.adoc.

  2. Проверьте сгенерированный файл, преобразовав его в HTML и просмотрев в веб-браузере:

    % cd ~/doc/documentation
    % make

9.3. Создание новых переводов

Первым шагом в создании нового переведённого документа является поиск или создание каталога для его размещения. FreeBSD размещает переведённые документы в подкаталоге с названием, соответствующим языку и региону, в формате lang. Здесь lang — это двухбуквенный код в нижнем регистре.

Таблица 1. Названия языков
ЯзыкРегионИмя каталога с переводами

Английский

Соединённые Штаты

en

Бенгальский

Бангладеш

bn-bd

Датский

Дания

da

Немецкий

Германия

de

Греческий

Греция

el

Испанский

Испания

es

Французский

Франция

fr

Венгерский

Венгрия

hu

Итальянский

Италия

it

Японский

Япония

ja

Корейский

Корея

ko

Монгольский

Монголия

mn

Голландский

Нидерланды

nl

Польский

Польша

pl

Португальский

Бразилия

pt-br

Русский

Россия

ru

Турецкий

Турция

tr

Китайский

Китай

zh-cn

Китайский

Тайвань

zh-tw

Переводы находятся в поддиректориях основной директории документации, которая в данном случае предполагается как ~/doc/documentation/, как показано в Быстрый старт. Например, немецкие переводы расположены в ~/doc/documentation/content/de/, а французские — в ~/doc/documentation/content/fr/.

Каждый языковой каталог содержит отдельные подкаталоги с названиями по типу документов, обычно articles/ и books/.

Объединение этих имен каталогов дает полный путь к статье или книге. Например, французский перевод статьи NanoBSD находится в ~/doc/documentation/content/fr/articles/nanobsd/, а монгольский перевод Руководства — в ~/doc/documentation/content/mn/books/handbook/.

При переводе документа на новый язык необходимо создать новый языковой каталог. Если языковой каталог уже существует, достаточно создать подкаталог в директории articles/ или books/.

Пример 1. Создание испанского перевода Руководства портировщика

Создайте новый перевод на испанский язык Руководства портировщика. Оригинал находится в книге ~/doc/documentation/content/en/books/porters-handbook/.

  1. Каталог для книг на испанском языке ~/doc/documentation/content/es/books/ уже существует, поэтому требуется только создать подкаталог для Руководства портировщика:

    % cd ~/doc/documentation/content/es/books
    % mkdir porters-handbook
  2. Скопируйте содержимое из переводимой книги:

    % cd porters-handbook
    % cp -R ~/doc/documentation/content/en/books/porters-handbook/* .

    Теперь структура документа готова для начала перевода с помощью команды po4a.

9.4. Перевод

Система gettext значительно сокращает количество элементов, за которыми нужно следить переводчику. Строки, подлежащие переводу, извлекаются из исходного документа в файл PO. Затем с помощью редактора PO вводятся переведённые версии каждой строки.

Система перевода FreeBSD PO не перезаписывает PO-файлы, поэтому этап извлечения можно выполнять в любое время для обновления PO-файла.

Редактор PO используется для редактирования файла. В этих примерах показан editors/poedit, так как он прост и имеет минимальные требования. Другие редакторы PO предоставляют функции, облегчающие процесс перевода. В Коллекции портов доступно несколько таких редакторов, включая devel/gtranslator.

Важно сохранить PO-файл. Он содержит всю работу, проделанную переводчиками.

Перевод документов онлайн оказывается наиболее простым способом перевода документации в FreeBSD, так как позволяет нескольким пользователям совместно работать над одним файлом, эффективно распределяя нагрузку. Для получения дополнительной информации обратитесь к следующей главе: Переводы в Weblate.

9.5. Советы переводчикам

9.5.1. Сохранение AsciiDoc макросов

Сохраните макросы AsciiDoc, которые указаны на английском языке.

Пример 2. Сохранение AsciiDoc макросов

Оригинал на английском:

msgid ""
"This example shows the creation of a Spanish translation of the short "
"extref:{leap-seconds}[Leap Seconds] article."

Испанский перевод:

msgid ""
"Este ejemplo muestra la creación de un artículo con poco contenido como el artículo "
"extref:{leap-seconds}[Leap Seconds]."

9.5.2. Сохранение пробелов

Сохраняйте существующие пробелы в начале и конце строк, которые нужно перевести. В переведённой версии эти пробелы также должны присутствовать.

9.5.3. Дословные теги

Содержимое некоторых тегов должно быть скопировано дословно, без перевода:

9.6. Сборка переведенного документа

Переведённую версию оригинального документа можно создать в любое время. При этом все непереведённые части документа будут включены в итоговый документ на английском языке. Большинство PO-редакторов имеют индикатор, показывающий, какая часть перевода завершена. Это позволяет переводчику легко увидеть, когда переведено достаточно строк, чтобы сборка итогового документа имела смысл.

Глава о Weblate есть полный пример того, как Собрать переведённый документ.

9.7. Отправка новой переведённой версии

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

Файлы различий, созданные в этих примерах, можно прикрепить к отчету об ошибке в документации или обзору кода.

Пример 3. Перевод статьи NanoBSD на испанский язык
  1. Создайте diff новых файлов из базового каталога ~/doc/ так, чтобы полный путь отображался вместе с именами файлов. Это помогает коммиттерам определить целевой языковой каталог.

    % cd ~/doc
    % git diff documentation/content/es/articles/nanobsd/ > /tmp/es_nanobsd.diff

Глава о Weblate содержит полный пример того, как отправить новый перевод.


Изменено: 20 сентября 2025 г. by Vladlen Popolitov