---
description: 'Как присоединиться к команде переводчиков FreeBSD и переводить онлайн в Weblate'
next: books/fdp-primer/manual-pages
params:
  path: /books/fdp-primer/weblate/
prev: books/fdp-primer/po-translations
showBookMenu: 'true'
tags: ["weblate", "po", "translations", "tutorial", "quick start"]
title: 'Глава 10. Переводы в Weblate'
weight: 10
---

[[weblate-translations]]
= Переводы в Weblate
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 10
: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::[]

[[weblate-introduction]]
== Введение

Эта глава описывает основные шаги для присоединения к команде переводчиков FreeBSD, перевода онлайн в Weblate или офлайн, а также содержит простые рекомендации по переводу, вычитке и тестированию. Основное внимание уделено части, связанной с переводом.

Исходные документы (статьи и книги) находятся на {main-site}[портале документации].

https://weblate.org/en/[Weblate] — это веб-ориентированное программное обеспечение с открытым исходным кодом, специализирующееся на локализации. Проект FreeBSD поддерживает собственный экземпляр.

[[weblate-become-translator]]
== Как стать переводчиком FreeBSD

Вот простые шаги для начала перевода статей и книг проекта документации FreeBSD.

. Создайте учётную запись на https://translate-dev.freebsd.org/[FreeBSD Weblate] с помощью электронной почты или вашего аккаунта GitHub.
. Подписаться на список рассылки {freebsd-translators}.
. Представьтесь и попросите присоединиться к языковой команде. Если языковая команда не существует, попросите создать её. Самопредставление обязательно. Оно увеличивает шансы на одобрение доступа на запись.
. Войдите в https://translate-dev.freebsd.org/[Weblate] с новым аккаунтом.
. Найдите языковую команду и выберите первый документ для перевода.
. Создайте учётную запись в Bugzilla, чтобы отправлять переводы после завершения работы над документом. Проект документации также принимает Pull Requests на GitHub с переводами.

[WARNING]
====
Все файлы переводов и документы должны соответствовать https://www.freebsd.org/copyright/freebsd-doc-license/[Лицензии документации FreeBSD]; если это неприемлемо, пожалуйста, не регистрируйтесь и не присылайте никаких исправлений или переводов.
====

[[weblate-introduce-yourself]]
== Представьтесь

Предоставьте краткое самопредставление в рассылке {freebsd-translators}, чтобы начать процесс предоставления доступа. Это позволит координатору языка или администратору выдать необходимые права новому пользователю Weblate для начала перевода.

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

[.programlisting]
....
Subject: Self-Introduction: Name and language

Name:      Name (use preferred name)
Location:  City, country (optional)
Login:     username or email (essential)
Language:  Language to translate (essential)
Profession or student status: (optional)
About You: (free format -- info which you feel comfortable sharing with
  others: company, school, other affiliation, historical qualifications, other
  projects you have worked on, level and type of computer skills, other relevant skills,
  etc.)
You and the FreeBSD Project: (free format: other FreeBSD projects of
  interest, comments, etc.)
....

[[weblate-login]]
== Вход в Weblate

Откройте https://translate-dev.freebsd.org/[] и `Войдите` (Sign in).

image::weblate-login.png["Логин в Webleate", 800]

Используйте имя пользователя, адрес электронной почты или учётную запись GitHub для входа.

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

На экземпляре Weblate FreeBSD все переводы будут зафиксированы в https://github.com/freebsd/freebsd-doc-translate[freebsd-doc-translate] (промежуточном репозитории на GitHub), а не напрямую в https://github.com/freebsd/freebsd-doc[freebsd-doc]. Переводчики должны брать файлы PO gettext (`.po`), преобразовывать их в `.adoc` и отправлять через https://bugs.freebsd.org/bugzilla/[Bugzilla] или https://github.com/freebsd/freebsd-doc/pulls[GitHub], чтобы переведённый документ был опубликован или обновлён в портале документации. Подробнее см. в следующих разделах.

Weblate будет фиксировать изменения ежедневно, как минимум в `freebsd-doc-translate`, если есть новые переведённые строки.

[[weblate-find-language-team]]
== Найти команду локализации для участия

