i18n_routing 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ 0.3.0 (May 27, 2010)
2
+
3
+ * Add support for translating path_names, member and collection
4
+ * Fix Rails3 nested resources
5
+ * All specs are now passing under both Rails 2.3.5 and Rails 3
6
+
1
7
  0.2.4 (Apr 21, 2010)
2
8
 
3
9
  * Fix latest Rails3 edge compatibility (previous rails3 beta version not supported any more)
data/MIT-LICENSE CHANGED
File without changes
data/README.rdoc CHANGED
@@ -4,12 +4,7 @@ I18n_routing is a plugin for Ruby on Rails that lets you easily translate your r
4
4
 
5
5
  All necessary informations are available on the wiki : http://wiki.github.com/kwi/i18n_routing
6
6
 
7
- Warning: The plugin is not currently running well with deep nesting resources for Rails3. This will be fixed soon
8
-
9
- == TODO
10
-
11
- * Do nested resources for Rails3
12
- * Another bug fix ?
7
+ Works with Rails 2.3 and Rails3 !
13
8
 
14
9
  == Contributors
15
10
 
data/Rakefile CHANGED
File without changes
data/init.rb CHANGED
File without changes
data/lib/i18n_routing.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'i18n_routing_common'
3
+
2
4
  if Rails.version < '3'
3
5
  require 'i18n_routing_rails2'
4
6
  else
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ # I18nRouting module for common usage methods
4
+ module I18nRouting
5
+ # Return the correct translation for given values
6
+ def self.translation_for(name, type = :resources, option = nil)
7
+
8
+ # First, if an option is given, try to get the translation in the routes scope
9
+ if option
10
+ t = I18n.t(option.to_sym, :scope => "routes.#{name}.#{type}".to_sym, :default => option.to_s)
11
+
12
+ return (t || name)
13
+ else
14
+ # Try to get the translation in routes namescope first
15
+ t = I18n.t(:as, :scope => "routes.#{name}".to_sym, :default => name.to_s)
16
+ return t if t and t != name.to_s
17
+
18
+ I18n.t(name.to_s, :scope => type, :default => name.to_s)
19
+ end
20
+ end
21
+
22
+ DefaultPathNames = [:new, :edit]
23
+ PathNamesKeys = [:path_names, :member, :collection]
24
+
25
+ # Return path names hash for given resource
26
+ def self.path_names(name, options)
27
+ h = (options[:path_names] || {}).dup
28
+
29
+ path_names = DefaultPathNames
30
+ PathNamesKeys.each do |v|
31
+ path_names += options[v].keys if options[v] and Hash === options[v]
32
+ end
33
+
34
+ path_names.each do |pn|
35
+ n = translation_for(name, :path_names, pn)
36
+ n = nil if n == pn.to_s
37
+ # Get default path_names in path_names scope if no path_names found
38
+ n ||= I18n.t(pn, :scope => :path_names, :default => name.to_s)
39
+
40
+ h[pn] = n if n and n != name.to_s
41
+ end
42
+
43
+ return h
44
+ end
45
+
46
+ end
@@ -93,13 +93,13 @@ module ActionController
93
93
  alias_method :gl_add_named_route, :add_named_route
94
94
  def add_named_route(name, path, options = {}) #:nodoc:
95
95
  if @locales and !path.blank? and !Thread.current[:i18n_no_named_localization]
96
- #puts "ADD NAMED ROUTE : #{path}"
96
+ # Here, try to translate standard named routes
97
97
  name = name.to_s
98
98
 
99
99
  @locales.each do |l|
100
100
  I18n.locale = l
101
101
  nt = "#{l}_#{name}"
102
- if nt != name and ((t = I18n.t(path.to_s, :scope => :named_routes_path, :default => path.to_s)) != path)
102
+ if nt != name and ((t = I18nRouting.translation_for(path, :named_routes_path)) != path)
103
103
  gl_add_named_route(nt, t, options.merge(:glang => l))
104
104
  puts("[I18n] > localize %-10s: %40s (%s) => %s" % ['route', name, l, t]) if @i18n_verbose
105
105
  end
@@ -164,21 +164,20 @@ module ActionController
164
164
  options = entities.extract_options!
165
165
  opts = options.dup
166
166
 
167
- opts[:controller] ||= name
168
-
169
167
  locales = @set.locales
170
- translated = nil
171
168
  localized(nil) do
172
169
  locales.each do |l|
173
170
  I18n.locale = l
174
171
  nt = "#{l}_#{name}"
175
- if nt != name and ((t = I18n.t(name, :scope => namespace, :default => name)) != name)
172
+ if nt != name and ((t = I18nRouting.translation_for(name, namespace)) != name)
176
173
  nt = "#{l}_#{name}"
177
174
  opts[:as] = t
178
175
  opts[:glang] = l
176
+ opts[:controller] ||= name
179
177
  opts[:real_path] = opts[:singular] || name
178
+ opts[:path_names] = I18nRouting.path_names(name, options)
179
+
180
180
  localized([l]) do
181
- translated = true
182
181
  switch_no_named_localization(true) do
183
182
  send(type, nt.to_sym, opts, &block)
184
183
  end
@@ -7,6 +7,17 @@ module I18nRouting
7
7
  module Mapper
8
8
 
9
9
  private
10
+
11
+ # Just create a Mapper:Resource with given parameters
12
+ def resource_from_params(type, *resources)
13
+ res = resources.clone
14
+
15
+ options = res.extract_options!
16
+ r = res.first
17
+
18
+ type == :resource ? ActionDispatch::Routing::Mapper::SingletonResource.new(r, options.dup) : ActionDispatch::Routing::Mapper::Resource.new(r, options.dup)
19
+ end
20
+
10
21
  # Localize a resources or a resource
11
22
  def localized_resources(type = :resources, *resources, &block)
12
23
  localizable_route = nil
@@ -16,12 +27,13 @@ module I18nRouting
16
27
 
17
28
  options = res.extract_options!
18
29
  r = res.first
30
+
19
31
  resource = type == :resource ? ActionDispatch::Routing::Mapper::SingletonResource.new(r, options.dup) : ActionDispatch::Routing::Mapper::Resource.new(r, options.dup)
20
32
 
21
33
  # Check for translated resource
22
34
  @locales.each do |locale|
23
35
  I18n.locale = locale
24
- localized_path = I18n.t(resource.name, :scope => type, :default => resource.name.to_s)
36
+ localized_path = I18nRouting.translation_for(resource.name, type)
25
37
 
26
38
  # A translated route exists :
27
39
  if localized_path and localized_path != resource.name.to_s
@@ -29,14 +41,31 @@ module I18nRouting
29
41
  opts = options.dup
30
42
  opts[:path] = localized_path.to_sym
31
43
  opts[:controller] ||= r
32
- opts[:constraints] = opts[:constraints] ? opts[:constraints].dup : {}
33
- opts[:constraints][:i18n_locale] = locale.to_s
44
+
34
45
  res = ["#{locale}_#{r}".to_sym, opts]
35
46
 
36
- # Create the localized resource(s)
37
- scope(:constraints => opts[:constraints]) do
38
- localized(nil) do
39
- send(type, *res, &block)
47
+ constraints = opts[:constraints] ? opts[:constraints].dup : {}
48
+ constraints[:i18n_locale] = locale.to_s
49
+
50
+ scope(:constraints => constraints, :path_names => I18nRouting.path_names(resource.name, @scope)) do
51
+ localized_branch(locale) do
52
+ send(type, *res) do
53
+ # In the resource(s) block, we need to keep and restore some context :
54
+
55
+ old_name = @scope[:i18n_real_resource_name]
56
+ old = @scope[:scope_level_resource]
57
+ old_i = @scope[:i18n_scope_level_resource]
58
+
59
+ @scope[:i18n_real_resource_name] = resource.name
60
+ @scope[:i18n_scope_level_resource] = old
61
+ @scope[:scope_level_resource] = resource
62
+
63
+ block.call if block
64
+
65
+ @scope[:i18n_scope_level_resource] = nil
66
+ @scope[:scope_level_resource] = old
67
+ @scope[:i18n_real_resource_name] = old_name
68
+ end
40
69
  end
41
70
  end
42
71
 
@@ -47,11 +76,11 @@ module I18nRouting
47
76
  return localizable_route
48
77
  end
49
78
 
50
- # Set if the next route creation will be a localied route or not
79
+ # Set if the next route created will be a localized route or not
51
80
  # If yes, localizable is a name, or a Mapper::Resource
52
81
  # Can take a block, if so, save the current context, set the new
53
82
  # Call the block, then restore the old context and return the block return
54
- def set_localizable_route(localizable)
83
+ def set_localizable_route(localizable)
55
84
  if block_given?
56
85
  old = @set.named_routes.localizable
57
86
  @set.named_routes.set_localizable_route(localizable)
