calling-carmen 1.0.0.1

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 (842) hide show
  1. data/CHANGELOG.md +75 -0
  2. data/MIT-LICENSE +34 -0
  3. data/README.md +179 -0
  4. data/isd_data/world.yml +748 -0
  5. data/iso_data/world.yml +997 -0
  6. data/iso_data/world/ad.yml +15 -0
  7. data/iso_data/world/ae.yml +15 -0
  8. data/iso_data/world/af.yml +69 -0
  9. data/iso_data/world/ag.yml +17 -0
  10. data/iso_data/world/al.yml +25 -0
  11. data/iso_data/world/al/01.yml +7 -0
  12. data/iso_data/world/al/02.yml +5 -0
  13. data/iso_data/world/al/03.yml +9 -0
  14. data/iso_data/world/al/04.yml +7 -0
  15. data/iso_data/world/al/05.yml +7 -0
  16. data/iso_data/world/al/06.yml +9 -0
  17. data/iso_data/world/al/07.yml +7 -0
  18. data/iso_data/world/al/08.yml +7 -0
  19. data/iso_data/world/al/09.yml +7 -0
  20. data/iso_data/world/al/10.yml +7 -0
  21. data/iso_data/world/al/11.yml +5 -0
  22. data/iso_data/world/al/12.yml +7 -0
  23. data/iso_data/world/am.yml +23 -0
  24. data/iso_data/world/ao.yml +37 -0
  25. data/iso_data/world/ar.yml +47 -0
  26. data/iso_data/world/at.yml +19 -0
  27. data/iso_data/world/au.yml +17 -0
  28. data/iso_data/world/az.yml +143 -0
  29. data/iso_data/world/az/nx.yml +13 -0
  30. data/iso_data/world/ba.yml +7 -0
  31. data/iso_data/world/ba/bih.yml +21 -0
  32. data/iso_data/world/bb.yml +23 -0
  33. data/iso_data/world/bd.yml +13 -0
  34. data/iso_data/world/bd/1.yml +13 -0
  35. data/iso_data/world/bd/2.yml +23 -0
  36. data/iso_data/world/bd/3.yml +35 -0
  37. data/iso_data/world/bd/4.yml +21 -0
  38. data/iso_data/world/bd/5.yml +33 -0
  39. data/iso_data/world/bd/6.yml +9 -0
  40. data/iso_data/world/be.yml +23 -0
  41. data/iso_data/world/bf.yml +27 -0
  42. data/iso_data/world/bf/01.yml +13 -0
  43. data/iso_data/world/bf/02.yml +5 -0
  44. data/iso_data/world/bf/03.yml +3 -0
  45. data/iso_data/world/bf/04.yml +7 -0
  46. data/iso_data/world/bf/05.yml +7 -0
  47. data/iso_data/world/bf/06.yml +9 -0
  48. data/iso_data/world/bf/07.yml +7 -0
  49. data/iso_data/world/bf/08.yml +11 -0
  50. data/iso_data/world/bf/09.yml +7 -0
  51. data/iso_data/world/bf/10.yml +9 -0
  52. data/iso_data/world/bf/11.yml +7 -0
  53. data/iso_data/world/bf/12.yml +9 -0
  54. data/iso_data/world/bf/13.yml +9 -0
  55. data/iso_data/world/bg.yml +57 -0
  56. data/iso_data/world/bh.yml +11 -0
  57. data/iso_data/world/bi.yml +33 -0
  58. data/iso_data/world/bj.yml +25 -0
  59. data/iso_data/world/bl.yml +1 -0
  60. data/iso_data/world/bn.yml +9 -0
  61. data/iso_data/world/bo.yml +19 -0
  62. data/iso_data/world/br.yml +57 -0
  63. data/iso_data/world/bs.yml +67 -0
  64. data/iso_data/world/bt.yml +41 -0
  65. data/iso_data/world/bw.yml +21 -0
  66. data/iso_data/world/by.yml +15 -0
  67. data/iso_data/world/bz.yml +13 -0
  68. data/iso_data/world/ca.yml +27 -0
  69. data/iso_data/world/cd.yml +25 -0
  70. data/iso_data/world/cf.yml +35 -0
  71. data/iso_data/world/cg.yml +23 -0
  72. data/iso_data/world/ch.yml +53 -0
  73. data/iso_data/world/ci.yml +39 -0
  74. data/iso_data/world/cl.yml +31 -0
  75. data/iso_data/world/cm.yml +21 -0
  76. data/iso_data/world/cn.yml +69 -0
  77. data/iso_data/world/co.yml +67 -0
  78. data/iso_data/world/cr.yml +15 -0
  79. data/iso_data/world/cu.yml +31 -0
  80. data/iso_data/world/cv.yml +5 -0
  81. data/iso_data/world/cv/b.yml +15 -0
  82. data/iso_data/world/cv/s.yml +31 -0
  83. data/iso_data/world/cy.yml +13 -0
  84. data/iso_data/world/cz.yml +29 -0
  85. data/iso_data/world/cz/jc.yml +15 -0
  86. data/iso_data/world/cz/jm.yml +15 -0
  87. data/iso_data/world/cz/ka.yml +7 -0
  88. data/iso_data/world/cz/kr.yml +11 -0
  89. data/iso_data/world/cz/li.yml +9 -0
  90. data/iso_data/world/cz/mo.yml +13 -0
  91. data/iso_data/world/cz/ol.yml +11 -0
  92. data/iso_data/world/cz/pa.yml +9 -0
  93. data/iso_data/world/cz/pl.yml +15 -0
  94. data/iso_data/world/cz/pr.yml +31 -0
  95. data/iso_data/world/cz/st.yml +25 -0
  96. data/iso_data/world/cz/us.yml +15 -0
  97. data/iso_data/world/cz/vy.yml +11 -0
  98. data/iso_data/world/cz/zl.yml +9 -0
  99. data/iso_data/world/de.yml +33 -0
  100. data/iso_data/world/dj.yml +13 -0
  101. data/iso_data/world/dk.yml +11 -0
  102. data/iso_data/world/dm.yml +21 -0
  103. data/iso_data/world/do.yml +61 -0
  104. data/iso_data/world/dz.yml +97 -0
  105. data/iso_data/world/ec.yml +49 -0
  106. data/iso_data/world/ee.yml +31 -0
  107. data/iso_data/world/eg.yml +57 -0
  108. data/iso_data/world/er.yml +13 -0
  109. data/iso_data/world/es.yml +39 -0
  110. data/iso_data/world/es/an.yml +17 -0
  111. data/iso_data/world/es/ar.yml +7 -0
  112. data/iso_data/world/es/as.yml +3 -0
  113. data/iso_data/world/es/cb.yml +3 -0
  114. data/iso_data/world/es/cl.yml +19 -0
  115. data/iso_data/world/es/cm.yml +11 -0
  116. data/iso_data/world/es/cn.yml +5 -0
  117. data/iso_data/world/es/ct.yml +9 -0
  118. data/iso_data/world/es/ex.yml +5 -0
  119. data/iso_data/world/es/ga.yml +9 -0
  120. data/iso_data/world/es/ib.yml +3 -0
  121. data/iso_data/world/es/mc.yml +3 -0
  122. data/iso_data/world/es/md.yml +3 -0
  123. data/iso_data/world/es/nc.yml +3 -0
  124. data/iso_data/world/es/pv.yml +7 -0
  125. data/iso_data/world/es/ri.yml +3 -0
  126. data/iso_data/world/es/vc.yml +7 -0
  127. data/iso_data/world/et.yml +23 -0
  128. data/iso_data/world/fi.yml +13 -0
  129. data/iso_data/world/fj.yml +11 -0
  130. data/iso_data/world/fm.yml +9 -0
  131. data/iso_data/world/fr.yml +71 -0
  132. data/iso_data/world/fr/a.yml +5 -0
  133. data/iso_data/world/fr/b.yml +11 -0
  134. data/iso_data/world/fr/c.yml +9 -0
  135. data/iso_data/world/fr/d.yml +9 -0
  136. data/iso_data/world/fr/e.yml +9 -0
  137. data/iso_data/world/fr/f.yml +13 -0
  138. data/iso_data/world/fr/g.yml +9 -0
  139. data/iso_data/world/fr/h.yml +5 -0
  140. data/iso_data/world/fr/i.yml +9 -0
  141. data/iso_data/world/fr/j.yml +17 -0
  142. data/iso_data/world/fr/k.yml +11 -0
  143. data/iso_data/world/fr/l.yml +7 -0
  144. data/iso_data/world/fr/m.yml +9 -0
  145. data/iso_data/world/fr/n.yml +17 -0
  146. data/iso_data/world/fr/o.yml +5 -0
  147. data/iso_data/world/fr/p.yml +7 -0
  148. data/iso_data/world/fr/q.yml +5 -0
  149. data/iso_data/world/fr/r.yml +11 -0
  150. data/iso_data/world/fr/s.yml +7 -0
  151. data/iso_data/world/fr/t.yml +9 -0
  152. data/iso_data/world/fr/u.yml +13 -0
  153. data/iso_data/world/fr/v.yml +17 -0
  154. data/iso_data/world/ga.yml +19 -0
  155. data/iso_data/world/gb.yml +475 -0
  156. data/iso_data/world/gd.yml +15 -0
  157. data/iso_data/world/ge.yml +25 -0
  158. data/iso_data/world/gg.yml +1 -0
  159. data/iso_data/world/gh.yml +21 -0
  160. data/iso_data/world/gl.yml +9 -0
  161. data/iso_data/world/gm.yml +13 -0
  162. data/iso_data/world/gn.yml +17 -0
  163. data/iso_data/world/gn/b.yml +11 -0
  164. data/iso_data/world/gn/d.yml +11 -0
  165. data/iso_data/world/gn/f.yml +9 -0
  166. data/iso_data/world/gn/k.yml +11 -0
  167. data/iso_data/world/gn/l.yml +11 -0
  168. data/iso_data/world/gn/m.yml +7 -0
  169. data/iso_data/world/gn/n.yml +13 -0
  170. data/iso_data/world/gq.yml +19 -0
  171. data/iso_data/world/gr.yml +29 -0
  172. data/iso_data/world/gr/a.yml +11 -0
  173. data/iso_data/world/gr/b.yml +15 -0
  174. data/iso_data/world/gr/c.yml +9 -0
  175. data/iso_data/world/gr/d.yml +7 -0
  176. data/iso_data/world/gr/e.yml +9 -0
  177. data/iso_data/world/gr/f.yml +11 -0
  178. data/iso_data/world/gr/g.yml +7 -0
  179. data/iso_data/world/gr/h.yml +11 -0
  180. data/iso_data/world/gr/i.yml +3 -0
  181. data/iso_data/world/gr/j.yml +11 -0
  182. data/iso_data/world/gr/k.yml +7 -0
  183. data/iso_data/world/gr/l.yml +5 -0
  184. data/iso_data/world/gr/m.yml +9 -0
  185. data/iso_data/world/gt.yml +45 -0
  186. data/iso_data/world/gw.yml +9 -0
  187. data/iso_data/world/gw/l.yml +5 -0
  188. data/iso_data/world/gw/n.yml +7 -0
  189. data/iso_data/world/gw/s.yml +7 -0
  190. data/iso_data/world/gy.yml +21 -0
  191. data/iso_data/world/hn.yml +37 -0
  192. data/iso_data/world/hr.yml +43 -0
  193. data/iso_data/world/ht.yml +19 -0
  194. data/iso_data/world/hu.yml +87 -0
  195. data/iso_data/world/id.yml +15 -0
  196. data/iso_data/world/id/ij.yml +5 -0
  197. data/iso_data/world/id/jw.yml +13 -0
  198. data/iso_data/world/id/ka.yml +9 -0
  199. data/iso_data/world/id/ma.yml +5 -0
  200. data/iso_data/world/id/nu.yml +7 -0
  201. data/iso_data/world/id/sl.yml +13 -0
  202. data/iso_data/world/id/sm.yml +21 -0
  203. data/iso_data/world/ie.yml +9 -0
  204. data/iso_data/world/ie/c.yml +11 -0
  205. data/iso_data/world/ie/l.yml +25 -0
  206. data/iso_data/world/ie/m.yml +13 -0
  207. data/iso_data/world/ie/u.yml +7 -0
  208. data/iso_data/world/il.yml +13 -0
  209. data/iso_data/world/im.yml +1 -0
  210. data/iso_data/world/in.yml +71 -0
  211. data/iso_data/world/iq.yml +37 -0
  212. data/iso_data/world/ir.yml +61 -0
  213. data/iso_data/world/is.yml +19 -0
  214. data/iso_data/world/it.yml +41 -0
  215. data/iso_data/world/it/21.yml +17 -0
  216. data/iso_data/world/it/23.yml +3 -0
  217. data/iso_data/world/it/25.yml +25 -0
  218. data/iso_data/world/it/32.yml +5 -0
  219. data/iso_data/world/it/34.yml +15 -0
  220. data/iso_data/world/it/36.yml +9 -0
  221. data/iso_data/world/it/42.yml +9 -0
  222. data/iso_data/world/it/45.yml +19 -0
  223. data/iso_data/world/it/52.yml +21 -0
  224. data/iso_data/world/it/55.yml +5 -0
  225. data/iso_data/world/it/57.yml +11 -0
  226. data/iso_data/world/it/62.yml +11 -0
  227. data/iso_data/world/it/65.yml +9 -0
  228. data/iso_data/world/it/67.yml +5 -0
  229. data/iso_data/world/it/72.yml +11 -0
  230. data/iso_data/world/it/75.yml +13 -0
  231. data/iso_data/world/it/77.yml +5 -0
  232. data/iso_data/world/it/78.yml +11 -0
  233. data/iso_data/world/it/82.yml +19 -0
  234. data/iso_data/world/it/88.yml +17 -0
  235. data/iso_data/world/je.yml +1 -0
  236. data/iso_data/world/jm.yml +29 -0
  237. data/iso_data/world/jo.yml +25 -0
  238. data/iso_data/world/jp.yml +95 -0
  239. data/iso_data/world/ke.yml +15 -0
  240. data/iso_data/world/kg.yml +17 -0
  241. data/iso_data/world/kh.yml +49 -0
  242. data/iso_data/world/ki.yml +7 -0
  243. data/iso_data/world/km.yml +7 -0
  244. data/iso_data/world/kn.yml +5 -0
  245. data/iso_data/world/kn/k.yml +19 -0
  246. data/iso_data/world/kn/n.yml +11 -0
  247. data/iso_data/world/kp.yml +23 -0
  248. data/iso_data/world/kr.yml +33 -0
  249. data/iso_data/world/kw.yml +11 -0
  250. data/iso_data/world/kz.yml +33 -0
  251. data/iso_data/world/la.yml +37 -0
  252. data/iso_data/world/lb.yml +17 -0
  253. data/iso_data/world/li.yml +23 -0
  254. data/iso_data/world/lk.yml +19 -0
  255. data/iso_data/world/lk/1.yml +7 -0
  256. data/iso_data/world/lk/2.yml +7 -0
  257. data/iso_data/world/lk/3.yml +7 -0
  258. data/iso_data/world/lk/4.yml +11 -0
  259. data/iso_data/world/lk/5.yml +7 -0
  260. data/iso_data/world/lk/6.yml +5 -0
  261. data/iso_data/world/lk/7.yml +5 -0
  262. data/iso_data/world/lk/8.yml +5 -0
  263. data/iso_data/world/lk/9.yml +5 -0
  264. data/iso_data/world/lr.yml +27 -0
  265. data/iso_data/world/ls.yml +21 -0
  266. data/iso_data/world/lt.yml +21 -0
  267. data/iso_data/world/lu.yml +7 -0
  268. data/iso_data/world/lv.yml +67 -0
  269. data/iso_data/world/ly.yml +47 -0
  270. data/iso_data/world/ma.yml +33 -0
  271. data/iso_data/world/ma/01.yml +11 -0
  272. data/iso_data/world/ma/02.yml +5 -0
  273. data/iso_data/world/ma/03.yml +7 -0
  274. data/iso_data/world/ma/04.yml +13 -0
  275. data/iso_data/world/ma/05.yml +9 -0
  276. data/iso_data/world/ma/06.yml +11 -0
  277. data/iso_data/world/ma/07.yml +9 -0
  278. data/iso_data/world/ma/08.yml +9 -0
  279. data/iso_data/world/ma/09.yml +7 -0
  280. data/iso_data/world/ma/10.yml +5 -0
  281. data/iso_data/world/ma/11.yml +15 -0
  282. data/iso_data/world/ma/12.yml +5 -0
  283. data/iso_data/world/ma/13.yml +15 -0
  284. data/iso_data/world/ma/14.yml +11 -0
  285. data/iso_data/world/ma/15.yml +5 -0
  286. data/iso_data/world/ma/16.yml +5 -0
  287. data/iso_data/world/md.yml +75 -0
  288. data/iso_data/world/me.yml +43 -0
  289. data/iso_data/world/mf.yml +1 -0
  290. data/iso_data/world/mg.yml +13 -0
  291. data/iso_data/world/mh.yml +5 -0
  292. data/iso_data/world/mh/l.yml +29 -0
  293. data/iso_data/world/mh/t.yml +21 -0
  294. data/iso_data/world/mk.yml +169 -0
  295. data/iso_data/world/ml.yml +19 -0
  296. data/iso_data/world/mm.yml +29 -0
  297. data/iso_data/world/mn.yml +45 -0
  298. data/iso_data/world/mo.yml +1 -0
  299. data/iso_data/world/mr.yml +27 -0
  300. data/iso_data/world/mt.yml +137 -0
  301. data/iso_data/world/mu.yml +35 -0
  302. data/iso_data/world/mv.yml +41 -0
  303. data/iso_data/world/mw.yml +7 -0
  304. data/iso_data/world/mw/c.yml +19 -0
  305. data/iso_data/world/mw/n.yml +15 -0
  306. data/iso_data/world/mw/s.yml +25 -0
  307. data/iso_data/world/mx.yml +65 -0
  308. data/iso_data/world/my.yml +33 -0
  309. data/iso_data/world/mz.yml +23 -0
  310. data/iso_data/world/na.yml +27 -0
  311. data/iso_data/world/ne.yml +17 -0
  312. data/iso_data/world/ng.yml +75 -0
  313. data/iso_data/world/ni.yml +35 -0
  314. data/iso_data/world/nl.yml +25 -0
  315. data/iso_data/world/no.yml +43 -0
  316. data/iso_data/world/np.yml +11 -0
  317. data/iso_data/world/np/1.yml +7 -0
  318. data/iso_data/world/np/2.yml +7 -0
  319. data/iso_data/world/np/3.yml +7 -0
  320. data/iso_data/world/np/4.yml +7 -0
  321. data/iso_data/world/np/5.yml +5 -0
  322. data/iso_data/world/nr.yml +29 -0
  323. data/iso_data/world/nz.yml +7 -0
  324. data/iso_data/world/nz/n.yml +19 -0
  325. data/iso_data/world/nz/s.yml +15 -0
  326. data/iso_data/world/om.yml +19 -0
  327. data/iso_data/world/pa.yml +25 -0
  328. data/iso_data/world/pe.yml +53 -0
  329. data/iso_data/world/pg.yml +41 -0
  330. data/iso_data/world/ph.yml +35 -0
  331. data/iso_data/world/ph/01.yml +9 -0
  332. data/iso_data/world/ph/02.yml +11 -0
  333. data/iso_data/world/ph/03.yml +15 -0
  334. data/iso_data/world/ph/05.yml +13 -0
  335. data/iso_data/world/ph/06.yml +13 -0
  336. data/iso_data/world/ph/07.yml +9 -0
  337. data/iso_data/world/ph/08.yml +13 -0
  338. data/iso_data/world/ph/09.yml +9 -0
  339. data/iso_data/world/ph/10.yml +9 -0
  340. data/iso_data/world/ph/11.yml +13 -0
  341. data/iso_data/world/ph/12.yml +7 -0
  342. data/iso_data/world/ph/13.yml +11 -0
  343. data/iso_data/world/ph/14.yml +9 -0
  344. data/iso_data/world/ph/15.yml +13 -0
  345. data/iso_data/world/ph/40.yml +11 -0
  346. data/iso_data/world/ph/41.yml +11 -0
  347. data/iso_data/world/pk.yml +17 -0
  348. data/iso_data/world/pl.yml +33 -0
  349. data/iso_data/world/ps.yml +1 -0
  350. data/iso_data/world/pt.yml +41 -0
  351. data/iso_data/world/pw.yml +33 -0
  352. data/iso_data/world/py.yml +37 -0
  353. data/iso_data/world/qa.yml +19 -0
  354. data/iso_data/world/ro.yml +85 -0
  355. data/iso_data/world/rs.yml +41 -0
  356. data/iso_data/world/rs/km.yml +11 -0
  357. data/iso_data/world/rs/vo.yml +15 -0
  358. data/iso_data/world/ru.yml +167 -0
  359. data/iso_data/world/rw.yml +11 -0
  360. data/iso_data/world/sa.yml +27 -0
  361. data/iso_data/world/sb.yml +21 -0
  362. data/iso_data/world/sc.yml +51 -0
  363. data/iso_data/world/sd.yml +51 -0
  364. data/iso_data/world/se.yml +43 -0
  365. data/iso_data/world/sg.yml +11 -0
  366. data/iso_data/world/sh.yml +1 -0
  367. data/iso_data/world/si.yml +421 -0
  368. data/iso_data/world/sk.yml +17 -0
  369. data/iso_data/world/sl.yml +9 -0
  370. data/iso_data/world/sm.yml +19 -0
  371. data/iso_data/world/sn.yml +29 -0
  372. data/iso_data/world/so.yml +37 -0
  373. data/iso_data/world/sr.yml +21 -0
  374. data/iso_data/world/st.yml +5 -0
  375. data/iso_data/world/sv.yml +29 -0
  376. data/iso_data/world/sy.yml +29 -0
  377. data/iso_data/world/sz.yml +9 -0
  378. data/iso_data/world/td.yml +45 -0
  379. data/iso_data/world/tg.yml +11 -0
  380. data/iso_data/world/th.yml +155 -0
  381. data/iso_data/world/tj.yml +7 -0
  382. data/iso_data/world/tl.yml +27 -0
  383. data/iso_data/world/tm.yml +13 -0
  384. data/iso_data/world/tn.yml +49 -0
  385. data/iso_data/world/to.yml +11 -0
  386. data/iso_data/world/tr.yml +163 -0
  387. data/iso_data/world/tt.yml +33 -0
  388. data/iso_data/world/tv.yml +17 -0
  389. data/iso_data/world/tw.yml +47 -0
  390. data/iso_data/world/tz.yml +53 -0
  391. data/iso_data/world/ua.yml +55 -0
  392. data/iso_data/world/ug.yml +9 -0
  393. data/iso_data/world/ug/c.yml +33 -0
  394. data/iso_data/world/ug/e.yml +49 -0
  395. data/iso_data/world/ug/n.yml +43 -0
  396. data/iso_data/world/ug/w.yml +39 -0
  397. data/iso_data/world/um.yml +19 -0
  398. data/iso_data/world/us.yml +115 -0
  399. data/iso_data/world/uy.yml +39 -0
  400. data/iso_data/world/uz.yml +29 -0
  401. data/iso_data/world/vc.yml +13 -0
  402. data/iso_data/world/ve.yml +51 -0
  403. data/iso_data/world/vn.yml +129 -0
  404. data/iso_data/world/vu.yml +13 -0
  405. data/iso_data/world/ws.yml +23 -0
  406. data/iso_data/world/ye.yml +41 -0
  407. data/iso_data/world/za.yml +19 -0
  408. data/iso_data/world/zm.yml +19 -0
  409. data/iso_data/world/zw.yml +21 -0
  410. data/lib/carmen.rb +86 -0
  411. data/lib/carmen/country.rb +60 -0
  412. data/lib/carmen/i18n.rb +105 -0
  413. data/lib/carmen/querying.rb +45 -0
  414. data/lib/carmen/region.rb +111 -0
  415. data/lib/carmen/region_collection.rb +30 -0
  416. data/lib/carmen/utils.rb +52 -0
  417. data/lib/carmen/version.rb +3 -0
  418. data/lib/carmen/world.rb +29 -0
  419. data/locale/cn/world.yml +963 -0
  420. data/locale/cs/world.yml +983 -0
  421. data/locale/de/world.yml +1067 -0
  422. data/locale/en/world.yml +999 -0
  423. data/locale/en/world/ad.yml +18 -0
  424. data/locale/en/world/ae.yml +18 -0
  425. data/locale/en/world/af.yml +72 -0
  426. data/locale/en/world/ag.yml +20 -0
  427. data/locale/en/world/al.yml +28 -0
  428. data/locale/en/world/al/01.yml +11 -0
  429. data/locale/en/world/al/02.yml +9 -0
  430. data/locale/en/world/al/03.yml +13 -0
  431. data/locale/en/world/al/04.yml +11 -0
  432. data/locale/en/world/al/05.yml +11 -0
  433. data/locale/en/world/al/06.yml +13 -0
  434. data/locale/en/world/al/07.yml +11 -0
  435. data/locale/en/world/al/08.yml +11 -0
  436. data/locale/en/world/al/09.yml +11 -0
  437. data/locale/en/world/al/10.yml +11 -0
  438. data/locale/en/world/al/11.yml +9 -0
  439. data/locale/en/world/al/12.yml +11 -0
  440. data/locale/en/world/am.yml +26 -0
  441. data/locale/en/world/ao.yml +40 -0
  442. data/locale/en/world/ar.yml +50 -0
  443. data/locale/en/world/at.yml +22 -0
  444. data/locale/en/world/au.yml +20 -0
  445. data/locale/en/world/az.yml +146 -0
  446. data/locale/en/world/az/nx.yml +17 -0
  447. data/locale/en/world/ba.yml +10 -0
  448. data/locale/en/world/ba/bih.yml +25 -0
  449. data/locale/en/world/bb.yml +26 -0
  450. data/locale/en/world/bd.yml +16 -0
  451. data/locale/en/world/bd/1.yml +17 -0
  452. data/locale/en/world/bd/2.yml +27 -0
  453. data/locale/en/world/bd/3.yml +39 -0
  454. data/locale/en/world/bd/4.yml +25 -0
  455. data/locale/en/world/bd/5.yml +37 -0
  456. data/locale/en/world/bd/6.yml +13 -0
  457. data/locale/en/world/be.yml +26 -0
  458. data/locale/en/world/bf.yml +30 -0
  459. data/locale/en/world/bf/01.yml +17 -0
  460. data/locale/en/world/bf/02.yml +9 -0
  461. data/locale/en/world/bf/03.yml +7 -0
  462. data/locale/en/world/bf/04.yml +11 -0
  463. data/locale/en/world/bf/05.yml +11 -0
  464. data/locale/en/world/bf/06.yml +13 -0
  465. data/locale/en/world/bf/07.yml +11 -0
  466. data/locale/en/world/bf/08.yml +15 -0
  467. data/locale/en/world/bf/09.yml +11 -0
  468. data/locale/en/world/bf/10.yml +13 -0
  469. data/locale/en/world/bf/11.yml +11 -0
  470. data/locale/en/world/bf/12.yml +13 -0
  471. data/locale/en/world/bf/13.yml +13 -0
  472. data/locale/en/world/bg.yml +60 -0
  473. data/locale/en/world/bh.yml +14 -0
  474. data/locale/en/world/bi.yml +36 -0
  475. data/locale/en/world/bj.yml +28 -0
  476. data/locale/en/world/bl.yml +4 -0
  477. data/locale/en/world/bn.yml +12 -0
  478. data/locale/en/world/bo.yml +22 -0
  479. data/locale/en/world/br.yml +60 -0
  480. data/locale/en/world/bs.yml +70 -0
  481. data/locale/en/world/bt.yml +44 -0
  482. data/locale/en/world/bw.yml +24 -0
  483. data/locale/en/world/by.yml +18 -0
  484. data/locale/en/world/bz.yml +16 -0
  485. data/locale/en/world/ca.yml +30 -0
  486. data/locale/en/world/cd.yml +28 -0
  487. data/locale/en/world/cf.yml +38 -0
  488. data/locale/en/world/cg.yml +26 -0
  489. data/locale/en/world/ch.yml +56 -0
  490. data/locale/en/world/ci.yml +42 -0
  491. data/locale/en/world/cl.yml +34 -0
  492. data/locale/en/world/cm.yml +24 -0
  493. data/locale/en/world/cn.yml +72 -0
  494. data/locale/en/world/co.yml +70 -0
  495. data/locale/en/world/cr.yml +18 -0
  496. data/locale/en/world/cu.yml +34 -0
  497. data/locale/en/world/cv.yml +8 -0
  498. data/locale/en/world/cv/b.yml +19 -0
  499. data/locale/en/world/cv/s.yml +35 -0
  500. data/locale/en/world/cy.yml +16 -0
  501. data/locale/en/world/cz.yml +32 -0
  502. data/locale/en/world/cz/jc.yml +19 -0
  503. data/locale/en/world/cz/jm.yml +19 -0
  504. data/locale/en/world/cz/ka.yml +11 -0
  505. data/locale/en/world/cz/kr.yml +15 -0
  506. data/locale/en/world/cz/li.yml +13 -0
  507. data/locale/en/world/cz/mo.yml +17 -0
  508. data/locale/en/world/cz/ol.yml +15 -0
  509. data/locale/en/world/cz/pa.yml +13 -0
  510. data/locale/en/world/cz/pl.yml +19 -0
  511. data/locale/en/world/cz/pr.yml +35 -0
  512. data/locale/en/world/cz/st.yml +29 -0
  513. data/locale/en/world/cz/us.yml +19 -0
  514. data/locale/en/world/cz/vy.yml +15 -0
  515. data/locale/en/world/cz/zl.yml +13 -0
  516. data/locale/en/world/de.yml +36 -0
  517. data/locale/en/world/dj.yml +16 -0
  518. data/locale/en/world/dk.yml +14 -0
  519. data/locale/en/world/dm.yml +24 -0
  520. data/locale/en/world/do.yml +64 -0
  521. data/locale/en/world/dz.yml +100 -0
  522. data/locale/en/world/ec.yml +52 -0
  523. data/locale/en/world/ee.yml +34 -0
  524. data/locale/en/world/eg.yml +60 -0
  525. data/locale/en/world/er.yml +16 -0
  526. data/locale/en/world/es.yml +42 -0
  527. data/locale/en/world/es/an.yml +21 -0
  528. data/locale/en/world/es/ar.yml +11 -0
  529. data/locale/en/world/es/as.yml +7 -0
  530. data/locale/en/world/es/cb.yml +7 -0
  531. data/locale/en/world/es/cl.yml +23 -0
  532. data/locale/en/world/es/cm.yml +15 -0
  533. data/locale/en/world/es/cn.yml +9 -0
  534. data/locale/en/world/es/ct.yml +13 -0
  535. data/locale/en/world/es/ex.yml +9 -0
  536. data/locale/en/world/es/ga.yml +13 -0
  537. data/locale/en/world/es/ib.yml +7 -0
  538. data/locale/en/world/es/mc.yml +7 -0
  539. data/locale/en/world/es/md.yml +7 -0
  540. data/locale/en/world/es/nc.yml +7 -0
  541. data/locale/en/world/es/pv.yml +11 -0
  542. data/locale/en/world/es/ri.yml +7 -0
  543. data/locale/en/world/es/vc.yml +11 -0
  544. data/locale/en/world/et.yml +26 -0
  545. data/locale/en/world/fi.yml +16 -0
  546. data/locale/en/world/fj.yml +14 -0
  547. data/locale/en/world/fm.yml +12 -0
  548. data/locale/en/world/fr.yml +74 -0
  549. data/locale/en/world/fr/a.yml +9 -0
  550. data/locale/en/world/fr/b.yml +15 -0
  551. data/locale/en/world/fr/c.yml +13 -0
  552. data/locale/en/world/fr/d.yml +13 -0
  553. data/locale/en/world/fr/e.yml +13 -0
  554. data/locale/en/world/fr/f.yml +17 -0
  555. data/locale/en/world/fr/g.yml +13 -0
  556. data/locale/en/world/fr/h.yml +9 -0
  557. data/locale/en/world/fr/i.yml +13 -0
  558. data/locale/en/world/fr/j.yml +21 -0
  559. data/locale/en/world/fr/k.yml +15 -0
  560. data/locale/en/world/fr/l.yml +11 -0
  561. data/locale/en/world/fr/m.yml +13 -0
  562. data/locale/en/world/fr/n.yml +21 -0
  563. data/locale/en/world/fr/o.yml +9 -0
  564. data/locale/en/world/fr/p.yml +11 -0
  565. data/locale/en/world/fr/q.yml +9 -0
  566. data/locale/en/world/fr/r.yml +15 -0
  567. data/locale/en/world/fr/s.yml +11 -0
  568. data/locale/en/world/fr/t.yml +13 -0
  569. data/locale/en/world/fr/u.yml +17 -0
  570. data/locale/en/world/fr/v.yml +21 -0
  571. data/locale/en/world/ga.yml +22 -0
  572. data/locale/en/world/gb.yml +478 -0
  573. data/locale/en/world/gd.yml +18 -0
  574. data/locale/en/world/ge.yml +28 -0
  575. data/locale/en/world/gg.yml +4 -0
  576. data/locale/en/world/gh.yml +24 -0
  577. data/locale/en/world/gl.yml +12 -0
  578. data/locale/en/world/gm.yml +16 -0
  579. data/locale/en/world/gn.yml +20 -0
  580. data/locale/en/world/gn/b.yml +15 -0
  581. data/locale/en/world/gn/d.yml +15 -0
  582. data/locale/en/world/gn/f.yml +13 -0
  583. data/locale/en/world/gn/k.yml +15 -0
  584. data/locale/en/world/gn/l.yml +15 -0
  585. data/locale/en/world/gn/m.yml +11 -0
  586. data/locale/en/world/gn/n.yml +17 -0
  587. data/locale/en/world/gq.yml +22 -0
  588. data/locale/en/world/gr.yml +32 -0
  589. data/locale/en/world/gr/a.yml +15 -0
  590. data/locale/en/world/gr/b.yml +19 -0
  591. data/locale/en/world/gr/c.yml +13 -0
  592. data/locale/en/world/gr/d.yml +11 -0
  593. data/locale/en/world/gr/e.yml +13 -0
  594. data/locale/en/world/gr/f.yml +15 -0
  595. data/locale/en/world/gr/g.yml +11 -0
  596. data/locale/en/world/gr/h.yml +15 -0
  597. data/locale/en/world/gr/i.yml +7 -0
  598. data/locale/en/world/gr/j.yml +15 -0
  599. data/locale/en/world/gr/k.yml +11 -0
  600. data/locale/en/world/gr/l.yml +9 -0
  601. data/locale/en/world/gr/m.yml +13 -0
  602. data/locale/en/world/gt.yml +48 -0
  603. data/locale/en/world/gw.yml +12 -0
  604. data/locale/en/world/gw/l.yml +9 -0
  605. data/locale/en/world/gw/n.yml +11 -0
  606. data/locale/en/world/gw/s.yml +11 -0
  607. data/locale/en/world/gy.yml +24 -0
  608. data/locale/en/world/hn.yml +40 -0
  609. data/locale/en/world/hr.yml +46 -0
  610. data/locale/en/world/ht.yml +22 -0
  611. data/locale/en/world/hu.yml +90 -0
  612. data/locale/en/world/id.yml +18 -0
  613. data/locale/en/world/id/ij.yml +9 -0
  614. data/locale/en/world/id/jw.yml +17 -0
  615. data/locale/en/world/id/ka.yml +13 -0
  616. data/locale/en/world/id/ma.yml +9 -0
  617. data/locale/en/world/id/nu.yml +11 -0
  618. data/locale/en/world/id/sl.yml +17 -0
  619. data/locale/en/world/id/sm.yml +25 -0
  620. data/locale/en/world/ie.yml +12 -0
  621. data/locale/en/world/ie/c.yml +15 -0
  622. data/locale/en/world/ie/l.yml +29 -0
  623. data/locale/en/world/ie/m.yml +17 -0
  624. data/locale/en/world/ie/u.yml +11 -0
  625. data/locale/en/world/il.yml +16 -0
  626. data/locale/en/world/im.yml +4 -0
  627. data/locale/en/world/in.yml +74 -0
  628. data/locale/en/world/iq.yml +40 -0
  629. data/locale/en/world/ir.yml +64 -0
  630. data/locale/en/world/is.yml +22 -0
  631. data/locale/en/world/it.yml +44 -0
  632. data/locale/en/world/it/21.yml +21 -0
  633. data/locale/en/world/it/23.yml +7 -0
  634. data/locale/en/world/it/25.yml +29 -0
  635. data/locale/en/world/it/32.yml +9 -0
  636. data/locale/en/world/it/34.yml +19 -0
  637. data/locale/en/world/it/36.yml +13 -0
  638. data/locale/en/world/it/42.yml +13 -0
  639. data/locale/en/world/it/45.yml +23 -0
  640. data/locale/en/world/it/52.yml +25 -0
  641. data/locale/en/world/it/55.yml +9 -0
  642. data/locale/en/world/it/57.yml +15 -0
  643. data/locale/en/world/it/62.yml +15 -0
  644. data/locale/en/world/it/65.yml +13 -0
  645. data/locale/en/world/it/67.yml +9 -0
  646. data/locale/en/world/it/72.yml +15 -0
  647. data/locale/en/world/it/75.yml +17 -0
  648. data/locale/en/world/it/77.yml +9 -0
  649. data/locale/en/world/it/78.yml +15 -0
  650. data/locale/en/world/it/82.yml +23 -0
  651. data/locale/en/world/it/88.yml +21 -0
  652. data/locale/en/world/je.yml +4 -0
  653. data/locale/en/world/jm.yml +32 -0
  654. data/locale/en/world/jo.yml +28 -0
  655. data/locale/en/world/jp.yml +98 -0
  656. data/locale/en/world/ke.yml +18 -0
  657. data/locale/en/world/kg.yml +20 -0
  658. data/locale/en/world/kh.yml +52 -0
  659. data/locale/en/world/ki.yml +10 -0
  660. data/locale/en/world/km.yml +10 -0
  661. data/locale/en/world/kn.yml +8 -0
  662. data/locale/en/world/kn/k.yml +23 -0
  663. data/locale/en/world/kn/n.yml +15 -0
  664. data/locale/en/world/kp.yml +26 -0
  665. data/locale/en/world/kr.yml +36 -0
  666. data/locale/en/world/kw.yml +14 -0
  667. data/locale/en/world/kz.yml +36 -0
  668. data/locale/en/world/la.yml +40 -0
  669. data/locale/en/world/lb.yml +20 -0
  670. data/locale/en/world/li.yml +26 -0
  671. data/locale/en/world/lk.yml +22 -0
  672. data/locale/en/world/lk/1.yml +11 -0
  673. data/locale/en/world/lk/2.yml +11 -0
  674. data/locale/en/world/lk/3.yml +11 -0
  675. data/locale/en/world/lk/4.yml +15 -0
  676. data/locale/en/world/lk/5.yml +11 -0
  677. data/locale/en/world/lk/6.yml +9 -0
  678. data/locale/en/world/lk/7.yml +9 -0
  679. data/locale/en/world/lk/8.yml +9 -0
  680. data/locale/en/world/lk/9.yml +9 -0
  681. data/locale/en/world/lr.yml +30 -0
  682. data/locale/en/world/ls.yml +24 -0
  683. data/locale/en/world/lt.yml +24 -0
  684. data/locale/en/world/lu.yml +10 -0
  685. data/locale/en/world/lv.yml +70 -0
  686. data/locale/en/world/ly.yml +50 -0
  687. data/locale/en/world/ma.yml +36 -0
  688. data/locale/en/world/ma/01.yml +15 -0
  689. data/locale/en/world/ma/02.yml +9 -0
  690. data/locale/en/world/ma/03.yml +11 -0
  691. data/locale/en/world/ma/04.yml +17 -0
  692. data/locale/en/world/ma/05.yml +13 -0
  693. data/locale/en/world/ma/06.yml +15 -0
  694. data/locale/en/world/ma/07.yml +13 -0
  695. data/locale/en/world/ma/08.yml +13 -0
  696. data/locale/en/world/ma/09.yml +11 -0
  697. data/locale/en/world/ma/10.yml +9 -0
  698. data/locale/en/world/ma/11.yml +19 -0
  699. data/locale/en/world/ma/12.yml +9 -0
  700. data/locale/en/world/ma/13.yml +19 -0
  701. data/locale/en/world/ma/14.yml +15 -0
  702. data/locale/en/world/ma/15.yml +9 -0
  703. data/locale/en/world/ma/16.yml +9 -0
  704. data/locale/en/world/md.yml +78 -0
  705. data/locale/en/world/me.yml +46 -0
  706. data/locale/en/world/mf.yml +4 -0
  707. data/locale/en/world/mg.yml +16 -0
  708. data/locale/en/world/mh.yml +8 -0
  709. data/locale/en/world/mh/l.yml +33 -0
  710. data/locale/en/world/mh/t.yml +25 -0
  711. data/locale/en/world/mk.yml +172 -0
  712. data/locale/en/world/ml.yml +22 -0
  713. data/locale/en/world/mm.yml +32 -0
  714. data/locale/en/world/mn.yml +48 -0
  715. data/locale/en/world/mo.yml +4 -0
  716. data/locale/en/world/mr.yml +30 -0
  717. data/locale/en/world/mt.yml +140 -0
  718. data/locale/en/world/mu.yml +38 -0
  719. data/locale/en/world/mv.yml +44 -0
  720. data/locale/en/world/mw.yml +10 -0
  721. data/locale/en/world/mw/c.yml +23 -0
  722. data/locale/en/world/mw/n.yml +19 -0
  723. data/locale/en/world/mw/s.yml +29 -0
  724. data/locale/en/world/mx.yml +68 -0
  725. data/locale/en/world/my.yml +36 -0
  726. data/locale/en/world/mz.yml +26 -0
  727. data/locale/en/world/na.yml +30 -0
  728. data/locale/en/world/ne.yml +20 -0
  729. data/locale/en/world/ng.yml +78 -0
  730. data/locale/en/world/ni.yml +38 -0
  731. data/locale/en/world/nl.yml +28 -0
  732. data/locale/en/world/no.yml +46 -0
  733. data/locale/en/world/np.yml +14 -0
  734. data/locale/en/world/np/1.yml +11 -0
  735. data/locale/en/world/np/2.yml +11 -0
  736. data/locale/en/world/np/3.yml +11 -0
  737. data/locale/en/world/np/4.yml +11 -0
  738. data/locale/en/world/np/5.yml +9 -0
  739. data/locale/en/world/nr.yml +32 -0
  740. data/locale/en/world/nz.yml +10 -0
  741. data/locale/en/world/nz/n.yml +23 -0
  742. data/locale/en/world/nz/s.yml +19 -0
  743. data/locale/en/world/om.yml +22 -0
  744. data/locale/en/world/pa.yml +28 -0
  745. data/locale/en/world/pe.yml +56 -0
  746. data/locale/en/world/pg.yml +44 -0
  747. data/locale/en/world/ph.yml +38 -0
  748. data/locale/en/world/ph/01.yml +13 -0
  749. data/locale/en/world/ph/02.yml +15 -0
  750. data/locale/en/world/ph/03.yml +19 -0
  751. data/locale/en/world/ph/05.yml +17 -0
  752. data/locale/en/world/ph/06.yml +17 -0
  753. data/locale/en/world/ph/07.yml +13 -0
  754. data/locale/en/world/ph/08.yml +17 -0
  755. data/locale/en/world/ph/09.yml +13 -0
  756. data/locale/en/world/ph/10.yml +13 -0
  757. data/locale/en/world/ph/11.yml +17 -0
  758. data/locale/en/world/ph/12.yml +11 -0
  759. data/locale/en/world/ph/13.yml +15 -0
  760. data/locale/en/world/ph/14.yml +13 -0
  761. data/locale/en/world/ph/15.yml +17 -0
  762. data/locale/en/world/ph/40.yml +15 -0
  763. data/locale/en/world/ph/41.yml +15 -0
  764. data/locale/en/world/pk.yml +20 -0
  765. data/locale/en/world/pl.yml +36 -0
  766. data/locale/en/world/ps.yml +4 -0
  767. data/locale/en/world/pt.yml +44 -0
  768. data/locale/en/world/pw.yml +36 -0
  769. data/locale/en/world/py.yml +40 -0
  770. data/locale/en/world/qa.yml +22 -0
  771. data/locale/en/world/ro.yml +88 -0
  772. data/locale/en/world/rs.yml +44 -0
  773. data/locale/en/world/rs/km.yml +15 -0
  774. data/locale/en/world/rs/vo.yml +19 -0
  775. data/locale/en/world/ru.yml +170 -0
  776. data/locale/en/world/rw.yml +14 -0
  777. data/locale/en/world/sa.yml +30 -0
  778. data/locale/en/world/sb.yml +24 -0
  779. data/locale/en/world/sc.yml +54 -0
  780. data/locale/en/world/sd.yml +54 -0
  781. data/locale/en/world/se.yml +46 -0
  782. data/locale/en/world/sg.yml +14 -0
  783. data/locale/en/world/sh.yml +4 -0
  784. data/locale/en/world/si.yml +424 -0
  785. data/locale/en/world/sk.yml +20 -0
  786. data/locale/en/world/sl.yml +12 -0
  787. data/locale/en/world/sm.yml +22 -0
  788. data/locale/en/world/sn.yml +32 -0
  789. data/locale/en/world/so.yml +40 -0
  790. data/locale/en/world/sr.yml +24 -0
  791. data/locale/en/world/st.yml +8 -0
  792. data/locale/en/world/sv.yml +32 -0
  793. data/locale/en/world/sy.yml +32 -0
  794. data/locale/en/world/sz.yml +12 -0
  795. data/locale/en/world/td.yml +48 -0
  796. data/locale/en/world/tg.yml +14 -0
  797. data/locale/en/world/th.yml +158 -0
  798. data/locale/en/world/tj.yml +10 -0
  799. data/locale/en/world/tl.yml +30 -0
  800. data/locale/en/world/tm.yml +16 -0
  801. data/locale/en/world/tn.yml +52 -0
  802. data/locale/en/world/to.yml +14 -0
  803. data/locale/en/world/tr.yml +166 -0
  804. data/locale/en/world/tt.yml +36 -0
  805. data/locale/en/world/tv.yml +20 -0
  806. data/locale/en/world/tw.yml +50 -0
  807. data/locale/en/world/tz.yml +56 -0
  808. data/locale/en/world/ua.yml +58 -0
  809. data/locale/en/world/ug.yml +12 -0
  810. data/locale/en/world/ug/c.yml +37 -0
  811. data/locale/en/world/ug/e.yml +53 -0
  812. data/locale/en/world/ug/n.yml +47 -0
  813. data/locale/en/world/ug/w.yml +43 -0
  814. data/locale/en/world/um.yml +22 -0
  815. data/locale/en/world/us.yml +118 -0
  816. data/locale/en/world/uy.yml +42 -0
  817. data/locale/en/world/uz.yml +32 -0
  818. data/locale/en/world/vc.yml +16 -0
  819. data/locale/en/world/ve.yml +54 -0
  820. data/locale/en/world/vn.yml +132 -0
  821. data/locale/en/world/vu.yml +16 -0
  822. data/locale/en/world/ws.yml +26 -0
  823. data/locale/en/world/ye.yml +44 -0
  824. data/locale/en/world/za.yml +22 -0
  825. data/locale/en/world/zm.yml +22 -0
  826. data/locale/en/world/zw.yml +24 -0
  827. data/locale/es/world.yml +1003 -0
  828. data/locale/fi/world.yml +1015 -0
  829. data/locale/fr/world.yml +999 -0
  830. data/locale/fr/world/ca.yml +30 -0
  831. data/locale/hi/world.yml +983 -0
  832. data/locale/it/world.yml +955 -0
  833. data/locale/jp/world.yml +983 -0
  834. data/locale/ko/world.yml +955 -0
  835. data/locale/nl/world.yml +1003 -0
  836. data/locale/pl/world.yml +983 -0
  837. data/locale/pt/world.yml +1015 -0
  838. data/locale/ru/world.yml +1015 -0
  839. data/locale/sk/world.yml +983 -0
  840. data/locale/sv/world.yml +1039 -0
  841. data/locale/tr/world.yml +955 -0
  842. metadata +953 -0
