Gettext
Материал из Википедии — свободной энциклопедии
- Правильный заголовок этой статьи — gettext. Первая буква стала прописной из-за технических ограничений.
GNU gettext — библиотека проекта GNU для интернационализации. Основным отличием от других подобных инструментов является использование английских строк вместо специальных идентификаторов в тексте программы и поддержка множественного числа. Последняя версия на данный момент — 0.16.
Содержание |
[править] Использование
Кроме стандартного Си, поддерживаются также: C++, Objective-C, сценарии sh, сценарии bash, Python, Перл, PHP, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Паскаль, wxWidgets (с использованием класса wxLocale), YCP (язык YaST2), Tcl, Pike и R. Использование в большинстве языков схоже с использованием в Си.
Библиотека широко применяется в свободном ПО.
[править] Интернационализация
[править] Для программиста
Строчки, которые необходимо перевести, размечаются в исходном коде вызовом функции gettext
, ngettext
или подобной. Обычно для уменьшения размера исходников и улучшения читаемости, для gettext
объявляют и используют короткий синоним _
(символ подчёркивания). Таким образом, вызов
printf ("Hello! My name is %s.\n", name);
преобразуется в
printf (_("Hello! My name is %s.\n"), name);
Размеченные строки собираются в каталог с помощью утилиты xgettext
. Например, для вышеприведённой строки в каталоге появится запись вроде этой:
#: src/name.c:36 msgid "Hello! My name is %s.\n" msgstr ""
[править] Для переводчика
Переводчик создаёт на основе каталога .po
-файл, содержащий перевод на конкретный язык. (Для этого можно использовать утилиту msginit
.) В нём необходимо перевести все строки, например, для русского перевода:
#: src/name.c:36 msgid "Hello! My name is %s.\n" msgstr "Привет! Меня зовут %s.\n"
Для редактирования .po
-файлов существует множество инструментов, но в крайнем случае можно использовать простой текстовый редактор.
[править] Для пользователя
Обычно пользователю в Unix-подобных системах не нужно предпринимать дополнительных шагов для выбора конкретного перевода. Перевод определяется системной переменной LANG
, которая обычно уже установлена в требуемое значение.
[править] Поддержка существующих переводов
Обновление переводов с использованием новых и изменившихся строк, появившихся в исходном коде, осуществляется утилитой msgmerge
. При этом, естественно, сохраняются все уже переведённые строки.
[править] См. также
[править] Ссылки
В Википедии есть портал «Свободное ПО» |