Module: I18n
- Defined in:
- lib/active_support/vendor/i18n-0.3.7/i18n/backend/fast.rb,
lib/active_support/vendor.rb,
lib/active_support/vendor/i18n-0.3.7/i18n.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/locale.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/gettext.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/helpers.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/version.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/exceptions.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/base.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/cldr.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/chain.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/links.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/simple.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/cascade.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/gettext.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/helpers.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/helpers/gettext.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/metadata.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/locale/fallbacks.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/fallbacks.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag/simple.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag/parents.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag/rfc4646.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/pluralization.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record/missing.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/interpolation_compiler.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record/store_procs.rb,
lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record/translation.rb
Overview
The InterpolationCompiler module contains optimizations that can tremendously speed up the interpolation process on the Simple backend.
It works by defining a pre-compiled method on stored translation Strings that already bring all the knowledge about contained interpolation variables etc. so that the actual recurring interpolation will be very fast.
To enable pre-compiled interpolations you can simply include the InterpolationCompiler module to the Simple backend:
I18n::Backend::Simple.send(:include, I18n::Backend::InterpolationCompiler)
Defined Under Namespace
Modules: Backend, Gettext, Helpers, Locale Classes: ArgumentError, Config, InvalidLocale, InvalidPluralizationData, MissingInterpolationArgument, MissingTranslationData, ReservedInterpolationKey, UnknownFileType
Constant Summary collapse
- VERSION =
"0.3.7"
- @@cache_store =
nil
- @@cache_namespace =
nil
- @@fallbacks =
nil
Class Method Summary collapse
- .cache_namespace ⇒ Object
- .cache_namespace=(namespace) ⇒ Object
- .cache_store ⇒ Object
- .cache_store=(store) ⇒ Object
-
.config ⇒ Object
Gets I18n configuration object.
-
.config=(value) ⇒ Object
Sets I18n configuration object.
-
.fallbacks ⇒ Object
Returns the current fallbacks implementation.
-
.fallbacks=(fallbacks) ⇒ Object
Sets the current fallbacks implementation.
-
.localize(object, options = {}) ⇒ Object
(also: l)
Localizes certain objects, such as dates and numbers to local formatting.
-
.normalize_keys(locale, key, scope, separator = nil) ⇒ Object
Merges the given locale, key and scope into a single array of keys.
- .perform_caching? ⇒ Boolean
-
.reload! ⇒ Object
Tells the backend to reload translations.
-
.translate(*args) ⇒ Object
(also: t)
Translates, pluralizes and interpolates a given key using a given locale, scope, and default, as well as interpolation values.
- .translate!(key, options = {}) ⇒ Object (also: t!)
Class Method Details
.cache_namespace ⇒ Object
34 35 36 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb', line 34 def cache_namespace @@cache_namespace end |
.cache_namespace=(namespace) ⇒ Object
38 39 40 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb', line 38 def cache_namespace=(namespace) @@cache_namespace = namespace end |
.cache_store ⇒ Object
26 27 28 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb', line 26 def cache_store @@cache_store end |
.cache_store=(store) ⇒ Object
30 31 32 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb', line 30 def cache_store=(store) @@cache_store = store end |
.config ⇒ Object
Gets I18n configuration object.
104 105 106 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 104 def config Thread.current[:i18n_config] ||= I18n::Config.new end |
.config=(value) ⇒ Object
Sets I18n configuration object.
109 110 111 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 109 def config=(value) Thread.current[:i18n_config] = value end |
.fallbacks ⇒ Object
Returns the current fallbacks implementation. Defaults to I18n::Locale::Fallbacks
.
17 18 19 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/fallbacks.rb', line 17 def fallbacks @@fallbacks ||= I18n::Locale::Fallbacks.new end |
.fallbacks=(fallbacks) ⇒ Object
Sets the current fallbacks implementation. Use this to set a different fallbacks implementation.
22 23 24 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/fallbacks.rb', line 22 def fallbacks=(fallbacks) @@fallbacks = fallbacks end |
.localize(object, options = {}) ⇒ Object Also known as: l
Localizes certain objects, such as dates and numbers to local formatting.
248 249 250 251 252 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 248 def localize(object, = {}) locale = .delete(:locale) || config.locale format = .delete(:format) || :default config.backend.localize(locale, object, format, ) end |
.normalize_keys(locale, key, scope, separator = nil) ⇒ Object
Merges the given locale, key and scope into a single array of keys. Splits keys that contain dots into multiple keys. Makes sure all keys are Symbols.
258 259 260 261 262 263 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 258 def normalize_keys(locale, key, scope, separator = nil) separator ||= I18n.default_separator normalize_key(locale, separator) + normalize_key(scope, separator) + normalize_key(key, separator) end |
.perform_caching? ⇒ Boolean
42 43 44 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb', line 42 def perform_caching? !cache_store.nil? end |
.reload! ⇒ Object
Tells the backend to reload translations. Used in situations like the Rails development environment. Backends can implement whatever strategy is useful.
130 131 132 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 130 def reload! config.backend.reload! end |
.translate(*args) ⇒ 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
LAMBDAS
Both translations and defaults can be given as Ruby lambdas. Lambdas will be called and passed the key and options.
E.g. assuming the key :salutation
resolves to:
lambda { |key, options| options[:gender] == 'm' ? "Mr. {{options[:name]}}" : "Mrs. {{options[:name]}}" }
Then <tt>I18n.t(:salutation, :gender => ‘w’, :name => ‘Smith’) will result in “Mrs. Smith”.
It is recommended to use/implement lambdas in an “idempotent” way. E.g. when a cache layer is put in front of I18n.translate it will generate a cache key from the argument values passed to #translate. Therefor your lambdas should always return the same translations/values per unique combination of argument values.
230 231 232 233 234 235 236 237 238 239 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 230 def translate(*args) = args.pop if args.last.is_a?(Hash) key = args.shift locale = && .delete(:locale) || config.locale raises = && .delete(:raise) config.backend.translate(locale, key, || {}) rescue I18n::ArgumentError => exception raise exception if raises handle_exception(exception, locale, key, ) end |
.translate!(key, options = {}) ⇒ Object Also known as: t!
242 243 244 |
# File 'lib/active_support/vendor/i18n-0.3.7/i18n.rb', line 242 def translate!(key, = {}) translate(key, .merge( :raise => true )) end |