Module: I18n

Defined in:
lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb,
lib/active_support/vendor/i18n-0.1.3/lib/i18n/exceptions.rb,
lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb

Defined Under Namespace

Modules: Backend Classes: ArgumentError, InvalidLocale, InvalidPluralizationData, MissingInterpolationArgument, MissingTranslationData, ReservedInterpolationKey, UnknownFileType

Constant Summary collapse

@@backend =
nil
@@load_path =
nil
@@default_locale =
:'en'
@@exception_handler =
:default_exception_handler

Class Method Summary collapse

Class Method Details

.available_localesObject

Returns an array of locales for which translations are available



49
50
51
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 49

def available_locales
  backend.available_locales
end

.backendObject

Returns the current backend. Defaults to Backend::Simple.



19
20
21
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 19

def backend
  @@backend ||= Backend::Simple.new
end

.backend=(backend) ⇒ Object

Sets the current backend. Used to set a custom backend.



24
25
26
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 24

def backend=(backend)
  @@backend = backend
end

.default_localeObject

Returns the current default locale. Defaults to :‘en’



29
30
31
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 29

def default_locale
  @@default_locale
end

.default_locale=(locale) ⇒ Object

Sets the current default locale. Used to set a custom default locale.



34
35
36
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 34

def default_locale=(locale)
  @@default_locale = locale
end

.exception_handler=(exception_handler) ⇒ Object

Sets the exception handler.



54
55
56
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 54

def exception_handler=(exception_handler)
  @@exception_handler = exception_handler
end

.load_pathObject

Allow clients to register paths providing translation data sources. The backend defines acceptable sources.

E.g. the provided SimpleBackend accepts a list of paths to translation files which are either named *.rb and contain plain Ruby Hashes or are named *.yml and contain YAML data. So for the SimpleBackend clients may register translation files like this:

I18n.load_path << 'path/to/locale/en.yml'


66
67
68
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 66

def load_path
  @@load_path ||= []
end

.load_path=(load_path) ⇒ Object

Sets the load path instance. Custom implementations are expected to behave like a Ruby Array.



72
73
74
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 72

def load_path=(load_path)
  @@load_path = load_path
end

.localeObject

Returns the current locale. Defaults to I18n.default_locale.



39
40
41
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 39

def locale
  Thread.current[:locale] ||= default_locale
end

.locale=(locale) ⇒ Object

Sets the current locale pseudo-globally, i.e. in the Thread.current hash.



44
45
46
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 44

def locale=(locale)
  Thread.current[:locale] = locale
end

.localize(object, options = {}) ⇒ Object Also known as: l

Localizes certain objects, such as dates and numbers to local formatting.



173
174
175
176
177
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 173

def localize(object, options = {})
  locale = options[:locale] || I18n.locale
  format = options[:format] || :default
  backend.localize(locale, object, format)
end

.reload!Object

Tells the backend to reload translations. Used in situations like the Rails development environment. Backends can implement whatever strategy is useful.



79
80
81
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 79

def reload!
  backend.reload!
end

.translate(key, options = {}) ⇒ Object Also known as: t

Translates, pluralizes and interpolates a given key using a given locale, scope, and default, as well as interpolation values.

LOOKUP

Translation data is organized as a nested hash using the upper-level keys as namespaces. E.g., ActionView ships with the translation: :date => {:formats => {:short => "%b %d"}}.

Translations can be looked up at any level of this hash using the key argument and the scope option. E.g., in this example I18n.t :date returns the whole translations hash {:formats => {:short => "%b %d"}}.

Key can be either a single key or a dot-separated key (both Strings and Symbols work). E.g., the short format can be looked up using both:

I18n.t 'date.formats.short'
I18n.t :'date.formats.short'

Scope can be either a single key, a dot-separated key or an array of keys or dot-separated keys. Keys and scopes can be combined freely. So these examples will all look up the same short date format:

I18n.t 'date.formats.short'
I18n.t 'formats.short', :scope => 'date'
I18n.t 'short', :scope => 'date.formats'
I18n.t 'short', :scope => %w(date formats)

INTERPOLATION

Translations can contain interpolation variables which will be replaced by values passed to #translate as part of the options hash, with the keys matching the interpolation variable names.

E.g., with a translation :foo => "foo {{bar}}" the option value for the key bar will be interpolated into the translation:

I18n.t :foo, :bar => 'baz' # => 'foo baz'

PLURALIZATION

Translation data can contain pluralized translations. Pluralized translations are arrays of singluar/plural versions of translations like ['Foo', 'Foos'].

Note that I18n::Backend::Simple only supports an algorithm for English pluralization rules. Other algorithms can be supported by custom backends.

This returns the singular version of a pluralized translation:

I18n.t :foo, :count => 1 # => 'Foo'

These both return the plural version of a pluralized translation:

I18n.t :foo, :count => 0 # => 'Foos'
I18n.t :foo, :count => 2 # => 'Foos'

The :count option can be used both for pluralization and interpolation. E.g., with the translation :foo => ['{{count}} foo', '{{count}} foos'], count will be interpolated to the pluralized translation:

I18n.t :foo, :count => 1 # => '1 foo'

DEFAULTS

This returns the translation for :foo or default if no translation was found:

I18n.t :foo, :default => 'default'

This returns the translation for :foo or the translation for :bar if no translation for :foo was found:

I18n.t :foo, :default => :bar

Returns the translation for :foo or the translation for :bar or default if no translations for :foo and :bar were found.

I18n.t :foo, :default => [:bar, 'default']

BULK LOOKUP

This returns an array with the translations for :foo and :bar.

I18n.t [:foo, :bar]

Can be used with dot-separated nested keys:

I18n.t [:'baz.foo', :'baz.bar']

Which is the same as using a scope option:

I18n.t [:foo, :bar], :scope => :baz


163
164
165
166
167
168
169
# File 'lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb', line 163

def translate(key, options = {})
  locale = options.delete(:locale) || I18n.locale
  backend.translate(locale, key, options)
rescue I18n::ArgumentError => e
  raise e if options[:raise]
  send(@@exception_handler, e, locale, key, options)
end