Журнал LinuxFormat - перейти на главную

LXF73:Локализация ПО

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: == Локализация ПО == ''«Чем я могу вам помочь?» Применительно к миру Open Source, большая часть жителей которо...)
 
м (викификация)
 
Строка 1: Строка 1:
 
== Локализация ПО ==
 
== Локализация ПО ==
''«Чем я могу вам помочь?» Применительно к миру Open Source, большая часть жителей которого находится за пределами России, ответ прост – переводом (вы подумали про матпомощь? Зря!). '''Владимир Давыдов''' расскажет, как это нужно делать...''
+
''«Чем я могу вам помочь?» Применительно к миру Open Source, большая часть жителей которого находится за пределами России, ответ прост — переводом (вы подумали про матпомощь? Зря!). '''Владимир Давыдов''' расскажет, как это нужно делать…''
  
 
Что делает продукт удобным для пользователя? Не для опытного администратора или программиста, а для обычного человека? Удобный и понятный интерфейс и, что очень важно,
 
Что делает продукт удобным для пользователя? Не для опытного администратора или программиста, а для обычного человека? Удобный и понятный интерфейс и, что очень важно,
Строка 27: Строка 27:
 
в «i18n».
 
в «i18n».
 
|Ширина=150px}}
 
|Ширина=150px}}
Локализация, l10n, localization – процесс адаптации продукта к носителям какого-либо языка и культуры. Сюда включается перевод пользовательского интерфейса и документации, а также внесение некоторых
+
Локализация, l10n, localization — процесс адаптации продукта к носителям какого-либо языка и культуры. Сюда включается перевод пользовательского интерфейса и документации, а также внесение некоторых
 
характерных особенностей, таких, как формат даты, обозначения валюты,
 
характерных особенностей, таких, как формат даты, обозначения валюты,
 
меры измерений и тому подобное.
 
меры измерений и тому подобное.
Строка 33: Строка 33:
 
=== кто это делает? ===
 
=== кто это делает? ===
 
Локализацией в Linux занимаются различные люди. Здесь есть энтузиасты-одиночки, а есть и крупные компании, зарабатывающие распространением дистрибутивов и технической поддержкой. Поучаствовать
 
Локализацией в Linux занимаются различные люди. Здесь есть энтузиасты-одиночки, а есть и крупные компании, зарабатывающие распространением дистрибутивов и технической поддержкой. Поучаствовать
в процессе локализации любимого продукта можете и вы – было бы
+
в процессе локализации любимого продукта можете и вы — было бы
 
желание. а как это сделать, я постараюсь рассказать ниже.
 
желание. а как это сделать, я постараюсь рассказать ниже.
  
 
=== как происходит локализация? ===
 
=== как происходит локализация? ===
Тут все зависит от разработчика. если он не позаботился о возможности локализации программы сам, то единственная возможность – правка исходных текстов, сборка и тестирование того, что получилось. Но,
+
Тут все зависит от разработчика. если он не позаботился о возможности локализации программы сам, то единственная возможность — правка исходных текстов, сборка и тестирование того, что получилось. Но,
 
к счастью, большинство разработчиков предусматривают эту возможность и пользуются разными способами сделать приложение легко
 
к счастью, большинство разработчиков предусматривают эту возможность и пользуются разными способами сделать приложение легко
 
локализуемым. Наибольшее распространение приобрел пакет gettext,
 
локализуемым. Наибольшее распространение приобрел пакет gettext,
Строка 57: Строка 57:
 
}</source>
 
}</source>
 
Программисту нужно позаботиться и о тех местах программы, где
 
Программисту нужно позаботиться и о тех местах программы, где
возможен вывод не только в единственном числе – это связано с разным количеством множественных форм в разных языках. Например, в
+
возможен вывод не только в единственном числе — это связано с разным количеством множественных форм в разных языках. Например, в
английском языке их две: вы можете написать “file” для одного-единственного файла и “files” для нескольких, а в русском – три, и вам надо
+
английском языке их две: вы можете написать «file» для одного-единственного файла и «files» для нескольких, а в русском — три, и вам надо
 
