countries 2.1.2 → 2.1.4

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.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +148 -0
  3. data/README.markdown +5 -5
  4. data/Rakefile +9 -1
  5. data/countries.gemspec +1 -0
  6. data/lib/countries/cache/countries.json +1 -1
  7. data/lib/countries/country/class_methods.rb +11 -5
  8. data/lib/countries/country.rb +4 -0
  9. data/lib/countries/data/countries/BY.yaml +1 -1
  10. data/lib/countries/data/countries/CH.yaml +2 -2
  11. data/lib/countries/data/countries/MX.yaml +5 -0
  12. data/lib/countries/data/countries/NO.yaml +5 -0
  13. data/lib/countries/data/countries/PH.yaml +5 -0
  14. data/lib/countries/data/countries/PN.yaml +1 -1
  15. data/lib/countries/data/countries/TW.yaml +1 -1
  16. data/lib/countries/data/countries/UM.yaml +1 -1
  17. data/lib/countries/data/subdivisions/AE.yaml +346 -7
  18. data/lib/countries/data/subdivisions/AF.yaml +1571 -11
  19. data/lib/countries/data/subdivisions/AG.yaml +282 -2
  20. data/lib/countries/data/subdivisions/AL.yaml +503 -1
  21. data/lib/countries/data/subdivisions/AM.yaml +539 -12
  22. data/lib/countries/data/subdivisions/AO.yaml +767 -2
  23. data/lib/countries/data/subdivisions/AR.yaml +1167 -2
  24. data/lib/countries/data/subdivisions/AT.yaml +500 -6
  25. data/lib/countries/data/subdivisions/AU.yaml +445 -0
  26. data/lib/countries/data/subdivisions/AZ.yaml +2836 -57
  27. data/lib/countries/data/subdivisions/BA.yaml +167 -1
  28. data/lib/countries/data/subdivisions/BB.yaml +377 -2
  29. data/lib/countries/data/subdivisions/BD.yaml +1344 -66
  30. data/lib/countries/data/subdivisions/BE.yaml +653 -10
  31. data/lib/countries/data/subdivisions/BF.yaml +1841 -1
  32. data/lib/countries/data/subdivisions/BG.yaml +1307 -6
  33. data/lib/countries/data/subdivisions/BH.yaml +102 -5
  34. data/lib/countries/data/subdivisions/BI.yaml +647 -0
  35. data/lib/countries/data/subdivisions/BJ.yaml +441 -0
  36. data/lib/countries/data/subdivisions/BN.yaml +154 -0
  37. data/lib/countries/data/subdivisions/BO.yaml +387 -1
  38. data/lib/countries/data/subdivisions/BQ.yaml +148 -0
  39. data/lib/countries/data/subdivisions/BR.yaml +1412 -1
  40. data/lib/countries/data/subdivisions/BS.yaml +1094 -0
  41. data/lib/countries/data/subdivisions/BT.yaml +707 -6
  42. data/lib/countries/data/subdivisions/BW.yaml +614 -3
  43. data/lib/countries/data/subdivisions/BY.yaml +375 -6
  44. data/lib/countries/data/subdivisions/BZ.yaml +200 -0
  45. data/lib/countries/data/subdivisions/CA.yaml +721 -0
  46. data/lib/countries/data/subdivisions/CD.yaml +697 -4
  47. data/lib/countries/data/subdivisions/CF.yaml +637 -1
  48. data/lib/countries/data/subdivisions/CG.yaml +401 -0
  49. data/lib/countries/data/subdivisions/CH.yaml +1327 -26
  50. data/lib/countries/data/subdivisions/CI.yaml +323 -21
  51. data/lib/countries/data/subdivisions/CL.yaml +656 -5
  52. data/lib/countries/data/subdivisions/CM.yaml +375 -3
  53. data/lib/countries/data/subdivisions/CN.yaml +1636 -5
  54. data/lib/countries/data/subdivisions/CO.yaml +1395 -2
  55. data/lib/countries/data/subdivisions/CR.yaml +260 -0
  56. data/lib/countries/data/subdivisions/CU.yaml +627 -3
  57. data/lib/countries/data/subdivisions/CV.yaml +741 -1
  58. data/lib/countries/data/subdivisions/CY.yaml +220 -6
  59. data/lib/countries/data/subdivisions/CZ.yaml +3049 -14
  60. data/lib/countries/data/subdivisions/DE.yaml +928 -8
  61. data/lib/countries/data/subdivisions/DJ.yaml +253 -0
  62. data/lib/countries/data/subdivisions/DK.yaml +230 -6
  63. data/lib/countries/data/subdivisions/DM.yaml +333 -2
  64. data/lib/countries/data/subdivisions/DO.yaml +1047 -8
  65. data/lib/countries/data/subdivisions/DZ.yaml +1968 -6
  66. data/lib/countries/data/subdivisions/EC.yaml +911 -0
  67. data/lib/countries/data/subdivisions/EE.yaml +713 -15
  68. data/lib/countries/data/subdivisions/EG.yaml +1126 -25
  69. data/lib/countries/data/subdivisions/ER.yaml +230 -3
  70. data/lib/countries/data/subdivisions/ES.yaml +3029 -13
  71. data/lib/countries/data/subdivisions/ET.yaml +514 -8
  72. data/lib/countries/data/subdivisions/FI.yaml +827 -0
  73. data/lib/countries/data/subdivisions/FJ.yaml +396 -0
  74. data/lib/countries/data/subdivisions/FM.yaml +131 -0
  75. data/lib/countries/data/subdivisions/FR.yaml +5591 -97
  76. data/lib/countries/data/subdivisions/GA.yaml +349 -0
  77. data/lib/countries/data/subdivisions/GB.yaml +7046 -33
  78. data/lib/countries/data/subdivisions/GD.yaml +227 -1
  79. data/lib/countries/data/subdivisions/GE.yaml +572 -2
  80. data/lib/countries/data/subdivisions/GH.yaml +371 -0
  81. data/lib/countries/data/subdivisions/GL.yaml +173 -0
  82. data/lib/countries/data/subdivisions/GM.yaml +250 -5
  83. data/lib/countries/data/subdivisions/GN.yaml +1143 -1
  84. data/lib/countries/data/subdivisions/GQ.yaml +301 -4
  85. data/lib/countries/data/subdivisions/GR.yaml +654 -28
  86. data/lib/countries/data/subdivisions/GT.yaml +875 -0
  87. data/lib/countries/data/subdivisions/GW.yaml +353 -0
  88. data/lib/countries/data/subdivisions/GY.yaml +315 -0
  89. data/lib/countries/data/subdivisions/HN.yaml +710 -1
  90. data/lib/countries/data/subdivisions/HR.yaml +967 -23
  91. data/lib/countries/data/subdivisions/HT.yaml +329 -1
  92. data/lib/countries/data/subdivisions/HU.yaml +2067 -1
  93. data/lib/countries/data/subdivisions/ID.yaml +1840 -21
  94. data/lib/countries/data/subdivisions/IE.yaml +1339 -1
  95. data/lib/countries/data/subdivisions/IL.yaml +256 -6
  96. data/lib/countries/data/subdivisions/IN.yaml +2044 -2
  97. data/lib/countries/data/subdivisions/IQ.yaml +760 -12
  98. data/lib/countries/data/subdivisions/IR.yaml +1434 -12
  99. data/lib/countries/data/subdivisions/IS.yaml +370 -8
  100. data/lib/countries/data/subdivisions/IT.yaml +6197 -16
  101. data/lib/countries/data/subdivisions/JM.yaml +461 -2
  102. data/lib/countries/data/subdivisions/JO.yaml +453 -8
  103. data/lib/countries/data/subdivisions/JP.yaml +2523 -54
  104. data/lib/countries/data/subdivisions/KE.yaml +698 -0
  105. data/lib/countries/data/subdivisions/KG.yaml +422 -3
  106. data/lib/countries/data/subdivisions/KH.yaml +871 -25
  107. data/lib/countries/data/subdivisions/KI.yaml +100 -0
  108. data/lib/countries/data/subdivisions/KM.yaml +134 -0
  109. data/lib/countries/data/subdivisions/KN.yaml +499 -2
  110. data/lib/countries/data/subdivisions/KP.yaml +474 -0
  111. data/lib/countries/data/subdivisions/KR.yaml +816 -16
  112. data/lib/countries/data/subdivisions/KW.yaml +184 -3
  113. data/lib/countries/data/subdivisions/KZ.yaml +827 -14
  114. data/lib/countries/data/subdivisions/LA.yaml +630 -18
  115. data/lib/countries/data/subdivisions/LB.yaml +245 -5
  116. data/lib/countries/data/subdivisions/LC.yaml +304 -0
  117. data/lib/countries/data/subdivisions/LI.yaml +349 -2
  118. data/lib/countries/data/subdivisions/LK.yaml +955 -3
  119. data/lib/countries/data/subdivisions/LR.yaml +565 -0
  120. data/lib/countries/data/subdivisions/LS.yaml +362 -2
  121. data/lib/countries/data/subdivisions/LT.yaml +1563 -10
  122. data/lib/countries/data/subdivisions/LU.yaml +322 -3
  123. data/lib/countries/data/subdivisions/LV.yaml +4937 -3
  124. data/lib/countries/data/subdivisions/LY.yaml +836 -203
  125. data/lib/countries/data/subdivisions/MA.yaml +1803 -17
  126. data/lib/countries/data/subdivisions/MC.yaml +234 -0
  127. data/lib/countries/data/subdivisions/MD.yaml +1570 -5
  128. data/lib/countries/data/subdivisions/ME.yaml +669 -4
  129. data/lib/countries/data/subdivisions/MG.yaml +148 -0
  130. data/lib/countries/data/subdivisions/MH.yaml +543 -21
  131. data/lib/countries/data/subdivisions/MK.yaml +2548 -0
  132. data/lib/countries/data/subdivisions/ML.yaml +363 -0
  133. data/lib/countries/data/subdivisions/MM.yaml +534 -0
  134. data/lib/countries/data/subdivisions/MN.yaml +935 -17
  135. data/lib/countries/data/subdivisions/MR.yaml +428 -5
  136. data/lib/countries/data/subdivisions/MT.yaml +2534 -13
  137. data/lib/countries/data/subdivisions/MU.yaml +574 -7
  138. data/lib/countries/data/subdivisions/MV.yaml +719 -5
  139. data/lib/countries/data/subdivisions/MW.yaml +1056 -1
  140. data/lib/countries/data/subdivisions/MX.yaml +1644 -2
  141. data/lib/countries/data/subdivisions/MY.yaml +708 -7
  142. data/lib/countries/data/subdivisions/MZ.yaml +450 -3
  143. data/lib/countries/data/subdivisions/NA.yaml +483 -0
  144. data/lib/countries/data/subdivisions/NE.yaml +289 -0
  145. data/lib/countries/data/subdivisions/NG.yaml +1428 -2
  146. data/lib/countries/data/subdivisions/NI.yaml +660 -2
  147. data/lib/countries/data/subdivisions/NL.yaml +803 -3
  148. data/lib/countries/data/subdivisions/NO.yaml +1075 -0
  149. data/lib/countries/data/subdivisions/NP.yaml +572 -1
  150. data/lib/countries/data/subdivisions/NR.yaml +539 -2
  151. data/lib/countries/data/subdivisions/NZ.yaml +632 -2
  152. data/lib/countries/data/subdivisions/OM.yaml +396 -3
  153. data/lib/countries/data/subdivisions/PA.yaml +478 -0
  154. data/lib/countries/data/subdivisions/PE.yaml +1023 -2
  155. data/lib/countries/data/subdivisions/PG.yaml +788 -3
  156. data/lib/countries/data/subdivisions/PH.yaml +3055 -7
  157. data/lib/countries/data/subdivisions/PK.yaml +357 -2
  158. data/lib/countries/data/subdivisions/PL.yaml +807 -14
  159. data/lib/countries/data/subdivisions/PS.yaml +490 -0
  160. data/lib/countries/data/subdivisions/PT.yaml +741 -4
  161. data/lib/countries/data/subdivisions/PW.yaml +532 -1
  162. data/lib/countries/data/subdivisions/PY.yaml +687 -0
  163. data/lib/countries/data/subdivisions/QA.yaml +269 -3
  164. data/lib/countries/data/subdivisions/RO.yaml +1954 -21
  165. data/lib/countries/data/subdivisions/RS.yaml +1148 -14
  166. data/lib/countries/data/subdivisions/RU.yaml +4535 -20
  167. data/lib/countries/data/subdivisions/RW.yaml +220 -5
  168. data/lib/countries/data/subdivisions/SA.yaml +516 -19
  169. data/lib/countries/data/subdivisions/SB.yaml +363 -2
  170. data/lib/countries/data/subdivisions/SC.yaml +780 -6
  171. data/lib/countries/data/subdivisions/SD.yaml +809 -301
  172. data/lib/countries/data/subdivisions/SE.yaml +1027 -21
  173. data/lib/countries/data/subdivisions/SG.yaml +36 -0
  174. data/lib/countries/data/subdivisions/SH.yaml +115 -1
  175. data/lib/countries/data/subdivisions/SI.yaml +7067 -77
  176. data/lib/countries/data/subdivisions/SK.yaml +395 -8
  177. data/lib/countries/data/subdivisions/SL.yaml +143 -1
  178. data/lib/countries/data/subdivisions/SM.yaml +400 -2
  179. data/lib/countries/data/subdivisions/SN.yaml +506 -0
  180. data/lib/countries/data/subdivisions/SO.yaml +574 -7
  181. data/lib/countries/data/subdivisions/SR.yaml +334 -0
  182. data/lib/countries/data/subdivisions/SS.yaml +428 -0
  183. data/lib/countries/data/subdivisions/ST.yaml +14 -0
  184. data/lib/countries/data/subdivisions/SV.yaml +488 -0
  185. data/lib/countries/data/subdivisions/SY.yaml +569 -16
  186. data/lib/countries/data/subdivisions/SZ.yaml +144 -0
  187. data/lib/countries/data/subdivisions/TD.yaml +798 -6
  188. data/lib/countries/data/subdivisions/TG.yaml +182 -3
  189. data/lib/countries/data/subdivisions/TH.yaml +2935 -5
  190. data/lib/countries/data/subdivisions/TJ.yaml +233 -0
  191. data/lib/countries/data/subdivisions/TL.yaml +450 -3
  192. data/lib/countries/data/subdivisions/TM.yaml +265 -1
  193. data/lib/countries/data/subdivisions/TN.yaml +844 -3
  194. data/lib/countries/data/subdivisions/TO.yaml +177 -3
  195. data/lib/countries/data/subdivisions/TR.yaml +3829 -6
  196. data/lib/countries/data/subdivisions/TT.yaml +522 -0
  197. data/lib/countries/data/subdivisions/TV.yaml +228 -0
  198. data/lib/countries/data/subdivisions/TW.yaml +761 -13
  199. data/lib/countries/data/subdivisions/TZ.yaml +1160 -7
  200. data/lib/countries/data/subdivisions/UA.yaml +1454 -28
  201. data/lib/countries/data/subdivisions/UG.yaml +3741 -20
  202. data/lib/countries/data/subdivisions/UM.yaml +486 -1
  203. data/lib/countries/data/subdivisions/US.yaml +3028 -3
  204. data/lib/countries/data/subdivisions/UY.yaml +753 -1
  205. data/lib/countries/data/subdivisions/UZ.yaml +592 -7
  206. data/lib/countries/data/subdivisions/VC.yaml +176 -0
  207. data/lib/countries/data/subdivisions/VE.yaml +1055 -2
  208. data/lib/countries/data/subdivisions/VN.yaml +2444 -55
  209. data/lib/countries/data/subdivisions/VU.yaml +225 -3
  210. data/lib/countries/data/subdivisions/WF.yaml +138 -0
  211. data/lib/countries/data/subdivisions/WS.yaml +371 -6
  212. data/lib/countries/data/subdivisions/YE.yaml +857 -14
  213. data/lib/countries/data/subdivisions/ZA.yaml +459 -3
  214. data/lib/countries/data/subdivisions/ZM.yaml +393 -2
  215. data/lib/countries/data/subdivisions/ZW.yaml +341 -0
  216. data/lib/countries/data/translation_corrections.yaml +2 -0
  217. data/lib/countries/sources/cldr/downloader.rb +35 -0
  218. data/lib/countries/sources/cldr/subdivision.rb +34 -0
  219. data/lib/countries/sources/cldr/subdivision_updater.rb +34 -0
  220. data/lib/countries/sources/local/cached_loader.rb +27 -0
  221. data/lib/countries/sources/local/subdivision.rb +32 -0
  222. data/lib/countries/sources.rb +6 -0
  223. data/lib/countries/tasks/geocoding.rake +4 -3
  224. data/lib/countries/version.rb +1 -1
  225. data/spec/country_spec.rb +54 -0
  226. metadata +29 -3