Нажмите `Проекты`, выберите `Документация`, затем нажмите `Языки` и увидите все доступные языки.

image::weblate-languages.png["Языки в Weblate", 500]

Обратите внимание, что некоторые языки и переведённые документы уже доступны в портале документации и репозиториях.

Если желаемый язык для перевода недоступен в Weblate, пожалуйста, свяжитесь с https://www.freebsd.org/docproj/translations/[координаторами по языкам], прежде чем запрашивать создание нового языка. Если ответа не последует, обратитесь по адресу: {doceng}.

[[weblate-translating-online]]
== Перевод онлайн на Weblate

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

После того как координатор или администратор предоставит пользователю доступ к определённому языку, кнопка сохранения станет активной, и пользователь сможет начать перевод.

image::weblate-documents.png["Weblate Документы", 800]
image::weblate-translate.png["Weblate Translate", 800]

В Weblate есть набор ссылок, ведущих к непосредственному переводу. Перевод далее разделён на отдельные проверки, такие как `Не переведено` или `Требует проверки`. Если весь документ переведён без ошибок, ссылка `Все переводы` всё равно доступна на случай, если потребуется проверка. Также можно воспользоваться полем поиска, чтобы найти конкретную строку или термин.

В https://docs.weblate.org/en/latest/user/translating.html#translation-projects[документации Weblate] содержится дополнительная информация о переводах, например, сочетания клавиш и другие советы по работе с инструментом перевода.

[[weblate-translating-offline]]
== Перевод в автономном режиме

Weblate на FreeBSD использует файлы перевода PO gettext. Пользователи, знакомые с файлами PO gettext, которые хотят переводить офлайн, могут загружать и выгружать переводы на странице документа в Weblate, выбрав пункт в меню `Files`.

image::weblate-offline.png["Weblate Offline", 800]

[[weblate-automatic-suggestions]]
== Перевод на основе автоматических предложений

Языки, использующие Weblate до миграции на Hugo/Asciidoctor, могут использовать эту функцию в Weblate для экономии времени.

Эта функция Weblate использует память переводов, созданную другими компонентами и проектами на том же сервере. Для этого прежние переводы Weblate сохранены на том же сервере в режиме только для чтения.

Строки, совпадающие с `100/100` по степени схожести, могут быть скопированы и сохранены напрямую. Остальным строкам потребуется как минимум незначительная корректировка.

Некоторые примеры:

image::weblate_automatic_suggestion_01.png["Weblate Автоматические предложения 01", 800]

С переходом на Hugo/Asciidoctor документы используют UTF-8. Некоторые HTML-сущности следует заменить. Некоторые строки, такие как ссылки, требуют изменений в разметке.

image::weblate_automatic_suggestion_02.png["Weblate Автоматические предложения 02", 800]

Ссылки:

image::weblate_automatic_suggestion_03.png["Weblate Автоматические предложения 03", 800]

[[weblate-proofreading-qa]]
== Вычитка и проверка качества в Weblate

Панель документа `Project/Language/Document` отображает статус перевода и состояние строк для этого документа. Эта страница удобна для вычитки и проверки качества.

image::weblate-revision1.png["Weblate Ревизия 01", 800]

В этом примере две строки пропустили точку; переход по этой ссылке покажет только те строки, которые нужно пересмотреть/перевести.

image::weblate-revision2.png["Weblate Ревизия 02", 800]

Переводчики и рецензенты часто ценят возможность видеть переведённые строки в контексте.

[[weblate-building]]
== Сборка переведенного документа

Проект не использует непрерывную интеграцию и непрерывную поставку для сборки переводов. Ведутся исследования по внедрению этой возможности.

[NOTE]
====
Следующий пример использует GitHub, так как Weblate также находится на GitHub . Обратите внимание, что этот репозиторий доступен только для чтения, но Pull Requests принимаются.
====

Для локальной сборки перевода выполните следующие шаги:

[[weblate-clone-repositories]]

[.procedure]
====
.Процедура: Клонирование необходимых репозиториев
. Клонирование репозитория `freebsd-doc`:
+
[source, console?prompt=%]
....
% git clone https://github.com/freebsd/freebsd-doc.git ~/freebsd-doc
....

