我正在尝试将操作放在语言环境中以适应不同的语言。例如,英语中有10亿是1,000,000,000,而西班牙语中有10亿是1,000,000,000,000,所以我希望能够有以下内容:
en:
billion: "You have %{money} billions"
es:
billion: "Tienes %{money/1000.0} billones"
为了能够写:
I18n.t :billion, :money => whatever
适合任何语言。
但是,我似乎无法将操作放在locales的字符串中。
我应该如何做到这一点?也许我的方法是“错误的”哲学“说话?
全部谢谢!
答案 0 :(得分:2)
根据调查,这是解决方案。很抱歉进行了多次修改。
I18n.interpolate("%{money} billion", :money => Proc.new{|x| x[:vals] / 1000}, :vals => 12121)
因此,您可以更改要使用的翻译文件:vals in:en和:money in:es。
en:
billion: "You have %{money} billions"
es:
billion: "Tienes %{money_proc} billones"
I18n.t :billion, {:money => 12121, :money_proc => Proc.new{|x| x[:money]/1000.0}}
答案 1 :(得分:1)
你能否在翻译中将'亿人'改为'mil millones'?
答案 2 :(得分:0)
[edit]单位是用冻结的哈希(ActionView :: Helpers :: DECIMAL_UNITS)修复的,所以除非你之前做过一些调整,否则number_to_human没用。