ruby-on-rails - Rails 中数字的本地化

标签 ruby-on-rails ruby localization internationalization numbers

[对于新帖子感到抱歉,但我的第一个帖子专注于阿拉伯/波斯数字,但似乎问题更大。]

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

helper 做起来有点复杂。

阿拉伯语很简单:

٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٩

波斯语也是:

۰   ١   ۲   ۳   ۴   ۵   ۶   ۷   ۸   ۹   ۱۰

但不是所有语言都与英文匹配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。中国人/日本人了解我们的号码,支持他们的本地号码会很奇怪,因为本地人在网上使用我们的号码。

关于ruby-on-rails - Rails 中数字的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124562/

相关文章:

ruby-on-rails - 启动同一作业的多个延迟作业进程

ruby - 编写正则表达式作为 gsub 的参数!方法——难倒?

ios - 我如何知道在哪些国家/地区可以通过 App Store 获取我的应用程序?

php - 如何在 PHP 中获取字符串中的字符数?

visual-studio-2008 - 如何更改MSBuild错误消息语言?

ruby-on-rails - rails : Render view content in post-processor (model/helper issues)

ruby-on-rails - 使用Devise时如何获取用户上次活跃时间?

ruby-on-rails - 我如何在 Ruby 中找到指数的值?

ruby-on-rails - ActionMailer 在开发中不发送邮件

ruby - 使用 Ruby 添加和信任证书到默认 OS X 钥匙串(keychain)