Kwi
unread,Sep 18, 2008, 4:42:04 AM9/18/08Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to rails-i18n
Hi again
As I'm really busy currently and as I'm not really familiar with open
source and git hub, I don't really know what the right thing to do,
but I'm ok to integrate properly the plugin in gloablize2 when i find
the time if someone can take a little bit of his time to explain me
the right way to do that.
But if you are in a hurry, here follow my source code (It's working
fine on Rails2.1 and Globalize1), You just have to change the way I
iterate the supported languages (MkdGlobalize::Langs.each_key). Just
include the file and add :globalized => true option to your resource
and named_route, then run "rake routes" and watch the magic.
module ActionController
module Routing
class RouteSet #:nodoc:
class NamedRouteCollection #:nodoc:
alias_method :mkd_define_url_helper, :define_url_helper
def define_url_helper(route, name, kind, options)
mkd_define_url_helper(route, name, kind, options)
# globalization surcouche
if options[:globalized] or options[:globalized_p] or
options[:globalized_s]
selector = url_helper_name(name, kind)
# surcharge de l'helper
@module.module_eval <<-end_eval # We use module_eval to
avoid leaks
alias_method :gl#{selector}, :#{selector}
def #{selector}(*args)
selector_g = "\#{lang}_
\#{'#{selector}'.gsub('_#{kind}', '')}_#{kind}"
if respond_to? selector_g.to_sym and
selector_g.to_sym != :#{selector}
send(selector_g.to_sym, *args)
else
gl#{selector}(*args)
end
end
protected :gl#{selector}
end_eval
end
end
end
alias_method :gl_add_named_route, :add_named_route
def add_named_route(name, path, options = {}) #:nodoc:
gl_add_named_route(name, path, options)
return if !options[:globalized]
options.delete(:globalized)
name = name.to_s
MkdGlobalize::Langs.each_key do |l|
Globalize::Locale.set(l.to_s)
nt = "#{l}_#{name}"
if nt != name
gl_add_named_route(nt, path.to_s.t(nil, nil,
'named_routes_path'), options)
end
end
end
end
end
end
module ActionController
module Resources
alias_method :gl_resources, :resources
def resources(*entities, &block)
opts = entities.dup.extract_options!
gl_resources(*entities, &block)
return if !opts[:globalized]
name = entities.shift.to_s
opts[:controller] = name if !opts[:controller]
opts.delete(:globalized)
MkdGlobalize::Langs.each_key do |l|
Globalize::Locale.set(l.to_s)
nt = "#{l}_#{name}"#name.t(nil, nil, 'resources')
if nt != name
opts[:as] = name.t(nil, nil, 'resources')
gl_resources(nt.to_sym, opts, &block)
end
end
end
alias_method :gl_resource, :resource
def resource(*entities, &block)
opts = entities.dup.extract_options!
gl_resource(*entities, &block)
return if !opts[:globalized]
name = entities.shift.to_s
opts[:controller] = name if !opts[:controller]
opts.delete(:globalized)
MkdGlobalize::Langs.each_key do |l|
Globalize::Locale.set(l.to_s)
nt = "#{l}_#{name}"#name.t(nil, nil, 'resource')
if nt != name
opts[:as] = name.t(nil, nil, 'resource')
gl_resource(nt.to_sym, opts, &block)
end
end
end
private
def action_options_for(action, resource, method = nil)
default_options = { :action => action.to_s }
if resource.options[:globalized]
default_options[:globalized_p] = resource.plural
if resource.uncountable?
default_options[:globalized_p] = resource.plural.to_s +
'_index'
end
default_options[:globalized_s] = resource.singular
end
require_id = !resource.kind_of?(SingletonResource)
case default_options[:action]
when "index", "new";
default_options.merge(add_conditions_for(resource.conditions, method
|| :get)).merge(resource.requirements)
when "create";
default_options.merge(add_conditions_for(resource.conditions, method
|| :post)).merge(resource.requirements)
when "show", "edit";
default_options.merge(add_conditions_for(resource.conditions, method
|| :get)).merge(resource.requirements(require_id))
when "update";
default_options.merge(add_conditions_for(resource.conditions, method
|| :put)).merge(resource.requirements(require_id))
when "destroy";
default_options.merge(add_conditions_for(resource.conditions, method
|| :delete)).merge(resource.requirements(require_id))
else
default_options.merge(add_conditions_for(resource.conditions,
method)).merge(resource.requirements)
end
end
end
end