Path: blob/main/documentation/content/ru/books/fdp-primer/po-translations/_index.adoc
18099 views
---
description: 'Как работать с переводом PO в проекте документации FreeBSD'
next: books/fdp-primer/weblate
params:
path: /books/fdp-primer/po-translations/
prev: books/fdp-primer/translations
showBookMenu: 'true'
tags: ["po", "translations", "tutorial", "quick start"]
title: 'Глава 9. Переводы PO'
weight: 9
---
[[po-translations]]
= Переводы PO
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 9
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/fdp-primer/
ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]
ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
[[po-translations-introduction]]
== Введение
Система http://www.gnu.org/software/gettext/[GNU gettext] предоставляет переводчикам удобный способ создания и поддержки переводов документов. Переводимые строки извлекаются из исходного документа в файл PO (Portable Object). Переводы строк добавляются с помощью отдельного редактора. Эти строки могут использоваться напрямую или собираться в полную переведённую версию исходного документа.
[[po-translations-quick-start]]
== Быстрый старт
Предполагается, что процедура, описанная в crossref:overview[overview-quick-start,Быстрый старт], уже выполнена. Опция `TRANSLATOR` необходима и уже включена по умолчанию в порте package:textproc/docproj[].
Этот пример демонстрирует создание испанского перевода краткой статьи extref:{leap-seconds}[Високосные секунды].
[[po-translations-quick-start-install-po-editor]]
[.procedure]
====
.Процедура: Установка PO-редактора
. Редактор PO необходим для редактирования файлов переводов. В этом примере используется package:editors/poedit[].
+
[source, shell]
....
# pkg install poedit
....
====
[[po-translations-quick-start-initial-setup]]
[.procedure]
====
.Процедура: Начальная настройка
Когда создаётся новый перевод, структура каталогов должна быть создана или скопирована из оригинальной английской версии:
. Создайте каталог для нового перевода. Исходный текст статьи на английском находится в [.filename]#~/doc/documentation/content/en/articles/leap-seconds/#. Испанский перевод будет расположен в [.filename]#~/doc/documentation/content/es/articles/leap-seconds/#. Путь идентичен, за исключением названия языкового каталога. Исходный текст статьи на английском находится в [.filename]#~/doc/en/articles/leap-seconds/#. Испанский перевод будет расположен в [.filename]#~/doc/es/articles/leap-seconds/#. Путь идентичен, за исключением названия языкового каталога.
+
[source, shell]
....
% mkdir ~/doc/documentation/content/es/articles/leap-seconds
....
. Скопируйте [.filename]#_index.po# из исходного документа в каталог перевода:
+
[source, shell]
....
% cp ~/doc/documentation/content/en/articles/leap-seconds/_index.po \
~/doc/documentation/content/es/articles/leap-seconds/
....
Предположим, что документ или язык также переводится через Weblate. В таком случае рекомендуется взять файл `.po` оттуда и загрузить переведённый документ обратно в платформу, чтобы централизовать усилия по переводу через Weblate и избежать повторной работы.
См. как загрузить файлы `.po` в главе crossref:weblate[weblate-translating-offline,Перевод офлайн в Weblate].
====
[[po-translations-quick-start-translation]]
[.procedure]
====
.Процедура: Перевод
Используйте PO-редактор для ввода переводов в PO-файл. Доступно несколько различных редакторов. Здесь показан [.filename]#poedit# из пакета:editors/poedit[].
[source, shell]
....
% poedit documentation/content/es/articles/leap-seconds/_index.po
....
====
[[po-translations-quick-generating-a-translated-document]]
[.procedure]
====
.Процедура: Создание переведенного документа
. Сгенерируйте переведенный документ:
+
[source, shell]
....
% cd ~/doc
% ./tools/translate.sh documentation es articles/leap-seconds
....
+
Имя сгенерированного документа соответствует имени оригинала на английском языке, обычно `[.filename]#_index.adoc#`.
+
. Проверьте сгенерированный файл, преобразовав его в HTML и просмотрев в веб-браузере:
+
[source, shell]
....
% cd ~/doc/documentation
% make
....
====
[[po-translations-creating]]
== Создание новых переводов
Первым шагом в создании нового переведённого документа является поиск или создание каталога для его размещения. FreeBSD размещает переведённые документы в подкаталоге с названием, соответствующим языку и региону, в формате [.filename]#lang#. Здесь _lang_ — это двухбуквенный код в нижнем регистре.
[[po-translations-language-names]]
.Названия языков
[cols="1,1,1", frame="none", options="header"]
|===
| Язык
| Регион
| Имя каталога с переводами
|Английский
|Соединённые Штаты
|[.filename]#en#
|Бенгальский
|Бангладеш
|[.filename]#bn-bd#
|Датский
|Дания
|[.filename]#da#
|Немецкий
|Германия
|[.filename]#de#
|Греческий
|Греция
|[.filename]#el#
|Испанский
|Испания
|[.filename]#es#
|Французский
|Франция
|[.filename]#fr#
|Венгерский
|Венгрия
|[.filename]#hu#
|Итальянский
|Италия
|[.filename]#it#
|Японский
|Япония
|[.filename]#ja#
|Корейский
|Корея
|[.filename]#ko#
|Монгольский
|Монголия
|[.filename]#mn#
|Голландский
|Нидерланды
|[.filename]#nl#
|Польский
|Польша
|[.filename]#pl#
|Португальский
|Бразилия
|[.filename]#pt-br#
|Русский
|Россия
|[.filename]#ru#
|Турецкий
|Турция
|[.filename]#tr#
|Китайский
|Китай
|[.filename]#zh-cn#
|Китайский
|Тайвань
|[.filename]#zh-tw#
|===
Переводы находятся в подкаталогах основного каталога документации, который в данном случае предполагается как [.filename]#~/doc/documentation/#, как показано в crossref:overview[overview-quick-start, Быстрый старт]. Например, немецкие переводы расположены в [.filename]#~/doc/documentation/content/de/#, а французские — в [.filename]#~/doc/documentation/content/fr/#.
Каждый языковой каталог содержит отдельные подкаталоги с названиями по типу документов, обычно [.filename]#articles/# и [.filename]#books/#.
Объединение этих имён каталогов даёт полный путь к статье или книге. Например, французский перевод статьи NanoBSD находится в [.filename]#~/doc/documentation/content/fr/articles/nanobsd/#, а монгольский перевод Руководства — в [.filename]#~/doc/documentation/content/mn/books/handbook/#.
При переводе документа на новый язык необходимо создать новый каталог языка. Если каталог языка уже существует, достаточно создать подкаталог в каталоге [.filename]#articles/# или [.filename]#books/#.
[[po-translations-creating-example]]
.Создание испанского перевода Руководства портировщика
[example]
====
Создайте новый перевод на испанский язык extref:{porters-handbook}[Руководства портировщика]. Оригинал находится в книге [.filename]#~/doc/documentation/content/en/books/porters-handbook/#.
[.procedure]
======
. Каталог для книг на испанском языке [.filename]#~/doc/documentation/content/es/books/# уже существует, поэтому требуется только создать подкаталог для Руководства портировщика:
+
[source, shell]
....
% cd ~/doc/documentation/content/es/books
% mkdir porters-handbook
....
. Скопируйте содержимое из переводимой книги:
+
[source, shell]
....
% cd porters-handbook
% cp -R ~/doc/documentation/content/en/books/porters-handbook/* .
....
+
Теперь структура документа готова для начала перевода с помощью команды `po4a`.
======
====
[[po-translations-translating]]
== Перевод
Система gettext значительно сокращает количество элементов, за которыми нужно следить переводчику. Строки, подлежащие переводу, извлекаются из исходного документа в файл PO. Затем с помощью редактора PO вводятся переведённые версии каждой строки.
Система перевода FreeBSD PO не перезаписывает PO-файлы, поэтому этап извлечения можно выполнять в любое время для обновления PO-файла.
Редактор PO используется для редактирования файла. В этих примерах показан package:editors/poedit[], так как он прост и имеет минимальные требования. Другие редакторы PO предоставляют функции, облегчающие процесс перевода. В Коллекции портов доступно несколько таких редакторов, включая package:devel/gtranslator[].
Важно сохранить PO-файл. Он содержит всю работу, проделанную переводчиками.
[IMPORTANT]
====
Перевод документов онлайн оказывается наиболее простым способом перевода документации в FreeBSD, так как позволяет нескольким пользователям совместно работать над одним файлом, эффективно распределяя нагрузку. Для получения дополнительной информации обратитесь к следующей главе: crossref:weblate[weblate-introduction,Переводы в Weblate].
====
[[po-translations-tips]]
== Советы переводчикам
[[po-translations-tips-xmltags]]
=== Сохранение AsciiDoc макросов
Сохраните макросы AsciiDoc, которые указаны на английском языке.
.Сохранение AsciiDoc макросов
[example]
====
Оригинал на английском:
[.programlisting]
....
msgid ""
"This example shows the creation of a Spanish translation of the short "
"extref:{leap-seconds}[Leap Seconds] article."
....
Испанский перевод:
[.programlisting]
....
msgid ""
"Este ejemplo muestra la creación de un artículo con poco contenido como el artículo "
"extref:{leap-seconds}[Leap Seconds]."
....
====
[[po-translations-tips-spaces]]
=== Сохранение пробелов
Сохраняйте существующие пробелы в начале и конце строк, которые нужно перевести. В переведённой версии эти пробелы также должны присутствовать.
[[po-translations-tips-verbatim]]
=== Дословные теги
Содержимое некоторых тегов должно быть скопировано дословно, без перевода:
* `man:man[1]`
* `package:package[]`
* `link`
* `image`
* `include`
* `Admonitions`
* `id's`
* `Heading tags`
* `source`
[[po-translations-building]]
== Сборка переведенного документа
Переведённую версию оригинального документа можно создать в любое время. При этом все непереведённые части документа будут включены в итоговый документ на английском языке. Большинство PO-редакторов имеют индикатор, показывающий, какая часть перевода завершена. Это позволяет переводчику легко увидеть, когда переведено достаточно строк, чтобы сборка итогового документа имела смысл.
Глава о Weblate есть полный пример того, как crossref:weblate[weblate-building,Собрать переведённый документ].
[[po-translations-submitting]]
== Отправка новой переведённой версии
Подготовьте новые файлы перевода для отправки. Это включает добавление файлов в систему контроля версий, установку дополнительных свойств для них, а затем создание diff-файла для отправки.
Файлы различий, созданные в этих примерах, можно прикрепить к https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Documentation[отчёту об ошибке в документации] или https://reviews.freebsd.org/[обзору кода].
[[po-translations-submitting-spanish]]
.Перевод статьи NanoBSD на испанский язык
[example]
====
[.procedure]
======
. Создайте diff новых файлов из базового каталога [.filename]#~/doc/# так, чтобы полный путь отображался вместе с именами файлов. Это помогает коммиттерам определить целевой языковой каталог.
+
[source, shell]
....
% cd ~/doc
% git diff documentation/content/es/articles/nanobsd/ > /tmp/es_nanobsd.diff
....
======
Глава о Weblate содержит полный пример того, как crossref:weblate[weblate-submitting-translations, отправить новый перевод].
====