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