Class: I18n::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/i18n/config.rb

Constant Summary collapse

@@enforce_available_locales =

Whether or not to verify if locales are in the list of available locales. Defaults to true.

true

Instance Method Summary collapse

Instance Method Details

#available_localesObject

Returns an array of locales for which translations are available. Unless you explicitely set these through I18n.available_locales= the call will be delegated to the backend.


43
44
45
46
# File 'lib/i18n/config.rb', line 43

def available_locales
  @@available_locales ||= nil
  @@available_locales || backend.available_locales
end

#available_locales=(locales) ⇒ Object

Sets the available locales.


57
58
59
60
61
# File 'lib/i18n/config.rb', line 57

def available_locales=(locales)
  @@available_locales = Array(locales).map { |locale| locale.to_sym }
  @@available_locales = nil if @@available_locales.empty?
  @@available_locales_set = nil
end

#available_locales_initialized?Boolean

Returns true if the available_locales have been initialized

Returns:

  • (Boolean)

64
65
66
# File 'lib/i18n/config.rb', line 64

def available_locales_initialized?
  ( !!defined?(@@available_locales) && !!@@available_locales )
end

#available_locales_setObject

Caches the available locales list as both strings and symbols in a Set, so that we can have faster lookups to do the available locales enforce check.


50
51
52
53
54
# File 'lib/i18n/config.rb', line 50

def available_locales_set #:nodoc:
  @@available_locales_set ||= available_locales.inject(Set.new) do |set, locale|
    set << locale.to_s << locale.to_sym
  end
end

#backendObject

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


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

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

#backend=(backend) ⇒ Object

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


25
26
27
# File 'lib/i18n/config.rb', line 25

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

#clear_available_locales_setObject

Clears the available locales set so it can be recomputed again after I18n gets reloaded.


70
71
72
# File 'lib/i18n/config.rb', line 70

def clear_available_locales_set #:nodoc:
  @@available_locales_set = nil
end

#default_localeObject

Returns the current default locale. Defaults to :'en'


30
31
32
# File 'lib/i18n/config.rb', line 30

def default_locale
  @@default_locale ||= :en
end

#default_locale=(locale) ⇒ Object

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


35
36
37
38
# File 'lib/i18n/config.rb', line 35

def default_locale=(locale)
  I18n.enforce_available_locales!(locale)
  @@default_locale = locale && locale.to_sym
end

#default_separatorObject

Returns the current default scope separator. Defaults to '.'


75
76
77
# File 'lib/i18n/config.rb', line 75

def default_separator
  @@default_separator ||= '.'
end

#default_separator=(separator) ⇒ Object

Sets the current default scope separator.


80
81
82
# File 'lib/i18n/config.rb', line 80

def default_separator=(separator)
  @@default_separator = separator
end

#enforce_available_localesObject


141
142
143
# File 'lib/i18n/config.rb', line 141

def enforce_available_locales
  @@enforce_available_locales
end

#enforce_available_locales=(enforce_available_locales) ⇒ Object


145
146
147
# File 'lib/i18n/config.rb', line 145

def enforce_available_locales=(enforce_available_locales)
  @@enforce_available_locales = enforce_available_locales
end

#exception_handlerObject

Returns the current exception handler. Defaults to an instance of I18n::ExceptionHandler.


86
87
88
# File 'lib/i18n/config.rb', line 86

def exception_handler
  @@exception_handler ||= ExceptionHandler.new
end

#exception_handler=(exception_handler) ⇒ Object

Sets the exception handler.


91
92
93
# File 'lib/i18n/config.rb', line 91

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

#interpolation_patternsObject

Returns the current interpolation patterns. Defaults to I18n::DEFAULT_INTERPOLATION_PATTERNS.


151
152
153
# File 'lib/i18n/config.rb', line 151

def interpolation_patterns
  @@interpolation_patterns ||= I18n::DEFAULT_INTERPOLATION_PATTERNS.dup
end

#interpolation_patterns=(interpolation_patterns) ⇒ Object

Sets the current interpolation patterns. Used to set a interpolation patterns.

E.g. using {} as a placeholder like “{hello}, world!”:

I18n.config.interpolation_patterns << /\{\{(\w+)\}\}/

161
162
163
# File 'lib/i18n/config.rb', line 161

def interpolation_patterns=(interpolation_patterns)
  @@interpolation_patterns = interpolation_patterns
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'

126
127
128
# File 'lib/i18n/config.rb', line 126

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.


132
133
134
135
136
# File 'lib/i18n/config.rb', line 132

def load_path=(load_path)
  @@load_path = load_path
  @@available_locales_set = nil
  backend.reload!
end

#localeObject

The only configuration value that is not global and scoped to thread is :locale. It defaults to the default_locale.


9
10
11
# File 'lib/i18n/config.rb', line 9

def locale
  defined?(@locale) && @locale != nil ? @locale : default_locale
end

#locale=(locale) ⇒ Object

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


14
15
16
17
# File 'lib/i18n/config.rb', line 14

def locale=(locale)
  I18n.enforce_available_locales!(locale)
  @locale = locale && locale.to_sym
end

#missing_interpolation_argument_handlerObject

Returns the current handler for situations when interpolation argument is missing. MissingInterpolationArgument will be raised by default.


97
98
99
100
101
# File 'lib/i18n/config.rb', line 97

def missing_interpolation_argument_handler
  @@missing_interpolation_argument_handler ||= lambda do |missing_key, provided_hash, string|
    raise MissingInterpolationArgument.new(missing_key, provided_hash, string)
  end
end

#missing_interpolation_argument_handler=(exception_handler) ⇒ Object

Sets the missing interpolation argument handler. It can be any object that responds to #call. The arguments that will be passed to #call are the same as for MissingInterpolationArgument initializer. Use Proc.new if you don't care about arity.

Example:

You can supress raising an exception and return string instead:

I18n.config.missing_interpolation_argument_handler = Proc.new do |key|
  "#{key} is missing"
end

114
115
116
# File 'lib/i18n/config.rb', line 114

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