【问题标题】:Spree/Solidus: format currency to show symbol before price with space "€ 99"Spree/Solidus:格式化货币以在价格前显示符号,并带有空格“€ 99”
【发布时间】:2023-09-17 00:27:02
【问题描述】:

我使用 Rails 4 和 Solidus 1.2 如何将价格格式化为在“€ 99”之类的数字前有一个带有空格的货币符号?

Spree/Solidus 使用 Ruby Money Gem 处理货币,我在 https://github.com/RubyMoney/money/blob/master/lib/money/money/formatting.rb 看到有一个配置选项

Spree::Money.default_formatting_rules[:symbol_before_without_space] = true 

但没有 Spree::Money.default_formatting_rules[:symbol_before_with_space] = true

在我的初始化程序中:

# config/initializers/spree.rb

Money::Currency.register({
  :priority        => 1,
  :iso_code        => "EUR",
  :iso_numeric     => "978",
  :name            => "Euro",
  :symbol          => "€",
  :subunit         => "Cent",
  :subunit_to_unit => 100,
  :separator       => ".",
  :delimiter       => ","
})

我还尝试在我的本地化文件中进行格式化,例如在 de.yml 中:

---
de:
  number:
    currency:
      format: "%u %n"

但价格格式仍然是“104,90 欧元”而不是“104,90 欧元”。

我不想通过字符串插值来格式化货币。是否有我缺少的配置选项?

【问题讨论】:

    标签: ruby-on-rails spree solidus


    【解决方案1】:

    好吧,这很尴尬,但我不得不设置

    Spree::Money.default_formatting_rules[:symbol_before_without_space] = false
    

    得到我想要的格式。

    【讨论】:

      【解决方案2】:

      你需要这样做

      Spree::Money.default_formatting_rules[:symbol_position] = :before
      

      【讨论】:

        最近更新 更多