http_accept_language 2.0.0 → 2.1.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 +7 -0
- data/.travis.yml +9 -0
- data/README.md +19 -3
- data/lib/http_accept_language.rb +1 -0
- data/lib/http_accept_language/auto_locale.rb +17 -0
- data/lib/http_accept_language/middleware.rb +1 -0
- data/lib/http_accept_language/parser.rb +35 -31
- data/lib/http_accept_language/railtie.rb +2 -2
- data/lib/http_accept_language/version.rb +1 -1
- data/spec/auto_locale_spec.rb +67 -0
- data/spec/middleware_spec.rb +4 -4
- data/spec/parser_spec.rb +20 -11
- metadata +62 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64deaf476a87d9192739905f051cd546124d358e
|
4
|
+
data.tar.gz: 5afdaecd6f46c4df2240ae700c0bd66bc131eba1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 077e921e1398f9925a8498c6bf0c77f54b65c8d7cf6082e77613da8f7599c07d732ef3610f965a276a6529c586e659542ba2c16dd28b04d8d42a9abd5df4fcc8
|
7
|
+
data.tar.gz: 99a4e05c30bc9102686dc890ac5acd63af862eeecfe679e96514aecdbdc6d7380a328c384eba2f8ecb00c32803cbba62d511e384b1b3b4df70f9629815790a48
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
# HttpAcceptLanguage
|
1
|
+
# HttpAcceptLanguage [](https://travis-ci.org/iain/http_accept_language)
|
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,22 @@ class SomeController < ApplicationController
|
|
43
43
|
end
|
44
44
|
```
|
45
45
|
|
46
|
+
If you want to enable this behavior by default in your controllers, you can just include the provided concern:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
class ApplicationController < ActionController::Base
|
50
|
+
include HttpAcceptLanguage::AutoLocale
|
51
|
+
|
52
|
+
#...
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
Then set available locales in `config/application.rb`:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
config.i18n.available_locales = %w(en nl de fr)
|
60
|
+
```
|
61
|
+
|
46
62
|
To use the middleware in any Rack application, simply add the middleware:
|
47
63
|
|
48
64
|
``` ruby
|
data/lib/http_accept_language.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module HttpAcceptLanguage
|
4
|
+
module AutoLocale
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
before_filter :set_locale
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def set_locale
|
14
|
+
I18n.locale = http_accept_language.compatible_language_from(I18n.available_locales) || I18n.default_locale
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
module HttpAcceptLanguage
|
2
|
-
|
3
2
|
class Parser
|
4
|
-
|
5
3
|
attr_accessor :header
|
6
4
|
|
7
5
|
def initialize(header)
|
@@ -17,20 +15,26 @@ module HttpAcceptLanguage
|
|
17
15
|
# # => [ 'nl-NL', 'nl-BE', 'nl', 'en-US', 'en' ]
|
18
16
|
#
|
19
17
|
def user_preferred_languages
|
20
|
-
@user_preferred_languages ||=
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
18
|
+
@user_preferred_languages ||= begin
|
19
|
+
header.to_s.gsub(/\s+/, '').split(',').map do |language|
|
20
|
+
locale, quality = language.split(';q=')
|
21
|
+
raise ArgumentError, 'Not correctly formatted' unless locale =~ /^[a-z\-0-9]+|\*$/i
|
22
|
+
|
23
|
+
locale = locale.downcase.gsub(/-[a-z0-9]+$/i, &:upcase) # Uppercase territory
|
24
|
+
locale = nil if locale == '*' # Ignore wildcards
|
25
|
+
|
26
|
+
quality = quality ? quality.to_f : 1.0
|
27
|
+
|
28
|
+
[locale, quality]
|
29
|
+
end.sort do |(_, left), (_, right)|
|
30
|
+
right <=> left
|
31
|
+
end.map(&:first).compact
|
32
|
+
rescue ArgumentError # Just rescue anything if the browser messed up badly.
|
33
|
+
[]
|
28
34
|
end
|
29
|
-
rescue # Just rescue anything if the browser messed up badly.
|
30
|
-
[]
|
31
35
|
end
|
32
36
|
|
33
|
-
# Sets the user languages preference,
|
37
|
+
# Sets the user languages preference, overriding the browser
|
34
38
|
#
|
35
39
|
def user_preferred_languages=(languages)
|
36
40
|
@user_preferred_languages = languages
|
@@ -44,7 +48,7 @@ module HttpAcceptLanguage
|
|
44
48
|
# # => 'nl'
|
45
49
|
#
|
46
50
|
def preferred_language_from(array)
|
47
|
-
(user_preferred_languages & array.
|
51
|
+
(user_preferred_languages & array.map(&:to_s)).first
|
48
52
|
end
|
49
53
|
|
50
54
|
# Returns the first of the user_preferred_languages that is compatible
|
@@ -55,10 +59,13 @@ module HttpAcceptLanguage
|
|
55
59
|
# request.compatible_language_from I18n.available_locales
|
56
60
|
#
|
57
61
|
def compatible_language_from(available_languages)
|
58
|
-
user_preferred_languages.map do |
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
user_preferred_languages.map do |preferred| #en-US
|
63
|
+
preferred = preferred.downcase
|
64
|
+
preferred_language = preferred.split('-', 2).first
|
65
|
+
|
66
|
+
available_languages.find do |available| # en
|
67
|
+
available = available.to_s.downcase
|
68
|
+
preferred == available || preferred_language == available.split('-', 2).first
|
62
69
|
end
|
63
70
|
end.compact.first
|
64
71
|
end
|
@@ -70,12 +77,8 @@ module HttpAcceptLanguage
|
|
70
77
|
# [ja_JP-x1, en-US-x4, en_UK-x5, fr-FR-x3] => [ja-JP, en-US, en-UK, fr-FR]
|
71
78
|
#
|
72
79
|
def sanitize_available_locales(available_languages)
|
73
|
-
available_languages.map do |
|
74
|
-
|
75
|
-
|
76
|
-
split_locale.map do |e|
|
77
|
-
e unless e.match(/x|[0-9*]/)
|
78
|
-
end.compact.join("-")
|
80
|
+
available_languages.map do |available|
|
81
|
+
available.to_s.split(/[_-]/).reject { |part| part.start_with?("x") }.join("-")
|
79
82
|
end
|
80
83
|
end
|
81
84
|
|
@@ -90,15 +93,16 @@ module HttpAcceptLanguage
|
|
90
93
|
#
|
91
94
|
def language_region_compatible_from(available_languages)
|
92
95
|
available_languages = sanitize_available_locales(available_languages)
|
93
|
-
user_preferred_languages.map do |
|
94
|
-
|
95
|
-
|
96
|
-
|
96
|
+
user_preferred_languages.map do |preferred| #en-US
|
97
|
+
preferred = preferred.downcase
|
98
|
+
preferred_language = preferred.split('-', 2).first
|
99
|
+
|
100
|
+
lang_group = available_languages.select do |available| # en
|
101
|
+
preferred_language == available.downcase.split('-', 2).first
|
97
102
|
end
|
98
|
-
|
103
|
+
|
104
|
+
lang_group.find { |lang| lang.downcase == preferred } || lang_group.first #en-US, en-UK
|
99
105
|
end.compact.first
|
100
106
|
end
|
101
|
-
|
102
107
|
end
|
103
|
-
|
104
108
|
end
|
@@ -2,7 +2,7 @@ module HttpAcceptLanguage
|
|
2
2
|
class Railtie < ::Rails::Railtie
|
3
3
|
initializer "http_accept_language.add_middleware" do |app|
|
4
4
|
app.middleware.use Middleware
|
5
|
-
|
5
|
+
|
6
6
|
ActiveSupport.on_load :action_controller do
|
7
7
|
include EasyAccess
|
8
8
|
end
|
@@ -11,7 +11,7 @@ module HttpAcceptLanguage
|
|
11
11
|
|
12
12
|
module EasyAccess
|
13
13
|
def http_accept_language
|
14
|
-
@http_accept_language ||= request.env["http_accept_language.parser"] || Parser.new("")
|
14
|
+
@http_accept_language ||= request.env["http_accept_language.parser"] || Parser.new(request.env["HTTP_ACCEPT_LANGUAGE"])
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
require 'http_accept_language/auto_locale'
|
3
|
+
require 'http_accept_language/parser'
|
4
|
+
require 'http_accept_language/middleware'
|
5
|
+
|
6
|
+
describe HttpAcceptLanguage::AutoLocale do
|
7
|
+
let(:controller_class) do
|
8
|
+
Class.new do
|
9
|
+
def initialize(header = nil)
|
10
|
+
super()
|
11
|
+
@header = header
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.before_filter(dummy)
|
15
|
+
# dummy method
|
16
|
+
end
|
17
|
+
|
18
|
+
def http_accept_language
|
19
|
+
@http_accept_language ||= HttpAcceptLanguage::Parser.new(@header)
|
20
|
+
end
|
21
|
+
|
22
|
+
include HttpAcceptLanguage::AutoLocale
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
let(:controller) { controller_class.new("ja,en-us;q=0.7,en;q=0.3") }
|
27
|
+
|
28
|
+
context "available languages includes accept_languages" do
|
29
|
+
before do
|
30
|
+
I18n.available_locales = [:en, :ja]
|
31
|
+
end
|
32
|
+
|
33
|
+
it "take a suitable locale" do
|
34
|
+
controller.send(:set_locale)
|
35
|
+
|
36
|
+
expect(I18n.locale).to eq(:ja)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "available languages do not include accept_languages" do
|
41
|
+
before do
|
42
|
+
I18n.available_locales = [:es]
|
43
|
+
I18n.default_locale = :es
|
44
|
+
end
|
45
|
+
|
46
|
+
it "set the locale to default" do
|
47
|
+
no_accept_language_controller.send(:set_locale)
|
48
|
+
|
49
|
+
expect(I18n.locale).to eq(:es)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:no_accept_language_controller) { controller_class.new() }
|
54
|
+
|
55
|
+
context "default locale is ja" do
|
56
|
+
before do
|
57
|
+
I18n.available_locales = [:en, :ja]
|
58
|
+
I18n.default_locale = :ja
|
59
|
+
end
|
60
|
+
|
61
|
+
it "set the locale to default" do
|
62
|
+
no_accept_language_controller.send(:set_locale)
|
63
|
+
|
64
|
+
expect(I18n.locale).to eq(:ja)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/spec/middleware_spec.rb
CHANGED
@@ -33,20 +33,20 @@ describe "Rack integration" do
|
|
33
33
|
app = lambda { |env| env }
|
34
34
|
middleware = HttpAcceptLanguage::Middleware.new(app)
|
35
35
|
middleware.call(env)
|
36
|
-
env.http_accept_language.user_preferred_languages.
|
36
|
+
expect(env.http_accept_language.user_preferred_languages).to eq %w{en}
|
37
37
|
env["HTTP_ACCEPT_LANGUAGE"] = "de"
|
38
38
|
middleware.call(env)
|
39
|
-
env.http_accept_language.user_preferred_languages.
|
39
|
+
expect(env.http_accept_language.user_preferred_languages).to eq %w{de}
|
40
40
|
end
|
41
41
|
|
42
42
|
it "decodes the HTTP_ACCEPT_LANGUAGE header" do
|
43
43
|
request_with_header 'en-us,en-gb;q=0.8,en;q=0.6,es-419'
|
44
|
-
r['user_preferred_languages'].
|
44
|
+
expect(r['user_preferred_languages']).to eq %w{en-US es-419 en-GB en}
|
45
45
|
end
|
46
46
|
|
47
47
|
it "finds the first available language" do
|
48
48
|
request_with_header 'en-us,en-gb;q=0.8,en;q=0.6,es-419', :preferred => %w(en en-GB)
|
49
|
-
r['preferred_language_from'].
|
49
|
+
expect(r['preferred_language_from']).to eq 'en-GB'
|
50
50
|
end
|
51
51
|
|
52
52
|
def request_with_header(header, params = {})
|
data/spec/parser_spec.rb
CHANGED
@@ -8,49 +8,58 @@ describe HttpAcceptLanguage::Parser do
|
|
8
8
|
|
9
9
|
it "should return empty array" do
|
10
10
|
parser.header = nil
|
11
|
-
parser.user_preferred_languages.
|
11
|
+
expect(parser.user_preferred_languages).to eq []
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should properly split" do
|
15
|
-
parser.user_preferred_languages.
|
15
|
+
expect(parser.user_preferred_languages).to eq %w{en-US es-419 en-GB en}
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should ignore jambled header" do
|
19
19
|
parser.header = 'odkhjf89fioma098jq .,.,'
|
20
|
-
parser.user_preferred_languages.
|
20
|
+
expect(parser.user_preferred_languages).to eq []
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should properly respect whitespace" do
|
24
24
|
parser.header = 'en-us, en-gb; q=0.8,en;q = 0.6,es-419'
|
25
|
-
parser.user_preferred_languages.
|
25
|
+
expect(parser.user_preferred_languages).to eq %w{en-US es-419 en-GB en}
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should find first available language" do
|
29
|
-
parser.preferred_language_from(%w{en en-GB}).
|
29
|
+
expect(parser.preferred_language_from(%w{en en-GB})).to eq "en-GB"
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should find first compatible language" do
|
33
|
-
parser.compatible_language_from(%w{en-hk}).
|
34
|
-
parser.compatible_language_from(%w{en}).
|
33
|
+
expect(parser.compatible_language_from(%w{en-hk})).to eq "en-hk"
|
34
|
+
expect(parser.compatible_language_from(%w{en})).to eq "en"
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should find first compatible from user preferred" do
|
38
38
|
parser.header = 'en-us,de-de'
|
39
|
-
parser.compatible_language_from(%w{de en}).
|
39
|
+
expect(parser.compatible_language_from(%w{de en})).to eq 'en'
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should accept symbols as available languages" do
|
43
43
|
parser.header = 'en-us'
|
44
|
-
parser.compatible_language_from([:"en-HK"]).
|
44
|
+
expect(parser.compatible_language_from([:"en-HK"])).to eq :"en-HK"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should accept and ignore wildcards" do
|
48
|
+
parser.header = 'en-US,en,*'
|
49
|
+
expect(parser.compatible_language_from([:"en-US"])).to eq :"en-US"
|
45
50
|
end
|
46
51
|
|
47
52
|
it "should sanitize available language names" do
|
48
|
-
parser.sanitize_available_locales(%w{en_UK-x3 en-US-x1 ja_JP-x2 pt-BR-x5}).
|
53
|
+
expect(parser.sanitize_available_locales(%w{en_UK-x3 en-US-x1 ja_JP-x2 pt-BR-x5 es-419-x4})).to eq ["en-UK", "en-US", "ja-JP", "pt-BR", "es-419"]
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should accept available language names as symbols and return them as strings" do
|
57
|
+
expect(parser.sanitize_available_locales([:en, :"en-US", :ca, :"ca-ES"])).to eq ["en", "en-US", "ca", "ca-ES"]
|
49
58
|
end
|
50
59
|
|
51
60
|
it "should find most compatible language from user preferred" do
|
52
61
|
parser.header = 'ja,en-gb,en-us,fr-fr'
|
53
|
-
parser.language_region_compatible_from(%w{en-UK en-US ja-JP}).
|
62
|
+
expect(parser.language_region_compatible_from(%w{en-UK en-US ja-JP})).to eq "ja-JP"
|
54
63
|
end
|
55
64
|
|
56
65
|
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.
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0
|
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: 2016-10-27 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,9 @@ executables: []
|
|
96
116
|
extensions: []
|
97
117
|
extra_rdoc_files: []
|
98
118
|
files:
|
99
|
-
- .gitignore
|
100
|
-
- .rspec
|
119
|
+
- ".gitignore"
|
120
|
+
- ".rspec"
|
121
|
+
- ".travis.yml"
|
101
122
|
- Gemfile
|
102
123
|
- Guardfile
|
103
124
|
- README.md
|
@@ -108,41 +129,43 @@ files:
|
|
108
129
|
- features/support/rails_driver.rb
|
109
130
|
- http_accept_language.gemspec
|
110
131
|
- lib/http_accept_language.rb
|
132
|
+
- lib/http_accept_language/auto_locale.rb
|
111
133
|
- lib/http_accept_language/middleware.rb
|
112
134
|
- lib/http_accept_language/parser.rb
|
113
135
|
- lib/http_accept_language/railtie.rb
|
114
136
|
- lib/http_accept_language/version.rb
|
137
|
+
- spec/auto_locale_spec.rb
|
115
138
|
- spec/middleware_spec.rb
|
116
139
|
- spec/parser_spec.rb
|
117
140
|
homepage: https://github.com/iain/http_accept_language
|
118
141
|
licenses:
|
119
142
|
- MIT
|
143
|
+
metadata: {}
|
120
144
|
post_install_message:
|
121
145
|
rdoc_options: []
|
122
146
|
require_paths:
|
123
147
|
- lib
|
124
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
149
|
requirements:
|
127
|
-
- -
|
150
|
+
- - ">="
|
128
151
|
- !ruby/object:Gem::Version
|
129
152
|
version: '0'
|
130
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
154
|
requirements:
|
133
|
-
- -
|
155
|
+
- - ">="
|
134
156
|
- !ruby/object:Gem::Version
|
135
157
|
version: '0'
|
136
158
|
requirements: []
|
137
159
|
rubyforge_project: http_accept_language
|
138
|
-
rubygems_version:
|
160
|
+
rubygems_version: 2.5.1
|
139
161
|
signing_key:
|
140
|
-
specification_version:
|
162
|
+
specification_version: 4
|
141
163
|
summary: Find out which locale the user preferes by reading the languages they specified
|
142
164
|
in their browser
|
143
165
|
test_files:
|
144
166
|
- features/rails_integration.feature
|
145
167
|
- features/steps/rails.rb
|
146
168
|
- features/support/rails_driver.rb
|
169
|
+
- spec/auto_locale_spec.rb
|
147
170
|
- spec/middleware_spec.rb
|
148
171
|
- spec/parser_spec.rb
|