diff --git a/lib/freedom_patches/translate_accelerator.rb b/lib/freedom_patches/translate_accelerator.rb index 88d06b35fe2..e878e3374e9 100644 --- a/lib/freedom_patches/translate_accelerator.rb +++ b/lib/freedom_patches/translate_accelerator.rb @@ -13,12 +13,20 @@ module I18n def translate(*args) @cache ||= LruRedux::ThreadSafeCache.new(LRU_CACHE_SIZE) found = true - k = [args,config.locale,config.backend.object_id] - t = @cache.fetch(k){found=false} + k = [args, config.locale, config.backend.object_id] + t = @cache.fetch(k) { found = false } 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 - t end