Локализация 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."
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.
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 ~]#
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 ~]#
- Войдите на сайт для отправки комментариев
- Версия для печати
Вот дополнение к этой статье, с включением UTF-8 в ядре http://infobsd.ru/node/43
у меня это ничего не дало пока в ~/.cshrc явно не прописал
А теперь попробуй в single mode зайти и проверить, как работает UTF8. Я не 8.0 тоже локализировал, в итоге - работать нельзя, так как буквы не вводятся и т.д.
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:~]>
и всё работает намана
Работаю по SSH с LINUX которая тоже в утф8, все нормально.