@@ -3,6 +3,7 @@ BU:
3
3
  unofficial_names: Bulawayo
4
4
  translations:
5
5
  en: Bulawayo
6
+ ru: Булавайо
6
7
  geo:
7
8
  latitude: -20.1325066
8
9
  longitude: 28.626479
@@ -15,6 +16,8 @@ HA:
15
16
  unofficial_names: Harare
16
17
  translations:
17
18
  en: Harare
19
+ de: Provinz Harare
20
+ ru: Хараре
18
21
  geo:
19
22
  latitude: -17.863889
20
23
  longitude: 31.029722
@@ -27,6 +30,49 @@ MA:
27
30
  unofficial_names: Manicaland
28
31
  translations:
29
32
  en: Manicaland
33
+ af: Manicaland
34
+ ar: محافظة مانيكالاند
35
+ bg: Маникаленд
36
+ bn: মনিকাল্যান্ড প্রদেশ
37
+ ca: Manicaland
38
+ cs: Provincie Manica
39
+ da: Manicaland
40
+ de: Provinz Manicaland
41
+ el: Μανικαλάνδη
42
+ es: Manicalandia
43
+ et: Manicaland
44
+ eu: Manicaland
45
+ fa: استان مانیکالند
46
+ fi: Manicaland
47
+ fr: Manicaland
48
+ gu: મેનિકાલૅન્ડ પ્રાંત
49
+ hi: मैनिकालैंड प्रांत
50
+ id: Manicaland
51
+ it: provincia del Manicaland
52
+ ja: マニカランド州
53
+ ka: მანიკალენდი
54
+ kn: ಮ್ಯಾನಿಕಲ್ ಮತ್ತು ಪ್ರಾಂತ್ಯ
55
+ ko: 마니칼랜드 주
56
+ lt: Manikalandas
57
+ mr: माणिकलँड प्रांत
58
+ ms: Manicaland
59
+ nb: Manicaland
60
+ nl: Manicaland
61
+ pl: Manicaland
62
+ pt: Manicaland
63
+ ro: Manicaland
64
+ ru: Маникаленд
65
+ si: මනිකලන්ඩ් පළාත
66
+ sr: Маникаленд
67
+ sv: Manicaland
68
+ ta: மணிகலந்து மாகாணம்
69
+ te: మానికాలాండ్ ప్రావిన్స్
70
+ th: จังหวัดมานิกาแลนด์
71
+ tr: Manicaland
72
+ uk: Манікаленд
73
+ ur: مانیکالینڈ صوبہ
74
+ vi: Tỉnh Manicaland
75
+ zh: 馬尼卡蘭省
30
76
  geo:
31
77
  latitude: -18.9216386
32
78
  longitude: 32.174605
@@ -39,6 +85,48 @@ MC:
39
85
  unofficial_names: Mashonaland Central
40
86
  translations:
41
87
  en: Mashonaland Central
88
+ af: Masjonaland-Sentraal
89
+ ar: مقاطعة ماشونالاند الوسطى
90
+ bg: Централен Машоналенд
91
+ bn: ম্যাশোনাল্যান্ড কেন্দ্রীয় প্রদেশ
92
+ ca: Mashonaland Central
93
+ da: Mashonaland Central
94
+ de: Provinz Mashonaland Central
95
+ el: Κεντρική Μασοναλάνδη
96
+ es: Mashonalandia Central
97
+ et: Kesk-Mashonaland
98
+ eu: Erdialdeko Mashonaland
99
+ fa: استان ماشونالند مرکزی
100
+ fi: Mashonaland Central
101
+ fr: Mashonaland central
102
+ gu: મશોનાલેન્ડ સેન્ટ્રલ પ્રાંત
103
+ hi: मशोनालैंड मध्य प्रांत
104
+ id: Mashonaland Pusat
105
+ it: provincia del Mashonaland Centrale
106
+ ja: 中央マショナランド州
107
+ ka: ცენტრალური მაშონალენდი
108
+ kn: ಮಶೋನಾಲ್ಯಾಂಡ್ ಮಧ್ಯ ಪ್ರಾಂತ್ಯ
109
+ ko: 중앙마쇼날랜드 주
110
+ lt: Vidurio Mašonalandas
111
+ mr: माशॉनलँड मध्यवर्ती प्रांत
112
+ ms: Mashonaland Central Province
113
+ nb: Mashonaland Central
114
+ nl: Mashonaland Central
115
+ pl: Maszona Środkowa
116
+ pt: Mashonaland Central
117
+ ro: Mashonaland Central
118
+ ru: Центральный Машоналенд
119
+ si: මාෂ්හොනලන්ඩ් මධ්‍යම පළාත
120
+ sr: Машоналенд Централ
121
+ sv: Mashonaland Central
122
+ ta: மஷோநலன்ட் சென்ட்ரல் மாகாணம்
123
+ te: మషూనాలాండ్ సెంట్రల్ ప్రావిన్స్
124
+ th: มาโชนาแลนด์เซนทรัล
125
+ tr: Mashonaland Merkez
126
+ uk: Центральний Машоналенд
127
+ ur: ماشونالینڈ وسطی صوبہ
128
+ vi: Tỉnh Miền Trung Mashonaland
129
+ zh: 中馬紹納蘭省
42
130
  geo:
43
131
  latitude: -16.7644295
44
132
  longitude: 31.0793705
@@ -51,6 +139,48 @@ ME:
51
139
  unofficial_names: Mashonaland East
52
140
  translations:
53
141
  en: Mashonaland East
142
+ af: Masjonaland-Oos
143
+ ar: محافظة شرق ماشونالاند
144
+ bg: Източен Машоналенд
145
+ bn: ম্যাশনাল্যান্ড পূর্ব প্রদেশ
146
+ ca: Mashonaland Oriental
147
+ da: Mashonaland East
148
+ de: Provinz Mashonaland East
149
+ el: Ανατολική Μασοναλάνδη
150
+ es: Mashonalandia Oriental
151
+ et: Ida-Mashonaland
152
+ eu: Ekialdeko Mashonaland
153
+ fa: استان ماشونالند شرقی
154
+ fi: Mashonaland East
155
+ fr: Mashonaland oriental
156
+ gu: મશોનાલેન્ડ પૂર્વ પ્રાંત
157
+ hi: माशोनालैंड पूर्व प्रांत
158
+ id: Mashonaland Timur
159
+ it: provincia del Mashonaland Orientale
160
+ ja: 東マショナランド州
161
+ ka: აღმოსავლეთი მაშონალენდი
162
+ kn: ಮಶೋನಾಲ್ಯಾಂಡ್ ಪೂರ್ವ ಪ್ರಾಂತ್ಯ
163
+ ko: 동마쇼날랜드 주
164
+ lt: Rytų Mašonalandas
165
+ mr: माशोनॅंड पूर्व प्रांत
166
+ ms: Mashonaland Timur
167
+ nb: Mashonaland East
168
+ nl: Mashonaland East
169
+ pl: Maszona Wschodnia
170
+ pt: Mashonaland Este
171
+ ro: Provincia Mashonaland East
172
+ ru: Восточный Машоналенд
173
+ si: මශෝනලන්ඩ් නැගෙනහිර පළාත
174
+ sr: Машоналенд Исток
175
+ sv: Mashonaland East
176
+ ta: மஷோநலன்ட் கிழக்கு மாகாணம்
177
+ te: మాషోనాలాండ్ ఈస్ట్ ప్రావిన్స్
178
+ th: มาโชนาแลนด์
179
+ tr: Doğu Mashonaland
180
+ uk: Східний Машоналенд
181
+ ur: ماشونالینڈ مشرقی صوبہ
182
+ vi: Tỉnh Mashonaland East
183
+ zh: 東馬紹納蘭省
54
184
  geo:
55
185
  latitude: -18.5871642
56
186
  longitude: 31.2626366
@@ -63,6 +193,48 @@ MI:
63
193
  unofficial_names: Midlands
64
194
  translations:
65
195
  en: Midlands
196
+ af: Midlands
197
+ ar: محافظة ميدلاندز
198
+ bg: Мидлендс
199
+ bn: মিডল্যান্ডস প্রদেশ
200
+ ca: Midlands
201
+ da: Midlands
202
+ de: Provinz Midlands
203
+ el: Μίντλαντς
204
+ es: Midlands
205
+ et: Midlandsi provints
206
+ eu: Midlands
207
+ fa: استان میدلندز
208
+ fi: Midlands
209
+ fr: Province des Midlands
210
+ gu: મિડલેન્ડ્સ પ્રાંત
211
+ hi: मिडलैंड्स प्रांत
212
+ id: Provinsi Midlands
213
+ it: provincia delle Midland
214
+ ja: ミッドランズ州
215
+ ka: მიდლენდსი
216
+ kn: ಮಿಡ್ಲ್ಯಾಂಡ್ಸ್ ಪ್ರಾಂತ್ಯ
217
+ ko: 미들랜즈 주
218
+ lt: Midlandsas
219
+ mr: मिडलंड्स प्रांत
220
+ ms: Midlands Province
221
+ nb: Midlands
222
+ nl: Midlands
223
+ pl: Midlands
224
+ pt: Midlands
225
+ ro: Provincia Midlands
226
+ ru: Мидлендс
227
+ si: මිඩ්ලන්ඩ් පළාත
228
+ sr: Мидлендс
229
+ sv: Midlands
230
+ ta: மிட்லாண்ட்ஸ் மாகாணம்
231
+ te: మిడ్‌లాండ్స్ ప్రావిన్స్
232
+ th: จังหวัดมิดแลนด์
233
+ tr: Midlands
234
+ uk: Мідлендс
235
+ ur: مڈلینڈز صوبہ
236
+ vi: Tỉnh Midlands
237
+ zh: 中部省
66
238
  geo:
67
239
  latitude: -19.0552009
68
240
  longitude: 29.6035495
@@ -75,6 +247,49 @@ MN:
75
247
  unofficial_names: Matabeleland North
76
248
  translations:
77
249
  en: Matabeleland North
250
+ af: Matabeleland-Noord
251
+ ar: محافظة شمال ماتابيليلاند
252
+ bg: Северен Матабелеленд
253
+ bn: মাতাবেলেল্যান্ড উত্তর প্রদেশ
254
+ ca: Matabeleland Septentrional
255
+ da: Matabeleland North
256
+ de: Provinz Matabeleland North
257
+ el: Βόρεια Ματαμπελελάνδη
258
+ es: Matabelelandia Septentrional
259
+ et: Põhja-Matabeleland
260
+ eu: Iparraldeko Matabeleland
261
+ fa: استان ماتابلند شمالی
262
+ fi: Matabeleland North
263
+ fr: Matabeleland septentrional
264
+ gu: મતાબેલેલેન્ડ ઉત્તર પ્રાંત
265
+ hi: माटेबेलेलैंड उत्तरी प्रांत
266
+ id: Matabeleland Utara
267
+ it: provincia del Matabeleland Settentrionale
268
+ ja: 北マタベレランド州
269
+ ka: ჩრდილოეთი მატაბელელენდი
270
+ kn: ಮಾಟಬೇಲೆಲ್ಯಾಂಡ್ ಉತ್ತರ ಪ್ರಾಂತ್ಯ
271
+ ko: 북마타벨랜드 주
272
+ lt: Šiaurės Matabelelandas
273
+ mr: माटेबेलेलांड उत्तर प्रांत
274
+ ms: Matabeleland North Province
275
+ nb: Matabeleland North
276
+ nl: Matabeleland North
277
+ pl: Matabeleland Północny
278
+ pt: Matabeleland Norte
279
+ ro: Matabeleland North
280
+ ru: Северный Матабелеленд
281
+ si: මටබෙලෙලන්ඩ් උතුරු පළාත
282
+ sr: Матабелеленд Север
283
+ sv: Matabeleland North
284
+ sw: Matabeleland North
285
+ ta: மதபேலேலாண்ட் வடக்கு மாகாணம்
286
+ te: మాటాబెలెలాండ్ ఉత్తర ప్రావిన్స్
287
+ th: จังหวัดมาทาเบเลแลนด์เหนือ
288
+ tr: Kuzey Matabeleland
289
+ uk: Північний Матабелеленд
290
+ ur: ماتابیلےلینڈ شمالی صوبہ
291
+ vi: Tỉnh Matabeleland North
292
+ zh: 北馬塔貝萊蘭省
78
293
  geo:
