countries 4.2.3 → 5.1.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/tests.yml +3 -7
- data/.rubocop.yml +40 -1
- data/.rubocop_todo.yml +8 -41
- data/CHANGELOG.md +35 -2
- data/Gemfile +5 -3
- data/README.markdown +56 -62
- data/Rakefile +21 -45
- data/UPGRADE.md +39 -0
- data/bin/console +1 -0
- data/countries.gemspec +7 -6
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/ab.json +1 -1
- data/lib/countries/cache/locales/af.json +1 -1
- data/lib/countries/cache/locales/ak.json +1 -1
- data/lib/countries/cache/locales/am.json +1 -1
- data/lib/countries/cache/locales/an.json +1 -1
- data/lib/countries/cache/locales/ar.json +1 -1
- data/lib/countries/cache/locales/as.json +1 -1
- data/lib/countries/cache/locales/ay.json +1 -1
- data/lib/countries/cache/locales/az.json +1 -1
- data/lib/countries/cache/locales/ba.json +1 -1
- data/lib/countries/cache/locales/be.json +1 -1
- data/lib/countries/cache/locales/bg.json +1 -1
- data/lib/countries/cache/locales/bi.json +1 -1
- data/lib/countries/cache/locales/bn-in.json +1 -1
- data/lib/countries/cache/locales/bn.json +1 -1
- data/lib/countries/cache/locales/br.json +1 -1
- data/lib/countries/cache/locales/bs.json +1 -1
- data/lib/countries/cache/locales/ca.json +1 -1
- data/lib/countries/cache/locales/ce.json +1 -1
- data/lib/countries/cache/locales/ch.json +1 -1
- data/lib/countries/cache/locales/cs.json +1 -1
- data/lib/countries/cache/locales/cv.json +1 -1
- data/lib/countries/cache/locales/cy.json +1 -1
- data/lib/countries/cache/locales/da.json +1 -1
- data/lib/countries/cache/locales/de.json +1 -1
- data/lib/countries/cache/locales/dv.json +1 -1
- data/lib/countries/cache/locales/dz.json +1 -1
- data/lib/countries/cache/locales/ee.json +1 -1
- data/lib/countries/cache/locales/el.json +1 -1
- data/lib/countries/cache/locales/en.json +1 -1
- data/lib/countries/cache/locales/eo.json +1 -1
- data/lib/countries/cache/locales/es.json +1 -1
- data/lib/countries/cache/locales/et.json +1 -1
- data/lib/countries/cache/locales/eu.json +1 -1
- data/lib/countries/cache/locales/fa.json +1 -1
- data/lib/countries/cache/locales/ff.json +1 -1
- data/lib/countries/cache/locales/fi.json +1 -1
- data/lib/countries/cache/locales/fo.json +1 -1
- data/lib/countries/cache/locales/fr.json +1 -1
- data/lib/countries/cache/locales/fy.json +1 -1
- data/lib/countries/cache/locales/ga.json +1 -1
- data/lib/countries/cache/locales/gl.json +1 -1
- data/lib/countries/cache/locales/gn.json +1 -1
- data/lib/countries/cache/locales/gu.json +1 -1
- data/lib/countries/cache/locales/gv.json +1 -1
- data/lib/countries/cache/locales/ha.json +1 -1
- data/lib/countries/cache/locales/he.json +1 -1
- data/lib/countries/cache/locales/hi.json +1 -1
- data/lib/countries/cache/locales/hr.json +1 -1
- data/lib/countries/cache/locales/ht.json +1 -1
- data/lib/countries/cache/locales/hu.json +1 -1
- data/lib/countries/cache/locales/hy.json +1 -1
- data/lib/countries/cache/locales/ia.json +1 -1
- data/lib/countries/cache/locales/id.json +1 -1
- data/lib/countries/cache/locales/io.json +1 -1
- data/lib/countries/cache/locales/is.json +1 -1
- data/lib/countries/cache/locales/it.json +1 -1
- data/lib/countries/cache/locales/iu.json +1 -1
- data/lib/countries/cache/locales/ja.json +1 -1
- data/lib/countries/cache/locales/ka.json +1 -1
- data/lib/countries/cache/locales/ki.json +1 -1
- data/lib/countries/cache/locales/kk.json +1 -1
- data/lib/countries/cache/locales/kl.json +1 -1
- data/lib/countries/cache/locales/km.json +1 -1
- data/lib/countries/cache/locales/kn.json +1 -1
- data/lib/countries/cache/locales/ko.json +1 -1
- data/lib/countries/cache/locales/kv.json +1 -1
- data/lib/countries/cache/locales/kw.json +1 -1
- data/lib/countries/cache/locales/ky.json +1 -1
- data/lib/countries/cache/locales/lo.json +1 -1
- data/lib/countries/cache/locales/lt.json +1 -1
- data/lib/countries/cache/locales/lv.json +1 -1
- data/lib/countries/cache/locales/mi.json +1 -1
- data/lib/countries/cache/locales/mk.json +1 -1
- data/lib/countries/cache/locales/ml.json +1 -1
- data/lib/countries/cache/locales/mn.json +1 -1
- data/lib/countries/cache/locales/mr.json +1 -1
- data/lib/countries/cache/locales/ms.json +1 -1
- data/lib/countries/cache/locales/mt.json +1 -1
- data/lib/countries/cache/locales/my.json +1 -1
- data/lib/countries/cache/locales/na.json +1 -1
- data/lib/countries/cache/locales/nb.json +1 -1
- data/lib/countries/cache/locales/ne.json +1 -1
- data/lib/countries/cache/locales/nl.json +1 -1
- data/lib/countries/cache/locales/nn.json +1 -1
- data/lib/countries/cache/locales/nv.json +1 -1
- data/lib/countries/cache/locales/oc.json +1 -1
- data/lib/countries/cache/locales/or.json +1 -1
- data/lib/countries/cache/locales/pa.json +1 -1
- data/lib/countries/cache/locales/pi.json +1 -1
- data/lib/countries/cache/locales/pl.json +1 -1
- data/lib/countries/cache/locales/ps.json +1 -1
- data/lib/countries/cache/locales/pt-br.json +1 -1
- data/lib/countries/cache/locales/pt.json +1 -1
- data/lib/countries/cache/locales/ro.json +1 -1
- data/lib/countries/cache/locales/ru.json +1 -1
- data/lib/countries/cache/locales/rw.json +1 -1
- data/lib/countries/cache/locales/sc.json +1 -1
- data/lib/countries/cache/locales/sd.json +1 -1
- data/lib/countries/cache/locales/si.json +1 -1
- data/lib/countries/cache/locales/sk.json +1 -1
- data/lib/countries/cache/locales/sl.json +1 -1
- data/lib/countries/cache/locales/so.json +1 -1
- data/lib/countries/cache/locales/sq.json +1 -1
- data/lib/countries/cache/locales/sr.json +1 -1
- data/lib/countries/cache/locales/sv.json +1 -1
- data/lib/countries/cache/locales/sw.json +1 -1
- data/lib/countries/cache/locales/ta.json +1 -1
- data/lib/countries/cache/locales/te.json +1 -1
- data/lib/countries/cache/locales/tg.json +1 -1
- data/lib/countries/cache/locales/th.json +1 -1
- data/lib/countries/cache/locales/ti.json +1 -1
- data/lib/countries/cache/locales/tk.json +1 -1
- data/lib/countries/cache/locales/tl.json +1 -1
- data/lib/countries/cache/locales/tr.json +1 -1
- data/lib/countries/cache/locales/tt.json +1 -1
- data/lib/countries/cache/locales/ug.json +1 -1
- data/lib/countries/cache/locales/uk.json +1 -1
- data/lib/countries/cache/locales/ur.json +1 -1
- data/lib/countries/cache/locales/uz.json +1 -1
- data/lib/countries/cache/locales/ve.json +1 -1
- data/lib/countries/cache/locales/vi.json +1 -1
- data/lib/countries/cache/locales/wa.json +1 -1
- data/lib/countries/cache/locales/wo.json +1 -1
- data/lib/countries/cache/locales/xh.json +1 -1
- data/lib/countries/cache/locales/yo.json +1 -1
- data/lib/countries/cache/locales/zh-cn.json +1 -1
- data/lib/countries/cache/locales/zh-hk.json +1 -1
- data/lib/countries/cache/locales/zh-tw.json +1 -1
- data/lib/countries/cache/locales/zu.json +1 -1
- data/lib/countries/configuration.rb +2 -0
- data/lib/countries/country/class_methods.rb +20 -103
- data/lib/countries/country/currency_methods.rb +2 -0
- data/lib/countries/country/emoji.rb +2 -3
- data/lib/countries/country/finder_methods.rb +81 -0
- data/lib/countries/country.rb +32 -43
- data/lib/countries/data/countries/KN.yaml +0 -1
- data/lib/countries/data/subdivisions/AD.yaml +14 -7
- data/lib/countries/data/subdivisions/AE.yaml +14 -7
- data/lib/countries/data/subdivisions/AF.yaml +196 -201
- data/lib/countries/data/subdivisions/AG.yaml +16 -22
- data/lib/countries/data/subdivisions/AL.yaml +24 -12
- data/lib/countries/data/subdivisions/AM.yaml +22 -11
- data/lib/countries/data/subdivisions/AO.yaml +36 -18
- data/lib/countries/data/subdivisions/AR.yaml +48 -24
- data/lib/countries/data/subdivisions/AT.yaml +18 -9
- data/lib/countries/data/subdivisions/AU.yaml +16 -8
- data/lib/countries/data/subdivisions/AZ.yaml +434 -412
- data/lib/countries/data/subdivisions/BA.yaml +75 -223
- data/lib/countries/data/subdivisions/BB.yaml +22 -11
- data/lib/countries/data/subdivisions/BD.yaml +188 -116
- data/lib/countries/data/subdivisions/BE.yaml +174 -161
- data/lib/countries/data/subdivisions/BF.yaml +2918 -2860
- data/lib/countries/data/subdivisions/BG.yaml +56 -28
- data/lib/countries/data/subdivisions/BH.yaml +8 -21
- data/lib/countries/data/subdivisions/BI.yaml +176 -157
- data/lib/countries/data/subdivisions/BJ.yaml +24 -12
- data/lib/countries/data/subdivisions/BN.yaml +8 -4
- data/lib/countries/data/subdivisions/BO.yaml +18 -9
- data/lib/countries/data/subdivisions/BQ.yaml +6 -3
- data/lib/countries/data/subdivisions/BR.yaml +54 -27
- data/lib/countries/data/subdivisions/BS.yaml +575 -697
- data/lib/countries/data/subdivisions/BT.yaml +40 -20
- data/lib/countries/data/subdivisions/BW.yaml +337 -321
- data/lib/countries/data/subdivisions/BY.yaml +106 -116
- data/lib/countries/data/subdivisions/BZ.yaml +12 -6
- data/lib/countries/data/subdivisions/CA.yaml +26 -13
- data/lib/countries/data/subdivisions/CD.yaml +488 -525
- data/lib/countries/data/subdivisions/CF.yaml +34 -17
- data/lib/countries/data/subdivisions/CG.yaml +40 -28
- data/lib/countries/data/subdivisions/CH.yaml +52 -26
- data/lib/countries/data/subdivisions/CI.yaml +244 -516
- data/lib/countries/data/subdivisions/CL.yaml +81 -65
- data/lib/countries/data/subdivisions/CM.yaml +20 -10
- data/lib/countries/data/subdivisions/CN.yaml +2152 -2084
- data/lib/countries/data/subdivisions/CO.yaml +66 -33
- data/lib/countries/data/subdivisions/CR.yaml +14 -7
- data/lib/countries/data/subdivisions/CU.yaml +32 -16
- data/lib/countries/data/subdivisions/CV.yaml +427 -401
- data/lib/countries/data/subdivisions/CY.yaml +12 -6
- data/lib/countries/data/subdivisions/CZ.yaml +1116 -85
- data/lib/countries/data/subdivisions/DE.yaml +32 -16
- data/lib/countries/data/subdivisions/DJ.yaml +12 -6
- data/lib/countries/data/subdivisions/DK.yaml +25 -17
- data/lib/countries/data/subdivisions/DM.yaml +20 -10
- data/lib/countries/data/subdivisions/DO.yaml +84 -42
- data/lib/countries/data/subdivisions/DZ.yaml +96 -48
- data/lib/countries/data/subdivisions/EC.yaml +158 -134
- data/lib/countries/data/subdivisions/EE.yaml +501 -334
- data/lib/countries/data/subdivisions/EG.yaml +54 -27
- data/lib/countries/data/subdivisions/ER.yaml +12 -6
- data/lib/countries/data/subdivisions/ES.yaml +1459 -1390
- data/lib/countries/data/subdivisions/ET.yaml +22 -11
- data/lib/countries/data/subdivisions/FI.yaml +185 -1
- data/lib/countries/data/subdivisions/FJ.yaml +443 -424
- data/lib/countries/data/subdivisions/FM.yaml +8 -4
- data/lib/countries/data/subdivisions/FR.yaml +438 -275
- data/lib/countries/data/subdivisions/GA.yaml +18 -9
- data/lib/countries/data/subdivisions/GB.yaml +1185 -1708
- data/lib/countries/data/subdivisions/GD.yaml +14 -7
- data/lib/countries/data/subdivisions/GE.yaml +24 -12
- data/lib/countries/data/subdivisions/GH.yaml +114 -155
- data/lib/countries/data/subdivisions/GL.yaml +24 -79
- data/lib/countries/data/subdivisions/GM.yaml +12 -6
- data/lib/countries/data/subdivisions/GN.yaml +444 -403
- data/lib/countries/data/subdivisions/GQ.yaml +24 -13
- data/lib/countries/data/subdivisions/GR.yaml +114 -73
- data/lib/countries/data/subdivisions/GT.yaml +44 -22
- data/lib/countries/data/subdivisions/GW.yaml +69 -57
- data/lib/countries/data/subdivisions/GY.yaml +20 -10
- data/lib/countries/data/subdivisions/HN.yaml +36 -18
- data/lib/countries/data/subdivisions/HR.yaml +42 -21
- data/lib/countries/data/subdivisions/HT.yaml +73 -63
- data/lib/countries/data/subdivisions/HU.yaml +106 -63
- data/lib/countries/data/subdivisions/ID.yaml +229 -188
- data/lib/countries/data/subdivisions/IE.yaml +128 -97
- data/lib/countries/data/subdivisions/IL.yaml +12 -6
- data/lib/countries/data/subdivisions/IN.yaml +245 -396
- data/lib/countries/data/subdivisions/IQ.yaml +111 -91
- data/lib/countries/data/subdivisions/IR.yaml +1463 -1451
- data/lib/countries/data/subdivisions/IS.yaml +160 -25
- data/lib/countries/data/subdivisions/IT.yaml +8740 -8292
- data/lib/countries/data/subdivisions/JM.yaml +28 -14
- data/lib/countries/data/subdivisions/JO.yaml +24 -12
- data/lib/countries/data/subdivisions/JP.yaml +94 -47
- data/lib/countries/data/subdivisions/KE.yaml +95 -48
- data/lib/countries/data/subdivisions/KG.yaml +95 -86
- data/lib/countries/data/subdivisions/KH.yaml +64 -39
- data/lib/countries/data/subdivisions/KI.yaml +6 -3
- data/lib/countries/data/subdivisions/KM.yaml +6 -3
- data/lib/countries/data/subdivisions/KN.yaml +32 -16
- data/lib/countries/data/subdivisions/KP.yaml +24 -227
- data/lib/countries/data/subdivisions/KR.yaml +34 -17
- data/lib/countries/data/subdivisions/KW.yaml +12 -6
- data/lib/countries/data/subdivisions/KZ.yaml +47 -102
- data/lib/countries/data/subdivisions/LA.yaml +36 -34
- data/lib/countries/data/subdivisions/LB.yaml +71 -63
- data/lib/countries/data/subdivisions/LC.yaml +116 -106
- data/lib/countries/data/subdivisions/LI.yaml +22 -11
- data/lib/countries/data/subdivisions/LK.yaml +445 -411
- data/lib/countries/data/subdivisions/LR.yaml +146 -129
- data/lib/countries/data/subdivisions/LS.yaml +20 -10
- data/lib/countries/data/subdivisions/LT.yaml +1706 -1636
- data/lib/countries/data/subdivisions/LU.yaml +24 -12
- data/lib/countries/data/subdivisions/LV.yaml +1623 -1577
- data/lib/countries/data/subdivisions/LY.yaml +44 -22
- data/lib/countries/data/subdivisions/MA.yaml +810 -1589
- data/lib/countries/data/subdivisions/MC.yaml +261 -244
- data/lib/countries/data/subdivisions/MD.yaml +74 -79
- data/lib/countries/data/subdivisions/ME.yaml +217 -195
- data/lib/countries/data/subdivisions/MG.yaml +12 -6
- data/lib/countries/data/subdivisions/MH.yaml +167 -140
- data/lib/countries/data/subdivisions/MK.yaml +160 -80
- data/lib/countries/data/subdivisions/ML.yaml +48 -37
- data/lib/countries/data/subdivisions/MM.yaml +30 -15
- data/lib/countries/data/subdivisions/MN.yaml +44 -22
- data/lib/countries/data/subdivisions/MR.yaml +30 -34
- data/lib/countries/data/subdivisions/MT.yaml +136 -68
- data/lib/countries/data/subdivisions/MU.yaml +24 -262
- data/lib/countries/data/subdivisions/MV.yaml +161 -254
- data/lib/countries/data/subdivisions/MW.yaml +250 -219
- data/lib/countries/data/subdivisions/MX.yaml +67 -47
- data/lib/countries/data/subdivisions/MY.yaml +32 -16
- data/lib/countries/data/subdivisions/MZ.yaml +22 -11
- data/lib/countries/data/subdivisions/NA.yaml +58 -44
- data/lib/countries/data/subdivisions/NE.yaml +16 -8
- data/lib/countries/data/subdivisions/NG.yaml +74 -37
- data/lib/countries/data/subdivisions/NI.yaml +34 -17
- data/lib/countries/data/subdivisions/NL.yaml +303 -285
- data/lib/countries/data/subdivisions/NO.yaml +39 -17
- data/lib/countries/data/subdivisions/NP.yaml +302 -276
- data/lib/countries/data/subdivisions/NR.yaml +28 -14
- data/lib/countries/data/subdivisions/NZ.yaml +34 -17
- data/lib/countries/data/subdivisions/OM.yaml +260 -311
- data/lib/countries/data/subdivisions/PA.yaml +57 -44
- data/lib/countries/data/subdivisions/PE.yaml +107 -81
- data/lib/countries/data/subdivisions/PG.yaml +163 -158
- data/lib/countries/data/subdivisions/PH.yaml +5062 -4992
- data/lib/countries/data/subdivisions/PK.yaml +145 -235
- data/lib/countries/data/subdivisions/PL.yaml +51 -3
- data/lib/countries/data/subdivisions/PS.yaml +32 -16
- data/lib/countries/data/subdivisions/PT.yaml +53 -33
- data/lib/countries/data/subdivisions/PW.yaml +32 -16
- data/lib/countries/data/subdivisions/PY.yaml +36 -18
- data/lib/countries/data/subdivisions/QA.yaml +27 -78
- data/lib/countries/data/subdivisions/RO.yaml +84 -42
- data/lib/countries/data/subdivisions/RS.yaml +104 -72
- data/lib/countries/data/subdivisions/RU.yaml +166 -83
- data/lib/countries/data/subdivisions/RW.yaml +10 -5
- data/lib/countries/data/subdivisions/SA.yaml +26 -13
- data/lib/countries/data/subdivisions/SB.yaml +20 -10
- data/lib/countries/data/subdivisions/SC.yaml +54 -25
- data/lib/countries/data/subdivisions/SD.yaml +798 -780
- data/lib/countries/data/subdivisions/SE.yaml +42 -21
- data/lib/countries/data/subdivisions/SG.yaml +15 -10
- data/lib/countries/data/subdivisions/SH.yaml +21 -32
- data/lib/countries/data/subdivisions/SI.yaml +475 -263
- data/lib/countries/data/subdivisions/SK.yaml +16 -8
- data/lib/countries/data/subdivisions/SL.yaml +23 -18
- data/lib/countries/data/subdivisions/SM.yaml +18 -9
- data/lib/countries/data/subdivisions/SN.yaml +188 -174
- data/lib/countries/data/subdivisions/SO.yaml +36 -18
- data/lib/countries/data/subdivisions/SR.yaml +20 -10
- data/lib/countries/data/subdivisions/SS.yaml +20 -10
- data/lib/countries/data/subdivisions/ST.yaml +38 -52
- data/lib/countries/data/subdivisions/SV.yaml +28 -14
- data/lib/countries/data/subdivisions/SY.yaml +28 -14
- data/lib/countries/data/subdivisions/SZ.yaml +8 -4
- data/lib/countries/data/subdivisions/TD.yaml +312 -303
- data/lib/countries/data/subdivisions/TG.yaml +10 -5
- data/lib/countries/data/subdivisions/TH.yaml +211 -133
- data/lib/countries/data/subdivisions/TJ.yaml +161 -156
- data/lib/countries/data/subdivisions/TL.yaml +26 -13
- data/lib/countries/data/subdivisions/TM.yaml +12 -6
- data/lib/countries/data/subdivisions/TN.yaml +48 -24
- data/lib/countries/data/subdivisions/TO.yaml +10 -5
- data/lib/countries/data/subdivisions/TR.yaml +162 -81
- data/lib/countries/data/subdivisions/TT.yaml +128 -160
- data/lib/countries/data/subdivisions/TV.yaml +57 -63
- data/lib/countries/data/subdivisions/TW.yaml +143 -183
- data/lib/countries/data/subdivisions/TZ.yaml +62 -31
- data/lib/countries/data/subdivisions/UA.yaml +55 -28
- data/lib/countries/data/subdivisions/UG.yaml +4806 -4660
- data/lib/countries/data/subdivisions/UM.yaml +18 -9
- data/lib/countries/data/subdivisions/US.yaml +114 -57
- data/lib/countries/data/subdivisions/UY.yaml +99 -80
- data/lib/countries/data/subdivisions/UZ.yaml +28 -14
- data/lib/countries/data/subdivisions/VC.yaml +12 -6
- data/lib/countries/data/subdivisions/VE.yaml +50 -25
- data/lib/countries/data/subdivisions/VN.yaml +3576 -3513
- data/lib/countries/data/subdivisions/VU.yaml +12 -6
- data/lib/countries/data/subdivisions/WF.yaml +6 -3
- data/lib/countries/data/subdivisions/WS.yaml +22 -11
- data/lib/countries/data/subdivisions/YE.yaml +222 -200
- data/lib/countries/data/subdivisions/ZA.yaml +86 -100
- data/lib/countries/data/subdivisions/ZM.yaml +20 -10
- data/lib/countries/data/subdivisions/ZW.yaml +20 -10
- data/lib/countries/data/translations/countries-ab.yaml +254 -0
- data/lib/countries/data/translations/countries-af.yaml +254 -0
- data/lib/countries/data/translations/countries-ak.yaml +254 -0
- data/lib/countries/data/translations/countries-am.yaml +254 -0
- data/lib/countries/data/translations/countries-an.yaml +254 -0
- data/lib/countries/data/translations/countries-ar.yaml +254 -0
- data/lib/countries/data/translations/countries-as.yaml +254 -0
- data/lib/countries/data/translations/countries-ay.yaml +254 -0
- data/lib/countries/data/translations/countries-az.yaml +254 -0
- data/lib/countries/data/translations/countries-ba.yaml +254 -0
- data/lib/countries/data/translations/countries-be.yaml +254 -0
- data/lib/countries/data/translations/countries-bg.yaml +254 -0
- data/lib/countries/data/translations/countries-bi.yaml +254 -0
- data/lib/countries/data/translations/countries-bn.yaml +254 -0
- data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
- data/lib/countries/data/translations/countries-br.yaml +254 -0
- data/lib/countries/data/translations/countries-bs.yaml +254 -0
- data/lib/countries/data/translations/countries-ca.yaml +254 -0
- data/lib/countries/data/translations/countries-ce.yaml +254 -0
- data/lib/countries/data/translations/countries-ch.yaml +254 -0
- data/lib/countries/data/translations/countries-cs.yaml +254 -0
- data/lib/countries/data/translations/countries-cv.yaml +254 -0
- data/lib/countries/data/translations/countries-cy.yaml +254 -0
- data/lib/countries/data/translations/countries-da.yaml +254 -0
- data/lib/countries/data/translations/countries-de.yaml +254 -0
- data/lib/countries/data/translations/countries-dv.yaml +254 -0
- data/lib/countries/data/translations/countries-dz.yaml +254 -0
- data/lib/countries/data/translations/countries-ee.yaml +254 -0
- data/lib/countries/data/translations/countries-el.yaml +254 -0
- data/lib/countries/data/translations/countries-en.yaml +254 -0
- data/lib/countries/data/translations/countries-eo.yaml +254 -0
- data/lib/countries/data/translations/countries-es.yaml +254 -0
- data/lib/countries/data/translations/countries-et.yaml +254 -0
- data/lib/countries/data/translations/countries-eu.yaml +254 -0
- data/lib/countries/data/translations/countries-fa.yaml +254 -0
- data/lib/countries/data/translations/countries-ff.yaml +254 -0
- data/lib/countries/data/translations/countries-fi.yaml +254 -0
- data/lib/countries/data/translations/countries-fo.yaml +254 -0
- data/lib/countries/data/translations/countries-fr.yaml +254 -0
- data/lib/countries/data/translations/countries-fy.yaml +254 -0
- data/lib/countries/data/translations/countries-ga.yaml +254 -0
- data/lib/countries/data/translations/countries-gl.yaml +254 -0
- data/lib/countries/data/translations/countries-gn.yaml +254 -0
- data/lib/countries/data/translations/countries-gu.yaml +254 -0
- data/lib/countries/data/translations/countries-gv.yaml +254 -0
- data/lib/countries/data/translations/countries-ha.yaml +254 -0
- data/lib/countries/data/translations/countries-he.yaml +254 -0
- data/lib/countries/data/translations/countries-hi.yaml +254 -0
- data/lib/countries/data/translations/countries-hr.yaml +254 -0
- data/lib/countries/data/translations/countries-ht.yaml +254 -0
- data/lib/countries/data/translations/countries-hu.yaml +254 -0
- data/lib/countries/data/translations/countries-hy.yaml +254 -0
- data/lib/countries/data/translations/countries-ia.yaml +254 -0
- data/lib/countries/data/translations/countries-id.yaml +254 -0
- data/lib/countries/data/translations/countries-io.yaml +254 -0
- data/lib/countries/data/translations/countries-is.yaml +254 -0
- data/lib/countries/data/translations/countries-it.yaml +254 -0
- data/lib/countries/data/translations/countries-iu.yaml +254 -0
- data/lib/countries/data/translations/countries-ja.yaml +254 -0
- data/lib/countries/data/translations/countries-ka.yaml +254 -0
- data/lib/countries/data/translations/countries-ki.yaml +254 -0
- data/lib/countries/data/translations/countries-kk.yaml +254 -0
- data/lib/countries/data/translations/countries-kl.yaml +254 -0
- data/lib/countries/data/translations/countries-km.yaml +254 -0
- data/lib/countries/data/translations/countries-kn.yaml +254 -0
- data/lib/countries/data/translations/countries-ko.yaml +254 -0
- data/lib/countries/data/translations/countries-ku.yaml +254 -0
- data/lib/countries/data/translations/countries-kv.yaml +254 -0
- data/lib/countries/data/translations/countries-kw.yaml +254 -0
- data/lib/countries/data/translations/countries-ky.yaml +254 -0
- data/lib/countries/data/translations/countries-lo.yaml +254 -0
- data/lib/countries/data/translations/countries-lt.yaml +254 -0
- data/lib/countries/data/translations/countries-lv.yaml +254 -0
- data/lib/countries/data/translations/countries-mi.yaml +254 -0
- data/lib/countries/data/translations/countries-mk.yaml +254 -0
- data/lib/countries/data/translations/countries-ml.yaml +254 -0
- data/lib/countries/data/translations/countries-mn.yaml +254 -0
- data/lib/countries/data/translations/countries-mr.yaml +254 -0
- data/lib/countries/data/translations/countries-ms.yaml +254 -0
- data/lib/countries/data/translations/countries-mt.yaml +254 -0
- data/lib/countries/data/translations/countries-my.yaml +254 -0
- data/lib/countries/data/translations/countries-na.yaml +254 -0
- data/lib/countries/data/translations/countries-nb.yaml +254 -0
- data/lib/countries/data/translations/countries-ne.yaml +254 -0
- data/lib/countries/data/translations/countries-nl.yaml +254 -0
- data/lib/countries/data/translations/countries-nn.yaml +254 -0
- data/lib/countries/data/translations/countries-nv.yaml +254 -0
- data/lib/countries/data/translations/countries-oc.yaml +254 -0
- data/lib/countries/data/translations/countries-or.yaml +254 -0
- data/lib/countries/data/translations/countries-pa.yaml +254 -0
- data/lib/countries/data/translations/countries-pi.yaml +254 -0
- data/lib/countries/data/translations/countries-pl.yaml +254 -0
- data/lib/countries/data/translations/countries-ps.yaml +254 -0
- data/lib/countries/data/translations/countries-pt.yaml +254 -0
- data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
- data/lib/countries/data/translations/countries-ro.yaml +254 -0
- data/lib/countries/data/translations/countries-ru.yaml +254 -0
- data/lib/countries/data/translations/countries-rw.yaml +254 -0
- data/lib/countries/data/translations/countries-sc.yaml +254 -0
- data/lib/countries/data/translations/countries-sd.yaml +254 -0
- data/lib/countries/data/translations/countries-si.yaml +254 -0
- data/lib/countries/data/translations/countries-sk.yaml +254 -0
- data/lib/countries/data/translations/countries-sl.yaml +254 -0
- data/lib/countries/data/translations/countries-so.yaml +254 -0
- data/lib/countries/data/translations/countries-sq.yaml +254 -0
- data/lib/countries/data/translations/countries-sr.yaml +254 -0
- data/lib/countries/data/translations/countries-sv.yaml +254 -0
- data/lib/countries/data/translations/countries-sw.yaml +254 -0
- data/lib/countries/data/translations/countries-ta.yaml +254 -0
- data/lib/countries/data/translations/countries-te.yaml +254 -0
- data/lib/countries/data/translations/countries-tg.yaml +254 -0
- data/lib/countries/data/translations/countries-th.yaml +254 -0
- data/lib/countries/data/translations/countries-ti.yaml +254 -0
- data/lib/countries/data/translations/countries-tk.yaml +254 -0
- data/lib/countries/data/translations/countries-tl.yaml +254 -0
- data/lib/countries/data/translations/countries-tr.yaml +254 -0
- data/lib/countries/data/translations/countries-tt.yaml +254 -0
- data/lib/countries/data/translations/countries-ug.yaml +254 -0
- data/lib/countries/data/translations/countries-uk.yaml +254 -0
- data/lib/countries/data/translations/countries-ur.yaml +254 -0
- data/lib/countries/data/translations/countries-uz.yaml +254 -0
- data/lib/countries/data/translations/countries-ve.yaml +254 -0
- data/lib/countries/data/translations/countries-vi.yaml +254 -0
- data/lib/countries/data/translations/countries-wa.yaml +254 -0
- data/lib/countries/data/translations/countries-wo.yaml +254 -0
- data/lib/countries/data/translations/countries-xh.yaml +254 -0
- data/lib/countries/data/translations/countries-yo.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
- data/lib/countries/data/translations/countries-zu.yaml +254 -0
- data/lib/countries/data.rb +45 -42
- data/lib/countries/global.rb +2 -0
- data/lib/countries/iso3166.rb +3 -1
- data/lib/countries/kwarg_struct.rb +2 -0
- data/lib/countries/mongoid.rb +2 -0
- data/lib/countries/sources/cldr/downloader.rb +8 -8
- data/lib/countries/sources/cldr/subdivision.rb +3 -0
- data/lib/countries/sources/cldr/subdivision_updater.rb +23 -17
- data/lib/countries/sources/local/cached_loader.rb +3 -0
- data/lib/countries/sources/local/subdivision.rb +5 -2
- data/lib/countries/sources.rb +2 -0
- data/lib/countries/structure.rb +1 -1
- data/lib/countries/subdivision.rb +21 -8
- data/lib/countries/tasks/geocoding.rake +15 -6
- data/lib/countries/tasks/postal_codes.rake +5 -3
- data/lib/countries/timezones.rb +5 -2
- data/lib/countries/translations.rb +2 -0
- data/lib/countries/version.rb +3 -1
- data/lib/countries.rb +2 -0
- data/spec/00_global_spec.rb +2 -0
- data/spec/configuration_spec.rb +11 -5
- data/spec/country_spec.rb +131 -38
- data/spec/data_spec.rb +85 -21
- data/spec/mongoid_spec.rb +2 -2
- data/spec/perf_spec.rb +16 -16
- data/spec/spec_helper.rb +2 -0
- data/spec/subdivision_spec.rb +6 -4
- data/spec/thread_safety_spec.rb +4 -3
- data/spec/timezone_spec.rb +2 -0
- metadata +146 -34
- data/lib/countries/cache/locales/zh.json +0 -1
- data/lib/countries/data/subdivisions/AI.yaml +0 -197
- data/lib/countries/data/subdivisions/BM.yaml +0 -155
- data/lib/countries/data/subdivisions/CK.yaml +0 -155
- data/lib/countries/data/subdivisions/EH.yaml +0 -80
- data/lib/countries/data/subdivisions/SJ.yaml +0 -29
- data/lib/countries/data/subdivisions/TK.yaml +0 -43
- data/lib/countries/data/translation_corrections.yaml +0 -51
- data/lib/countries/setup.rb +0 -18
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Country name translations for locale zu
|
|
2
|
+
#
|
|
3
|
+
# alpha2: localized_name
|
|
4
|
+
#
|
|
5
|
+
---
|
|
6
|
+
AD: I-Andora
|
|
7
|
+
AE: United Arab Emirates
|
|
8
|
+
AF: I-Afganistani
|
|
9
|
+
AG: Antigua no Barbuda
|
|
10
|
+
AI: Anguilla
|
|
11
|
+
AL: I-Albaniya
|
|
12
|
+
AM: Armenia
|
|
13
|
+
AO: I-Angola
|
|
14
|
+
AQ: Antarctica
|
|
15
|
+
AR: I-Argentina
|
|
16
|
+
AS: American Samoa
|
|
17
|
+
AT: I-Ostriya
|
|
18
|
+
AU: I-Ostreliya
|
|
19
|
+
AW: Aruba
|
|
20
|
+
AX: Åland Islands
|
|
21
|
+
AZ: I-Azerbayijani
|
|
22
|
+
BA: IBhosniya neHerzegovina
|
|
23
|
+
BB: I-Barbados
|
|
24
|
+
BD: Isi-Bhangladeshi
|
|
25
|
+
BE: Isi-Bhelijiyamu
|
|
26
|
+
BF: IBukhina Faso
|
|
27
|
+
BG: IBulgariya
|
|
28
|
+
BH: Bahrain
|
|
29
|
+
BI: IBurundi
|
|
30
|
+
BJ: IBenini
|
|
31
|
+
BL: Saint Barthélemy
|
|
32
|
+
BM: Bermuda
|
|
33
|
+
BN: Brunei Darussalam
|
|
34
|
+
BO: I Boliviya
|
|
35
|
+
BQ: Bonaire, Sint Eustatius and Saba
|
|
36
|
+
BR: IBrazili
|
|
37
|
+
BS: Bahamas
|
|
38
|
+
BT: Bhutan
|
|
39
|
+
BV: Bouvet Island
|
|
40
|
+
BW: IButswana
|
|
41
|
+
BY: IBelarusi
|
|
42
|
+
BZ: Belize
|
|
43
|
+
CA: I Khanada
|
|
44
|
+
CC: Cocos (Keeling) Islands
|
|
45
|
+
CD: Congo, The Democratic Republic of the
|
|
46
|
+
CF: Central African Republic
|
|
47
|
+
CG: Congo
|
|
48
|
+
CH: I-Switzerland
|
|
49
|
+
CI: Côte d'Ivoire
|
|
50
|
+
CK: Cook Islands
|
|
51
|
+
CL: I-Chile
|
|
52
|
+
CM: IKamerooni
|
|
53
|
+
CN: Isi-Shayina
|
|
54
|
+
CO: IKolombiya
|
|
55
|
+
CR: Costa Rica
|
|
56
|
+
CU: Cuba
|
|
57
|
+
CV: Cabo Verde
|
|
58
|
+
CW: Curaçao
|
|
59
|
+
CX: Christmas Island
|
|
60
|
+
CY: Cyprus
|
|
61
|
+
CZ: Czechia
|
|
62
|
+
DE: IJalimani
|
|
63
|
+
DJ: IJibuthi
|
|
64
|
+
DK: IDenimaki
|
|
65
|
+
DM: Dominica
|
|
66
|
+
DO: Ulawulo lokuziphatha kwe Dominikhani
|
|
67
|
+
DZ: IAljiriya
|
|
68
|
+
EC: Ecuador
|
|
69
|
+
EE: I-Estoniya
|
|
70
|
+
EG: IGibhithe
|
|
71
|
+
EH: Western Sahara
|
|
72
|
+
ER: I-Eritrea
|
|
73
|
+
ES: ISpeyini
|
|
74
|
+
ET: I-Ithiopia
|
|
75
|
+
FI: IFinlandi
|
|
76
|
+
FJ: IFiji
|
|
77
|
+
FK: Falkland Islands (Malvinas)
|
|
78
|
+
FM: Micronesia, Federated States of
|
|
79
|
+
FO: Faroe Islands
|
|
80
|
+
FR: IFulansi
|
|
81
|
+
GA: IGaboni
|
|
82
|
+
GB: Umbuso Ohlangeneyo
|
|
83
|
+
GD: I-Grenada
|
|
84
|
+
GE: Georgia
|
|
85
|
+
GF: French Guiana
|
|
86
|
+
GG: Guernsey
|
|
87
|
+
GH: IGana
|
|
88
|
+
GI: Gibraltar
|
|
89
|
+
GL: Greenland
|
|
90
|
+
GM: Gambia
|
|
91
|
+
GN: IGini
|
|
92
|
+
GP: Guadeloupe
|
|
93
|
+
GQ: IGini Enkabazwe
|
|
94
|
+
GR: IGreki
|
|
95
|
+
GS: South Georgia and the South Sandwich Islands
|
|
96
|
+
GT: I-Guwathemala
|
|
97
|
+
GU: Guam
|
|
98
|
+
GW: IGini Bisawu
|
|
99
|
+
GY: Guyana
|
|
100
|
+
HK: Hong Kong
|
|
101
|
+
HM: Heard Island and McDonald Islands
|
|
102
|
+
HN: I-Hondurasi
|
|
103
|
+
HR: IKrowati
|
|
104
|
+
HT: Haiti
|
|
105
|
+
HU: I-Hungariya
|
|
106
|
+
ID: I-Indonesia
|
|
107
|
+
IE: I-Ayilendi
|
|
108
|
+
IL: Isreyili
|
|
109
|
+
IM: Isle of Man
|
|
110
|
+
IN: India
|
|
111
|
+
IO: British Indian Ocean Territory
|
|
112
|
+
IQ: I-Iraki
|
|
113
|
+
IR: Iran, Islamic Republic of
|
|
114
|
+
IS: I-Ayisilandi
|
|
115
|
+
IT: ITaliya
|
|
116
|
+
JE: Jersey
|
|
117
|
+
JM: Jamaica
|
|
118
|
+
JO: Jordan
|
|
119
|
+
JP: IJaphani
|
|
120
|
+
KE: IKenya
|
|
121
|
+
KG: Kyrgyzstan
|
|
122
|
+
KH: Cambodia
|
|
123
|
+
KI: Kiribati
|
|
124
|
+
KM: IsiKhomorosi
|
|
125
|
+
KN: Saint Kitts and Nevis
|
|
126
|
+
KP: North Korea
|
|
127
|
+
KR: South Korea
|
|
128
|
+
KW: Kuwait
|
|
129
|
+
KY: Cayman Islands
|
|
130
|
+
KZ: Kazakhstan
|
|
131
|
+
LA: Lao People's Democratic Republic
|
|
132
|
+
LB: Lebanon
|
|
133
|
+
LC: Saint Lucia
|
|
134
|
+
LI: Liechtenstein
|
|
135
|
+
LK: Sri Lanka
|
|
136
|
+
LR: ILiberia
|
|
137
|
+
LS: OSotho
|
|
138
|
+
LT: ILithuwaniya
|
|
139
|
+
LU: I-Luxembourg
|
|
140
|
+
LV: ILatviya
|
|
141
|
+
LY: ILibiya
|
|
142
|
+
MA: IMorokho
|
|
143
|
+
MC: Monaco
|
|
144
|
+
MD: Moldova
|
|
145
|
+
ME: IMontenegro
|
|
146
|
+
MF: Saint Martin (French part)
|
|
147
|
+
MG: IMadagasika
|
|
148
|
+
MH: Marshall Islands
|
|
149
|
+
MK: North Macedonia
|
|
150
|
+
ML: IMali
|
|
151
|
+
MM: Myanmar
|
|
152
|
+
MN: Mongolia
|
|
153
|
+
MO: Macao
|
|
154
|
+
MP: Northern Mariana Islands
|
|
155
|
+
MQ: Martinique
|
|
156
|
+
MR: IMoritaniya
|
|
157
|
+
MS: Montserrat
|
|
158
|
+
MT: IMalta
|
|
159
|
+
MU: IMorishisi
|
|
160
|
+
MV: Maldives
|
|
161
|
+
MW: IMalawi
|
|
162
|
+
MX: IMekisiko
|
|
163
|
+
MY: Malaysia
|
|
164
|
+
MZ: IMozambiki
|
|
165
|
+
NA: INamibhiya
|
|
166
|
+
NC: New Caledonia
|
|
167
|
+
NE: INayighe
|
|
168
|
+
NF: Norfolk Island
|
|
169
|
+
NG: INigeria
|
|
170
|
+
NI: Nicaragua
|
|
171
|
+
NL: I-Netherlands
|
|
172
|
+
'NO': INoki
|
|
173
|
+
NP: Nepal
|
|
174
|
+
NR: Nauru
|
|
175
|
+
NU: Niue
|
|
176
|
+
NZ: INyuzilandi
|
|
177
|
+
OM: Oman
|
|
178
|
+
PA: Panama
|
|
179
|
+
PE: I-Peru
|
|
180
|
+
PF: French Polynesia
|
|
181
|
+
PG: Papua New Guinea
|
|
182
|
+
PH: Philippines
|
|
183
|
+
PK: IPakistani
|
|
184
|
+
PL: IPolandi
|
|
185
|
+
PM: Saint Pierre and Miquelon
|
|
186
|
+
PN: Pitcairn
|
|
187
|
+
PR: Puerto Rico
|
|
188
|
+
PS: Palestine, State of
|
|
189
|
+
PT: IPhothugali
|
|
190
|
+
PW: Palau
|
|
191
|
+
PY: I-Paraguwayi
|
|
192
|
+
QA: Qatar
|
|
193
|
+
RE: IRiyunion
|
|
194
|
+
RO: I-Romaniya
|
|
195
|
+
RS: ISerbiya
|
|
196
|
+
RU: Russian Federation
|
|
197
|
+
RW: IRuwanda
|
|
198
|
+
SA: Saudi Arabia
|
|
199
|
+
SB: Solomon Islands
|
|
200
|
+
SC: IsiSeyisheli
|
|
201
|
+
SD: ISudan
|
|
202
|
+
SE: ISwidi
|
|
203
|
+
SG: Singapore
|
|
204
|
+
SH: Saint Helena, Ascension and Tristan da Cunha
|
|
205
|
+
SI: ISloveniya
|
|
206
|
+
SJ: Svalbard and Jan Mayen
|
|
207
|
+
SK: ISlovaki
|
|
208
|
+
SL: ISiera Liyoni
|
|
209
|
+
SM: USanti Marino
|
|
210
|
+
SN: ISenegal
|
|
211
|
+
SO: ISomalia
|
|
212
|
+
SR: Suriname
|
|
213
|
+
SS: ISudan yaseNingizimu
|
|
214
|
+
ST: ISawu Tome noPhrinitshipeyi
|
|
215
|
+
SV: El Salvador
|
|
216
|
+
SX: Sint Maarten (Dutch part)
|
|
217
|
+
SY: Syrian Arab Republic
|
|
218
|
+
SZ: Eswatini
|
|
219
|
+
TC: Turks and Caicos Islands
|
|
220
|
+
TD: ITshedi
|
|
221
|
+
TF: French Southern Territories
|
|
222
|
+
TG: ITogo
|
|
223
|
+
TH: I-Thayilandi
|
|
224
|
+
TJ: Tajikistan
|
|
225
|
+
TK: Tokelau
|
|
226
|
+
TL: Timor-Leste
|
|
227
|
+
TM: Turkmenistan
|
|
228
|
+
TN: ITunisia
|
|
229
|
+
TO: Tonga
|
|
230
|
+
TR: ITheki
|
|
231
|
+
TT: I-Trinidad ne Tobago
|
|
232
|
+
TV: Tuvalu
|
|
233
|
+
TW: I-Tayiwani
|
|
234
|
+
TZ: ITanzania
|
|
235
|
+
UA: I-Yukreyini
|
|
236
|
+
UG: IYuganda
|
|
237
|
+
UM: United States Minor Outlying Islands
|
|
238
|
+
US: United States
|
|
239
|
+
UY: I-Uruguwayi
|
|
240
|
+
UZ: Uzbekistan
|
|
241
|
+
VA: Holy See (Vatican City State)
|
|
242
|
+
VC: Saint Vincent and the Grenadines
|
|
243
|
+
VE: I-Venezuwela
|
|
244
|
+
VG: Virgin Islands, British
|
|
245
|
+
VI: Virgin Islands, U.S.
|
|
246
|
+
VN: IViyetnami
|
|
247
|
+
VU: Vanuatu
|
|
248
|
+
WF: Wallis and Futuna
|
|
249
|
+
WS: Samoa
|
|
250
|
+
YE: IYemen
|
|
251
|
+
YT: IMayotte
|
|
252
|
+
ZA: IRiphabliki yaseNingizimu Afrika
|
|
253
|
+
ZM: IZambiya
|
|
254
|
+
ZW: IZimbabwe
|
data/lib/countries/data.rb
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module ISO3166
|
|
2
4
|
# Handles building the in memory store of countries data
|
|
3
5
|
class Data
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
@cache_dir = [File.dirname(__FILE__), 'cache']
|
|
7
|
+
@cache = {}
|
|
8
|
+
@loaded_country_codes = []
|
|
9
|
+
@registered_data = {}
|
|
10
|
+
@mutex = Mutex.new
|
|
8
11
|
|
|
9
12
|
def initialize(alpha2)
|
|
10
13
|
@alpha2 = alpha2.to_s.upcase
|
|
@@ -15,30 +18,23 @@ module ISO3166
|
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
class << self
|
|
18
|
-
def cache_dir
|
|
19
|
-
@@cache_dir
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def cache_dir=(value)
|
|
23
|
-
@@cache_dir = value
|
|
24
|
-
end
|
|
25
21
|
|
|
26
22
|
# Registers a new Country with custom data.
|
|
27
23
|
# If you are overriding an existing country, this does not perform a deep merge so you will need to __bring in all data you wish to be available__.
|
|
28
24
|
# Overriding an existing country will also remove it from the internal management of translations.
|
|
29
25
|
def register(data)
|
|
30
26
|
alpha2 = data[:alpha2].upcase
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
@registered_data[alpha2] = deep_stringify_keys(data)
|
|
28
|
+
@registered_data[alpha2]['translations'] = \
|
|
33
29
|
Translations.new.merge(data['translations'] || {})
|
|
34
|
-
|
|
30
|
+
@cache = cache.merge(@registered_data)
|
|
35
31
|
end
|
|
36
32
|
|
|
37
33
|
# Removes a country from the loaded data
|
|
38
34
|
def unregister(alpha2)
|
|
39
35
|
alpha2 = alpha2.to_s.upcase
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
@cache.delete(alpha2)
|
|
37
|
+
@registered_data.delete(alpha2)
|
|
42
38
|
end
|
|
43
39
|
|
|
44
40
|
def cache
|
|
@@ -47,29 +43,41 @@ module ISO3166
|
|
|
47
43
|
|
|
48
44
|
# Resets the loaded data and cache
|
|
49
45
|
def reset
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
@cache = {}
|
|
47
|
+
@registered_data = {}
|
|
52
48
|
ISO3166.configuration.loaded_locales = []
|
|
53
49
|
end
|
|
54
50
|
|
|
55
51
|
def codes
|
|
56
52
|
load_data!
|
|
57
|
-
|
|
53
|
+
cached_codes
|
|
58
54
|
end
|
|
59
55
|
|
|
60
56
|
def update_cache
|
|
61
57
|
load_data!
|
|
62
58
|
sync_translations!
|
|
63
|
-
|
|
59
|
+
@cache
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def loaded_codes
|
|
63
|
+
load_data!
|
|
64
|
+
@loaded_country_codes
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def datafile_path(file_array)
|
|
68
|
+
File.join([@cache_dir] + file_array)
|
|
64
69
|
end
|
|
65
70
|
|
|
71
|
+
private
|
|
72
|
+
|
|
66
73
|
def load_data!
|
|
67
|
-
return
|
|
74
|
+
return @cache unless load_required?
|
|
75
|
+
|
|
68
76
|
synchronized do
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
@cache = load_cache %w[countries.json]
|
|
78
|
+
@loaded_country_codes = @cache.keys
|
|
79
|
+
@cache = @cache.merge(@registered_data)
|
|
80
|
+
@cache
|
|
73
81
|
end
|
|
74
82
|
end
|
|
75
83
|
|
|
@@ -85,11 +93,9 @@ module ISO3166
|
|
|
85
93
|
end
|
|
86
94
|
end
|
|
87
95
|
|
|
88
|
-
private
|
|
89
|
-
|
|
90
96
|
def synchronized(&block)
|
|
91
97
|
if use_mutex?
|
|
92
|
-
|
|
98
|
+
@mutex.synchronize(&block)
|
|
93
99
|
else
|
|
94
100
|
block.call
|
|
95
101
|
end
|
|
@@ -102,17 +108,17 @@ module ISO3166
|
|
|
102
108
|
|
|
103
109
|
def load_required?
|
|
104
110
|
synchronized do
|
|
105
|
-
|
|
111
|
+
@cache.empty?
|
|
106
112
|
end
|
|
107
113
|
end
|
|
108
114
|
|
|
109
|
-
def
|
|
110
|
-
|
|
115
|
+
def cached_codes
|
|
116
|
+
@cache.keys
|
|
111
117
|
end
|
|
112
118
|
|
|
113
119
|
# Codes that we have translations for in dataset
|
|
114
120
|
def internal_codes
|
|
115
|
-
|
|
121
|
+
@loaded_country_codes - @registered_data.keys
|
|
116
122
|
end
|
|
117
123
|
|
|
118
124
|
def cache_flush_required?
|
|
@@ -139,9 +145,9 @@ module ISO3166
|
|
|
139
145
|
synchronized do
|
|
140
146
|
locale_names = load_cache(['locales', "#{locale}.json"])
|
|
141
147
|
internal_codes.each do |alpha2|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
@cache[alpha2]['translations'] ||= Translations.new
|
|
149
|
+
@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
|
|
150
|
+
@cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
|
|
145
151
|
end
|
|
146
152
|
ISO3166.configuration.loaded_locales << locale
|
|
147
153
|
end
|
|
@@ -150,8 +156,8 @@ module ISO3166
|
|
|
150
156
|
def unload_translations(locale)
|
|
151
157
|
synchronized do
|
|
152
158
|
internal_codes.each do |alpha2|
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
@cache[alpha2]['translations'].delete(locale)
|
|
160
|
+
@cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
|
|
155
161
|
end
|
|
156
162
|
ISO3166.configuration.loaded_locales.delete(locale)
|
|
157
163
|
end
|
|
@@ -162,16 +168,13 @@ module ISO3166
|
|
|
162
168
|
File.exist?(file_path) ? JSON.parse(File.binread(file_path)) : {}
|
|
163
169
|
end
|
|
164
170
|
|
|
165
|
-
def datafile_path(file_array)
|
|
166
|
-
File.join([@@cache_dir] + file_array)
|
|
167
|
-
end
|
|
168
|
-
|
|
169
171
|
def deep_stringify_keys(data)
|
|
170
172
|
data.transform_keys!(&:to_s)
|
|
171
173
|
data.transform_values! do |v|
|
|
172
174
|
v.is_a?(Hash) ? deep_stringify_keys(v) : v
|
|
173
175
|
end
|
|
174
|
-
|
|
176
|
+
|
|
177
|
+
data
|
|
175
178
|
end
|
|
176
179
|
end
|
|
177
180
|
end
|
data/lib/countries/global.rb
CHANGED
data/lib/countries/iso3166.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'yaml'
|
|
2
4
|
require 'json'
|
|
3
|
-
require 'i18n_data'
|
|
4
5
|
|
|
5
6
|
require 'countries/kwarg_struct'
|
|
6
7
|
require 'countries/configuration'
|
|
@@ -8,6 +9,7 @@ require 'countries/data'
|
|
|
8
9
|
require 'countries/structure'
|
|
9
10
|
require 'countries/translations'
|
|
10
11
|
require 'countries/country/class_methods'
|
|
12
|
+
require 'countries/country/finder_methods'
|
|
11
13
|
require 'countries/country/emoji'
|
|
12
14
|
require 'countries/country'
|
|
13
15
|
require 'countries/subdivision'
|
data/lib/countries/mongoid.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'uri'
|
|
2
4
|
require 'net/http'
|
|
3
5
|
require 'nokogiri'
|
|
@@ -19,19 +21,17 @@ module Sources
|
|
|
19
21
|
def download_folder(type)
|
|
20
22
|
folder = File.join(ISO3166_ROOT_PATH, 'tmp', 'cldr', 'trunk', 'common', type)
|
|
21
23
|
FileUtils.mkdir_p(folder)
|
|
22
|
-
url = URI.parse("https://api.github.com/repos/unicode-org/cldr/contents/common
|
|
24
|
+
url = URI.parse("https://api.github.com/repos/unicode-org/cldr/contents/common/#{type}")
|
|
23
25
|
path_listing = JSON.parse(Net::HTTP.get_response(url).body)
|
|
24
26
|
path_listing.each do |path|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
next unless path['name'] =~ /\.xml$/
|
|
28
|
+
|
|
29
|
+
File.open(File.join(folder, path['name']), 'w') do |f|
|
|
30
|
+
raw_url = URI.parse(path['download_url'])
|
|
31
|
+
f.write(Net::HTTP.get_response(raw_url).body)
|
|
30
32
|
end
|
|
31
33
|
end
|
|
32
34
|
end
|
|
33
|
-
|
|
34
35
|
end
|
|
35
36
|
end
|
|
36
37
|
end
|
|
37
|
-
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sources
|
|
2
4
|
module CLDR
|
|
3
5
|
# Auxiliary Subdivision class to support loading Unicode CLDR data to update local files
|
|
4
6
|
class Subdivision
|
|
5
7
|
attr_reader :xml, :language_code
|
|
8
|
+
|
|
6
9
|
def initialize(language_code:, xml:)
|
|
7
10
|
@language_code = language_code
|
|
8
11
|
@xml = xml
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'active_support'
|
|
2
4
|
require 'active_support/core_ext/hash/deep_merge'
|
|
3
5
|
require 'nokogiri'
|
|
@@ -9,25 +11,29 @@ module Sources
|
|
|
9
11
|
class SubdivisionUpdater
|
|
10
12
|
def call
|
|
11
13
|
d = Dir['./tmp/cldr/trunk/common/subdivisions/*.xml']
|
|
12
|
-
loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
|
|
13
|
-
d.each
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
@loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
|
|
15
|
+
d.each { |file_path| update_locale(file_path) }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def update_locale(file_path)
|
|
19
|
+
language_data = Nokogiri::XML(File.read(file_path))
|
|
20
|
+
language_code = File.basename(file_path, '.*')
|
|
21
|
+
subdivisions = language_data.css('subdivision')
|
|
22
|
+
return if subdivisions.empty?
|
|
23
|
+
|
|
24
|
+
last_country_code_seen = nil
|
|
19
25
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
last_country_code_seen = subdivision.country_code
|
|
26
|
+
subdivisions.each_with_index do |subdivision, index|
|
|
27
|
+
subdivision = Sources::CLDR::Subdivision.new(language_code: language_code, xml: subdivision)
|
|
28
|
+
data = @loader.load(subdivision.country_code)
|
|
29
|
+
data[subdivision.code] ||= {}
|
|
30
|
+
data[subdivision.code] = data[subdivision.code].deep_merge(subdivision.to_h)
|
|
31
|
+
if (last_country_code_seen && last_country_code_seen != subdivision.country_code) ||
|
|
32
|
+
index == subdivisions.size - 1
|
|
33
|
+
puts "Updated #{subdivision.country_code} with language_code #{language_code}"
|
|
34
|
+
@loader.save(subdivision.country_code, data)
|
|
30
35
|
end
|
|
36
|
+
last_country_code_seen = subdivision.country_code
|
|
31
37
|
end
|
|
32
38
|
end
|
|
33
39
|
end
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sources
|
|
2
4
|
# Support code to allow updating subdivision data from the Unicode CLDR repository
|
|
3
5
|
module Local
|
|
4
6
|
# Loader for locally-cached data, to allow merging Unicode CLDR data with existing local data
|
|
5
7
|
class CachedLoader
|
|
6
8
|
attr_reader :klass
|
|
9
|
+
|
|
7
10
|
def initialize(klass)
|
|
8
11
|
@klass = klass
|
|
9
12
|
@loaded_countries = {}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sources
|
|
2
4
|
module Local
|
|
3
5
|
# Auxiliary Subdivision class to support loading the local subdivision data to be updated with Unicode CLDR data
|
|
4
6
|
class Subdivision
|
|
5
7
|
attr_reader :code
|
|
8
|
+
|
|
6
9
|
def initialize(code)
|
|
7
10
|
@code = code
|
|
8
11
|
end
|
|
@@ -16,8 +19,8 @@ module Sources
|
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
def save(data)
|
|
19
|
-
File.
|
|
20
|
-
rescue
|
|
22
|
+
File.write(file_path, data.to_yaml)
|
|
23
|
+
rescue StandardError
|
|
21
24
|
puts "failed to read #{file}: #{$ERROR_INFO}"
|
|
22
25
|
end
|
|
23
26
|
|
data/lib/countries/sources.rb
CHANGED
data/lib/countries/structure.rb
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module ISO3166
|
|
2
|
-
Subdivision
|
|
3
|
-
:name,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
class Subdivision
|
|
5
|
+
attr_accessor :name,
|
|
6
|
+
:code,
|
|
7
|
+
:unofficial_names,
|
|
8
|
+
:geo,
|
|
9
|
+
:translations,
|
|
10
|
+
:comments,
|
|
11
|
+
:type
|
|
12
|
+
|
|
13
|
+
def initialize(attrs)
|
|
14
|
+
attrs.each_pair do |k, v|
|
|
15
|
+
send "#{k}=", v
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def [](attr_name)
|
|
20
|
+
send attr_name
|
|
21
|
+
end
|
|
22
|
+
end
|
|
10
23
|
end
|