Интернет магазин китайских планшетных компьютеров



Компьютеры - Gettext - Использование

22 апреля 2011


Оглавление:
1. Gettext
2. Использование



Для программиста

Простые строки

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

printf, name);

Обычно для уменьшения размера исходного кода и улучшения читаемости объявляют и используют короткий синоним функции gettext_. Таким образом, вызов преобразуется в

printf, name);

Для вышеприведённой строки в каталоге появится запись вроде этой:

#: src/name.c:36
msgid "Hello! My name is %s.\n"
msgstr ""

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

Для перевода множественного числа используется функция ngettext, которая принимает в качестве параметров две англоязычные строки и целое число. В PHP вызов ngettext для вывода строки с числом выглядит следующим образом:

printf, $daysAgo);

Функция ngettext сама по себе не производит подстановку числового значения вместо %d, поэтому программисту необходимо вызвать функцию printf или подобную ей для формирования нужной строки с числом.

Примеры форматирования текста

При переводе строк для формирования веб-интерфейсов можно форматировать текст, заключив текст в определённые HTML-теги. Например:

<i>Курсив</i>
<b>Полужирный шрифт</b>
<small>Уменьшенный шрифт</small>

В С-подобных языках перенос строки отображается символами \n, и переводя строки для программ, написанных на них, этим тоже можно пользоваться. Пример:

"Текст.\nТекст"

результат:
Текст.
Текст

Для переводчика

Простые строки

Затем он переводит строки в этом файле, например, для русского перевода:

#: src/name.c:36
msgid "Hello! My name is %s.\n"
msgstr "Привет! Меня зовут %s.\n"

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

Для перевода множественных чисел необходимо, чтобы в заголовке .po-файла было указано правило формирования множественных чисел для данного языка. Например, в русском языке существует три формы множественных чисел:

  • 1, 21, 31… день
  • 2, 3, 4, 22, 23, 24, 32, 33, 34… дня
  • 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 29, 30, 35, 36… дней

Выбор одной из этих трёх форм в зависимости от числа осуществляется следующей формулой:

Plural-Forms: nplurals=3; plural=

Выражение для plural здесь пишется с использованием синтаксиса языка Си, и может опираться лишь на переменную n, которая обозначает выводимое число.

После такого объявления формы приобретают номера 0, 1 и 2, и перевод фразы осуществляется следующим образом:

msgid "%d day ago"
msgid_plural "%d days ago"
msgstr "%d день назад"
msgstr "%d дня назад"
msgstr "%d дней назад"

Для пользователя

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



Просмотров: 2484


<<< Deja Vu