[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=-