i18n_data 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/Rakefile +3 -1
- data/Readme.md +7 -1
- data/cache/file_data_provider/countries-HR.txt +1 -1
- data/cache/file_data_provider/countries-WA.txt +10 -10
- data/cache/file_data_provider/countries-bn_IN.txt +249 -0
- data/cache/file_data_provider/countries-pt_BR.txt +249 -0
- data/cache/file_data_provider/countries-zh_CN.txt +249 -0
- data/cache/file_data_provider/countries-zh_HK.txt +249 -0
- data/cache/file_data_provider/countries-zh_TW.txt +249 -0
- data/cache/file_data_provider/languages-WA.txt +5 -5
- data/cache/file_data_provider/languages-bn_IN.txt +185 -0
- data/cache/file_data_provider/languages-pt_BR.txt +185 -0
- data/cache/file_data_provider/languages-zh_CN.txt +185 -0
- data/cache/file_data_provider/languages-zh_HK.txt +185 -0
- data/cache/file_data_provider/languages-zh_TW.txt +185 -0
- data/lib/i18n_data.rb +11 -2
- data/lib/i18n_data/file_data_provider.rb +5 -5
- data/lib/i18n_data/live_data_provider.rb +6 -2
- data/lib/i18n_data/version.rb +1 -1
- data/spec/i18n_data/live_data_provider_spec.rb +2 -1
- data/spec/i18n_data_spec.rb +17 -0
- metadata +14 -4
@@ -0,0 +1,185 @@
|
|
1
|
+
AA;;阿法爾語
|
2
|
+
AB;;亞布卡薩語
|
3
|
+
AF;;南非語
|
4
|
+
AK;;迦納語
|
5
|
+
SQ;;阿爾巴尼亞語
|
6
|
+
AM;;阿姆哈拉語
|
7
|
+
AR;;阿拉伯語
|
8
|
+
AN;;阿拉貢語
|
9
|
+
HY;;亞美尼亞語
|
10
|
+
AS;;阿薩姆語
|
11
|
+
AV;;阿瓦爾語
|
12
|
+
AE;;阿維斯塔語
|
13
|
+
AY;;亞摩拉語
|
14
|
+
AZ;;亞塞拜然語
|
15
|
+
BA;;巴什喀爾語
|
16
|
+
BM;;班巴拉語
|
17
|
+
EU;;巴斯克語
|
18
|
+
BE;;白俄語
|
19
|
+
BN;;孟加拉語
|
20
|
+
BH;;泰語諸語言
|
21
|
+
BI;;比斯拉馬語
|
22
|
+
BS;;波士尼亞語
|
23
|
+
BR;;布里敦語
|
24
|
+
BG;;保加利亞語
|
25
|
+
MY;;緬甸語
|
26
|
+
CA;;加泰羅尼亞語
|
27
|
+
CH;;查莫羅語
|
28
|
+
CE;;車臣語
|
29
|
+
ZH;;漢語
|
30
|
+
CU;;Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic
|
31
|
+
CV;;楚瓦什語
|
32
|
+
KW;;康沃爾語
|
33
|
+
CO;;科西嘉語
|
34
|
+
CR;;克里語
|
35
|
+
CS;;捷克語
|
36
|
+
DA;;丹麥語
|
37
|
+
DV;;迪維西語
|
38
|
+
NL;;荷蘭語
|
39
|
+
DZ;;宗卡語(不丹)
|
40
|
+
EN;;英語
|
41
|
+
EO;;世界語
|
42
|
+
ET;;愛沙尼亞語
|
43
|
+
EE;;埃維語
|
44
|
+
FO;;法羅群島語
|
45
|
+
FJ;;斐濟語
|
46
|
+
FI;;芬蘭語
|
47
|
+
FR;;法語
|
48
|
+
FY;;西夫里斯蘭語
|
49
|
+
FF;;富拉語
|
50
|
+
KA;;喬治亞語
|
51
|
+
DE;;德語
|
52
|
+
GD;;蓋爾語
|
53
|
+
GA;;愛爾蘭語
|
54
|
+
GL;;加里斯亞語
|
55
|
+
GV;;馬恩語
|
56
|
+
EL;;現代希臘語 (1453-)
|
57
|
+
GN;;瓜拉尼語(西印度)
|
58
|
+
GU;;古吉拉特語
|
59
|
+
HT;;克里奧爾語(海地)
|
60
|
+
HA;;豪撒語(蘇丹)
|
61
|
+
HE;;希伯來語
|
62
|
+
HZ;;赫雷羅語
|
63
|
+
HI;;印地語(北印度)
|
64
|
+
HO;;希里莫圖語
|
65
|
+
HR;;克羅埃西亞語
|
66
|
+
HU;;匈牙利語
|
67
|
+
IG;;伊布語
|
68
|
+
IS;;冰島語
|
69
|
+
IO;;伊多語
|
70
|
+
II;;四川彝語
|
71
|
+
IU;;伊努特語
|
72
|
+
IE;;國際語
|
73
|
+
IA;;拉丁國際語
|
74
|
+
ID;;印尼語
|
75
|
+
IK;;依努庇克語
|
76
|
+
IT;;義大利語
|
77
|
+
JV;;爪哇語
|
78
|
+
JA;;日語
|
79
|
+
KL;;格陵蘭語
|
80
|
+
KN;;卡納達語(西南印度)
|
81
|
+
KS;;喀什米爾語
|
82
|
+
KR;;卡努里語
|
83
|
+
KK;;哈薩克語
|
84
|
+
KM;;中央高棉語
|
85
|
+
KI;;基庫尤語
|
86
|
+
RW;;盧安達語
|
87
|
+
KY;;吉爾吉斯語
|
88
|
+
KV;;科米語
|
89
|
+
KG;;剛果語
|
90
|
+
KO;;韓語
|
91
|
+
KJ;;寬亞瑪語
|
92
|
+
KU;;庫德語
|
93
|
+
LO;;老撾語
|
94
|
+
LA;;拉丁語
|
95
|
+
LV;;拉脫維亞語
|
96
|
+
LI;;林堡語
|
97
|
+
LN;;陵加拉語
|
98
|
+
LT;;立陶宛語
|
99
|
+
LB;;盧森堡語
|
100
|
+
LU;;盧巴-加丹加語
|
101
|
+
LG;;干達語
|
102
|
+
MK;;馬其頓語
|
103
|
+
MH;;馬紹爾語
|
104
|
+
ML;;馬來亞拉姆語
|
105
|
+
MI;;毛利語
|
106
|
+
MR;;馬拉提語(中西印度)
|
107
|
+
MS;;馬來語
|
108
|
+
MG;;馬達加斯加語
|
109
|
+
MT;;馬爾他語
|
110
|
+
MO;;摩爾達維亞語
|
111
|
+
MN;;蒙古語
|
112
|
+
NA;;諾魯語
|
113
|
+
NV;;納瓦霍語
|
114
|
+
NR;;南恩德貝勒語
|
115
|
+
ND;;北恩德貝勒語
|
116
|
+
NG;;恩敦加語
|
117
|
+
NE;;尼泊爾語
|
118
|
+
NN;;新挪威語
|
119
|
+
NB;;書面挪威語
|
120
|
+
NO;;挪威語
|
121
|
+
NY;;契切瓦語
|
122
|
+
OC;;奧克西坦語 (1500 之後)
|
123
|
+
OJ;;奧杰布瓦語
|
124
|
+
OR;;歐利亞語(印度)
|
125
|
+
OM;;奧洛莫語
|
126
|
+
OS;;奧塞提語
|
127
|
+
PA;;旁遮普語
|
128
|
+
FA;;波斯語
|
129
|
+
PI;;巴利語
|
130
|
+
PL;;波蘭語
|
131
|
+
PT;;葡萄牙語
|
132
|
+
PS;;普什圖語
|
133
|
+
QU;;印加語
|
134
|
+
RM;;里托羅曼語
|
135
|
+
RO;;羅馬尼亞語
|
136
|
+
RN;;克倫地語
|
137
|
+
RU;;俄語
|
138
|
+
SG;;桑戈語(中非)
|
139
|
+
SA;;梵語
|
140
|
+
SI;;僧加羅語(錫蘭)
|
141
|
+
SK;;斯洛伐克語
|
142
|
+
SL;;斯洛維尼亞語
|
143
|
+
SE;;北薩米語
|
144
|
+
SM;;薩摩亞語
|
145
|
+
SN;;紹納語
|
146
|
+
SD;;信德語(印度)
|
147
|
+
SO;;索馬利語
|
148
|
+
ST;;南索托語
|
149
|
+
ES;;西班牙語
|
150
|
+
SC;;薩丁尼亞語
|
151
|
+
SR;;塞爾維亞語
|
152
|
+
SS;;斯瓦齊語
|
153
|
+
SU;;巽他語
|
154
|
+
SW;;史瓦西里語
|
155
|
+
SV;;瑞典語
|
156
|
+
TY;;大溪地語
|
157
|
+
TA;;坦米爾語
|
158
|
+
TT;;韃靼語
|
159
|
+
TE;;特拉古語
|
160
|
+
TG;;塔吉克語
|
161
|
+
TL;;塔加拉語
|
162
|
+
TH;;泰語
|
163
|
+
BO;;藏語
|
164
|
+
TI;;提格利尼亞語
|
165
|
+
TO;;東加語(東加群島)
|
166
|
+
TN;;茨瓦納語
|
167
|
+
TS;;宋加語
|
168
|
+
TK;;土庫曼語
|
169
|
+
TR;;土耳其語
|
170
|
+
TW;;奇族語(迦那)
|
171
|
+
UG;;維吾爾語
|
172
|
+
UK;;烏克蘭語
|
173
|
+
UR;;烏爾都語
|
174
|
+
UZ;;烏茲別克語
|
175
|
+
VE;;溫達語
|
176
|
+
VI;;越南語
|
177
|
+
VO;;沃拉普克語
|
178
|
+
CY;;威爾斯語
|
179
|
+
WA;;瓦隆語(比利時)
|
180
|
+
WO;;渥魯夫語
|
181
|
+
XH;;科薩語
|
182
|
+
YI;;意第緒語
|
183
|
+
YO;;約魯巴語
|
184
|
+
ZA;;壯語
|
185
|
+
ZU;;祖魯語
|
data/lib/i18n_data.rb
CHANGED
@@ -4,11 +4,11 @@ module I18nData
|
|
4
4
|
extend self
|
5
5
|
|
6
6
|
def languages(language_code='EN')
|
7
|
-
data_provider.codes(:languages, language_code.to_s.upcase)
|
7
|
+
data_provider.codes(:languages, normal_to_region_code(language_code.to_s.upcase))
|
8
8
|
end
|
9
9
|
|
10
10
|
def countries(language_code='EN')
|
11
|
-
data_provider.codes(:countries, language_code.to_s.upcase)
|
11
|
+
data_provider.codes(:countries, normal_to_region_code(language_code.to_s.upcase))
|
12
12
|
end
|
13
13
|
|
14
14
|
def country_code(name)
|
@@ -34,6 +34,15 @@ module I18nData
|
|
34
34
|
|
35
35
|
private
|
36
36
|
|
37
|
+
# hardcode languages that do not have a default type
|
38
|
+
# e.g. zh does not exist, but zh_CN does
|
39
|
+
def normal_to_region_code(normal)
|
40
|
+
{
|
41
|
+
"ZH" => "ZH_CN",
|
42
|
+
"BN" => "BN_IN",
|
43
|
+
}[normal] || normal
|
44
|
+
end
|
45
|
+
|
37
46
|
def recognise_code(type, search)
|
38
47
|
search = search.strip
|
39
48
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module I18nData
|
2
2
|
module FileDataProvider
|
3
|
-
|
3
|
+
DATA_SEPARATOR = ";;"
|
4
4
|
extend self
|
5
5
|
|
6
6
|
def codes(type, language_code)
|
@@ -11,7 +11,7 @@ module I18nData
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def write_cache(provider)
|
14
|
-
languages = provider.codes(:languages, 'EN').keys
|
14
|
+
languages = provider.codes(:languages, 'EN').keys + ['zh_CN', 'zh_TW', 'zh_HK','bn_IN','pt_BR']
|
15
15
|
languages.each do |language_code|
|
16
16
|
[:languages, :countries].each do |type|
|
17
17
|
begin
|
@@ -29,7 +29,7 @@ module I18nData
|
|
29
29
|
return nil unless File.exist?(file)
|
30
30
|
data = {}
|
31
31
|
File.readlines(file).each do |line|
|
32
|
-
code, translation = line.strip.split(
|
32
|
+
code, translation = line.strip.split(DATA_SEPARATOR, 2)
|
33
33
|
data[code] = translation
|
34
34
|
end
|
35
35
|
data
|
@@ -39,7 +39,7 @@ module I18nData
|
|
39
39
|
return if data.empty?
|
40
40
|
FileUtils.mkdir_p File.dirname(file)
|
41
41
|
File.open(file,'w') do |f|
|
42
|
-
f.write data.map{|code, translation| "#{code}#{
|
42
|
+
f.write data.map{|code, translation| "#{code}#{DATA_SEPARATOR}#{translation}" } * "\n"
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -48,4 +48,4 @@ module I18nData
|
|
48
48
|
File.join(File.dirname(__FILE__), '..', '..', 'cache', 'file_data_provider', "#{file}.txt")
|
49
49
|
end
|
50
50
|
end
|
51
|
-
end
|
51
|
+
end
|
@@ -45,11 +45,15 @@ module I18nData
|
|
45
45
|
def translations(type, language_code)
|
46
46
|
@translations ||= {}
|
47
47
|
@translations["#{type}_#{language_code}"] ||= begin
|
48
|
+
code = language_code.split("_")
|
49
|
+
code[0].downcase!
|
50
|
+
code = code.join("_")
|
51
|
+
|
48
52
|
begin
|
49
|
-
url = TRANSLATIONS[type]+"#{
|
53
|
+
url = TRANSLATIONS[type]+"#{code}.po"
|
50
54
|
data = open(url).read
|
51
55
|
rescue
|
52
|
-
raise NoTranslationAvailable, "for #{type} and language code = #{
|
56
|
+
raise NoTranslationAvailable, "for #{type} and language code = #{code} (#{$!})"
|
53
57
|
end
|
54
58
|
|
55
59
|
data = data.force_encoding('utf-8') if data.respond_to?(:force_encoding) # 1.9
|
data/lib/i18n_data/version.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
require
|
2
|
+
require "i18n_data/live_data_provider"
|
3
3
|
|
4
|
+
# fetching is tested via spec/i18n_data_spec.rb, these are just unit-tests
|
4
5
|
describe I18nData::LiveDataProvider do
|
5
6
|
describe :po_to_hash do
|
6
7
|
def po_to_hash(text)
|
data/spec/i18n_data_spec.rb
CHANGED
@@ -57,6 +57,14 @@ describe I18nData do
|
|
57
57
|
it "is written in unicode" do
|
58
58
|
I18nData.languages('DE')['DA'].should == 'Dänisch'
|
59
59
|
end
|
60
|
+
|
61
|
+
it "has default for languages that only have subtypes" do
|
62
|
+
I18nData.languages('ZH')['DA'].should == '丹麦语'
|
63
|
+
end
|
64
|
+
|
65
|
+
it "has language subtypes" do
|
66
|
+
I18nData.languages('ZH_TW')['DA'].should == '丹麥語'
|
67
|
+
end
|
60
68
|
end
|
61
69
|
end
|
62
70
|
|
@@ -95,6 +103,15 @@ describe I18nData do
|
|
95
103
|
it "is written in unicode" do
|
96
104
|
I18nData.countries('DE')['DK'].should == 'Dänemark'
|
97
105
|
end
|
106
|
+
|
107
|
+
it "has default for languages that only have subtypes" do
|
108
|
+
I18nData.countries('ZH')['DK'].should == '丹麦'
|
109
|
+
I18nData.countries('BN')['DK'].should == 'ডেনমার্ক'
|
110
|
+
end
|
111
|
+
|
112
|
+
it "has language subtypes" do
|
113
|
+
I18nData.countries('ZH_TW')['DK'].should == '丹麥'
|
114
|
+
end
|
98
115
|
end
|
99
116
|
end
|
100
117
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-19 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description:
|
15
15
|
email: michael@grosser.it
|
@@ -112,6 +112,11 @@ files:
|
|
112
112
|
- cache/file_data_provider/countries-WO.txt
|
113
113
|
- cache/file_data_provider/countries-XH.txt
|
114
114
|
- cache/file_data_provider/countries-ZU.txt
|
115
|
+
- cache/file_data_provider/countries-bn_IN.txt
|
116
|
+
- cache/file_data_provider/countries-pt_BR.txt
|
117
|
+
- cache/file_data_provider/countries-zh_CN.txt
|
118
|
+
- cache/file_data_provider/countries-zh_HK.txt
|
119
|
+
- cache/file_data_provider/countries-zh_TW.txt
|
115
120
|
- cache/file_data_provider/languages-AF.txt
|
116
121
|
- cache/file_data_provider/languages-AM.txt
|
117
122
|
- cache/file_data_provider/languages-AR.txt
|
@@ -185,6 +190,11 @@ files:
|
|
185
190
|
- cache/file_data_provider/languages-WA.txt
|
186
191
|
- cache/file_data_provider/languages-XH.txt
|
187
192
|
- cache/file_data_provider/languages-ZU.txt
|
193
|
+
- cache/file_data_provider/languages-bn_IN.txt
|
194
|
+
- cache/file_data_provider/languages-pt_BR.txt
|
195
|
+
- cache/file_data_provider/languages-zh_CN.txt
|
196
|
+
- cache/file_data_provider/languages-zh_HK.txt
|
197
|
+
- cache/file_data_provider/languages-zh_TW.txt
|
188
198
|
- example_output/all_names_for_DE.txt
|
189
199
|
- example_output/all_names_for_FR.txt
|
190
200
|
- example_output/all_names_for_GB.txt
|
@@ -213,7 +223,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
223
|
version: '0'
|
214
224
|
segments:
|
215
225
|
- 0
|
216
|
-
hash: -
|
226
|
+
hash: -3872978820631193356
|
217
227
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
228
|
none: false
|
219
229
|
requirements:
|
@@ -222,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
232
|
version: '0'
|
223
233
|
segments:
|
224
234
|
- 0
|
225
|
-
hash: -
|
235
|
+
hash: -3872978820631193356
|
226
236
|
requirements: []
|
227
237
|
rubyforge_project:
|
228
238
|
rubygems_version: 1.8.24
|