【问题标题】:Localization of number from french locale to english locale not working in rails从法语语言环境到英语语言环境的数字本地化在 Rails 中不起作用
【发布时间】:2016-01-12 09:25:41
【问题描述】:

据我们所知,与英语相比,法语数字使用“,”作为小数分隔符。

例如:英语:10.25% 是 法语:10,25%

我能够成功地将英文数字翻译成法文:

number_with_precision(121.45, locale: :fr)
#=> 121,45

但我无法将法语数字翻译成英语:

number = number_with_precision(121.45, locale: :fr)
number #=> 121,45
number = number_with_precision(number, locale: :en)
number #=> 121,45

该号码仍为法语区域设置。

这是我的 en.yml:

en:
  number:
    format:
      delimiter: ! ','
      separator: '.'
      significant: false
      strip_insignificant_zeros: false

这是我的 fr.yml:

fr:
  number:
    format:
      delimiter: ! ','
      separator: ','
      significant: false
      strip_insignificant_zeros: false

我的翻译文件中是否存在导致此问题的错误?

【问题讨论】:

    标签: ruby-on-rails ruby localization


    【解决方案1】:

    您所认为的“英语到法语”并不是“来自英语”。 121.45 是一个 Ruby 数字文字,既不是英语也不是法语(尽管文字本身使用英文表示法中的小数点,尽管它使用下划线作为分隔符,不像英语使用逗号)。

    在您所谓的“法语到英语”中,您传递的是法语格式的字符串。这就是为什么它不起作用。 number_with_precision 应该如何知道传递的字符串是用法语表示法编写的?

    【讨论】:

    • 我明白你在说什么。在这种情况下应该如何处理?如果我得到法语的数字字符串,是否有内置的 rails 方法可以将其转换为英文格式?
    • 我不确定你是如何在 Rails 中做到这一点的,但 twitter-cldr gem 很适合。
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多