Eu tenho um aplicativo onde cada conta de usuário pode definir seu idioma de aplicativo preferido. Eu armazeno essas preferências de idioma como tag de idioma IETF BCP47 (por exemplo, "de", "en-US"). Agora, para consultas desse usuário, quero classificar os resultados com base em sua preferência de idioma.
Imagine eu tendo os dados AAA, TTT, OOO, ÖÖÖ em uma tabela com agrupamento utf8mb4_general_ci.
Se eu quiser que eles sejam classificados para um usuário alemão, posso fazer
SELECT word FROM `words` order by word collate utf8mb4_german2_ci
Que me daria a ordem
AAA, ÖÖÖ, OOO, TTT
Para um usuário islandês, no entanto, usando o agrupamento utf8mb4_icelandic_ci
, eu obteria corretamente
AAA, OOO, TTT, ÖÖÖ
Agora, na minha aplicação eu não salvo utf8mb4_icelandic_ci
ou utf8mb4_german2_ci
para aquele usuário, mas eu salvo is
ou de-DE
.
Existe uma maneira de enviar esta tag de idioma is
ou de-DE
BCP47 diretamente para o MariaDB para especificar o agrupamento em vez do nome do agrupamento? Ou eu teria que ter um mapeamento entre a marca de idioma e o nome da ordenação em meu aplicativo para enviar as informações de ordenação corretas para o usuário?