POSIX locale FreeBSD 2.x

-----Original Message-----
From: Alexander Voropay <a.voropay@globalone.ru>
To: locale@sensi.org <locale@sensi.org>
Date: 17 августа 1999 г. 15:47
Subject: Re: locale во FreeBSD

>  расскажите, пожалуйста, как скомпилировать локаль во
>FreeBSD, мне нужна ru_RU.ISO-8859-5.  что для этого потребуется:
>файлы, программы, права рута?  спасибо.
>
>система FreeBSD 2.2.8-RELEASE.

С locale во FreeBSD не очень хорошо. Вернее, все вызовы
типа setlocale(3) работают отлично. Но нету POSIX *утилит*
localedef(1) и locale(1). Поэтому скомпилировать "объекты
локализации" - задача не тривиальная.

Да, нужны права root.

Необходимо поставить исходники FreeBSD : sshare и subin

$ cd /home/ftp/pub/FreeBSD/2.2.8-RELEASE/src
$./install.sh share
$./install.sh ubin

Скрипт install.sh положит все куда надо : в /usr/src

Далее смотри программушки : mklocale(1) - она генерирует
LC_CTYPE и colldef(1) - генерирует LC_COLLATE. Живут
они соответственно в :
/usr/src/usr.bin/mklocale
/usr/src/usr.bin/colldef

Там же в ./data/* лежат файлы примеров - исходников
*.src . Они совсем не похожи на POSIX, но очень простые.
Собственно их-то и надо поправить и скомпилировать.
Как - смотри Makefile. Для компиляции LC_COLLATE еще
будет нужен файлик описания CHARSET-а. Примеры
опять же есть в ./data .

Категория LC_TIME собирается по другому. В каталоге
/usr/src/share/timedef в ./data лежат исходники *.src .
Имена месяцев там идут просто открытым текстом,
поэтому этот файл можно просто перекодировать в ISO.
А дальше - смотри как в Makefile.

Полученные файлики LC_TIME, LC_CTYPE и LC_COLLATE
нужно положить в каталог /usr/share/locale/ru_RU.ISO_8859-5
сделать export LANG=ru_RU.ISO_8859-5 и наслаждаться.
Во FreeBSD принято писать название CHARSET-а с "_"
а не через "-", то есть вот так : "ISO_8859-5".

Как сделать LC_NUMERIC и LC_MONETARY я не нашел.

Если будут трудности - пиши.

P.S. Результаты работы и *.src файлы нужно положить на ftp
и сообщить URL людям. :-)

P.P.S. После этого все то же самое проделать для CP1251 и
MAC-CYRILLIC  ;-)


From: Ivan Pascal <pascal@info.tsu.ru>
To: locale@sensi.org <locale@sensi.org>
Date: 18 августа 1999 г. 4:07
Subject: Re: locale во FreeBSD

>
>  Как сделать LC_NUMERIC и LC_MONETARY я не нашел.
>
----------
SETLOCALE(3)        FreeBSD Library Functions Manual   SETLOCALE(3)
.......

BUGS
     The current implementation supports only the "C" and "POSIX" locales for
     all but the LC_COLLATE, LC_CTYPE, and LC_TIME categories.
.....
BSD June 9, 1993      3
-------
  То есть - NUMERIC и MONETARY одни на все "локали" :
- сделать можно LC_CTYPE, LC_COLLATE, LC_TIME
- остальные категории для всех одинаковые и такие как в "C"


--
Ivan U. Pascal         |   e-mail: pascal@tsu.ru
   Administrator of     |   Tomsk State University
     University Network |        Tomsk, Russia