Редактор PO необходим для редактирования файлов переводов. В этом примере используется editors/poedit.
# pkg install poedit
Глава 9. Переводы PO
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
Содержание
9.1. Введение
Система GNU gettext предоставляет переводчикам удобный способ создания и поддержки переводов документов. Переводимые строки извлекаются из исходного документа в файл PO (Portable Object). Переводы строк добавляются с помощью отдельного редактора. Эти строки могут использоваться напрямую или собираться в полную переведённую версию исходного документа.
9.2. Быстрый старт
Предполагается, что процедура, описанная в Быстрый старт, уже выполнена. Опция TRANSLATOR
необходима и уже включена по умолчанию в порте textproc/docproj.
Этот пример демонстрирует создание испанского перевода краткой статьи Високосные секунды.
Когда создаётся новый перевод, структура каталогов должна быть создана или скопирована из оригинальной английской версии:
Создайте каталог для нового перевода. Исходный текст статьи на английском находится в ~/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
Скопируйте _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
Сгенерируйте переведенный документ:
% cd ~/doc % ./tools/translate.sh documentation es articles/leap-seconds
Имя сгенерированного документа соответствует имени оригинала на английском языке, обычно
_index.adoc
.Проверьте сгенерированный файл, преобразовав его в HTML и просмотрев в веб-браузере:
% cd ~/doc/documentation % make
9.3. Создание новых переводов
Первым шагом в создании нового переведённого документа является поиск или создание каталога для его размещения. FreeBSD размещает переведённые документы в подкаталоге с названием, соответствующим языку и региону, в формате lang. Здесь lang — это двухбуквенный код в нижнем регистре.
Язык | Регион | Имя каталога с переводами |
---|---|---|
Английский | Соединённые Штаты | 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/.
Создайте новый перевод на испанский язык Руководства портировщика. Оригинал находится в книге ~/doc/documentation/content/en/books/porters-handbook/.
Каталог для книг на испанском языке ~/doc/documentation/content/es/books/ уже существует, поэтому требуется только создать подкаталог для Руководства портировщика:
% cd ~/doc/documentation/content/es/books % mkdir porters-handbook
Скопируйте содержимое из переводимой книги:
% 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, которые указаны на английском языке.
Оригинал на английском:
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.6. Сборка переведенного документа
Переведённую версию оригинального документа можно создать в любое время. При этом все непереведённые части документа будут включены в итоговый документ на английском языке. Большинство PO-редакторов имеют индикатор, показывающий, какая часть перевода завершена. Это позволяет переводчику легко увидеть, когда переведено достаточно строк, чтобы сборка итогового документа имела смысл.
Глава о Weblate есть полный пример того, как Собрать переведённый документ.
9.7. Отправка новой переведённой версии
Подготовьте новые файлы перевода для отправки. Это включает добавление файлов в систему контроля версий, установку дополнительных свойств для них, а затем создание diff-файла для отправки.
Файлы различий, созданные в этих примерах, можно прикрепить к отчету об ошибке в документации или обзору кода.
Создайте diff новых файлов из базового каталога ~/doc/ так, чтобы полный путь отображался вместе с именами файлов. Это помогает коммиттерам определить целевой языковой каталог.
% cd ~/doc % git diff documentation/content/es/articles/nanobsd/ > /tmp/es_nanobsd.diff
Глава о Weblate содержит полный пример того, как отправить новый перевод.
Изменено: 20 сентября 2025 г. by Vladlen Popolitov