twitter_cldr 6.6.0 → 6.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1115) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +13 -13
  4. data/Rakefile +16 -1
  5. data/lib/twitter_cldr/formatters/formatter.rb +0 -4
  6. data/lib/twitter_cldr/formatters/list_formatter.rb +7 -1
  7. data/lib/twitter_cldr/resources/calendars_importer.rb +220 -0
  8. data/lib/twitter_cldr/resources/language_codes_importer.rb +1 -1
  9. data/lib/twitter_cldr/resources/list_formats_importer.rb +140 -0
  10. data/lib/twitter_cldr/resources/locales_resources_importer.rb +0 -28
  11. data/lib/twitter_cldr/resources/requirements/cldr_requirement.rb +21 -11
  12. data/lib/twitter_cldr/resources/requirements/unicode_requirement.rb +7 -3
  13. data/lib/twitter_cldr/resources/segment_dictionaries_importer.rb +6 -3
  14. data/lib/twitter_cldr/resources/timezone_tests_importer.rb +8 -0
  15. data/lib/twitter_cldr/resources/units_importer.rb +134 -0
  16. data/lib/twitter_cldr/resources.rb +6 -0
  17. data/lib/twitter_cldr/shared/calendar.rb +1 -17
  18. data/lib/twitter_cldr/shared/casefolder.rb +53 -48
  19. data/lib/twitter_cldr/shared/unit.rb +2 -4
  20. data/lib/twitter_cldr/tokenizers/calendars/date_tokenizer.rb +0 -1
  21. data/lib/twitter_cldr/tokenizers/tokenizer.rb +7 -12
  22. data/lib/twitter_cldr/tokenizers.rb +0 -1
  23. data/lib/twitter_cldr/version.rb +1 -1
  24. data/lib/twitter_cldr/versions.rb +3 -3
  25. data/resources/locales/af/calendars.yml +1 -0
  26. data/resources/locales/af/currencies.yml +3 -6
  27. data/resources/locales/af/languages.yml +2 -1
  28. data/resources/locales/af/lists.yml +18 -3
  29. data/resources/locales/af/numbers.yml +1 -0
  30. data/resources/locales/af/timezones.yml +3 -0
  31. data/resources/locales/af/units.yml +513 -125
  32. data/resources/locales/ar/calendars.yml +1 -0
  33. data/resources/locales/ar/currencies.yml +2 -4
  34. data/resources/locales/ar/languages.yml +1 -1
  35. data/resources/locales/ar/lists.yml +12 -0
  36. data/resources/locales/ar/numbers.yml +1 -0
  37. data/resources/locales/ar/timezones.yml +3 -0
  38. data/resources/locales/ar/units.yml +263 -122
  39. data/resources/locales/az/calendars.yml +1 -0
  40. data/resources/locales/az/currencies.yml +1 -3
  41. data/resources/locales/az/languages.yml +2 -2
  42. data/resources/locales/az/lists.yml +8 -0
  43. data/resources/locales/az/numbers.yml +1 -0
  44. data/resources/locales/az/timezones.yml +3 -0
  45. data/resources/locales/az/units.yml +116 -44
  46. data/resources/locales/be/calendars.yml +2 -1
  47. data/resources/locales/be/currencies.yml +7 -5
  48. data/resources/locales/be/languages.yml +2 -1
  49. data/resources/locales/be/lists.yml +18 -3
  50. data/resources/locales/be/numbers.yml +5 -4
  51. data/resources/locales/be/timezones.yml +3 -0
  52. data/resources/locales/be/units.yml +37 -7
  53. data/resources/locales/bg/calendars.yml +1 -0
  54. data/resources/locales/bg/currencies.yml +1 -4
  55. data/resources/locales/bg/languages.yml +1 -1
  56. data/resources/locales/bg/lists.yml +17 -2
  57. data/resources/locales/bg/numbers.yml +1 -0
  58. data/resources/locales/bg/timezones.yml +3 -0
  59. data/resources/locales/bg/units.yml +24 -15
  60. data/resources/locales/bn/calendars.yml +1 -0
  61. data/resources/locales/bn/currencies.yml +1 -3
  62. data/resources/locales/bn/languages.yml +1 -1
  63. data/resources/locales/bn/lists.yml +14 -2
  64. data/resources/locales/bn/numbers.yml +1 -0
  65. data/resources/locales/bn/timezones.yml +3 -0
  66. data/resources/locales/bn/units.yml +126 -24
  67. data/resources/locales/bo/calendars.yml +64 -13
  68. data/resources/locales/bo/currencies.yml +1 -7
  69. data/resources/locales/bo/lists.yml +42 -7
  70. data/resources/locales/bo/numbers.yml +1 -0
  71. data/resources/locales/bo/units.yml +8 -16
  72. data/resources/locales/bs/calendars.yml +2 -2
  73. data/resources/locales/bs/currencies.yml +1 -3
  74. data/resources/locales/bs/fields.yml +2 -2
  75. data/resources/locales/bs/languages.yml +5 -1
  76. data/resources/locales/bs/lists.yml +18 -3
  77. data/resources/locales/bs/numbers.yml +1 -0
  78. data/resources/locales/bs/timezones.yml +3 -0
  79. data/resources/locales/bs/units.yml +36 -20
  80. data/resources/locales/ca/calendars.yml +1 -0
  81. data/resources/locales/ca/currencies.yml +79 -81
  82. data/resources/locales/ca/languages.yml +1 -1
  83. data/resources/locales/ca/lists.yml +12 -2
  84. data/resources/locales/ca/numbers.yml +1 -0
  85. data/resources/locales/ca/territories.yml +7 -7
  86. data/resources/locales/ca/timezones.yml +3 -0
  87. data/resources/locales/ca/units.yml +52 -68
  88. data/resources/locales/cs/calendars.yml +1 -0
  89. data/resources/locales/cs/currencies.yml +1 -1
  90. data/resources/locales/cs/languages.yml +1 -1
  91. data/resources/locales/cs/lists.yml +2 -0
  92. data/resources/locales/cs/numbers.yml +1 -0
  93. data/resources/locales/cs/timezones.yml +3 -0
  94. data/resources/locales/cs/units.yml +417 -190
  95. data/resources/locales/cy/calendars.yml +3 -0
  96. data/resources/locales/cy/currencies.yml +1 -4
  97. data/resources/locales/cy/fields.yml +3 -3
  98. data/resources/locales/cy/languages.yml +2 -2
  99. data/resources/locales/cy/lists.yml +12 -2
  100. data/resources/locales/cy/numbers.yml +1 -0
  101. data/resources/locales/cy/timezones.yml +3 -0
  102. data/resources/locales/cy/units.yml +339 -111
  103. data/resources/locales/da/calendars.yml +2 -1
  104. data/resources/locales/da/currencies.yml +6 -8
  105. data/resources/locales/da/languages.yml +1 -1
  106. data/resources/locales/da/lists.yml +10 -1
  107. data/resources/locales/da/numbers.yml +1 -0
  108. data/resources/locales/da/timezones.yml +3 -0
  109. data/resources/locales/da/units.yml +101 -49
  110. data/resources/locales/de/calendars.yml +5 -0
  111. data/resources/locales/de/currencies.yml +1 -1
  112. data/resources/locales/de/languages.yml +2 -2
  113. data/resources/locales/de/lists.yml +18 -3
  114. data/resources/locales/de/numbers.yml +1 -0
  115. data/resources/locales/de/rbnf.yml +65 -2
  116. data/resources/locales/de/timezones.yml +3 -0
  117. data/resources/locales/de/units.yml +181 -108
  118. data/resources/locales/de-AT/calendars.yml +3 -0
  119. data/resources/locales/de-AT/currencies.yml +1 -1
  120. data/resources/locales/de-AT/languages.yml +2 -2
  121. data/resources/locales/de-AT/lists.yml +18 -3
  122. data/resources/locales/de-AT/numbers.yml +1 -0
  123. data/resources/locales/de-AT/timezones.yml +3 -0
  124. data/resources/locales/de-AT/units.yml +181 -108
  125. data/resources/locales/de-CH/calendars.yml +5 -0
  126. data/resources/locales/de-CH/currencies.yml +1 -1
  127. data/resources/locales/de-CH/languages.yml +2 -2
  128. data/resources/locales/de-CH/lists.yml +18 -3
  129. data/resources/locales/de-CH/numbers.yml +1 -0
  130. data/resources/locales/de-CH/timezones.yml +3 -0
  131. data/resources/locales/de-CH/units.yml +183 -110
  132. data/resources/locales/el/calendars.yml +10 -9
  133. data/resources/locales/el/currencies.yml +3 -5
  134. data/resources/locales/el/fields.yml +4 -0
  135. data/resources/locales/el/languages.yml +4 -4
  136. data/resources/locales/el/lists.yml +14 -2
  137. data/resources/locales/el/numbers.yml +1 -0
  138. data/resources/locales/el/timezones.yml +3 -0
  139. data/resources/locales/el/units.yml +143 -118
  140. data/resources/locales/en/calendars.yml +90 -11
  141. data/resources/locales/en/currencies.yml +1 -5
  142. data/resources/locales/en/languages.yml +2 -2
  143. data/resources/locales/en/lists.yml +12 -2
  144. data/resources/locales/en/numbers.yml +1 -0
  145. data/resources/locales/en/timezones.yml +3 -0
  146. data/resources/locales/en/units.yml +42 -30
  147. data/resources/locales/en-001/calendars.yml +89 -11
  148. data/resources/locales/en-001/currencies.yml +1 -5
  149. data/resources/locales/en-001/languages.yml +2 -2
  150. data/resources/locales/en-001/lists.yml +8 -0
  151. data/resources/locales/en-001/numbers.yml +1 -0
  152. data/resources/locales/en-001/timezones.yml +3 -0
  153. data/resources/locales/en-001/units.yml +41 -27
  154. data/resources/locales/en-150/calendars.yml +89 -11
  155. data/resources/locales/en-150/currencies.yml +1 -5
  156. data/resources/locales/en-150/languages.yml +2 -2
  157. data/resources/locales/en-150/lists.yml +8 -0
  158. data/resources/locales/en-150/numbers.yml +1 -0
  159. data/resources/locales/en-150/timezones.yml +3 -0
  160. data/resources/locales/en-150/units.yml +41 -27
  161. data/resources/locales/en-AU/calendars.yml +1 -0
  162. data/resources/locales/en-AU/currencies.yml +0 -4
  163. data/resources/locales/en-AU/languages.yml +4 -4
  164. data/resources/locales/en-AU/lists.yml +8 -0
  165. data/resources/locales/en-AU/numbers.yml +1 -0
  166. data/resources/locales/en-AU/timezones.yml +3 -0
  167. data/resources/locales/en-AU/units.yml +49 -35
  168. data/resources/locales/en-CA/calendars.yml +117 -44
  169. data/resources/locales/en-CA/currencies.yml +12 -17
  170. data/resources/locales/en-CA/fields.yml +110 -113
  171. data/resources/locales/en-CA/languages.yml +2 -2
  172. data/resources/locales/en-CA/lists.yml +8 -0
  173. data/resources/locales/en-CA/numbers.yml +2 -1
  174. data/resources/locales/en-CA/territories.yml +19 -19
  175. data/resources/locales/en-CA/timezones.yml +129 -40
  176. data/resources/locales/en-CA/units.yml +190 -178
  177. data/resources/locales/en-GB/calendars.yml +2 -0
  178. data/resources/locales/en-GB/currencies.yml +1 -5
  179. data/resources/locales/en-GB/languages.yml +2 -2
  180. data/resources/locales/en-GB/lists.yml +8 -0
  181. data/resources/locales/en-GB/numbers.yml +1 -0
  182. data/resources/locales/en-GB/timezones.yml +3 -0
  183. data/resources/locales/en-GB/units.yml +41 -27
  184. data/resources/locales/en-IE/calendars.yml +89 -11
  185. data/resources/locales/en-IE/currencies.yml +1 -5
  186. data/resources/locales/en-IE/languages.yml +2 -2
  187. data/resources/locales/en-IE/lists.yml +8 -0
  188. data/resources/locales/en-IE/numbers.yml +1 -0
  189. data/resources/locales/en-IE/timezones.yml +3 -0
  190. data/resources/locales/en-IE/units.yml +41 -27
  191. data/resources/locales/en-IN/calendars.yml +89 -11
  192. data/resources/locales/en-IN/currencies.yml +1 -5
  193. data/resources/locales/en-IN/languages.yml +2 -2
  194. data/resources/locales/en-IN/lists.yml +8 -0
  195. data/resources/locales/en-IN/numbers.yml +25 -24
  196. data/resources/locales/en-IN/timezones.yml +3 -0
  197. data/resources/locales/en-IN/units.yml +41 -27
  198. data/resources/locales/en-NZ/calendars.yml +89 -11
  199. data/resources/locales/en-NZ/currencies.yml +1 -5
  200. data/resources/locales/en-NZ/languages.yml +1 -1
  201. data/resources/locales/en-NZ/lists.yml +8 -0
  202. data/resources/locales/en-NZ/numbers.yml +1 -0
  203. data/resources/locales/en-NZ/timezones.yml +3 -0
  204. data/resources/locales/en-NZ/units.yml +41 -27
  205. data/resources/locales/en-SG/calendars.yml +89 -11
  206. data/resources/locales/en-SG/currencies.yml +1 -5
  207. data/resources/locales/en-SG/languages.yml +2 -2
  208. data/resources/locales/en-SG/lists.yml +8 -0
  209. data/resources/locales/en-SG/numbers.yml +1 -0
  210. data/resources/locales/en-SG/timezones.yml +3 -0
  211. data/resources/locales/en-SG/units.yml +41 -27
  212. data/resources/locales/en-US/calendars.yml +90 -11
  213. data/resources/locales/en-US/currencies.yml +1 -5
  214. data/resources/locales/en-US/languages.yml +2 -2
  215. data/resources/locales/en-US/lists.yml +12 -2
  216. data/resources/locales/en-US/numbers.yml +1 -0
  217. data/resources/locales/en-US/timezones.yml +3 -0
  218. data/resources/locales/en-US/units.yml +42 -30
  219. data/resources/locales/en-ZA/calendars.yml +89 -11
  220. data/resources/locales/en-ZA/currencies.yml +1 -5
  221. data/resources/locales/en-ZA/languages.yml +2 -2
  222. data/resources/locales/en-ZA/lists.yml +8 -0
  223. data/resources/locales/en-ZA/numbers.yml +1 -0
  224. data/resources/locales/en-ZA/timezones.yml +3 -0
  225. data/resources/locales/en-ZA/units.yml +41 -27
  226. data/resources/locales/eo/calendars.yml +78 -11
  227. data/resources/locales/eo/currencies.yml +1 -7
  228. data/resources/locales/eo/lists.yml +42 -7
  229. data/resources/locales/eo/numbers.yml +1 -0
  230. data/resources/locales/eo/units.yml +274 -102
  231. data/resources/locales/es/calendars.yml +3 -2
  232. data/resources/locales/es/currencies.yml +21 -22
  233. data/resources/locales/es/fields.yml +8 -8
  234. data/resources/locales/es/languages.yml +3 -3
  235. data/resources/locales/es/lists.yml +18 -3
  236. data/resources/locales/es/numbers.yml +1 -0
  237. data/resources/locales/es/plural_rules.yml +2 -1
  238. data/resources/locales/es/plurals.yml +4 -1
  239. data/resources/locales/es/timezones.yml +6 -3
  240. data/resources/locales/es/units.yml +396 -34
  241. data/resources/locales/es-419/calendars.yml +39 -38
  242. data/resources/locales/es-419/currencies.yml +19 -20
  243. data/resources/locales/es-419/languages.yml +2 -2
  244. data/resources/locales/es-419/lists.yml +18 -3
  245. data/resources/locales/es-419/numbers.yml +1 -0
  246. data/resources/locales/es-419/plural_rules.yml +2 -1
  247. data/resources/locales/es-419/plurals.yml +4 -1
  248. data/resources/locales/es-419/timezones.yml +6 -3
  249. data/resources/locales/es-419/units.yml +370 -31
  250. data/resources/locales/es-AR/calendars.yml +33 -32
  251. data/resources/locales/es-AR/currencies.yml +19 -20
  252. data/resources/locales/es-AR/languages.yml +2 -2
  253. data/resources/locales/es-AR/lists.yml +18 -3
  254. data/resources/locales/es-AR/numbers.yml +1 -0
  255. data/resources/locales/es-AR/plural_rules.yml +2 -1
  256. data/resources/locales/es-AR/plurals.yml +4 -1
  257. data/resources/locales/es-AR/timezones.yml +6 -3
  258. data/resources/locales/es-AR/units.yml +370 -31
  259. data/resources/locales/es-CO/calendars.yml +24 -23
  260. data/resources/locales/es-CO/currencies.yml +19 -20
  261. data/resources/locales/es-CO/languages.yml +2 -2
  262. data/resources/locales/es-CO/lists.yml +18 -3
  263. data/resources/locales/es-CO/numbers.yml +1 -0
  264. data/resources/locales/es-CO/plural_rules.yml +2 -1
  265. data/resources/locales/es-CO/plurals.yml +4 -1
  266. data/resources/locales/es-CO/timezones.yml +6 -3
  267. data/resources/locales/es-CO/units.yml +368 -29
  268. data/resources/locales/es-MX/calendars.yml +35 -34
  269. data/resources/locales/es-MX/currencies.yml +17 -18
  270. data/resources/locales/es-MX/languages.yml +2 -2
  271. data/resources/locales/es-MX/lists.yml +18 -3
  272. data/resources/locales/es-MX/numbers.yml +1 -0
  273. data/resources/locales/es-MX/plural_rules.yml +2 -1
  274. data/resources/locales/es-MX/plurals.yml +4 -1
  275. data/resources/locales/es-MX/timezones.yml +4 -1
  276. data/resources/locales/es-MX/units.yml +368 -29
  277. data/resources/locales/es-US/calendars.yml +41 -40
  278. data/resources/locales/es-US/currencies.yml +19 -20
  279. data/resources/locales/es-US/fields.yml +3 -3
  280. data/resources/locales/es-US/languages.yml +9 -9
  281. data/resources/locales/es-US/lists.yml +18 -3
  282. data/resources/locales/es-US/numbers.yml +25 -24
  283. data/resources/locales/es-US/plural_rules.yml +2 -1
  284. data/resources/locales/es-US/plurals.yml +4 -1
  285. data/resources/locales/es-US/territories.yml +2 -2
  286. data/resources/locales/es-US/timezones.yml +8 -5
  287. data/resources/locales/es-US/units.yml +381 -42
  288. data/resources/locales/et/calendars.yml +15 -14
  289. data/resources/locales/et/currencies.yml +3 -6
  290. data/resources/locales/et/languages.yml +1 -0
  291. data/resources/locales/et/lists.yml +14 -2
  292. data/resources/locales/et/numbers.yml +7 -6
  293. data/resources/locales/et/timezones.yml +3 -0
  294. data/resources/locales/et/units.yml +48 -27
  295. data/resources/locales/eu/calendars.yml +3 -1
  296. data/resources/locales/eu/currencies.yml +612 -23
  297. data/resources/locales/eu/fields.yml +8 -0
  298. data/resources/locales/eu/languages.yml +12 -7
  299. data/resources/locales/eu/lists.yml +20 -3
  300. data/resources/locales/eu/numbers.yml +1 -0
  301. data/resources/locales/eu/timezones.yml +70 -1
  302. data/resources/locales/eu/units.yml +85 -13
  303. data/resources/locales/fa/calendars.yml +6 -5
  304. data/resources/locales/fa/currencies.yml +12 -12
  305. data/resources/locales/fa/languages.yml +2 -2
  306. data/resources/locales/fa/lists.yml +6 -0
  307. data/resources/locales/fa/numbers.yml +14 -13
  308. data/resources/locales/fa/territories.yml +1 -1
  309. data/resources/locales/fa/timezones.yml +7 -4
  310. data/resources/locales/fa/units.yml +296 -147
  311. data/resources/locales/fi/calendars.yml +1 -0
  312. data/resources/locales/fi/currencies.yml +1 -2
  313. data/resources/locales/fi/languages.yml +1 -1
  314. data/resources/locales/fi/lists.yml +18 -3
  315. data/resources/locales/fi/numbers.yml +1 -0
  316. data/resources/locales/fi/rbnf.yml +172 -0
  317. data/resources/locales/fi/timezones.yml +3 -0
  318. data/resources/locales/fi/units.yml +146 -84
  319. data/resources/locales/fil/calendars.yml +1 -0
  320. data/resources/locales/fil/currencies.yml +3 -5
  321. data/resources/locales/fil/fields.yml +24 -24
  322. data/resources/locales/fil/languages.yml +3 -2
  323. data/resources/locales/fil/lists.yml +16 -2
  324. data/resources/locales/fil/numbers.yml +1 -0
  325. data/resources/locales/fil/timezones.yml +4 -1
  326. data/resources/locales/fil/units.yml +56 -16
  327. data/resources/locales/fr/calendars.yml +1 -0
  328. data/resources/locales/fr/currencies.yml +1 -2
  329. data/resources/locales/fr/languages.yml +1 -1
  330. data/resources/locales/fr/lists.yml +12 -2
  331. data/resources/locales/fr/numbers.yml +1 -0
  332. data/resources/locales/fr/plural_rules.yml +2 -2
  333. data/resources/locales/fr/rbnf.yml +1 -1
  334. data/resources/locales/fr/timezones.yml +4 -1
  335. data/resources/locales/fr/units.yml +322 -103
  336. data/resources/locales/fr-BE/calendars.yml +1 -0
  337. data/resources/locales/fr-BE/currencies.yml +1 -2
  338. data/resources/locales/fr-BE/languages.yml +1 -1
  339. data/resources/locales/fr-BE/lists.yml +12 -2
  340. data/resources/locales/fr-BE/numbers.yml +1 -0
  341. data/resources/locales/fr-BE/plural_rules.yml +2 -2
  342. data/resources/locales/fr-BE/timezones.yml +4 -1
  343. data/resources/locales/fr-BE/units.yml +322 -103
  344. data/resources/locales/fr-CA/calendars.yml +1 -0
  345. data/resources/locales/fr-CA/currencies.yml +1 -2
  346. data/resources/locales/fr-CA/languages.yml +1 -1
  347. data/resources/locales/fr-CA/lists.yml +12 -2
  348. data/resources/locales/fr-CA/numbers.yml +1 -0
  349. data/resources/locales/fr-CA/plural_rules.yml +2 -2
  350. data/resources/locales/fr-CA/timezones.yml +3 -0
  351. data/resources/locales/fr-CA/units.yml +349 -124
  352. data/resources/locales/fr-CH/calendars.yml +1 -0
  353. data/resources/locales/fr-CH/currencies.yml +1 -2
  354. data/resources/locales/fr-CH/languages.yml +1 -1
  355. data/resources/locales/fr-CH/lists.yml +12 -2
  356. data/resources/locales/fr-CH/numbers.yml +1 -0
  357. data/resources/locales/fr-CH/plural_rules.yml +2 -2
  358. data/resources/locales/fr-CH/timezones.yml +4 -1
  359. data/resources/locales/fr-CH/units.yml +322 -103
  360. data/resources/locales/ga/calendars.yml +12 -7
  361. data/resources/locales/ga/currencies.yml +1 -3
  362. data/resources/locales/ga/fields.yml +5 -5
  363. data/resources/locales/ga/languages.yml +23 -22
  364. data/resources/locales/ga/lists.yml +8 -0
  365. data/resources/locales/ga/numbers.yml +2 -1
  366. data/resources/locales/ga/territories.yml +10 -10
  367. data/resources/locales/ga/timezones.yml +41 -60
  368. data/resources/locales/ga/units.yml +33 -31
  369. data/resources/locales/gl/calendars.yml +1 -0
  370. data/resources/locales/gl/currencies.yml +7 -7
  371. data/resources/locales/gl/languages.yml +2 -1
  372. data/resources/locales/gl/lists.yml +15 -2
  373. data/resources/locales/gl/numbers.yml +1 -0
  374. data/resources/locales/gl/timezones.yml +3 -0
  375. data/resources/locales/gl/units.yml +73 -14
  376. data/resources/locales/gu/calendars.yml +2 -1
  377. data/resources/locales/gu/currencies.yml +1 -4
  378. data/resources/locales/gu/languages.yml +1 -1
  379. data/resources/locales/gu/lists.yml +12 -1
  380. data/resources/locales/gu/numbers.yml +1 -0
  381. data/resources/locales/gu/timezones.yml +3 -0
  382. data/resources/locales/gu/units.yml +59 -24
  383. data/resources/locales/he/calendars.yml +3 -1
  384. data/resources/locales/he/currencies.yml +39 -24
  385. data/resources/locales/he/fields.yml +4 -0
  386. data/resources/locales/he/languages.yml +4 -2
  387. data/resources/locales/he/lists.yml +14 -1
  388. data/resources/locales/he/numbers.yml +1 -0
  389. data/resources/locales/he/timezones.yml +3 -0
  390. data/resources/locales/he/units.yml +60 -38
  391. data/resources/locales/hi/calendars.yml +1 -0
  392. data/resources/locales/hi/currencies.yml +1 -4
  393. data/resources/locales/hi/languages.yml +2 -2
  394. data/resources/locales/hi/lists.yml +18 -3
  395. data/resources/locales/hi/numbers.yml +1 -0
  396. data/resources/locales/hi/territories.yml +1 -1
  397. data/resources/locales/hi/timezones.yml +5 -1
  398. data/resources/locales/hi/units.yml +126 -23
  399. data/resources/locales/hr/calendars.yml +1 -0
  400. data/resources/locales/hr/currencies.yml +6 -6
  401. data/resources/locales/hr/languages.yml +1 -1
  402. data/resources/locales/hr/lists.yml +21 -3
  403. data/resources/locales/hr/numbers.yml +4 -3
  404. data/resources/locales/hr/timezones.yml +3 -0
  405. data/resources/locales/hr/units.yml +141 -85
  406. data/resources/locales/hu/calendars.yml +1 -0
  407. data/resources/locales/hu/currencies.yml +4 -5
  408. data/resources/locales/hu/languages.yml +3 -2
  409. data/resources/locales/hu/lists.yml +20 -3
  410. data/resources/locales/hu/numbers.yml +1 -0
  411. data/resources/locales/hu/timezones.yml +3 -0
  412. data/resources/locales/hu/units.yml +31 -27
  413. data/resources/locales/hy/calendars.yml +1 -0
  414. data/resources/locales/hy/currencies.yml +6 -4
  415. data/resources/locales/hy/languages.yml +2 -1
  416. data/resources/locales/hy/lists.yml +14 -2
  417. data/resources/locales/hy/numbers.yml +1 -0
  418. data/resources/locales/hy/timezones.yml +3 -0
  419. data/resources/locales/hy/units.yml +141 -110
  420. data/resources/locales/id/calendars.yml +3 -2
  421. data/resources/locales/id/currencies.yml +1 -3
  422. data/resources/locales/id/fields.yml +12 -3
  423. data/resources/locales/id/languages.yml +2 -1
  424. data/resources/locales/id/lists.yml +14 -2
  425. data/resources/locales/id/numbers.yml +1 -0
  426. data/resources/locales/id/timezones.yml +47 -0
  427. data/resources/locales/id/units.yml +64 -67
  428. data/resources/locales/is/calendars.yml +1 -0
  429. data/resources/locales/is/currencies.yml +4 -6
  430. data/resources/locales/is/fields.yml +0 -14
  431. data/resources/locales/is/languages.yml +2 -2
  432. data/resources/locales/is/lists.yml +13 -2
  433. data/resources/locales/is/numbers.yml +1 -0
  434. data/resources/locales/is/units.yml +134 -112
  435. data/resources/locales/it/calendars.yml +1 -0
  436. data/resources/locales/it/currencies.yml +2 -3
  437. data/resources/locales/it/languages.yml +1 -0
  438. data/resources/locales/it/lists.yml +18 -3
  439. data/resources/locales/it/numbers.yml +1 -0
  440. data/resources/locales/it/plural_rules.yml +2 -1
  441. data/resources/locales/it/plurals.yml +4 -1
  442. data/resources/locales/it/rbnf.yml +1 -1
  443. data/resources/locales/it/timezones.yml +3 -0
  444. data/resources/locales/it/units.yml +412 -19
  445. data/resources/locales/it-CH/calendars.yml +1 -0
  446. data/resources/locales/it-CH/currencies.yml +2 -3
  447. data/resources/locales/it-CH/languages.yml +1 -0
  448. data/resources/locales/it-CH/lists.yml +18 -3
  449. data/resources/locales/it-CH/numbers.yml +1 -0
  450. data/resources/locales/it-CH/plural_rules.yml +2 -1
  451. data/resources/locales/it-CH/plurals.yml +4 -1
  452. data/resources/locales/it-CH/timezones.yml +3 -0
  453. data/resources/locales/it-CH/units.yml +412 -19
  454. data/resources/locales/ja/calendars.yml +1 -0
  455. data/resources/locales/ja/currencies.yml +1 -2
  456. data/resources/locales/ja/languages.yml +1 -1
  457. data/resources/locales/ja/lists.yml +18 -3
  458. data/resources/locales/ja/numbers.yml +2 -1
  459. data/resources/locales/ja/timezones.yml +3 -0
  460. data/resources/locales/ja/units.yml +126 -20
  461. data/resources/locales/ka/calendars.yml +1 -0
  462. data/resources/locales/ka/currencies.yml +5 -3
  463. data/resources/locales/ka/languages.yml +1 -1
  464. data/resources/locales/ka/lists.yml +18 -3
  465. data/resources/locales/ka/numbers.yml +1 -0
  466. data/resources/locales/ka/timezones.yml +3 -0
  467. data/resources/locales/ka/units.yml +24 -10
  468. data/resources/locales/kk/calendars.yml +1 -0
  469. data/resources/locales/kk/currencies.yml +6 -4
  470. data/resources/locales/kk/languages.yml +3 -2
  471. data/resources/locales/kk/lists.yml +21 -3
  472. data/resources/locales/kk/numbers.yml +1 -0
  473. data/resources/locales/kk/timezones.yml +3 -0
  474. data/resources/locales/kk/units.yml +20 -6
  475. data/resources/locales/km/calendars.yml +1 -0
  476. data/resources/locales/km/currencies.yml +6 -4
  477. data/resources/locales/km/languages.yml +2 -1
  478. data/resources/locales/km/lists.yml +17 -2
  479. data/resources/locales/km/numbers.yml +1 -0
  480. data/resources/locales/km/timezones.yml +3 -0
  481. data/resources/locales/km/units.yml +30 -19
  482. data/resources/locales/kn/calendars.yml +1 -0
  483. data/resources/locales/kn/currencies.yml +4 -7
  484. data/resources/locales/kn/languages.yml +1 -1
  485. data/resources/locales/kn/lists.yml +14 -2
  486. data/resources/locales/kn/numbers.yml +1 -0
  487. data/resources/locales/kn/timezones.yml +4 -1
  488. data/resources/locales/kn/units.yml +344 -39
  489. data/resources/locales/ko/calendars.yml +1 -0
  490. data/resources/locales/ko/currencies.yml +2 -3
  491. data/resources/locales/ko/languages.yml +1 -1
  492. data/resources/locales/ko/lists.yml +18 -3
  493. data/resources/locales/ko/numbers.yml +1 -0
  494. data/resources/locales/ko/territories.yml +1 -1
  495. data/resources/locales/ko/timezones.yml +3 -0
  496. data/resources/locales/ko/units.yml +20 -12
  497. data/resources/locales/lo/calendars.yml +5 -0
  498. data/resources/locales/lo/currencies.yml +1 -3
  499. data/resources/locales/lo/languages.yml +1 -1
  500. data/resources/locales/lo/lists.yml +16 -2
  501. data/resources/locales/lo/numbers.yml +1 -0
  502. data/resources/locales/lo/timezones.yml +3 -0
  503. data/resources/locales/lo/units.yml +25 -26
  504. data/resources/locales/lt/calendars.yml +1 -0
  505. data/resources/locales/lt/currencies.yml +1 -3
  506. data/resources/locales/lt/languages.yml +1 -1
  507. data/resources/locales/lt/lists.yml +18 -3
  508. data/resources/locales/lt/numbers.yml +1 -0
  509. data/resources/locales/lt/timezones.yml +3 -0
  510. data/resources/locales/lt/units.yml +153 -142
  511. data/resources/locales/lv/calendars.yml +2 -1
  512. data/resources/locales/lv/currencies.yml +1 -4
  513. data/resources/locales/lv/languages.yml +1 -1
  514. data/resources/locales/lv/lists.yml +18 -3
  515. data/resources/locales/lv/numbers.yml +1 -0
  516. data/resources/locales/lv/timezones.yml +3 -0
  517. data/resources/locales/lv/units.yml +134 -132
  518. data/resources/locales/mk/calendars.yml +2 -1
  519. data/resources/locales/mk/currencies.yml +3 -4
  520. data/resources/locales/mk/languages.yml +2 -2
  521. data/resources/locales/mk/lists.yml +15 -2
  522. data/resources/locales/mk/numbers.yml +7 -6
  523. data/resources/locales/mk/territories.yml +2 -2
  524. data/resources/locales/mk/timezones.yml +4 -1
  525. data/resources/locales/mk/units.yml +74 -241
  526. data/resources/locales/mr/calendars.yml +1 -0
  527. data/resources/locales/mr/currencies.yml +1 -5
  528. data/resources/locales/mr/languages.yml +1 -1
  529. data/resources/locales/mr/lists.yml +16 -2
  530. data/resources/locales/mr/numbers.yml +1 -0
  531. data/resources/locales/mr/timezones.yml +3 -0
  532. data/resources/locales/mr/units.yml +55 -20
  533. data/resources/locales/ms/calendars.yml +1 -0
  534. data/resources/locales/ms/currencies.yml +1 -4
  535. data/resources/locales/ms/languages.yml +2 -2
  536. data/resources/locales/ms/lists.yml +14 -2
  537. data/resources/locales/ms/numbers.yml +1 -0
  538. data/resources/locales/ms/timezones.yml +3 -0
  539. data/resources/locales/ms/units.yml +110 -13
  540. data/resources/locales/mt/calendars.yml +1 -0
  541. data/resources/locales/mt/currencies.yml +1 -4
  542. data/resources/locales/mt/languages.yml +1 -2
  543. data/resources/locales/mt/lists.yml +24 -4
  544. data/resources/locales/mt/numbers.yml +1 -0
  545. data/resources/locales/mt/territories.yml +4 -4
  546. data/resources/locales/mt/units.yml +8 -16
  547. data/resources/locales/my/calendars.yml +13 -12
  548. data/resources/locales/my/currencies.yml +11 -9
  549. data/resources/locales/my/languages.yml +3 -2
  550. data/resources/locales/my/lists.yml +25 -15
  551. data/resources/locales/my/numbers.yml +1 -0
  552. data/resources/locales/my/timezones.yml +3 -0
  553. data/resources/locales/my/units.yml +20 -16
  554. data/resources/locales/nb/calendars.yml +2 -1
  555. data/resources/locales/nb/currencies.yml +1 -2
  556. data/resources/locales/nb/fields.yml +4 -4
  557. data/resources/locales/nb/languages.yml +2 -2
  558. data/resources/locales/nb/lists.yml +20 -3
  559. data/resources/locales/nb/numbers.yml +2 -1
  560. data/resources/locales/nb/rbnf.yml +1 -928
  561. data/resources/locales/nb/timezones.yml +3 -0
  562. data/resources/locales/nb/units.yml +133 -67
  563. data/resources/locales/nl/calendars.yml +1 -0
  564. data/resources/locales/nl/currencies.yml +1 -1
  565. data/resources/locales/nl/languages.yml +3 -1
  566. data/resources/locales/nl/lists.yml +18 -3
  567. data/resources/locales/nl/numbers.yml +1 -0
  568. data/resources/locales/nl/timezones.yml +3 -0
  569. data/resources/locales/nl/units.yml +55 -23
  570. data/resources/locales/nl-BE/calendars.yml +1 -0
  571. data/resources/locales/nl-BE/currencies.yml +1 -1
  572. data/resources/locales/nl-BE/languages.yml +3 -1
  573. data/resources/locales/nl-BE/lists.yml +18 -3
  574. data/resources/locales/nl-BE/numbers.yml +1 -0
  575. data/resources/locales/nl-BE/timezones.yml +3 -0
  576. data/resources/locales/nl-BE/units.yml +55 -23
  577. data/resources/locales/pl/calendars.yml +2 -1
  578. data/resources/locales/pl/currencies.yml +6 -6
  579. data/resources/locales/pl/languages.yml +1 -1
  580. data/resources/locales/pl/lists.yml +18 -2
  581. data/resources/locales/pl/numbers.yml +1 -0
  582. data/resources/locales/pl/timezones.yml +4 -1
  583. data/resources/locales/pl/units.yml +219 -162
  584. data/resources/locales/pt/calendars.yml +38 -4
  585. data/resources/locales/pt/currencies.yml +4 -6
  586. data/resources/locales/pt/languages.yml +1 -1
  587. data/resources/locales/pt/lists.yml +18 -2
  588. data/resources/locales/pt/numbers.yml +1 -0
  589. data/resources/locales/pt/plural_rules.yml +2 -1
  590. data/resources/locales/pt/plurals.yml +4 -1
  591. data/resources/locales/pt/rbnf.yml +52 -70
  592. data/resources/locales/pt/timezones.yml +3 -0
  593. data/resources/locales/pt/units.yml +28 -33
  594. data/resources/locales/pt-PT/calendars.yml +22 -2
  595. data/resources/locales/pt-PT/currencies.yml +4 -6
  596. data/resources/locales/pt-PT/languages.yml +1 -1
  597. data/resources/locales/pt-PT/lists.yml +14 -2
  598. data/resources/locales/pt-PT/numbers.yml +1 -0
  599. data/resources/locales/pt-PT/plural_rules.yml +2 -1
  600. data/resources/locales/pt-PT/plurals.yml +4 -1
  601. data/resources/locales/pt-PT/territories.yml +2 -2
  602. data/resources/locales/pt-PT/timezones.yml +3 -0
  603. data/resources/locales/pt-PT/units.yml +55 -41
  604. data/resources/locales/ro/calendars.yml +1 -0
  605. data/resources/locales/ro/currencies.yml +4 -5
  606. data/resources/locales/ro/languages.yml +3 -1
  607. data/resources/locales/ro/lists.yml +14 -2
  608. data/resources/locales/ro/numbers.yml +1 -0
  609. data/resources/locales/ro/timezones.yml +3 -0
  610. data/resources/locales/ro/units.yml +104 -39
  611. data/resources/locales/ru/calendars.yml +9 -8
  612. data/resources/locales/ru/currencies.yml +6 -4
  613. data/resources/locales/ru/day_periods.yml +4 -4
  614. data/resources/locales/ru/languages.yml +2 -2
  615. data/resources/locales/ru/lists.yml +14 -2
  616. data/resources/locales/ru/numbers.yml +1 -0
  617. data/resources/locales/ru/timezones.yml +3 -0
  618. data/resources/locales/ru/units.yml +297 -321
  619. data/resources/locales/sk/calendars.yml +3 -2
  620. data/resources/locales/sk/currencies.yml +1 -1
  621. data/resources/locales/sk/fields.yml +2 -2
  622. data/resources/locales/sk/languages.yml +1 -1
  623. data/resources/locales/sk/lists.yml +18 -3
  624. data/resources/locales/sk/numbers.yml +1 -0
  625. data/resources/locales/sk/timezones.yml +3 -0
  626. data/resources/locales/sk/units.yml +198 -225
  627. data/resources/locales/sl/calendars.yml +5 -4
  628. data/resources/locales/sl/currencies.yml +6 -5
  629. data/resources/locales/sl/languages.yml +1 -1
  630. data/resources/locales/sl/lists.yml +20 -3
  631. data/resources/locales/sl/numbers.yml +1 -0
  632. data/resources/locales/sl/timezones.yml +3 -0
  633. data/resources/locales/sl/units.yml +296 -234
  634. data/resources/locales/sq/calendars.yml +1 -0
  635. data/resources/locales/sq/currencies.yml +5 -5
  636. data/resources/locales/sq/languages.yml +6 -1
  637. data/resources/locales/sq/lists.yml +18 -3
  638. data/resources/locales/sq/numbers.yml +1 -0
  639. data/resources/locales/sq/timezones.yml +3 -0
  640. data/resources/locales/sq/units.yml +53 -34
  641. data/resources/locales/sr/calendars.yml +24 -25
  642. data/resources/locales/sr/currencies.yml +185 -187
  643. data/resources/locales/sr/fields.yml +2 -8
  644. data/resources/locales/sr/languages.yml +1 -1
  645. data/resources/locales/sr/lists.yml +18 -3
  646. data/resources/locales/sr/numbers.yml +1 -0
  647. data/resources/locales/sr/timezones.yml +3 -0
  648. data/resources/locales/sr/units.yml +123 -78
  649. data/resources/locales/sr-Cyrl-ME/calendars.yml +16 -17
  650. data/resources/locales/sr-Cyrl-ME/currencies.yml +185 -187
  651. data/resources/locales/sr-Cyrl-ME/fields.yml +2 -8
  652. data/resources/locales/sr-Cyrl-ME/languages.yml +1 -1
  653. data/resources/locales/sr-Cyrl-ME/lists.yml +18 -3
  654. data/resources/locales/sr-Cyrl-ME/numbers.yml +1 -0
  655. data/resources/locales/sr-Cyrl-ME/timezones.yml +3 -0
  656. data/resources/locales/sr-Cyrl-ME/units.yml +123 -78
  657. data/resources/locales/sr-Latn-ME/calendars.yml +198 -199
  658. data/resources/locales/sr-Latn-ME/currencies.yml +185 -187
  659. data/resources/locales/sr-Latn-ME/fields.yml +2 -8
  660. data/resources/locales/sr-Latn-ME/languages.yml +1 -1
  661. data/resources/locales/sr-Latn-ME/lists.yml +30 -15
  662. data/resources/locales/sr-Latn-ME/numbers.yml +1 -0
  663. data/resources/locales/sr-Latn-ME/timezones.yml +3 -0
  664. data/resources/locales/sr-Latn-ME/units.yml +660 -615
  665. data/resources/locales/sv/calendars.yml +1 -0
  666. data/resources/locales/sv/currencies.yml +4 -6
  667. data/resources/locales/sv/languages.yml +1 -1
  668. data/resources/locales/sv/lists.yml +14 -2
  669. data/resources/locales/sv/numbers.yml +1 -0
  670. data/resources/locales/sv/timezones.yml +5 -2
  671. data/resources/locales/sv/units.yml +43 -297
  672. data/resources/locales/sw/calendars.yml +1 -0
  673. data/resources/locales/sw/currencies.yml +3 -5
  674. data/resources/locales/sw/languages.yml +2 -1
  675. data/resources/locales/sw/lists.yml +4 -0
  676. data/resources/locales/sw/numbers.yml +1 -0
  677. data/resources/locales/sw/timezones.yml +3 -0
  678. data/resources/locales/sw/units.yml +20 -7
  679. data/resources/locales/ta/calendars.yml +3 -2
  680. data/resources/locales/ta/currencies.yml +2 -4
  681. data/resources/locales/ta/fields.yml +1 -1
  682. data/resources/locales/ta/languages.yml +1 -1
  683. data/resources/locales/ta/lists.yml +18 -2
  684. data/resources/locales/ta/numbers.yml +1 -0
  685. data/resources/locales/ta/timezones.yml +3 -0
  686. data/resources/locales/ta/units.yml +505 -122
  687. data/resources/locales/th/calendars.yml +1 -12
  688. data/resources/locales/th/currencies.yml +1 -2
  689. data/resources/locales/th/languages.yml +1 -1
  690. data/resources/locales/th/lists.yml +11 -0
  691. data/resources/locales/th/numbers.yml +1 -0
  692. data/resources/locales/th/timezones.yml +3 -0
  693. data/resources/locales/th/units.yml +275 -16
  694. data/resources/locales/tr/calendars.yml +1 -0
  695. data/resources/locales/tr/currencies.yml +3 -2
  696. data/resources/locales/tr/languages.yml +1 -1
  697. data/resources/locales/tr/lists.yml +14 -2
  698. data/resources/locales/tr/numbers.yml +1 -0
  699. data/resources/locales/tr/timezones.yml +3 -0
  700. data/resources/locales/tr/units.yml +56 -38
  701. data/resources/locales/uk/calendars.yml +8 -7
  702. data/resources/locales/uk/currencies.yml +5 -2
  703. data/resources/locales/uk/languages.yml +2 -6
  704. data/resources/locales/uk/lists.yml +20 -2
  705. data/resources/locales/uk/numbers.yml +1 -0
  706. data/resources/locales/uk/timezones.yml +3 -0
  707. data/resources/locales/uk/units.yml +494 -299
  708. data/resources/locales/ur/calendars.yml +1 -0
  709. data/resources/locales/ur/currencies.yml +4 -6
  710. data/resources/locales/ur/languages.yml +2 -1
  711. data/resources/locales/ur/lists.yml +14 -2
  712. data/resources/locales/ur/numbers.yml +1 -0
  713. data/resources/locales/ur/timezones.yml +3 -0
  714. data/resources/locales/ur/units.yml +53 -15
  715. data/resources/locales/vi/calendars.yml +1 -0
  716. data/resources/locales/vi/currencies.yml +2 -3
  717. data/resources/locales/vi/languages.yml +2 -2
  718. data/resources/locales/vi/lists.yml +22 -3
  719. data/resources/locales/vi/numbers.yml +1 -0
  720. data/resources/locales/vi/timezones.yml +3 -0
  721. data/resources/locales/vi/units.yml +16 -17
  722. data/resources/locales/xh/calendars.yml +29 -6
  723. data/resources/locales/xh/currencies.yml +1 -7
  724. data/resources/locales/xh/lists.yml +42 -7
  725. data/resources/locales/xh/numbers.yml +1 -0
  726. data/resources/locales/xh/units.yml +8 -16
  727. data/resources/locales/zh/calendars.yml +8 -6
  728. data/resources/locales/zh/currencies.yml +1 -1
  729. data/resources/locales/zh/languages.yml +1 -1
  730. data/resources/locales/zh/lists.yml +18 -3
  731. data/resources/locales/zh/numbers.yml +1 -0
  732. data/resources/locales/zh/timezones.yml +4 -1
  733. data/resources/locales/zh/units.yml +31 -9
  734. data/resources/locales/zh-Hant/calendars.yml +18 -12
  735. data/resources/locales/zh-Hant/currencies.yml +1 -1
  736. data/resources/locales/zh-Hant/languages.yml +1 -1
  737. data/resources/locales/zh-Hant/lists.yml +18 -3
  738. data/resources/locales/zh-Hant/numbers.yml +1 -0
  739. data/resources/locales/zh-Hant/timezones.yml +4 -1
  740. data/resources/locales/zh-Hant/units.yml +99 -14
  741. data/resources/locales/zu/calendars.yml +1 -1
  742. data/resources/locales/zu/currencies.yml +1 -4
  743. data/resources/locales/zu/fields.yml +0 -5
  744. data/resources/locales/zu/languages.yml +1 -1
  745. data/resources/locales/zu/lists.yml +13 -2
  746. data/resources/locales/zu/numbers.yml +1 -0
  747. data/resources/locales/zu/timezones.yml +3 -0
  748. data/resources/locales/zu/units.yml +32 -20
  749. data/resources/shared/aliases.yml +4 -3
  750. data/resources/shared/bcp47_timezone_metadata.yml +3 -1
  751. data/resources/shared/hyphenation/ca.yml +1 -1
  752. data/resources/shared/hyphenation/de-AT.yml +1 -1
  753. data/resources/shared/hyphenation/de-CH.yml +1 -1
  754. data/resources/shared/hyphenation/de-DE.yml +1 -1
  755. data/resources/shared/hyphenation/eo.yml +3180 -0
  756. data/resources/shared/hyphenation/fr.yml +1 -1
  757. data/resources/shared/hyphenation/hr-HR.yml +1 -1
  758. data/resources/shared/hyphenation/hu-HU.yml +1439 -57
  759. data/resources/shared/hyphenation/mn-MN.yml +1000 -0
  760. data/resources/shared/hyphenation/sl-SI.yml +1 -1
  761. data/resources/shared/hyphenation/sq-AL.yml +14015 -0
  762. data/resources/shared/language_codes_table.dump +0 -0
  763. data/resources/shared/likely_subtags.yml +18 -9
  764. data/resources/shared/metazones.yml +9 -39
  765. data/resources/shared/numbering_systems.yml +3 -0
  766. data/resources/shared/parent_locales.yml +3 -2
  767. data/resources/shared/rbnf_root.yml +84 -2
  768. data/resources/shared/segments/dictionaries/laodict.dump +0 -0
  769. data/resources/shared/segments/rules/el/sentence.yml +574 -556
  770. data/resources/shared/segments/rules/en-US-POSIX/word.yml +416 -403
  771. data/resources/shared/segments/rules/ja/line.yml +804 -776
  772. data/resources/shared/segments/rules/ja/word.yml +416 -403
  773. data/resources/shared/segments/rules/root/grapheme.yml +407 -402
  774. data/resources/shared/segments/rules/root/line.yml +804 -776
  775. data/resources/shared/segments/rules/root/sentence.yml +574 -556
  776. data/resources/shared/segments/rules/root/word.yml +416 -403
  777. data/resources/shared/segments/rules/zh/line.yml +804 -776
  778. data/resources/shared/segments/rules/zh-Hant/line.yml +804 -776
  779. data/resources/shared/segments/tests/dictionary_tests/combined.yml +31 -42
  780. data/resources/shared/segments/tests/dictionary_tests/lo.yml +31 -42
  781. data/resources/shared/segments/tests/line_break_test.yml +2 -0
  782. data/resources/shared/transforms/Han-Latin.yml +57 -57
  783. data/resources/shared/transforms/Latin-ASCII.yml +51 -2
  784. data/resources/shared/transforms/Turkmen-Latin-BGN.yml +4 -4
  785. data/resources/shared/validity_data.yml +54 -10
  786. data/resources/unicode_data/blocks/ahom.yml +112 -0
  787. data/resources/unicode_data/blocks/arabic.yml +16 -0
  788. data/resources/unicode_data/blocks/arabic_extended_a.yml +192 -0
  789. data/resources/unicode_data/blocks/arabic_extended_b.yml +657 -0
  790. data/resources/unicode_data/blocks/arabic_presentation_forms_a.yml +320 -0
  791. data/resources/unicode_data/blocks/balinese.yml +48 -0
  792. data/resources/unicode_data/blocks/brahmi.yml +96 -0
  793. data/resources/unicode_data/blocks/cjk_unified_ideographs.yml +2 -2
  794. data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_b.yml +2 -2
  795. data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_c.yml +2 -2
  796. data/resources/unicode_data/blocks/combining_diacritical_marks_extended.yml +224 -0
  797. data/resources/unicode_data/blocks/combining_diacritical_marks_supplement.yml +16 -0
  798. data/resources/unicode_data/blocks/currency_symbols.yml +16 -0
  799. data/resources/unicode_data/blocks/cypro_minoan.yml +1585 -0
  800. data/resources/unicode_data/blocks/ethiopic_extended_b.yml +449 -0
  801. data/resources/unicode_data/blocks/geometric_shapes_extended.yml +16 -0
  802. data/resources/unicode_data/blocks/glagolitic.yml +32 -0
  803. data/resources/unicode_data/blocks/hanunoo.yml +2 -2
  804. data/resources/unicode_data/blocks/kaithi.yml +16 -0
  805. data/resources/unicode_data/blocks/kana_extended_a.yml +64 -0
  806. data/resources/unicode_data/blocks/kana_extended_b.yml +209 -0
  807. data/resources/unicode_data/blocks/kannada.yml +16 -0
  808. data/resources/unicode_data/blocks/latin_extended_d.yml +208 -0
  809. data/resources/unicode_data/blocks/latin_extended_f.yml +913 -0
  810. data/resources/unicode_data/blocks/latin_extended_g.yml +497 -0
  811. data/resources/unicode_data/blocks/mongolian.yml +16 -0
  812. data/resources/unicode_data/blocks/musical_symbols.yml +32 -0
  813. data/resources/unicode_data/blocks/old_uyghur.yml +417 -0
  814. data/resources/unicode_data/blocks/supplemental_punctuation.yml +176 -0
  815. data/resources/unicode_data/blocks/supplemental_symbols_and_pictographs.yml +32 -0
  816. data/resources/unicode_data/blocks/symbols_and_pictographs_extended_a.yml +496 -0
  817. data/resources/unicode_data/blocks/tagalog.yml +48 -0
  818. data/resources/unicode_data/blocks/takri.yml +16 -0
  819. data/resources/unicode_data/blocks/tangsa.yml +1425 -0
  820. data/resources/unicode_data/blocks/telugu.yml +32 -0
  821. data/resources/unicode_data/blocks/toto.yml +497 -0
  822. data/resources/unicode_data/blocks/transport_and_map_symbols.yml +48 -0
  823. data/resources/unicode_data/blocks/unified_canadian_aboriginal_syllabics_extended_a.yml +257 -0
  824. data/resources/unicode_data/blocks/vithkuqi.yml +1121 -0
  825. data/resources/unicode_data/blocks/znamenny_musical_notation.yml +2961 -0
  826. data/resources/unicode_data/blocks.yml +50 -2
  827. data/resources/unicode_data/casefolding.yml +160 -0
  828. data/resources/unicode_data/properties/Age/14.0/value.dump +0 -0
  829. data/resources/unicode_data/properties/Alphabetic/value.dump +0 -0
  830. data/resources/unicode_data/properties/Bidi_Class/AL/value.dump +0 -0
  831. data/resources/unicode_data/properties/Bidi_Class/AN/value.dump +0 -0
  832. data/resources/unicode_data/properties/Bidi_Class/ET/value.dump +1 -1
  833. data/resources/unicode_data/properties/Bidi_Class/L/value.dump +0 -0
  834. data/resources/unicode_data/properties/Bidi_Class/NSM/value.dump +0 -0
  835. data/resources/unicode_data/properties/Bidi_Class/ON/value.dump +0 -0
  836. data/resources/unicode_data/properties/Bidi_Class/R/value.dump +0 -0
  837. data/resources/unicode_data/properties/Bidi_Mirrored/N/value.dump +0 -0
  838. data/resources/unicode_data/properties/Bidi_Mirrored/Y/value.dump +3 -2
  839. data/resources/unicode_data/properties/Bidi_Paired_Bracket_Type/Close/value.dump +6 -2
  840. data/resources/unicode_data/properties/Bidi_Paired_Bracket_Type/Open/value.dump +6 -2
  841. data/resources/unicode_data/properties/Block/Ahom/value.dump +0 -0
  842. data/resources/unicode_data/properties/Block/Arabic Extended-B/value.dump +3 -0
  843. data/resources/unicode_data/properties/Block/Cypro-Minoan/value.dump +3 -0
  844. data/resources/unicode_data/properties/Block/Ethiopic Extended-B/value.dump +3 -0
  845. data/resources/unicode_data/properties/Block/Kana Extended-B/value.dump +3 -0
  846. data/resources/unicode_data/properties/Block/Latin Extended-F/value.dump +3 -0
  847. data/resources/unicode_data/properties/Block/Latin Extended-G/value.dump +0 -0
  848. data/resources/unicode_data/properties/Block/Old Uyghur/value.dump +3 -0
  849. data/resources/unicode_data/properties/Block/Tangsa/value.dump +3 -0
  850. data/resources/unicode_data/properties/Block/Tangut Supplement/value.dump +0 -0
  851. data/resources/unicode_data/properties/Block/Toto/value.dump +3 -0
  852. data/resources/unicode_data/properties/Block/Unified Canadian Aboriginal Syllabics Extended-A/value.dump +3 -0
  853. data/resources/unicode_data/properties/Block/Vithkuqi/value.dump +3 -0
  854. data/resources/unicode_data/properties/Block/Znamenny Musical Notation/value.dump +0 -0
  855. data/resources/unicode_data/properties/Canonical_Combining_Class/0/value.dump +0 -0
  856. data/resources/unicode_data/properties/Canonical_Combining_Class/218/value.dump +3 -2
  857. data/resources/unicode_data/properties/Canonical_Combining_Class/220/value.dump +9 -4
  858. data/resources/unicode_data/properties/Canonical_Combining_Class/230/value.dump +0 -0
  859. data/resources/unicode_data/properties/Canonical_Combining_Class/7/value.dump +3 -2
  860. data/resources/unicode_data/properties/Canonical_Combining_Class/9/value.dump +4 -3
  861. data/resources/unicode_data/properties/Case_Ignorable/value.dump +0 -0
  862. data/resources/unicode_data/properties/Cased/value.dump +0 -0
  863. data/resources/unicode_data/properties/Changes_When_Casefolded/value.dump +0 -0
  864. data/resources/unicode_data/properties/Changes_When_Casemapped/value.dump +0 -0
  865. data/resources/unicode_data/properties/Changes_When_Lowercased/value.dump +0 -0
  866. data/resources/unicode_data/properties/Changes_When_Titlecased/value.dump +13 -5
  867. data/resources/unicode_data/properties/Changes_When_Uppercased/value.dump +13 -5
  868. data/resources/unicode_data/properties/Dash/value.dump +0 -0
  869. data/resources/unicode_data/properties/Default_Ignorable_Code_Point/value.dump +0 -0
  870. data/resources/unicode_data/properties/Diacritic/value.dump +0 -0
  871. data/resources/unicode_data/properties/East_Asian_Width/N/value.dump +0 -0
  872. data/resources/unicode_data/properties/East_Asian_Width/W/value.dump +0 -0
  873. data/resources/unicode_data/properties/Emoji/value.dump +0 -0
  874. data/resources/unicode_data/properties/Emoji_Modifier_Base/value.dump +4 -2
  875. data/resources/unicode_data/properties/Emoji_Presentation/value.dump +0 -0
  876. data/resources/unicode_data/properties/Extender/value.dump +3 -2
  877. data/resources/unicode_data/properties/General_Category/C/f/value.dump +0 -0
  878. data/resources/unicode_data/properties/General_Category/L/l/value.dump +0 -0
  879. data/resources/unicode_data/properties/General_Category/L/m/value.dump +13 -5
  880. data/resources/unicode_data/properties/General_Category/L/o/value.dump +0 -0
  881. data/resources/unicode_data/properties/General_Category/L/u/value.dump +0 -0
  882. data/resources/unicode_data/properties/General_Category/M/c/value.dump +0 -0
  883. data/resources/unicode_data/properties/General_Category/M/n/value.dump +0 -0
  884. data/resources/unicode_data/properties/General_Category/N/d/value.dump +0 -0
  885. data/resources/unicode_data/properties/General_Category/P/d/value.dump +0 -0
  886. data/resources/unicode_data/properties/General_Category/P/e/value.dump +6 -2
  887. data/resources/unicode_data/properties/General_Category/P/o/value.dump +0 -0
  888. data/resources/unicode_data/properties/General_Category/P/s/value.dump +6 -2
  889. data/resources/unicode_data/properties/General_Category/S/c/value.dump +1 -1
  890. data/resources/unicode_data/properties/General_Category/S/k/value.dump +0 -0
  891. data/resources/unicode_data/properties/General_Category/S/o/value.dump +0 -0
  892. data/resources/unicode_data/properties/Grapheme_Base/value.dump +0 -0
  893. data/resources/unicode_data/properties/Grapheme_Cluster_Break/Extend/value.dump +0 -0
  894. data/resources/unicode_data/properties/Grapheme_Cluster_Break/Prepend/value.dump +0 -0
  895. data/resources/unicode_data/properties/Grapheme_Cluster_Break/SpacingMark/value.dump +0 -0
  896. data/resources/unicode_data/properties/Grapheme_Extend/value.dump +0 -0
  897. data/resources/unicode_data/properties/Grapheme_Link/value.dump +4 -3
  898. data/resources/unicode_data/properties/ID_Continue/value.dump +0 -0
  899. data/resources/unicode_data/properties/ID_Start/value.dump +0 -0
  900. data/resources/unicode_data/properties/Ideographic/value.dump +0 -0
  901. data/resources/unicode_data/properties/Indic_Positional_Category/Bottom/value.dump +6 -4
  902. data/resources/unicode_data/properties/Indic_Positional_Category/Right/value.dump +0 -0
  903. data/resources/unicode_data/properties/Indic_Positional_Category/Top/value.dump +0 -0
  904. data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant/value.dump +0 -0
  905. data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant_Dead/value.dump +4 -2
  906. data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant_Final/value.dump +6 -3
  907. data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant_Succeeding_Repha/value.dump +2 -5
  908. data/resources/unicode_data/properties/Indic_Syllabic_Category/Nukta/value.dump +3 -2
  909. data/resources/unicode_data/properties/Indic_Syllabic_Category/Pure_Killer/value.dump +4 -3
  910. data/resources/unicode_data/properties/Indic_Syllabic_Category/Vowel_Dependent/value.dump +5 -3
  911. data/resources/unicode_data/properties/Indic_Syllabic_Category/Vowel_Independent/value.dump +0 -0
  912. data/resources/unicode_data/properties/Joining_Group/ALEF/value.dump +3 -2
  913. data/resources/unicode_data/properties/Joining_Group/GAF/value.dump +5 -3
  914. data/resources/unicode_data/properties/Joining_Group/HAH/value.dump +3 -2
  915. data/resources/unicode_data/properties/Joining_Group/NOON/value.dump +3 -2
  916. data/resources/unicode_data/properties/Joining_Group/No_Joining_Group/value.dump +0 -0
  917. data/resources/unicode_data/properties/Joining_Group/QAF/value.dump +4 -2
  918. data/resources/unicode_data/properties/Joining_Group/TAH/value.dump +3 -2
  919. data/resources/unicode_data/properties/Joining_Group/THIN YEH/value.dump +3 -0
  920. data/resources/unicode_data/properties/Joining_Group/VERTICAL TAIL/value.dump +3 -0
  921. data/resources/unicode_data/properties/Joining_Type/Dual_Joining/value.dump +0 -0
  922. data/resources/unicode_data/properties/Joining_Type/Join_Causing/value.dump +4 -2
  923. data/resources/unicode_data/properties/Joining_Type/Non_Joining/value.dump +0 -0
  924. data/resources/unicode_data/properties/Joining_Type/Right_Joining/value.dump +6 -3
  925. data/resources/unicode_data/properties/Line_Break/AL/value.dump +0 -0
  926. data/resources/unicode_data/properties/Line_Break/BA/value.dump +0 -0
  927. data/resources/unicode_data/properties/Line_Break/CL/value.dump +6 -2
  928. data/resources/unicode_data/properties/Line_Break/CM/value.dump +0 -0
  929. data/resources/unicode_data/properties/Line_Break/EB/value.dump +4 -2
  930. data/resources/unicode_data/properties/Line_Break/EX/value.dump +4 -3
  931. data/resources/unicode_data/properties/Line_Break/ID/value.dump +0 -0
  932. data/resources/unicode_data/properties/Line_Break/NU/value.dump +0 -0
  933. data/resources/unicode_data/properties/Line_Break/OP/value.dump +6 -2
  934. data/resources/unicode_data/properties/Line_Break/PO/value.dump +3 -2
  935. data/resources/unicode_data/properties/Line_Break/PR/value.dump +2 -1
  936. data/resources/unicode_data/properties/Line_Break/SA/value.dump +0 -0
  937. data/resources/unicode_data/properties/Lowercase/value.dump +0 -0
  938. data/resources/unicode_data/properties/Numeric_Type/0/value.dump +0 -0
  939. data/resources/unicode_data/properties/Numeric_Type/1/value.dump +3 -2
  940. data/resources/unicode_data/properties/Numeric_Type/2/value.dump +3 -2
  941. data/resources/unicode_data/properties/Numeric_Type/3/value.dump +3 -2
  942. data/resources/unicode_data/properties/Numeric_Type/4/value.dump +3 -2
  943. data/resources/unicode_data/properties/Numeric_Type/5/value.dump +3 -2
  944. data/resources/unicode_data/properties/Numeric_Type/6/value.dump +3 -2
  945. data/resources/unicode_data/properties/Numeric_Type/7/value.dump +3 -2
  946. data/resources/unicode_data/properties/Numeric_Type/8/value.dump +3 -2
  947. data/resources/unicode_data/properties/Numeric_Type/9/value.dump +3 -2
  948. data/resources/unicode_data/properties/Numeric_Type/value.dump +0 -0
  949. data/resources/unicode_data/properties/Other_Alphabetic/value.dump +0 -0
  950. data/resources/unicode_data/properties/Other_Lowercase/value.dump +6 -2
  951. data/resources/unicode_data/properties/Prepended_Concatenation_Mark/value.dump +0 -0
  952. data/resources/unicode_data/properties/Script/Ahom/value.dump +0 -0
  953. data/resources/unicode_data/properties/Script/Arabic/value.dump +0 -0
  954. data/resources/unicode_data/properties/Script/Balinese/value.dump +0 -0
  955. data/resources/unicode_data/properties/Script/Brahmi/value.dump +0 -0
  956. data/resources/unicode_data/properties/Script/Canadian_Aboriginal/value.dump +0 -0
  957. data/resources/unicode_data/properties/Script/Common/value.dump +0 -0
  958. data/resources/unicode_data/properties/Script/Cypro_Minoan/value.dump +3 -0
  959. data/resources/unicode_data/properties/Script/Ethiopic/value.dump +0 -0
  960. data/resources/unicode_data/properties/Script/Glagolitic/value.dump +0 -0
  961. data/resources/unicode_data/properties/Script/Han/value.dump +0 -0
  962. data/resources/unicode_data/properties/Script/Hiragana/value.dump +0 -0
  963. data/resources/unicode_data/properties/Script/Inherited/value.dump +0 -0
  964. data/resources/unicode_data/properties/Script/Kaithi/value.dump +1 -1
  965. data/resources/unicode_data/properties/Script/Kannada/value.dump +1 -1
  966. data/resources/unicode_data/properties/Script/Katakana/value.dump +0 -0
  967. data/resources/unicode_data/properties/Script/Latin/value.dump +0 -0
  968. data/resources/unicode_data/properties/Script/Mongolian/value.dump +0 -0
  969. data/resources/unicode_data/properties/Script/Old_Uyghur/value.dump +3 -0
  970. data/resources/unicode_data/properties/Script/Tagalog/value.dump +0 -0
  971. data/resources/unicode_data/properties/Script/Takri/value.dump +1 -1
  972. data/resources/unicode_data/properties/Script/Tangsa/value.dump +4 -0
  973. data/resources/unicode_data/properties/Script/Telugu/value.dump +0 -0
  974. data/resources/unicode_data/properties/Script/Toto/value.dump +3 -0
  975. data/resources/unicode_data/properties/Script/Vithkuqi/value.dump +10 -0
  976. data/resources/unicode_data/properties/Script_Extensions/Adlm/value.dump +3 -2
  977. data/resources/unicode_data/properties/Script_Extensions/Arab/value.dump +3 -2
  978. data/resources/unicode_data/properties/Script_Extensions/Cpmn/value.dump +0 -0
  979. data/resources/unicode_data/properties/Script_Extensions/Mani/value.dump +5 -2
  980. data/resources/unicode_data/properties/Script_Extensions/Nkoo/value.dump +6 -0
  981. data/resources/unicode_data/properties/Script_Extensions/Ougr/value.dump +6 -0
  982. data/resources/unicode_data/properties/Script_Extensions/Syrc/value.dump +3 -2
  983. data/resources/unicode_data/properties/Sentence_Break/Close/value.dump +0 -0
  984. data/resources/unicode_data/properties/Sentence_Break/Extend/value.dump +0 -0
  985. data/resources/unicode_data/properties/Sentence_Break/Format/value.dump +0 -0
  986. data/resources/unicode_data/properties/Sentence_Break/Lower/value.dump +0 -0
  987. data/resources/unicode_data/properties/Sentence_Break/Numeric/value.dump +0 -0
  988. data/resources/unicode_data/properties/Sentence_Break/OLetter/value.dump +0 -0
  989. data/resources/unicode_data/properties/Sentence_Break/STerm/value.dump +0 -0
  990. data/resources/unicode_data/properties/Sentence_Break/Upper/value.dump +0 -0
  991. data/resources/unicode_data/properties/Sentence_Terminal/value.dump +0 -0
  992. data/resources/unicode_data/properties/Soft_Dotted/value.dump +3 -2
  993. data/resources/unicode_data/properties/Terminal_Punctuation/value.dump +0 -0
  994. data/resources/unicode_data/properties/Unified_Ideograph/value.dump +0 -0
  995. data/resources/unicode_data/properties/Uppercase/value.dump +0 -0
  996. data/resources/unicode_data/properties/Variation_Selector/value.dump +0 -0
  997. data/resources/unicode_data/properties/Word_Break/ALetter/value.dump +0 -0
  998. data/resources/unicode_data/properties/Word_Break/Extend/value.dump +0 -0
  999. data/resources/unicode_data/properties/Word_Break/Format/value.dump +0 -0
  1000. data/resources/unicode_data/properties/Word_Break/Katakana/value.dump +0 -0
  1001. data/resources/unicode_data/properties/Word_Break/Numeric/value.dump +0 -0
  1002. data/resources/unicode_data/properties/XID_Continue/value.dump +0 -0
  1003. data/resources/unicode_data/properties/XID_Start/value.dump +0 -0
  1004. data/resources/unicode_data/property_value_aliases.yml +40 -0
  1005. data/spec/formatters/list_formatter_spec.rb +20 -0
  1006. data/spec/formatters/numbers/rbnf/locales/de/rbnf_test.yml +234 -0
  1007. data/spec/formatters/numbers/rbnf/locales/fi/rbnf_test.yml +234 -0
  1008. data/spec/formatters/numbers/rbnf/locales/pt/rbnf_test.yml +32 -32
  1009. data/spec/localized/localized_date_spec.rb +0 -12
  1010. data/spec/localized/localized_datetime_spec.rb +1 -15
  1011. data/spec/localized/localized_time_spec.rb +0 -12
  1012. data/spec/parsers/unicode_regex/character_set_spec.rb +2 -1
  1013. data/spec/shared/unit_spec.rb +9 -9
  1014. data/spec/spec_helper.rb +1 -1
  1015. data/spec/timezones/tests/af.yml +3 -3
  1016. data/spec/timezones/tests/ar.yml +3 -3
  1017. data/spec/timezones/tests/az.yml +3 -3
  1018. data/spec/timezones/tests/be.yml +3 -3
  1019. data/spec/timezones/tests/bg.yml +3 -3
  1020. data/spec/timezones/tests/bn.yml +3 -3
  1021. data/spec/timezones/tests/bo.yml +3 -3
  1022. data/spec/timezones/tests/bs.yml +3 -3
  1023. data/spec/timezones/tests/ca.yml +17 -17
  1024. data/spec/timezones/tests/cs.yml +3 -3
  1025. data/spec/timezones/tests/cy.yml +3 -3
  1026. data/spec/timezones/tests/da.yml +3 -3
  1027. data/spec/timezones/tests/de-AT.yml +3 -3
  1028. data/spec/timezones/tests/de-CH.yml +3 -3
  1029. data/spec/timezones/tests/de.yml +3 -3
  1030. data/spec/timezones/tests/el.yml +3 -3
  1031. data/spec/timezones/tests/en-001.yml +3 -3
  1032. data/spec/timezones/tests/en-150.yml +3 -3
  1033. data/spec/timezones/tests/en-AU.yml +3 -3
  1034. data/spec/timezones/tests/en-CA.yml +208 -208
  1035. data/spec/timezones/tests/en-GB.yml +3 -3
  1036. data/spec/timezones/tests/en-IE.yml +3 -3
  1037. data/spec/timezones/tests/en-IN.yml +3 -3
  1038. data/spec/timezones/tests/en-NZ.yml +3 -3
  1039. data/spec/timezones/tests/en-SG.yml +3 -3
  1040. data/spec/timezones/tests/en-US.yml +3 -3
  1041. data/spec/timezones/tests/en-ZA.yml +3 -3
  1042. data/spec/timezones/tests/en.yml +3 -3
  1043. data/spec/timezones/tests/eo.yml +3 -3
  1044. data/spec/timezones/tests/es-419.yml +6 -6
  1045. data/spec/timezones/tests/es-AR.yml +6 -6
  1046. data/spec/timezones/tests/es-CO.yml +6 -6
  1047. data/spec/timezones/tests/es-MX.yml +4 -4
  1048. data/spec/timezones/tests/es-US.yml +13 -13
  1049. data/spec/timezones/tests/es.yml +6 -6
  1050. data/spec/timezones/tests/et.yml +3 -3
  1051. data/spec/timezones/tests/eu.yml +285 -285
  1052. data/spec/timezones/tests/fa.yml +14 -14
  1053. data/spec/timezones/tests/fi.yml +3 -3
  1054. data/spec/timezones/tests/fil.yml +9 -9
  1055. data/spec/timezones/tests/fr-BE.yml +11 -11
  1056. data/spec/timezones/tests/fr-CA.yml +3 -3
  1057. data/spec/timezones/tests/fr-CH.yml +11 -11
  1058. data/spec/timezones/tests/fr.yml +11 -11
  1059. data/spec/timezones/tests/ga.yml +190 -190
  1060. data/spec/timezones/tests/gl.yml +3 -3
  1061. data/spec/timezones/tests/gu.yml +3 -3
  1062. data/spec/timezones/tests/he.yml +3 -3
  1063. data/spec/timezones/tests/hi.yml +7 -7
  1064. data/spec/timezones/tests/hr.yml +3 -3
  1065. data/spec/timezones/tests/hu.yml +3 -3
  1066. data/spec/timezones/tests/hy.yml +3 -3
  1067. data/spec/timezones/tests/id.yml +287 -287
  1068. data/spec/timezones/tests/is.yml +3 -3
  1069. data/spec/timezones/tests/it-CH.yml +3 -3
  1070. data/spec/timezones/tests/it.yml +3 -3
  1071. data/spec/timezones/tests/ja.yml +3 -3
  1072. data/spec/timezones/tests/ka.yml +3 -3
  1073. data/spec/timezones/tests/kk.yml +3 -3
  1074. data/spec/timezones/tests/km.yml +3 -3
  1075. data/spec/timezones/tests/kn.yml +10 -10
  1076. data/spec/timezones/tests/ko.yml +3 -3
  1077. data/spec/timezones/tests/lo.yml +3 -3
  1078. data/spec/timezones/tests/lt.yml +3 -3
  1079. data/spec/timezones/tests/lv.yml +3 -3
  1080. data/spec/timezones/tests/mk.yml +8 -8
  1081. data/spec/timezones/tests/mr.yml +3 -3
  1082. data/spec/timezones/tests/ms.yml +3 -3
  1083. data/spec/timezones/tests/mt.yml +13 -13
  1084. data/spec/timezones/tests/my.yml +3 -3
  1085. data/spec/timezones/tests/nb.yml +3 -3
  1086. data/spec/timezones/tests/nl-BE.yml +3 -3
  1087. data/spec/timezones/tests/nl.yml +3 -3
  1088. data/spec/timezones/tests/pl.yml +5 -5
  1089. data/spec/timezones/tests/pt-PT.yml +3 -3
  1090. data/spec/timezones/tests/pt.yml +3 -3
  1091. data/spec/timezones/tests/ro.yml +3 -3
  1092. data/spec/timezones/tests/ru.yml +3 -3
  1093. data/spec/timezones/tests/sk.yml +3 -3
  1094. data/spec/timezones/tests/sl.yml +3 -3
  1095. data/spec/timezones/tests/sq.yml +3 -3
  1096. data/spec/timezones/tests/sr-Cyrl-ME.yml +3 -3
  1097. data/spec/timezones/tests/sr-Latn-ME.yml +3 -3
  1098. data/spec/timezones/tests/sr.yml +3 -3
  1099. data/spec/timezones/tests/sv.yml +4 -4
  1100. data/spec/timezones/tests/sw.yml +3 -3
  1101. data/spec/timezones/tests/ta.yml +3 -3
  1102. data/spec/timezones/tests/th.yml +3 -3
  1103. data/spec/timezones/tests/tr.yml +3 -3
  1104. data/spec/timezones/tests/uk.yml +3 -3
  1105. data/spec/timezones/tests/ur.yml +3 -3
  1106. data/spec/timezones/tests/vi.yml +3 -3
  1107. data/spec/timezones/tests/xh.yml +3 -3
  1108. data/spec/timezones/tests/zh-Hant.yml +13 -13
  1109. data/spec/timezones/tests/zh.yml +13 -13
  1110. data/spec/timezones/tests/zu.yml +3 -3
  1111. data/spec/tokenizers/calendars/date_tokenizer_spec.rb +0 -18
  1112. metadata +44 -6
  1113. data/lib/twitter_cldr/tokenizers/composite_token.rb +0 -26
  1114. data/resources/custom/locales/en-AU/calendars.yml +0 -10
  1115. data/spec/tokenizers/composite_token_spec.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7840c80b8cc6bcf117de49198d83cdb18a938c57339f0facbef2bc67cef6a7c8
4
- data.tar.gz: 8c92bead9ddba30899f7478dbcb94bed2d43cecb67fa69a5e565daff7930a02f
3
+ metadata.gz: eb3f9e357d9106f3b87744f5a8203eda30efd0dac40a24dacfbfaca6122431bc
4
+ data.tar.gz: a39e1373d65e2665124caedba55b039d62214950ced3db2e79636e38aef9e9e6
5
5
  SHA512:
6
- metadata.gz: 144647b4f36e6ec2df0394978a0f975bcbfcc62f0799cf1080e9c058fcc6daea90d9ad5f2270c080f1422200abd34874ac44e92935783c16a4cfea22a6e3bfdd
7
- data.tar.gz: 60a03fcc538428dbc767351fb0a2370e3bd85da5e3b239f3529e074730b9ae0c7f918f849753fbad5a9fce902982fe52aff0d1943919389b674f29bf09950ace
6
+ metadata.gz: 0e810877761c6898a5e5efb187c2f16a91536bf5e2bf784d802eb99ef9fe482140c79490f20e2c3748622147f340be3905cdc2cebc1c046e7eff9c5929130c8d
7
+ data.tar.gz: 2e9d84af9731ba6ada0cd0fc63224a54fbdb4f7de6b3de1d0f4748d20f71c6f17b65b490b5d32b56e269273c5c05dc94fa704da8fe89af077a62e50aad562023
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ gemspec
4
4
 
5
5
  group :development, :test do
6
6
  gem 'rake'
7
- gem 'pry-nav'
7
+ gem 'pry-byebug' unless RUBY_PLATFORM == 'java'
8
8
  gem 'ruby-prof' unless RUBY_PLATFORM == 'java'
9
9
  gem 'regexp_parser', '~> 0.5'
10
10
  gem 'benchmark-ips'
@@ -13,7 +13,7 @@ group :development, :test do
13
13
  # gemspec allows any version, but most people are probably using 1.x, so
14
14
  # let's test and develop against that
15
15
  gem 'tzinfo', '< 2'
16
- gem 'tzinfo-data', '= 1.2020.4' # keep in sync with ICU
16
+ gem 'tzinfo-data', '= 1.2021.1' # try to keep in sync with ICU
17
17
  end
18
18
 
19
19
  group :development do
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ## twitter-cldr-rb [![Build Status](https://secure.travis-ci.org/twitter/twitter-cldr-rb.png?branch=master)](http://travis-ci.org/twitter/twitter-cldr-rb) [![Code Climate](https://codeclimate.com/github/twitter/twitter-cldr-rb.png)](https://codeclimate.com/github/twitter/twitter-cldr-rb) [![Coverage Status](https://coveralls.io/repos/twitter/twitter-cldr-rb/badge.png?branch=master)](https://coveralls.io/r/twitter/twitter-cldr-rb?branch=master)
1
+ ## twitter-cldr-rb ![Unit Tests](https://github.com/camertron/rux/actions/workflows/unit_tests.yml/badge.svg?branch=master) [![Code Climate](https://codeclimate.com/github/twitter/twitter-cldr-rb.png)](https://codeclimate.com/github/twitter/twitter-cldr-rb) [![Coverage Status](https://coveralls.io/repos/twitter/twitter-cldr-rb/badge.png?branch=master)](https://coveralls.io/r/twitter/twitter-cldr-rb?branch=master)
2
2
 
3
3
  TwitterCldr uses Unicode's Common Locale Data Repository (CLDR) to format certain types of text into their
4
4
  localized equivalents. Currently supported types of text include dates, times, currencies, decimals, percentages, and symbols.
@@ -558,20 +558,20 @@ The CLDR contains postal code validation regexes for a number of countries.
558
558
 
559
559
  ```ruby
560
560
  # United States
561
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
561
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
562
562
  postal_code.valid?("94103") # true
563
563
  postal_code.valid?("9410") # false
564
564
 
565
565
  # England (Great Britain)
566
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:gb)
566
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:gb)
567
567
  postal_code.valid?("BS98 1TL") # true
568
568
 
569
569
  # Sweden
570
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:se)
570
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:se)
571
571
  postal_code.valid?("280 12") # true
572
572
 
573
573
  # Canada
574
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:ca)
574
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:ca)
575
575
  postal_code.valid?("V3H 1Z7") # true
576
576
  ```
577
577
 
@@ -579,7 +579,7 @@ Match all valid postal codes in a string with the `#find_all` method:
579
579
 
580
580
  ```ruby
581
581
  # United States
582
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
582
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
583
583
  postal_code.find_all("12345 23456") # ["12345", "23456"]
584
584
  ```
585
585
 
@@ -592,7 +592,7 @@ TwitterCldr::Shared::PostalCodes.territories # [:ac, :ad, :af, :ai, :al, ... ]
592
592
  Just want the regex? No problem:
