http_accept_language 2.0.2 → 2.0.4
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 +7 -0
- data/README.md +8 -2
- data/lib/http_accept_language.rb +13 -1
- data/lib/http_accept_language/auto_locale.rb +16 -0
- data/lib/http_accept_language/middleware.rb +1 -0
- data/lib/http_accept_language/railtie.rb +7 -2
- data/lib/http_accept_language/version.rb +1 -1
- data/spec/auto_locale_spec.rb +44 -0
- metadata +62 -45
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e8f322e914fee571f93b3f8c009a4132f9263f21
|
4
|
+
data.tar.gz: 50a48cb1200a9120866d829d812d91a3d407bb34
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 89a7c19b3a2df5f32995ee264df668fca0e98865be74e74441b5882e096f4e9862f0e2f4266c3d4fd199a78a0a68afcd54dfbeddc7253a3f1fe35deaea03b2da
|
7
|
+
data.tar.gz: 0f3be427948e4b2a74a1727b70d84a6b51b025e6c0cef8360df8a9ccaab9cd429aceed6d65e93b20dd3c0a6efc539ddf46c70ee4c927f7064e185c1b64047cb1
|
data/README.md
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
A gem which helps you detect the users preferred language, as sent by the "Accept-Language" HTTP header.
|
4
4
|
|
5
|
-
The algorithm is based on [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html), with one exception:
|
6
|
-
when a user requests "en-US" and "en" is an available language, "en" is deemed compatible with "en-US".
|
5
|
+
The algorithm is based on [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html), with one exception:
|
6
|
+
when a user requests "en-US" and "en" is an available language, "en" is deemed compatible with "en-US".
|
7
7
|
The RFC specifies that the requested language must either exactly match the available language or must exactly match a prefix of the available language. This means that when the user requests "en" and "en-US" is available, "en-US" would be compatible, but not the other way around. This is usually not what you're looking for.
|
8
8
|
|
9
9
|
Since version 2.0, this gem is Rack middleware.
|
@@ -43,6 +43,12 @@ class SomeController < ApplicationController
|
|
43
43
|
end
|
44
44
|
```
|
45
45
|
|
46
|
+
If you want to enable this behavior by default in all of your controllers, add the following in an initializer (`config/initializers/http_accept_language.rb`, for example):
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
HttpAcceptLanguage.automatically_set_locale = true
|
50
|
+
```
|
51
|
+
|
46
52
|
To use the middleware in any Rack application, simply add the middleware:
|
47
53
|
|
48
54
|
``` ruby
|
data/lib/http_accept_language.rb
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
module HttpAcceptLanguage
|
2
|
+
@@automatically_set_locale = false
|
3
|
+
|
4
|
+
def self.automatically_set_locale?
|
5
|
+
@@automatically_set_locale
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.automatically_set_locale=(set_locale)
|
9
|
+
@@automatically_set_locale = set_locale
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
1
13
|
require 'http_accept_language/parser'
|
2
14
|
require 'http_accept_language/middleware'
|
3
|
-
require 'http_accept_language/railtie' if defined?(Rails::Railtie)
|
15
|
+
require 'http_accept_language/railtie' if defined?(Rails::Railtie)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "active_support/concern"
|
2
|
+
require "i18n"
|
3
|
+
|
4
|
+
module HttpAcceptLanguage
|
5
|
+
module AutoLocale
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
before_filter :set_locale
|
10
|
+
end
|
11
|
+
|
12
|
+
def set_locale
|
13
|
+
I18n.locale = http_accept_language.compatible_language_from(I18n.available_locales)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,10 +1,15 @@
|
|
1
1
|
module HttpAcceptLanguage
|
2
2
|
class Railtie < ::Rails::Railtie
|
3
|
-
initializer "http_accept_language.
|
3
|
+
initializer "http_accept_language.setup" do |app|
|
4
4
|
app.middleware.use Middleware
|
5
|
-
|
5
|
+
|
6
6
|
ActiveSupport.on_load :action_controller do
|
7
7
|
include EasyAccess
|
8
|
+
|
9
|
+
if HttpAcceptLanguage.automatically_set_locale?
|
10
|
+
require "http_accept_language/auto_locale"
|
11
|
+
include AutoLocale
|
12
|
+
end
|
8
13
|
end
|
9
14
|
end
|
10
15
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'http_accept_language/auto_locale'
|
2
|
+
|
3
|
+
describe HttpAcceptLanguage::AutoLocale do
|
4
|
+
let(:controller_class) do
|
5
|
+
Class.new do
|
6
|
+
def self.before_filter(dummy)
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
def http_accept_language
|
11
|
+
HttpAcceptLanguage::Parser.new("ja,en-us;q=0.7,en;q=0.3")
|
12
|
+
end
|
13
|
+
|
14
|
+
include HttpAcceptLanguage::AutoLocale
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:controller) { controller_class.new }
|
19
|
+
|
20
|
+
context "available languages includes accept_languages" do
|
21
|
+
before do
|
22
|
+
I18n.available_locales = [:en, :ja]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "take a suitable locale" do
|
26
|
+
controller.set_locale
|
27
|
+
|
28
|
+
expect(I18n.locale).to eq(:ja)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "available languages not includes accept_languages" do
|
33
|
+
before do
|
34
|
+
I18n.available_locales = [:de]
|
35
|
+
I18n.default_locale = :fr
|
36
|
+
end
|
37
|
+
|
38
|
+
it "take default_locale" do
|
39
|
+
controller.set_locale
|
40
|
+
|
41
|
+
expect(I18n.locale).to eq(:fr)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
metadata
CHANGED
@@ -1,93 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http_accept_language
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- iain
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: rspec
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: rack-test
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - ">="
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: guard-rspec
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ">="
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rails
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - ">="
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: 3.2.6
|
66
76
|
type: :development
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.2.6
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: cucumber
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
|
-
- -
|
87
|
+
- - ">="
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: '0'
|
77
90
|
type: :development
|
78
91
|
prerelease: false
|
79
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
80
97
|
- !ruby/object:Gem::Dependency
|
81
98
|
name: aruba
|
82
|
-
requirement:
|
83
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
84
100
|
requirements:
|
85
|
-
- -
|
101
|
+
- - ">="
|
86
102
|
- !ruby/object:Gem::Version
|
87
103
|
version: '0'
|
88
104
|
type: :development
|
89
105
|
prerelease: false
|
90
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
91
111
|
description: Find out which locale the user preferes by reading the languages they
|
92
112
|
specified in their browser
|
93
113
|
email:
|
@@ -96,8 +116,8 @@ executables: []
|
|
96
116
|
extensions: []
|
97
117
|
extra_rdoc_files: []
|
98
118
|
files:
|
99
|
-
- .gitignore
|
100
|
-
- .rspec
|
119
|
+
- ".gitignore"
|
120
|
+
- ".rspec"
|
101
121
|
- Gemfile
|
102
122
|
- Guardfile
|
103
123
|
- README.md
|
@@ -108,47 +128,44 @@ files:
|
|
108
128
|
- features/support/rails_driver.rb
|
109
129
|
- http_accept_language.gemspec
|
110
130
|
- lib/http_accept_language.rb
|
131
|
+
- lib/http_accept_language/auto_locale.rb
|
111
132
|
- lib/http_accept_language/middleware.rb
|
112
133
|
- lib/http_accept_language/parser.rb
|
113
134
|
- lib/http_accept_language/railtie.rb
|
114
135
|
- lib/http_accept_language/version.rb
|
136
|
+
- spec/auto_locale_spec.rb
|
115
137
|
- spec/middleware_spec.rb
|
116
138
|
- spec/parser_spec.rb
|
117
139
|
homepage: https://github.com/iain/http_accept_language
|
118
140
|
licenses:
|
119
141
|
- MIT
|
142
|
+
metadata: {}
|
120
143
|
post_install_message:
|
121
144
|
rdoc_options: []
|
122
145
|
require_paths:
|
123
146
|
- lib
|
124
147
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
148
|
requirements:
|
127
|
-
- -
|
149
|
+
- - ">="
|
128
150
|
- !ruby/object:Gem::Version
|
129
151
|
version: '0'
|
130
|
-
segments:
|
131
|
-
- 0
|
132
|
-
hash: 3432813774343238940
|
133
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
-
none: false
|
135
153
|
requirements:
|
136
|
-
- -
|
154
|
+
- - ">="
|
137
155
|
- !ruby/object:Gem::Version
|
138
156
|
version: '0'
|
139
|
-
segments:
|
140
|
-
- 0
|
141
|
-
hash: 3432813774343238940
|
142
157
|
requirements: []
|
143
158
|
rubyforge_project: http_accept_language
|
144
|
-
rubygems_version:
|
159
|
+
rubygems_version: 2.2.2
|
145
160
|
signing_key:
|
146
|
-
specification_version:
|
161
|
+
specification_version: 4
|
147
162
|
summary: Find out which locale the user preferes by reading the languages they specified
|
148
163
|
in their browser
|
149
164
|
test_files:
|
150
165
|
- features/rails_integration.feature
|
151
166
|
- features/steps/rails.rb
|
152
167
|
- features/support/rails_driver.rb
|
168
|
+
- spec/auto_locale_spec.rb
|
153
169
|
- spec/middleware_spec.rb
|
154
170
|
- spec/parser_spec.rb
|
171
|
+
has_rdoc:
|