route_translator 13.2.1 → 14.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6fce16b25f253c530a462e14251479236768723b507359e93db129274ab14ae
4
- data.tar.gz: 0fb41bf9534c717748acc18bd61213998a3648b7808b20ced17132694f84f135
3
+ metadata.gz: 92c7961768c35baf18cf30e3316b8224ecad45a76e7b0c262f39e9f8945787e9
4
+ data.tar.gz: 156b961c7893072a233cc8954e7fac1e640bec44ac76681de4611be48191b5ec
5
5
  SHA512:
6
- metadata.gz: 067e8efc0ef38001c0dee08bf2b7640f497edf0f69448448a0c596b63ac32c0110f906160d2fe34991d0c9f50895ef0f775e903f382c54748fedfae6de8df6eb
7
- data.tar.gz: b5b62f4644dc3fd6ad6401927ce4af0b897572467d86ffaabb444254680e9adaf97194a2c3cc17b6bf9abdfdad1213bd350ddeb73c5e9c242c53baef93590387
6
+ metadata.gz: 9cc77e8f966037a9d7a1b38b04215ca9ba2b0c6ca7d5bd2e2c1252d390c2ba60c4b8cf58f221ed7915a82eee131fe22500d20149f51bfefc78cfa8292d3bacf0
7
+ data.tar.gz: 1f35cb097d1c2eed38b8b1650d5d05c0b9f8d42e5281d2b5a6dd963786224107337c34651fc0f62176bfb766e961a8acc96646d55fa9b90d9d1b71e84adc43c6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 14.0.0 / 2023-09-02
4
+
5
+ * [FEATURE] BREAKING CHANGE: Force standard nested separator (Upgrade guide at [#285](https://github.com/enriclluelles/route_translator/pull/285))
6
+ * [FEATURE] Drop Ruby 2.6 compatibility
7
+ * [FEATURE] Drop Rails < 6.1 compatibility
8
+ * [FEATURE] Add initializer generator
9
+ * [ENHANCEMENT] Update development dependencies
10
+
3
11
  ## 13.2.1 / 2023-07-28
4
12
 
5
13
  * [BUGFIX] Fix deprecation on Rails Edge
data/README.md CHANGED
@@ -9,7 +9,7 @@ RouteTranslator is a gem to allow you to manage the translations of your app rou
9
9
 
10
10
  It started as a fork of the awesome [translate_routes](https://github.com/raul/translate_routes) plugin by [Raúl Murciano](https://github.com/raul).
11
11
 
12
- Right now it works with Rails 5.2, 6.x, and 7.x
12
+ Right now it works with Rails 6.1 and 7.x
13
13
 
14
14
 
15
15
 
@@ -54,7 +54,13 @@ Right now it works with Rails 5.2, 6.x, and 7.x
54
54
 
55
55
  And execute `bundle install`
56
56
 
57
- 3. Wrap the groups of routes that you want to translate inside a `localized` block:
57
+ 3. Generate the default initializer:
58
+
59
+ ```sh
60
+ bundle exec rails g route_translator:install
61
+ ```
62
+
63
+ 4. Wrap the groups of routes that you want to translate inside a `localized` block:
58
64
 
59
65
  ```ruby
60
66
  Rails.application.routes.draw do
@@ -85,7 +91,7 @@ Right now it works with Rails 5.2, 6.x, and 7.x
85
91
  pricing: prix
86
92
  ```
87
93
 
88
- 4. Your routes are translated! Here's the output of your `rake routes` now:
94
+ 5. Your routes are translated! Here's the output of your `rake routes` now:
89
95
 
90
96
  ```
91
97
  Prefix Verb URI Pattern Controller#Action
@@ -133,7 +139,7 @@ Right now it works with Rails 5.2, 6.x, and 7.x
133
139
 
134
140
  In :production environment, you should either set `config.i18n.fallbacks = false` or set up translations for your routes in every languages.
135
141
 
136
- 5. If you want to set `I18n.locale` from the url parameter locale, add
142
+ 6. If you want to set `I18n.locale` from the url parameter locale, add
137
143
  the following line in your `ApplicationController` or in the controllers
138
144
  that have translated content:
139
145
 
@@ -271,22 +277,15 @@ end
271
277
 
272
278
  | Option | Description | Default |
273
279
  | ------ | ----------- |-------- |
274
- | `available_locales` | Limits the locales for which URLs should be generated for. Accepts an array of strings or symbols. When empty, translations will be generated for all `I18n.available_locales` | `[]` |
275
- | `disable_fallback` | Creates routes only for locales that have translations. For example, if we have `/examples` and a translation is not provided for `es`, the route helper of `examples_es` will not be created. Useful when one uses this with a locale route constraint, so non-`es` routes can return a `404` on a Spanish website | `false` |
276
- | `force_locale` | Forces the locale to be added to all generated route paths, even for the default locale | `false` |
277
- | `generate_unlocalized_routes` | Adds translated routes without deleting original unlocalized versions. **Note:** Autosets `force_locale` to `true` | `false` |
278
- | `generate_unnamed_unlocalized_routes` | Adds the behavior of `force_locale`, but with a named default route which behaves as if `generate_unlocalized_routes` was `true`. `root_path` will redirect to `/en` or `/es`, depending on the value of `I18n.locale` | `false` |
279
- | `hide_locale` | Forces the locale to be hidden on generated route paths | `false` |
280
- | `host_locales` | Sets `I18n.locale` based on `request.host`. Useful for apps accepting requests from more than one domain. See below for more details | `{}` |
280
+ | `available_locales` | Limit the locales for which URLs should be generated for. Accepts an array of strings or symbols. When empty, translations will be generated for all `I18n.available_locales` | `[]` |
281
+ | `disable_fallback` | Create routes only for locales that have translations. For example, if we have `/examples` and a translation is not provided for `es`, the route helper of `examples_es` will not be created. Useful when one uses this with a locale route constraint, so non-`es` routes can return a `404` on a Spanish website | `false` |
282
+ | `force_locale` | Force the locale to be added to all generated route paths, even for the default locale | `false` |
283
+ | `generate_unlocalized_routes` | Add translated routes without deleting original unlocalized versions. **Note:** Autosets `force_locale` to `true` | `false` |
284
+ | `generate_unnamed_unlocalized_routes` | Add the behavior of `force_locale`, but with a named default route which behaves as if `generate_unlocalized_routes` was `true`. `root_path` will redirect to `/en` or `/es`, depending on the value of `I18n.locale` | `false` |
285
+ | `hide_locale` | Force the locale to be hidden on generated route paths | `false` |
286
+ | `host_locales` | Set `I18n.locale` based on `request.host`. Useful for apps accepting requests from more than one domain. See below for more details | `{}` |
281
287
  | `locale_param_key` | The param key used to set the locale to the newly generated routes | `:locale` |
282
288
  | `locale_segment_proc` | The locale segment of the url will by default be `locale.to_s.downcase`. You can supply your own mechanism via a Proc that takes `locale` as an argument, e.g. `->(locale) { locale.to_s.upcase }` | `false` |
283
- | `i18n_use_slash_separator` | Use the exact controller path `account/foo` for looking up translations instead of nested keys `account.foo` | `false` |
284
-
285
- #### Deprecated options
286
-
287
- - `i18n_use_slash_separator` is deprecated and will be forced to `true` in the next major release of Route Translator. This only
288
- affects application with nested routes. Please set this option to `true` to remove the deprecation message and ensure
289
- to convert nested routes like `people.products` to the new `people/products`.
290
289
 
291
290
  ### Host-based Locale
292
291
 
@@ -348,9 +347,8 @@ es:
348
347
  routes:
349
348
  favourites: favoritos
350
349
  controllers:
351
- people:
352
- products:
353
- favourites: fans
350
+ people/products:
351
+ favourites: fans
354
352
  ```
355
353
 
356
354
  Routes will be translated as in:
@@ -362,13 +360,18 @@ people_products_favourites_es GET /people/products/fans(.:format) people/
362
360
 
363
361
  It is also possible to translated resources scoped into a namespace. Example:
364
362
 
363
+ ```ruby
364
+ namespace :people do
365
+ resources :products, only: :index
366
+ end
367
+ ```
368
+
365
369
  ```yml
366
370
  es:
367
371
  routes:
368
372
  controllers:
369
- people:
370
- products:
371
- products: productos_favoritos
373
+ people/products:
374
+ products: productos_favoritos
372
375
  ```
373
376
 
374
377
  Routes will be translated as in:
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RouteTranslator
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ desc 'Copy RouteTranslator default files'
7
+ source_root File.expand_path('templates', __dir__)
8
+
9
+ def copy_config
10
+ template 'config/initializers/route_translator.rb'
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Use this setup block to configure all options available in RouteTranslator.
4
+ RouteTranslator.config do |config|
5
+ # Limit the locales for which URLs should be generated for. Accepts an array
6
+ # of strings or symbols. When empty, translations will be generated for all
7
+ # `I18n.available_locales`
8
+ # config.available_locales = []
9
+
10
+ # Create routes only for locales that have translations. For example, if
11
+ # we have `/examples` and a translation is not provided for `es`, the route
12
+ # helper of `examples_es` will not be created. Useful when one uses this with
13
+ # a locale route constraint, so non-es routes can return a `404` on a
14
+ # Spanish website
15
+ # config.disable_fallback = false
16
+
17
+ # Force the locale to be added to all generated route paths, even for the
18
+ # default locale
19
+ # config.force_locale = false
20
+
21
+ # Add translated routes without deleting original unlocalized versions.
22
+ # Note: Autosets `force_locale` to `true`
23
+ # config.generate_unlocalized_routes = false
24
+
25
+ # Add the behavior of `force_locale`, but with a named default route which
26
+ # behaves as if `generate_unlocalized_routes` was `true`. `root_path` will
27
+ # redirect to `/en` or `/es`, depending on the value of `I18n.locale`
28
+ # config.generate_unnamed_unlocalized_routes = false
29
+
30
+ # Force the locale to be hidden on generated route paths
31
+ # config.hide_locale = false
32
+
33
+ # Set `I18n.locale` based on `request.host`. Useful for apps accepting
34
+ # requests from more than one domain. See Readme for more details
35
+ # config.host_locales = {}
36
+
37
+ # The param key used to set the locale to the newly generated routes
38
+ # config.locale_param_key = :locale
39
+
40
+ # The locale segment of the url will by default be `locale.to_s.downcase`.
41
+ # You can supply your own mechanism via a Proc that takes `locale`
42
+ # as an argument, e.g. `->(locale) { locale.to_s.upcase }`
43
+ # config.locale_segment_proc = false
44
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/railtie'
4
+
5
+ module RouteTranslator
6
+ class Railtie < Rails::Railtie
7
+ config.eager_load_namespaces << RouteTranslator
8
+ end
9
+ end
@@ -16,11 +16,7 @@ module RouteTranslator
16
16
  def scope
17
17
  @scope ||=
18
18
  if mapping.defaults[:controller]
19
- if RouteTranslator.config.i18n_use_slash_separator
20
- %i[routes controllers].push mapping.defaults[:controller]
21
- else
22
- %i[routes controllers].concat mapping.defaults[:controller].split('/').map(&:to_sym)
23
- end
19
+ %i[routes controllers].push mapping.defaults[:controller]
24
20
  else
25
21
  %i[routes controllers]
26
22
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RouteTranslator
4
- VERSION = '13.2.1'
4
+ VERSION = '14.0.0'
5
5
  end
@@ -21,8 +21,7 @@ module RouteTranslator
21
21
  hide_locale: false,
22
22
  host_locales: {},
23
23
  locale_param_key: :locale,
24
- locale_segment_proc: false,
25
- i18n_use_slash_separator: false
24
+ locale_segment_proc: false
26
25
  }.freeze
27
26
 
28
27
  Configuration = Struct.new(*DEFAULT_CONFIGURATION.keys)
@@ -37,17 +36,7 @@ module RouteTranslator
37
36
  @config.hide_locale = true
38
37
  end
39
38
 
40
- def check_deprecations
41
- return if @config.i18n_use_slash_separator
42
-
43
- deprecator.warn <<~MSG
44
- `i18n_use_slash_separator` set to `false` is deprecated and will be
45
- removed in the next major release of Route Translator to match
46
- Rails' ActiveRecord nested model syntax.
47
-
48
- More information at https://github.com/enriclluelles/route_translator/pull/285
49
- MSG
50
- end
39
+ def check_deprecations; end
51
40
  end
52
41
 
53
42
  module_function
@@ -96,3 +85,5 @@ module RouteTranslator
96
85
  @deprecator ||= ActiveSupport::Deprecation.new(RouteTranslator::VERSION, 'RouteTranslator')
97
86
  end
98
87
  end
88
+
89
+ require 'route_translator/railtie' if defined?(Rails)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: route_translator
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.2.1
4
+ version: 14.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geremia Taglialatela
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-07-28 00:00:00.000000000 Z
13
+ date: 2023-09-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '5.2'
21
+ version: '6.1'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
24
  version: '7.1'
@@ -28,7 +28,7 @@ dependencies:
28
28
  requirements:
29
29
  - - ">="
30
30
  - !ruby/object:Gem::Version
31
- version: '5.2'
31
+ version: '6.1'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '7.1'
@@ -38,7 +38,7 @@ dependencies:
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '5.2'
41
+ version: '6.1'
42
42
  - - "<"
43
43
  - !ruby/object:Gem::Version
44
44
  version: '7.1'
@@ -48,7 +48,7 @@ dependencies:
48
48
  requirements:
49
49
  - - ">="
50
50
  - !ruby/object:Gem::Version
51
- version: '5.2'
51
+ version: '6.1'
52
52
  - - "<"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '7.1'
@@ -64,6 +64,8 @@ files:
64
64
  - CHANGELOG.md
65
65
  - LICENSE
66
66
  - README.md
67
+ - lib/generators/route_translator/install_generator.rb
68
+ - lib/generators/route_translator/templates/config/initializers/route_translator.rb
67
69
  - lib/route_translator.rb
68
70
  - lib/route_translator/extensions.rb
69
71
  - lib/route_translator/extensions/action_controller.rb
@@ -71,6 +73,7 @@ files:
71
73
  - lib/route_translator/extensions/route_set.rb
72
74
  - lib/route_translator/extensions/test_case.rb
73
75
  - lib/route_translator/host.rb
76
+ - lib/route_translator/railtie.rb
74
77
  - lib/route_translator/route.rb
75
78
  - lib/route_translator/translator.rb
76
79
  - lib/route_translator/translator/path.rb
@@ -93,14 +96,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
96
  requirements:
94
97
  - - ">="
95
98
  - !ruby/object:Gem::Version
96
- version: '2.6'
99
+ version: '2.7'
97
100
  required_rubygems_version: !ruby/object:Gem::Requirement
98
101
  requirements:
99
102
  - - ">="
100
103
  - !ruby/object:Gem::Version
101
104
  version: '0'
102
105
  requirements: []
103
- rubygems_version: 3.4.1
106
+ rubygems_version: 3.4.19
104
107
  signing_key:
105
108
  specification_version: 4
106
109
  summary: Translate your Rails routes in a simple manner