spree_change_locale 0.4 → 0.5
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.
- data/Gemfile +2 -0
- data/Gemfile.lock +6 -3
- data/README.md +3 -0
- data/Versionfile +1 -1
- data/app/controllers/base_controller_decorator.rb +1 -21
- data/app/helpers/locale_helper.rb +6 -4
- data/config/routes.rb +1 -1
- data/lib/spree_change_locale/engine.rb +2 -0
- data/lib/spree_change_locale/i18n_extension.rb +16 -0
- data/lib/spree_change_locale/instance_methods.rb +28 -0
- data/lib/spree_change_locale.rb +1 -0
- data/spec/controllers/locale_controller_spec.rb +21 -0
- data/spec/helpers/locale_helper_spec.rb +12 -1
- data/spec/spec_helper.rb +1 -1
- data/spree_change_locale.gemspec +2 -2
- metadata +16 -3
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
spree_change_locale (0.
|
5
|
-
|
4
|
+
spree_change_locale (0.5)
|
5
|
+
http_accept_language (~> 1.0)
|
6
|
+
spree_core (>= 0.70.0)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: http://rubygems.org/
|
@@ -81,6 +82,7 @@ GEM
|
|
81
82
|
json (>= 1.4.6)
|
82
83
|
highline (1.5.1)
|
83
84
|
hike (1.2.1)
|
85
|
+
http_accept_language (1.0.2)
|
84
86
|
i18n (0.6.0)
|
85
87
|
jquery-rails (1.0.16)
|
86
88
|
railties (~> 3.0)
|
@@ -203,7 +205,7 @@ GEM
|
|
203
205
|
treetop (1.4.10)
|
204
206
|
polyglot
|
205
207
|
polyglot (>= 0.3.1)
|
206
|
-
tzinfo (0.3.
|
208
|
+
tzinfo (0.3.31)
|
207
209
|
xpath (0.1.4)
|
208
210
|
nokogiri (~> 1.3)
|
209
211
|
|
@@ -214,6 +216,7 @@ DEPENDENCIES
|
|
214
216
|
capybara (= 1.0.1)
|
215
217
|
cucumber-rails (= 1.0.0)
|
216
218
|
database_cleaner (= 0.6.7)
|
219
|
+
http_accept_language (~> 1.0)
|
217
220
|
nokogiri
|
218
221
|
rspec-rails (= 2.6.1)
|
219
222
|
ruby-debug19
|
data/README.md
CHANGED
data/Versionfile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"0.70.x" => { :version => "0.
|
1
|
+
"0.70.x" => { :version => "0.5" }
|
@@ -1,28 +1,8 @@
|
|
1
1
|
Spree::BaseController.class_eval do
|
2
|
-
helper_method :enabled_locales
|
3
2
|
before_filter :set_locale, :if => proc { !session[:locale] }
|
4
3
|
|
5
4
|
protected
|
6
|
-
def enabled_locales
|
7
|
-
@enabled_locales ||= (Spree::Config.get(:enabled_locales) || get_locales || I18n.available_locales || [I18n.default_locale]).collect(&:intern)
|
8
|
-
end
|
9
|
-
|
10
|
-
# inspired by: https://github.com/greendog/spree_locales_dropdown
|
11
|
-
def get_locales
|
12
|
-
path = Rails.root.join('config', 'locales')
|
13
|
-
items = Dir.glob(Rails.root.join('config', 'locales', '*.yml')).collect { |filename| File.basename(filename.gsub(/\.yml$/, '')) }
|
14
|
-
items unless items.blank?
|
15
|
-
# Dir.glob(Rails.root.join('config', 'locales', '*.yml')).inject([]) do |mem, filename|
|
16
|
-
# locale_file = YAML.load_file(path.join(filename))
|
17
|
-
# str = File.basename(filename.gsub(/\.yml$/, ''))
|
18
|
-
# str = str.gsub("_spree", "")
|
19
|
-
# mem << str if locale_file.has_key?(str)
|
20
|
-
#
|
21
|
-
# mem
|
22
|
-
# end
|
23
|
-
end
|
24
|
-
|
25
5
|
def set_locale
|
26
|
-
session[:locale] = I18n.locale = (request.preferred_language_from(enabled_locales) || request.compatible_language_from(enabled_locales) || I18n.default_locale).intern
|
6
|
+
session[:locale] = I18n.locale = (request.preferred_language_from(I18n.enabled_locales) || request.compatible_language_from(I18n.enabled_locales) || I18n.default_locale).intern
|
27
7
|
end
|
28
8
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
module LocaleHelper
|
2
|
+
# mirror I18n extension
|
3
|
+
def enabled_locales; I18n.enabled_locales end
|
4
|
+
def locale_enabled?(locale); I18n.locale_enabled?(locale) end
|
5
|
+
|
2
6
|
def link_to_locale(locale, name = nil)
|
3
|
-
link_to name || locale_name(locale), "/#{locale}#{request.path}"
|
7
|
+
link_to name || locale_name(locale), "/#{locale}#{request && request.path}" if locale_enabled?(locale)
|
4
8
|
end
|
5
9
|
def locale_name(locale)
|
6
|
-
I18n.t
|
7
|
-
#
|
8
|
-
# t("locale.#{locale.to_s.sub('-', '_')}")
|
10
|
+
I18n.t(:this_file_language, :locale => locale) if locale_enabled?(locale)
|
9
11
|
end
|
10
12
|
end
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
# Add your extension routes here
|
3
|
-
match '/:locale/(*return_path)' => 'locale#set', :constraints => {:locale => /\b#{
|
3
|
+
match '/:locale/(*return_path)' => 'locale#set', :constraints => {:locale => /\b#{I18n.enabled_locales.join('|')}\b/}, :as => :change_locale
|
4
4
|
end
|
@@ -17,6 +17,8 @@ module SpreeChangeLocale
|
|
17
17
|
Dir.glob(File.join(File.dirname(__FILE__), "../../app/overrides/*.rb")).each do |c|
|
18
18
|
Rails.application.config.cache_classes ? require(c) : load(c)
|
19
19
|
end
|
20
|
+
|
21
|
+
I18n.send :extend, I18nExtension
|
20
22
|
end
|
21
23
|
|
22
24
|
config.to_prepare &method(:activate).to_proc
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module I18nExtension
|
2
|
+
def enabled_locales
|
3
|
+
@@enabled_locales ||= (Spree::Config.get(:enabled_locales) || get_locales || I18n.available_locales || [I18n.default_locale]).collect(&:intern)
|
4
|
+
end
|
5
|
+
def locale_enabled?(locale)
|
6
|
+
enabled_locales.include?(locale.intern)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
# inspired by: https://github.com/greendog/spree_locales_dropdown
|
11
|
+
def get_locales
|
12
|
+
path = Rails.root.join('config', 'locales')
|
13
|
+
items = Dir.glob(Rails.root.join('config', 'locales', '*.yml')).collect { |filename| File.basename(filename.gsub(/\.yml$/, '')) }
|
14
|
+
items unless items.blank?
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module SpreeChangeLocale
|
2
|
+
module InstanceMethods
|
3
|
+
def enabled_locales
|
4
|
+
@enabled_locales ||= (Spree::Config.get(:enabled_locales) || get_locales || I18n.available_locales || [I18n.default_locale]).collect(&:intern)
|
5
|
+
end
|
6
|
+
|
7
|
+
# inspired by: https://github.com/greendog/spree_locales_dropdown
|
8
|
+
def get_locales
|
9
|
+
path = Rails.root.join('config', 'locales')
|
10
|
+
items = Dir.glob(Rails.root.join('config', 'locales', '*.yml')).collect { |filename| File.basename(filename.gsub(/\.yml$/, '')) }
|
11
|
+
items unless items.blank?
|
12
|
+
# Dir.glob(Rails.root.join('config', 'locales', '*.yml')).inject([]) do |mem, filename|
|
13
|
+
# locale_file = YAML.load_file(path.join(filename))
|
14
|
+
# str = File.basename(filename.gsub(/\.yml$/, ''))
|
15
|
+
# str = str.gsub("_spree", "")
|
16
|
+
# mem << str if locale_file.has_key?(str)
|
17
|
+
#
|
18
|
+
# mem
|
19
|
+
# end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Methods
|
24
|
+
class << self
|
25
|
+
include InstanceMethods
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/spree_change_locale.rb
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe LocaleController do
|
4
|
+
# it "should use Spree::BaseController" do
|
5
|
+
# controller.should be_an_instance_of(Spree::BaseController)
|
6
|
+
# end
|
4
7
|
|
8
|
+
it "should redirect to index with session[:locale] set to :es" do
|
9
|
+
session[:locale].should be_nil
|
10
|
+
get 'set', :locale => 'es'
|
11
|
+
session[:locale].should == :es
|
12
|
+
response.should redirect_to(root_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should redirect to index with session[:locale] set to :en and not :ru" do
|
16
|
+
get 'set', :locale => 'ru'
|
17
|
+
session[:locale].should_not == :ru
|
18
|
+
session[:locale].should == :en
|
19
|
+
response.should redirect_to(root_path)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should give url for Spanish" do
|
23
|
+
{ :get => "/es" }.should route_to(:controller => "locale", :action => "set", :locale => "es")
|
24
|
+
{ :get => "/ru" }.should_not route_to(:controller => "locale", :action => "set", :locale => "es")
|
25
|
+
end
|
5
26
|
end
|
@@ -11,5 +11,16 @@ require 'spec_helper'
|
|
11
11
|
# end
|
12
12
|
# end
|
13
13
|
describe LocaleHelper do
|
14
|
-
|
14
|
+
it "should return Spanish" do
|
15
|
+
locale_name(:es).should == 'Spanish'
|
16
|
+
end
|
17
|
+
it "should not return Russian" do
|
18
|
+
locale_name(:ru).should_not == 'Russian'
|
19
|
+
end
|
20
|
+
it "should link to Spanish locale" do
|
21
|
+
link_to_locale(:es).should == '<a href="/es">Spanish</a>'
|
22
|
+
end
|
23
|
+
it "should not link to Russian locale" do
|
24
|
+
link_to_locale(:ru).should_not == '<a href="/ru">translation missing: ru.this_file_language</a>'
|
25
|
+
end
|
15
26
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spree_change_locale.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.platform = Gem::Platform::RUBY
|
4
4
|
s.name = 'spree_change_locale'
|
5
|
-
s.version = '0.
|
5
|
+
s.version = '0.5'
|
6
6
|
s.summary = 'Easy locale change for Spree'
|
7
7
|
s.description = 'Easy locale change for Spree'
|
8
8
|
s.required_ruby_version = '>= 1.8.7'
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.requirements << 'none'
|
19
19
|
|
20
20
|
s.add_dependency 'spree_core', '>= 0.70.0'
|
21
|
-
|
21
|
+
s.add_dependency 'http_accept_language', '~> 1.0'
|
22
22
|
s.add_development_dependency 'rspec-rails'
|
23
23
|
end
|
24
24
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: spree_change_locale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: "0.
|
5
|
+
version: "0.5"
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- humancopy
|
@@ -24,16 +24,27 @@ dependencies:
|
|
24
24
|
type: :runtime
|
25
25
|
version_requirements: *id001
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
|
-
name:
|
27
|
+
name: http_accept_language
|
28
28
|
prerelease: false
|
29
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "1.0"
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec-rails
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
30
41
|
none: false
|
31
42
|
requirements:
|
32
43
|
- - ">="
|
33
44
|
- !ruby/object:Gem::Version
|
34
45
|
version: "0"
|
35
46
|
type: :development
|
36
|
-
version_requirements: *
|
47
|
+
version_requirements: *id003
|
37
48
|
description: Easy locale change for Spree
|
38
49
|
email: info@humancopy.net
|
39
50
|
executables: []
|
@@ -65,6 +76,8 @@ files:
|
|
65
76
|
- lib/generators/spree_change_locale/install/install_generator.rb
|
66
77
|
- lib/spree_change_locale.rb
|
67
78
|
- lib/spree_change_locale/engine.rb
|
79
|
+
- lib/spree_change_locale/i18n_extension.rb
|
80
|
+
- lib/spree_change_locale/instance_methods.rb
|
68
81
|
- script/rails
|
69
82
|
- spec/controllers/locale_controller_spec.rb
|
70
83
|
- spec/helpers/locale_helper_spec.rb
|