exvo_globalize 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,7 +14,7 @@ class GlobalizeTranslationsController < ApplicationController
14
14
  end
15
15
 
16
16
  def update
17
- if I18n.backend.store_flatten_translations(@globalize_app.fetch_translations)
17
+ if I18n.backend.store_nested_translations(@globalize_app.fetch_translations)
18
18
  flash.now[:notice] = 'Translations updated'
19
19
  else
20
20
  flash.now[:alert] = 'There was a problem while updating translations'
@@ -7,7 +7,7 @@ module I18n
7
7
  # returning a combined hash with translations from all chained backends
8
8
  def available_translations
9
9
  # reverse, so that the translations from the first backend (GlobalizeStore) overwrite/overshadow others
10
- backends.map { |backend| backend.available_translations }.reverse.inject(&:merge)
10
+ @available_translations ||= backends.map { |backend| backend.available_translations }.reverse.inject(&:merge)
11
11
  end
12
12
 
13
13
  # Return a hash only with Application translations
@@ -30,11 +30,22 @@ module I18n
30
30
  translations
31
31
  end
32
32
 
33
- # stores a whole Hash of flattened translations
33
+ # stores a whole Hash of nested translations (like those: { :en => { :session => { :title => 'Title' } } })
34
+ def store_nested_translations(translations_hash)
35
+ return false if translations_hash.blank?
36
+
37
+ translations_hash.reject { |locale, translations| locale.to_sym == :default_locale }.each do |locale, translations|
38
+ next if translations.blank?
39
+
40
+ store_translations(locale, translations)
41
+ end
42
+ end
43
+
44
+ # stores a whole Hash of flattened translations (like those: { :en => { 'session.title' => 'Title' } })
34
45
  def store_flatten_translations(translations_hash)
35
46
  return false if translations_hash.blank?
36
47
 
37
- translations_hash.reject { |key, value| key.to_sym == :default_locale }.each do |locale, translations|
48
+ translations_hash.reject { |locale, translations| locale.to_sym == :default_locale }.each do |locale, translations|
38
49
  next if translations.blank?
39
50
 
40
51
  translations.each do |key, value|
@@ -1,3 +1,3 @@
1
1
  module ExvoGlobalize
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -56,7 +56,7 @@ describe GlobalizeTranslationsController do
56
56
 
57
57
  describe "PUT :update" do
58
58
  let(:intro) { "Introduction" }
59
- let(:translations) { { :en => { :intro => intro } } }
59
+ let(:translations) { { :en => { :intro => { :title => intro } } } }
60
60
 
61
61
  before do
62
62
  controller.stub!(:require_admin).and_return(true)
@@ -65,7 +65,7 @@ describe GlobalizeTranslationsController do
65
65
  end
66
66
 
67
67
  it "updates the translations" do
68
- I18n.t(:intro).should eq(intro)
68
+ I18n.t(:title, :scope => :intro).should eq(intro)
69
69
  end
70
70
 
71
71
  it "sets a flash notice" do
@@ -21,6 +21,7 @@ describe ExvoGlobalize do
21
21
  context "translation storage" do
22
22
  let(:hello_world) { 'Hello world' }
23
23
  let(:hello_earth) { 'Hello Earth' }
24
+ let(:hello_mars) { 'Hello Mars' }
24
25
 
25
26
  it "stores a flatten translations hash" do
26
27
  I18n.backend.store_flatten_translations({ :en => { 'hello.world' => hello_world, 'hello.earth' => hello_earth } })
@@ -29,8 +30,13 @@ describe ExvoGlobalize do
29
30
  end
30
31
 
31
32
  it "stores a flatten translation" do
32
- I18n.backend.store_flatten_translation(I18n.locale, 'hello.earth', hello_earth)
33
- I18n.translate(:earth, :scope => [:hello]).should eql(hello_earth)
33
+ I18n.backend.store_flatten_translation(I18n.locale, 'hello.mars', hello_mars)
34
+ I18n.translate(:mars, :scope => [:hello]).should eql(hello_mars)
35
+ end
36
+
37
+ it "stores a nested translations hash" do
38
+ I18n.backend.store_nested_translations({ :en => { :nested => { :hello => hello_world } } })
39
+ I18n.translate(:hello, :scope => :nested).should eql(hello_world)
34
40
  end
35
41
 
36
42
  it "stores a nested translation" do
@@ -40,7 +46,7 @@ describe ExvoGlobalize do
40
46
  end
41
47
 
42
48
  it "falls back to the YAML file if the translation is missing in the GlobalizeStore backend (db)" do
43
- I18n.translate('yaml.title').should eq('YAML Title')
49
+ I18n.translate('yaml.title').should eq('YAML Nested Title')
44
50
  end
45
51
 
46
52
  it "prioritizes the translations from GlobalizeStore backend (db) over others" do
@@ -48,7 +54,11 @@ describe ExvoGlobalize do
48
54
  end
49
55
 
50
56
  it "lists available_translations from the Simple backend (YAML files)" do
51
- I18n.backend.simple.available_translations[:en][:title].should eq('YAML Title')
57
+ I18n.backend.simple.available_translations[:en][:yaml][:title].should eq('YAML Nested Title')
58
+ end
59
+
60
+ it "lists available app translations" do
61
+ I18n.backend.available_app_translations[:en][:helpers][:select].has_key?(:prompt).should be_true
52
62
  end
53
63
 
54
64
  it "excludes fixtures from app_translations and does so without breaking the I18n.load_path" do
@@ -3,7 +3,7 @@ en:
3
3
  title: YAML Title
4
4
 
5
5
  yaml:
6
- title: YAML Title
6
+ title: YAML Nested Title
7
7
 
8
8
  mail:
9
9
  one: "You have 1 message"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exvo_globalize
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Pawe\xC5\x82 Go\xC5\x9Bcicki"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-19 00:00:00 +02:00
18
+ date: 2011-08-29 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency