Previous: , Up: Содействие   [Contents][Index]


22.19 Перевод Guix на другие языки

Написание кода и пакетов - не единственный способ внести значимый вклад в 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.

поколения

После создания учетной записи вы сможете выбрать компонент из the guix project и выбрать язык. Если вашего языка нет в списке, пройдите вниз и нажмите кнопку “Начать новый перевод”. Выберите из списка язык, на который вы хотите перевести, чтобы начать новый перевод.

Как и многие другие бесплатные программные пакеты, Guix использует GNU Gettext для своих переводов, с помощью которых переводимые строки извлекаются из исходного кода в так называемые PO-файлы.

Несмотря на то, что файлы PO являются текстовыми файлами, изменения следует вносить не с помощью текстового редактора, а с помощью программного обеспечения для редактирования PO. Weblate интегрирует функции редактирования PO. В качестве альтернативы переводчики могут использовать любой из различных бесплатных программных инструментов для заполнения переводов, одним из примеров которых является Poedit и (после входа в систему) загрузить измененный файл. Существует также специальный PO режим редактирования для пользователей GNU Emacs. Со временем переводчики узнают, какое программное обеспечение им нравится и какие функции им нужны.

На Weblate вы найдете различные ссылки на редактор, который покажет различные подмножества (или все) строк (-и). Посмотрите вокруг и на documentation, чтобы ознакомиться с платформой.

Компоненты перевода

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

guix

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).

documentation-manual and documentation-cookbook

Первый шаг к успешному переводу руководства—найти и перевести следующие строки первыми:

  • 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, мы уведомим вас (через веб-сайт и/или по электронной почте), чтобы решить проблему.

Вне Weblate

В настоящее время некоторые части Guix не могут быть переведены на Weblate—требуется помощь!

Conditions for Inclusion

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.

Translation Infrastructure

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.


Previous: Написание документации, Up: Содействие   [Contents][Index]