私のアプリケーションでは、単一のリストに異なるアルファベット/言語で構成される文字列が含まれている場合があります。これらをソートするための正しい方法についての情報や、ICU がこの機能をサポートしていることを示す情報が見つからないようです。
例のリスト:
- アップル
- яблоко
- μήλο
- 赤ちゃん
- βρέφος
- レーベンク
私のアプリケーションでは、単一のリストに異なるアルファベット/言語で構成される文字列が含まれている場合があります。これらをソートするための正しい方法についての情報や、ICU がこの機能をサポートしていることを示す情報が見つからないようです。
例のリスト:
上記のすべての注意事項を踏まえて、ここに「標準のユニバーサル多言語ソート」の 1 つがあります。それは、コードポイント順序ではないUnicode 照合アルゴリズム(UCA) です。このページをざっと見たところ、ICU は UCA とローカル プリファレンスの混合を処理しているように見えます。
@Zacで述べたように、ユニバーサルソートはありません。コード ポイントの並べ替えは一貫していますが、ユーザーが期待するものではない場合があります。
そのため、ユーザーが選択したロケールに適した並べ替え順序を使用する必要があります。その並べ替え順序で定義されていないコード ポイントはすべてグループ化されます。
「ターゲット」言語に (すべて 1 つのスクリプトで) 音訳してから並べ替えることができます。しかし、言語には、並べ替えに関する相反する規則があります。