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.
@@ -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
@@ -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
@@ -6,6 +6,7 @@ module HttpAcceptLanguage
6
6
 
7
7
  def call(env)
8
8
  env["http_accept_language.parser"] = Parser.new(env["HTTP_ACCEPT_LANGUAGE"])
9
+
9
10
  def env.http_accept_language
10
11
  self["http_accept_language.parser"]
11
12
  end
@@ -1,10 +1,15 @@
1
1
  module HttpAcceptLanguage
2
2
  class Railtie < ::Rails::Railtie
3
- initializer "http_accept_language.add_middleware" do |app|
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
@@ -1,3 +1,3 @@
1
1
  module HttpAcceptLanguage
2
- VERSION = '2.0.2'
2
+ VERSION = '2.0.4'
3
3
  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.2
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: 2014-07-31 00:00:00.000000000 Z
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: &70189984251240 !ruby/object:Gem::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: *70189984251240
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: &70189984250560 !ruby/object:Gem::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: *70189984250560
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: &70189984250020 !ruby/object:Gem::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: *70189984250020
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: &70189984249400 !ruby/object:Gem::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: *70189984249400
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: &70189984248760 !ruby/object:Gem::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: *70189984248760
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: &70189984248160 !ruby/object:Gem::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: *70189984248160
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: &70189984247480 !ruby/object:Gem::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: *70189984247480
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: 1.8.6
159
+ rubygems_version: 2.2.2
145
160
  signing_key:
146
- specification_version: 3
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: