class Pseudolocalization::I18n::Backend

Attributes

ignores[RW]
original_backend[R]

Public Class Methods

new(original_backend) { |self| ... } click to toggle source
# File lib/pseudolocalization.rb, line 10
def initialize(original_backend)
  @original_backend = original_backend
  @ignores = []
  yield self if block_given?
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/pseudolocalization.rb, line 16
def method_missing(name, *args, &block)
  if respond_to_missing?(name)
    original_backend.public_send(name, *args, &block)
  else
    super
  end
end
respond_to_missing?(name, include_private = false) click to toggle source
Calls superclass method
# File lib/pseudolocalization.rb, line 24
def respond_to_missing?(name, include_private = false)
  original_backend.respond_to?(name) || super
end
translate(locale, key, options) click to toggle source
# File lib/pseudolocalization.rb, line 28
def translate(locale, key, options)
  return original_backend.translate(locale, key, options) if key_ignored?(key)

  ::Pseudolocalization::I18n::Pseudolocalizer.pseudolocalize(original_backend.translate(locale, key, options))
end

Private Instance Methods

key_ignored?(key) click to toggle source
# File lib/pseudolocalization.rb, line 36
def key_ignored?(key)
  return false unless ignores

  ignores.any? do |ignore|
    case ignore
    when Regexp
      key.to_s.match(ignore)
    when String
      File.fnmatch(ignore, key.to_s)
    else
      Rails.logger.tagged('Pseudolocalization I18n').error('Ignore type unsupported. Expects an array of (mixed) Regexp or Strings.')
      false
    end
  end
end