grosser-i18n_data 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown ADDED
@@ -0,0 +1,58 @@
1
+ Problem
2
+ =======
3
+ - Present users coutries/languages in their language
4
+ - Convert a country/language-name to its code
5
+
6
+ Solution
7
+ ========
8
+ - A list of 2-letter-code/name pairs for all countries/languages in all languages
9
+ - A tool to convert a coutry/language name into 2-letter-code
10
+ - Write countries/language into a cache-file, and use this file for production applications languages/countries list
11
+
12
+ Containing
13
+ ==========
14
+ Translations through [pkg-isocodes](http://svn.debian.org/wsvn/pkg-isocodes/trunk/iso-codes/)
15
+ 185 Language codes (iso 639 - 2 letter)
16
+ in 66 Languages
17
+ 246 Country codes (iso 3166 - 2 letter)
18
+ in 85 Languages
19
+
20
+ Usage
21
+ =====
22
+
23
+ sudo gem install grosser-i18n_data
24
+ require 'i18n_data'
25
+ ...
26
+ I18nData.languages # {"DE"=>"German",...}
27
+ I18nData.languages('DE') # {"DE"=>"Deutsch",...}
28
+ I18nData.languages('FR') # {"DE"=>"Allemand",...}
29
+ ...
30
+
31
+ I18nData.countries # {"DE"=>"Germany",...}
32
+ I18nData.countries('DE') # {"DE"=>"Deutschland",...}
33
+ ...
34
+
35
+ #Not yet implemented...
36
+ I18nData.language_code('German') # DE
37
+ I18nData.language_code('Deutsch') # DE
38
+ I18nData.language_code('Allemand') # DE
39
+ ..
40
+
41
+ I18nData.country_code('Germany') # DE
42
+ I18nData.country_code('Deutschland') # DE
43
+ ..
44
+
45
+ Data Providers
46
+ ==============
47
+ - FileDataProvider: _FAST_ (default) (loading data from cache-files)
48
+ - LiveDataProvider: _SLOW_ (fetching up-to-date data from svn repos)
49
+
50
+ TODO
51
+ ====
52
+ - include other language/country code formats (3-letter codes...) ?
53
+
54
+ Author
55
+ ======
56
+ Michael Grosser
57
+ grosser.michael@gmail.com
58
+ Hereby placed under public domain, do what you want, just do not hold me accountable...
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 2
4
+ :patch: 3
data/lib/i18n_data.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'activesupport'
2
+ module I18nData
3
+ extend self
4
+
5
+ def languages(language_code='EN')
6
+ data_provider.codes(:languages,language_code.to_s.upcase)
7
+ end
8
+
9
+ def countries(language_code='EN')
10
+ data_provider.codes(:countries,language_code.to_s.upcase)
11
+ end
12
+
13
+ def data_provider
14
+ if @data_provider
15
+ @data_provider
16
+ else
17
+ require 'i18n_data/file_data_provider'
18
+ FileDataProvider
19
+ end
20
+ end
21
+
22
+ def data_provider=(provider)
23
+ @data_provider = provider
24
+ end
25
+
26
+ class NoTranslationAvailable < Exception
27
+ def to_s
28
+ "NoTranslationAvailable -- #{super}"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,56 @@
1
+ module I18nData
2
+ module FileDataProvider
3
+ DATA_SEPERATOR = ";;"
4
+ extend self
5
+
6
+ def codes(type,language_code)
7
+ unless data = read_from_file(type,language_code)
8
+ raise NoTranslationAvailable.new("#{type}-#{language_code}")
9
+ end
10
+ data
11
+ end
12
+
13
+ def write_cache(provider)
14
+ languages = provider.codes(:languages,'EN').keys
15
+ languages.each{|language_code|
16
+ [:languages,:countries].each {|type|
17
+ begin
18
+ data = provider.send(:codes,type,language_code)
19
+ write_to_file(data,type,language_code)
20
+ rescue NoTranslationAvailable
21
+ end
22
+ }
23
+ }
24
+ end
25
+
26
+ private
27
+
28
+ def read_from_file(type,language_code)
29
+ file = cache_for(type,language_code)
30
+ return nil unless File.exist?(file)
31
+ data = {}
32
+ IO.read(file).split("\n").each{|line|
33
+ code, translation = line.split(DATA_SEPERATOR)
34
+ data[code] = translation
35
+ }
36
+ data
37
+ end
38
+
39
+ def write_to_file(data,type,language_code)
40
+ return if data.empty?
41
+ file = cache_for(type,language_code)
42
+ FileUtils.mkdir_p(File.dirname(file))
43
+ File.open(file,'w') do |f|
44
+ f.puts data.map{|code,translation|"#{code}#{DATA_SEPERATOR}#{translation}"} * "\n"
45
+ end
46
+ end
47
+
48
+ def cache_for(type,language_code)
49
+ cache("#{type}-#{language_code}")
50
+ end
51
+
52
+ def cache(file)
53
+ File.join(File.dirname(__FILE__),'..','..','cache','file_data_provider',"#{file}.txt")
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,97 @@
1
+ require 'open-uri'
2
+ require 'rexml/document'
3
+ gem 'activesupport', '> 2.2'
4
+ require 'activesupport'
5
+
6
+ module I18nData
7
+ # fetches data online from debian svn
8
+ module LiveDataProvider
9
+ extend ActiveSupport::Memoizable
10
+ extend self
11
+
12
+ XML_CODES = {
13
+ :countries => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_3166/iso_3166.xml',
14
+ :languages => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_639/iso_639.xml'
15
+ }
16
+ TRANSLATIONS = {
17
+ :languages => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_639/',
18
+ :countries => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_3166/'
19
+ }
20
+
21
+ def codes(type,language_code)
22
+ language_code = language_code.upcase
23
+ if language_code == 'EN'
24
+ send("english_#{type}")
25
+ else
26
+ translated(type,language_code)
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def translate(type,language,to_language_code)
33
+ translated = translations(type,to_language_code)[language]
34
+ translated.to_s.empty? ? nil : translated
35
+ end
36
+
37
+ def translated(type,language_code)
38
+ translations = {}
39
+ send("english_#{type}").each do |code,name|
40
+ translation = translate(type,name,language_code)
41
+ translations[code] = translation ? translation : name
42
+ end
43
+ translations
44
+ end
45
+ memoize :translated
46
+
47
+ def translations(type,language_code)
48
+ begin
49
+ data = open(TRANSLATIONS[type]+"#{language_code.downcase}.po").readlines
50
+ rescue
51
+ raise NoTranslationAvailable.new("for #{type} and language code = #{language_code}")
52
+ end
53
+
54
+ po_to_hash(data)
55
+ end
56
+ memoize :translations
57
+
58
+ def english_languages
59
+ codes = {}
60
+ xml(:languages).elements.each('*/iso_639_entry') do |entry|
61
+ name = entry.attributes['name'].to_s.gsub("'","\\'")
62
+ code = entry.attributes['iso_639_1_code'].to_s.upcase
63
+ next if code.empty? or name.empty?
64
+ codes[code]=name
65
+ end
66
+ codes
67
+ end
68
+ memoize :english_languages
69
+
70
+ def english_countries
71
+ codes = {}
72
+ xml(:countries).elements.each('*/iso_3166_entry') do |entry|
73
+ name = entry.attributes['name'].to_s.gsub("'","\\'")
74
+ code = entry.attributes['alpha_2_code'].to_s.upcase
75
+ codes[code]=name
76
+ end
77
+ codes
78
+ end
79
+ memoize :english_countries
80
+
81
+ def po_to_hash(data)
82
+ names = data.select{|l| l =~ /^msgid/}.map{|line| line.match(/^msgid "(.*?)"/)[1]}
83
+ translations = data.select{|l| l =~ /^msgstr/}.map{|line| line.match(/^msgstr "(.*?)"/)[1]}
84
+
85
+ translated = {}
86
+ names.each_with_index do |name,index|
87
+ translated[name]=translations[index]
88
+ end
89
+ translated
90
+ end
91
+
92
+ def xml(type)
93
+ xml = open(XML_CODES[type]).read
94
+ REXML::Document.new(xml)
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,23 @@
1
+ require File.join(File.dirname(__FILE__),'..',"spec_helper")
2
+ require 'i18n_data/file_data_provider'
3
+
4
+ describe I18nData::FileDataProvider do
5
+ before do
6
+ `rm -f #{I18nData::FileDataProvider.send(:cache_for,"XX","YY")}`
7
+ end
8
+
9
+ def read(x,y)
10
+ I18nData::FileDataProvider.codes(x,y)
11
+ end
12
+
13
+ it "preserves data when writing and then reading" do
14
+ data = {"x"=>"y","z"=>"w"}
15
+ I18nData::FileDataProvider.send(:write_to_file,data,"XX","YY")
16
+ read("XX","YY").should == data
17
+ end
18
+
19
+ it "does not write empty data sets" do
20
+ I18nData::FileDataProvider.send(:write_to_file,{},"XX","YY")
21
+ lambda{read("XX","YY")}.should raise_error I18nData::NoTranslationAvailable
22
+ end
23
+ end
@@ -0,0 +1,40 @@
1
+ require File.join(File.dirname(__FILE__),'..',"spec_helper")
2
+ require 'i18n_data/live_data_provider'
3
+
4
+ describe I18nData::LiveDataProvider do
5
+ describe :po_to_hash do
6
+ def po_to_hash(text)
7
+ I18nData::LiveDataProvider.send(:po_to_hash,text)
8
+ end
9
+ it "parses po file into translations" do
10
+ text = <<EOF
11
+ # come comment msgstr
12
+ msgid "one"
13
+ msgstr "1"
14
+ EOF
15
+ po_to_hash(text).should == {"one"=>"1"}
16
+ end
17
+ it "keeps order of translations" do
18
+ text = <<EOF
19
+ msgid "one"
20
+ msgstr "1"
21
+ msgid "two"
22
+ msgstr ""
23
+ msgid "three"
24
+ msgstr "3"
25
+ EOF
26
+ po_to_hash(text).should == {"one"=>"1","two"=>"","three"=>"3"}
27
+ end
28
+ pending_it "finds x-line long translations" do
29
+ text = <<EOF
30
+ #. name for chu, cu
31
+ msgid ""
32
+ "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church "
33
+ "Slavonic"
34
+ msgstr "Kirchenslavisch"
35
+ EOF
36
+ long_name = "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic"
37
+ po_to_hash(text)[long_name].should == "Kirchenslavisch"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,79 @@
1
+ require File.expand_path("spec_helper", File.dirname(__FILE__))
2
+
3
+ NUM_2_LETTER_LANGUAGES = 185
4
+ NUM_COUNTRIES = 246
5
+
6
+ describe I18nData do
7
+ require "i18n_data/live_data_provider"
8
+ require "i18n_data/file_data_provider"
9
+ [I18nData::LiveDataProvider,I18nData::FileDataProvider].each do |provider|
10
+ describe "using #{provider}" do
11
+ before :all do
12
+ I18nData.data_provider = provider
13
+ end
14
+ describe :languages do
15
+ it "raises NoTranslationAvailable for unavailable languages" do
16
+ lambda{I18nData.languages('XX')}.should raise_error(I18nData::NoTranslationAvailable)
17
+ end
18
+ describe :english do
19
+ it "does not contain blanks" do
20
+ I18nData.languages.detect {|k,v| k.blank? or v.blank?}.should == nil
21
+ end
22
+ it "has english as default" do
23
+ I18nData.languages['DE'].should == 'German'
24
+ end
25
+ it "contains all languages" do
26
+ I18nData.languages.size.should == NUM_2_LETTER_LANGUAGES
27
+ end
28
+ end
29
+ describe :translated do
30
+ it "is translated" do
31
+ I18nData.languages('DE')['DE'].should == 'Deutsch'
32
+ end
33
+ it "contains all languages" do
34
+ I18nData.languages('DE').size.should == NUM_2_LETTER_LANGUAGES
35
+ end
36
+ it "has english names for not-translateable languages" do
37
+ I18nData.languages('IS')['HA'].should == I18nData.languages['HA']
38
+ end
39
+ it "does not contain blanks" do
40
+ I18nData.languages('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
41
+ end
42
+ it "is written in unicode" do
43
+ I18nData.languages('DE')['DA'].should == 'Dänisch'
44
+ end
45
+ end
46
+ end
47
+ describe :countries do
48
+ describe :english do
49
+ it "has english as default" do
50
+ I18nData.countries['DE'].should == 'Germany'
51
+ end
52
+ it "does not contain blanks" do
53
+ I18nData.countries.detect {|k,v| k.blank? or v.blank?}.should == nil
54
+ end
55
+ it "contains all countries" do
56
+ I18nData.countries.size.should == NUM_COUNTRIES
57
+ end
58
+ end
59
+ describe :translated do
60
+ it "is translated" do
61
+ I18nData.countries('DE')['DE'].should == 'Deutschland'
62
+ end
63
+ it "contains all countries" do
64
+ I18nData.countries('DE').size.should == NUM_COUNTRIES
65
+ end
66
+ it "has english names for not-translateable countries" do
67
+ I18nData.countries('IS')['PK'].should == I18nData.countries['PK']
68
+ end
69
+ it "does not contain blanks" do
70
+ I18nData.countries('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
71
+ end
72
+ it "is written in unicode" do
73
+ I18nData.countries('DE')['DK'].should == 'Dänemark'
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,32 @@
1
+ # ---- requirements
2
+ require 'rubygems'
3
+ require 'activesupport'
4
+ require 'spec'
5
+ require 'mocha'
6
+
7
+ $LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
8
+ require 'i18n_data'
9
+
10
+ # ---- bugfix
11
+ #`exit?': undefined method `run?' for Test::Unit:Module (NoMethodError)
12
+ #can be solved with require test/unit but this will result in extra test-output
13
+ module Test
14
+ module Unit
15
+ def self.run?
16
+ true
17
+ end
18
+ end
19
+ end
20
+
21
+
22
+ # ---- rspec
23
+ Spec::Runner.configure do |config|
24
+ config.mock_with :mocha
25
+ end
26
+
27
+ # ---- Helpers
28
+ def pending_it(text,&block)
29
+ it text do
30
+ pending(&block)
31
+ end
32
+ 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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
@@ -9,11 +9,12 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-04 00:00:00 -08:00
12
+ date: 2009-03-07 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -30,158 +31,169 @@ extensions: []
30
31
  extra_rdoc_files: []
31
32
 
32
33
  files:
34
+ - README.markdown
35
+ - VERSION.yml
33
36
  - cache/file_data_provider
34
- - cache/file_data_provider/languages-TR.txt
35
- - cache/file_data_provider/countries-ZU.txt
36
- - cache/file_data_provider/countries-FA.txt
37
- - cache/file_data_provider/languages-SL.txt
38
- - cache/file_data_provider/countries-MS.txt
39
- - cache/file_data_provider/languages-IS.txt
40
- - cache/file_data_provider/countries-WA.txt
41
- - cache/file_data_provider/languages-ES.txt
42
- - cache/file_data_provider/languages-EO.txt
37
+ - cache/file_data_provider/countries-AF.txt
38
+ - cache/file_data_provider/countries-AM.txt
39
+ - cache/file_data_provider/countries-AR.txt
40
+ - cache/file_data_provider/countries-AZ.txt
43
41
  - cache/file_data_provider/countries-BE.txt
44
- - cache/file_data_provider/countries-EL.txt
45
- - cache/file_data_provider/countries-VE.txt
46
- - cache/file_data_provider/languages-BE.txt
47
- - cache/file_data_provider/languages-VI.txt
42
+ - cache/file_data_provider/countries-BG.txt
43
+ - cache/file_data_provider/countries-BN.txt
44
+ - cache/file_data_provider/countries-BR.txt
45
+ - cache/file_data_provider/countries-BS.txt
46
+ - cache/file_data_provider/countries-CA.txt
47
+ - cache/file_data_provider/countries-CS.txt
48
+ - cache/file_data_provider/countries-CY.txt
49
+ - cache/file_data_provider/countries-DA.txt
48
50
  - cache/file_data_provider/countries-DE.txt
49
- - cache/file_data_provider/countries-TK.txt
50
- - cache/file_data_provider/languages-EU.txt
51
+ - cache/file_data_provider/countries-DZ.txt
52
+ - cache/file_data_provider/countries-EL.txt
53
+ - cache/file_data_provider/countries-EN.txt
54
+ - cache/file_data_provider/countries-EO.txt
55
+ - cache/file_data_provider/countries-ES.txt
56
+ - cache/file_data_provider/countries-ET.txt
51
57
  - cache/file_data_provider/countries-EU.txt
52
- - cache/file_data_provider/countries-AM.txt
53
- - cache/file_data_provider/countries-PA.txt
54
- - cache/file_data_provider/countries-NN.txt
55
- - cache/file_data_provider/countries-KK.txt
56
- - cache/file_data_provider/countries-SV.txt
57
- - cache/file_data_provider/languages-UK.txt
58
- - cache/file_data_provider/countries-TI.txt
58
+ - cache/file_data_provider/countries-FA.txt
59
+ - cache/file_data_provider/countries-FI.txt
60
+ - cache/file_data_provider/countries-FO.txt
61
+ - cache/file_data_provider/countries-FR.txt
62
+ - cache/file_data_provider/countries-GA.txt
63
+ - cache/file_data_provider/countries-GL.txt
64
+ - cache/file_data_provider/countries-GU.txt
65
+ - cache/file_data_provider/countries-HE.txt
66
+ - cache/file_data_provider/countries-HI.txt
67
+ - cache/file_data_provider/countries-HR.txt
59
68
  - cache/file_data_provider/countries-HU.txt
60
- - cache/file_data_provider/countries-AR.txt
61
- - cache/file_data_provider/countries-MI.txt
62
69
  - cache/file_data_provider/countries-HY.txt
63
- - cache/file_data_provider/languages-WA.txt
64
- - cache/file_data_provider/countries-CS.txt
65
- - cache/file_data_provider/countries-NL.txt
70
+ - cache/file_data_provider/countries-ID.txt
71
+ - cache/file_data_provider/countries-IS.txt
72
+ - cache/file_data_provider/countries-IT.txt
73
+ - cache/file_data_provider/countries-JA.txt
74
+ - cache/file_data_provider/countries-KA.txt
75
+ - cache/file_data_provider/countries-KK.txt
76
+ - cache/file_data_provider/countries-KM.txt
77
+ - cache/file_data_provider/countries-KN.txt
78
+ - cache/file_data_provider/countries-KO.txt
79
+ - cache/file_data_provider/countries-KU.txt
80
+ - cache/file_data_provider/countries-LT.txt
81
+ - cache/file_data_provider/countries-LV.txt
82
+ - cache/file_data_provider/countries-MI.txt
83
+ - cache/file_data_provider/countries-MK.txt
84
+ - cache/file_data_provider/countries-ML.txt
85
+ - cache/file_data_provider/countries-MN.txt
86
+ - cache/file_data_provider/countries-MR.txt
87
+ - cache/file_data_provider/countries-MS.txt
66
88
  - cache/file_data_provider/countries-MT.txt
67
- - cache/file_data_provider/languages-KO.txt
68
- - cache/file_data_provider/languages-NB.txt
69
- - cache/file_data_provider/countries-CY.txt
70
89
  - cache/file_data_provider/countries-NB.txt
71
- - cache/file_data_provider/countries-MN.txt
72
- - cache/file_data_provider/countries-HR.txt
73
- - cache/file_data_provider/countries-EO.txt
90
+ - cache/file_data_provider/countries-NE.txt
91
+ - cache/file_data_provider/countries-NL.txt
92
+ - cache/file_data_provider/countries-NN.txt
93
+ - cache/file_data_provider/countries-OC.txt
94
+ - cache/file_data_provider/countries-PA.txt
74
95
  - cache/file_data_provider/countries-PL.txt
75
- - cache/file_data_provider/languages-MT.txt
76
- - cache/file_data_provider/languages-BR.txt
96
+ - cache/file_data_provider/countries-PS.txt
97
+ - cache/file_data_provider/countries-PT.txt
98
+ - cache/file_data_provider/countries-RO.txt
99
+ - cache/file_data_provider/countries-RU.txt
100
+ - cache/file_data_provider/countries-RW.txt
101
+ - cache/file_data_provider/countries-SK.txt
102
+ - cache/file_data_provider/countries-SL.txt
103
+ - cache/file_data_provider/countries-SO.txt
104
+ - cache/file_data_provider/countries-SQ.txt
105
+ - cache/file_data_provider/countries-SR.txt
106
+ - cache/file_data_provider/countries-SV.txt
107
+ - cache/file_data_provider/countries-SW.txt
108
+ - cache/file_data_provider/countries-TA.txt
109
+ - cache/file_data_provider/countries-TH.txt
110
+ - cache/file_data_provider/countries-TI.txt
111
+ - cache/file_data_provider/countries-TK.txt
112
+ - cache/file_data_provider/countries-TL.txt
113
+ - cache/file_data_provider/countries-TR.txt
114
+ - cache/file_data_provider/countries-TT.txt
115
+ - cache/file_data_provider/countries-UK.txt
116
+ - cache/file_data_provider/countries-VE.txt
77
117
  - cache/file_data_provider/countries-VI.txt
118
+ - cache/file_data_provider/countries-WA.txt
119
+ - cache/file_data_provider/countries-WO.txt
120
+ - cache/file_data_provider/countries-XH.txt
121
+ - cache/file_data_provider/countries-ZU.txt
122
+ - cache/file_data_provider/languages-AF.txt
123
+ - cache/file_data_provider/languages-AM.txt
124
+ - cache/file_data_provider/languages-AR.txt
125
+ - cache/file_data_provider/languages-AZ.txt
126
+ - cache/file_data_provider/languages-BE.txt
127
+ - cache/file_data_provider/languages-BG.txt
128
+ - cache/file_data_provider/languages-BR.txt
129
+ - cache/file_data_provider/languages-BS.txt
130
+ - cache/file_data_provider/languages-CA.txt
131
+ - cache/file_data_provider/languages-CS.txt
132
+ - cache/file_data_provider/languages-CY.txt
133
+ - cache/file_data_provider/languages-DA.txt
134
+ - cache/file_data_provider/languages-DE.txt
135
+ - cache/file_data_provider/languages-EL.txt
78
136
  - cache/file_data_provider/languages-EN.txt
137
+ - cache/file_data_provider/languages-EO.txt
138
+ - cache/file_data_provider/languages-ES.txt
139
+ - cache/file_data_provider/languages-ET.txt
140
+ - cache/file_data_provider/languages-EU.txt
141
+ - cache/file_data_provider/languages-FA.txt
142
+ - cache/file_data_provider/languages-FI.txt
143
+ - cache/file_data_provider/languages-FR.txt
79
144
  - cache/file_data_provider/languages-GA.txt
80
- - cache/file_data_provider/countries-TT.txt
81
- - cache/file_data_provider/countries-DA.txt
82
- - cache/file_data_provider/languages-MS.txt
83
- - cache/file_data_provider/countries-HI.txt
84
- - cache/file_data_provider/languages-AZ.txt
85
- - cache/file_data_provider/languages-RW.txt
86
- - cache/file_data_provider/countries-SO.txt
87
145
  - cache/file_data_provider/languages-GL.txt
88
- - cache/file_data_provider/languages-NN.txt
89
- - cache/file_data_provider/countries-FR.txt
90
- - cache/file_data_provider/countries-ET.txt
91
- - cache/file_data_provider/languages-FR.txt
92
- - cache/file_data_provider/languages-DE.txt
93
- - cache/file_data_provider/languages-BG.txt
94
- - cache/file_data_provider/languages-ZU.txt
146
+ - cache/file_data_provider/languages-HE.txt
147
+ - cache/file_data_provider/languages-HI.txt
95
148
  - cache/file_data_provider/languages-HR.txt
96
- - cache/file_data_provider/languages-XH.txt
97
149
  - cache/file_data_provider/languages-HU.txt
98
- - cache/file_data_provider/countries-TR.txt
99
- - cache/file_data_provider/countries-JA.txt
100
- - cache/file_data_provider/languages-PS.txt
101
- - cache/file_data_provider/languages-CY.txt
102
- - cache/file_data_provider/languages-LV.txt
103
- - cache/file_data_provider/countries-LV.txt
104
- - cache/file_data_provider/countries-GL.txt
105
- - cache/file_data_provider/languages-BS.txt
106
- - cache/file_data_provider/languages-OC.txt
107
- - cache/file_data_provider/languages-HI.txt
108
- - cache/file_data_provider/countries-UK.txt
109
- - cache/file_data_provider/countries-OC.txt
110
- - cache/file_data_provider/countries-FO.txt
111
- - cache/file_data_provider/countries-KM.txt
112
- - cache/file_data_provider/languages-MN.txt
113
- - cache/file_data_provider/countries-TL.txt
114
- - cache/file_data_provider/countries-SL.txt
115
- - cache/file_data_provider/countries-XH.txt
116
- - cache/file_data_provider/languages-SV.txt
117
- - cache/file_data_provider/countries-ID.txt
118
- - cache/file_data_provider/languages-LT.txt
119
150
  - cache/file_data_provider/languages-ID.txt
120
- - cache/file_data_provider/languages-DA.txt
121
- - cache/file_data_provider/languages-RU.txt
122
- - cache/file_data_provider/countries-IT.txt
123
- - cache/file_data_provider/countries-BS.txt
124
- - cache/file_data_provider/countries-AF.txt
125
- - cache/file_data_provider/countries-RO.txt
126
- - cache/file_data_provider/languages-CS.txt
127
- - cache/file_data_provider/countries-DZ.txt
128
- - cache/file_data_provider/languages-MR.txt
129
- - cache/file_data_provider/languages-TI.txt
130
- - cache/file_data_provider/countries-ES.txt
131
- - cache/file_data_provider/countries-ML.txt
132
- - cache/file_data_provider/countries-GA.txt
133
- - cache/file_data_provider/countries-SR.txt
134
- - cache/file_data_provider/countries-GU.txt
135
- - cache/file_data_provider/countries-BR.txt
136
- - cache/file_data_provider/languages-FA.txt
137
- - cache/file_data_provider/countries-WO.txt
138
- - cache/file_data_provider/languages-RO.txt
139
- - cache/file_data_provider/languages-VE.txt
140
- - cache/file_data_provider/countries-KN.txt
141
- - cache/file_data_provider/languages-MI.txt
142
- - cache/file_data_provider/countries-SK.txt
143
- - cache/file_data_provider/countries-SQ.txt
144
- - cache/file_data_provider/languages-PT.txt
145
- - cache/file_data_provider/languages-AM.txt
146
- - cache/file_data_provider/countries-MR.txt
147
- - cache/file_data_provider/countries-LT.txt
148
- - cache/file_data_provider/languages-EL.txt
149
- - cache/file_data_provider/countries-BG.txt
150
- - cache/file_data_provider/countries-SW.txt
151
- - cache/file_data_provider/countries-EN.txt
152
- - cache/file_data_provider/languages-TH.txt
153
- - cache/file_data_provider/countries-BN.txt
154
- - cache/file_data_provider/countries-CA.txt
155
- - cache/file_data_provider/countries-TA.txt
156
- - cache/file_data_provider/languages-TA.txt
157
- - cache/file_data_provider/countries-NE.txt
158
- - cache/file_data_provider/countries-PT.txt
159
- - cache/file_data_provider/countries-IS.txt
160
- - cache/file_data_provider/countries-RU.txt
161
- - cache/file_data_provider/countries-HE.txt
162
- - cache/file_data_provider/languages-TT.txt
151
+ - cache/file_data_provider/languages-IS.txt
163
152
  - cache/file_data_provider/languages-IT.txt
164
153
  - cache/file_data_provider/languages-JA.txt
165
- - cache/file_data_provider/languages-PL.txt
166
- - cache/file_data_provider/languages-HE.txt
167
- - cache/file_data_provider/languages-SK.txt
168
- - cache/file_data_provider/countries-PS.txt
154
+ - cache/file_data_provider/languages-KO.txt
155
+ - cache/file_data_provider/languages-LT.txt
156
+ - cache/file_data_provider/languages-LV.txt
157
+ - cache/file_data_provider/languages-MI.txt
169
158
  - cache/file_data_provider/languages-MK.txt
170
- - cache/file_data_provider/countries-KO.txt
171
- - cache/file_data_provider/countries-FI.txt
172
- - cache/file_data_provider/countries-AZ.txt
173
- - cache/file_data_provider/languages-AR.txt
174
- - cache/file_data_provider/countries-KU.txt
175
- - cache/file_data_provider/countries-KA.txt
159
+ - cache/file_data_provider/languages-MN.txt
160
+ - cache/file_data_provider/languages-MR.txt
161
+ - cache/file_data_provider/languages-MS.txt
162
+ - cache/file_data_provider/languages-MT.txt
163
+ - cache/file_data_provider/languages-NB.txt
176
164
  - cache/file_data_provider/languages-NL.txt
177
- - cache/file_data_provider/languages-FI.txt
178
- - cache/file_data_provider/countries-MK.txt
179
- - cache/file_data_provider/countries-TH.txt
165
+ - cache/file_data_provider/languages-NN.txt
166
+ - cache/file_data_provider/languages-OC.txt
167
+ - cache/file_data_provider/languages-PL.txt
168
+ - cache/file_data_provider/languages-PS.txt
169
+ - cache/file_data_provider/languages-PT.txt
170
+ - cache/file_data_provider/languages-RO.txt
171
+ - cache/file_data_provider/languages-RU.txt
172
+ - cache/file_data_provider/languages-RW.txt
173
+ - cache/file_data_provider/languages-SK.txt
174
+ - cache/file_data_provider/languages-SL.txt
180
175
  - cache/file_data_provider/languages-SR.txt
181
- - cache/file_data_provider/languages-CA.txt
182
- - cache/file_data_provider/countries-RW.txt
183
- - cache/file_data_provider/languages-ET.txt
184
- - cache/file_data_provider/languages-AF.txt
176
+ - cache/file_data_provider/languages-SV.txt
177
+ - cache/file_data_provider/languages-TA.txt
178
+ - cache/file_data_provider/languages-TH.txt
179
+ - cache/file_data_provider/languages-TI.txt
180
+ - cache/file_data_provider/languages-TR.txt
181
+ - cache/file_data_provider/languages-TT.txt
182
+ - cache/file_data_provider/languages-UK.txt
183
+ - cache/file_data_provider/languages-VE.txt
184
+ - cache/file_data_provider/languages-VI.txt
185
+ - cache/file_data_provider/languages-WA.txt
186
+ - cache/file_data_provider/languages-XH.txt
187
+ - cache/file_data_provider/languages-ZU.txt
188
+ - lib/i18n_data
189
+ - lib/i18n_data.rb
190
+ - lib/i18n_data/file_data_provider.rb
191
+ - lib/i18n_data/live_data_provider.rb
192
+ - spec/i18n_data
193
+ - spec/i18n_data/file_data_provider_spec.rb
194
+ - spec/i18n_data/live_data_provider_spec.rb
195
+ - spec/i18n_data_spec.rb
196
+ - spec/spec_helper.rb
185
197
  has_rdoc: true
186
198
  homepage: http://github.com/grosser/i18n_data
187
199
  post_install_message: