--- 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` (бразильский португальский) было решено не переводить эти сообщения.