grosser-i18n_data 0.1.2 → 0.2.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.
- data/README.markdown +10 -10
- data/Rakefile +11 -11
- data/i18n_data.gemspec +8 -2
- data/lib/i18n_data/file_data_provider.rb +1 -1
- data/lib/i18n_data/live_data_provider.rb +1 -1
- data/lib/i18n_data.rb +1 -1
- data/spec/i18n_data/file_data_provider_spec.rb +6 -6
- data/spec/i18n_data/live_data_provider_spec.rb +2 -2
- data/spec/i18n_data_spec.rb +20 -20
- metadata +20 -2
data/README.markdown
CHANGED
|
@@ -23,23 +23,23 @@ Usage
|
|
|
23
23
|
sudo gem install grosser-i18n_data
|
|
24
24
|
require 'i18n_data'
|
|
25
25
|
...
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
I18nData.languages # {"DE"=>"German",...}
|
|
27
|
+
I18nData.languages('DE') # {"DE"=>"Deutsch",...}
|
|
28
|
+
I18nData.languages('FR') # {"DE"=>"Allemand",...}
|
|
29
29
|
...
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
I18nData.countries # {"DE"=>"Germany",...}
|
|
32
|
+
I18nData.countries('DE') # {"DE"=>"Deutschland",...}
|
|
33
33
|
...
|
|
34
34
|
|
|
35
35
|
#Not yet implemented...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
I18nData.language_code('German') # DE
|
|
37
|
+
I18nData.language_code('Deutsch') # DE
|
|
38
|
+
I18nData.language_code('Allemand') # DE
|
|
39
39
|
..
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
I18nData.country_code('Germany') # DE
|
|
42
|
+
I18nData.country_code('Deutschland') # DE
|
|
43
43
|
..
|
|
44
44
|
|
|
45
45
|
Data Providers
|
data/Rakefile
CHANGED
|
@@ -11,7 +11,7 @@ end
|
|
|
11
11
|
|
|
12
12
|
desc "write all languages to output"
|
|
13
13
|
task :all_languages do
|
|
14
|
-
|
|
14
|
+
I18nData.languages.keys.each do |lc|
|
|
15
15
|
`rake languages LANGUAGE=#{lc}`
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -20,13 +20,13 @@ desc "write languages to output/languages_{language}"
|
|
|
20
20
|
task :languages do
|
|
21
21
|
raise unless language = ENV['LANGUAGE']
|
|
22
22
|
`mkdir output -p`
|
|
23
|
-
data =
|
|
23
|
+
data = I18nData.languages(language.upcase)
|
|
24
24
|
File.open("output/languages_#{language.downcase}.yml",'w') {|f|f.puts data.to_yaml}
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
desc "write all countries to output"
|
|
28
28
|
task :all_countries do
|
|
29
|
-
|
|
29
|
+
I18nData.languages.keys.each do |lc|
|
|
30
30
|
`rake countries LANGUAGE=#{lc}`
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -35,7 +35,7 @@ desc "write countries to output/countries_{language}"
|
|
|
35
35
|
task :countries do
|
|
36
36
|
raise unless language = ENV['LANGUAGE']
|
|
37
37
|
`mkdir output -p`
|
|
38
|
-
data =
|
|
38
|
+
data = I18nData.countries(language.upcase)
|
|
39
39
|
File.open("output/countries_#{language.downcase}.yml",'w') {|f|f.puts data.to_yaml}
|
|
40
40
|
end
|
|
41
41
|
|
|
@@ -45,10 +45,10 @@ task :example_output do
|
|
|
45
45
|
|
|
46
46
|
#all names for germany, france, united kingdom and unites states
|
|
47
47
|
['DE','FR','GB','US'].each do |cc|
|
|
48
|
-
names =
|
|
48
|
+
names = I18nData.languages.keys.map do |lc|
|
|
49
49
|
begin
|
|
50
|
-
[
|
|
51
|
-
rescue
|
|
50
|
+
[I18nData.countries(lc)[cc], I18nData.languages[lc]]
|
|
51
|
+
rescue I18nData::NoOnlineTranslationAvaiable
|
|
52
52
|
nil
|
|
53
53
|
end
|
|
54
54
|
end
|
|
@@ -58,22 +58,22 @@ task :example_output do
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
desc "write cache for
|
|
61
|
+
desc "write cache for I18nData::FileDataProvider"
|
|
62
62
|
task :write_cache_for_file_data_provider do
|
|
63
63
|
require 'i18n_data/file_data_provider'
|
|
64
64
|
require 'i18n_data/live_data_provider'
|
|
65
|
-
|
|
65
|
+
I18nData::FileDataProvider.write_cache(I18nData::LiveDataProvider)
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
require 'echoe'
|
|
69
69
|
|
|
70
|
-
Echoe.new('i18n_data', '0.
|
|
70
|
+
Echoe.new('i18n_data', '0.2.0') do |p|
|
|
71
71
|
p.description = "country/language names and 2-letter-code pairs, in 85 languages, for country/language "
|
|
72
72
|
p.url = "http://github.com/grosser/i18n_data"
|
|
73
73
|
p.author = "Michael Grosser"
|
|
74
74
|
p.email = "grosser.michael@gmail.com"
|
|
75
75
|
p.ignore_pattern = ["tmp/*", "script/*", "nbproject/*", "nbproject/*/*", "output/*", "example_output/*"]
|
|
76
|
-
p.dependencies = [] #requires activesupport, but crashes on require when activesupport is already loaded WTF!
|
|
76
|
+
p.dependencies = ['rexml','open-uri'] #requires activesupport, but crashes on require when activesupport is already loaded WTF!
|
|
77
77
|
p.development_dependencies = ['echoe','spec','mocha','activesupport']
|
|
78
78
|
end
|
|
79
79
|
|
data/i18n_data.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{i18n_data}
|
|
5
|
-
s.version = "0.
|
|
5
|
+
s.version = "0.2.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 = ["Michael Grosser"]
|
|
9
|
-
s.date = %q{2009-
|
|
9
|
+
s.date = %q{2009-02-02}
|
|
10
10
|
s.description = %q{country/language names and 2-letter-code pairs, in 85 languages, for country/language}
|
|
11
11
|
s.email = %q{grosser.michael@gmail.com}
|
|
12
12
|
s.extra_rdoc_files = ["lib/i18n_data/file_data_provider.rb", "lib/i18n_data/live_data_provider.rb", "lib/i18n_data.rb", "README.markdown"]
|
|
@@ -24,17 +24,23 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
s.specification_version = 2
|
|
25
25
|
|
|
26
26
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
27
|
+
s.add_runtime_dependency(%q<rexml>, [">= 0"])
|
|
28
|
+
s.add_runtime_dependency(%q<open-uri>, [">= 0"])
|
|
27
29
|
s.add_development_dependency(%q<echoe>, [">= 0"])
|
|
28
30
|
s.add_development_dependency(%q<spec>, [">= 0"])
|
|
29
31
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
|
30
32
|
s.add_development_dependency(%q<activesupport>, [">= 0"])
|
|
31
33
|
else
|
|
34
|
+
s.add_dependency(%q<rexml>, [">= 0"])
|
|
35
|
+
s.add_dependency(%q<open-uri>, [">= 0"])
|
|
32
36
|
s.add_dependency(%q<echoe>, [">= 0"])
|
|
33
37
|
s.add_dependency(%q<spec>, [">= 0"])
|
|
34
38
|
s.add_dependency(%q<mocha>, [">= 0"])
|
|
35
39
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
|
36
40
|
end
|
|
37
41
|
else
|
|
42
|
+
s.add_dependency(%q<rexml>, [">= 0"])
|
|
43
|
+
s.add_dependency(%q<open-uri>, [">= 0"])
|
|
38
44
|
s.add_dependency(%q<echoe>, [">= 0"])
|
|
39
45
|
s.add_dependency(%q<spec>, [">= 0"])
|
|
40
46
|
s.add_dependency(%q<mocha>, [">= 0"])
|
data/lib/i18n_data.rb
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
require File.join(File.dirname(__FILE__),'..',"spec_helper")
|
|
2
2
|
require 'i18n_data/file_data_provider'
|
|
3
3
|
|
|
4
|
-
describe
|
|
4
|
+
describe I18nData::FileDataProvider do
|
|
5
5
|
before do
|
|
6
|
-
`rm -f #{
|
|
6
|
+
`rm -f #{I18nData::FileDataProvider.send(:cache_for,"XX","YY")}`
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def read(x,y)
|
|
10
|
-
|
|
10
|
+
I18nData::FileDataProvider.codes(x,y)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
it "preserves data when writing and then reading" do
|
|
14
14
|
data = {"x"=>"y","z"=>"w"}
|
|
15
|
-
|
|
15
|
+
I18nData::FileDataProvider.send(:write_to_file,data,"XX","YY")
|
|
16
16
|
read("XX","YY").should == data
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
it "does not write empty data sets" do
|
|
20
|
-
|
|
21
|
-
lambda{read("XX","YY")}.should raise_error
|
|
20
|
+
I18nData::FileDataProvider.send(:write_to_file,{},"XX","YY")
|
|
21
|
+
lambda{read("XX","YY")}.should raise_error I18nData::NoTranslationAvailable
|
|
22
22
|
end
|
|
23
23
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require File.join(File.dirname(__FILE__),'..',"spec_helper")
|
|
2
2
|
require 'i18n_data/live_data_provider'
|
|
3
3
|
|
|
4
|
-
describe
|
|
4
|
+
describe I18nData::LiveDataProvider do
|
|
5
5
|
describe :po_to_hash do
|
|
6
6
|
def po_to_hash(text)
|
|
7
|
-
|
|
7
|
+
I18nData::LiveDataProvider.send(:po_to_hash,text)
|
|
8
8
|
end
|
|
9
9
|
it "parses po file into translations" do
|
|
10
10
|
text = <<EOF
|
data/spec/i18n_data_spec.rb
CHANGED
|
@@ -3,74 +3,74 @@ require File.expand_path("spec_helper", File.dirname(__FILE__))
|
|
|
3
3
|
NUM_2_LETTER_LANGUAGES = 185
|
|
4
4
|
NUM_COUNTRIES = 246
|
|
5
5
|
|
|
6
|
-
describe
|
|
6
|
+
describe I18nData do
|
|
7
7
|
require "i18n_data/live_data_provider"
|
|
8
8
|
require "i18n_data/file_data_provider"
|
|
9
|
-
[
|
|
9
|
+
[I18nData::LiveDataProvider,I18nData::FileDataProvider].each do |provider|
|
|
10
10
|
describe "using #{provider}" do
|
|
11
11
|
before :all do
|
|
12
|
-
|
|
12
|
+
I18nData.data_provider = provider
|
|
13
13
|
end
|
|
14
14
|
describe :languages do
|
|
15
15
|
it "raises NoTranslationAvailable for unavailable languages" do
|
|
16
|
-
lambda{
|
|
16
|
+
lambda{I18nData.languages('XX')}.should raise_error(I18nData::NoTranslationAvailable)
|
|
17
17
|
end
|
|
18
18
|
describe :english do
|
|
19
19
|
it "does not contain blanks" do
|
|
20
|
-
|
|
20
|
+
I18nData.languages.detect {|k,v| k.blank? or v.blank?}.should == nil
|
|
21
21
|
end
|
|
22
22
|
it "has english as default" do
|
|
23
|
-
|
|
23
|
+
I18nData.languages['DE'].should == 'German'
|
|
24
24
|
end
|
|
25
25
|
it "contains all languages" do
|
|
26
|
-
|
|
26
|
+
I18nData.languages.size.should == NUM_2_LETTER_LANGUAGES
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
describe :translated do
|
|
30
30
|
it "is translated" do
|
|
31
|
-
|
|
31
|
+
I18nData.languages('DE')['DE'].should == 'Deutsch'
|
|
32
32
|
end
|
|
33
33
|
it "contains all languages" do
|
|
34
|
-
|
|
34
|
+
I18nData.languages('DE').size.should == NUM_2_LETTER_LANGUAGES
|
|
35
35
|
end
|
|
36
36
|
it "has english names for not-translateable languages" do
|
|
37
|
-
|
|
37
|
+
I18nData.languages('IS')['HA'].should == I18nData.languages['HA']
|
|
38
38
|
end
|
|
39
39
|
it "does not contain blanks" do
|
|
40
|
-
|
|
40
|
+
I18nData.languages('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
|
|
41
41
|
end
|
|
42
42
|
it "is written in unicode" do
|
|
43
|
-
|
|
43
|
+
I18nData.languages('DE')['DA'].should == 'Dänisch'
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
describe :countries do
|
|
48
48
|
describe :english do
|
|
49
49
|
it "has english as default" do
|
|
50
|
-
|
|
50
|
+
I18nData.countries['DE'].should == 'Germany'
|
|
51
51
|
end
|
|
52
52
|
it "does not contain blanks" do
|
|
53
|
-
|
|
53
|
+
I18nData.countries.detect {|k,v| k.blank? or v.blank?}.should == nil
|
|
54
54
|
end
|
|
55
55
|
it "contains all countries" do
|
|
56
|
-
|
|
56
|
+
I18nData.countries.size.should == NUM_COUNTRIES
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
describe :translated do
|
|
60
60
|
it "is translated" do
|
|
61
|
-
|
|
61
|
+
I18nData.countries('DE')['DE'].should == 'Deutschland'
|
|
62
62
|
end
|
|
63
63
|
it "contains all countries" do
|
|
64
|
-
|
|
64
|
+
I18nData.countries('DE').size.should == NUM_COUNTRIES
|
|
65
65
|
end
|
|
66
66
|
it "has english names for not-translateable countries" do
|
|
67
|
-
|
|
67
|
+
I18nData.countries('IS')['PK'].should == I18nData.countries['PK']
|
|
68
68
|
end
|
|
69
69
|
it "does not contain blanks" do
|
|
70
|
-
|
|
70
|
+
I18nData.countries('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
|
|
71
71
|
end
|
|
72
72
|
it "is written in unicode" do
|
|
73
|
-
|
|
73
|
+
I18nData.countries('DE')['DK'].should == 'Dänemark'
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: grosser-i18n_data
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Grosser
|
|
@@ -9,9 +9,27 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-02-02 00:00:00 -08:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: rexml
|
|
17
|
+
version_requirement:
|
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
19
|
+
requirements:
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: "0"
|
|
23
|
+
version:
|
|
24
|
+
- !ruby/object:Gem::Dependency
|
|
25
|
+
name: open-uri
|
|
26
|
+
version_requirement:
|
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
28
|
+
requirements:
|
|
29
|
+
- - ">="
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: "0"
|
|
32
|
+
version:
|
|
15
33
|
- !ruby/object:Gem::Dependency
|
|
16
34
|
name: echoe
|
|
17
35
|
version_requirement:
|