class ReeI18n::T

def call(key = nil, context = {}, **options)

def call(key = nil, context = {}, **options)
  context.each do |k, _|
    if RESERVED_KEYS.include?(k)
      raise ArgumentError, "translation context contains reserved key :#{k}"
    end
  end
  opts = context.merge(options)
  default_by_locale = opts.delete(:default_by_locale)
  if default_by_locale && !opts[:default]
    opts[:default] = DEFAULT_BY_LOCALE
  end
  opts[:throw] ||= false
  opts[:raise] ||= false
  opts[:locale] ||= nil
  result = I18n.t(key, **opts)
  if result == DEFAULT_BY_LOCALE
    result = call(
      key, context,
      **except(
        options.merge(locale: default_by_locale), [:default_by_locale]
      )
    )
  end
  result
end