79
294
  latitude: -18.5331566
80
295
  longitude: 27.5495846
@@ -87,6 +302,48 @@ MS:
87
302
  unofficial_names: Matabeleland South
88
303
  translations:
89
304
  en: Matabeleland South
305
+ af: Matabeleland-Suid
306
+ ar: مقاطعة جنوب ماتابيليلاند
307
+ bg: Южен Матабелеленд
308
+ bn: মাটাবেলেল্যান্ড দক্ষিন প্রদেশ
309
+ ca: Matabeleland Meridional
310
+ da: Matabeleland South
311
+ de: Provinz Matabeleland South
312
+ el: Νότια Ματαμπελελάνδη
313
+ es: Matabelelandia Meridional
314
+ et: Lõuna-Matabeleland
315
+ eu: Hegoaldeko Matabeleland
316
+ fa: استان ماتابلند جنوبی
317
+ fi: Matabeleland South
318
+ fr: Matabeleland méridional
319
+ gu: માટેબેલેલેન્ડ દક્ષિણ પ્રાંત
320
+ hi: माताबेलेलैंड दक्षिण प्रांत
321
+ id: Matabeleland Selatan
322
+ it: provincia del Matabeleland Meridionale
323
+ ja: 南マタベレランド州
324
+ ka: სამხრეთი მატაბელელენდი
325
+ kn: ಮ್ಯಾಟಬೇಲೆಲ್ಯಾಂಡ್ ದಕ್ಷಿಣ ಪ್ರಾಂತ್ಯ
326
+ ko: 남마타벨랜드 주
327
+ lt: Pietų Matabelelandas
328
+ mr: माटेबेलेईल दक्षिण प्रांत
329
+ ms: Daerah Selatan Matabeleland
330
+ nb: Matabeleland South
331
+ nl: Matabeleland South
332
+ pl: Matabeleland Południowy
333
+ pt: Matabeleland Sul
334
+ ro: Matabeleland South
335
+ ru: Южный Матабелеленд
336
+ si: මටබෙලේලන්ඩ් දකුණු පළාත
337
+ sr: Матабелеленд Југ
338
+ sv: Matabeleland South
339
+ ta: மதபேலேலாண்ட் தெற்கு மாகாணம்
340
+ te: మాటాబెలెలాండ్ దక్షిణ ప్రావిన్స్
341
+ th: จังหวัดเมตาเบเลแลนด์เซาท์
342
+ tr: Güney Matabeleland
343
+ uk: Південний Матабелеленд
344
+ ur: ماتابیلےلینڈ جنوبی صوبہ
345
+ vi: Tỉnh Matabeleland South
346
+ zh: 南馬塔貝萊蘭省
90
347
  geo:
91
348
  latitude: -21.052337
92
349
  longitude: 29.0459927
@@ -99,6 +356,48 @@ MV:
99
356
  unofficial_names: Masvingo
100
357
  translations:
101
358
  en: Masvingo
359
+ af: Masvingo
360
+ ar: منطقة ماسفينغو
361
+ bg: Масвинго
362
+ bn: মাাভিঙ্গো প্রদেশ
363
+ ca: Província de Masvingo
364
+ da: Masvingo
365
+ de: Provinz Masvingo
366
+ el: Μασβίνγκο
367
+ es: Provincia de Masvingo
368
+ et: Masvingo provints
369
+ eu: Masvingoko probintzia
370
+ fa: استان ماسوینگو
371
+ fi: Masvingo
372
+ fr: Province de Masvingo
373
+ gu: માસવિન્ગો પ્રાંત
374
+ hi: मैसविंगो प्रांत
375
+ id: Provinsi Masvingo
376
+ it: Provincia di Masvingo
377
+ ja: マシンゴ州
378
+ ka: მასვინგოს პროვინცია
379
+ kn: ಮಾಸ್ವಿಂಗ್ ಪ್ರಾಂತ್ಯ
380
+ ko: 마스빙고 주
381
+ lt: Masvingo provincija
382
+ mr: मासिविओ प्रांत
383
+ ms: Wilayah Masvingo
384
+ nb: Masvingo
385
+ nl: Masvingo
386
+ pl: Masvingo
387
+ pt: Masvingo
388
+ ro: Provincia Masvingo
389
+ ru: Масвинго
390
+ si: මස්වින්ගෝ පළාත
391
+ sr: Машвинго
392
+ sv: Masvingo
393
+ ta: மாசுவிங்கோ மாகாணம்
394
+ te: మాస్వింగో ప్రావిన్స్
395
+ th: จังหวัดมาสวินโก
396
+ tr: Masvingo
397
+ uk: Масвінго
398
+ ur: ماسونگو صوبہ
399
+ vi: Tỉnh Masvingo
400
+ zh: 馬斯溫戈省
102
401
  geo:
103
402
  latitude: -20.074444
104
403
  longitude: 30.83277799999999
@@ -111,6 +410,48 @@ MW:
111
410
  unofficial_names: Mashonaland West
112
411
  translations:
113
412
  en: Mashonaland West
