module JSONModelI18nMixin

Public Instance Methods

_exceptions() click to toggle source
Calls superclass method
# File lib/aspace_client/jsonmodel_i18n_mixin.rb, line 8
def _exceptions
  exceptions = super

  return exceptions unless JSONModel::init_args[:i18n_source]

  already_translated = exceptions.instance_variable_get(:@translated) || false

  unless already_translated
    [:errors, :warnings].each do |level|
      next unless exceptions[level]
      exceptions[level].clone.each do |path, msgs|
        exceptions[level][path] = msgs.map{|m| translate_exception_message(m)}
      end
    end

    exceptions.instance_variable_set(:@translated, true)
  end

  exceptions
end
t(*args) click to toggle source
# File lib/aspace_client/jsonmodel_i18n_mixin.rb, line 4
def t(*args)
  JSONModel::init_args[:i18n_source].t(*args)
end
translate_exception_message(msg) click to toggle source
# File lib/aspace_client/jsonmodel_i18n_mixin.rb, line 30
def translate_exception_message(msg)
  msg_data = case msg
    when "Can't be empty"
      [:cant_be_empty]
    when "entered value didn't match password"
      [:password_did_not_match]
    when "Group code must be unique within a repository"
      [:group_code_already_in_use]
    when "Property is required but was missing"
      [:missing_required_property]
    when "Property was missing"
      [:missing_property]
    when "Not a valid date", "not a valid date"
      [:not_a_valid_date]
    when "is required unless a begin or end date is given"
      [:is_required_unless_a_begin_or_end_date_is_given]
    when "is required unless an expression or an end date is given"
      [:is_required_unless_an_expression_or_an_end_date_is_given]
    when "That ID is already in use"
      [:id_already_in_use]
    when /^Username '(.+)' is already in use/
      [:username_already_in_use, {:username => $1}]
    when /^Did not match regular expression: (.+)/
      [:did_not_match_regular_expression, {:regexp => $1}]
    when /^Must be at least ([0-9]+) characters/
      [:too_few_characters, {:min_length => $1}]
    when /^Must be ([0-9]+) characters or fewer/
      [:too_many_characters, {:max_length => $1}]
    when /^At least ([0-9]+) item\(s\) is required/
      [:too_few_items, {:min_items => $1}]
    when /^Invalid value '(.*?)'.  Must be one of: (.*)/
      [:invalid_value, {:value => $1, :valid_set => $2}]
    when /^Must be a (.*?) \(you provided a (.*)\)/
      [:wrong_type, {:desired_type => $1, :actual_type => $2}]
    when /^Must be one of: (.*?) \(you provided a (.*)\)/
      [:must_be_one_of, {:allowed_types => $1, :actual_type => $2}]
    when /Username '(.*)' is already in use/
      [:username_already_in_use, {:username => $1}]
    else
      [msg.downcase.gsub(/[\s,':]/, '_')]
             end

  key, vars = *msg_data
  t("validation_errors.#{key.to_s}", vars)
end