Re: [Lug-bg] "речниково" сортиране на български
- Subject: Re: [Lug-bg] "речниково" сортиране на български
- From: Roumen Petrov <help@xxxxxxxxxxxxxxxxx>
- Date: Thu, 19 Jun 2008 20:14:49 +0300
Александър Шопов wrote:
Подредбата зависи от настройките в частта LC_COLLATE на локала.
Погледни тук:
http://sourceware.org/cgi-bin/cvsweb.cgi/libc/localedata/locales/bg_BG?rev=1.9&content-type=text/x-cvsweb-markup&cvsroot=glibc
Имам локално копие на гну libc
Локалът първоначално е изработен от Делян Тошев. Последните поправки в
него са от Антон Зиновиев и мен (Александър Шопов). Делян не се занимава
вече с локала.
Последният подал файла към Улрих Дрепър съм аз.
Обсъжданията за подредбата по принцип текат в списъка с преводачи.
Предположих, че зависи от файла /usr/share/i18n/locales/bg_BG.
Разглеждах го и не установих, защо двете и-та са преди всички
български
букви, а също защо дава, че са равни. Не са описани, но ми е странен
резултата.
Ударените и-та трябва да се подреждат като неударените си форми. Това е
бъг.
Интересува ме, кой отговаря за подръжката на този файл ? Данните в
него
не ми изглеждат много актуални.
Направих и тест с PERL(кода следва):
==================
use locale;
print +(sort grep /\w/, map { chr } 0x400..0x45f), "\n";
==================
и при настойка LANG=bg_BG.UTF-8 се получава следното:
ЀЍѐѝаАбБвВгГѓЃдДђЂџЏѕЅеЕєЄёЁэЭжЖзЗиИІіїЇыЫйЙЈјкКќЌлЛљЉмМнНњЊоОпПрРсСтТуУўЎфФхХцЦчЧћЋшШщЩъЪьЬюЮяЯ
Виждат се и други неправилно подредени знаци.
Можеш ли да опишеш повече случаи, за да може малко по-малко да се
оправи? Локалът действително не е поддържан отдавна.
Поздрави:
ал_шопов
Ами прикачих файла bg_BG.diff.
Според мен всичките reorder-after водят до неправилно сортиране. Има
подредба на кирилица в iso14651_t1, която намирам за правилна, с малки,
може би несъществени, изключения.
В bg_BG, като се премахнат съществуващите правила и се добавят нови за
ударено "И" и "Е" се получава:
аАбБвВгГдДѓЃђЂеЕѐЀєЄёЁжЖзЗѕЅиИѝЍіІїЇйЙјЈкКлЛљЉмМнНњЊоОпПрРсСтТќЌћЋуУўЎфФхХцЦчЧџЏшШщЩъЪыЫьЬэЭюЮяЯ
А ако се оправи и подредбата в iso14651_t1, ще се получи (виж след "Е" и
"Т"):
аАбБвВгГдДѓЃђЂеЕѐЀёЁєЄжЖзЗѕЅиИѝЍіІїЇйЙјЈкКлЛљЉмМнНњЊоОпПрРсСтТћЋќЌуУўЎфФхХцЦчЧџЏшШщЩъЪыЫьЬэЭюЮяЯ
Мисля, че в bg_BG трябва да се махнат всички правила, като ударено "и" и
"е" са за iso14651_t1.
Румен
П.П.:
Литература:
http://www.unicode.org/charts/collation/chart_Cyrillic.html
http://www.collation-charts.org/winxp/winxp.0402.CP1251.Bulgarian_Bulgaria.html
и от wikipedia:
http://en.wikipedia.org/wiki/Early_Cyrillic_alphabet
http://en.wikipedia.org/wiki/Cyrillic_alphabet
http://en.wikipedia.org/wiki/Russian_alphabet
http://en.wikipedia.org/wiki/Macedonian_alphabet
http://en.wikipedia.org/wiki/Serbian_Cyrillic_alphabet
http://en.wikipedia.org/wiki/Romanian_Cyrillic_alphabet (заб.: преди
1860–1862!)
--- /usr/share/i18n/locales/bg_BG-ORIG 2006-09-14 10:26:52.000000000 +0300
+++ /usr/share/i18n/locales/bg_BG 2008-06-18 20:15:19.016037793 +0300
@@ -101,56 +101,20 @@
<CYR-E>
<CYR-YOU>
<CYR-YA>
-reorder-after <U0433>
-<U0453> <CYR-GHE>;<CYR-GZHE>;<MIN>;IGNORE % Mac. gje
-reorder-after <U0434>
-<U0452> "<CYR-DE><CYR-ZHE>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-DJE
-<U045F> "<CYR-DE><CYR-ZHE>";"<CYR-DCHE><LIG>";"<MIN><MIN>";IGNORE % CYR-DCHE
-<U0455> "<CYR-DE><CYR-ZE>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-DZE
-reorder-after <U0435>
-<U0454> <CYR-IE>;<UKR-IE>;<MIN>;IGNORE
-<U0451> <CYR-IE>;<CYR-IO>;<MIN>;IGNORE
-<U044D> <CYR-IE>;<CYR-E>;<MIN>;IGNORE
reorder-after <U0438>
-<U0406> <CYR-I>;<UKR-I>;<MIN>;IGNORE
-<U0457> <CYR-I>;<UKR-YI>;<MIN>;IGNORE
-<U044B> <CYR-I>;<CYR-YEROU>;<MIN>;IGNORE
-reorder-after <U043A>
-<U045C> <CYR-KA>;<CYR-KJE>;<MIN>;IGNORE
-reorder-after <U043B>
-<U0459> "<CYR-EL><CYR-SIGMOUIL>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-LJE
-reorder-after <U043D>
-<U045A> "<CYR-EN><CYR-SIGMOUIL>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-NJE
-reorder-after <U0443>
-<U045E> <CYR-OU>;<CYR-OUBRE>;<MIN>;IGNORE
-reorder-after <U0447>
-<U045B> <CYR-CHE>;<CYR-TSHE>;<MIN>;IGNORE
-reorder-after <U0413>
-<U0403> <CYR-GHE>;<CYR-GZHE>;<CAP>;IGNORE % Mac. gje
-reorder-after <U0414>
-<U0402> "<CYR-DE><CYR-ZHE>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-DJE
-<U040F> "<CYR-DE><CYR-ZHE>";"<CYR-DCHE><LIG>";"<CAP><CAP>";IGNORE % CYR-DCHE
-<U0405> "<CYR-DE><CYR-ZE>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-DZE
-reorder-after <U0415>
-<U0404> <CYR-IE>;<UKR-IE>;<CAP>;IGNORE
-<U0401> <CYR-IE>;<CYR-IO>;<CAP>;IGNORE
-<U042D> <CYR-IE>;<CYR-E>;<CAP>;IGNORE
+<U045D> <CYR-I>;<U045D>;<MIN>;IGNORE
reorder-after <U0418>
-<U0456> <CYR-I>;<UKR-I>;<CAP>;IGNORE
-<U0407> <CYR-I>;<UKR-YI>;<CAP>;IGNORE
-<U042B> <CYR-I>;<CYR-YEROU>;<CAP>;IGNORE
-reorder-after <U0419>
-<U0408> <CYR-IBRE>;<CYR-JE>;<CAP>;IGNORE
-reorder-after <U041A>
-<U040C> <CYR-KA>;<CYR-KJE>;<CAP>;IGNORE
-reorder-after <U041B>
-<U0409> "<CYR-EL><CYR-SIGMOUIL>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-LJE
-reorder-after <U041D>
-<U040A> "<CYR-EN><CYR-SIGMOUIL>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-NJE
-reorder-after <U0423>
-<U040E> <CYR-OU>;<CYR-OUBRE>;<CAP>;IGNORE
-reorder-after <U0427>
-<U040B> <CYR-CHE>;<CYR-TSHE>;<CAP>;IGNORE
+<U040D> <CYR-I>;<U040D>;<CAP>;IGNORE
+reorder-after <U0435>
+<U0450> <CYR-IE>;<U0450>;<MIN>;IGNORE
+reorder-after <U0415>
+<U0400> <CYR-IE>;<U0400>;<CAP>;IGNORE
+% ROUMEN bug(?) in iso14651_t1 to swap(+lowercase!):
+% <U0404> <UKR-IE>;<BAS>;<CAP>;IGNORE
+% <U0401> <CYR-IO>;<BAS>;<CAP>;IGNORE
+% also(?)
+% <U040C> <CYR-KJE>;<BAS>;<CAP>;IGNORE
+% <U040B> <CYR-TSHE>;<BAS>;<CAP>;IGNORE
reorder-end
END LC_COLLATE
_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg
|