rack-i18n_locale_switcher 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ = 0.3.0
2
+ Removed support for storing the locale in the session
3
+
1
4
  = 0.2.0 / 2011-11-24
2
5
  Better test coverage
3
6
 
data/README.md CHANGED
@@ -1,3 +1,49 @@
1
1
  # Rack::I18nLocaleSwitcher
2
2
 
3
- This Rack middleware determines the I18n language from various sources.
3
+ [![alt text][2]][1]
4
+
5
+ [1]: http://travis-ci.org/#!/christoph-buente/rack-i18n_locale_switcher
6
+ [2]: https://secure.travis-ci.org/christoph-buente/rack-i18n_locale_switcher.png
7
+
8
+ This Rack middleware determines the I18n language from various sources.
9
+
10
+
11
+
12
+ A language or locale, can be encode within an HTTP requests in various ways. Let's have a look at the following request url:
13
+
14
+ http://es.example.it/tr/?locale=de
15
+
16
+ To extract the correct language from such a request, you probably don't want to hardcode it into you application. This middleware extracts the desired locale from this request in the following order:
17
+
18
+ * request parameter (de, german)
19
+ * url path (tr, turkish)
20
+ * subdomain (es, spanish)
21
+ * top level domain (it, italian)
22
+ * HTTP Accept-language header (not visible in the url, but could be something completely different)
23
+
24
+ Sound's good, gimme the code!
25
+
26
+ ## Rails
27
+
28
+ # file application.rb
29
+
30
+ require 'rack/i18n_locale_switcher'
31
+ config.middleware.use(Rack::I18nLocaleSwitcher)
32
+
33
+ ## Sinatra
34
+
35
+ require 'rack/i18n_locale_switcher'
36
+ use Rack::I18nLocaleSwitcher, :i18n_locale_switcher
37
+
38
+
39
+ Q: Ok, but where does the locale go?
40
+
41
+ A: The middleware uses the ruby internationalization gem [i18n](http://rubygems.org/gems/i18n), which stores the locale in a variable. You can use this variable in your app as
42
+
43
+ I18n.locale
44
+
45
+ Q: How can I define, which locales are available?
46
+
47
+ A: You can set the available locales before using instantiation the middleware.
48
+
49
+ I18n.available_locales = [:de, :en, :es, :it, :tr ]
data/Rakefile CHANGED
@@ -2,9 +2,9 @@
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('rack-i18n_locale_switcher', '0.2.3') do |p|
5
+ Echoe.new('rack-i18n_locale_switcher', '0.3.0') do |p|
6
6
 
7
- p.description = "Detects the current locale from url, domain, parameter, session or accept header."
7
+ p.description = "Detects the current locale from url, domain, parameter or accept header."
8
8
  p.url = "http://github.com/christoph-buente/rack-i18n_locale_switcher"
9
9
  p.author = ["Christoph Bünte", "Andreas Korth"]
10
10
  p.email = ["info@christophbuente.de", "andreas.korth@gmail.com"]
@@ -9,11 +9,8 @@ module Rack
9
9
 
10
10
  def call(env)
11
11
  request = Rack::Request.new(env)
12
-
13
- session = request.session
14
12
  locale = extract_locale(request)
15
- I18n.locale = session["locale"] = (is_present?(locale) ? locale : I18n.default_locale)
16
-
13
+ I18n.locale = (is_present?(locale) ? locale : I18n.default_locale)
17
14
  @app.call cleanup_env(env)
18
15
  end
19
16
 
@@ -44,11 +41,6 @@ module Rack
44
41
  locale if is_available?(locale)
45
42
  end
46
43
 
47
- def extract_locale_from_session(request)
48
- locale = request.session['locale']
49
- locale if is_available?(locale)
50
- end
51
-
52
44
  def extract_locale_from_accept_language(request)
53
45
  if lang = request.env["HTTP_ACCEPT_LANGUAGE"]
54
46
  lang = lang.split(",").map { |l|
@@ -68,7 +60,6 @@ module Rack
68
60
  extract_locale_from_path(request) ||
69
61
  extract_locale_from_subdomain(request) ||
70
62
  extract_locale_from_tld(request) ||
71
- extract_locale_from_session(request) ||
72
63
  extract_locale_from_accept_language(request))
73
64
  symbolize_locale(locale)
74
65
  end
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rack-i18n_locale_switcher"
5
- s.version = "0.2.3"
5
+ s.version = "0.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Christoph B\u{fc}nte, Andreas Korth"]
9
- s.date = "2011-11-24"
10
- s.description = "Detects the current locale from url, domain, parameter, session or accept header."
9
+ s.date = "2011-11-25"
10
+ s.description = "Detects the current locale from url, domain, parameter or accept header."
11
11
  s.email = ["info@christophbuente.de", "andreas.korth@gmail.com"]
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md", "lib/rack/i18n_locale_switcher.rb"]
13
13
  s.files = ["CHANGELOG", "LICENSE", "Manifest", "README.md", "Rakefile", "lib/rack/i18n_locale_switcher.rb", "rack-i18n_locale_switcher.gemspec", "spec/i18n_locale_switcher_spec.rb", "spec/spec_helper.rb"]
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = "rack-i18n_locale_switcher"
18
18
  s.rubygems_version = "1.8.11"