. Клонирование репозитория `freebsd-doc-translate`:
+
[source, console?prompt=%]
....
% git clone https://github.com/freebsd/freebsd-doc-translate.git ~/freebsd-doc-translate
....
====

[[weblate-copy-translation]]

[.procedure]
====
.Процедура: Копирование файла перевода в `freebsd-doc`

Имея оба репозитория, скопируйте перевод из `freebsd-doc-translate` в `freebsd-doc`. Пример перевода статьи Руководства для коммиттеров на испанском языке.

[source, console?prompt=%]
....
% cp ~/freebsd-doc-translate/documentation/content/es/articles/committers-guide/_index.po \
~/freebsd-doc/documentation/content/es/articles/committers-guide/
....
====

[[weblate-translate]]

[.procedure]
====
.Процедура: Преобразование файла перевода (`.po`) в `.adoc`

Перейдите в корень `freebsd-doc`.

[source, console?prompt=%]
....
% cd ~/freebsd-doc
....

Преобразовать файл `.po` в `.adoc`

[source, console?prompt=%]
....
% ./tools/translate.sh documentation es articles/committers-guide
....

По умолчанию: только файлы с более чем восемьюдесятью процентами переведённых строк будут преобразованы в `.adoc`.

Чтобы игнорировать это ограничение:

[source, console?prompt=%]
....
% KEEP_ENV=0 ./tools/translate.sh documentation es articles/committers-guide
....

====

Некоторые документы, такие как книги, содержат множество PO-файлов gettext. Всегда копируйте их все при переводе и сборке. Файлы, которые не были переведены, будут преобразованы с исходными (английскими) строками.

[WARNING]
====
Структура каталогов является основополагающей. Всегда следуйте структуре каталогов английского документа.
====

[[weblate-build]]

[.procedure]
====
.Процедура: Сборка переведенного документа

Наконец, часть сборки.

Перейдите в каталог документации, так как сборка веб-сайта FreeBSD не требуется.

[source, console?prompt=%]
....
% cd documentation
....

И соберите документацию. Обратите внимание, что `en` всегда добавляется по умолчанию при сборке любого другого языка.

[source, console?prompt=%]
....
% DOC_LANG=es make
....

Эта команда соберет только английскую и испанскую документацию портала FreeBSD. Результат будет сохранен в каталоге [.filename]#public#; откройте его в браузере. Обратите внимание, что некоторые индексные файлы могут перенаправлять браузер на онлайн-страницу.

Еще один хороший вариант — собрать и предоставить контент с помощью встроенного веб-сервера Hugo:

[source, console?prompt=%]
....
% DOC_LANG=es make run
....

По умолчанию веб-сервер прослушивает `localhost`; чтобы изменить это поведение, укажите нужный IP-адрес в значении параметра `BIND`.

[source, console?prompt=%]
....
% DOC_LANG=es make run BIND=192.168.15.10
....

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

Чтобы внести необходимые изменения в перевод, выполните следующие шаги для повторной синхронизации всех компонентов:

- Исправьте строку перевода на https://translate-dev.freebsd.org/[Weblate].
- Заставьте Weblate зафиксировать изменения в разделе `Document/Manage/Commit`.
- Синхронизируйте локальный репозиторий Weblate `freebsd-doc-translate` с помощью команды `git pull origin main`.
- Скопируйте перевод снова в `freebsd-doc`.
- Преобразуйте перевод в .adoc с помощью скрипта `./tools/translate.sh`.
- Hugo пересоберет файл и не будет собирать весь набор, если использовалась команда `make run`, или повторно выполнит `make`.

[IMPORTANT]
====
Повторяйте предыдущие шаги столько раз, сколько необходимо, пока документ не будет готов к публикации.
====

Глава crossref:doc-build[doc-build-rendering,Процесс сборки документации] содержит информацию о преобразовании в HTML и PDF.

[[weblate-submitting-translations]]
== Отправка переводов

Пример отправки обновления для статьи на бразильском португальском Committer's Guide.


[[weblate-git-repo-status]]

[.procedure]
====
.Проверка репозитория

