Локализация FreeBSD 8.2 в UTF-8

28.04.2011 - 09:40

UTF-8 является "универсальной" кодировкой для многих UNIX-like систем. Вот и я решил прикрутить ее на свой сервер, написал простенький скрипт.

[root@fs /]#cat > local_to_utf8.sh
#!/bin/sh

VER=`/usr/bin/uname -r`
echo -n "Enter the username: "
read username

#/etc/login.conf
cp /etc/login.conf /etc/login.conf.orig
echo 'russian|Russian Users Accounts:\
:charset=UTF-8:\
:lang=ru_RU.UTF-8:\
:tc=default:'
>> /etc/login.conf

/usr/bin/cap_mkdb /etc/login.conf

/usr/sbin/pw usermod -n "$username" -L russian

#for csh
    cp /etc/csh.cshrc /etc/csh.cshrc.orig
    echo 'setenv LANG ru_RU.UTF-8
    setenv LC_CTYPE ru_RU.UTF-8
    setenv LC_COLLATE POSIX
    setenv LC_ALL ru_RU.UTF-8'
> /etc/csh.cshrc

#for bash
    cp /etc/profile /etc/profile.orig
    echo 'LANG="ru_RU.UTF-8"; export LANG
    LC_CTYPE="ru_RU.UTF-8"; export LC_CTYPE
    LC_COLLATE="POSIX"; export LC_COLLATE
    LC_ALL="ru_RU.UTF-8"; export LC_ALL'
> /etc/profile

   echo "Russification of the FreeBSD $VER is completed.  Please, reboot computer."

Выполняем и перезагружаем ПК.

[root@fs /]#./local_to_utf8.sh
Enter the username: root
Russification of the FreeBSD 8.2-RELEASE is completed.  Please, reboot computer.

Теперь у нас UTF-8 по дефолту:

[root@fs ~]# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8
[root@fs ~]#

Ваша оценка: Нет Средняя: 2.3 (3 голосов)

Комментарии:


Вот дополнение к этой статье, с включением UTF-8 в ядре http://infobsd.ru/node/43



#for csh
cp /etc/csh.cshrc /etc/csh.cshrc.orig
echo 'setenv LANG ru_RU.UTF-8
setenv LC_CTYPE ru_RU.UTF-8
setenv LC_COLLATE POSIX
setenv LC_ALL ru_RU.UTF-8' > /etc/csh.cshrc

у меня это ничего не дало пока в ~/.cshrc явно не прописал



А теперь попробуй в single mode зайти и проверить, как работает UTF8. Я не 8.0 тоже локализировал, в итоге - работать нельзя, так как буквы не вводятся и т.д.



(pts/0)[ttys@adi:~]> sudo grep -i lang /root/.cshrc ; sudo grep -i lc /root/.cshrc
setenv LANG C
setenv LC_CTYPE C
setenv LC_COLLATE POSIX
setenv LC_ALL C
(pts/0)[ttys@adi:~]> sudo grep -i lang /home/ttys/.cshrc ; sudo grep -i lc /home/ttys/.cshrc
setenv LANG ru_RU.UTF-8
setenv LC_CTYPE ru_RU.UTF-8
setenv LC_COLLATE POSIX
setenv LC_ALL ru_RU.UTF-8
(pts/0)[ttys@adi:~]>

и всё работает намана Happy



Работаю по SSH с LINUX которая тоже в утф8, все нормально.