Новости · Пользователю · Переводчику · Разработчику · Ресурсы

Как организован перевод GNOME


В настоящем документе описаны технические и организационные стороны процесса перевода GNOME на русский язык. Этот документ призван помочь начинающим участникам проекта GNOME.


Подразумевается, что читатель имеет общее представление о свободном программном обеспечении и о проекте GNOME.

Введение

Большое внимание в GNOME уделяется переводу рабочей среды на всевозможные языки. В первую очередь необходимо перевести пользовательский интерфейс приложений (надписи на кнопках, пункты меню и т. д.), а также документацию к ним. Для этих целей в GNOME используется инструментарий gettext.


Принцип работы gettext заключается в следующем. Когда программист пишет исходный код приложения, он особым образом помечает сообщения (надписи и т. п.), которые подлежат переводу. Они автоматически извлекаются из исходного кода и помещаются в отдельный файл — каталог сообщений. Этот файл переводится на различные языки, и переведённые версии файла загружаются в общее SVN-хранилище проекта GNOME. После этого приложение собирается уже с поддержкой всех этих языков, и пользователь может легко переключаться между ними (с помощью механизма, называемого локалью). Для документации этот процесс выглядит примерно так же.http://www.gnu.org/software/trans-coord/manual/gnun/html_node/New-Translation.html#New-Translation


Таким образом, задача переводчика — получить каталог сообщений, перевести его и отправить обратно проекту. Ниже мы подробно рассмотрим все части этого процесса.

Перевод модуля — шаг за шагом

Шаг 1. Выбор модуля

Прежде всего необходимо посетить страницу состояния русского перевода и выбрать одну из представленных там версий GNOME. Обычно нужна последняя версия — та, которая находится в разработке. На момент написания это GNOME 2.20.


Перед вами откроется перечень различных модулей, из которых составлена среда GNOME. В левой колонке находятся модули документации, а в правой — модули библиотек и приложений. Рядом с каждым модулем находится индикатор, который указывает, какая часть этого модуля уже переведена. В индикаторе используются следующие цвета:

Числа в скобках слева от индикатора обозначают количество соответственно переведённых, fuzzy и непереведённых сообщений.


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


Выберите модуль, который хотите (до)перевести, и убедитесь, что на странице текущих задач его нет. Теперь вам нужно скачать собственно файл с сообщениями, который вы и будете переводить — он часто называется po-файлом (оттого, что обычно имеет расширение «po»). Название модуля на странице состояния перевода является ссылкой на этот файл.


Скачав файл, добавьте себя в таблицу на странице текущих задач. Если вы ещё не зарегистрированы в вики Gnome.org.ru, сейчас самое время это сделать. Для редактирования страницы текущих задач выберите ссылку «Правка» в правой колонке.

Шаг 2. Перевод файла

po-файл, который вы скачали, — это обыкновенный текстовый файл в кодировке UTF-8. Его можно править почти любым современным текстовым редактором (даже Блокнотом Windows), а некоторые редакторы (например, gedit) ещё и имеют подсветку синтаксиса для файлов такого формата. С другой стороны, существуют специальные программы, которые способны упростить работу по переводу. Для первого раза мы всё-таки воспользуемся обычным текстовым редактором.


Перед началом перевода лучше сделать копию скачанного файла — она может потом пригодиться.


В начале файла идёт несколько строк заголовков, содержащих различную служебную информацию. Если вы дополняете уже существующий перевод (что наиболее вероятно, если только вы не взяли для перевода какой-то совершенно новый модуль), эти заголовки уже заполнены нужными значениями. Вам придётся только исправить поле Last-Translator, указав в нём своё имя и адрес электронной почты; а также поле PO-Revision-Date, в которое нужно поместить текущее время и дату, когда вы закончите перевод. Подробнее о заголовках см. [FIXME].


Далее идут собственно сообщения, подлежащие переводу. Каждое из них оформляется приблизительно следующим образом:



