|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : George Zavyalov 2:5020/400 23 Jun 2003 17:54:42 To : All Subject : Re: Русификация FreeBSD (ru_SU.CP1251) -------------------------------------------------------------------------------- Может быть кто-то всё же окажет любезность объяснить мне, где у меня лажа... Или, хотя бы, наставит на путь истинный... ;-) Итак, имеем: 1) locale ru_SU.CP1251, взятую с http://193.125.152.109/pub/FreeBSD/local/ (cp1251-freebsd.tar.gz 5,726 10-Sep-2000 ru_SU.CP1251 locale (tested under FreeBSD 2.2.x) ) 2) LC_MESSAGES, LC_NUMERIC, LC_MONETARY (по совету знакомого админа) взяты из ru_RU.KOI8-R (с тупой заменой Koi8-символов на win1251). Итог: [root@pom]# cd /usr/share/locale && ls -l|grep 1251 && cd ru_SU.CP1251 && ls -l drwxr-xr-x 2 root wheel 512 Feb 26 17:37 bg_BG.CP1251 lrwxr-xr-x 1 root wheel 30 Mar 17 17:32 ru_RU.CP1251 -> /usr/share/locale/ru_SU.CP1251 drwxr-xr-x 2 root wheel 512 Jun 21 16:10 ru_SU.CP1251 total 20 -rw-r--r-- 1 root wheel 6618 Mar 17 17:32 LC_COLLATE -rw-r--r-- 1 root wheel 3214 Mar 17 17:32 LC_CTYPE -rw-r--r-- 1 root wheel 27 Jun 20 16:50 LC_MESSAGES -rw-r--r-- 1 root wheel 37 Apr 28 15:16 LC_MONETARY -rw-r--r-- 1 root wheel 8 Apr 28 15:18 LC_NUMERIC -rw-r--r-- 1 root wheel 266 Mar 17 17:32 LC_TIME 3) В /etc/login.conf: russian|Russian Users Accounts:\ :charset=CP1251:\ :lang=ru_SU.CP1251:\ :tc=default: Перевёл себя и рута в login_class russian (5-е поле в master.passwd) 4) В /etc/profile: LANG=ru_SU.CP1251; export LANG LC_ALL=ru_SU.CP1251; export LC_ALL MM_CHARSET=CP1251; export MM_CHARSET 5) В /etc/csh.login: setenv LANG ru_SU.CP1251 setenv MM_CHARSET CP1251 6) В /etc/ttys: ttyv0 "/usr/libexec/getty Pc" cons25r on secure ........................... ttyv7 "/usr/libexec/getty Pc" cons25r on secure 7) В /etc/rc.conf: keymap=ru.cp1251 keychange="61 ESC[K" scrnmap="win2cpp866" font8x16=cp866-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8 (Для справки: [root@pom]# cd /usr/share/syscons/fonts && ls -l|grep 866 -r--r--r-- 1 root wheel 4967 Oct 9 2002 cp866-8x14.fnt -r--r--r-- 1 root wheel 5675 Oct 9 2002 cp866-8x16.fnt -r--r--r-- 1 root wheel 2850 Oct 9 2002 cp866-8x8.fnt -r--r--r-- 1 root wheel 5676 Oct 9 2002 cp866b-8x16.fnt -r--r--r-- 1 root wheel 5676 Oct 9 2002 cp866c-8x16.fnt -r--r--r-- 1 root wheel 5068 Oct 9 2002 cp866u-8x14.fnt -r--r--r-- 1 root wheel 5776 Oct 9 2002 cp866u-8x16.fnt -r--r--r-- 1 root wheel 2950 Oct 9 2002 cp866u-8x8.fnt [root@pom]# cd /usr/share/syscons/keymaps && ls -l|grep ru -rw-r--r-- 1 root wheel 16395 Mar 17 17:36 ru.cp1251.kbd -r--r--r-- 1 root wheel 16241 Oct 9 2002 ru.cp866.kbd -r--r--r-- 1 root wheel 16243 Oct 9 2002 ru.iso5.kbd -r--r--r-- 1 root wheel 16225 Oct 9 2002 ru.koi8-r.kbd -r--r--r-- 1 root wheel 16231 Oct 9 2002 ru.koi8-r.shift.kbd [root@ipom]# cd /usr/share/syscons/scrnmaps && ls -l total 14 -r--r--r-- 1 root wheel 392 Oct 9 2002 iso-8859-1_to_cp437.scm -r--r--r-- 1 root wheel 392 Oct 9 2002 iso-8859-4_for_vga9.scm -r--r--r-- 1 root wheel 392 Oct 9 2002 iso-8859-7_to_cp437.scm -r--r--r-- 1 root wheel 385 Oct 9 2002 koi8-r2cp866.scm -r--r--r-- 1 root wheel 386 Oct 9 2002 koi8-u2cp866u.scm -r--r--r-- 1 root wheel 390 Oct 9 2002 us-ascii_to_cp437.scm -rw-r--r-- 1 root wheel 376 Mar 17 17:28 win2cpp866.scm ru.cp1251.kbd взята с http://freebsd.by.ru/fonts/ru.cp1251.kbd.gz win2cpp866.scm взята с http://www.ciam.ru/~sem/progs/win2cpp866.scm 8) В /usr/share/nls создал пустую: drwxr-xr-x 2 root wheel 512 Jun 23 16:54 ru_SU.CP1251 и линк lrwxr-xr-x 1 root wheel 12 Jun 23 16:55 ru_RU.CP1251 -> ru_SU.CP1251 9) В ~/.login_conf: me:\ :CHARSET=CP1251:\ :LANG=ru_SU.CP1251: Вроде бы всё... Теперь о симптомах: 1) Русские символы, вроде бы, печатаются и воспроизводятся: [root@pom]# echo ыаписмисмис > win.txt [root@pom]# cat win.txt ыаписмисмис 2)Запускаем тестовые программки из комплекта установленной локали: a) [root@pom]# cd ~/cp1251/cp1251 [root@pom]# ls -l total 18 -rw-r--r-- 1 nomad wheel 607 Mar 9 1999 Makefile -rw-r--r-- 1 nomad wheel 1014 Mar 9 1999 README -rw-r--r-- 1 nomad wheel 1392 Mar 9 1999 map.CP1251 drwxr-xr-x 2 nomad wheel 512 Mar 9 1999 ru_SU.CP1251 -rw-r--r-- 1 nomad wheel 924 Mar 9 1999 ru_SU.CP1251_collate -rw-r--r-- 1 nomad wheel 1049 Mar 9 1999 ru_SU.CP1251_ctype -rw-r--r-- 1 nomad wheel 266 Mar 9 1999 ru_SU.CP1251_time -rw-r--r-- 1 nomad wheel 209 Mar 9 1999 testlc.c -rwxr-xr-x 1 nomad wheel 971 Mar 9 1999 testlc.pl [root@pom]# make cc -o testlc testlc.c chmod 0755 testlc [root@pom]# more testlc.c #include <ctype.h> #include <stdio.h> #include <locale.h> main () { if (setlocale(LC_ALL,"ru_SU.CP1251")==NULL ) { printf("Unable to set locale\n"); exit(1); } else printf("Ok\n"); } [root@pom]# ./testlc Unable to set locale б)[root@pom]# cat testlc.pl #!/usr/bin/perl use locale; use POSIX qw(setlocale LC_ALL); setlocale(LC_ALL, "ru_SU.CP1251"); $test = 'АБВГДЕЁЖЗИЙКЛМHОПРСТУФХЦЧШЩЪЫЬЭЮЯ ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789'; $r = 'Русские идут, сказали русские и пошли на руССкие холмы.'; print "Checking for lower/upper case\n"; print "Upper: $test\n"; $test = lc($test); print "Lower: $test\n"; $test = uc($test); print "Upper: $test\n"; print "\n"; print "Checking for case insensitive replace\n"; print "Old: $r\n"; $r =~ s/РуСсКиЕ/russian/gi; print "New: $r\n"; for ($i=192;$i<=255;$i++) { $l = chr($i); $char{$l}=1; } $char{'Ё'}=1; $char{'ё'}=1; for ($i=65;$i<91;$i++) { $l = chr($i); $char{$l}=1; } for ($i=97;$i<123;$i++) { $l = chr($i); $char{$l}=1; } for ($i=48;$i<58;$i++) { $l = chr($i); $char{$l}=1; } print "\n"; print "Checking for sortering order\n"; foreach $l (sort keys(%char)) { print "$l"; } print "\n"; [root@pom]# ./testlc.pl perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = "ru_SU.CP1251", LANG = "ru_SU.CP1251" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). Checking for lower/upper case Upper: АБВГДЕЁЖЗИЙКЛМHОПРСТУФХЦЧШЩЪЫЬЭЮЯ ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 Lower: АБВГДЕЁЖЗИЙКЛМHОПРСТУФХЦЧШЩЪЫЬЭЮЯ abcdefghijklmnopqrstuvwxyz 0123456789 Upper: АБВГДЕЁЖЗИЙКЛМHОПРСТУФХЦЧШЩЪЫЬЭЮЯ ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 Checking for case insensitive replace Old: Русские идут, сказали русские и пошли на руССкие холмы. New: Русские идут, сказали русские и пошли на руССкие холмы. Checking for sortering order 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzЁёАБВГДЕЖЗИЙКЛМHО ПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя В общем, работает середина на половину... ;-( Сакраментальный вопрос - где грабли (хотя, как я всё это собирал - грабли могут быть где угодно)... :-((( Егор. --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/166791b85637e.html, оценка из 5, голосов 10
|