@@ -62,6 +91,15 @@ module I18nRouting
62
91
  @set.named_routes.set_localizable_route(localizable)
63
92
  end
64
93
  end
94
+
95
+ def localizable_route
96
+ @set.named_routes.localizable
97
+ end
98
+
99
+ # Return the aproximate deep in scope level
100
+ def nested_deep
101
+ (@scope and Array === @scope[:blocks] and @scope[:scope_level]) ? @scope[:blocks].size : 0
102
+ end
65
103
 
66
104
  public
67
105
 
@@ -100,15 +138,35 @@ module I18nRouting
100
138
  def localized(locales = I18n.available_locales, opts = {})
101
139
  old_value = @locales
102
140
  @locales = locales
103
- @i18n_verbose = opts.delete(:verbose)
141
+ @i18n_verbose ||= opts.delete(:verbose)
104
142
  yield
105
143
  ensure
106
144
  @locales = old_value
107
145
  end
108
-
146
+
147
+ # Create a branch for create routes in the specified locale
148
+ def localized_branch(locale)
149
+ set_localizable_route(nil) do
150
+ old = @localized_branch
151
+ @localized_branch = locale
152
+ localized([locale]) do
153
+ yield
154
+ end
155
+ @localized_branch = old
156
+ end
157
+ end
158
+
159
+ # Set we do not want to localize next resource
160
+ def skip_localization
161
+ old = @skip_localization
162
+ @skip_localization = @localized_branch ? nil : true
163
+ yield
164
+ @skip_localization = old
165
+ end
166
+
109
167
  def match(*args)
110
168
  # Localize simple match only if there is no resource scope.
111
- if args.size == 1 and @locales and !@scope[:scope_level_resource] and args.first[:as]
169
+ if args.size == 1 and @locales and !parent_resource and args.first[:as]
112
170
  @locales.each do |locale|
113
171
  mapping = LocalizedMapping.new(locale, @set, @scope, Marshal.load(Marshal.dump(args))) # Dump is dirty but how to make deep cloning easily ? :/
114
172
  if mapping.localizable?
@@ -125,20 +183,73 @@ module I18nRouting
125
183
 
126
184
  super
127
185
  end
186
+
187
+ def create_globalized_resources(type, *resources, &block)
128
188
 
129
- def resource(*resources, &block)
130
- set_localizable_route(nil) do
131
- set_localizable_route(localized_resources(:resource, *resources, &block))
132
- super
189
+ #puts "#{' ' * nested_deep}Call #{type} : #{resources.inspect} (#{@locales.inspect}) (#{@localized_branch}) (#{@skip_localization})"
190
+
191
+ cur_scope = nil
192
+ if @locales
193
+ localized = localized_resources(type, *resources, &block) if !@skip_localization
194
+
195
+ ## We do not translate if we are in a translations branch :
196
+ return if localized and nested_deep > 0
197
+
198
+ # Set the current standard resource in order to customize url helper :
199
+ if !@localized_branch
200
+ r = resource_from_params(type, *resources)
201
+ cur_scope = (parent_resource and parent_resource.name == r.name) ? parent_resource : r
202
+ end
203
+ end
204
+
205
+ set_localizable_route(cur_scope) do
206
+ skip_localization do
207
+ #puts "#{' ' * nested_deep} \\- Call original #{type} : for #{resources.inspect}}"
208
+ send("#{type}_without_i18n_routing".to_sym, *resources, &block)
209
+ end
133
210
  end
211
+
134
212
  end
213
+
214
+ # Alias methods in order to handle i18n routes
215
+ def self.included(mod)
216
+ mod.send :alias_method_chain, :resource, :i18n_routing
217
+ mod.send :alias_method_chain, :resources, :i18n_routing
218
+
219
+ # Here we redefine some methods, in order to handle
220
+ # correct path_names translation on the fly
221
+ [:map_method, :member, :collection].each do |m|
222
+ rfname = "#{m}_without_i18n_routing".to_sym
223
+ mod.send :define_method, "#{m}_with_i18n_routing".to_sym do |*args, &block|
224
+
225
+ if @localized_branch and @scope[:i18n_scope_level_resource] and @scope[:i18n_real_resource_name]
226
+ o = @scope[:scope_level_resource]
227
+ @scope[:scope_level_resource] = @scope[:i18n_scope_level_resource]
228
+
229
+ pname = @scope[:path_names] || {}
230
+ pname[args[1]] = args[1]
231
+ scope(:path_names => I18nRouting.path_names(@scope[:i18n_real_resource_name], {:path_names => pname})) do
232
+ send(rfname, *args, &block)
233
+ end
234
+ @scope[:scope_level_resource] = o
235
+ return
236
+ end
135
237
 