В этом примере:


Если сообщение не переведено, то поле msgstr будет пусто — вы должны будете заполнить его своим переводом. Если сообщение имеет статус fuzzy, то оно будет отмечено приблизительно следующим образом:



Здесь сразу видно, что перевод устарел: раньше в оригинале говорилось об ошибках HAL, а теперь — о разрядившейся батарее. Поэтому сообщение помечено как fuzzy во второй строке. После исправления сообщения пометку нужно удалить.


Длинные сообщения принято для удобства чтения «разрезать» на более короткие, по 80 символов, вот так:



Программы для редактирования po-файлов способны автоматически разрезать сообщения. Если же вы работаете в обычном текстовом редакторе, вы можете воспользоваться для этого специальным инструментом (см. [FIXME]).


В самом конце файла вы можете обнаружить несколько сообщений, которые «закомментированы»: в начале строк стоят символы комментариев «#». Это сообщения, оставшиеся от старых версий модуля и более не используемые. Их можно удалить. А можно и не удалять.


Итак, ваша задача теперь — перевести все непереведённые сообщения, исправить все fuzzy и сохранить файл. Затем можно будет перейти к третьему этапу или четвёртому этапу.

Шаг 3. Проверка перевода

После окончания перевода можно непосредственно оценить его качество, применив к приложению, для которого он предназначен.
Обычно скомпилированные po-файлы (mo-файлы) находятся в каталоге /usr/local/share/locale (mo-файлы с русским переводом в /usr/share/locale/ru/LC_MESSAGES/). Чтобы непосредственно увидеть результат своего труда делаем следующее:

Шаг 3.1 Проверка перевода файла документации

Файл документации обычно представлен в формате xml, для просмотра с помощью программы yelp (Программа просмотра документации для среды GNOME). Непереведённые файлы документации представляют собой один или несколько файлов xml и набор иллюстраций. Шаблоны файлов перевода документации обычно находятся в /usr/share/gnome/help/<имя_программы>/C. Переведённая документация будет храниться в /usr/share/gnome/help/<имя_программы>/ru.

Для преобразования po-файлов документации в xml и обратно существует утилита xml2po.

Непереведённые иллюстрации обычно хранятся в /usr/share/gnome/help/<имя_программы>/C/figures. На некоторых из них изображены окна программ, содержащие нелокализованные надписи. В этом случае в ru/figures следует положить снимок окна локализованной программы.

Шаг 4. Отправка перевода

После того, как собственно перевод закончен, нужно поместить его в SVN-хранилище GNOME, где хранятся все исходные файлы всех частей среды. Права на запись файлов в хранилище есть только у определённых лиц. Обыкновенный способ достучаться до них — отправить переведённый po-файл в список рассылки gnome-cyr@gnome.org. В этом списке рассылки происходит обсуждение перевода GNOME на русский язык, а также рассмотрение конкретных переводов. Ваш перевод будет просмотрен одним из разработчиков, имеющих доступ на запись в SVN, и загружен.


Прежде, чем отправлять перевод в список рассылки, вам нужно сделать две вещи. Во-первых, необходимо подписаться на него — это значительно упростит всем жизнь. Во-вторых, упакуйте патч с помощью gzip, например, так:



Получившийся файл с расширением gz нужно отправить в список рассылки в виде вложения.


Другой (менее рекомендуемый) способ помещения перевода в хранилище — отправить его напрямую одному из переводчиков, имеющих доступ на запись. Их иногда можно встретить, например, на IRC-канале #gnome-ru сети GIMPnet.


Вот и всё! Перевод закончен. Не забудьте удалить себя из таблицы текущих задач перевода.

Тонкости перевода po-файлов

Множественное число

Вы, наверное, встречали в некоторых программах надписи наподобие «Выделено объектов: 4» или «Файлов в папке: 1». Согласитесь, звучит это несколько неестественно. К счастью, инструментарий gettext поддерживает функции, которые позволяют в таких случаях строить удобочитаемые переводы: «Выделено 4 объекта», «В папке 1 файл».


Начнём с простого примера. Пусть мы имеем такое сообщение:



Специальное слово «plural» говорит о том, что в сообщении может использоваться множественная форма (если модераторов больше одного). Тогда наш перевод будет выглядеть так:



Здесь msgstr[0] соответствует форме единственного числа, а msgstr[1] — форме множественного числа.


В этом примере использовалось простое разделение: один модератор / много модераторов. Но в более сложных случаях, когда в самом сообщении фигурирует точное количество, возникает ещё одна тонкость: в русском языке две множественные формы (две коробки, но восемь коробок). Посмотрите на следующий пример:



Видно, что в правильном переводе будут фигурировать две формы: «раздела» и «разделов». Вот как нужно оформить перевод в таком случае:



Выбор множественной формы осуществляется согласно значению переменной i. Например, если i=2 (то есть по контексту говорится о двух разделах), то будет использована первая множественная форма — msgstr[1].


Для правильной работы с множественными формами нужно поместить следующие строки в описательную часть po-файла:



Эта формула определяет, какой из вариантов msgstr[] будет выбран в зависимости от значения. Она верна для русского языка, но может быть неверна для других.


После добавления этой формулы описательная часть po-файла будет выглядеть примерно так:


Урезание строк

Специализированные редакторы

Конечно, уровень удобства, предоставляемый обычным текстовым редактором, не каждому переводчику покажется достаточным. Существуют специализированные редакторы po-файлов, которые могут избавить от многих рутинных действий и предоставить рабочую среду, в которой можно работать быстро и эффективно.


Пожалуй, наиболее подходящим для новичков редактором можно считать poEdit. Чем же он хорош и чем его использование отличается от использования, к примеру, gedit?


Обычному текстовому редактору (несмотря на то, что некоторые из них поддерживают подсветку синтаксиса po-файлов) не хватает быстроты навигации по различным типам сообщений. Конечно, можно, например, ввести в строку поиска «fuzzy» для поиска всех неактуальных переводов, но всё же подобные архаичные методы работы для многих переводчиков могут оказаться неудобными.


Вот некоторые возможности, которые предоставляет poEdit:

poEdit — свободное программное обеспечение, распространяемое на условиях лицензии MIT.


Из других специализированных редакторов можно упомянуть KBabel (для среды KDE) и GTranslator (для GNOME).


Естественно, существует также режим PO для GNU Emacs. На данный момент в нём отсутствует инструмент для разрезания сообщений, для этого предлагается пользоваться функцией po-wrap, описанной в руководстве по GNUN.

Цикл разработки и перевода GNOME

Перевод приложений, не входящих в состав GNOME (черновой вариант)

Многие из вас наверное знают, что существует большое количество программ, разработанных для среды GNOME, но в тоже время не входящих непосредственно в этот проект. Как же обстоит процесс перевода подобных приложений?


Для таких приложений первые три шага сохраняют, разница только в том, откуда брать приложение и куда отправлять перевод.


После завершения процесса перевода скорее всего вам потребуется отправить перевод разработчикам по электронной почте. Хотя это и не всегда так. Например некоторые разработчики просят, чтобы перевод происходил посредством специализированного инструмента launchpad. В любом случае, перед началом работы над переводом просмотрите документацию, поставляемую с программой.


Важные рекомендации
Несмотря на то, что переводимая программа и не входит в проект GNOME, переводчикам настоятельно советуется следовать следующим рекомендациям. Ведь для большинства пользователей нет разницы работают они с программой, официально являющейся частью проекта GNOME, или с программой, написанной сторонними разработчиками для GNOME. Для них гораздо важнее стилистическая стройность переводов пользовательского интерфейса и документации, чтобы к примеру «панель инструментов» везде называлась именно «панелью инструментов», а не «инструментальной панелью» или того хуже — «тулбаром».


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]