# File lib/active_support/vendor/i18n-0.3.7/i18n/backend/base.rb, line 249 def merge_translations(locale, data, options = {}) locale = locale.to_sym translations[locale] ||= {} separator = options[:separator] || I18n.default_separator data = unwind_keys(data, separator) data = deep_symbolize_keys(data) # deep_merge by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809 merger = proc do |key, v1, v2| # TODO should probably be: # raise TypeError.new("can't merge #{v1.inspect} and #{v2.inspect}") unless Hash === v1 && Hash === v2 Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : (v2 || v1) end translations[locale].merge!(data, &merger) end