будет писать «файл» для числительных, заканчивающихся на 1, «файла» для заканчивающихся на 2,3,4, и «файлов» для всех остальных.
 
будет писать «файл» для числительных, заканчивающихся на 1, «файла» для заканчивающихся на 2,3,4, и «файлов» для всех остальных.
  
 
Здесь на помощь приходит уже не gettext, а ngettext. Эта функция сначала проверяет числительное, и в зависимости от его значения и особенностей выбранного языка, выполняет подстановку.
 
Здесь на помощь приходит уже не gettext, а ngettext. Эта функция сначала проверяет числительное, и в зависимости от его значения и особенностей выбранного языка, выполняет подстановку.
  
Вторым шагом является создание .pot файла “Portable Object
+
Вторым шагом является создание .pot файла «Portable Object
Template” (переносимый объектный шаблон) из исходных текстов программы. Этот файл представляет собой четко структурированный документ в кодировке utf-8 с сообщениями программы. копии POT-файла
+
Template» (переносимый объектный шаблон) из исходных текстов программы. Этот файл представляет собой четко структурированный документ в кодировке utf-8 с сообщениями программы. копии POT-файла
 
рассылаются переводчикам, а они переименовывают его в файл вида
 
рассылаются переводчикам, а они переименовывают его в файл вида
 
код_языка.po (Portable Object).
 
код_языка.po (Portable Object).
Строка 88: Строка 88:
 
|Ширина=200px}}
 
|Ширина=200px}}
 
Желание, работающий компьютер, базовое знание английского языка
 
Желание, работающий компьютер, базовое знание английского языка
и наличие свободного времени – вот в принципе и все, что вам потребуется. для более комфортной работы можете припасти специальные
+
и наличие свободного времени — вот в принципе и все, что вам потребуется. для более комфортной работы можете припасти специальные
 
программы для перевода и словари. Многие добавят, что еще необходимо иметь английскую версию программы, чтобы всегда можно было
 
программы для перевода и словари. Многие добавят, что еще необходимо иметь английскую версию программы, чтобы всегда можно было
 
понять, о чем идет речь в том или ином сообщении.
 
понять, о чем идет речь в том или ином сообщении.
Строка 96: Строка 96:
 
историю перевода, помечать непереведенные сообщения или черновые
 
историю перевода, помечать непереведенные сообщения или черновые
 
варианты, умеют выполнить частичный автоматический перевод (при
 
варианты, умеют выполнить частичный автоматический перевод (при
помощи так называемой памяти перевода – см. врезку), проверять
+
помощи так называемой памяти перевода — см. врезку), проверять
 
орфографию и многое другое. Существуют и онлайновые сервисы для
 
орфографию и многое другое. Существуют и онлайновые сервисы для
перевода. Например, Rosetta – проект Ubuntu.
+
перевода. Например, Rosetta — проект Ubuntu.
  
При работе над переводом крайне желательно иметь под рукой англо-русский словарь. бумажный или электронный – не важно, но поиск в
+
При работе над переводом крайне желательно иметь под рукой англо-русский словарь. бумажный или электронный — не важно, но поиск в
 
электронном зачастую осуществляется быстрее. В мире Linux популярны
 
электронном зачастую осуществляется быстрее. В мире Linux популярны
 
словарь Мюллера mova и StartDict, также достоин внимания набирающий
 
словарь Мюллера mova и StartDict, также достоин внимания набирающий
Строка 112: Строка 112:
 
каталогов Catalog Manager и словарь.
 
каталогов Catalog Manager и словарь.
  
редактор KBabel – чрезвычайно удобная программа. В ней есть функции поиска (с поддержкой регулярных выражений), автоматического
+
редактор KBabel — чрезвычайно удобная программа. В ней есть функции поиска (с поддержкой регулярных выражений), автоматического
 
чернового перевода, отображения различий в разных версиях перевода,
 
чернового перевода, отображения различий в разных версиях перевода,
 
проверки орфографии и многое другое.
 
