BUGFIX: fallback to en translation when interpolation is missing

This commit is contained in:
Régis Hanol 2014-02-26 18:42:16 +01:00
parent 8167cefe36
commit 17f75bbe92

View File

@ -13,12 +13,20 @@ module I18n
def translate(*args) def translate(*args)
@cache ||= LruRedux::ThreadSafeCache.new(LRU_CACHE_SIZE) @cache ||= LruRedux::ThreadSafeCache.new(LRU_CACHE_SIZE)
found = true found = true
k = [args,config.locale,config.backend.object_id] k = [args, config.locale, config.backend.object_id]
t = @cache.fetch(k){found=false} t = @cache.fetch(k) { found = false }
unless found unless found
t = @cache[k] = translate_no_cache(*args).freeze begin
t = translate_no_cache(*args)
rescue MissingInterpolationArgument
options = args.last.is_a?(Hash) ? args.pop.dup : {}
options.merge!(locale: config.default_locale)
key = args.shift
t = translate_no_cache(key, options)
ensure
t = @cache[k] = t.freeze
end
end end
t t
end end