【发布时间】:2019-07-20 13:20:42
【问题描述】:
根据Rails 3.2 API Docs,要为number_to_currency 使用不同的语言环境,我需要执行以下操作:
<%= number_to_currency(1234567890.506, :locale => :fr) %>
我期待以下输出:
# => 1 234 567 890,51 €
即使我在我的应用程序中确实使用了那个确切的东西并且它不断输出以下内容:
$1,234,567,890.51
当我在我的应用程序中检查 available_locales 时,我得到以下信息:
> I18n.available_locales
=> [:en, :de, :es, :fr, :ja, :pl, :"pt-BR", :ru, :sv, :"zh-CN"]
所以它应该工作,但它没有。
我错过了什么?
更新 1
根据@s3tjan 的评论,我对相关的 Rails 问题进行了一些挖掘,这使我找到了我的application.rb,在那里我发现了I18n.enforce_available_locales = false。我将其更改为 true 并重新启动服务器。
当我再次尝试上述操作时,我现在收到此错误:
ActionView::Template::Error (:fr is not a valid locale):
不知道如何解决这个问题。
更新 2
所以我才意识到我的config/locales 中从未有过语言环境文件。我真正想要的是使用英镑作为货币,所以我在config/locales 中添加了一个en-GB.yml 文件,然后我重新启动了我的服务器和控制台。
在我的application.rb 中,我有以下内容:
I18n.enforce_available_locales = true
然后我检查了我的控制台并得到了这个:
[1] pry(main)> I18n.available_locales
=> [:en, :de, :es, :fr, :ja, :pl, :"pt-BR", :ru, :sv, :"zh-CN", :"en-GB"]
[2] pry(main)>
所以:"en-GB" 已成功添加到我的应用的加载路径中。
但是当我在我看来这样做时:
<%= number_to_currency(1234567890.506, :locale => :"en-GB") %>
这是我得到的错误:
:"en-GB" is not a valid locale excluded from capture due to environment or should_capture callback
ActionView::Template::Error (:"en-GB" is not a valid locale):
所以还是不行。
更新 3
我的en-GB.yml 文件直接取自https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en-GB.yml
所以看起来一模一样。但是我仍然遇到同样的错误:
ActionView::Template::Error (:"en-GB" is not a valid locale):
【问题讨论】:
-
它在
Rails 5.2上运行良好可能是您的 Rails 版本的问题。检查问题 #117 github.com/r18n/r18n/issues/117 -
@s3tjan 我检查了它并用我发现的内容更新了我的问题。
-
你
en-GB.yml的内容是什么?
标签: ruby-on-rails internationalization ruby-on-rails-3.2