aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/alaveteli_localization.rb21
-rw-r--r--lib/i18n_fixes.rb23
-rw-r--r--lib/routing_filters.rb2
3 files changed, 39 insertions, 7 deletions
diff --git a/lib/alaveteli_localization.rb b/lib/alaveteli_localization.rb
new file mode 100644
index 000000000..6daab124a
--- /dev/null
+++ b/lib/alaveteli_localization.rb
@@ -0,0 +1,21 @@
+class AlaveteliLocalization
+ class << self
+ def set_locales(available_locales, default_locale)
+ # fallback locale and available locales
+ available_locales = available_locales.split(/ /)
+ FastGettext.default_available_locales = available_locales
+ I18n.locale = default_locale
+ I18n.available_locales = available_locales.map { |locale_name| locale_name.to_sym }
+ I18n.default_locale = default_locale
+ end
+
+ def set_default_text_domain(name, path)
+ FastGettext.add_text_domain name, :path => path, :type => :po
+ FastGettext.default_text_domain = name
+ end
+
+ def set_default_locale_urls(include_default_locale_in_urls)
+ RoutingFilter::Locale.include_default_locale = include_default_locale_in_urls
+ end
+ end
+end
diff --git a/lib/i18n_fixes.rb b/lib/i18n_fixes.rb
index 82d1b2c3a..9c1206215 100644
--- a/lib/i18n_fixes.rb
+++ b/lib/i18n_fixes.rb
@@ -17,7 +17,7 @@ end
def n_(*keys)
# The last parameter should be the values to do the interpolation with
if keys.count > 3
- options = keys.pop
+ options = keys.pop
else
options = {}
end
@@ -33,7 +33,7 @@ def gettext_interpolate(string, values)
safe = string.html_safe?
string = string.to_str.gsub(MATCH) do
pattern, key = $1, $1.to_sym
-
+
if !values.include?(key)
raise I18n::MissingInterpolationArgument.new(pattern, string)
else
@@ -50,7 +50,7 @@ end
module I18n
- # used by Globalize plugin.
+ # used by Globalize plugin.
# XXX much of this stuff should (might?) be in newer versions of Rails
@@fallbacks = nil
class << self
@@ -120,7 +120,7 @@ module I18n
@defaults = defaults.map { |default| compute(default, false) }.flatten
end
attr_reader :defaults
-
+
def [](locale)
raise InvalidLocale.new(locale) if locale.nil?
locale = locale.to_sym
@@ -138,7 +138,7 @@ module I18n
end
protected
-
+
def compute(tags, include_defaults = true)
result = Array(tags).collect do |tag|
tags = I18n::Locale::Tag::Simple.tag(tag).self_and_parents.map! { |t| t.to_sym }
@@ -161,7 +161,18 @@ module GettextI18nRails
class Backend
def available_locales
FastGettext.available_locales.map{|l| l.to_sym} || []
- end
+ end
end
end
+# Monkeypatch Globalize to compensate for the way gettext_i18n_rails patches
+# I18n.locale= so that it changes underscores in locale names (as used in the gettext world)
+# to the dashes that I18n prefers
+module Globalize
+ class << self
+ def locale
+ read_locale || I18n.locale.to_s.gsub('-', '_').to_sym
+ end
+ end
+end
+
diff --git a/lib/routing_filters.rb b/lib/routing_filters.rb
index 32dafc651..a9a62b8db 100644
--- a/lib/routing_filters.rb
+++ b/lib/routing_filters.rb
@@ -7,7 +7,7 @@ module RoutingFilter
end
# And override the generation logic to use FastGettext.locale
# rather than I18n.locale (the latter is what rails uses
- # internally and may look like `en_US`, whereas the latter is
+ # internally and may look like `en-US`, whereas the latter is
# was FastGettext and other POSIX-based systems use, and will
# look like `en_US`
def around_generate(*args, &block)