|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Anikeev 2:5035/10.102 01 Apr 2003 10:26:01 To : All Subject : Локализация под Виндой, будь она неладна! --------------------------------------------------------------------------------
Обращаюсь теперь и сюда, поскольку в локальных курских эхах мне никто помочь
не смог.
Везде в Интернете пишут, что локализация (имею в виду русификацию) Перла под
виндой возможна, но никто не сообщает, под какой версией злополучной винды это
возможно, а также проверял ли он лично эту возможность. У меня сложилось
впечатление, что просто переписывается некое начальное ошибочное сообщение,
автор которого неизвестен и, видимо, работает в компании Микрософт.
Вот к чему приводит попытка локализации у меня. Все необходимые сведения есть
ниже. Привожу текст программы полностью, а также результат ее выдачи
(частично). Результат могу прокомментировать словами Hиколая Озерова: "Hет!
Такой хоккей нам не нужен!"
Кто-нибудь может посоветовать, возможна ли локализация в данном случае, или
надо переходить на _правильные_ ОС, к которым винду с некоторых времен я
перестал относить?..
Буду весьма признателен за _конструктивные_ ответы. Попавшиеся мне ФАКи я
перечитал без особого результата и за 2 недели поисков не продвинулся ни на
йоту.
Или я слишком многого ожидаю от локализации? А я лишь хочу, чтобы "\w\W" в
регулярных выражениях правильно определяли и русские буквы, а сортировка была
правильной (включая букву е: (йо)). Хотя без последнего можно и обойтись...
=== Hачало 9_6.Pl ===
# Итак на входе - русская Win98SE и ActivePerl 5.005_03 build 522, запуск
# скрипта из-под FAR.
# то же и для версии Activeperl 5.0.8 build 805
use integer;
print "\n";
use POSIX qw(locale_h);
open (OUT, ">1.866");
$loc = '--- '.(&POSIX::setlocale( &POSIX::LC_ALL, "russian_russia.866" )
or die $!);
$loc2 = '--- no locale' ;
for ($ii = 0; $ii < 256; $ii += 16)
{
$jj=$ii+16-1;
use locale;
@q1=map { chr() } $ii..$jj; # все символы диапазона
@q2=grep /\w/, @q1; # только буквы
@q3=sort @q2; # и после сортировки
$q1=pack "a" x 16, @q1;
$q2=pack "a" x 16, @q2;
$q3=pack "a" x 16, @q3;
no locale;
@w1=map { chr() } $ii..$jj;
@w2=grep /\w/, @w1;
@w3=sort @w2;
$w1=pack "a" x 16, @w1;
$w2=pack "a" x 16, @w2;
$w3=pack "a" x 16, @w3;
write OUT;
}
print "OK! \n";
format OUT_TOP =
--------------------------------------------------------------
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<
$loc, $loc2
--------------------------------------------------------------
.
format OUT =
@<<..@<<: map : @<<<<<<<<<<<<<<< map : @<<<<<<<<<<<<<<<
$ii,$jj, $q1, $w1
@<<..@<<: grep: @<<<<<<<<<<<<<<< grep: @<<<<<<<<<<<<<<<
$ii,$jj, $q2, $w2
@<<..@<<: sort: @<<<<<<<<<<<<<<< sort: @<<<<<<<<<<<<<<<
$ii,$jj, $q3, $w3
.
__END__
*******************************************************************
Вот часть выдачи программы при запуске из-под FAR под виндой
и иллюстрация издевательства над русскими буквами при
"локализации".
Более половины больших русских букв перестают быть
буквами, а также примерно 1/4 маленьких. Зато буквами остается груда
хлама из верхней части кодовой таблицы.
Обратите также внимание на результаты сортировки! Это действительно
"перлы".
При выключенной локали - никаких проблем.
--------------------------------------------------------------
- --- Russian_Russia.1251 --- no locale
--------------------------------------------------------------
112..127: map : pqrstuvwxyz{|}~. map : pqrstuvwxyz{|}~.
112..127: grep: pqrstuvwxyz grep: pqrstuvwxyz
112..127: sort: pqrstuvwxyz sort: pqrstuvwxyz
128..143: map : АБВГДЕЖЗИЙКЛМHОП map : АБВГДЕЖЗИЙКЛМHОП
128..143: grep: АБГКМHОП grep:
128..143: sort: ГБАHКМОП sort:
144..159: map : РСТУФХЦЧШЩЪЫЬЭЮЯ map : РСТУФХЦЧШЩЪЫЬЭЮЯ
144..159: grep: РЪЬЭЮЯ grep:
144..159: sort: РЭЪЬЮЯ sort:
160..175: map : абвгдежзийклмноп map : абвгдежзийклмноп
160..175: grep: бвгеикп grep:
160..175: sort: еикпгвб sort:
176..191: map : °±Ііґµ¶·ё№є»јЅѕї map : °±Ііґµ¶·ё№є»јЅѕї
176..191: grep: ІіґёєјЅѕї grep:
176..191: sort: ґёєѕЅіІїј sort:
192..207: map : АБВГДЕЖЗИЙКЛМНОП map : АБВГДЕЖЗИЙКЛМНОП
192..207: grep: АБВГДЕЖЗИЙКЛМНОП grep:
192..207: sort: АБВГДЕЖЗИЙКЛМНОП sort:
208..223: map : РСТУФХЦЧШЩЪЫЬЭЮЯ map : РСТУФХЦЧШЩЪЫЬЭЮЯ
208..223: grep: РСТУФХЦЧШЩЪЫЬЭЮЯ grep:
208..223: sort: РСТУФХЦЧШЩЪЫЬЭЮЯ sort:
224..239: map : рстуфхцчшщъыьэюя map : рстуфхцчшщъыьэюя
224..239: grep: рстуфхцчшщъыьэюя grep:
224..239: sort: рстуфхцчшщъыьэюя sort:
240..255: map : Ёётуфхцчшщъыьэюя map : Ёётуфхцчшщъыьэюя
240..255: grep: Ёётуфхцчшщъыьэюя grep:
240..255: sort: Ёётуфхцчшщъыьэюя sort:
=== Конец 9_6.Pl ===
Alexander Anikeev
e-mail: anikeev@kursknet.ru
--- Russian_Russia.1251 --- no locale
* Origin: ### Per anus ad astra ### (2:5035/10.102)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/38183e89813a.html, оценка из 5, голосов 10
|