[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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  ;-)

--
-=AV=-