593
593
 
594
594
  ```ruby
595
- postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
595
+ postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
596
596
  postal_code.regexp # /(\d{5})(?:[ \-](\d{4}))?/
597
597
  ```
598
598
 
@@ -1014,17 +1014,17 @@ The Psych gem that is the default YAML engine in Ruby 1.9 doesn't handle Unicode
1014
1014
  You can make use of TwitterCLDR's YAML dumper by calling `localize` and then `to_yaml` on an `Array`, `Hash`, or `String`:
1015
1015
 
1016
1016
  ```ruby
1017
- { :hello => "world" }.localize.to_yaml
1018
- ["hello", "world"].localize.to_yaml
1019
- "hello, world".localize.to_yaml
1017
+ { :hello => "world" }.localize.to_yaml
1018
+ ["hello", "world"].localize.to_yaml
1019
+ "hello, world".localize.to_yaml
1020
1020
  ```
1021
1021
 
1022
1022
  Behind the scenes, these convenience methods are using the `TwitterCldr::Shared::YAML` class. You can do the same thing if you're feeling adventurous:
1023
1023
 
1024
1024
  ```ruby
1025
- TwitterCldr::Shared::YAML.dump({ :hello => "world" })
1026
- TwitterCldr::Shared::YAML.dump(["hello", "world"])
1027
- TwitterCldr::Shared::YAML.dump("hello, world")
1025
+ TwitterCldr::Shared::YAML.dump({ :hello => "world" })
1026
+ TwitterCldr::Shared::YAML.dump(["hello", "world"])
1027
+ TwitterCldr::Shared::YAML.dump("hello, world")
1028
1028
  ```
1029
1029
 
1030
1030
  ## Adding New Locales
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ require 'rubygems/package_task'
13
13
 
14
14
  require './lib/twitter_cldr'
15
15
 
16
- require 'pry-nav'
16
+ require 'pry-byebug' unless RUBY_PLATFORM == 'java'
17
17
 
18
18
  Bundler::GemHelper.install_tasks
19
19
 
@@ -89,6 +89,11 @@ namespace :update do
89
89
  TwitterCldr::Resources::NumberFormatsImporter.new.import
90
90
  end
91
91
 
92
+ desc 'Import list formats'
93
+ task :list_formats do
94
+ TwitterCldr::Resources::ListFormatsImporter.new.import
95
+ end
96
+
92
97
  desc 'Import currency symbols'
93
98
  task :currency_symbols do
94
99
  TwitterCldr::Resources::CurrencySymbolsImporter.new.import
@@ -136,6 +141,16 @@ namespace :update do
136
141
  TwitterCldr::Resources::UnicodePropertyAliasesImporter.new.import
137
142
  end
138
143
 
144
+ desc 'Import unit data'
145
+ task :units do
146
+ TwitterCldr::Resources::UnitsImporter.new.import
147
+ end
148
+
149
+ desc 'Import calendar data'
150
+ task :calendars do
151
+ TwitterCldr::Resources::CalendarsImporter.new.import
152
+ end
153
+
139
154
  desc 'Generate the casefolder class. Depends on unicode data'
