首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中数值的本地化

Rails中数值的本地化
EN

Stack Overflow用户
提问于 2013-08-08 11:13:27
回答 1查看 2K关注 0票数 6

很抱歉出现了新的帖子,但我的第一篇文章关注的是阿拉伯语/波斯语的数字,但问题似乎更大。

我想知道是否有人做了gem来处理ruby/rails中数字号的本地化。I18n官方语言环境(https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale)似乎没有考虑到这一点。

由帮手做这件事有点复杂。

阿拉伯语很简单:

٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩

波斯语也是:

代码语言:javascript
复制
۰   ١   ۲   ۳   ۴   ۵   ۶   ۷   ۸   ۹   ۱۰

但并非所有语言都与英语(例如中文)的1-1转换相匹配:

代码语言:javascript
复制
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                                           

我们还有其他有类似问题的语言。以前似乎没有人面对这一点,这似乎很奇怪。

你知道在所有地区处理这个号码的最好方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-12 08:41:33

好吧,我想出来了:

代码语言:javascript
复制
  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

其他语言不需要自定义本地化。即。中国人/日本人理解我们的号码,当当地人在网上使用我们的号码时,支持他们的本地号码将是很奇怪的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18124562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档