rack-locale_memorable 0.4.1 → 0.5.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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +50 -1
- data/lib/rack/locale_memorable/response.rb +5 -0
- data/lib/rack/locale_memorable/version.rb +1 -1
- data/lib/rack/locale_memorable.rb +2 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ffe06754e47f1f4e78b11466c82b3e6eec83328a39ced2f7643531cf13663d5
|
4
|
+
data.tar.gz: feeb7868eb676e2b53e2e8cb6d6f72344c54ce0f1552a0bac81ade90afbf1d63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 110f31d182de015b71c26bf2b9d952537c4444966efabe116c2a67d8eee59196d24515cb37a34df66f0d3d1fb308e74626ec11aac1d43f38feb932b79726f3f9
|
7
|
+
data.tar.gz: 16359f3551313019d6b346e071b520fd2dae13e44d6715149f95e2bc15ad77bfe7688aca30e3349b373ef40d9808a0c5bb657056192ab9def3ccc9a02971e920
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.5.0] - 2022-10-01
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
|
7
|
+
- set env['rack.locale'] and Content-Language response header following rack-locale https://github.com/nov/rack-locale_memorable/commit/02e34752327141f2dcd9f3ccfce3838c7e742abd
|
8
|
+
|
3
9
|
## [0.4.1] - 2022-09-29
|
4
10
|
|
5
11
|
### Fixed
|
6
12
|
|
7
13
|
- make default path "/" https://github.com/nov/rack-locale_memorable/commit/439868e4d2f6a917be1234fa2d9bdbfab41fce69
|
8
14
|
|
9
|
-
|
10
15
|
## [0.4.0] - 2022-09-28
|
11
16
|
|
12
17
|
### Changed
|
data/README.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
Handle query params, cookie and HTTP_ACCEPT_LANGUAGE header to detect user-preffered locale, and remember it when necessary.
|
4
4
|
|
5
|
+
Since some libraries (e.g., Devise & Warden) handles i18n strings in rack-middleware layer, setting `I18n.locale` is not enough for some cases.
|
6
|
+
|
7
|
+
This gem sets `I18n.locale` in rack-middleware layer, so that you can let other rack-middlewares use proper `I18n.locale`.
|
8
|
+
|
5
9
|
## Installation
|
6
10
|
|
7
11
|
Install the gem and add to the application's Gemfile by executing:
|
@@ -33,7 +37,7 @@ There are several customizable options listed below.
|
|
33
37
|
* `cookie_key` (`'locale'` by default)
|
34
38
|
* `cookie_options[:lifetime]` (`1.year` by default)
|
35
39
|
* `cookie_options[:domain]` (`nil` by default)
|
36
|
-
* `cookie_options[:path]` (
|
40
|
+
* `cookie_options[:path]` (`/` by default)
|
37
41
|
* `cookie_options[:http_only]` (`true` by default)
|
38
42
|
* `cookie_options[:secure]` (`true` by default)
|
39
43
|
|
@@ -64,6 +68,51 @@ Rails.application.configure do |config|
|
|
64
68
|
end
|
65
69
|
```
|
66
70
|
|
71
|
+
ref.) related issue in devise & warden
|
72
|
+
* https://github.com/heartcombo/devise/issues/5247
|
73
|
+
* https://github.com/wardencommunity/warden/issues/180
|
74
|
+
|
75
|
+
|
76
|
+
## Detailed locale handling
|
77
|
+
|
78
|
+
See rspec results.
|
79
|
+
|
80
|
+
```console
|
81
|
+
% bundle exec rspec --format=documentation
|
82
|
+
|
83
|
+
Rack::LocaleMemorable
|
84
|
+
with no locales
|
85
|
+
behaves like handled_with_default_locale
|
86
|
+
should use default locale
|
87
|
+
channel priority
|
88
|
+
when locale is specified
|
89
|
+
via query
|
90
|
+
when different locale is included
|
91
|
+
in cookie
|
92
|
+
behaves like handled_with_expected_locale
|
93
|
+
should use expected locale
|
94
|
+
behaves like remember_expected_locale
|
95
|
+
should remember expected locale
|
96
|
+
in header
|
97
|
+
behaves like handled_with_expected_locale
|
98
|
+
should use expected locale
|
99
|
+
behaves like remember_expected_locale
|
100
|
+
should remember expected locale
|
101
|
+
in cookie & header
|
102
|
+
behaves like handled_with_expected_locale
|
103
|
+
should use expected locale
|
104
|
+
behaves like remember_expected_locale
|
105
|
+
should remember expected locale
|
106
|
+
via cookie
|
107
|
+
when different locale is included
|
108
|
+
in header
|
109
|
+
behaves like handled_with_expected_locale
|
110
|
+
should use expected locale
|
111
|
+
behaves like remember_no_locale
|
112
|
+
should not remember any locale
|
113
|
+
:
|
114
|
+
```
|
115
|
+
|
67
116
|
## Development
|
68
117
|
|
69
118
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -17,13 +17,11 @@ module Rack
|
|
17
17
|
def call(env)
|
18
18
|
request = Request.new env
|
19
19
|
I18n.with_locale(request.detect_locale params_key: @params_key, cookie_key: @cookie_key) do
|
20
|
+
env['rack.locale'] = I18n.locale.to_s
|
20
21
|
status, headers, body = @app.call(env)
|
21
22
|
response = Response.new body, status, headers
|
22
23
|
if request.explicit_locale.present?
|
23
|
-
response.remember_locale
|
24
|
-
request.explicit_locale,
|
25
|
-
**@cookie_options.merge(key: @cookie_key)
|
26
|
-
)
|
24
|
+
response.remember_locale request.explicit_locale, key: @cookie_key, **@cookie_options
|
27
25
|
end
|
28
26
|
response.finish
|
29
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-locale_memorable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|