140
155
  task :casefolder do
141
156
  TwitterCldr::Resources::CasefolderClassGenerator.new.import
@@ -26,10 +26,6 @@ module TwitterCldr
26
26
  token.value.gsub(/'([^']+)'/, '\1') # remove single-quote escaping for "real" characters
27
27
  end
28
28
 
29
- def format_composite(token, index, obj, options)
30
- eval(format(token.tokens, obj)).to_s
31
- end
32
-
33
29
  end
34
30
  end
35
31
  end
@@ -62,7 +62,13 @@ module TwitterCldr
62
62
  end
63
63
 
64
64
  def resource_for_type(type)
65
- resource[type]
65
+ loop do
66
+ if resource[type].is_a?(Symbol)
67
+ type = resource[:type].to_s.split('.').last
68
+ else
69
+ break resource[type]
70
+ end
71
+ end
66
72
  end
67
73
 
68
74
  def resource
@@ -0,0 +1,220 @@
1
+ # encoding: UTF-8
2
+
3
+ # Copyright 2012 Twitter, Inc
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ require 'nokogiri'
7
+ require 'fileutils'
8
+ require 'parallel'
9
+ require 'etc'
10
+ require 'set'
11
+
12
+ module TwitterCldr
13
+ module Resources
14
+
15
+ class CalendarsImporter < Importer
16
+
17
+ requirement :cldr, Versions.cldr_version
18
+ output_path 'locales'
19
+ locales TwitterCldr.supported_locales
20
+ ruby_engine :mri
21
+
22
+ private
23
+
24
+ def execute
25
+ locales = Set.new
26
+
27
+ finish = -> (locale, *) do
28
+ locales.add(locale)
29
+ STDOUT.write "\rImported #{locale}, #{locales.size} of #{params[:locales].size} total"
30
+ end
31
+
32
+ Parallel.each(params[:locales], in_processes: Etc.nprocessors, finish: finish) do |locale|
33
+ import_locale(locale)
34
+ locales << locale
35
+ end
36
+ end
37
+
38
+ def import_locale(locale)
39
+ data = requirements[:cldr].merge_each_ancestor(locale) do |ancestor_locale|
40
+ GregorianCalendar.new(ancestor_locale, requirements[:cldr]).to_h
41
+ end
42
+
43
+ output_file = File.join(output_path, locale.to_s, 'calendars.yml')
44
+
45
+ File.open(output_file, 'w:utf-8') do |output|
46
+ output.write(
47
+ TwitterCldr::Utils::YAML.dump(
48
+ TwitterCldr::Utils.deep_symbolize_keys(locale => data),
49
+ use_natural_symbols: true
50
+ )
51
+ )
52
+ end
53
+ end
54
+
55
+ def output_path
56
+ params.fetch(:output_path)
57
+ end
58
+
59
+ end
60
+
61
+
62
+ class GregorianCalendar
63
+ attr_reader :locale, :cldr_req
64
+
65
+ def initialize(locale, cldr_req)
66
+ @locale = locale
67
+ @cldr_req = cldr_req
68
+ end
69
+
70
+ def to_h
71
+ {
72
+ calendars: {
73
+ gregorian: {
74
+ months: contexts('month'),
75
+ days: contexts('day'),
76
+ eras: eras,
77
+ quarters: contexts('quarter'),
78
+ periods: contexts('dayPeriod', group: "alt"),
79
+ fields: fields,
80
+ formats: {
81
+ date: formats('date'),
82
+ time: formats('time'),
83
+ datetime: formats('dateTime')
84
+ },
85
+ additional_formats: additional_formats
86
+ }
87
+ }
88
+ }
89
+ end
90
+
91
+ private
92
+
93
+ def calendar
94
+ @calendar ||= doc.xpath('//ldml/dates/calendars/calendar[@type="gregorian"]').first
95
+ end
96
+
97
+ def contexts(kind, options = {})
98
+ return {} unless calendar
99
+
100
+ calendar.xpath("#{kind}s/#{kind}Context").each_with_object({}) do |node, result|
101
+ context = node.attribute('type').value.to_sym
102
+ result[context] = widths(node, kind, context, options)
103
+ end
104
+ end
105
+
106
+ def widths(node, kind, context, options = {})
107
+ node.xpath("#{kind}Width").each_with_object({}) do |node, result|
108
+ width = node.attribute('type').value.to_sym
109
+ result[width] = elements(node, kind, context, width, options)
110
+ end
111
+ end
112
+
113
+ def elements(node, kind, context, width, options = {})
114
+ aliased = node.xpath('alias').first
115
+
116
+ if aliased
117
+ alias_path = "#{node.path}/#{aliased.attribute('path').value}"
118
+ elements(doc.xpath(alias_path).first, kind, context, width, options)
119
+ else
120
+ node.xpath(kind).each_with_object({}) do |node, result|
121
+ key = node.attribute('type').value
122
+ key = key =~ /^\d*$/ ? key.to_i : key.to_sym
123
+
124
+ if options[:group] && found_group = node.attribute(options[:group])
125
+ result[found_group.value] ||= {}
126
+ result[found_group.value][key] = node.content
127
+ else
128
+ result[key] = node.content
129
+ end
130
+ end
131
+ end
132
+ end
133
+
134
+ def periods
135
+ am = calendar.xpath("am").first
136
+ pm = calendar.xpath("pm").first
137
+
138
+ {}.tap do |result|
139
+ result[:am] = am.content if am
140
+ result[:pm] = pm.content if pm
141
+ end
142
+ end
143
+
144
+ def eras
145
+ return {} unless calendar
146
+
147
+ base_path = "#{calendar.path}/eras"
148
+ keys = doc.xpath("#{base_path}/*").map { |node| node.name }
149
+
150
+ keys.each_with_object({}) do |name, result|
151
+ path = "#{base_path}/#{name}/*"
152
+ key = name.gsub('era', '').gsub(/s$/, '').downcase.to_sym
153
+ result[key] = doc.xpath(path).each_with_object({}) do |node, ret|
154
+ type = node.attribute('type').value.to_i rescue 0
155
+ ret[type] = node.content
156
+ ret
157
+ end
158
+ end
159
+ end
160
+
161
+ def formats(type)
162
+ return {} unless calendar
163
+
164
+ formats = calendar.xpath("#{type}Formats/#{type}FormatLength").each_with_object({}) do |node, result|
165
+ key = node.attribute('type').value.to_sym rescue :format
166
+ result[key] = pattern(node, type)
167
+ end
168
+ if default = default_format(type)
169
+ formats = default.merge(formats)
170
+ end
171
+ formats
172
+ end
173
+
174
+ def additional_formats
175
+ return {} unless calendar
176
+
177
+ calendar.xpath("dateTimeFormats/availableFormats/dateFormatItem").each_with_object({}) do |node, result|
178
+ key = node.attribute('id').value
179
+ result[key] = node.content
180
+ end
181
+ end
182
+
183
+ def default_format(type)
184
+ if node = calendar.xpath("#{type}Formats/default").first
185
+ key = node.attribute('choice').value.to_sym
186
+ { :default => :"calendars.gregorian.formats.#{type.downcase}.#{key}" }
187
+ end
188
+ end
189
+
190
+ def pattern(node, type)
191
+ node.xpath("#{type}Format/pattern").each_with_object({}) do |node, result|
192
+ pattern = node.content
193
+ pattern = pattern.gsub('{0}', '{{time}}').gsub('{1}', '{{date}}') if type == 'dateTime'
194
+ result[:pattern] = pattern
195
+ end
196
+ end
197
+
198
+ def fields
199
+ doc.xpath("//ldml/dates/fields/field").each_with_object({}) do |node, result|
200
+ key = node.attribute('type').value.to_sym
201
+ name = node.xpath('displayName').first
202
+ result[key] = name.content if name
203
+ end
204
+ end
205
+
206
+ def doc
207
+ @doc ||= begin
208
+ locale_fs = locale.to_s.gsub('-', '_')
209
+ Nokogiri.XML(File.read(File.join(cldr_main_path, "#{locale_fs}.xml")))
210
+ end
211
+ end
212
+
213
+ def cldr_main_path
214
+ @cldr_main_path ||= File.join(cldr_req.common_path, 'main')
215
+ end
216
+
217
+ end
218
+
219
+ end
220
+ end
@@ -45,7 +45,7 @@ module TwitterCldr
45
45
  source_path = source_path_for(file)
46
46
 
47
47
  unless File.exist?(source_path)
48
- open(source_path, 'wb') { |file| file << open(url).read }
48
+ open(source_path, 'wb') { |file| file << URI.open(url).read }
49
49
  end
50
50
  end
51
51
  end
@@ -0,0 +1,140 @@
1
+ # encoding: UTF-8
2
+
3
+ # Copyright 2012 Twitter, Inc
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ require 'nokogiri'
7
+ require 'parallel'
8
+ require 'etc'
9
+ require 'set'
10
+
11
+ module TwitterCldr
12
+ module Resources
13
+
14
+ class ListFormatsImporter < Importer
15
+
16
+ requirement :cldr, Versions.cldr_version
17
+ output_path 'locales'
18
+ locales TwitterCldr.supported_locales
19
+ ruby_engine :mri
20
+
21
+ private
22
+
23
+ def execute
24
+ locales = Set.new
25
+
26
+ finish = -> (locale, *) do
27
+ locales.add(locale)
28
+ STDOUT.write "\rImported #{locale}, #{locales.size} of #{params[:locales].size} total"
29
+ end
30
+
31
+ Parallel.each(params[:locales], in_processes: Etc.nprocessors, finish: finish) do |locale|
32
+ import_locale(locale)
33
+ locales << locale
34
+ end
35
+
36
+ puts
37
+ end
38
+
39
+ def import_locale(locale)
40
+ # The merging that happens here works at the listPatternPart level of granularity.
41
+ # In other words, a missing part will be filled in by any part with the same key
42
+ # in the locale's ancestor chain. The raw CLDR data contains the inheritance marker
43
+ # (i.e. "↑↑↑") for listPatterns that are missing parts, but the expanded data we
44
+ # get in the downloadable CLDR zip file doesn't include them or the inherited data,
45
+ # making it impossible for TwitterCLDR to know how it should handle missing keys.
46
+ # I believe whatever massage tool the CLDR maintainers use to generate the final
47
+ # data set doesn't take aliases into account, which explains the holes in the data.
48
+ # By allowing individual listPatternParts to be populated by data from ancestor
49
+ # locales, we fill in any missing parts at the minor risk of being slightly wrong
50
+ # when formatting lists. In my opinion, it's far better to produce a slightly wrong
51
+ # string than to error or produce an entirely empty string.
52
+ data = requirements[:cldr].merge_each_ancestor(locale) do |ancestor_locale|
53
+ ListFormats.new(ancestor_locale, requirements[:cldr]).to_h
54
+ end
55
+
56
+ output_file = File.join(output_path, locale.to_s, 'lists.yml')
57
+
58
+ File.open(output_file, 'w:utf-8') do |output|
59
+ output.write(
60
+ TwitterCldr::Utils::YAML.dump(
61
+ TwitterCldr::Utils.deep_symbolize_keys(locale => data),
62
+ use_natural_symbols: true
63
+ )
64
+ )
65
+ end
66
+ end
67
+
68
+ def output_path
69
+ params.fetch(:output_path)
70
+ end
71
+
72
+ end
73
+
74
+
75
+ class ListFormats
76
+
77
+ attr_reader :locale, :cldr_req
78
+
79
+ def initialize(locale, cldr_req)
80
+ @locale = locale
81
+ @cldr_req = cldr_req
82
+ end
83
+
84
+ def to_h
85
+ { lists: lists }
86
+ end
87
+
88
+ def lists
89
+ doc.xpath('//ldml/listPatterns/listPattern').each_with_object({}) do |pattern_node, pattern_result|
90
+ pattern_type = if attribute = pattern_node.attribute('type')
91
+ attribute.value.to_sym
92
+ else
93
+ :default
94
+ end
95
+
96
+ pattern_node = pattern_for(pattern_type)
97
+
98
+ pattern_result[pattern_type] = pattern_node.xpath('listPatternPart').each_with_object({}) do |type_node, type_result|
99
+ type_result[type_node.attribute('type').value.to_sym] = type_node.content
100
+ end
101
+ end
102
+ end
103
+
104
+ def pattern_for(type)
105
+ xpath = xpath_for(type)
106
+ pattern_node = doc.xpath(xpath)[0]
107
+ alias_node = pattern_node.xpath('alias')[0]
108
+
109
+ if alias_node
110
+ alias_type = alias_node.attribute('path').value[/@type='([\w-]+)'/, 1] || :default
111
+ # follow aliases so we can fully expand them
112
+ pattern_node = pattern_for(alias_type)
113
+ end
114
+
115
+ pattern_node
116
+ end
117
+
118
+ def xpath_for(type)
119
+ if type == :default
120
+ '//ldml/listPatterns/listPattern[not(@type)]'
121
+ else
122
+ "//ldml/listPatterns/listPattern[@type='#{type}']"
123
+ end
124
+ end
125
+
126
+ def doc
127
+ @doc ||= begin
128
+ locale_fs = locale.to_s.gsub('-', '_')
129
+ Nokogiri.XML(File.read(File.join(cldr_main_path, "#{locale_fs}.xml")))
130
+ end
131
+ end
132
+
133
+ def cldr_main_path
134
+ @cldr_main_path ||= File.join(cldr_req.common_path, 'main')
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+ end
@@ -22,13 +22,10 @@ module TwitterCldr
22
22
 
23
23
  LOCALE_COMPONENTS = %w[
24
24
  layout
25
- calendars
26
25
  languages
27
26
  currencies
28
27
  plural_rules
29
- lists
30
28
  rbnf
31
- units
32
29
  fields
33
30
  ]
34
31
 
@@ -73,7 +70,6 @@ module TwitterCldr
73
70
  }
74
71
 
75
72
  Cldr::Export.export(export_args) do |component, locale, path|
76
- add_buddhist_calendar(component, locale, path)
77
73
  process_plurals(component, locale, path)
78
74
  deep_symbolize(path)
79
75
  end
@@ -141,30 +137,6 @@ module TwitterCldr
141
137
  output.write(YAML.dump(locale => plurals))
142
138
  end
143
139
  end
144
-
145
- # TODO: export buddhist calendar from CLDR data instead of using BUDDHIST_CALENDAR constant.
146
- #
147
- def add_buddhist_calendar(component, locale, path)
148
- return unless component == 'Calendars' && locale == :th
149
-
150
- data = YAML.load(File.read(path))
151
- data['th']['calendars']['buddhist'] = BUDDHIST_CALENDAR
152
-
153
- File.open(path, 'w:utf-8') { |output| output.write(YAML.dump(data))}
154
- end
155
-
156
- BUDDHIST_CALENDAR = {
157
- 'formats' => {
158
- 'date' => {
159
- 'default' => :'calendars.buddhist.formats.date.medium',
160
- 'full' => { 'pattern' => 'EEEEที่ d MMMM G y' },
161
- 'long' => { 'pattern' => 'd MMMM พ.ศ. #{y + 543}' },
162
- 'medium' => { 'pattern' => 'd MMM #{y + 543}' },
163
- 'short' => { 'pattern' => 'd/M/#{y + 543}' }
164
- }
165
- }
166
- }
167
-
168
140
  end
169
141
 
170
142
  end
@@ -4,8 +4,9 @@
4
4
  # http://www.apache.org/licenses/LICENSE-2.0
5
5
 
6
6
  require 'i18n'
7
+ require 'net/ftp'
7
8
  require 'nokogiri'
8
- require 'open-uri'
9
+ require 'tempfile'
9
10
  require 'uri'
10
11
  require 'zip'
11
12
 
@@ -14,7 +15,7 @@ module TwitterCldr
14
15
  module Requirements
15
16
 
16
17
  class CldrRequirement
17
- CLDR_URL = "https://unicode.org/Public/cldr/%{version}/core.zip"
18
+ CLDR_URL = "ftp://unicode.org/Public/cldr/%{version}/core.zip".freeze
18
19
 
19
20
  attr_reader :version
20
21
 
@@ -111,15 +112,24 @@ module TwitterCldr
111
112
  end
112
113
 
113
114
  def download
114
- URI.parse(cldr_url).open do |tempfile|
115
- FileUtils.mkdir_p(source_path)
116
- Zip.on_exists_proc = true
117
-
118
- Zip::File.open(tempfile.path) do |file|
119
- file.each do |entry|
120
- path = File.join(source_path, entry.name)
121
- FileUtils.mkdir_p(File.dirname(path))
122
- file.extract(entry, path)
115
+ FileUtils.mkdir_p(source_path)
116
+
117
+ uri = URI(cldr_url)
118
+ ext_name = File.extname(cldr_url)
119
+ file_name = File.basename(cldr_url).chomp(ext_name)
120
+
121
+ Net::FTP.open(uri.host) do |ftp|
122
+ ftp.login
123
+
124
+ Tempfile.open([file_name, ext_name]) do |tmp|
125
+ ftp.getbinaryfile(uri.path, tmp.path)
126
+
127
+ Zip::File.open(tmp.path) do |file|
128
+ file.each do |entry|
129
+ path = File.join(source_path, entry.name)
130
+ FileUtils.mkdir_p(File.dirname(path))
131
+ file.extract(entry, path)
132
+ end
123
133
  end
124
134
  end
125
135
  end
@@ -3,7 +3,7 @@
3
3
  # Copyright 2012 Twitter, Inc
4
4
  # http://www.apache.org/licenses/LICENSE-2.0
5
5
 
6
- require 'open-uri'
6
+ require 'net/ftp'
7
7
  require 'fileutils'
8
8
 
9
9
  module TwitterCldr
@@ -45,8 +45,12 @@ module TwitterCldr
45
45
  def download(file)
46
46
  source_path = source_path_for(file)
47
47
  FileUtils.mkdir_p(File.dirname(source_path))
48
- remote_url = File.join(url % { version: version }, file)
49
- File.open(source_path, 'wb') { |file| file << URI.open(remote_url).read }
48
+ uri = URI(File.join(url % { version: version }, file))
49
+
50
+ Net::FTP.open(uri.host) do |ftp|
51
+ ftp.login
52
+ ftp.getbinaryfile(uri.path, source_path)
53
+ end
50
54
  end
51
55
  end
52
56