CocoaChina 11-08
使用各种区域设置在Python中对字符串集合进.
index_new4.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

我想根据用户语言首选项对字符串列表进行排序 . 我有一个多语言的Python webapp, 这样排序字符串的正确方法是什么?

我知道我可以设置语言环境 , 如下所示:

import localelocale.setlocale ( locale.LC_ALL, '' )

但这应该在应用程序启动时完成 ( 并且 doc 说它不是线程安全的! ) , 根据当前用户 ( 请求 ) 设置在每个线程中设置它是否是个好主意?

我希望函数 locale.strcoll ( … ) 与其他参数 – 用于排序的语言 .

最佳答案

我建议使用pyICU – 用于 IBM 丰富的开源ICU国际化库的 Python 绑定 . 你制作一个 Collat??or 对象 , 例如有:

collator = PyICU.Collator.createInstance ( PyICU.Locale.getFrance ( ) )

然后你可以排序 , 例如法语规则的 utf-8 编码字符串列表 , 例如通过使用 thelist.sort ( cmp = collat??or.compare ) .

我遇到的唯一问题是我发现没有好的打包 , 可立即使用的 PyICU 版本以及 MacOSX 的 ICU – 我最终从源代码构建和安装:ICU 自己的源代码 ,3.6, 从here开始 – 有 Windows 的二进制文件和几个那里的 Unix 版本 , 但不适用于 Mac; PyICU 0.8.1 从here开始 .

这些构建 / 安装问题的网络 , 以及 Python 绑定的文档有点少 , 如果你做了大量与 i18n 相关的工作 ,ICU 真的是天赐之物 , 而 PyICU 是一个非常有用的绑定集合!

相关标签

python
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论