lib/refinery/i18n.rb in refinerycms-i18n-0.9.8.11 vs lib/refinery/i18n.rb in refinerycms-i18n-0.9.8.12
- old
+ new
@@ -10,11 +10,11 @@
require File.expand_path('../i18n-js', __FILE__)
require File.expand_path('../translate', __FILE__)
end
config.to_prepare do
- ::ApplicationController.class_eval %{
+ ::ApplicationController.class_eval do
def default_url_options(options={})
::Refinery::I18n.enabled? ? { :locale => ::I18n.locale } : {}
end
prepend_before_filter :find_or_set_locale
@@ -23,43 +23,45 @@
if ::Refinery::I18n.enabled?
if ::Refinery::I18n.has_locale?(locale = params[:locale].try(:to_sym))
::I18n.locale = locale
elsif locale.present? and locale != ::Refinery::I18n.default_frontend_locale
params[:locale] = I18n.locale = ::Refinery::I18n.default_frontend_locale
- redirect_to(params, :notice => "The locale '\#{locale.to_s}' is not supported.") and return
+ redirect_to(params, :notice => "The locale '#{locale.to_s}' is not supported.") and return
else
::I18n.locale = ::Refinery::I18n.default_frontend_locale
end
end
end
protected :default_url_options, :find_or_set_locale
- }
+ end
- ::Refinery::AdminBaseController.class_eval %{
+ ::Admin::BaseController.class_eval do
+ prepend_before_filter :find_or_set_locale
+
def find_or_set_locale
if (params[:set_locale].present? and ::Refinery::I18n.locales.include?(params[:set_locale].to_sym))
::Refinery::I18n.current_locale = params[:set_locale].to_sym
redirect_back_or_default(admin_dashboard_path) and return
else
::I18n.locale = ::Refinery::I18n.current_locale
end
end
protected :find_or_set_locale
- }
+ end
end
config.after_initialize do
::Refinery::I18n.setup! if defined?(RefinerySetting) and RefinerySetting.table_exists?
end
end
class << self
- attr_accessor :enabled, :current_locale, :locales, :default_locale, :default_frontend_locale
+ attr_accessor :enabled, :current_locale, :locales, :default_locale, :default_frontend_locale, :built_in_locales
def enabled?
# cache this lookup as it gets very expensive.
if defined?(@enabled) && !@enabled.nil?
@enabled
@@ -115,26 +117,11 @@
:callback_proc_as_string => %q{::Refinery::I18n.setup!}
})).to_sym
end
def locales
- @locales ||= RefinerySetting.find_or_set(:i18n_translation_locales, {
- :en => 'English',
- :fr => 'Français',
- :nl => 'Nederlands',
- :'pt-BR' => 'Português',
- :da => 'Dansk',
- :nb => 'Norsk Bokmål',
- :sl => 'Slovenian',
- :es => 'Español',
- :it => 'Italiano',
- :'zh-CN' => 'Simple Chinese',
- :de => 'Deutsch',
- :lv => 'Latviski',
- :ru => 'Русский',
- :sv => 'Svenska'
- },
+ @locales ||= RefinerySetting.find_or_set(:i18n_translation_locales, self.built_in_locales,
{
:scoping => 'refinery',
:callback_proc_as_string => %q{::Refinery::I18n.setup!}
}
)
@@ -165,11 +152,11 @@
RefinerySetting.get(:i18n_translation_locales, :scoping => 'refinery')
else
RefinerySetting.find_by_name_and_scoping('i18n_translation_locales', 'refinery').try(:value)
end
- if locales.present? and locales.is_a?(Hash) and locales.keys.exclude?(:sv)
+ if locales.present? and locales.is_a?(Hash) and locales.keys.exclude?(self.built_in_locales.keys.last)
value = {:value => nil, :scoping => 'refinery'}
if RefinerySetting.respond_to?(:set)
RefinerySetting.set(:i18n_translation_locales, value)
else
RefinerySetting[:i18n_translation_locales] = value
@@ -200,7 +187,25 @@
::I18n.load_path.unshift locale_file
end
end
end
+
+ @built_in_locales = {
+ :en => 'English',
+ :fr => 'Français',
+ :nl => 'Nederlands',
+ :'pt-BR' => 'Português',
+ :da => 'Dansk',
+ :nb => 'Norsk Bokmål',
+ :sl => 'Slovenian',
+ :es => 'Español',
+ :it => 'Italiano',
+ :'zh-CN' => 'Simple Chinese',
+ :de => 'Deutsch',
+ :lv => 'Latviski',
+ :ru => 'Русский',
+ :sv => 'Svenska',
+ :pl => 'Polski'
+ }
end
end
\ No newline at end of file