lib/money/locale_backend/i18n.rb



require 'money/locale_backend/base'

class Money
  module LocaleBackend
    class I18n < Base
      KEY_MAP = {
        thousands_separator: :delimiter,
        decimal_mark: :separator,
        symbol: :unit
      }.freeze

      def initialize
        raise NotSupported, 'I18n not found' unless defined?(::I18n)
      end

      def lookup(key, _)
        i18n_key = KEY_MAP[key]

        ::I18n.t i18n_key, scope: 'number.currency.format', raise: true
      rescue ::I18n::MissingTranslationData
        ::I18n.t i18n_key, scope: 'number.format', default: nil
      end
    end
  end
end