19
- s.summary = "Detects the current locale from url, domain, parameter, session or accept header."
19
+ s.summary = "Detects the current locale from url, domain, parameter or accept header."
20
20
 
21
21
  if s.respond_to? :specification_version then
22
22
  s.specification_version = 3
@@ -33,7 +33,6 @@ describe "Rack::I18nLocaleSwitcher" do
33
33
  get '/', :locale => 'xx'
34
34
  I18n.locale.should eql(I18n.default_locale)
35
35
  end
36
-
37
36
  end
38
37
 
39
38
  context 'from path prefix ' do
@@ -53,12 +52,10 @@ describe "Rack::I18nLocaleSwitcher" do
53
52
 
54
53
  context 'from top level domain' do
55
54
 
56
-
57
55
  it "should set the I18n locale" do
58
56
  get 'http://example.de/'
59
57
  I18n.locale.should eql(:de)
60
58
  end
61
-
62
59
  end
63
60
 
64
61
  context 'from accept-language header' do
@@ -67,19 +64,5 @@ describe "Rack::I18nLocaleSwitcher" do
67
64
  get '/' , {}, {'HTTP_ACCEPT_LANGUAGE' => "de, de-de,en;q=0.5"}
68
65
  I18n.locale.should eql(:de)
69
66
  end
70
-
71
67
  end
72
-
73
- context 'from session' do
74
- it "should set the locale to whatever locale is set in the session" do
75
-
76
- get '/', {}, {'rack.session' => {'locale' => 'de'}}
77
- I18n.locale.should eql(:de)
78
- end
79
-
80
- end
81
-
82
- context 'from default' do
83
- end
84
-
85
68
  end
metadata CHANGED
@@ -1,97 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rack-i18n_locale_switcher
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
4
5
  prerelease:
5
- version: 0.2.3
6
6
  platform: ruby
7
- authors:
8
- - "Christoph B\xC3\xBCnte, Andreas Korth"
7
+ authors:
8
+ - Christoph Bünte, Andreas Korth
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-11-24 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rack
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2154406440 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: i18n
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2154406440
25
+ - !ruby/object:Gem::Dependency
26
+ name: i18n
27
+ requirement: &2154405980 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: domainatrix
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2154405980
36
+ - !ruby/object:Gem::Dependency
37
+ name: domainatrix
38
+ requirement: &2154405520 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: echoe
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2154405520
47
+ - !ruby/object:Gem::Dependency
48
+ name: echoe
49
+ requirement: &2154405060 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
57
55
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rspec
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2154405060
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &2154404600 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
68
66
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: rack-test
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2154404600
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack-test
71
+ requirement: &2154404140 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
79
77
  type: :development
80
- version_requirements: *id006
81
- description: Detects the current locale from url, domain, parameter, session or accept header.
82
- email:
78
+ prerelease: false
79
+ version_requirements: *2154404140
80
+ description: Detects the current locale from url, domain, parameter or accept header.
81
+ email:
83
82
  - info@christophbuente.de
84
83
  - andreas.korth@gmail.com
85
84
  executables: []
86
-
87
85
  extensions: []
88
-
89
- extra_rdoc_files:
86
+ extra_rdoc_files:
90
87
  - CHANGELOG
91
88
  - LICENSE
92
89
  - README.md
93
90
  - lib/rack/i18n_locale_switcher.rb
94
- files:
91
+ files:
95
92
  - CHANGELOG
96
93
  - LICENSE
97
94
  - Manifest
@@ -103,35 +100,32 @@ files:
103
100
  - spec/spec_helper.rb
104
101
  homepage: http://github.com/christoph-buente/rack-i18n_locale_switcher
105
102
  licenses: []
106
-
107
103
  post_install_message:
108
- rdoc_options:
104
+ rdoc_options:
109
105
  - --line-numbers
110
106
  - --inline-source
111
107
  - --title
112
108
  - Rack-i18n_locale_switcher
113
109
  - --main
114
110
  - README.md
115
- require_paths:
111
+ require_paths:
116
112
  - lib
117
- required_ruby_version: !ruby/object:Gem::Requirement
113
+ required_ruby_version: !ruby/object:Gem::Requirement
118
114
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: "0"
123
- required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
120
  none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- version: "1.2"
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '1.2'
129
125
  requirements: []
130
-
131
126
  rubyforge_project: rack-i18n_locale_switcher
132
127
  rubygems_version: 1.8.11
133
128
  signing_key:
134
129
  specification_version: 3
135
- summary: Detects the current locale from url, domain, parameter, session or accept header.
130
+ summary: Detects the current locale from url, domain, parameter or accept header.
136
131
  test_files: []
137
-