我有一个多语言的电子商务网站。
我正在使用I18n API处理多语言翻译;像这样:
def set_locale
I18n.locale = session[:locale]
end
这对于静态文本非常有用,所以我可以使用不同的词典来分隔文本。
然而,这是一个电子商务;所以需要价格变量。
我正在尝试使用墨西哥比索和美元
价格存储在数据库中的MXN中。
我在数据库中也有一个选项,其中包含mxn_to_usd值。
所以1美元= 18 MXN。
现在,要显示价格;我这样做:
number_to_currency(disc.price, :unit => "$")
但这仅适用于一种货币。
我尝试过的是重写number_to_currency方法;所以当I18n.locale是" EN"它将MXN(存储在DB中的那个)转换为美元。
但还没有成功。
有什么想法吗?
答案 0 :(得分:2)
您正在寻找的是使用汇率,我建议您使用money
gem https://github.com/RubyMoney/money,然后您可以加载以下汇率:
Money.add_rate("USD", "CAD", 1.24515) Money.add_rate("CAD", "USD", 0.803115) Money.us_dollar(100).exchange_to("CAD") # => Money.new(124, "CAD") Money.ca_dollar(100).exchange_to("USD") # => Money.new(80, "USD")
答案 1 :(得分:1)
您可以使用超轻量级concurrency gem,它使用以下方法为您提供基本的转换功能:
Concurrency.convert(100, "USD", "INR") # would convert 100 dollars to Indian Rupees
Concurrency.conversion_rate("USD", "INR") # would convert 1 USD to INR