2016-07-26 181 views
2

我有一個多語言的電子商務網站。Rails中的貨幣轉換

我正在使用I18n API處理多語言翻譯;像這樣:

def set_locale 
    I18n.locale = session[:locale] 
end 

這對靜態文本非常有用,所以我可以有不同的字典來分隔文本。

如何,這是一個電子商務;所以需要價格變量。

我試圖用墨西哥比索和美元

價格是在蓄能MXN數據庫。

我在數據庫中也有一個選項和mxn_to_usd值。

所以1 USD = 18 MXN。

現在,顯示價格;我這樣做:

number_to_currency(disc.price, :unit => "$") 

但是,這隻適用於一種貨幣。

我試過的是重寫number_to_currency方法;所以當I18n.locale爲「EN」時,它將MXN(DB中存儲的那個)轉換爲美元。

但還沒有成功。

任何想法?

回答

2

什麼你要找的是使用的匯率,我推薦你使用money寶石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") 
0

您可以使用超輕量級concurrency寶石,它提供給你基本的轉換功能使用類似的方法:

Concurrency.convert(100, "USD", "INR") # would convert 100 dollars to Indian Rupees 
Concurrency.conversion_rate("USD", "INR") # would convert 1 USD to INR