# File lib/fast_gettext/cache.rb, line 3 def initialize @store = {} reload! end
TODO only used for tests, maybe if-else around it …
# File lib/fast_gettext/cache.rb, line 18 def []=(key, value) @current[key] = value end
# File lib/fast_gettext/cache.rb, line 33 def delete(key) @current.delete(key) end
# File lib/fast_gettext/cache.rb, line 8 def fetch(key) translation = @current[key] if translation.nil? # uncached @current[key] = yield || false # TODO get rid of this false hack and cache :missing else translation end end
# File lib/fast_gettext/cache.rb, line 37 def reload! @current = {} @current[""] = false end
key performance gain:
no need to lookup locale on each translation
no need to lookup text_domain on each translation
super-simple hash lookup
# File lib/fast_gettext/cache.rb, line 26 def switch_to(text_domain, locale) @store[text_domain] ||= {} @store[text_domain][locale] ||= {} @store[text_domain][locale][""] = false # ignore gettext meta key when translating @current = @store[text_domain][locale] end