После выполнения шагов из раздела crossref:weblate[weblate-building,Сборка переведенного документа], перейдите в корневой каталог `freebsd-doc` и просмотрите, что будет включено в коммит. Для просмотра списка изменяемых файлов и различий в их содержимом:

[source, console?prompt=%]
....
% git status
% git diff
....

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

Всегда включайте файл PO gettext (`.po`) и переведенный документ в Hugo/Asciidoctor (`.adoc`).
====

[[weblate-git-new-branch]]

[.procedure]
====
.Создать новую ветку и зафиксировать изменения

Создайте ещё одну ветку для разделения работы, что поможет при будущих обновлениях в локальном репозитории.

[source, console?prompt=%]
....
% git checkout -b committers-guide_pt-br
....

Зарегистрировать локальный коммит.

[source, console?prompt=%]
....
% git add .
% git commit
....

Пример сообщений коммитов для переводов:

[.programlisting]
....
pt-br/committers-guide: Sync with en XXXXXXX
....

Где `XXXXXXX` — это ревизия man:git[1], хранящаяся в репозитории Weblate в файле [.filename]#~/freebsd-doc-translate/revision.txt#.

Если это первый перевод статьи:

[.programlisting]
....
Add Korean translation of Leap Seconds article
....

После выполнения коммита будет отображено сообщение, если man:git[1] ранее не был настроен. Следуйте инструкциям и укажите имя и адрес электронной почты, используемые в Weblate. Этот шаг важен для правильного учёта вклада участников.

Затем проверьте весь коммит, просмотрите изменения, а также имя автора и адрес электронной почты.

[source, console?prompt=%]
....
% git show
....
====

[[weblate-git-patch-submit]]

[.procedure]
====
.Сгенерировать патч

Далее создайте файл man:git-format-patch[1].

[source, console?prompt=%]
....
% git format-patch main
0001-pt-br-committers-guide-Sync-with-en-XXXXXXX.patch
....
====

Прикрепите патч [.filename]#0001-pt-br-committers-guide-Sync-with-en-XXXXXXX.patch# к отчёту об ошибке в https://bugs.freebsd.org/bugzilla/[FreeBSD Bugzilla].

Включите следующую информацию в отчёт:

[[weblate-bugzilla-fields]]
.Поля Bugzilla
[cols="1,1", frame="none", options="header"]
|===
| Поле
| Значение

| *продукт (product)*
| Documentation

| *Компонент (Component)*
| Books & Articles

| *Сводка (Summary)*
| Тот же текст, что и в локальном коммите

| *Описание (Description)*
| Укажите, что инструкции в этом руководстве были выполнены, включая вычитку и другие необходимые шаги.
Включите сведения, которые могут помочь с анализом и продвижением отчёта.


| *СС* (Необязательно)
| Если в языке есть координаторы, укажите их адреса электронной почты в поле CC.
|===

Для тех, кто знаком с man:git[1] и GitHub: вместо отправки исправления через https://bugs.freebsd.org/bugzilla/[Bugzilla], можно использовать https://github.com/freebsd/freebsd-doc/pulls[запрос на включение изменений (pull request) в GitHub] (укажите имя и адрес, которые вы используете в Weblate).

https://github.com/freebsd/freebsd-doc/ является вторичным зеркалом. Изменения в дереве `doc` могут вносить только люди, имеющие права на коммит (`doc commit bit`).

Когда переводчики продолжают присылать качественные исправления, другие коммиттеры могут выдвинуть их для получения прав на запись (extref:{committers-guide}[бит коммита для документации, committer.types] для переводов), учётной записи FreeBSD и сопутствующих привилегий.

Список extref:{contributors}[дополнительных участников FreeBSD, contrib-additional] включает некоммиттеров, чьи изменения были закоммичены в дерево `doc`.

Если вы сомневаетесь в каком-либо действии, напишите в {freebsd-translators}.

[[weblate-faq]]
== FAQ (Часто задаваемые Вопросы)

[[weblate-copyrights]]
=== Нужно ли переводить все сообщения об авторских правах?

Каждая языковая команда решает этот вопрос для своего языка; в команде `pt-br` (бразильский португальский) было решено не переводить эти сообщения.