413
+ af: Masjonaland-Wes
414
+ ar: محافظة ماشونالاند الغربية
415
+ bg: Западен Машоналенд
416
+ bn: ম্যাশনাল্যান্ড ওয়েস্ট প্রদেশ
417
+ ca: Mashonaland Occidental
418
+ da: Mashonaland West
419
+ de: Provinz Mashonaland West
420
+ el: Δυτική Μασοναλάνδη
421
+ es: Mashonalandia Occidental
422
+ et: Lääne-Mashonaland
423
+ eu: Mendebaldeko Mashonaland
424
+ fa: استان ماشونالند غربی
425
+ fi: Mashonaland West
426
+ fr: Mashonaland occidental
427
+ gu: મેશોનાલેન્ડ પશ્ચિમ પ્રાંત
428
+ hi: मशोनालैंड पश्चिमी प्रांत
429
+ id: Mashonaland Barat
430
+ it: provincia del Mashonaland Occidentale
431
+ ja: 西マショナランド州
432
+ ka: დასავლეთი მაშონალენდი
433
+ kn: ಪಶ್ಚಿಮ ಪ್ರಾಂತ್ಯದ ಮಶೋನಾಲ್ಯಾಂಡ್
434
+ ko: 서마쇼날랜드 주
435
+ lt: Vakarų Mašonalandas
436
+ mr: मशोनालँड पश्चिम प्रांत
437
+ ms: Mashonaland Barat
438
+ nb: Mashonaland West
439
+ nl: Mashonaland West
440
+ pl: Maszona Zachodnia
441
+ pt: Mashonaland Oeste
442
+ ro: Mashonaland West
443
+ ru: Западный Машоналенд
444
+ si: ලක්ෂද්වීප්
445
+ sr: Машоналенд Запад
446
+ sv: Mashonaland West
447
+ ta: மாஷானலேண்ட் மேற்கு மாகாணம்
448
+ te: మాషోనాలాండ్ పశ్చిమ ప్రావిన్స్
449
+ th: จังหวัดมาสโฮนาแลน เวส
450
+ tr: Batı Mashonaland
451
+ uk: Західний Машоналенд
452
+ ur: ماشونالینڈ مغربی صوبہ
453
+ vi: Tỉnh Mashonaland West
454
+ zh: 西馬紹納蘭省
114
455
  geo:
115
456
  latitude: -17.4851029
116
457
  longitude: 29.7889248
@@ -28,3 +28,5 @@ fa:
28
28
  he:
29
29
  PS: "פלסטין, מדינת"
30
30
  VI: "איי הבתולה (ארה)"
31
+ se:
32
+ GB: "Storbritannien"
@@ -0,0 +1,35 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'nokogiri'
4
+ require 'fileutils'
5
+ module Sources
6
+ module CLDR
7
+ module Downloader
8
+ module_function
9
+
10
+ def subdivisions
11
+ download_folder('subdivisions')
12
+ end
13
+
14
+ def download_folder(type)
15
+ folder = File.join(ISO3166_ROOT_PATH, 'tmp', 'cldr', 'trunk', 'common', type)
16
+ FileUtils.mkdir_p(folder)
17
+ doc = Nokogiri::HTML get(type + '/')
18
+ doc.css('a[href]').map { |e| e.attributes['href'].value }.each do |href|
19
+ next if href == '../'
20
+ File.write(File.join(folder, href), get([type, href].join('/')))
21
+ end
22
+ end
23
+
24
+ def get(path)
25
+ url = URI("http://www.unicode.org/repos/cldr/trunk/common/#{path}")
26
+
27
+ http = Net::HTTP.new(url.host, url.port)
28
+
29
+ request = Net::HTTP::Get.new(url)
30
+ response = http.request(request)
31
+ response.read_body
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ module Sources
2
+ module CLDR
3
+ class Subdivision
4
+ attr_reader :xml, :language_code
5
+ def initialize(language_code:, xml:)
6
+ @language_code = language_code
7
+ @xml = xml
8
+ end
9
+
10
+ def text
11
+ xml.text
12
+ end
13
+
14
+ def country_code
15
+ type[0..1].upcase
16
+ end
17
+
18
+ def code
19
+ type[2..-1].upcase
20
+ end
21
+
22
+ def type
23
+ xml.attributes['type'].value.delete('-')
24
+ end
25
+
26
+ def to_h
27
+ data = {}
28
+ data['translations'] ||= {}
29
+ data['translations'][language_code] = text
30
+ data
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext/hash/deep_merge'
3
+ require 'nokogiri'
4
+ require 'pry'
5
+
6
+ module Sources
7
+ module CLDR
8
+ class SubdivisionUpdater
9
+ def call
10
+ d = Dir['./tmp/cldr/trunk/common/subdivisions/*.xml']
11
+ loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
12
+ d.each do |file_path|
13
+ language_data = Nokogiri::XML(File.read(file_path))
14
+ language_code = File.basename(file_path, '.*')
15
+ subdivisions = language_data.css('subdivision')
16
+ next if subdivisions.empty?
17
+ last_country_code_seen = nil
18
+
19
+ subdivisions.each_with_index do |subdivision, index|
20
+ subdivision = Sources::CLDR::Subdivision.new(language_code: language_code, xml: subdivision)
21
+ data = loader.load(subdivision.country_code)
22
+ data[subdivision.code] ||= {}
23
+ data[subdivision.code] = data[subdivision.code].deep_merge(subdivision.to_h)
24
+ if (last_country_code_seen && last_country_code_seen != subdivision.country_code) || index == subdivisions.size - 1
25
+ puts "Updated #{subdivision.country_code} with language_code #{language_code}"
26
+ loader.save(subdivision.country_code, data)
27
+ end
28
+ last_country_code_seen = subdivision.country_code
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,27 @@
1
+ module Sources
2
+ module Local
3
+ class CachedLoader
4
+ attr_reader :klass
5
+ def initialize(klass)
6
+ @klass = klass
7
+ @loaded_countries = {}
8
+ end
9
+
10
+ def from_cache(country_code)
11
+ @loaded_countries[country_code]
12
+ end
13
+
14
+ def load(country_code)
15
+ if (data = from_cache(country_code))
16
+ data
17
+ else
18
+ @loaded_countries[country_code] = klass.load(country_code)
19
+ end
20
+ end
21
+
22
+ def save(country_code, data)
23
+ klass.new(country_code).save(data)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ module Sources
2
+ module Local
3
+ class Subdivision
4
+ attr_reader :code
5
+ def initialize(code)
6
+ @code = code
7
+ end
8
+
9
+ def load
10
+ if File.exist?(file_path)
11
+ YAML.load_file(file_path) || {}
12
+ else
13
+ {}
14
+ end
15
+ end
16
+
17
+ def save(data)
18
+ File.open(file_path, 'w') { |f| f.write data.to_yaml }
19
+ rescue
20
+ puts "failed to read #{file}: #{$ERROR_INFO}"
21
+ end
22
+
23
+ def file_path
24
+ "lib/countries/data/subdivisions/#{code}.yaml"
25
+ end
26
+
27
+ def self.load(code)
28
+ new(code).load
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,6 @@
1
+ require_relative './sources/local/cached_loader'
2
+ require_relative './sources/local/subdivision'
3
+
4
+ require_relative './sources/cldr/downloader'
5
+ require_relative './sources/cldr/subdivision'
6
+ require_relative './sources/cldr/subdivision_updater'
@@ -32,7 +32,7 @@ def country_codes
32
32
  end
