首页 > 解决方案 > 如何允许用户选择所有货币,但语言有限?

问题描述

我有一个带有约 5 种语言(英语、西班牙语、德语等)的 Rails i18n 应用程序。

用户已经可以在 ~5 种语言之间进行选择,但货币仅限于他的语言。

我想让用户也可以选择那里存在的任何货币符号。

例子:

他们应该能够使用英语,但欧元作为他们的货币符号等。南美的用户可以选择西班牙语作为语言,但选择他需要的任何货币,因为他们不使用欧元。

做这个的最好方式是什么?

目前我们这样做是为了打印货币:

number_to_currency(12345, locale: @company.locale)

我在想我们是否应该将其更改为:

number_to_currency(12345, locale: @company.currency)

我们可以使用这个助手将货币加载到一个选择框中:

def locale_currency
  I18n.available_locales.map do |locale|
    [ I18n.t('number.currency.format.unit', locale: locale), locale.to_s ]
  end
end

但是这个助手只显示符号,我们$多次看到这个符号。最好显示国名,但是翻译文件 中不包含国名: https ://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/da.yml

如果国家/地区名称在文件中,我可以使用 the I18n.t('name')或类似名称来获取它。

我尝试使用Money gem,但是我会失去本地化功能,并且需要替换所有number_to_currency地方。

我在错误的轨道上吗?有一个更好的方法吗?

标签: ruby-on-railsrails-i18n

解决方案


推荐阅读