Module: I18n::Backend::Base

Includes:
Transliterator
Included in:
Chain::Implementation, KeyValue::Implementation, Simple::Implementation
Defined in:
lib/i18n/backend/base.rb

Constant Summary

Constants included from Transliterator

Transliterator::DEFAULT_REPLACEMENT_CHAR

Instance Method Summary collapse

Methods included from Transliterator

get, #transliterate

Instance Method Details

#available_localesObject

Returns an array of locales for which translations are available ignoring the reserved translation meta data key :i18n.

Raises:

  • (NotImplementedError)


83
84
85
# File 'lib/i18n/backend/base.rb', line 83

def available_locales
  raise NotImplementedError
end

#exists?(locale, key) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/i18n/backend/base.rb', line 57

def exists?(locale, key)
  lookup(locale, key) != nil
end

#load_translations(*filenames) ⇒ Object

Accepts a list of paths to translation files. Loads translations from plain Ruby (*.rb) or YAML files (*.yml). See #load_rb and #load_yml for details.



13
14
15
16
# File 'lib/i18n/backend/base.rb', line 13

def load_translations(*filenames)
  filenames = I18n.load_path if filenames.empty?
  filenames.flatten.each { |filename| load_file(filename) }
end

#localize(locale, object, format = :default, options = {}) ⇒ Object

Acts the same as strftime, but uses a localized version of the format string. Takes a key from the date/time formats translations as a format argument (e.g., :short in :'date.formats').

Raises:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/i18n/backend/base.rb', line 64

def localize(locale, object, format = :default, options = {})
  if object.nil? && options.include?(:default)
    return options[:default]
  end
  raise ArgumentError, "Object must be a Date, DateTime or Time object. #{object.inspect} given." unless object.respond_to?(:strftime)

  if Symbol === format
    key  = format
    type = object.respond_to?(:sec) ? 'time' : 'date'
    options = options.merge(:raise => true, :object => object, :locale => locale)
    format  = I18n.t(:"#{type}.formats.#{key}", options)
  end

  format = translate_localization_format(locale, object, format, options)
  object.strftime(format)
end

#reload!Object



87
88
# File 'lib/i18n/backend/base.rb', line 87

def reload!
end

#store_translations(locale, data, options = {}) ⇒ Object

This method receives a locale, a data hash and options for storing translations. Should be implemented

Raises:

  • (NotImplementedError)


20
21
22
# File 'lib/i18n/backend/base.rb', line 20

def store_translations(locale, data, options = {})
  raise NotImplementedError
end

#translate(locale, key, options = {}) ⇒ Object

Raises:



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/i18n/backend/base.rb', line 24

def translate(locale, key, options = {})
  raise InvalidLocale.new(locale) unless locale
  entry = key && lookup(locale, key, options[:scope], options)

  if entry.nil? && options.key?(:default)
    entry = default(locale, key, options[:default], options)
  else
    entry = resolve(locale, key, entry, options)
  end

  if entry.nil?
    if (options.key?(:default) && !options[:default].nil?) || !options.key?(:default)
      throw(:exception, I18n::MissingTranslation.new(locale, key, options))
    end
  end

  entry = entry.dup if entry.is_a?(String)

  count = options[:count]
  entry = pluralize(locale, entry, count) if count

  deep_interpolation = options[:deep_interpolation]
  values = options.except(*RESERVED_KEYS)
  if values
    entry = if deep_interpolation
      deep_interpolate(locale, entry, values)
    else
      interpolate(locale, entry, values)
    end
  end
  entry
end