Module: I18n
- Defined in:
- lib/vendor/i18n/lib/i18n.rb,
lib/russian/backend/advanced.rb,
lib/vendor/i18n/lib/i18n/exceptions.rb,
lib/vendor/i18n/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
-
.available_locales ⇒ Object
Returns an array of locales for which translations are available.
-
.backend ⇒ Object
Returns the current backend.
-
.backend=(backend) ⇒ Object
Sets the current backend.
-
.default_locale ⇒ Object
Returns the current default locale.
-
.default_locale=(locale) ⇒ Object
Sets the current default locale.
-
.exception_handler=(exception_handler) ⇒ Object
Sets the exception handler.
-
.load_path ⇒ Object
Allow clients to register paths providing translation data sources.
-
.load_path=(load_path) ⇒ Object
Sets the load path instance.
-
.locale ⇒ Object
Returns the current locale.
-
.locale=(locale) ⇒ Object
Sets the current locale pseudo-globally, i.e.
-
.localize(object, options = {}) ⇒ Object
(also: l)
Localizes certain objects, such as dates and numbers to local formatting.
-
.reload! ⇒ Object
Tells the backend to reload translations.
-
.translate(key, options = {}) ⇒ Object
(also: t)
Translates, pluralizes and interpolates a given key using a given locale, scope, and default, as well as interpolation values.
Class Method Details
.available_locales ⇒ Object
Returns an array of locales for which translations are available
49 50 51 |
# File 'lib/vendor/i18n/lib/i18n.rb', line 49 def available_locales backend.available_locales end |
.backend ⇒ Object
Returns the current backend. Defaults to Backend::Simple
.
19 20 21 |
# File 'lib/vendor/i18n/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/vendor/i18n/lib/i18n.rb', line 24 def backend=(backend) @@backend = backend end |
.default_locale ⇒ Object
Returns the current default locale. Defaults to :‘en’
29 30 31 |
# File 'lib/vendor/i18n/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/vendor/i18n/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/vendor/i18n/lib/i18n.rb', line 54 def exception_handler=(exception_handler) @@exception_handler = exception_handler end |
.load_path ⇒ Object
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/vendor/i18n/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/vendor/i18n/lib/i18n.rb', line 72 def load_path=(load_path) @@load_path = load_path end |
.locale ⇒ Object
Returns the current locale. Defaults to I18n.default_locale.
39 40 41 |
# File 'lib/vendor/i18n/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/vendor/i18n/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/vendor/i18n/lib/i18n.rb', line 173 def localize(object, = {}) locale = [:locale] || I18n.locale format = [: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/vendor/i18n/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/vendor/i18n/lib/i18n.rb', line 163 def translate(key, = {}) locale = .delete(:locale) || I18n.locale backend.translate(locale, key, ) rescue I18n::ArgumentError => e raise e if [:raise] send(@@exception_handler, e, locale, key, ) end |