$ <b>msgfmt piglat.po -о piglat.mo</b>При сопровождении программы изменяются строки, используемые программой: добавляются новые, другие удаляются или изменяются. По крайней мере, может измениться положение строки в исходном файле. Таким образом, файлы переводов
.роmsgmerge.pot$ <b>msgmerge piglat.po echodate.pot -o piglat.new.po</b> /* Объединить файлы */$ <b>mv piglat.new.po piglat.po</b> /* Переименовать результат */$ <b>vi piglat.po</b> /* Модернизировать перевод */$ <b>msgfmt piglat.po -o piglat.mo</b> /* Восстановить файл .mo */Откомпилированные файлы
.mo<i>base</i>/<i>locale</i>/category/<i>textdomain</i>.mobase/usr/share/localelocaleesfrcategoryLC_MESSAGEStextdomainechodate/usr/share/locale/es/LC_MESSAGES/coreutils.moФункция
bindtextdomain()basech13-echodate.c.$ <b>mkdir -р en_US/LC_MESSAGES</b> /* Нужно использовать реальную локаль */$ <b>cp piglat.mo en_US/LC_MESSAGES/echodate.mo</b> /* Поместить файл в нужное место */Должна использоваться реальная локаль [148]; мы «притворяемся» использующими "
en_USLC_ALL$ <b>LC_ALL=en_US ch13-echodate</b> /* Запуск программы */Enteray A Ateday/imetay asay YYYY/MM/DD HH:MM:SS : 2003/07/14 21:19:26Otgay: Mon Jul 14 21:19:26 2003Последнюю версию GNU
gettextgettextЭтот раздел лишь слегка коснулся поверхности процесса локализации. GNU
gettextmakegettextРекомендуем прочесть документацию GNU
gettextgettext13.4. Не могли бы вы произнести это для меня по буквам?
В самые ранние дни вычислительной техники различные системы назначали различные соответствия между числовыми значениями и глифами (glyphs) — символами, такими, как буквы, цифры и знаки пунктуации, используемыми для общения с людьми. В конечном счете появились два широко использующихся стандарта: кодировка EBCDIC, используемая IBM и подобными ей мэйнфреймами, и ASCII, использующаяся для всего остального. Сегодня, за исключением мэйнфреймов, ASCII является основой для всех других использующихся наборов символов.
Оригинальный семиразрядный набор символов ASCII достаточен для американского английского и большинства знаков пунктуации и специальных символов (таких, как
$Литература по интернационализации изобилует ссылками на три фундаментальных термина. Определив их и взаимоотношения между ними, мы сможем представить общее описание соответствующих функций API С.
Набор символов (character set)
Определение значений, присваиваемых различным целым величинам; например того, что A равно 65. Любой набор символов, использующий более восьми битов на символ, называется многобайтным набором символов.
Представление набора символов (character set encoding)
ASCII использует для представления символов один байт. Таким образом, целое значение хранится само по себе, непосредственно в дисковых файлах. Более современные наборы символов, особенно различные версии Unicode [150], используют для представления символов 16-разрядные или даже 32-разрядные целые значения. Для большинства определенных символов один, два или даже три старших байта целого значения равны нулю, что делает непосредственное хранение таких значений на диске неэффективным. Представление набора символов описывает механизм для преобразования 16- или 32-разрядных значений в последовательности от одного до шести байтов для сохранения на диске таким образом, что в целом наблюдается значительная экономия дисковой памяти.
Язык
Правила данного языка определяют использование набора символов. В частности, правила влияют на сортировку символов. Например, на французском е, é и è все должны находиться между d и f, независимо от назначенных этим символам числовых значений. Различные языки могут назначить (и назначают) одним и тем же глифам различный порядок сортировки.
Со временем для поддержки многобайтных наборов символов были разработаны различные технологии. Вычислительная практика медленно стремится к Unicode и соответствующим его представлениям, но стандартный С и POSIX поддерживают как старые, так и современные технологии. В данном разделе представлен концептуальный обзор различных возможностей. Нам самим не приходилось их использовать, поэтому мы предпочитаем просто познакомить с ними и предоставить ссылки на дополнительную информацию.
13.4.1. Широкие символы
Мы начнем с концепции широких символов (wide character). Широкий символ является целым типом, в котором может храниться любое значение из определенного используемого многобайтного набора символов.