Автор Тема: речниково сортиране: кирилица и български езикови  (Прочетена 1416 пъти)

rpetrov

  • Участник
  • *****
  • Публикации: 571
    • Профил
    • WWW
Здравейте,

Бих искал и в този форум да попитам, дали имате нещо против да се премахнат допълнителните правила за сортиране, зададени в българските езикови настройки ?

Освен това мисля, че в общите правила за сортиране на кирилица, трябва да се сменят местата на  <U0404> и <U0401> , на <U040C> и <U040B>, и на съответните им малки букви.

В крайна сметка очаквам да се получи следната подредба на UNICODE знаците за кирилица от 0x400 до 0x45f:

1) аАбБвВгГдДѓЃђЂеЕ&#1104;&#1024;ёЁєЄжЖзЗѕЅиИ&#1117;&#1037;іІїЇйЙјЈкКлЛљЉмМнНњЊоОпПрРсСтТћЋќЌуУўЎфФхХцЦчЧџЏшШщЩъЪыЫьЬэЭюЮяЯ
(за съжаление, програмата на този форум не позволява да се въведат ударените "И" и "Е" и затова се извеждат, например, като &#1037; )



Технически детайли:
Файлът с описанието, обикновенно, е /usr/share/i18n/locales/bg_BG.
Интересува ни секцията LC_COLLATE, която изглежда, примерно:
======================
LC_COLLATE
copy "iso14651_t1"
reorder-after <9>
.....
reorder-after <U0433>
.....
reorder-end
END LC_COLLATE
======================

Тест с PERL(кода следва):
==================
use locale;
print +(sort grep /\w/, map { chr } 0x400..0x45f), "\n";
==================
и при настойка LANG=bg_BG.UTF-8 се получава следното:
2) &#1024;&#1037;&#1104;&#1117;аАбБвВгГѓЃдДђЂџЏѕЅеЕєЄёЁэЭжЖзЗиИІіїЇыЫйЙЈјкКќЌлЛљЉмМнНњЊоОпПрРсСтТуУўЎфФхХцЦчЧћЋшШщЩъЪьЬюЮяЯ.


Сега ако в файла .../locales/bg_BG се премахнат редовете от reorder-after <U0433> до reorder-end, без последния би трябвало да се получи:

3) аАбБвВгГдДѓЃђЂеЕ&#1104;&#1024;єЄёЁжЖзЗѕЅиИ&#1117;&#1037;іІїЇйЙјЈкКлЛљЉмМнНњЊоОпПрРсСтТќЌћЋуУўЎфФхХцЦчЧџЏшШщЩъЪыЫьЬэЭюЮяЯ.

Бележки:
- след редактиране на файла, трябва да се се пресъздадат езиковите настройки с командата :

localedef -i bg_BG -f UTF-8 bg_BG.UTF-8;
- забележете разликата, след E и T, между 3) и 1);
- моята Си библиотека е остаряла версия и не мога да преценя дали трябва да се махне и правилото reorder-after <9>;
- общия файл е iso14651_t1, като в текущата версия правилата от iso14651_t1 са преместени в iso14651_t1_common;
- версията на Си библиотеката (libc) може да е по-стара и да липсват общи правила за сортиране на ударени "И" и "Е", главни и малки;
- в моята версия няма общи правила за ударените "И" и "Е" и затова, само за тестване, съм добавил в .../bg_BG:
----------------
reorder-after <U0438>
<U045D> <CYR-I>;<U045D>;<MIN>;IGNORE
reorder-after <U0418>
<U040D> <CYR-I>;<U040D>;<CAP>;IGNORE
reorder-after <U0435>
<U0450> <CYR-IE>;<U0450>;<MIN>;IGNORE
reorder-after <U0415>
<U0400> <CYR-IE>;<U0400>;<CAP>;IGNORE
----------------


Румен

П.П.

Източници:
http://www.unicode.org/charts/collation/chart_Cyrillic.html

http://www.collation-charts.org/winxp....ia.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!)
Активен