![]() |
1
5
有了以上所有的警告,这里有一个“标准通用多语言排序”:即 unicode collation algorithm (UCA),这不是码点顺序。从粗略的一瞥 this page ICU似乎处理UCA和本地偏好的混合。 |
![]() |
2
5
没有明智的方法来做好这件事。所有语言都没有通用的分类法,即使是在同一个字母表中。不同的语言(基本上是文化)对单词的排序方式提出了不同的排序规则。 我认为,唯一做到这一点的方法是使用普通的旧代码点排序(例如在爪哇中,String。 根据数据所代表的内容,您可以想出一些启发式方法。您可以根据对字母表和语言的猜测对字符串进行分组,然后对每个组使用特定于区域设置的排序。但是你必须用一种很难的方式(自己编代码),我想,因为你会根据术语的不同猜出不同的答案(例如,mar是英语动词还是西班牙语名词?)可以想象,在不可预测的“错误”方面,您最终会得到比简单的Unicode数字排序更糟糕的结果。 与其他任何事情一样,这取决于您能负担多少投入到解决方案中,以及您需要什么样的性能。 这个建议并不是您要寻找的答案:如果在最初存储字符串时有任何方法来标识区域设置,您应该这样做,并将其记录为字符串元数据的一部分。那你就不会有这个问题了。 |
![]() |
3
2
正如@zac所提到的,没有通用类型。代码点排序将是一致的,但可能不是用户期望的。 因此,您可能应该使用用户所选区域设置的首选排序顺序。未按该排序顺序定义的任何代码点都将分组在一起。 |
![]() |
4
0
您可以将其翻译成“目标”语言(全部在一个脚本中),然后进行排序。但是语言的排序规则有冲突。 |
![]() |
devBem · 反应来自<FormattedMessage> 6 年前 |
![]() |
beechy · 两级国际化;资源绑定 6 年前 |
![]() |
lpt · 外语中的词云或可视化 6 年前 |
![]() |
SeaFuzz · 如何将国际化对象传递给Flutter中的子小部件 6 年前 |
![]() |
lio · 具有三个表和一个动态列的Mysql查询(i18n) 6 年前 |