проверки орфографии и многое другое.
Строка 120: Строка 120:
 
что это черновой перевод или непереведенное сообщение. KBabel
 
что это черновой перевод или непереведенное сообщение. KBabel
 
позволяет легко переходить от одного непереведенного сообщения к
 
позволяет легко переходить от одного непереведенного сообщения к
другому, минуя уже переведенные – кнопки для такой навигации
+
другому, минуя уже переведенные — кнопки для такой навигации
 
вынесены на панель. Это относится и к черновому переводу, что
 
вынесены на панель. Это относится и к черновому переводу, что
 
очень удобно.
 
очень удобно.
Строка 143: Строка 143:
 
Выбор очень широк. Не забывайте, что требуется не только перевод с
 
Выбор очень широк. Не забывайте, что требуется не только перевод с
 
нуля, но и обновление уже существующих переводов.
 
нуля, но и обновление уже существующих переводов.
Посоветовать что-то конкретное не могу – выбирайте сами.
+
Посоветовать что-то конкретное не могу — выбирайте сами.
 
Может быть, есть область, которая вас интересует больше других
 
Может быть, есть область, которая вас интересует больше других
 
и в которой вы лучше разбираетесь. Чем профессиональней будет
 
и в которой вы лучше разбираетесь. Чем профессиональней будет
Строка 160: Строка 160:
 
|Ширина=150px}}
 
|Ширина=150px}}
 
Перечислю вкратце места, где можно поискать программы, требующие локализации:
 
Перечислю вкратце места, где можно поискать программы, требующие локализации:
* http://sourceforge.net/people загляните в раздел Translators. Наверняка найдете себе что-нибудь по душе.
+
* http://sourceforge.net/people - загляните в раздел Translators. Наверняка найдете себе что-нибудь по душе.
* http://nongnu.org несколько вялый сайт, но их проектам тоже нужны переводчики.
+
* http://nongnu.org - несколько вялый сайт, но их проектам тоже нужны переводчики.
* http://www.kde.ru страница русской команды локализации KDE. Очень заинтересованы в притоке новых сил. есть хороший список рассылки.
+
* http://www.kde.ru - страница русской команды локализации KDE. Очень заинтересованы в притоке новых сил. есть хороший список рассылки.
* http://gnome.org.ru страница русской команды локализации Gnome.
+
* http://gnome.org.ru - страница русской команды локализации Gnome.
  
 
=== Пара слов напоследок ===
 
=== Пара слов напоследок ===

Текущая версия на 11:31, 7 декабря 2008

Содержание

[править] Локализация ПО

«Чем я могу вам помочь?» Применительно к миру Open Source, большая часть жителей которого находится за пределами России, ответ прост — переводом (вы подумали про матпомощь? Зря!). Владимир Давыдов расскажет, как это нужно делать…

Что делает продукт удобным для пользователя? Не для опытного администратора или программиста, а для обычного человека? Удобный и понятный интерфейс и, что очень важно, наличие локализованной версии. Иностранный язык знают далеко не все, да и те, кто знают, зачастую предпочитают работать в родном языковом окружении.

Можно ли сделать так, чтобы бухгалтер Петр Захарович из Нижних Полянок не побоялся бы считать в электронных таблицах Gnumeric и раскладывать пасьянс Солитер в Linux, а учитель информатики Борис Федорович из Крякино мог бы учить детей программировать на Free Pascal и работать в OpenOffice.org? безусловно! Только все эти приложения, да и сама среда должны заговорить с ними по-русски. Вот тут-то на помощь и приходит локализация.

Cогласитесь, работать с такой программой приятней, чем с ее английской версией.

[править] что такое локализация?

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

[править] кто это делает?

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

[править] как происходит локализация?

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

[править] что же такое gettext?

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

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

int main() {
/* НеВерНО – не поддерживает локализацию */
printf("Hello, World!");
/* ПраВИЛьНО – можно менять язык сообщений «на лету» */
printf(gettext("Hello, World"));
return 0;
}

Программисту нужно позаботиться и о тех местах программы, где возможен вывод не только в единственном числе — это связано с разным количеством множественных форм в разных языках. Например, в английском языке их две: вы можете написать «file» для одного-единственного файла и «files» для нескольких, а в русском — три, и вам надо будет писать «файл» для числительных, заканчивающихся на 1, «файла» для заканчивающихся на 2,3,4, и «файлов» для всех остальных.

Здесь на помощь приходит уже не gettext, а ngettext. Эта функция сначала проверяет числительное, и в зависимости от его значения и особенностей выбранного языка, выполняет подстановку.

Вторым шагом является создание .pot файла «Portable Object Template» (переносимый объектный шаблон) из исходных текстов программы. Этот файл представляет собой четко структурированный документ в кодировке utf-8 с сообщениями программы. копии POT-файла рассылаются переводчикам, а они переименовывают его в файл вида код_языка.po (Portable Object).

Третьим шагом является сам перевод.

Четвертым шагом является преобразование результата труда переводчика в файл машинно-ориентированного формата (GNU MO) и включение его в состав продукта.

Пятым и последним шагом является сборка программы из исходных текстов с поддержкой gettext.

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

[править] что нужно для локализации?

Желание, работающий компьютер, базовое знание английского языка и наличие свободного времени — вот в принципе и все, что вам потребуется. для более комфортной работы можете припасти специальные программы для перевода и словари. Многие добавят, что еще необходимо иметь английскую версию программы, чтобы всегда можно было понять, о чем идет речь в том или ином сообщении.

Простого текстового редактора, позволяющего работать с кодировкой utf-8, вполне достаточно, но специализированные программы вроде KBabel или gtranslate подойдут гораздо лучше. Они позволяют вести историю перевода, помечать непереведенные сообщения или черновые варианты, умеют выполнить частичный автоматический перевод (при помощи так называемой памяти перевода — см. врезку), проверять орфографию и многое другое. Существуют и онлайновые сервисы для перевода. Например, Rosetta — проект Ubuntu.

При работе над переводом крайне желательно иметь под рукой англо-русский словарь. бумажный или электронный — не важно, но поиск в электронном зачастую осуществляется быстрее. В мире Linux популярны словарь Мюллера mova и StartDict, также достоин внимания набирающий силу специализированный компьютерный словарь EngCom.

для проверки орфографии можно пользоваться Ispell или Aspell.

[править] немного о специализированных программах

давайте рассмотрим превосходный пакет KBabel. входящий в состав kdesdk. В него входят три программы: сам редактор KBabel, менеджер каталогов Catalog Manager и словарь.

редактор KBabel — чрезвычайно удобная программа. В ней есть функции поиска (с поддержкой регулярных выражений), автоматического чернового перевода, отображения различий в разных версиях перевода, проверки орфографии и многое другое.

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

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

Поле в нижнем правом углу имеет несколько вкладок: «Поиск», «Контекст перевода», «Символы», «Теги» и «Исходники». На вкладке «Поиск» отображается результат последнего поиска, а вкладка «Контекст» показывает четыре предыдущих и четыре последующих сообщения. Это очень полезно, так как зачастую эти сообщения связаны между собой по смыслу.

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

[править] что нужно переводить?

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


Перечислю вкратце места, где можно поискать программы, требующие локализации:

  • http://sourceforge.net/people - загляните в раздел Translators. Наверняка найдете себе что-нибудь по душе.
  • http://nongnu.org - несколько вялый сайт, но их проектам тоже нужны переводчики.
  • http://www.kde.ru - страница русской команды локализации KDE. Очень заинтересованы в притоке новых сил. есть хороший список рассылки.
  • http://gnome.org.ru - страница русской команды локализации Gnome.

[править] Пара слов напоследок

Старайтесь переводить кратко, чтобы интерфейс не «разбухал». Любите русский язык и старайтесь тщательно следовать его нормам. По возможности, используйте букву «Ё», помните, что русифицированную версию могут использовать изучающие русский язык.

Присоединяйтесь!

Персональные инструменты
купить
подписаться
Яндекс.Метрика