136
- def resources(*resources, &block)
137
- set_localizable_route(nil) do
138
- set_localizable_route(localized_resources(:resources, *resources, &block))
139
- super
238
+ send(rfname, *args, &block)
239
+
240
+ end
241
+
242
+ mod.send :alias_method_chain, m, :i18n_routing
140
243
  end
141
244
  end
245
+
246
+ def resource_with_i18n_routing(*resources, &block)
247
+ create_globalized_resources(:resource, *resources, &block)
248
+ end
249
+
250
+ def resources_with_i18n_routing(*resources, &block)
251
+ create_globalized_resources(:resources, *resources, &block)
252
+ end
142
253
 
143
254
  end
144
255
 
@@ -153,7 +264,7 @@ module I18nRouting
153
264
  # try to get translated path :
154
265
  I18n.locale = locale
155
266
  ts = @path.gsub(/^\//, '')
156
- @localized_path = '/' + I18n.t(ts, :scope => :named_routes_path, :default => ts)
267
+ @localized_path = '/' + I18nRouting.translation_for(ts, :named_routes_path)
157
268
 
158
269
  # If a translated path exists, set localized infos
159
270
  if @localized_path and @localized_path != @path
@@ -222,7 +333,7 @@ module I18nRouting
222
333
  # Exists in order to use apropriate localized route when using url_for
223
334
  module RackMountRoute
224
335
 
225
- # Alias method in order to handle i18n routes
336
+ # Alias methods in order to handle i18n routes
226
337
  def self.included(mod)
227
338
  mod.send :alias_method_chain, :generate, :i18n_routing
228
339
  mod.send :alias_method_chain, :initialize, :i18n_routing
@@ -1,77 +1,94 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe :localized_routes do
4
+
5
+ @@r = nil # Global routes in order to speed up testing
6
+
4
7
  before(:all) do
5
8
 
6
- if !rails3?
7
- ActionController::Routing::Routes.clear!
8
- ActionController::Routing::Routes.draw do |map|
9
- map.not_about 'not_about', :controller => 'not_about'
10
- map.resources :not_users
11
- map.resource :not_contact
9
+ if !@@r
10
+ if !rails3?
11
+ ActionController::Routing::Routes.clear!
12
+ ActionController::Routing::Routes.draw do |map|
13
+ map.not_about 'not_about', :controller => 'not_about'
14
+ map.resources :not_users
15
+ map.resource :not_contact
12
16
 
13
- map.localized do
14
- map.about 'about', :controller => 'about', :action => :show
17
+ map.localized(I18n.available_locales, :verbose => false) do
18
+ map.about 'about', :controller => 'about', :action => :show
15
19
 
16
- map.resources :users
17
- map.resource :contact
20
+ map.resources :users, :member => {:level => :get}, :collection => {:groups => :get}
21
+ map.resource :contact
18
22
 
19
- map.resources :authors do |m|
20
- m.resources :books
21
- end
23
+ map.resources :authors do |m|
24
+ m.resources :books
25
+ end
22
26
 
23
- map.resources :universes do |m|
24
- m.resources :galaxies do |mm|
25
- mm.resources :planets
27
+ map.resources :universes do |m|
28
+ m.resources :galaxies do |mm|
29
+ mm.resources :planets do |mmm|
30
+ mmm.resources :countries
31
+ end
32
+ end
26
33
  end
27
34
  end
28
35
  end
29
- end
30
36
 
31
- @r = ActionController::Routing::Routes
37
+ @@r = ActionController::Routing::Routes
32
38
 
33
- class UrlTester
34
- include ActionController::UrlWriter
35
- end
39
+ class UrlTester
40
+ include ActionController::UrlWriter
41
+ end
36
42
 
37
- else
38
- @r = ActionDispatch::Routing::RouteSet.new
39
- @r.draw do
40
- match 'not_about' => "not_about#show", :as => :not_about
41
- resources :not_users
42
- resource :not_contact
43
+ else
43
44
 
44
- localized(I18n.available_locales, :verbose => true) do
45
- match 'about' => "about#show", :as => :about
45
+ @@r = ActionDispatch::Routing::RouteSet.new
46
+ @@r.draw do
47
+ match 'not_about' => "not_about#show", :as => :not_about
48
+ resources :not_users
49
+ resource :not_contact
46
50
 
47
- resources :users
48
- resource :contact
51
+ localized(I18n.available_locales, :verbose => false) do
52
+ match 'about' => "about#show", :as => :about
49
53
 
50
- resources :authors do
51
- resources :books
52
- end
54
+ resources :users do
55
+ member do
56
+ get :level
57
+ end
58
+ get :groups, :on => :collection
59
+ end
60
+ resource :contact
53
61
 
54
- resources :universes do
55
- resources :galaxies do
56
- resources :planets
62
+ resources :authors do
63
+ resources :books
64
+ end
65
+
66
+ resources :universes do
67
+ resources :galaxies do
68
+ resources :planets do
69
+ scope do
70
+ resources :countries
71
+ end
72
+ end
73
+ end
57
74
  end
58
- end
59
75
 
76
+ end
60
77
  end
61
- end
62
78
 
63
- class UrlTester; end
64
- UrlTester.send :include, @r.url_helpers
79
+ class UrlTester; end
80
+ UrlTester.send :include, @@r.url_helpers
65
81
 
82
+ end
66
83
  end
67
84
 
68
85
  end
69
86
 
70
- let(:nested_routes) { @r.named_routes.instance_eval { routes } }
87
+ let(:nested_routes) { @@r.named_routes.instance_eval { routes } }
71
88
  let(:routes) { UrlTester.new }
72
89
 
73
90
  def url_for(opts)
74
- @r.generate_extras(opts).first
91
+ @@r.generate_extras(opts).first
75
92
  end
76
93
 
77
94
  context "do not break existing behavior" do
@@ -139,11 +156,11 @@ describe :localized_routes do
139
156
  end
140
157
 
141
158
  it "resources generates routes using localized values" do
142
- routes.send(:users_path).should == "/#{I18n.t :users, :scope => :resources}"
159
+ routes.send(:users_path).should == "/#{I18n.t :as, :scope => :'routes.users'}"
143
160
  end
144
161
 
145
162
  it "url_for generates routes using localized values" do
146
- url_for(:controller => :users).should == "/#{I18n.t :users, :scope => :resources}"
163
+ url_for(:controller => :users).should == "/#{I18n.t :as, :scope => :'routes.users'}"
147
164
  url_for(:controller => :about, :action => :show).should == "/#{I18n.t :about, :scope => :named_routes_path}"
148
165
  end
149
166
 
@@ -155,6 +172,39 @@ describe :localized_routes do
155
172
  routes.send(:universes_path).should == "/#{I18n.t :universes, :scope => :resources}"
156
173
  routes.send(:universe_galaxies_path, 1).should == "/#{I18n.t :universes, :scope => :resources}/1/#{I18n.t :galaxies, :scope => :resources}"
157
174
  routes.send(:universe_galaxy_planets_path, 1, 1).should == "/#{I18n.t :universes, :scope => :resources}/1/#{I18n.t :galaxies, :scope => :resources}/1/#{I18n.t :planets, :scope => :resources}"
175
+ routes.send(:universe_galaxy_planet_countries_path, 1, 1, 42).should == "/#{I18n.t :universes, :scope => :resources}/1/#{I18n.t :galaxies, :scope => :resources}/1/#{I18n.t :planets, :scope => :resources}/42/#{I18n.t :countries, :scope => :resources}"
176
+ end
177
+
178
+ context "with path_names" do
179
+
180
+ it "default translated path names" do
181
+ routes.send(:new_universe_path).should == "/#{I18n.t :universes, :scope => :resources}/#{I18n.t :new, :scope => :path_names}"
182
+ routes.send(:edit_universe_path, 42).should == "/#{I18n.t :universes, :scope => :resources}/42/#{I18n.t :edit, :scope => :path_names}"
183
+ end
184
+
185
+ it "custom translated path names" do
186
+ routes.send(:new_user_path).should == "/#{I18n.t :users, :scope => :resources}/#{I18n.t :new, :scope => :'routes.users.path_names'}"
187
+ routes.send(:edit_user_path, 42).should == "/#{I18n.t :users, :scope => :resources}/42/#{I18n.t :edit, :scope => :'routes.users.path_names'}"
188
+ end
189
+
190
+ end
191
+
192
+ context "with member and collection" do
193
+
194
+ it "custom member" do
195
+ I18n.locale = :en
196
+ routes.send(:level_user_path, 42).should == "/#{I18n.t :users, :scope => :resources}/42/level"
197
+ I18n.locale = :fr
198
+ routes.send(:level_user_path, 42).should == "/#{I18n.t :users, :scope => :resources}/42/#{I18n.t :level, :scope => :'routes.users.path_names'}"
199
+ end
200
+
201
+ it "custom collection" do
202
+ I18n.locale = :en
203
+ routes.send(:groups_users_path).should == "/#{I18n.t :users, :scope => :resources}/groups"
204
+ I18n.locale = :fr
205
+ routes.send(:groups_users_path).should == "/#{I18n.t :users, :scope => :resources}/#{I18n.t :groups, :scope => :'routes.users.path_names'}"
206
+ end
207
+
158
208
  end
159
209
 
160
210
  context "when nested" do
@@ -191,9 +241,17 @@ describe :localized_routes do
191
241
  end
192
242
 
193
243
  it "nested resources do not deep translate with multi helpers" do
194
- nested_routes.keys.should_not include(:fr_author_books) # Want fr_author_books
195
- end
244
+ nested_routes.keys.should_not include(:fr_author_books) # Do not want fr_author_books
245
+ end
196
246
 
197
247
  end
198
248
 
249
+ # context "just output" do
250
+ # it "output all routes properly" do
251
+ # nested_routes.keys.collect(&:to_s).sort.each do |k|
252
+ # puts("%50s: %.80s" % [k, (nested_routes[k.to_sym].path rescue nested_routes[k.to_sym].to_s)])
253
+ # end
254
+ # end
255
+ # end
256
+
199
257
  end
data/spec/locales/en.yml CHANGED
File without changes
data/spec/locales/fr.yml CHANGED
@@ -1,4 +1,12 @@
1
1
  fr:
2
+ routes:
3
+ users:
4
+ as: utilisateurs
5
+ path_names:
6
+ level: 'niveau'
7
+ groups: 'groupe'
8
+ new: 'nouvel_utilisateur'
9
+ edit: 'edition_utilisateur'
2
10
  resources:
3
11
  users: utilisateurs
4
12
  authors: 'auteurs'
@@ -6,8 +14,11 @@ fr:
6
14
  galaxies: 'galaxies-en-francais'
7
15
  planets: 'planetes'
8
16
  universes: 'univers'
17
+ countries: 'pays'
9
18
  resource:
10
19
  contact: 'contactez-nous'
11
20
  named_routes_path:
12
21
  about: 'a-propos'
13
-
22
+ path_names:
23
+ new: 'nouveau'
24
+ edit: 'edition'
data/spec/spec_helper.rb CHANGED
File without changes
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
8
- - 4
9
- version: 0.2.4
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Guillaume Luccisano
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-30 00:00:00 +02:00
17
+ date: 2010-05-27 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -41,6 +41,7 @@ extra_rdoc_files: []
41
41
 
42
42
  files:
43
43
  - lib/i18n_routing.rb
44
+ - lib/i18n_routing_common.rb
44
45
  - lib/i18n_routing_rails2.rb
45
46
  - lib/i18n_routing_rails3.rb
46
47
  - spec/i18n_routing/i18n_spec.rb
@@ -48,12 +49,10 @@ files:
48
49
  - spec/locales/fr.yml
49
50
  - spec/spec_helper.rb
50
51
  - CHANGELOG.rdoc
51
- - i18n_routing-0.2.4.gem
52
- - i18n_routing.gemspec
53
- - init.rb
54
52
  - MIT-LICENSE
55
53
  - Rakefile
56
54
  - README.rdoc
55
+ - init.rb
57
56
  has_rdoc: true
58
57
  homepage: http://github.com/kwi/i18n_routing
59
58
  licenses: []
data/i18n_routing.gemspec DELETED
@@ -1,17 +0,0 @@
1
- Gem::Specification.new do |s|
2
- s.name = "i18n_routing"
3
- s.version = "0.2.4"
4
- s.author = "Guillaume Luccisano"
5
- s.email = "guillaume.luccisano@gmail.com"
6
- s.homepage = "http://github.com/kwi/i18n_routing"
7
- s.summary = "I18n routing module for Rails 2.3.x and Rails 3. Translate your routes with ease !"
8
- s.description = "I18n_routing is a plugin for Ruby on Rails that lets you easily translate your routes trough the I18n api included in Rails since version 2.2"
9
-
10
- s.add_dependency('i18n', '> 0.3.5')
11
-
12
- s.files = Dir["{lib,spec}/**/*", "[A-Z]*", "init.rb"]
13
- s.require_path = "lib"
14
-
15
- s.rubyforge_project = s.name
16
- s.required_rubygems_version = ">= 1.3.4"
17
- end