Não sei de nenhuma localidade que, por padrão, classifique nessa ordem. A solução é criar uma localidade personalizada com uma ordem de classificação personalizada. Se alguém, quatro anos depois, quiser classificar de forma personalizada, aqui está o truque.
A grande maioria das localidades não especifica sua própria ordem de classificação, mas copia a ordem de classificação definida em /usr/share/i18n/locales/iso14651_t1_common
, então é isso que você deseja editar. Em vez de alterar a ordem de classificação para quase todas as localidades, modificando o original iso14651_t1_common
, sugiro que você faça uma cópia. Detalhes sobre como a ordem de classificação funciona e como criar uma localidade personalizada no diretório $HOME
sem acesso à raiz são encontrados nesta resposta a uma pergunta semelhante .
Veja como a
e A
são ordenados com base em suas entradas em iso14651_t1_common
:
<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
<U0041> <a>;<BAS>;<CAP>;IGNORE # 517 A
b
e B
são semelhantes:
<U0062> <b>;<BAS>;<MIN>;IGNORE # 233 b
<U0042> <b>;<BAS>;<CAP>;IGNORE # 550 B
Vemos que na primeira passagem, tanto a
como A
têm o símbolo de intercalação <a>
, enquanto que b
e B
têm o símbolo de intercalação <b>
. Como <a>
aparece antes de <b>
em iso14651_t1_common
, a
e A
são vinculados antes de b
e B
. A segunda passagem não quebra os empates porque todos os quatro caracteres têm o símbolo de agrupamento <BAS>
, mas durante a terceira passagem os empates são resolvidos porque o símbolo de intercalação para letras minúsculas <MIN>
aparece na linha 3467, antes do símbolo de intercalação letras maiúsculas <CAP>
(linha 3488). Assim, a ordem de classificação acaba em a
, A
, b
, B
.
Trocar o primeiro e terceiro símbolos de ordenação ordenaria letras primeiro a maiúsculas (maiúsculas e minúsculas), depois por acentuação ( <BAS>
significa sem acentuação) e depois por ordem alfabética. No entanto, , tanto <MIN>
quanto <CAP>
vêm antes dos dígitos numéricos, então isso teria o efeito indesejado de colocar dígitos após as letras.
A maneira mais fácil de manter os dígitos antes de fazer todas letras minúsculas virem antes todas letras maiúsculas é forçar todas as letras a se ligarem durante a primeira comparação, definindo-as todas iguais codificar%. Para certificar-se de que eles estejam ordenados alfabeticamente no caso, altere o último símbolo de intercalação de <a>
para o primeiro símbolo de intercalação atual. Seguindo esse padrão, IGNORE
se tornaria:
<U0061> <a>;<BAS>;<MIN>;<a> # 198 a
a
se tornaria:
<U0041> <a>;<BAS>;<CAP>;<a> # 517 A
A
se tornaria:
<U0062> <a>;<BAS>;<MIN>;<b> # 233 b
b
se tornaria:
<U0042> <a>;<BAS>;<CAP>;<b> # 550 B
e assim por diante para o resto das letras.
Depois de criar uma versão personalizada de B
, siga as instruções em a resposta acima para compilar sua localidade personalizada.