localized 0.0.4 → 0.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 +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +5 -2
- data/lib/localized/convert.rb +23 -17
- data/localized.gemspec +1 -1
- data/spec/config/locales/en-US.yml +8 -1
- data/spec/lib/localized/convert_spec.rb +44 -8
- data/spec/spec_helper.rb +2 -0
- metadata +2 -2
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -32,9 +32,12 @@ easier than if a user was using YAML.
|
|
32
32
|
|
33
33
|
Localized::Convert.to_csv('/a/file.csv')
|
34
34
|
|
35
|
-
|
35
|
+
## TODO
|
36
|
+
|
37
|
+
1. #from_csv
|
38
|
+
|
39
|
+
2. Support for google docs so translations can be synchronized
|
36
40
|
|
37
|
-
Comeing
|
38
41
|
|
39
42
|
## Contributing
|
40
43
|
|
data/lib/localized/convert.rb
CHANGED
@@ -3,15 +3,16 @@ module Localized::Convert
|
|
3
3
|
|
4
4
|
def self.to_csv(file)
|
5
5
|
CSV.open(file, "wb") do |csv|
|
6
|
-
csv << ["Token",
|
6
|
+
csv << ["Token", *locale_columns]
|
7
7
|
locale_cache.keys.sort.each do |token|
|
8
8
|
row = [token]
|
9
|
-
|
9
|
+
locale_columns.each do |locale|
|
10
10
|
row << locale_cache[token][locale]
|
11
11
|
end
|
12
12
|
csv << row
|
13
13
|
end
|
14
14
|
end
|
15
|
+
nil
|
15
16
|
end
|
16
17
|
|
17
18
|
def self.load_cache
|
@@ -26,12 +27,11 @@ module Localized::Convert
|
|
26
27
|
def self.locale_cache
|
27
28
|
@locale_cache = begin
|
28
29
|
rows = {}
|
29
|
-
columns = Hash[
|
30
|
-
|
31
|
-
translations[locale].each do |key, value| # each translation
|
32
|
-
|
33
|
-
rows[
|
34
|
-
rows[key_string] = rows[key_string].merge(locale => value_string)
|
30
|
+
columns = Hash[locale_columns.map{|l| [l, nil]}]
|
31
|
+
Localized::Config.supported_locales.each do |locale| # each locale
|
32
|
+
formalize_keys(nil, (translations[locale] || {})).each do |(key, value)| # each translation
|
33
|
+
rows[key] ||= columns
|
34
|
+
rows[key] = rows[key].merge(locale => value)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
rows.reject { |k, r| r.values.compact.blank? }
|
@@ -41,16 +41,22 @@ module Localized::Convert
|
|
41
41
|
private
|
42
42
|
|
43
43
|
def self.formalize_keys(key, value)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
key_string += ".#{key}"
|
49
|
-
key_string, value_string = formalize_keys(key_string, new_value)
|
44
|
+
pairs = []
|
45
|
+
if value.is_a?(Hash)
|
46
|
+
value.each do |new_key, new_value|
|
47
|
+
pairs << formalize_keys("#{key}#{key && "."}#{new_key}", new_value)
|
50
48
|
end
|
51
|
-
|
52
|
-
|
49
|
+
elsif value.is_a? String
|
50
|
+
pairs << [key, value]
|
53
51
|
end
|
54
|
-
[
|
52
|
+
Hash[*pairs.flatten].to_a
|
55
53
|
end
|
54
|
+
|
55
|
+
def self.locale_columns
|
56
|
+
@locale_columns ||= [
|
57
|
+
Localized::Config.default_locale,
|
58
|
+
*Localized::Config.supported_locales.reject { |t| t == Localized::Config.default_locale }
|
59
|
+
]
|
60
|
+
end
|
61
|
+
|
56
62
|
end
|
data/localized.gemspec
CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'localized'
|
3
3
|
s.author = 'Paul Hepworth'
|
4
4
|
s.email = 'paul<dot>hepworth<at>peppyheppy<dot>com'
|
5
|
-
s.version = '0.0.
|
5
|
+
s.version = '0.0.5'
|
6
6
|
s.homepage = 'https://github.com/peppyheppy/localized'
|
7
7
|
s.date = '2011-07-09'
|
8
8
|
s.summary = "A ruby on rails gem that provides locale setting support through the subdomain (in a box)"
|
@@ -2,7 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Localized::Convert do
|
4
4
|
include Localized
|
5
|
-
before :
|
5
|
+
before :each do
|
6
|
+
Rails.stub!(:root).and_return(Pathname.new(File.join(File.dirname(__FILE__),'..', '..')))
|
6
7
|
I18n.load_path = Dir[File.join('spec/config/locales/*.yml')]
|
7
8
|
end
|
8
9
|
|
@@ -23,31 +24,66 @@ describe Localized::Convert do
|
|
23
24
|
Convert.locale_cache['one.two.three'][:'es-ES'].should be_nil
|
24
25
|
end
|
25
26
|
|
27
|
+
it "should have values set for one deep" do
|
28
|
+
Convert.locale_cache['five'][:'en-US'].should == 'special'
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should have values set for two deep" do
|
32
|
+
Convert.locale_cache['one.four'][:'en-US'].should == 'hello'
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should have values set for three deep" do
|
36
|
+
Convert.locale_cache['one.two.six'][:'en-US'].should == 'moroni'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should have values set for six deep" do
|
40
|
+
Convert.locale_cache['seven.eight.nine.ten.eleven'][:'en-US'].should == 'truth'
|
41
|
+
end
|
42
|
+
|
26
43
|
it "should not have empty valueless keys" do
|
27
44
|
Convert.locale_cache.should_not have_key 'one.two'
|
28
45
|
end
|
46
|
+
|
47
|
+
it "should have the same keys that are listed in the localized config file" do
|
48
|
+
Convert.locale_cache['one.two.three'].keys.sort.should == Localized::Config.supported_locales.sort
|
49
|
+
end
|
29
50
|
end
|
30
51
|
|
31
52
|
describe "CSV export" do
|
32
53
|
it "should convert the locale cache to a CSV file" do
|
33
54
|
file = 'spec/test_csv.csv'
|
34
|
-
File.should_not exist file
|
55
|
+
#File.should_not exist file
|
35
56
|
Convert.to_csv(file)
|
36
57
|
File.should exist file
|
37
58
|
rows = CSV.read(file)
|
38
59
|
# header row
|
60
|
+
# ["Token", "en-US", "de-DE", "en-AU", "en-CA", "en-GB", "es-ES", "fr-FR", "it-IT", "ja-JP", "nl-NL", "sv-SE"]
|
39
61
|
rows.first[0].should == "Token"
|
40
62
|
rows.first[1].should == "en-US"
|
41
|
-
rows.first[2].should == "
|
42
|
-
rows.first[3].should == "
|
43
|
-
rows.first[4].should
|
63
|
+
rows.first[2].should == "de-DE"
|
64
|
+
rows.first[3].should == "en-AU"
|
65
|
+
rows.first[4].should == "en-CA"
|
66
|
+
rows.first[5].should == "en-GB"
|
67
|
+
rows.first[6].should == "es-ES"
|
68
|
+
rows.first[7].should == "fr-FR"
|
69
|
+
rows.first[8].should == "it-IT"
|
70
|
+
rows.first[9].should == "ja-JP"
|
71
|
+
rows.first[10].should == "nl-NL"
|
72
|
+
rows.first[11].should == "sv-SE"
|
44
73
|
|
45
74
|
# data row
|
46
|
-
|
47
|
-
rows.last[
|
75
|
+
# ["one.two.three", "three", nil, nil, nil, nil, nil, nil, nil, nil, nil, "another", nil]
|
76
|
+
rows.last[0].should == "seven.eight.nine.ten.eleven"
|
77
|
+
rows.last[1].should == "truth"
|
48
78
|
rows.last[2].should be_nil
|
49
|
-
rows.last[3].should
|
79
|
+
rows.last[3].should be_nil
|
50
80
|
rows.last[4].should be_nil
|
81
|
+
rows.last[5].should be_nil
|
82
|
+
rows.last[6].should be_nil
|
83
|
+
rows.last[7].should be_nil
|
84
|
+
rows.last[8].should be_nil
|
85
|
+
rows.last[9].should be_nil
|
86
|
+
rows.last[11].should be_nil
|
51
87
|
|
52
88
|
File.delete(file)
|
53
89
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: localized
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Paul Hepworth
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-09 00:00:00 -
|
13
|
+
date: 2011-07-09 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|