Sha256: 77bfb1d1358cebbdf2226afdbc18ea5bdfddf6b0aeac1c987a0d2b908b3285d4
Contents?: true
Size: 1.84 KB
Versions: 4
Compression:
Stored size: 1.84 KB
Contents
require 'globalize/backend/pluralizing' require 'globalize/locale/fallbacks' require 'globalize/translation' module Globalize module Backend class Static < Pluralizing def initialize(*args) add(*args) unless args.empty? end def translate(locale, key, options = {}) result, default, fallback = nil, options.delete(:default), nil I18n.fallbacks[locale].each do |fallback| begin result = super(fallback, key, options) and break rescue I18n::MissingTranslationData end end result ||= default locale, default, options attrs = {:requested_locale => locale, :locale => fallback, :key => key, :options => options} r = translation(result, attrs) || raise(I18n::MissingTranslationData.new(locale, key, options)) end protected alias :orig_interpolate :interpolate unless method_defined? :orig_interpolate def interpolate(locale, string, values = {}) result = orig_interpolate(locale, string, values) translation = translation(string) translation.nil? ? result : translation.replace(result) end def translation(result, meta = nil) return unless result case result when Numeric result when String result = Translation::Static.new(result) unless result.is_a? Translation::Static result.set_meta meta result when Hash Hash[*result.map do |key, value| [key, translation(value, meta)] end.flatten] when Array result.map do |value| translation(value, meta) end else result # raise "unexpected translation type: #{result.inspect}" end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems