Emacs для начинающих



         

Как работает locale ? (пример Linux)


/* Несколько устаревшие сведения на 1 Dec1998*/

    Для операцонной системы Linux

имеют хождение одновременно версий Linux libc, с различной степенью поддержки locale. Hиже приведен краткий обзор версий Linux libc.

    Исторически, Linux libc ведет свое происхождение от free библиотеки GNU libc

(glibc), которая в своей последней стабильной версии ( GNU libc 1.0.9 ) не имела поддержки других locale кроме "C" и соответственно не имела возможности их менять. Эта библиотека дала рождение ветке Linux libc

4.x.x и 5.x.x которая постоянно совершенствовалась, переписывалась и кроме других полезных возможностей постепенно приобрела и средства locale.

... glibc1 libc-4 a.out libc libc-5 original ELF libc libc-6 GNU libc (glibc2, glibc2.1)

    В старой, последней a.out (не-ELF) библиотеке, Linux libc 4.7.5 была возможность переключаться на другие значения locale, но только на заданные в процессе компиляции библиотеки. Для автоматической генерции *.c файлов с описаниями параметров локализации применялись специальные утилиты (реализация Nikolay Saukh ) /* Сильно похоже на старые SCO UNIX */.

    В ELF версии Linux libc 5.0.9 (получившей довольно широкое распространение в дистрибутивах Slackware 2.x, RedHat и Caldera 1.x с ядром Linux 1.2.13-ELF) появилась возможность задавать любые значения локализации.

    Hо сначало надо немного обратится к реализации locale в современной библиотеке Linux libc.

    Напомним, что интернационализация

-- это дизайн (способ проектирования) программного обеспечения, при котором КОД не зависит от национальных особенностей. При таком подходе : локализация -- это процесс изготовления особых "объектов локализации",   в которых сосредоточены языково-зависимые данные. Эти данные разбиты на функциональные группы : категории локализации.

    Как мы выяснили ранее, различным категориям локализации могут быть присвоены различные значения и причем в разное время - разные. Естественно предположить, что они как-то куда-то динамически загружаются. И действительно, вызов (LC_XXXXX,"ru_SU.KOI8-R")




Содержание  Назад  Вперед