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