Module: FastGettext::Storage
- Included in:
- FastGettext
- Defined in:
- lib/fast_gettext/storage.rb
Overview
Responsibility:
- store data threadsave
- provide error messages when repositories are unconfigured
- accept/reject locales that are set by the user
Defined Under Namespace
Classes: NoTextDomainConfigured
Constant Summary
collapse
- @@translation_repositories =
global, since re-parsing whole folders takes too much time…
{}
- @@default_locale =
nil
Instance Method Summary
collapse
Instance Method Details
#available_locales ⇒ Object
28
29
30
31
32
|
# File 'lib/fast_gettext/storage.rb', line 28
def available_locales
locales = Thread.current[:fast_gettext_available_locales] || default_available_locales
return unless locales
locales.map{|s|s.to_s}
end
|
#best_locale_in(locales) ⇒ Object
Opera: de-DE,de;q=0.9,en;q=0.8 Firefox de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 IE6/7 de nil if nothing matches
130
131
132
133
134
135
136
137
|
# File 'lib/fast_gettext/storage.rb', line 130
def best_locale_in(locales)
formatted_sorted_locales(locales).each do |candidate|
return candidate if not available_locales
return candidate if available_locales.include?(candidate)
return candidate[0..1] if available_locales.include?(candidate[0..1]) end
return nilend
|
#cache ⇒ Object
63
64
65
|
# File 'lib/fast_gettext/storage.rb', line 63
def cache
Thread.current[:fast_gettext_cache] ||= cache_class.new
end
|
#cached_find(key) ⇒ Object
86
87
88
|
# File 'lib/fast_gettext/storage.rb', line 86
def cached_find(key)
cache.fetch(key) { current_repository[key] }
end
|
#cached_plural_find(*keys) ⇒ Object
90
91
92
93
|
# File 'lib/fast_gettext/storage.rb', line 90
def cached_plural_find(*keys)
key = '||||' + keys * '||||'
cache.fetch(key) { current_repository.plural(*keys) }
end
|
#current_repository ⇒ Object
78
79
80
|
# File 'lib/fast_gettext/storage.rb', line 78
def current_repository
translation_repositories[text_domain] || raise(NoTextDomainConfigured)
end
|
#default_locale ⇒ Object
122
123
124
|
# File 'lib/fast_gettext/storage.rb', line 122
def default_locale
@@default_locale
end
|
#default_locale=(new_locale) ⇒ Object
117
118
119
120
|
# File 'lib/fast_gettext/storage.rb', line 117
def default_locale=(new_locale)
@@default_locale = best_locale_in(new_locale)
switch_cache
end
|
#expire_cache_for(key) ⇒ Object
95
96
97
|
# File 'lib/fast_gettext/storage.rb', line 95
def expire_cache_for(key)
cache.delete(key)
end
|
#key_exist?(key) ⇒ Boolean
82
83
84
|
# File 'lib/fast_gettext/storage.rb', line 82
def key_exist?(key)
!!(cached_find key)
end
|
#locale ⇒ Object
99
100
101
|
# File 'lib/fast_gettext/storage.rb', line 99
def locale
_locale || ( default_locale || (available_locales||[]).first || 'en' )
end
|
#locale=(new_locale) ⇒ Object
103
104
105
|
# File 'lib/fast_gettext/storage.rb', line 103
def locale=(new_locale)
set_locale(new_locale)
end
|
#pluralisation_rule ⇒ Object
if overwritten by user( FastGettext.pluralisation_rule = xxx) use it, otherwise fall back to repo or to default lambda
59
60
61
|
# File 'lib/fast_gettext/storage.rb', line 59
def pluralisation_rule
Thread.current[:fast_gettext_pluralisation_rule] || current_repository.pluralisation_rule || lambda{|i| i!=1}
end
|
#reload! ⇒ Object
67
68
69
70
|
# File 'lib/fast_gettext/storage.rb', line 67
def reload!
cache.reload!
translation_repositories.values.each(&:reload)
end
|
#set_locale(new_locale) ⇒ Object
for chaining: puts set_locale(‘xx’) == ‘xx’ ? ‘applied’ : ‘rejected’ returns the current locale, not the one that was supplied like locale=(), whoes behavior cannot be changed
110
111
112
113
114
|
# File 'lib/fast_gettext/storage.rb', line 110
def set_locale(new_locale)
new_locale = best_locale_in(new_locale)
self._locale = new_locale
locale
end
|
#silence_errors ⇒ Object
turn off translation if none was defined to disable all resulting errors
150
151
152
153
|
# File 'lib/fast_gettext/storage.rb', line 150
def silence_errors
require 'fast_gettext/translation_repository/base'
translation_repositories[text_domain] ||= TranslationRepository::Base.new('x', :path => 'locale')
end
|
#text_domain ⇒ Object
53
54
55
|
# File 'lib/fast_gettext/storage.rb', line 53
def text_domain
Thread.current[:fast_gettext_text_domain] || default_text_domain
end
|
#translation_repositories ⇒ Object
74
75
76
|
# File 'lib/fast_gettext/storage.rb', line 74
def translation_repositories
@@translation_repositories
end
|
#with_locale(temp_locale) ⇒ Object
temporarily switch locale for a block FastGettext.with_locale ‘xx’ { _(‘cars’) }
141
142
143
144
145
146
147
|
# File 'lib/fast_gettext/storage.rb', line 141
def with_locale(temp_locale)
current_locale = locale
set_locale temp_locale
yield
ensure
set_locale current_locale
end
|