Estou tentando criar uma localidade personalizada para uso com a variável LC_COLLATE que classifica o texto da mesma forma que a localidade C, com a única exceção que classifica sem distinção entre maiúsculas e minúsculas. Eu preciso disso porque eu tenho muitos arquivos com caracteres especiais (japoneses) em seus nomes, que ficam espalhados aleatoriamente pela pasta ao usar o código de idioma en_US para LC_COLLATE. Definir LC_COLLATE como C resolve esse problema; no entanto, ele introduz a diferenciação de maiúsculas e minúsculas que pode ser irritante ao baixar arquivos da Internet que foram nomeados assumindo que o caso não importaria.
Foi fácil criar uma localidade personalizada com base na localidade C que classifica AaBbCc ... em vez de ABC ... abc ... e isso alivia um pouco o problema, mas não consigo descobrir como faça com que ele trate letras latinas maiúsculas e minúsculas como o mesmo caractere enquanto classifica com o en_US locale (com base no que estou vendo no arquivo iso14651_t1_common ele parece mais complicado do que eu esperava). Então como faço esse último passo?
(Eu sei que existem gerenciadores de arquivos que oferecem a opção de ignorar maiúsculas e minúsculas, mas eu prefiro não ter que abandonar um programa só porque ele não tem essa opção (como muitos fazem).)