Previous: Writing Documentation, Up: Содействие [Contents][Index]
Написание кода и пакетов - не единственный способ внести значимый вклад в Guix. Перевод на язык, на котором вы говорите—еще один пример вашего ценного вклада. Этот раздел предназначен для описания процесса перевода. Здесь представлены советы о том, как вы можете принять участие, что можно перевести, каких ошибок следует избегать и что мы можем сделать, чтобы вам помочь!
Guix - это большой проект, состоящий из нескольких компонентов, которые можно перевести. Мы координируем работу по переводу на Weblate instance, размещенном нашими друзьями в Fedora. Для отправки переводов вам потребуется учетная запись.
Некоторое программное обеспечение, упакованное в Guix, также содержит
переводы. Мы не хостим для них платформу для перевода. Если вы хотите
перевести пакет, предоставленный Guix, вам следует связаться с их
разработчиками или найти информацию на их веб-сайтах. Например, вы можете
найти домашнюю страницу пакета hello
, набрав guix show
hello
. В строке “домашняя страница” вы увидите
https://www.gnu.org/software/hello/ в качестве домашней страницы.
Многие пакеты GNU и не-GNU можно перевести на Translation Project. Некоторые проекты с несколькими компонентами имеют собственную платформу. Например, GNOME имеет собственную платформу Damned Lies.
Guix состоит из пяти компонентов, размещенных на Weblate.
guix
содержит все строки из программного обеспечения Guix (
установщик системы, менеджер пакетов и т.д.), за исключением пакетов.
packages
содержит синопсис (описание пакета из одного предложения
) и (более подробное) описание пакетов в Guix.
website
содержит официальный сайт Guix, за исключением
сообщения в блогах и мультимедийный контент.
documentation-manual
соответствует этому руководству.
documentation-cookbook
- компонент для поваренной книги.
После создания учетной записи вы сможете выбрать компонент из the guix project и выбрать язык. Если вашего языка нет в списке, пройдите вниз и нажмите кнопку “Начать новый перевод”. Выберите из списка язык, на который вы хотите перевести, чтобы начать новый перевод.
Как и многие другие бесплатные программные пакеты, Guix использует GNU Gettext для своих переводов, с помощью которых переводимые строки извлекаются из исходного кода в так называемые PO-файлы.
Несмотря на то, что файлы PO являются текстовыми файлами, изменения следует вносить не с помощью текстового редактора, а с помощью программного обеспечения для редактирования PO. Weblate интегрирует функции редактирования PO. В качестве альтернативы переводчики могут использовать любой из различных бесплатных программных инструментов для заполнения переводов, одним из примеров которых является Poedit и (после входа в систему) загрузить измененный файл. Существует также специальный PO режим редактирования для пользователей GNU Emacs. Со временем переводчики узнают, какое программное обеспечение им нравится и какие функции им нужны.
На Weblate вы найдете различные ссылки на редактор, который покажет различные подмножества (или все) строк (-и). Посмотрите вокруг и на documentation, чтобы ознакомиться с платформой.
В этом разделе мы даем более подробные инструкции по процессу перевода, а также подробности о том, что вам следует или не следует делать. В случае сомнений свяжитесь с нами, мы будем рады помочь!
Guix is written in the Guile programming language, and some strings contain
special formatting that is interpreted by Guile. These special formatting
should be highlighted by Weblate. They start with ~
followed by one
or more characters.
When printing the string, Guile replaces the special formatting symbols with
actual values. For instance, the string ‘ambiguous package
specification `~a'’ would be substituted to contain said package
specification instead of ~a
. To properly translate this string, you
must keep the formatting code in your translation, although you can place it
where it makes sense in your language. For instance, the French translation
says ‘spécification du paquet « ~a » ambiguë’ because the adjective
needs to be placed in the end of the sentence.
If there are multiple formatting symbols, make sure to respect the order. Guile does not know in which order you intended the string to be read, so it will substitute the symbols in the same order as the English sentence.
As an example, you cannot translate ‘package '~a' has been superseded by '~a'’ by ‘'~a' superseeds package '~a'’, because the meaning would be reversed. If foo is superseded by bar, the translation would read ‘'foo' superseeds package 'bar'’. To work around this problem, it is possible to use more advanced formatting to select a given piece of data, instead of following the default English order. See Formatted Output in GNU Guile Reference Manual, for more information on formatting in Guile.
Описания пакетов иногда содержат разметку Texinfo (see Краткие обзоры и описания). Разметка Texinfo выглядит как ‘@code{rm -rf}’, ‘@emph{important}’ и т.д. При переводе оставляйте разметку как есть.
The characters after “@” form the name of the markup, and the text
between “{” and “}” is its content. In general, you should not
translate the content of markup like @code
, as it contains literal
code that do not change with language. You can translate the content of
formatting markup such as @emph
, @i
, @itemize
,
@item
. However, do not translate the name of the markup, or it will
not be recognized. Do not translate the word after @end
, it is the
name of the markup that is closed at this position (e.g. @itemize
... @end itemize
).
Первый шаг к успешному переводу руководства—найти и перевести следующие строки первыми:
version.texi
: переведите эту строку как version-xx.texi
,
где xx
—код вашего языка (тот, который показан в URL-адресе на
weblate).
contributing.texi
: переведите эту строку как
contributing.xx.texi
, где xx
- код того же языка.
Top
: Не переводите эту строку, это важно для Texinfo.
Если вы переведете его, документ будет пустым (missing a Top node). Найдите
его и зарегистрируйте Top
в качестве его перевода.
Перевод этих строк гарантирует, что мы сможем включить ваш перевод в
репозиторий guix, не нарушая процесс make или механизм guix pull
.
The manual and the cookbook both use Texinfo. As for packages
,
please keep Texinfo markup as is. There are more possible markup types in
the manual than in the package descriptions. In general, do not translate
the content of @code
, @file
, @var
, @value
,
etc. You should translate the content of formatting markup such as
@emph
, @i
, etc.
The manual contains sections that can be referred to by name by
@ref
, @xref
and @pxref
. We have a mechanism in
place so you do not have to translate their content. If you keep the
English title, we will automatically replace it with your translation of
that title. This ensures that Texinfo will always be able to find the
node. If you decide to change the translation of the title, the references
will automatically be updated and you will not have to update them all
yourself.
При переводе ссылок из cookbook в мануал нужно заменить название мануала и
название раздела. Например, чтобы перевести @pxref{Defining
Packages,,, guix, GNU Guix Reference Manual}
, вы должны
заменитьDefining Packages
заголовком этого раздела в переведенном
руководстве только если это название переведено. Если название еще
не переведено на ваш язык, не переводите его здесь, иначе ссылка будет
неработающей. Замените guix
на guix.xx
, где xx
- код
вашего языка. GNU Guix Reference Manual
—это текст ссылки. Вы
можете перевести его как хотите.
Страницы веб-сайта написаны с использованием SXML, версии HTML (основного языка Интернета) с s-выражениями. У нас есть процесс извлечения переводимых строк из источника и замены сложных s-выражений на более знакомую разметку XML, где каждая разметка пронумерована. Переводчики могут произвольно изменять порядок, как в следующем примере.
#. TRANSLATORS: Defining Packages is a section name #. in the English (en) manual. #: apps/base/templates/about.scm:64 msgid "Packages are <1>defined<1.1>en</1.1><1.2>Defining-Packages.html</1.2></1> as native <2>Guile</2> modules." msgstr "Pakete werden als reine <2>Guile</2>-Module <1>definiert<1.1>de</1.1><1.2>Pakete-definieren.html</1.2></1>."
Обратите внимание, что вам нужно включить такие же разметки. Вы не можете ничего пропустить.
Если вы допустили ошибку, компонент может не работать должным образом с вашим языком или даже привести к сбою guix pull. Чтобы предотвратить это, у нас есть процесс проверки содержимого файлов перед отправкой в наш репозиторий. Если, мы не сможем обновить перевод для вашего языка в Guix, мы уведомим вас (через веб-сайт и/или по электронной почте), чтобы решить проблему.
В настоящее время некоторые части Guix не могут быть переведены на Weblate—требуется помощь!
guix pull
новости можно перевести в news.scm, но не
available from Weblate. If you want to provide a translation, you can
prepare a patch as described above, or simply send us your translation with
the name of the news entry you translated and your language. See Написание новостей канала, for more information about channel news.
There are no conditions for adding new translations of the guix
and
guix-packages
components, other than they need at least one
translated string. New languages will be added to Guix as soon as
possible. The files may be removed if they fall out of sync and have no
more translated strings.
Given that the web site is dedicated to new users, we want its translation to be as complete as possible before we include it in the language menu. For a new language to be included, it needs to reach at least 80% completion. When a language is included, it may be removed in the future if it stays out of sync and falls below 60% completion.
The manual and cookbook are automatically added in the default compilation target. Every time we synchronize translations, developers need to recompile all the translated manuals and cookbooks. This is useless for what is essentially the English manual or cookbook. Therefore, we will only include a new language when it reaches 10% completion in the component. When a language is included, it may be removed in the future if it stays out of sync and falls below 5% completion.
Weblate is backed by a git repository from which it discovers new strings to translate and pushes new and updated translations. Normally, it would be enough to give it commit access to our repositories. However, we decided to use a separate repository for two reasons. First, we would have to give Weblate commit access and authorize its signing key, but we do not trust it in the same way we trust guix developers, especially since we do not manage the instance ourselves. Second, if translators mess something up, it can break the generation of the website and/or guix pull for all our users, independently of their language.
For these reasons, we use a dedicated repository to host translations, and we synchronize it with our guix and artworks repositories after checking no issue was introduced in the translation.
Developers can download the latest PO files from weblate in the Guix
repository by running the make download-po
command. It will
automatically download the latest files from weblate, reformat them to a
canonical form, and check they do not contain issues. The manual needs to
be built again to check for additional issues that might crash Texinfo.
Before pushing new translation files, developers should add them to the make machinery so the translations are actually available. The process differs for the various components.
guix
and packages
components must
be registered by adding the new language to po/guix/LINGUAS or
po/packages/LINGUAS.
documentation-manual
component must be
registered by adding the file name to DOC_PO_FILES
in
po/doc/local.mk, the generated %D%/guix.xx.texi manual to
info_TEXINFOS
in doc/local.mk and the generated
%D%/guix.xx.texi and %D%/contributing.xx.texi to
TRANSLATED_INFO
also in doc/local.mk.
documentation-cookbook
component must be
registered by adding the file name to DOC_COOKBOOK_PO_FILES
in
po/doc/local.mk, the generated %D%/guix-cookbook.xx.texi
manual to info_TEXINFOS
in doc/local.mk and the generated
%D%/guix-cookbook.xx.texi to TRANSLATED_INFO
also in
doc/local.mk.
website
component must be added to the
guix-artwork
repository, in website/po/.
website/po/LINGUAS and website/po/ietf-tags.scm must be
updated accordingly (see website/i18n-howto.txt for more information
on the process).
Previous: Writing Documentation, Up: Содействие [Contents][Index]