@@ -0,0 +1,45 @@
1
+ require 'unicode_utils'
2
+
3
+ module Carmen
4
+ module Querying
5
+ # Find a region by code.
6
+ #
7
+ # code - The String code to search for
8
+ #
9
+ # Returns a region with the supplied code, or nil ir none is found.
10
+ def coded(code)
11
+ attribute = attribute_to_search_for_code(code)
12
+ if attribute.nil?
13
+ fail "could not find an attribute to search for code '#{code}'"
14
+ end
15
+ code = code.downcase # Codes are all ASCII
16
+ query_collection.find do |region|
17
+ region.send(attribute).downcase == code
18
+ end
19
+ end
20
+
21
+ # Find a region by name.
22
+ #
23
+ # name - The String name to search for.
24
+ # options - The Hash options used to modify the search (default:{}):
25
+ # :fuzzy - Whether to use fuzzy matching when finding a
26
+ # matching name (optional, default: false)
27
+ # :case - Whether or not the match is case-sensitive
28
+ # (optional, default: false)
29
+ #
30
+ # Returns a region with the supplied name, or nil if none if found.
31
+ def named(name, options={})
32
+ case_fold = !options[:case] && name.respond_to?(:each_codepoint)
33
+ # These only need to be built once
34
+ name = case_fold ? UnicodeUtils.casefold(name) : name
35
+ # For now, "fuzzy" just means substring, optionally case-insensitive (the second argument looks for nil, not falseness)
36
+ regexp = options[:fuzzy] ? Regexp.new(name, options[:case] ? nil : true) : nil
37
+
38
+ query_collection.find do |region|
39
+ found_literal = name === (case_fold && region.name ? UnicodeUtils.casefold(region.name) : region.name)
40
+ found_literal || options[:fuzzy] && regexp === region.name
41
+ end
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,111 @@
1
+ require 'yaml'
2
+
3
+ require 'carmen/region_collection'
4
+ require 'carmen/utils'
5
+
6
+ module Carmen
7
+ class Region
8
+
9
+ attr_reader :type
10
+ attr_reader :code
11
+ attr_reader :parent
12
+
13
+ def initialize(data={}, parent=nil)
14
+ @type = data['type']
15
+ @code = data['code']
16
+ @parent = parent
17
+ end
18
+
19
+ def name
20
+ Carmen.i18n_backend.translate(path('name'))
21
+ end
22
+
23
+ def subregions
24
+ @subregions ||= load_subregions
25
+ end
26
+
27
+ def subregions?
28
+ !subregions.empty?
29
+ end
30
+
31
+ def subregion_data_path
32
+ @parent.subregion_data_path.sub('.yml', "/#{subregion_directory}.yml")
33
+ end
34
+
35
+ def subregion_class
36
+ Region
37
+ end
38
+
39
+ # Return a path string for this region. Useful for use with I18n.
40
+ #
41
+ # Returns a string in the format "world.$PARENT_CODE.$REGION_CODE", such as
42
+ # "world.us.il". The number of segments is the depth of the region plus one.
43
+ def path(suffix=nil)
44
+ base = "#{parent.path}.#{subregion_directory}"
45
+ base << ".#{suffix.to_s}" if suffix
46
+ base
47
+ end
48
+
49
+ def inspect
50
+ "<##{self.class} name=\"#{name}\" type=\"#{type}\">"
51
+ end
52
+
53
+ # Clears the subregion cache
54
+ def reset!
55
+ @subregions = nil
56
+ end
57
+
58
+ def <=>(other)
59
+ name <=> other.name
60
+ end
61
+
62
+ private
63
+
64
+ def subregion_directory
65
+ code.downcase
66
+ end
67
+
68
+ def load_subregions
69
+ if Carmen.data_paths.any? {|path| (path + subregion_data_path).exist? }
70
+ load_subregions_from_path(subregion_data_path, self)
71
+ else
72
+ []
73
+ end
74
+ end
75
+
76
+ def load_subregions_from_path(path, parent=nil)
77
+ regions = load_data_at_path(path).collect do |data|
78
+ subregion_class.new(data, parent)
79
+ end
80
+ RegionCollection.new(regions)
81
+ end
82
+
83
+ # Load the data for a path.
84
+ #
85
+ # The resulting data will be the result of loading the file from the data_path
86
+ # and overlaying matching data (if it exists) from the overlay_path.
87
+ def load_data_at_path(path)
88
+ data_sets = Carmen.data_paths.map do |data_path|
89
+ YAML.load_file(data_path + path) if (data_path + path).exist?
90
+ end.compact
91
+ flatten_data(data_sets)
92
+ end
93
+
94
+ # Merge multiple arrays of hashes together
95
+ #
96
+ # Use either 'code' or 'alpha_2_code' to match elements between the sets.
97
+ #
98
+ # Returns a single merged array of hashes.
99
+ def flatten_data(arrays)
100
+
101
+ keys = %w(code alpha_2_code)
102
+ flattened = Utils.merge_arrays_by_keys(arrays, keys)
103
+
104
+ flattened.each do |hash|
105
+ flattened.delete(hash) if hash['_enabled'] == false
106
+ end
107
+
108
+ flattened
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,30 @@
1
+ require 'carmen/querying'
2
+
3
+ module Carmen
4
+ # RegionCollection is responsible for holding the subregions for a
5
+ # region and also provides an interface to query said subregions.
6
+ #
7
+ # Example:
8
+ #
9
+ # states = Carmen::Country.coded('US').subregions
10
+ # => #<RegionCollection>
11
+ # states.size
12
+ # => 5
13
+ # states.named('Illinois')
14
+ # => #<Region name:"Illinois" code: "IL">
15
+ #
16
+ class RegionCollection < Array
17
+ include Querying
18
+
19
+ private
20
+
21
+ def query_collection
22
+ self
23
+ end
24
+
25
+ def attribute_to_search_for_code(code)
26
+ :code
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,52 @@
1
+ module Carmen
2
+ module Utils
3
+ # Merge an array of hashes deeply.
4
+ #
5
+ # When a conflict occurs and either the old value or the new value don't
6
+ # respond_to? :merge, the new value is used.
7
+ #
8
+ # Returns a meged hash.
9
+ def self.deep_hash_merge(hashes)
10
+ return hashes.first if hashes.size == 1
11
+
12
+ hashes.inject { |acc, hash|
13
+ acc.merge(hash) { |key, old_value, new_value|
14
+ if old_value.respond_to?(:merge) && new_value.respond_to?(:merge)
15
+ deep_hash_merge([old_value, new_value])
16
+ else
17
+ new_value
18
+ end
19
+ }
20
+ }
21
+ end
22
+
23
+ # Merge arrays of hashes using the specified keys.
24
+ #
25
+ # If two hashes have the same value for a key, they are merged together.
26
+ # Otherwise, a new hash is appened to the array.
27
+ #
28
+ # Matching arrays uses the keys in the order they are provided.
29
+ #
30
+ # Returns a single merges array of hashes.
31
+ def self.merge_arrays_by_keys(arrays, keys)
32
+ arrays.inject do |aggregate, array|
33
+
34
+ array.each do |new_hash|
35
+ # Find the matching element in the agregate array
36
+ existing = aggregate.find do |hash|
37
+ keys.any? {|key| hash[key] && hash[key] == new_hash[key] }
38
+ end
39
+
40
+ # Merge the new hash to an existing one, or append it if new
41
+ if existing
42
+ existing.merge!(new_hash)
43
+ else
44
+ aggregate << new_hash
45
+ end
46
+ end
47
+ aggregate
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,3 @@
1
+ module Carmen
2
+ VERSION = '1.0.0.1'
3
+ end
@@ -0,0 +1,29 @@
1
+ require 'singleton'
2
+
3
+ require 'carmen/region'
4
+
5
+ module Carmen
6
+ class World < Region
7
+ include Singleton
8
+
9
+ def type; 'world'; end
10
+ def name; 'Earth'; end
11
+
12
+ def subregion_data_path
13
+ 'world.yml'
14
+ end
15
+
16
+ def subregion_class
17
+ Country
18
+ end
19
+
20
+ def path
21
+ 'world'
22
+ end
23
+
24
+ def inspect
25
+ "<##{self.class}>"
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,963 @@
1
+ ---
2
+ cn:
3
+ world:
4
+ ad:
5
+ common_name: !!null
6
+ name: 安道尔共和国
7
+ official_name: !!null
8
+ ae:
9
+ common_name: !!null
10
+ name: 阿拉伯联合酋长国
11
+ official_name: !!null
12
+ af:
13
+ common_name: !!null
14
+ name: 阿富汗
15
+ official_name: !!null
16
+ ag:
17
+ common_name: !!null
18
+ name: 安提瓜和巴布达
19
+ official_name: !!null
20
+ ai:
21
+ common_name: !!null
22
+ name: 安圭拉岛
23
+ official_name: !!null
24
+ al:
25
+ common_name: !!null
26
+ name: 阿尔巴尼亚
27
+ official_name: !!null
28
+ am:
29
+ common_name: !!null
30
+ name: 亚美尼亚
31
+ official_name: !!null
32
+ an:
33
+ common_name: !!null
34
+ name: 荷属安德烈斯群岛
35
+ official_name: !!null
36
+ ao:
37
+ common_name: !!null
38
+ name: 安哥拉
39
+ official_name: !!null
40
+ aq:
41
+ common_name: !!null
42
+ name: 南极洲
43
+ official_name: !!null
44
+ ar:
45
+ common_name: !!null
46
+ name: 阿根廷
47
+ official_name: !!null
48
+ as:
49
+ common_name: !!null
50
+ name: 美属萨摩亚
51
+ official_name: !!null
52
+ at:
53
+ common_name: !!null
54
+ name: 奥地利
55
+ official_name: !!null
56
+ au:
57
+ common_name: !!null
58
+ name: 澳大利亚
59
+ official_name: !!null
60
+ aw:
61
+ common_name: !!null
62
+ name: 阿鲁巴岛
63
+ official_name: !!null
64
+ ax:
65
+ common_name: !!null
66
+ name: 奥兰群岛
67
+ official_name: !!null
68
+ az:
69
+ common_name: !!null
70
+ name: 阿塞拜疆
71
+ official_name: !!null
72
+ ba:
73
+ common_name: !!null
74
+ name: 波黑
75
+ official_name: !!null
76
+ bb:
77
+ common_name: !!null
78
+ name: 巴巴多斯岛
79
+ official_name: !!null
80
+ bd:
81
+ common_name: !!null
82
+ name: 孟加拉国
83
+ official_name: !!null
84
+ be:
85
+ common_name: !!null
86
+ name: 比利时
87
+ official_name: !!null
88
+ bf:
89
+ common_name: !!null
90
+ name: 布基纳法索
91
+ official_name: !!null
92
+ bg:
93
+ common_name: !!null
94
+ name: 保加利亚
95
+ official_name: !!null
96
+ bh:
97
+ common_name: !!null
98
+ name: 巴林
99
+ official_name: !!null
100
+ bi:
101
+ common_name: !!null
102
+ name: 布隆迪
103
+ official_name: !!null
104
+ bj:
105
+ common_name: !!null
106
+ name: 贝宁
107
+ official_name: !!null
108
+ bl:
109
+ common_name: !!null
110
+ name: 圣巴泰勒米
111
+ official_name: !!null
112
+ bm:
113
+ common_name: !!null
114
+ name: 百慕大群岛
115
+ official_name: !!null
116
+ bn:
117
+ common_name: !!null
118
+ name: 文莱
119
+ official_name: !!null
120
+ bo:
121
+ common_name: !!null
122
+ name: 玻利维亚
123
+ official_name: !!null
124
+ br:
125
+ common_name: !!null
126
+ name: 巴西
127
+ official_name: !!null
128
+ bs:
129
+ common_name: !!null
130
+ name: 巴哈马群岛
131
+ official_name: !!null
132
+ bt:
133
+ common_name: !!null
134
+ name: 不丹
135
+ official_name: !!null
136
+ bv:
137
+ common_name: !!null
138
+ name: 布维岛
139
+ official_name: !!null
140
+ bw:
141
+ common_name: !!null
142
+ name: 博茨瓦纳
143
+ official_name: !!null
144
+ by:
145
+ common_name: !!null
146
+ name: 白俄罗斯
147
+ official_name: !!null
148
+ bz:
149
+ common_name: !!null
150
+ name: 伯利兹城
151
+ official_name: !!null
152
+ ca:
153
+ common_name: !!null
154
+ name: 加拿大
155
+ official_name: !!null
156
+ cc:
157
+ common_name: !!null
158
+ name: 科科斯(基林)群岛
159
+ official_name: !!null
160
+ cf:
161
+ common_name: !!null
162
+ name: 中非共和国
163
+ official_name: !!null
164
+ cg:
165
+ common_name: !!null
166
+ name: 刚果
167
+ official_name: !!null
168
+ ch:
169
+ common_name: !!null
170
+ name: 瑞士
171
+ official_name: !!null
172
+ ci:
173
+ common_name: !!null
174
+ name: 科特迪瓦
175
+ official_name: !!null
176
+ ck:
177
+ common_name: !!null
178
+ name: 库克群岛
179
+ official_name: !!null
180
+ cl:
181
+ common_name: !!null
182
+ name: 智利
183
+ official_name: !!null
184
+ cm:
185
+ common_name: !!null
186
+ name: 喀麦隆
187
+ official_name: !!null
188
+ cn:
189
+ common_name: !!null
190
+ name: 中国
191
+ official_name: !!null
192
+ co:
193
+ common_name: !!null
194
+ name: 哥伦比亚
195
+ official_name: !!null
196
+ cr:
197
+ common_name: !!null
198
+ name: 哥斯达黎加
199
+ official_name: !!null
200
+ cu:
201
+ common_name: !!null
202
+ name: 古巴
203
+ official_name: !!null
204
+ cv:
205
+ common_name: !!null
206
+ name: 佛得角
207
+ official_name: !!null
208
+ cx:
209
+ common_name: !!null
210
+ name: 圣诞岛
211
+ official_name: !!null
212
+ cy:
213
+ common_name: !!null
214
+ name: 塞浦路斯
215
+ official_name: !!null
216
+ cz:
217
+ common_name: !!null
218
+ name: 捷克共和国
219
+ official_name: !!null
220
+ de:
221
+ common_name: !!null
222
+ name: 德国
223
+ official_name: !!null
224
+ dj:
225
+ common_name: !!null
226
+ name: 吉布提
227
+ official_name: !!null
228
+ dk:
229
+ common_name: !!null
230
+ name: 丹麦
231
+ official_name: !!null
232
+ dm:
233
+ common_name: !!null
234
+ name: 多米尼加
235
+ official_name: !!null
236
+ do:
237
+ common_name: !!null
238
+ name: 多米尼加共和国
239
+ official_name: !!null
240
+ dz:
241
+ common_name: !!null
242
+ name: 阿尔及利亚
243
+ official_name: !!null
244
+ ec:
245
+ common_name: !!null
246
+ name: 厄瓜多尔
247
+ official_name: !!null
248
+ ee:
249
+ common_name: !!null
250
+ name: 爱沙尼亚
251
+ official_name: !!null
252
+ eg:
253
+ common_name: !!null
254
+ name: 埃及
255
+ official_name: !!null
256
+ eh:
257
+ common_name: !!null
258
+ name: 西撒哈拉
259
+ official_name: !!null
260
+ er:
261
+ common_name: !!null
262
+ name: 厄立特里亚
263
+ official_name: !!null
264
+ es:
265
+ common_name: !!null
266
+ name: 西班牙
267
+ official_name: !!null
268
+ et:
269
+ common_name: !!null
270
+ name: 埃塞俄比亚
271
+ official_name: !!null
272
+ fi:
273
+ common_name: !!null
274
+ name: 芬兰
275
+ official_name: !!null
276
+ fj:
277
+ common_name: !!null
278
+ name: 斐济
279
+ official_name: !!null
280
+ fk:
281
+ common_name: !!null
282
+ name: 福克兰群岛
283
+ official_name: !!null
284
+ fm:
285
+ common_name: !!null
286
+ name: 密克罗尼西亚联邦
287
+ official_name: !!null
288
+ fo:
289
+ common_name: !!null
290
+ name: 法罗群岛
291
+ official_name: !!null
292
+ fr:
293
+ common_name: !!null
294
+ name: 法国
295
+ official_name: !!null
296
+ ga:
297
+ common_name: !!null
298
+ name: 加蓬
299
+ official_name: !!null
300
+ gb:
301
+ common_name: !!null
302
+ name: 英国
303
+ official_name: !!null
304
+ gd:
305
+ common_name: !!null
306
+ name: 格林纳达
307
+ official_name: !!null
308
+ ge:
309
+ common_name: !!null
310
+ name: 格鲁吉亚
311
+ official_name: !!null
312
+ gf:
313
+ common_name: !!null
314
+ name: 法属圭亚那
315
+ official_name: !!null
316
+ gg:
317
+ common_name: !!null
318
+ name: 格恩西
319
+ official_name: !!null
320
+ gh:
321
+ common_name: !!null
322
+ name: 加纳
323
+ official_name: !!null
324
+ gi:
325
+ common_name: !!null
326
+ name: 直布罗陀
327
+ official_name: !!null
328
+ gl:
329
+ common_name: !!null
330
+ name: 格陵兰
331
+ official_name: !!null
332
+ gm:
333
+ common_name: !!null
334
+ name: 冈比亚
335
+ official_name: !!null
336
+ gn:
337
+ common_name: !!null
338
+ name: 几内亚
339
+ official_name: !!null
340
+ gp:
341
+ common_name: !!null
342
+ name: 瓜德罗普
343
+ official_name: !!null
344
+ gq:
345
+ common_name: !!null
346
+ name: 赤道几内亚
347
+ official_name: !!null
348
+ gr:
349
+ common_name: !!null
350
+ name: 希腊
351
+ official_name: !!null
352
+ gs:
353
+ common_name: !!null
354
+ name: 南乔治亚岛和南桑威奇群岛
355
+ official_name: !!null
356
+ gt:
357
+ common_name: !!null
358
+ name: 危地马拉
359
+ official_name: !!null
360
+ gu:
361
+ common_name: !!null
362
+ name: 关岛
363
+ official_name: !!null
364
+ gw:
365
+ common_name: !!null
366
+ name: 几内亚比绍
367
+ official_name: !!null
368
+ gy:
369
+ common_name: !!null
370
+ name: 圭亚那
371
+ official_name: !!null
372
+ hk:
373
+ common_name: !!null
374
+ name: 香港
375
+ official_name: !!null
376
+ hm:
377
+ common_name: !!null
378
+ name: 赫德岛和麦克唐纳群岛
379
+ official_name: !!null
380
+ hn:
381
+ common_name: !!null
382
+ name: 洪都拉斯
383
+ official_name: !!null
384
+ hr:
385
+ common_name: !!null
386
+ name: 克罗地亚
387
+ official_name: !!null
388
+ ht:
389
+ common_name: !!null
390
+ name: 海底
391
+ official_name: !!null
392
+ hu:
393
+ common_name: !!null
394
+ name: 匈牙利
395
+ official_name: !!null
396
+ id:
397
+ common_name: !!null
398
+ name: 印度尼西亚
399
+ official_name: !!null
400
+ ie:
401
+ common_name: !!null
402
+ name: 爱尔兰
403
+ official_name: !!null
404
+ il:
405
+ common_name: !!null
406
+ name: 以色列
407
+ official_name: !!null
408
+ im:
409
+ common_name: !!null
410
+ name: 马恩岛
411
+ official_name: !!null
412
+ in:
413
+ common_name: !!null
414
+ name: 印度
415
+ official_name: !!null
416
+ iq:
417
+ common_name: !!null
418
+ name: 伊拉克
419
+ official_name: !!null
420
+ is:
421
+ common_name: !!null
422
+ name: 冰岛
423
+ official_name: !!null
424
+ it:
425
+ common_name: !!null
426
+ name: 意大利
427
+ official_name: !!null
428
+ je:
429
+ common_name: !!null
430
+ name: 泽西
431
+ official_name: !!null
432
+ jm:
433
+ common_name: !!null
434
+ name: 牙买加
435
+ official_name: !!null
436
+ jo:
437
+ common_name: !!null
438
+ name: 约旦
439
+ official_name: !!null
440
+ jp:
441
+ common_name: !!null
442
+ name: 日本
443
+ official_name: !!null
444
+ ke:
445
+ common_name: !!null
446
+ name: 肯尼亚
447
+ official_name: !!null
448
+ kg:
449
+ common_name: !!null
450
+ name: 吉尔吉斯斯坦
451
+ official_name: !!null
452
+ kh:
453
+ common_name: !!null
454
+ name: 柬埔寨
455
+ official_name: !!null
456
+ ki:
457
+ common_name: !!null
458
+ name: 基里巴斯
459
+ official_name: !!null
460
+ km:
461
+ common_name: !!null
462
+ name: 科摩罗
463
+ official_name: !!null
464
+ kn:
465
+ common_name: !!null
466
+ name: 圣基茨和尼维斯
467
+ official_name: !!null
468
+ kp:
469
+ common_name: !!null
470
+ name: 韩国
471
+ official_name: !!null
472
+ kv:
473
+ common_name: !!null
474
+ name: 科索沃
475
+ official_name: !!null
476
+ kw:
477
+ common_name: !!null
478
+ name: 科威特
479
+ official_name: !!null
480
+ ky:
481
+ common_name: !!null
482
+ name: 开曼群岛
483
+ official_name: !!null
484
+ kz:
485
+ common_name: !!null
486
+ name: 哈萨克斯坦
487
+ official_name: !!null
488
+ la:
489
+ common_name: !!null
490
+ name: 老挝人民民主共和国
491
+ official_name: !!null
492
+ lb:
493
+ common_name: !!null
494
+ name: 黎巴嫩
495
+ official_name: !!null
496
+ lc:
497
+ common_name: !!null
498
+ name: 圣卢西亚
499
+ official_name: !!null
500
+ li:
501
+ common_name: !!null
502
+ name: 列支敦士登
503
+ official_name: !!null
504
+ lk:
505
+ common_name: !!null
506
+ name: 斯里兰卡
507
+ official_name: !!null
508
+ lr:
509
+ common_name: !!null
510
+ name: 利比里亚
511
+ official_name: !!null
512
+ ls:
513
+ common_name: !!null
514
+ name: 莱索托
515
+ official_name: !!null
516
+ lt:
517
+ common_name: !!null
518
+ name: 立陶宛
519
+ official_name: !!null
520
+ lu:
521
+ common_name: !!null
522
+ name: 卢森堡
523
+ official_name: !!null
524
+ lv:
525
+ common_name: !!null
526
+ name: 拉脱维亚
527
+ official_name: !!null
528
+ ly:
529
+ common_name: !!null
530
+ name: 阿拉伯利比亚共和国
531
+ official_name: !!null
532
+ ma:
533
+ common_name: !!null
534
+ name: 摩洛哥
535
+ official_name: !!null
536
+ mc:
537
+ common_name: !!null
538
+ name: 摩纳哥
539
+ official_name: !!null
540
+ md:
541
+ common_name: !!null
542
+ name: 摩尔多瓦共和国
543
+ official_name: !!null
544
+ me:
545
+ common_name: !!null
546
+ name: 蒙特内哥罗
547
+ official_name: !!null
548
+ mf:
549
+ common_name: !!null
550
+ name: 圣马丁
551
+ official_name: !!null
552
+ mg:
553
+ common_name: !!null
554
+ name: 马达加斯加
555
+ official_name: !!null
556
+ mh:
557
+ common_name: !!null
558
+ name: 马绍尔群岛
559
+ official_name: !!null
560
+ mk:
561
+ common_name: !!null
562
+ name: 马其顿
563
+ official_name: !!null
564
+ ml:
565
+ common_name: !!null
566
+ name: 马里
567
+ official_name: !!null
568
+ mm:
569
+ common_name: !!null
570
+ name: 缅甸
571
+ official_name: !!null
572
+ mo:
573
+ common_name: !!null
574
+ name: 澳门
575
+ official_name: !!null
576
+ mp:
577
+ common_name: !!null
578
+ name: 北马利亚纳群岛
579
+ official_name: !!null
580
+ mq:
581
+ common_name: !!null
582
+ name: 马提尼克
583
+ official_name: !!null
584
+ mr:
585
+ common_name: !!null
586
+ name: 毛里塔尼亚
587
+ official_name: !!null
588
+ ms:
589
+ common_name: !!null
590
+ name: 蒙特塞拉特
591
+ official_name: !!null
592
+ mt:
593
+ common_name: !!null
594
+ name: 马耳他
595
+ official_name: !!null
596
+ mu:
597
+ common_name: !!null
598
+ name: 毛里求斯
599
+ official_name: !!null
600
+ mv:
601
+ common_name: !!null
602
+ name: 马尔代夫
603
+ official_name: !!null
604
+ mw:
605
+ common_name: !!null
606
+ name: 马拉维
607
+ official_name: !!null
608
+ mx:
609
+ common_name: !!null
610
+ name: 墨西哥
611
+ official_name: !!null
612
+ my:
613
+ common_name: !!null
614
+ name: 马来西亚
615
+ official_name: !!null
616
+ mz:
617
+ common_name: !!null
618
+ name: 莫桑比克
619
+ official_name: !!null
620
+ na:
621
+ common_name: !!null
622
+ name: 纳米比亚
623
+ official_name: !!null
624
+ nc:
625
+ common_name: !!null
626
+ name: 新喀里多尼亚
627
+ official_name: !!null
628
+ ne:
629
+ common_name: !!null
630
+ name: 尼日尔
631
+ official_name: !!null
632
+ nf:
633
+ common_name: !!null
634
+ name: 诺福克到
635
+ official_name: !!null
636
+ ng:
637
+ common_name: !!null
638
+ name: 尼日利亚
639
+ official_name: !!null
640
+ ni:
641
+ common_name: !!null
642
+ name: 尼加拉瓜
643
+ official_name: !!null
644
+ nl:
645
+ common_name: !!null
646
+ name: 荷兰
647
+ official_name: !!null
648
+ 'no':
649
+ common_name: !!null
650
+ name: 挪威
651
+ official_name: !!null
652
+ np:
653
+ common_name: !!null
654
+ name: 尼泊尔
655
+ official_name: !!null
656
+ nr:
657
+ common_name: !!null
658
+ name: 瑙鲁
659
+ official_name: !!null
660
+ nu:
661
+ common_name: !!null
662
+ name: 纽埃
663
+ official_name: !!null
664
+ nz:
665
+ common_name: !!null
666
+ name: 新西兰
667
+ official_name: !!null
668
+ om:
669
+ common_name: !!null
670
+ name: 阿曼
671
+ official_name: !!null
672
+ pa:
673
+ common_name: !!null
674
+ name: 巴拿马
675
+ official_name: !!null
676
+ pe:
677
+ common_name: !!null
678
+ name: 秘鲁
679
+ official_name: !!null
680
+ pf:
681
+ common_name: !!null
682
+ name: 法属波利尼西亚
683
+ official_name: !!null
684
+ pg:
685
+ common_name: !!null
686
+ name: 巴布亚新几内亚
687
+ official_name: !!null
688
+ ph:
689
+ common_name: !!null
690
+ name: 菲律宾
691
+ official_name: !!null
692
+ pk:
693
+ common_name: !!null
694
+ name: 巴基斯坦
695
+ official_name: !!null
696
+ pl:
697
+ common_name: !!null
698
+ name: 波兰
699
+ official_name: !!null
700
+ pm:
701
+ common_name: !!null
702
+ name: 圣皮埃尔和密克隆
703
+ official_name: !!null
704
+ pn:
705
+ common_name: !!null
706
+ name: 皮特凯恩
707
+ official_name: !!null
708
+ pr:
709
+ common_name: !!null
710
+ name: 波多黎各
711
+ official_name: !!null
712
+ pt:
713
+ common_name: !!null
714
+ name: 葡萄牙
715
+ official_name: !!null
716
+ pw:
717
+ common_name: !!null
718
+ name: 帕劳
719
+ official_name: !!null
720
+ py:
721
+ common_name: !!null
722
+ name: 巴拉圭
723
+ official_name: !!null
724
+ qa:
725
+ common_name: !!null
726
+ name: 卡塔尔
727
+ official_name: !!null
728
+ re:
729
+ common_name: !!null
730
+ name: 留尼旺
731
+ official_name: !!null
732
+ ro:
733
+ common_name: !!null
734
+ name: 罗马尼亚
735
+ official_name: !!null
736
+ rs:
737
+ common_name: !!null
738
+ name: 塞尔维亚
739
+ official_name: !!null
740
+ ru:
741
+ common_name: !!null
742
+ name: 俄罗斯联邦
743
+ official_name: !!null
744
+ rw:
745
+ common_name: !!null
746
+ name: 卢旺达
747
+ official_name: !!null
748
+ sa:
749
+ common_name: !!null
750
+ name: 沙特阿拉伯
751
+ official_name: !!null
752
+ sb:
753
+ common_name: !!null
754
+ name: 所罗门群岛
755
+ official_name: !!null
756
+ sc:
757
+ common_name: !!null
758
+ name: 塞舌尔
759
+ official_name: !!null
760
+ sd:
761
+ common_name: !!null
762
+ name: 苏丹
763
+ official_name: !!null
764
+ se:
765
+ common_name: !!null
766
+ name: 瑞典
767
+ official_name: !!null
768
+ sg:
769
+ common_name: !!null
770
+ name: 新加坡
771
+ official_name: !!null
772
+ sh:
773
+ common_name: !!null
774
+ name: 圣赫勒拿
775
+ official_name: !!null
776
+ si:
777
+ common_name: !!null
778
+ name: 斯洛文尼亚
779
+ official_name: !!null
780
+ sj:
781
+ common_name: !!null
782
+ name: 斯瓦尔巴岛和扬马延岛
783
+ official_name: !!null
784
+ sk:
785
+ common_name: !!null
786
+ name: 斯诺伐克
787
+ official_name: !!null
788
+ sl:
789
+ common_name: !!null
790
+ name: 塞拉利昂
791
+ official_name: !!null
792
+ sm:
793
+ common_name: !!null
794
+ name: 圣马力诺
795
+ official_name: !!null
796
+ sn:
797
+ common_name: !!null
798
+ name: 塞内加尔
799
+ official_name: !!null
800
+ so:
801
+ common_name: !!null
802
+ name: 索马里
803
+ official_name: !!null
804
+ sr:
805
+ common_name: !!null
806
+ name: 苏里南
807
+ official_name: !!null
808
+ st:
809
+ common_name: !!null
810
+ name: 圣多美和普林西比
811
+ official_name: !!null
812
+ sv:
813
+ common_name: !!null
814
+ name: 萨尔瓦多
815
+ official_name: !!null
816
+ sy:
817
+ common_name: !!null
818
+ name: 阿拉伯叙利亚共和国
819
+ official_name: !!null
820
+ sz:
821
+ common_name: !!null
822
+ name: 斯威士兰
823
+ official_name: !!null
824
+ tc:
825
+ common_name: !!null
826
+ name: 特克斯和凯克斯群岛
827
+ official_name: !!null
828
+ td:
829
+ common_name: !!null
830
+ name: 乍得
831
+ official_name: !!null
832
+ tf:
833
+ common_name: !!null
834
+ name: 法国南部领土
835
+ official_name: !!null
836
+ tg:
837
+ common_name: !!null
838
+ name: 多哥
839
+ official_name: !!null
840
+ th:
841
+ common_name: !!null
842
+ name: 泰国
843
+ official_name: !!null
844
+ tj:
845
+ common_name: !!null
846
+ name: 塔吉克斯坦
847
+ official_name: !!null
848
+ tk:
849
+ common_name: !!null
850
+ name: 托克劳
851
+ official_name: !!null
852
+ tl:
853
+ common_name: !!null
854
+ name: 东帝汶
855
+ official_name: !!null
856
+ tm:
857
+ common_name: !!null
858
+ name: 土库曼斯坦
859
+ official_name: !!null
860
+ tn:
861
+ common_name: !!null
862
+ name: 突尼斯
863
+ official_name: !!null
864
+ to:
865
+ common_name: !!null
866
+ name: 汤加
867
+ official_name: !!null
868
+ tr:
869
+ common_name: !!null
870
+ name: 土耳其
871
+ official_name: !!null
872
+ tt:
873
+ common_name: !!null
874
+ name: 特里尼达和多巴哥
875
+ official_name: !!null
876
+ tv:
877
+ common_name: !!null
878
+ name: 图瓦卢
879
+ official_name: !!null
880
+ tw:
881
+ common_name: !!null
882
+ name: 台湾
883
+ official_name: !!null
884
+ tz:
885
+ common_name: !!null
886
+ name: 坦桑尼亚共和国
887
+ official_name: !!null
888
+ ua:
889
+ common_name: !!null
890
+ name: 乌克兰
891
+ official_name: !!null
892
+ ug:
893
+ common_name: !!null
894
+ name: 乌干达
895
+ official_name: !!null
896
+ um:
897
+ common_name: !!null
898
+ name: 美国本土外小岛屿
899
+ official_name: !!null
900
+ us:
901
+ common_name: !!null
902
+ name: 美国
903
+ official_name: !!null
904
+ uy:
905
+ common_name: !!null
906
+ name: 乌拉圭
907
+ official_name: !!null
908
+ uz:
909
+ common_name: !!null
910
+ name: 乌兹别克斯坦
911
+ official_name: !!null
912
+ va:
913
+ common_name: !!null
914
+ name: 罗马教廷
915
+ official_name: !!null
916
+ vc:
917
+ common_name: !!null
918
+ name: 圣文森特和格林纳丁斯
919
+ official_name: !!null
920
+ ve:
921
+ common_name: !!null
922
+ name: 委内瑞拉
923
+ official_name: !!null
924
+ vg:
925
+ common_name: !!null
926
+ name: 英属维京群岛
927
+ official_name: !!null
928
+ vi:
929
+ common_name: !!null
930
+ name: 美属维尔京群岛
931
+ official_name: !!null
932
+ vn:
933
+ common_name: !!null
934
+ name: 越南
935
+ official_name: !!null
936
+ vu:
937
+ common_name: !!null
938
+ name: 瓦努阿图
939
+ official_name: !!null
940
+ ws:
941
+ common_name: !!null
942
+ name: 萨摩亚
943
+ official_name: !!null
944
+ ye:
945
+ common_name: !!null
946
+ name: 也门
947
+ official_name: !!null
948
+ yt:
949
+ common_name: !!null
950
+ name: 马约特
951
+ official_name: !!null
952
+ za:
953
+ common_name: !!null
954
+ name: 南非
955
+ official_name: !!null
956
+ zm:
957
+ common_name: !!null
958
+ name: 赞比亚
959
+ official_name: !!null
960
+ zw:
961
+ common_name: !!null
962
+ name: 津巴布韦
963
+ official_name: !!null