33
33
 
34
34
  namespace :geocode do
35
- desc 'Retrieve and store subdivisions coordinates'
35
+ desc 'Retrieve and store countries coordinates'
36
36
  task :fetch_countries do
37
37
  require 'countries'
38
38
  # Iterate over countries
@@ -70,12 +70,12 @@ namespace :geocode do
70
70
 
71
71
  desc 'Retrieve and store subdivisions coordinates'
72
72
  task :fetch_subdivisions do
73
- require 'countries'
73
+ require_relative '../../countries'
74
74
  # Iterate all countries with subdivisions
75
75
  ISO3166::Country.all.select(&:subdivisions?).each do |c|
76
76
  # Iterate subdivisions
77
77
  state_data = c.subdivisions.dup
78
- state_data.reject { |_, data| data['latitude'] }.each do |code, data|
78
+ state_data.reject { |_, data| data['geo'] }.each do |code, data|
79
79
  location = "#{data['name']}, #{c.name}"
80
80
 
81
81
  # Handle special geocoding cases where Google defaults to well known
@@ -87,6 +87,7 @@ namespace :geocode do
87
87
  next unless (result = geocode(location))
88
88
  geometry = result.geometry
89
89
  if geometry['location']
90
+ state_data[code]['geo'] ||= {}
90
91
  state_data[code]['geo']['latitude'] = geometry['location']['lat']
91
92
  state_data[code]['geo']['longitude'] = geometry['location']['lng']
92
93
  end
@@ -1,3 +1,3 @@
1
1
  module Countries
2
- VERSION = '2.1.2'.freeze
2
+ VERSION = '2.1.4'.freeze
3
3
  end
data/spec/country_spec.rb CHANGED
@@ -242,6 +242,26 @@ describe ISO3166::Country do
242
242
  end
243
243
  end
244
244
 
245
+ describe 'subdivision_names_with_codes' do
246
+ it 'should return an alphabetized list of all subdivisions names with codes' do
247
+ subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes
248
+ expect(subdivisions).to be_an(Array)
249
+ expect(subdivisions.first[0]).to be_a(String)
250
+ expect(subdivisions.size).to eq(27)
251
+ expect(subdivisions.first[0]).to eq('Alexandria')
252
+ end
253
+
254
+ it 'should return an alphabetized list of subdivision names translated to current locale with codes' do
255
+ ISO3166.configuration.locales = [:es, :de, :en]
256
+
257
+ subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes(:es)
258
+ expect(subdivisions).to be_an(Array)
259
+ expect(subdivisions.first[0]).to be_a(String)
260
+ expect(subdivisions.size).to eq(27)
261
+ expect(subdivisions.first[0]).to eq('Al Iskandariyah')
262
+ end
263
+ end
264
+
245
265
  describe 'valid?' do
246
266
  it 'should return true if country is valid' do
247
267
  expect(ISO3166::Country.new('US')).to be_valid
@@ -498,6 +518,31 @@ describe ISO3166::Country do
498
518
  end
499
519
  end
500
520
 
521
+ context "when search name with comma in 'name'" do
522
+ subject { ISO3166::Country.find_by_name(country_name) }
523
+
524
+ context 'with Republic of Korea' do
525
+ let(:country_name) { 'Korea, Republic of' }
526
+ it 'should return' do
527
+ expect(subject.first).to eq('KR')
528
+ end
529
+ end
530
+
531
+ context 'with Bolivia' do
532
+ let(:country_name) { 'Bolivia, Plurinational State of' }
533
+ it 'should return' do
534
+ expect(subject.first).to eq('BO')
535
+ end
536
+ end
537
+
538
+ context 'with Bonaire' do
539
+ let(:country_name) { 'Bonaire, Sint Eustatius and Saba' }
540
+ it 'should return' do
541
+ expect(subject.first).to eq('BQ')
542
+ end
543
+ end
544
+ end
545
+
501
546
  context 'when search lowercase multibyte name found' do
502
547
  subject { ISO3166::Country.find_country_by_name('россия') }
503
548
 
@@ -576,6 +621,15 @@ describe ISO3166::Country do
576
621
  end
577
622
  end
578
623
 
624
+ context 'when the search term contains comma' do
625
+ let(:korea) { ISO3166::Country.find_country_by_name('Korea, Republic of') }
626
+
627
+ it 'should be a country instance' do
628
+ expect(korea).to be_a(ISO3166::Country)
629
+ expect(korea.alpha2).to eq('KR')
630
+ end
631
+ end
632
+
579
633
  context 'when search translation found' do
580
634
  before do
581
635
  ISO3166.configure do |config|