http_accept_language 2.0.2 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: