Я не знаю жодного місцеположення, яке за замовчуванням сортується в тому порядку. Рішення полягає в створенні нестандартного локального місця з індивідуальним порядком сортування. Якщо хтось, через чотири роки, захоче розібратися на замовлення, ось ось фокус.
Переважна більшість локалів не вказує власний порядок сортування, а скопіює порядок сортування, визначений у /usr/share/i18n/locales/iso14651_t1_commonтакому, що саме ви хочете редагувати. Замість того, щоб змінювати порядок сортування майже для кожного локального регіону, змінюючи оригінал iso14651_t1_common, пропоную зробити копію. Деталі про те, як працює порядок сортування та як створити користувальницьку локаль у вашій $HOMEкаталозі без доступу до кореневих файлів, ви знайдете у цій відповіді на подібне запитання .
Ознайомтеся з тим, як aі Aвпорядковуються виходячи з їх записів у iso14651_t1_common:
<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
<U0041> <a>;<BAS>;<CAP>;IGNORE # 517 A
bі Bподібні:
<U0062> <b>;<BAS>;<MIN>;IGNORE # 233 b
<U0042> <b>;<BAS>;<CAP>;IGNORE # 550 B
Ми бачимо, що на першому проході обидва aі Aмають символ згортання <a>, а в обох bі Bє символ згортання <b>. Оскільки <a>з'являється раніше <b>в iso14651_t1_common, aі Aпов'язані перед bі B. Другий прохід не розриває зв’язки, оскільки всі чотири символи мають символ згортання <BAS>, але під час третього проходу зв'язки вирішуються, оскільки символ <MIN>рядка для малих літер з’являється у рядку 3467 перед символом згортання великих літер <CAP>(рядок 3488) . Таким чином, порядок сортування закінчується як a, A, b, B.
Заміна першого та третього символів, що складаються, сортує букви спочатку в регістрі (нижній та верхній), потім по наголосу ( <BAS>означає, що не є наголосом), потім за алфавітом. Однак і те, <MIN>і інше <CAP>ставиться до числових цифр, тож це призведе до небажаного ефекту введення цифр після букв.
Найпростіший спосіб зберегти цифри першими, роблячи всі малі літери перед усіма великими літерами, - змусити всі літери зв'язати під час першого порівняння, встановивши їх усі рівні <a>. Щоб переконатися, що вони в алфавітному порядку сортуються за регістром, змініть останній символ згортання IGNOREна поточний перший збірний символ. Дотримуючись цієї закономірності, aстане:
<U0061> <a>;<BAS>;<MIN>;<a> # 198 a
A стане:
<U0041> <a>;<BAS>;<CAP>;<a> # 517 A
b стане:
<U0062> <a>;<BAS>;<MIN>;<b> # 233 b
B стане:
<U0042> <a>;<BAS>;<CAP>;<b> # 550 B
і так далі для решти листів.
Після створення спеціалізованої версії iso14651_t1_commonдотримуйтесь інструкцій у відповіді, зв'язаній вище, щоб скласти власну власну мову.