diff --git a/lib/money/money/formatting_rules.rb b/lib/money/money/formatting_rules.rb index 68c917800c..cb1fdc004a 100644 --- a/lib/money/money/formatting_rules.rb +++ b/lib/money/money/formatting_rules.rb @@ -68,6 +68,11 @@ def translate_formatting_rules(rules) rescue I18n::MissingTranslationData # Do nothing end + begin + rules[:format] ||= I18n.t :format, scope: "number.currency.format", raise: true + rescue I18n::MissingTranslationData + # Do nothing + end rules end diff --git a/spec/money/formatting_rules_spec.rb b/spec/money/formatting_rules_spec.rb index 17f4a365c5..2d4c724f98 100644 --- a/spec/money/formatting_rules_spec.rb +++ b/spec/money/formatting_rules_spec.rb @@ -32,4 +32,32 @@ Money::FormattingRules.new(Money::Currency.new('USD'), symbol_position: :after) end end + + context "when translate is false" do + it "ignores locale's format" do + I18n.backend.store_translations(:fr, number: { + currency: { format: { format: "%n %u" } } + }) + # Have the currency's default symbol position be the opposite of the locale's format + allow_any_instance_of(Money::Currency).to receive(:symbol_first).and_return(true) + + rules = I18n.with_locale(:fr) {Money::FormattingRules.new(Money::Currency.new('EUR'), translate: false)} + + expect(rules[:format]).to eq("%u%n") + end + end + + context "when translate is true" do + it "uses locale's format by default" do + I18n.backend.store_translations(:fr, number: { + currency: { format: { format: "%n %u" } } + }) + # Have the currency's default symbol position be the opposite of the locale's format + allow_any_instance_of(Money::Currency).to receive(:symbol_first).and_return(true) + + rules = I18n.with_locale(:fr) {Money::FormattingRules.new(Money::Currency.new('EUR'), translate: true)} + + expect(rules[:format]).to eq("%n %u") + end + end end