2010-04-19 31 views
3

根据当前区域设置对字符串数组进行排序的好方法是什么?在Ruby/Rails中使用依赖区域的排序功能

例如,标准Array#sort将“Ä”放在“Z”后面,这在德语中是不正确的。

我本来希望gem I18n提供一个钩子来定义我自己的排序算法或提供排序字符串或对象。在我的想象中,将这个过程或字符串传递给排序函数会使其表现得如此必要。例如,我知道这在Python中是可行的。

谷歌这次没有帮我。你可以吗?

任何意见赞赏!

回答

2

有两种常见的aproaches:

  1. 排序与您的数据库(擎天柱)

    ,或者,如果你绝对需要做的红宝石东西排序前:

  2. Unlocalize特殊字符订购: “Äñðøß”.uncolate =>“Andos”

添加一个uncolate函数的字符串,并使用排序 uncolate可以

class String 
    def uncolate 
    self.tr(SPECIAL_CHARS,SUBSTITUTE_CHARS) 
    end 
end 

和排序:

international_things.sort_by{|i| i.international_attr.uncolate} 

我希望它能帮助

+0

谢谢,这似乎是一个良好的开端! – knuton 2010-04-19 21:39:33

+2

最近,你得到的这个轨道的I18n挖苦开发者: @svenfuchs:assert_equal “阿灵厄”,I18n.backend.transliterate(:FOO, “阿灵厄”)http://bit.ly/aTUx7J HTTP://位。 ly/9YnosR 看看它,你可以节省一些工作:) – Oinak 2010-05-03 11:41:34

+0

直到现在才注意到你的评论。谢谢! – knuton 2010-06-10 13:10:13