lib/i18n/tasks/missing_keys.rb in i18n-tasks-0.9.31 vs lib/i18n/tasks/missing_keys.rb in i18n-tasks-0.9.32

- old
+ new

@@ -77,16 +77,12 @@ end def required_plural_keys_for_locale(locale) @plural_keys_for_locale ||= {} return @plural_keys_for_locale[locale] if @plural_keys_for_locale.key?(locale) - @plural_keys_for_locale[locale] = - begin - Set.new(load_rails_i18n_pluralization!(locale)[locale.to_sym][:i18n][:plural][:keys]) - rescue SystemCallError, IOError - Set.new - end + + @plural_keys_for_locale[locale] = plural_keys_for_locale(locale) end # Loads rails-i18n pluralization config for the given locale. def load_rails_i18n_pluralization!(locale) path = File.join(Gem::Specification.find_by_name('rails-i18n').gem_dir, 'rails', 'pluralization', "#{locale}.rb") @@ -121,11 +117,11 @@ other_node && !node.reference? && node.value == other_node.value && !ignore_key?(key, :eq_base, locale) end.set_root_key!(locale, type: :eq_base) end def locale_key_missing?(locale, key) - !key_value?(key, locale) && !external_key?(key) && !ignore_key?(key, :missing) + !key_value?(key, locale) && !external_key?(key, locale) && !ignore_key?(key, :missing) end # @param [::I18n::Tasks::Data::Tree::Siblings] forest # @yield [::I18n::Tasks::Data::Tree::Node] # @yieldreturn [Boolean] whether to collapse the node @@ -151,8 +147,35 @@ keys_nodes.each do |(key, node)| forest["#{locales}.#{key}"] = node end end forest + end + + private + + def plural_keys_for_locale(locale) + configuration = load_rails_i18n_pluralization!(locale) + if configuration[locale.to_sym].nil? + alternate_locale = alternate_locale_from(locale) + return Set.new if configuration[alternate_locale.to_sym].nil? + + return set_from_rails_i18n_pluralization(configuration, alternate_locale) + end + set_from_rails_i18n_pluralization(configuration, locale) + rescue SystemCallError, IOError + Set.new + end + + def alternate_locale_from(locale) + re = /(\w{2})-*(\w{2,3})*/ + match = locale.match(re) + language_code = match[1] + country_code = match[2] + "#{language_code}-#{country_code.upcase}" + end + + def set_from_rails_i18n_pluralization(configuration, locale) + Set.new(configuration[locale.to_sym][:i18n][:plural][:keys]) end end end