openstreetmap-website/config/initializers/i18n.rb
Tom Hughes 4028f4cdb9 Rework locale selection
Implement our own matching algorithm rather than trying to
patch the http_accept_language one and make sure everything is
using it in a consistent way.

Fixes #1125
2016-01-06 18:43:25 +00:00

45 lines
1.1 KiB
Ruby

module I18n
module Backend
module PluralizationFallback
def pluralize(locale, entry, count)
super
rescue InvalidPluralizationData => ex
raise ex unless ex.entry.key?(:other)
ex.entry[:other]
end
end
class Simple
def store_translations_with_normalisation(locale, data, options = {})
locale = I18n::Locale::Tag::Rfc4646.tag(locale).to_s
store_translations_without_normalisation(locale, data, options)
end
alias_method_chain :store_translations, :normalisation
end
end
module JS
class FallbackLocales
def default_fallbacks_with_validation
default_fallbacks_without_validation.select do |locale|
::I18n.available_locales.include?(locale)
end
end
alias_method_chain :default_fallbacks, :validation
end
end
end
I18n::Backend::Simple.include(I18n::Backend::PluralizationFallback)
I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
I18n.fallbacks.map("no" => "nb")
I18n.enforce_available_locales = false
Rails.configuration.after_initialize do
I18n.available_locales
end