Use normal fallbacks to handle the no/nb confusion
[rails.git] / config / initializers / i18n.rb
1 module I18n
2   module Backend
3     module Fallbacks
4       def find_first_string_or_lambda_default(defaults)
5         defaults.each_with_index { |default, ix| return ix if default && !default.is_a?(Symbol) }
6         nil
7       end
8     end
9
10     module PluralizationFallback
11       def pluralize(locale, entry, count)
12         super
13       rescue InvalidPluralizationData => ex
14         raise ex unless ex.entry.has_key?(:other)
15         ex.entry[:other]
16       end
17     end
18   end
19
20   module Locale
21     class Fallbacks
22       def compute(tags, include_defaults = true, exclude = [])
23         result = Array(tags).collect do |tag|
24           tags = I18n::Locale::Tag.tag(tag).self_and_parents.map! { |t| t.to_sym } - exclude
25           tags.each { |_tag| tags += compute(@map[_tag], false, exclude + tags) if @map[_tag] }
26           tags
27         end.flatten
28         result.push(*defaults) if include_defaults
29         result.uniq.compact
30       end
31     end
32   end
33 end
34
35 I18n::Backend::Simple.include(I18n::Backend::Pluralization)
36 I18n::Backend::Simple.include(I18n::Backend::PluralizationFallback)
37 I18n.load_path << "#{Rails.root}/config/pluralizers.rb"
38
39 I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
40
41 I18n.fallbacks.map("nb" => "no")
42 I18n.fallbacks.map("no" => "nb")
43
44 Rails.configuration.after_initialize do
45   I18n.reload!
46 end