[对新帖子感到抱歉,但我的第一个帖子关注的是阿拉伯/波斯数字,但问题似乎更大。]
我想知道是否有人做了一个 gem 来处理 ruby/rails 中数字的本地化。 I18n 官方语言环境 (https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale)似乎没有照顾到这一点。
对于助手来说,这有点复杂。
阿拉伯语很简单:
٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩
还有波斯语:
۰ ١ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰
但所有语言都不能与英语进行1-1转换,例如中文:
0: 〇 (零) líng
1: 一 (壹) yī
2: 二 (Simplified:贰;Traditional:貳) èr
3: 三 (Simplified:叁;Traditional:叄、參) sān
4: 四 (肆) sì
5: 五 (伍) wǔ
6: 六 (Simplified:陆;Traditional:陸) liù
7: 七 (柒) qī
8: 八 (捌) bā
9: 九 (玖) jiǔ
10: 十 (拾) shí
100: 百 (佰) bǎi
1000: 千 (仟) qiān
10,000: Simplified:万;Traditional萬 wàn
100,000,000: Simplified:亿;Traditional億 yì
1,000,000,000,000: 兆 zhào
我们还有其他语言也有类似的问题。奇怪的是,以前似乎没有人面对过这个问题。
您知道在所有区域设置中处理号码的最佳方法吗?
好吧,我想出了:
def number to_convert, locale, text = nil,
to_convert = to_convert.to_i.to_s
case locale
when 'ar'
to_convert = to_convert.unpack('U*').map{ |e| e + 1584 }.pack('U*')
text ? to_convert + ' ' + text : to_convert
when 'fa'
to_convert = to_convert.unpack('U*').map{ |e| e + 1728 }.pack('U*')
text ? to_convert + ' ' + text : to_convert
when 'hi'
to_convert = to_convert.unpack('U*').map{ |e| e + 2358 }.pack('U*')
text ? to_convert + ' ' + text : to_convert
else
text ? to_convert + ' ' + text : to_convert
end
end
其他语言不需要自定义本地化。 IE。中国/日本人了解我们的号码,并且支持他们的本地号码会很奇怪,因为当地人在网络上使用我们的号码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)