grosser-i18n_data 0.2.2 → 0.2.3

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 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: