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
- @@default_available_locales =
cattr_accessor :default_available_locales
nil
- @@default_text_domain =
cattr_accessor :default_text_domain
nil
- @@translation_repositories =
global, since re-parsing whole folders takes too much time…
{}
- @@caches =
used to speedup simple translations, does not work for pluralisation caches[locale]=translation
{}
- @@default_locale =
nil
Instance Method Summary
collapse
Instance Method Details
#available_locales ⇒ Object
27
28
29
30
31
|
# File 'lib/fast_gettext/storage.rb', line 27
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
146
147
148
149
150
151
152
153
|
# File 'lib/fast_gettext/storage.rb', line 146
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
|
#cached_find(key) ⇒ Object
96
97
98
99
100
101
102
103
|
# File 'lib/fast_gettext/storage.rb', line 96
def cached_find(key)
translation = current_cache[key]
if translation.nil? current_cache[key] = current_repository[key] || false
else
translation
end
end
|
#cached_plural_find(*keys) ⇒ Object
105
106
107
108
109
110
111
112
113
|
# File 'lib/fast_gettext/storage.rb', line 105
def cached_plural_find(*keys)
key = '||||' + keys * '||||'
translation = current_cache[key]
if translation.nil? current_cache[key] = current_repository.plural(*keys) || false
else
translation
end
end
|
#caches ⇒ Object
84
85
86
|
# File 'lib/fast_gettext/storage.rb', line 84
def caches
@@caches
end
|
#current_cache ⇒ Object
67
68
69
|
# File 'lib/fast_gettext/storage.rb', line 67
def current_cache
Thread.current[:fast_gettext_current_cache] || {}
end
|
#current_cache=(cache) ⇒ Object
71
72
73
|
# File 'lib/fast_gettext/storage.rb', line 71
def current_cache=(cache)
Thread.current[:fast_gettext_current_cache] = cache
end
|
#current_repository ⇒ Object
88
89
90
|
# File 'lib/fast_gettext/storage.rb', line 88
def current_repository
translation_repositories[text_domain] || raise(NoTextDomainConfigured)
end
|
#default_available_locales ⇒ Object
40
41
42
|
# File 'lib/fast_gettext/storage.rb', line 40
def default_available_locales
@@default_available_locales
end
|
#default_available_locales=(avail_locales) ⇒ Object
35
36
37
38
|
# File 'lib/fast_gettext/storage.rb', line 35
def default_available_locales=(avail_locales)
@@default_available_locales = avail_locales
update_current_cache
end
|
#default_locale ⇒ Object
138
139
140
|
# File 'lib/fast_gettext/storage.rb', line 138
def default_locale
@@default_locale
end
|
#default_locale=(new_locale) ⇒ Object
133
134
135
136
|
# File 'lib/fast_gettext/storage.rb', line 133
def default_locale=(new_locale)
@@default_locale = best_locale_in(new_locale)
update_current_cache
end
|
#default_text_domain ⇒ Object
56
57
58
|
# File 'lib/fast_gettext/storage.rb', line 56
def default_text_domain
@@default_text_domain
end
|
#default_text_domain=(domain) ⇒ Object
51
52
53
54
|
# File 'lib/fast_gettext/storage.rb', line 51
def default_text_domain=(domain)
@@default_text_domain = domain
update_current_cache
end
|
#key_exist?(key) ⇒ Boolean
92
93
94
|
# File 'lib/fast_gettext/storage.rb', line 92
def key_exist?(key)
!!(cached_find key)
end
|
#locale ⇒ Object
115
116
117
|
# File 'lib/fast_gettext/storage.rb', line 115
def locale
_locale || ( default_locale || (available_locales||[]).first || 'en' )
end
|
#locale=(new_locale) ⇒ Object
119
120
121
122
|
# File 'lib/fast_gettext/storage.rb', line 119
def locale=(new_locale)
new_locale = best_locale_in(new_locale)
self._locale = new_locale if 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
63
64
65
|
# File 'lib/fast_gettext/storage.rb', line 63
def pluralisation_rule
Thread.current[:fast_gettext_pluralisation_rule] || current_repository.pluralisation_rule || lambda{|i| i!=1}
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
127
128
129
130
|
# File 'lib/fast_gettext/storage.rb', line 127
def set_locale(new_locale)
self.locale = new_locale
locale
end
|
#silence_errors ⇒ Object
turn off translation if none was defined to disable all resulting errors
156
157
158
159
|
# File 'lib/fast_gettext/storage.rb', line 156
def silence_errors
require 'fast_gettext/translation_repository/base'
translation_repositories[text_domain] ||= TranslationRepository::Base.new('x', :path => 'locale')
end
|
#text_domain ⇒ Object
45
46
47
|
# File 'lib/fast_gettext/storage.rb', line 45
def text_domain
Thread.current[:fast_gettext_text_domain] || default_text_domain
end
|
#translation_repositories ⇒ Object
77
78
79
|
# File 'lib/fast_gettext/storage.rb', line 77
def translation_repositories
@@translation_repositories
end
|