Bre*_*den 3 python django internationalization
我正在搜索从GeoNames.com导入的城市名称。一些城市的名称中包含国际字符。例如,“伊斯坦布尔”实际上是数据库中的“伊斯坦布尔”。
人们搜索“伊斯坦布尔”时,伊斯坦布尔不会出现。
有没有一种方法可以向搜索添加过滤器或解码器,使之知道呢?stanbul = Istanbul
当前是:
cities = City.objects.filter(name__icontains=query)
Run Code Online (Sandbox Code Playgroud)
Unidecode将帮助您解决此问题的某种形式。Unidecode会将非ASCII字符转换为ASCII,例如:
>>> from unidecode import unidecode
>>> unidecode(u"?stanbul")
'Istanbul'
Run Code Online (Sandbox Code Playgroud)
您可以通过分解unicode字符并删除组合的变音符号来实现类似的效果。这种技术的问题在于某些字符不可分解。因此,尽管“ö”将分解为“ o”和变音符,“?” (左冲程)将保持不变。Unidecode成功翻译了“?” 到“ L”。
但是Undeicode并不能解决您的所有问题。可以使用不同的名称来了解城市,也可以用不同的名称来书写。例如,在美国,我们称中国首都为“北京”,但我们以前称其为“北京”(瑞典语中仍称其为“北京”),并将其名称翻译unidecode为其他名称:
>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '
Run Code Online (Sandbox Code Playgroud)
最好的解决方案是拥有特定于语言的名称列表,而不要使用城市的实际名称。
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |