twitter_cldr 3.0.3 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. checksums.yaml +13 -5
  2. data/Gemfile +3 -7
  3. data/History.txt +6 -0
  4. data/README.md +1 -1
  5. data/Rakefile +26 -16
  6. data/lib/twitter_cldr/data_readers/number_data_reader.rb +9 -2
  7. data/lib/twitter_cldr/data_readers/timespan_data_reader.rb +11 -12
  8. data/lib/twitter_cldr/formatters/numbers/abbreviated/abbreviated_number_formatter.rb +10 -8
  9. data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +2 -2
  10. data/lib/twitter_cldr/localized/localized_datetime.rb +1 -1
  11. data/lib/twitter_cldr/localized/localized_number.rb +13 -3
  12. data/lib/twitter_cldr/resources/collation_tries_dumper.rb +1 -2
  13. data/lib/twitter_cldr/resources/language_codes_importer.rb +1 -1
  14. data/lib/twitter_cldr/resources/locales_resources_importer.rb +13 -2
  15. data/lib/twitter_cldr/resources/tailoring_importer.rb +3 -2
  16. data/lib/twitter_cldr/shared/calendar.rb +4 -4
  17. data/lib/twitter_cldr/shared/postal_codes.rb +5 -7
  18. data/lib/twitter_cldr/version.rb +1 -1
  19. data/resources/collation/tailoring/de-CH.yml +4 -0
  20. data/resources/collation/tailoring/en-AU.yml +4 -0
  21. data/resources/collation/tailoring/en-CA.yml +4 -0
  22. data/resources/collation/tailoring/en-IE.yml +4 -0
  23. data/resources/collation/tailoring/en-SG.yml +4 -0
  24. data/resources/collation/tailoring/en-ZA.yml +4 -0
  25. data/resources/collation/tailoring/es-CO.yml +4 -0
  26. data/resources/collation/tailoring/es-MX.yml +4 -0
  27. data/resources/collation/tailoring/es-US.yml +4 -0
  28. data/resources/collation/tailoring/fr-BE.yml +4 -0
  29. data/resources/collation/tailoring/fr-CA.yml +4 -0
  30. data/resources/collation/tailoring/fr-CH.yml +4 -0
  31. data/resources/collation/tailoring/it-CH.yml +4 -0
  32. data/resources/collation/tries/af.dump +0 -0
  33. data/resources/collation/tries/ar.dump +0 -0
  34. data/resources/collation/tries/be.dump +0 -0
  35. data/resources/collation/tries/bg.dump +0 -0
  36. data/resources/collation/tries/bn.dump +0 -0
  37. data/resources/collation/tries/ca.dump +0 -0
  38. data/resources/collation/tries/cs.dump +0 -0
  39. data/resources/collation/tries/cy.dump +0 -0
  40. data/resources/collation/tries/da.dump +0 -0
  41. data/resources/collation/tries/de-CH.dump +0 -0
  42. data/resources/collation/tries/de.dump +0 -0
  43. data/resources/collation/tries/default.dump +0 -0
  44. data/resources/collation/tries/el.dump +0 -0
  45. data/resources/collation/tries/en-AU.dump +0 -0
  46. data/resources/collation/tries/en-CA.dump +0 -0
  47. data/resources/collation/tries/en-GB.dump +0 -0
  48. data/resources/collation/tries/en-IE.dump +0 -0
  49. data/resources/collation/tries/en-SG.dump +0 -0
  50. data/resources/collation/tries/en-ZA.dump +0 -0
  51. data/resources/collation/tries/en.dump +0 -0
  52. data/resources/collation/tries/es-CO.dump +0 -0
  53. data/resources/collation/tries/es-MX.dump +0 -0
  54. data/resources/collation/tries/es-US.dump +0 -0
  55. data/resources/collation/tries/es.dump +0 -0
  56. data/resources/collation/tries/eu.dump +0 -0
  57. data/resources/collation/tries/fa.dump +0 -0
  58. data/resources/collation/tries/fi.dump +0 -0
  59. data/resources/collation/tries/fil.dump +0 -0
  60. data/resources/collation/tries/fr-BE.dump +0 -0
  61. data/resources/collation/tries/fr-CA.dump +0 -0
  62. data/resources/collation/tries/fr-CH.dump +0 -0
  63. data/resources/collation/tries/fr.dump +0 -0
  64. data/resources/collation/tries/ga.dump +0 -0
  65. data/resources/collation/tries/gl.dump +0 -0
  66. data/resources/collation/tries/he.dump +0 -0
  67. data/resources/collation/tries/hi.dump +0 -0
  68. data/resources/collation/tries/hr.dump +0 -0
  69. data/resources/collation/tries/hu.dump +0 -0
  70. data/resources/collation/tries/id.dump +0 -0
  71. data/resources/collation/tries/is.dump +0 -0
  72. data/resources/collation/tries/it-CH.dump +0 -0
  73. data/resources/collation/tries/it.dump +0 -0
  74. data/resources/collation/tries/ja.dump +0 -0
  75. data/resources/collation/tries/ko.dump +0 -0
  76. data/resources/collation/tries/lv.dump +0 -0
  77. data/resources/collation/tries/ms.dump +0 -0
  78. data/resources/collation/tries/nb.dump +0 -0
  79. data/resources/collation/tries/nl.dump +0 -0
  80. data/resources/collation/tries/pl.dump +0 -0
  81. data/resources/collation/tries/pt.dump +0 -0
  82. data/resources/collation/tries/ro.dump +0 -0
  83. data/resources/collation/tries/ru.dump +0 -0
  84. data/resources/collation/tries/sk.dump +0 -0
  85. data/resources/collation/tries/sq.dump +0 -0
  86. data/resources/collation/tries/sr.dump +0 -0
  87. data/resources/collation/tries/sv.dump +0 -0
  88. data/resources/collation/tries/ta.dump +0 -0
  89. data/resources/collation/tries/th.dump +0 -0
  90. data/resources/collation/tries/tr.dump +0 -0
  91. data/resources/collation/tries/uk.dump +0 -0
  92. data/resources/collation/tries/ur.dump +0 -0
  93. data/resources/collation/tries/vi.dump +0 -0
  94. data/resources/collation/tries/zh-Hant.dump +0 -0
  95. data/resources/collation/tries/zh.dump +0 -0
  96. data/resources/locales/af/plurals.yml +2 -1
  97. data/resources/locales/af/units.yml +108 -108
  98. data/resources/locales/ar/plurals.yml +5 -4
  99. data/resources/locales/ar/units.yml +220 -220
  100. data/resources/locales/be/plurals.yml +6 -6
  101. data/resources/locales/be/units.yml +122 -122
  102. data/resources/locales/bg/plurals.yml +2 -1
  103. data/resources/locales/bg/units.yml +108 -108
  104. data/resources/locales/bn/plurals.yml +2 -1
  105. data/resources/locales/bn/units.yml +108 -108
  106. data/resources/locales/ca/plurals.yml +3 -2
  107. data/resources/locales/ca/units.yml +108 -108
  108. data/resources/locales/cs/plurals.yml +5 -5
  109. data/resources/locales/cs/units.yml +136 -136
  110. data/resources/locales/cy/plurals.yml +3 -3
  111. data/resources/locales/cy/units.yml +108 -220
  112. data/resources/locales/da/plurals.yml +3 -2
  113. data/resources/locales/da/units.yml +108 -108
  114. data/resources/locales/de-CH/calendars.yml +303 -0
  115. data/resources/locales/de-CH/currencies.yml +955 -0
  116. data/resources/locales/de-CH/languages.yml +583 -0
  117. data/resources/locales/de-CH/layout.yml +5 -0
  118. data/resources/locales/de-CH/lists.yml +23 -0
  119. data/resources/locales/de-CH/numbers.yml +62 -0
  120. data/resources/locales/de-CH/plurals.yml +5 -0
  121. data/resources/locales/de-CH/rbnf.yml +4 -0
  122. data/resources/locales/de-CH/territories.yml +264 -0
  123. data/resources/locales/de-CH/units.yml +108 -0
  124. data/resources/locales/de/plurals.yml +3 -2
  125. data/resources/locales/de/units.yml +108 -108
  126. data/resources/locales/el/plurals.yml +2 -1
  127. data/resources/locales/el/units.yml +108 -108
  128. data/resources/locales/en-AU/calendars.yml +208 -0
  129. data/resources/locales/en-AU/currencies.yml +953 -0
  130. data/resources/locales/en-AU/languages.yml +583 -0
  131. data/resources/locales/en-AU/layout.yml +5 -0
  132. data/resources/locales/en-AU/lists.yml +23 -0
  133. data/resources/locales/en-AU/numbers.yml +62 -0
  134. data/resources/locales/en-AU/plurals.yml +5 -0
  135. data/resources/locales/en-AU/rbnf.yml +4 -0
  136. data/resources/locales/en-AU/territories.yml +264 -0
  137. data/resources/locales/en-AU/units.yml +108 -0
  138. data/resources/locales/en-CA/calendars.yml +208 -0
  139. data/resources/locales/en-CA/currencies.yml +953 -0
  140. data/resources/locales/en-CA/languages.yml +583 -0
  141. data/resources/locales/en-CA/layout.yml +5 -0
  142. data/resources/locales/en-CA/lists.yml +23 -0
  143. data/resources/locales/en-CA/numbers.yml +62 -0
  144. data/resources/locales/en-CA/plurals.yml +5 -0
  145. data/resources/locales/en-CA/rbnf.yml +4 -0
  146. data/resources/locales/en-CA/territories.yml +264 -0
  147. data/resources/locales/en-CA/units.yml +108 -0
  148. data/resources/locales/en-GB/plurals.yml +3 -2
  149. data/resources/locales/en-GB/units.yml +108 -108
  150. data/resources/locales/en-IE/calendars.yml +208 -0
  151. data/resources/locales/en-IE/currencies.yml +953 -0
  152. data/resources/locales/en-IE/languages.yml +583 -0
  153. data/resources/locales/en-IE/layout.yml +5 -0
  154. data/resources/locales/en-IE/lists.yml +23 -0
  155. data/resources/locales/en-IE/numbers.yml +62 -0
  156. data/resources/locales/en-IE/plurals.yml +5 -0
  157. data/resources/locales/en-IE/rbnf.yml +4 -0
  158. data/resources/locales/en-IE/territories.yml +264 -0
  159. data/resources/locales/en-IE/units.yml +108 -0
  160. data/resources/locales/en-SG/calendars.yml +208 -0
  161. data/resources/locales/en-SG/currencies.yml +953 -0
  162. data/resources/locales/en-SG/languages.yml +583 -0
  163. data/resources/locales/en-SG/layout.yml +5 -0
  164. data/resources/locales/en-SG/lists.yml +23 -0
  165. data/resources/locales/en-SG/numbers.yml +62 -0
  166. data/resources/locales/en-SG/plurals.yml +5 -0
  167. data/resources/locales/en-SG/rbnf.yml +4 -0
  168. data/resources/locales/en-SG/territories.yml +264 -0
  169. data/resources/locales/en-SG/units.yml +108 -0
  170. data/resources/locales/en-ZA/calendars.yml +208 -0
  171. data/resources/locales/en-ZA/currencies.yml +954 -0
  172. data/resources/locales/en-ZA/languages.yml +583 -0
  173. data/resources/locales/en-ZA/layout.yml +5 -0
  174. data/resources/locales/en-ZA/lists.yml +23 -0
  175. data/resources/locales/en-ZA/numbers.yml +62 -0
  176. data/resources/locales/en-ZA/plurals.yml +5 -0
  177. data/resources/locales/en-ZA/rbnf.yml +4 -0
  178. data/resources/locales/en-ZA/territories.yml +264 -0
  179. data/resources/locales/en-ZA/units.yml +108 -0
  180. data/resources/locales/en/plurals.yml +3 -2
  181. data/resources/locales/en/units.yml +108 -108
  182. data/resources/locales/es-CO/calendars.yml +290 -0
  183. data/resources/locales/es-CO/currencies.yml +953 -0
  184. data/resources/locales/es-CO/languages.yml +583 -0
  185. data/resources/locales/es-CO/layout.yml +5 -0
  186. data/resources/locales/es-CO/lists.yml +23 -0
  187. data/resources/locales/es-CO/numbers.yml +62 -0
  188. data/resources/locales/es-CO/plurals.yml +4 -0
  189. data/resources/locales/es-CO/rbnf.yml +4 -0
  190. data/resources/locales/es-CO/territories.yml +264 -0
  191. data/resources/locales/es-CO/units.yml +108 -0
  192. data/resources/locales/es-MX/calendars.yml +290 -0
  193. data/resources/locales/es-MX/currencies.yml +1075 -0
  194. data/resources/locales/es-MX/languages.yml +583 -0
  195. data/resources/locales/es-MX/layout.yml +5 -0
  196. data/resources/locales/es-MX/lists.yml +23 -0
  197. data/resources/locales/es-MX/numbers.yml +62 -0
  198. data/resources/locales/es-MX/plurals.yml +4 -0
  199. data/resources/locales/es-MX/rbnf.yml +4 -0
  200. data/resources/locales/es-MX/territories.yml +264 -0
  201. data/resources/locales/es-MX/units.yml +108 -0
  202. data/resources/locales/es-US/calendars.yml +296 -0
  203. data/resources/locales/es-US/currencies.yml +953 -0
  204. data/resources/locales/es-US/languages.yml +583 -0
  205. data/resources/locales/es-US/layout.yml +5 -0
  206. data/resources/locales/es-US/lists.yml +23 -0
  207. data/resources/locales/es-US/numbers.yml +62 -0
  208. data/resources/locales/es-US/plurals.yml +4 -0
  209. data/resources/locales/es-US/rbnf.yml +4 -0
  210. data/resources/locales/es-US/territories.yml +264 -0
  211. data/resources/locales/es-US/units.yml +108 -0
  212. data/resources/locales/es/plurals.yml +2 -1
  213. data/resources/locales/es/units.yml +108 -108
  214. data/resources/locales/eu/plurals.yml +2 -1
  215. data/resources/locales/eu/units.yml +108 -108
  216. data/resources/locales/fa/plurals.yml +2 -1
  217. data/resources/locales/fa/units.yml +108 -108
  218. data/resources/locales/fi/plurals.yml +3 -2
  219. data/resources/locales/fi/units.yml +108 -108
  220. data/resources/locales/fil/plurals.yml +3 -2
  221. data/resources/locales/fil/units.yml +108 -108
  222. data/resources/locales/fr-BE/calendars.yml +305 -0
  223. data/resources/locales/fr-BE/currencies.yml +968 -0
  224. data/resources/locales/fr-BE/languages.yml +583 -0
  225. data/resources/locales/fr-BE/layout.yml +5 -0
  226. data/resources/locales/fr-BE/lists.yml +23 -0
  227. data/resources/locales/fr-BE/numbers.yml +62 -0
  228. data/resources/locales/fr-BE/plurals.yml +4 -0
  229. data/resources/locales/fr-BE/rbnf.yml +596 -0
  230. data/resources/locales/fr-BE/territories.yml +264 -0
  231. data/resources/locales/fr-BE/units.yml +108 -0
  232. data/resources/locales/fr-CA/calendars.yml +308 -0
  233. data/resources/locales/fr-CA/currencies.yml +968 -0
  234. data/resources/locales/fr-CA/languages.yml +583 -0
  235. data/resources/locales/fr-CA/layout.yml +5 -0
  236. data/resources/locales/fr-CA/lists.yml +23 -0
  237. data/resources/locales/fr-CA/numbers.yml +62 -0
  238. data/resources/locales/fr-CA/plurals.yml +4 -0
  239. data/resources/locales/fr-CA/rbnf.yml +4 -0
  240. data/resources/locales/fr-CA/territories.yml +264 -0
  241. data/resources/locales/fr-CA/units.yml +108 -0
  242. data/resources/locales/fr-CH/calendars.yml +307 -0
  243. data/resources/locales/fr-CH/currencies.yml +969 -0
  244. data/resources/locales/fr-CH/languages.yml +583 -0
  245. data/resources/locales/fr-CH/layout.yml +5 -0
  246. data/resources/locales/fr-CH/lists.yml +23 -0
  247. data/resources/locales/fr-CH/numbers.yml +62 -0
  248. data/resources/locales/fr-CH/plurals.yml +4 -0
  249. data/resources/locales/fr-CH/rbnf.yml +599 -0
  250. data/resources/locales/fr-CH/territories.yml +264 -0
  251. data/resources/locales/fr-CH/units.yml +108 -0
  252. data/resources/locales/fr/plurals.yml +2 -1
  253. data/resources/locales/fr/units.yml +108 -108
  254. data/resources/locales/ga/plurals.yml +4 -3
  255. data/resources/locales/ga/units.yml +108 -108
  256. data/resources/locales/gl/plurals.yml +3 -2
  257. data/resources/locales/gl/units.yml +108 -108
  258. data/resources/locales/he/plurals.yml +5 -5
  259. data/resources/locales/he/units.yml +164 -164
  260. data/resources/locales/hi/plurals.yml +2 -1
  261. data/resources/locales/hi/units.yml +108 -108
  262. data/resources/locales/hr/plurals.yml +7 -11
  263. data/resources/locales/hr/units.yml +164 -164
  264. data/resources/locales/hu/plurals.yml +2 -1
  265. data/resources/locales/hu/units.yml +108 -108
  266. data/resources/locales/id/plurals.yml +2 -1
  267. data/resources/locales/id/units.yml +108 -108
  268. data/resources/locales/is/plurals.yml +4 -4
  269. data/resources/locales/is/units.yml +108 -108
  270. data/resources/locales/it-CH/calendars.yml +291 -0
  271. data/resources/locales/it-CH/currencies.yml +954 -0
  272. data/resources/locales/it-CH/languages.yml +583 -0
  273. data/resources/locales/it-CH/layout.yml +5 -0
  274. data/resources/locales/it-CH/lists.yml +23 -0
  275. data/resources/locales/it-CH/numbers.yml +62 -0
  276. data/resources/locales/it-CH/plurals.yml +5 -0
  277. data/resources/locales/it-CH/rbnf.yml +4 -0
  278. data/resources/locales/it-CH/territories.yml +264 -0
  279. data/resources/locales/it-CH/units.yml +108 -0
  280. data/resources/locales/it/plurals.yml +3 -2
  281. data/resources/locales/it/units.yml +108 -108
  282. data/resources/locales/ja/plurals.yml +2 -1
  283. data/resources/locales/ja/units.yml +108 -108
  284. data/resources/locales/ko/plurals.yml +2 -1
  285. data/resources/locales/ko/units.yml +108 -108
  286. data/resources/locales/lv/plurals.yml +8 -10
  287. data/resources/locales/lv/units.yml +136 -136
  288. data/resources/locales/ms/plurals.yml +2 -1
  289. data/resources/locales/ms/units.yml +108 -108
  290. data/resources/locales/nb/plurals.yml +2 -1
  291. data/resources/locales/nb/units.yml +108 -108
  292. data/resources/locales/nl/plurals.yml +3 -2
  293. data/resources/locales/nl/units.yml +108 -108
  294. data/resources/locales/pl/plurals.yml +8 -10
  295. data/resources/locales/pl/units.yml +164 -164
  296. data/resources/locales/pt/plurals.yml +4 -3
  297. data/resources/locales/pt/units.yml +108 -108
  298. data/resources/locales/ro/plurals.yml +5 -4
  299. data/resources/locales/ro/units.yml +136 -136
  300. data/resources/locales/ru/plurals.yml +6 -7
  301. data/resources/locales/ru/units.yml +164 -164
  302. data/resources/locales/sk/plurals.yml +5 -5
  303. data/resources/locales/sk/units.yml +136 -136
  304. data/resources/locales/sq/plurals.yml +2 -1
  305. data/resources/locales/sq/units.yml +108 -108
  306. data/resources/locales/sr/plurals.yml +7 -11
  307. data/resources/locales/sr/units.yml +164 -164
  308. data/resources/locales/sv/plurals.yml +3 -2
  309. data/resources/locales/sv/units.yml +108 -108
  310. data/resources/locales/ta/plurals.yml +2 -1
  311. data/resources/locales/ta/units.yml +108 -108
  312. data/resources/locales/th/plurals.yml +2 -1
  313. data/resources/locales/th/units.yml +108 -108
  314. data/resources/locales/tr/plurals.yml +2 -1
  315. data/resources/locales/tr/units.yml +108 -108
  316. data/resources/locales/uk/plurals.yml +8 -9
  317. data/resources/locales/uk/units.yml +164 -164
  318. data/resources/locales/ur/plurals.yml +3 -2
  319. data/resources/locales/ur/units.yml +108 -108
  320. data/resources/locales/vi/plurals.yml +2 -1
  321. data/resources/locales/vi/units.yml +108 -108
  322. data/resources/locales/zh-Hant/plurals.yml +3 -2
  323. data/resources/locales/zh-Hant/units.yml +108 -108
  324. data/resources/locales/zh/plurals.yml +2 -1
  325. data/resources/locales/zh/units.yml +108 -108
  326. data/resources/shared/language_codes_table.dump +0 -0
  327. data/resources/shared/phone_codes.yml +9 -1
  328. data/resources/shared/postal_codes.yml +1276 -333
  329. data/resources/shared/segments/segments_root.yml +3 -0
  330. data/spec/data_readers/timespan_data_reader_spec.rb +16 -0
  331. data/spec/formatters/calendars/datetime_formatter_spec.rb +2 -2
  332. data/spec/formatters/numbers/abbreviated/abbreviated_number_formatter_spec.rb +25 -17
  333. data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +47 -34
  334. data/spec/formatters/numbers/currency_formatter_spec.rb +1 -1
  335. data/spec/formatters/numbers/decimal_formatter_spec.rb +1 -1
  336. data/spec/formatters/numbers/number_formatter_spec.rb +1 -1
  337. data/spec/formatters/numbers/percent_formatter_spec.rb +1 -1
  338. data/spec/formatters/numbers/rbnf/locales/de-CH/rbnf_test.yml +940 -0
  339. data/spec/formatters/numbers/rbnf/locales/en-AU/rbnf_test.yml +1291 -0
  340. data/spec/formatters/numbers/rbnf/locales/en-CA/rbnf_test.yml +1291 -0
  341. data/spec/formatters/numbers/rbnf/locales/en-IE/rbnf_test.yml +1291 -0
  342. data/spec/formatters/numbers/rbnf/locales/en-SG/rbnf_test.yml +1291 -0
  343. data/spec/formatters/numbers/rbnf/locales/en-ZA/rbnf_test.yml +1291 -0
  344. data/spec/formatters/numbers/rbnf/locales/es-CO/rbnf_test.yml +1642 -0
  345. data/spec/formatters/numbers/rbnf/locales/es-MX/rbnf_test.yml +1642 -0
  346. data/spec/formatters/numbers/rbnf/locales/es-US/rbnf_test.yml +1642 -0
  347. data/spec/formatters/numbers/rbnf/locales/fr-BE/rbnf_test.yml +1408 -0
  348. data/spec/formatters/numbers/rbnf/locales/fr-CA/rbnf_test.yml +1408 -0
  349. data/spec/formatters/numbers/rbnf/locales/fr-CH/rbnf_test.yml +1408 -0
  350. data/spec/formatters/numbers/rbnf/locales/it-CH/rbnf_test.yml +1174 -0
  351. data/spec/formatters/plurals/rules_spec.rb +4 -0
  352. data/spec/localized/localized_datetime_spec.rb +1 -1
  353. data/spec/localized/localized_number_spec.rb +28 -0
  354. data/spec/localized/localized_time_spec.rb +1 -1
  355. data/spec/shared/calendar_spec.rb +4 -1
  356. data/spec/tokenizers/calendars/date_tokenizer_spec.rb +3 -3
  357. data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +1 -2
  358. data/spec/tokenizers/calendars/time_tokenizer_spec.rb +2 -2
  359. data/spec/tokenizers/numbers/number_tokenizer_spec.rb +4 -4
  360. metadata +399 -230
  361. data/spec/data_readers/timespan_data_reader.rb +0 -22
@@ -167,6 +167,9 @@
167
167
  -
168
168
  :id: "21.1"
169
169
  :value: " $HL ($HY | $BA) × "
170
+ -
171
+ :id: "21.2"
172
+ :value: " $SY × $HL "
170
173
  -
171
174
  :id: "22.01"
172
175
  :value: " ($AL | $HL) × $IN "
@@ -0,0 +1,16 @@
1
+ # encoding: UTF-8
2
+
3
+ # Copyright 2012 Twitter, Inc
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ require 'spec_helper'
7
+
8
+ include TwitterCldr::DataReaders
9
+
10
+ describe TimespanDataReader do
11
+ let(:data_reader) { TimespanDataReader.new(:sv, 2) }
12
+
13
+ xit "works" do
14
+ # TODO: add tests
15
+ end
16
+ end
@@ -9,7 +9,7 @@ include TwitterCldr::Formatters
9
9
 
10
10
  describe DateTimeFormatter do
11
11
  before(:each) do
12
- data_reader = DateTimeDataReader.new(:de)
12
+ data_reader = TwitterCldr::DataReaders::DateTimeDataReader.new(:de)
13
13
  @formatter = DateTimeFormatter.new(data_reader)
14
14
  end
15
15
 
@@ -395,7 +395,7 @@ describe DateTimeFormatter do
395
395
 
396
396
  describe "#era" do
397
397
  before(:each) do
398
- data_reader = DateTimeDataReader.new(:en)
398
+ data_reader = TwitterCldr::DataReaders::DateTimeDataReader.new(:en)
399
399
  @formatter = DateTimeFormatter.new(data_reader)
400
400
  end
401
401
 
@@ -6,32 +6,40 @@
6
6
  require 'spec_helper'
7
7
 
8
8
  include TwitterCldr::Formatters
9
+ include TwitterCldr::Tokenizers
9
10
 
10
11
  describe AbbreviatedNumberFormatter do
11
12
  let(:formatter) { AbbreviatedNumberFormatter.new(:locale => :en) }
13
+ let(:number) { 123456 }
12
14
 
13
- describe "#transform_number" do
14
- it "chops off the number to the necessary number of sig figs" do
15
- expect(formatter.send(:transform_number, 10 ** 3)).to eq(1)
16
- expect(formatter.send(:transform_number, 10 ** 4)).to eq(10)
17
- expect(formatter.send(:transform_number, 10 ** 5)).to eq(100)
18
- expect(formatter.send(:transform_number, 10 ** 6)).to eq(1)
19
- expect(formatter.send(:transform_number, 10 ** 7)).to eq(10)
20
- expect(formatter.send(:transform_number, 10 ** 8)).to eq(100)
21
- expect(formatter.send(:transform_number, 10 ** 9)).to eq(1)
22
- expect(formatter.send(:transform_number, 10 ** 10)).to eq(10)
23
- expect(formatter.send(:transform_number, 10 ** 11)).to eq(100)
24
- expect(formatter.send(:transform_number, 10 ** 12)).to eq(1)
25
- expect(formatter.send(:transform_number, 10 ** 13)).to eq(10)
26
- expect(formatter.send(:transform_number, 10 ** 14)).to eq(100)
15
+ describe "#truncate_number" do
16
+ let(:number) { 1234 }
17
+
18
+ def truncate(number, integer_format)
19
+ integer_formatter = Object.new
20
+ stub(integer_formatter).format { integer_format }
21
+ formatter.send(:truncate_number, number, integer_formatter)
27
22
  end
28
23
 
29
- it "returns the original number if greater than 10^15" do
30
- expect(formatter.send(:transform_number, 10 ** 15)).to eq(10 ** 15)
24
+ it "truncates the number based on the integer format string" do
25
+ expect(truncate(number, "0")).to eq(1.234)
26
+ expect(truncate(number, "00")).to eq(12.34)
27
+ expect(truncate(number, "000")).to eq(123.4)
28
+ expect(truncate(number, "0000")).to eq(1234)
29
+ expect(truncate(number, "00000")).to eq(1234)
30
+ expect(truncate(number, "000000")).to eq(1234)
31
+ end
32
+
33
+ it "raises an exception if the format string is invalid" do
34
+ expect { truncate(number, "00.00") }.to raise_error(ArgumentError)
31
35
  end
32
36
 
33
37
  it "returns the original number if less than 10^3" do
34
- expect(formatter.send(:transform_number, 999)).to eq(999)
38
+ expect(truncate(999, "000")).to eq(999)
39
+ end
40
+
41
+ it "returns the original number if greater than 10^15" do
42
+ expect(truncate(10 ** 15, "000")).to eq(10 ** 15)
35
43
  end
36
44
  end
37
45
  end
@@ -9,49 +9,62 @@ include TwitterCldr::Formatters
9
9
 
10
10
  describe ShortDecimalFormatter do
11
11
  let(:data_reader) do
12
- TwitterCldr::DataReaders::NumberDataReader.new(:en, :type => :short_decimal)
12
+ TwitterCldr::DataReaders::NumberDataReader.new(locale, :type => :short_decimal)
13
13
  end
14
14
 
15
15
  let(:formatter) { data_reader.formatter }
16
16
  let(:tokenizer) { data_reader.tokenizer }
17
17
 
18
- it "formats valid numbers correctly (from 10^3 - 10^15)" do
19
- expected = {
20
- 10 ** 3 => "1K",
21
- 10 ** 4 => "10K",
22
- 10 ** 5 => "100K",
23
- 10 ** 6 => "1M",
24
- 10 ** 7 => "10M",
25
- 10 ** 8 => "100M",
26
- 10 ** 9 => "1B",
27
- 10 ** 10 => "10B",
28
- 10 ** 11 => "100B",
29
- 10 ** 12 => "1T",
30
- 10 ** 13 => "10T",
31
- 10 ** 14 => "100T"
32
- }
33
-
34
- expected.each do |num, text|
35
- pattern = data_reader.pattern(num)
36
- expect(formatter.format(tokenizer.tokenize(pattern), num)).to eq(text)
37
- end
18
+ def format_number(number, options = {})
19
+ formatter.format(tokenizer.tokenize(data_reader.pattern(number)), number, options.merge(:type => @type))
38
20
  end
39
21
 
40
- it "formats the number as if it were a straight decimal if it exceeds 10^15" do
41
- number = 10**15
42
- pattern = data_reader.pattern(number)
43
- expect(formatter.format(tokenizer.tokenize(pattern), number)).to eq("1,000,000,000,000,000")
44
- end
22
+ context "with English locale" do
23
+ let(:locale) { :en }
24
+
25
+ it "formats valid numbers correctly (from 10^3 - 10^15)" do
26
+ expected = {
27
+ 10 ** 3 => "1K",
28
+ 10 ** 4 => "10K",
29
+ 10 ** 5 => "100K",
30
+ 10 ** 6 => "1M",
31
+ 10 ** 7 => "10M",
32
+ 10 ** 8 => "100M",
33
+ 10 ** 9 => "1B",
34
+ 10 ** 10 => "10B",
35
+ 10 ** 11 => "100B",
36
+ 10 ** 12 => "1T",
37
+ 10 ** 13 => "10T",
38
+ 10 ** 14 => "100T"
39
+ }
40
+
41
+ expected.each do |num, text|
42
+ expect(format_number(num)).to eq(text)
43
+ end
44
+ end
45
+
46
+ it "formats the number as if it were a straight decimal if it exceeds 10^15" do
47
+ number = 10 ** 15
48
+ expect(format_number(number)).to eq("1,000,000,000,000,000")
49
+ end
50
+
51
+ it "formats the number as if it were a straight decimal if it's less than 1000" do
52
+ number = 500
53
+ expect(format_number(number)).to eq("500")
54
+ end
45
55
 
46
- it "formats the number as if it were a straight decimal if it's less than 1000" do
47
- number = 500
48
- pattern = data_reader.pattern(number)
49
- expect(formatter.format(tokenizer.tokenize(pattern), number)).to eq("500")
56
+ it "respects the :precision option" do
57
+ number = 12345
58
+ expect(format_number(number, :precision => 3)).to match_normalized("12.345K")
59
+ end
50
60
  end
51
61
 
52
- it "respects the :precision option" do
53
- number = 12345
54
- pattern = data_reader.pattern(number)
55
- expect(formatter.format(tokenizer.tokenize(pattern), number, :precision => 3)).to match_normalized("12.345K")
62
+ context "with Japanese locale" do
63
+ let(:locale) { :ja }
64
+
65
+ it "formats numbers in terms of 'ten thousands'" do
66
+ number = 93_000_000
67
+ expect(format_number(number)).to match_normalized("9300万")
68
+ end
56
69
  end
57
70
  end
@@ -9,7 +9,7 @@ include TwitterCldr::Formatters
9
9
 
10
10
  describe CurrencyFormatter do
11
11
  describe "#format" do
12
- let(:data_reader) { NumberDataReader.new(:msa, :type => :currency) }
12
+ let(:data_reader) { TwitterCldr::DataReaders::NumberDataReader.new(:msa, :type => :currency) }
13
13
  let(:tokenizer) { data_reader.tokenizer }
14
14
  let(:formatter) { data_reader.formatter }
15
15
 
@@ -8,7 +8,7 @@ require 'spec_helper'
8
8
  include TwitterCldr::Formatters
9
9
 
10
10
  describe DecimalFormatter do
11
- let(:data_reader) { NumberDataReader.new(:nl, :type => :decimal) }
11
+ let(:data_reader) { TwitterCldr::DataReaders::NumberDataReader.new(:nl, :type => :decimal) }
12
12
  let(:formatter) { data_reader.formatter }
13
13
  let(:tokenizer) { data_reader.tokenizer }
14
14
  let(:negative_number) { -12 }
@@ -8,7 +8,7 @@ require 'spec_helper'
8
8
  include TwitterCldr::Formatters
9
9
 
10
10
  describe NumberFormatter do
11
- let(:data_reader) { NumberDataReader.new(:sv, :type => :decimal) }
11
+ let(:data_reader) { TwitterCldr::DataReaders::NumberDataReader.new(:sv, :type => :decimal) }
12
12
  let(:formatter) { data_reader.formatter }
13
13
  let(:tokenizer) { data_reader.tokenizer }
14
14
 
@@ -8,7 +8,7 @@ require 'spec_helper'
8
8
  include TwitterCldr::Formatters
9
9
 
10
10
  describe PercentFormatter do
11
- let(:data_reader) { NumberDataReader.new(:da, :type => :percent) }
11
+ let(:data_reader) { TwitterCldr::DataReaders::NumberDataReader.new(:da, :type => :percent) }
12
12
  let(:formatter) { data_reader.formatter }
13
13
  let(:tokenizer) { data_reader.tokenizer }
14
14
  let(:negative_number) { -12 }
@@ -0,0 +1,940 @@
1
+ ---
2
+ SpelloutRules:
3
+ spellout-ordinal:
4
+ -1141: minus ein­tausend­ein­hundert­ein­und­vierzigste
5
+ -1142: minus ein­tausend­ein­hundert­zwei­und­vierzigste
6
+ -1143: minus ein­tausend­ein­hundert­drei­und­vierzigste
7
+ -100: minus ein­hundertste
8
+ -75: minus fünf­und­siebzigste
9
+ -50: minus fünfzigste
10
+ -24: minus vier­und­zwanzigste
11
+ 0: nullte
12
+ 1: erste
13
+ 2: zweite
14
+ 3: dritte
15
+ 4: vierte
16
+ 5: fünfte
17
+ 6: sechste
18
+ 7: siebte
19
+ 8: achte
20
+ 9: neunte
21
+ 10: zehnte
22
+ 11: elfte
23
+ 12: zwölfte
24
+ 13: dreizehnte
25
+ 14: vierzehnte
26
+ 15: fünfzehnte
27
+ 16: sechzehnte
28
+ 17: siebzehnte
29
+ 18: achtzehnte
30
+ 19: neunzehnte
31
+ 20: zwanzigste
32
+ 21: ein­und­zwanzigste
33
+ 22: zwei­und­zwanzigste
34
+ 23: drei­und­zwanzigste
35
+ 24: vier­und­zwanzigste
36
+ 25: fünf­und­zwanzigste
37
+ 26: sechs­und­zwanzigste
38
+ 27: sieben­und­zwanzigste
39
+ 28: acht­und­zwanzigste
40
+ 29: neun­und­zwanzigste
41
+ 30: dreißigste
42
+ 31: ein­und­dreißigste
43
+ 32: zwei­und­dreißigste
44
+ 33: drei­und­dreißigste
45
+ 34: vier­und­dreißigste
46
+ 35: fünf­und­dreißigste
47
+ 36: sechs­und­dreißigste
48
+ 37: sieben­und­dreißigste
49
+ 38: acht­und­dreißigste
50
+ 39: neun­und­dreißigste
51
+ 40: vierzigste
52
+ 41: ein­und­vierzigste
53
+ 42: zwei­und­vierzigste
54
+ 43: drei­und­vierzigste
55
+ 44: vier­und­vierzigste
56
+ 45: fünf­und­vierzigste
57
+ 46: sechs­und­vierzigste
58
+ 47: sieben­und­vierzigste
59
+ 48: acht­und­vierzigste
60
+ 49: neun­und­vierzigste
61
+ 50: fünfzigste
62
+ 51: ein­und­fünfzigste
63
+ 52: zwei­und­fünfzigste
64
+ 53: drei­und­fünfzigste
65
+ 54: vier­und­fünfzigste
66
+ 55: fünf­und­fünfzigste
67
+ 56: sechs­und­fünfzigste
68
+ 57: sieben­und­fünfzigste
69
+ 58: acht­und­fünfzigste
70
+ 59: neun­und­fünfzigste
71
+ 60: sechzigste
72
+ 61: ein­und­sechzigste
73
+ 62: zwei­und­sechzigste
74
+ 63: drei­und­sechzigste
75
+ 64: vier­und­sechzigste
76
+ 65: fünf­und­sechzigste
77
+ 66: sechs­und­sechzigste
78
+ 67: sieben­und­sechzigste
79
+ 68: acht­und­sechzigste
80
+ 69: neun­und­sechzigste
81
+ 70: siebzigste
82
+ 71: ein­und­siebzigste
83
+ 72: zwei­und­siebzigste
84
+ 73: drei­und­siebzigste
85
+ 74: vier­und­siebzigste
86
+ 75: fünf­und­siebzigste
87
+ 76: sechs­und­siebzigste
88
+ 77: sieben­und­siebzigste
89
+ 78: acht­und­siebzigste
90
+ 79: neun­und­siebzigste
91
+ 80: achtzigste
92
+ 81: ein­und­achtzigste
93
+ 82: zwei­und­achtzigste
94
+ 83: drei­und­achtzigste
95
+ 84: vier­und­achtzigste
96
+ 85: fünf­und­achtzigste
97
+ 86: sechs­und­achtzigste
98
+ 87: sieben­und­achtzigste
99
+ 88: acht­und­achtzigste
100
+ 89: neun­und­achtzigste
101
+ 90: neunzigste
102
+ 91: ein­und­neunzigste
103
+ 92: zwei­und­neunzigste
104
+ 93: drei­und­neunzigste
105
+ 94: vier­und­neunzigste
106
+ 95: fünf­und­neunzigste
107
+ 96: sechs­und­neunzigste
108
+ 97: sieben­und­neunzigste
109
+ 98: acht­und­neunzigste
110
+ 99: neun­und­neunzigste
111
+ 100: ein­hundertste
112
+ 321: drei­hundert­ein­und­zwanzigste
113
+ 322: drei­hundert­zwei­und­zwanzigste
114
+ 323: drei­hundert­drei­und­zwanzigste
115
+ 1141: ein­tausend­ein­hundert­ein­und­vierzigste
116
+ 1142: ein­tausend­ein­hundert­zwei­und­vierzigste
117
+ 1143: ein­tausend­ein­hundert­drei­und­vierzigste
118
+ 10311: zehn­tausend­drei­hundert­elfte
119
+ 138400: ein­hundert­acht­und­dreißig­tausend­vier­hundertste
120
+ spellout-cardinal-feminine:
121
+ -1141: minus ein­tausend­ein­hundert­ein­und­vierzig
122
+ -1142: minus ein­tausend­ein­hundert­zwei­und­vierzig
123
+ -1143: minus ein­tausend­ein­hundert­drei­und­vierzig
124
+ -100: minus ein­hundert
125
+ -75: minus fünf­und­siebzig
126
+ -50: minus fünfzig
127
+ -24: minus vier­und­zwanzig
128
+ 0: 'null'
129
+ 1: eine
130
+ 2: zwei
131
+ 3: drei
132
+ 4: vier
133
+ 5: fünf
134
+ 6: sechs
135
+ 7: sieben
136
+ 8: acht
137
+ 9: neun
138
+ 10: zehn
139
+ 11: elf
140
+ 12: zwölf
141
+ 13: dreizehn
142
+ 14: vierzehn
143
+ 15: fünfzehn
144
+ 16: sechzehn
145
+ 17: siebzehn
146
+ 18: achtzehn
147
+ 19: neunzehn
148
+ 20: zwanzig
149
+ 21: ein­und­zwanzig
150
+ 22: zwei­und­zwanzig
151
+ 23: drei­und­zwanzig
152
+ 24: vier­und­zwanzig
153
+ 25: fünf­und­zwanzig
154
+ 26: sechs­und­zwanzig
155
+ 27: sieben­und­zwanzig
156
+ 28: acht­und­zwanzig
157
+ 29: neun­und­zwanzig
158
+ 30: dreißig
159
+ 31: ein­und­dreißig
160
+ 32: zwei­und­dreißig
161
+ 33: drei­und­dreißig
162
+ 34: vier­und­dreißig
163
+ 35: fünf­und­dreißig
164
+ 36: sechs­und­dreißig
165
+ 37: sieben­und­dreißig
166
+ 38: acht­und­dreißig
167
+ 39: neun­und­dreißig
168
+ 40: vierzig
169
+ 41: ein­und­vierzig
170
+ 42: zwei­und­vierzig
171
+ 43: drei­und­vierzig
172
+ 44: vier­und­vierzig
173
+ 45: fünf­und­vierzig
174
+ 46: sechs­und­vierzig
175
+ 47: sieben­und­vierzig
176
+ 48: acht­und­vierzig
177
+ 49: neun­und­vierzig
178
+ 50: fünfzig
179
+ 51: ein­und­fünfzig
180
+ 52: zwei­und­fünfzig
181
+ 53: drei­und­fünfzig
182
+ 54: vier­und­fünfzig
183
+ 55: fünf­und­fünfzig
184
+ 56: sechs­und­fünfzig
185
+ 57: sieben­und­fünfzig
186
+ 58: acht­und­fünfzig
187
+ 59: neun­und­fünfzig
188
+ 60: sechzig
189
+ 61: ein­und­sechzig
190
+ 62: zwei­und­sechzig
191
+ 63: drei­und­sechzig
192
+ 64: vier­und­sechzig
193
+ 65: fünf­und­sechzig
194
+ 66: sechs­und­sechzig
195
+ 67: sieben­und­sechzig
196
+ 68: acht­und­sechzig
197
+ 69: neun­und­sechzig
198
+ 70: siebzig
199
+ 71: ein­und­siebzig
200
+ 72: zwei­und­siebzig
201
+ 73: drei­und­siebzig
202
+ 74: vier­und­siebzig
203
+ 75: fünf­und­siebzig
204
+ 76: sechs­und­siebzig
205
+ 77: sieben­und­siebzig
206
+ 78: acht­und­siebzig
207
+ 79: neun­und­siebzig
208
+ 80: achtzig
209
+ 81: ein­und­achtzig
210
+ 82: zwei­und­achtzig
211
+ 83: drei­und­achtzig
212
+ 84: vier­und­achtzig
213
+ 85: fünf­und­achtzig
214
+ 86: sechs­und­achtzig
215
+ 87: sieben­und­achtzig
216
+ 88: acht­und­achtzig
217
+ 89: neun­und­achtzig
218
+ 90: neunzig
219
+ 91: ein­und­neunzig
220
+ 92: zwei­und­neunzig
221
+ 93: drei­und­neunzig
222
+ 94: vier­und­neunzig
223
+ 95: fünf­und­neunzig
224
+ 96: sechs­und­neunzig
225
+ 97: sieben­und­neunzig
226
+ 98: acht­und­neunzig
227
+ 99: neun­und­neunzig
228
+ 100: ein­hundert
229
+ 321: drei­hundert­ein­und­zwanzig
230
+ 322: drei­hundert­zwei­und­zwanzig
231
+ 323: drei­hundert­drei­und­zwanzig
232
+ 1141: ein­tausend­ein­hundert­ein­und­vierzig
233
+ 1142: ein­tausend­ein­hundert­zwei­und­vierzig
234
+ 1143: ein­tausend­ein­hundert­drei­und­vierzig
235
+ 10311: zehn­tausend­drei­hundert­elf
236
+ 138400: ein­hundert­acht­und­dreißig­tausend­vier­hundert
237
+ spellout-cardinal-masculine:
238
+ -1141: minus ein­tausend­ein­hundert­ein­und­vierzig
239
+ -1142: minus ein­tausend­ein­hundert­zwei­und­vierzig
240
+ -1143: minus ein­tausend­ein­hundert­drei­und­vierzig
241
+ -100: minus ein­hundert
242
+ -75: minus fünf­und­siebzig
243
+ -50: minus fünfzig
244
+ -24: minus vier­und­zwanzig
245
+ 0: 'null'
246
+ 1: ein
247
+ 2: zwei
248
+ 3: drei
249
+ 4: vier
250
+ 5: fünf
251
+ 6: sechs
252
+ 7: sieben
253
+ 8: acht
254
+ 9: neun
255
+ 10: zehn
256
+ 11: elf
257
+ 12: zwölf
258
+ 13: dreizehn
259
+ 14: vierzehn
260
+ 15: fünfzehn
261
+ 16: sechzehn
262
+ 17: siebzehn
263
+ 18: achtzehn
264
+ 19: neunzehn
265
+ 20: zwanzig
266
+ 21: ein­und­zwanzig
267
+ 22: zwei­und­zwanzig
268
+ 23: drei­und­zwanzig
269
+ 24: vier­und­zwanzig
270
+ 25: fünf­und­zwanzig
271
+ 26: sechs­und­zwanzig
272
+ 27: sieben­und­zwanzig
273
+ 28: acht­und­zwanzig
274
+ 29: neun­und­zwanzig
275
+ 30: dreißig
276
+ 31: ein­und­dreißig
277
+ 32: zwei­und­dreißig
278
+ 33: drei­und­dreißig
279
+ 34: vier­und­dreißig
280
+ 35: fünf­und­dreißig
281
+ 36: sechs­und­dreißig
282
+ 37: sieben­und­dreißig
283
+ 38: acht­und­dreißig
284
+ 39: neun­und­dreißig
285
+ 40: vierzig
286
+ 41: ein­und­vierzig
287
+ 42: zwei­und­vierzig
288
+ 43: drei­und­vierzig
289
+ 44: vier­und­vierzig
290
+ 45: fünf­und­vierzig
291
+ 46: sechs­und­vierzig
292
+ 47: sieben­und­vierzig
293
+ 48: acht­und­vierzig
294
+ 49: neun­und­vierzig
295
+ 50: fünfzig
296
+ 51: ein­und­fünfzig
297
+ 52: zwei­und­fünfzig
298
+ 53: drei­und­fünfzig
299
+ 54: vier­und­fünfzig
300
+ 55: fünf­und­fünfzig
301
+ 56: sechs­und­fünfzig
302
+ 57: sieben­und­fünfzig
303
+ 58: acht­und­fünfzig
304
+ 59: neun­und­fünfzig
305
+ 60: sechzig
306
+ 61: ein­und­sechzig
307
+ 62: zwei­und­sechzig
308
+ 63: drei­und­sechzig
309
+ 64: vier­und­sechzig
310
+ 65: fünf­und­sechzig
311
+ 66: sechs­und­sechzig
312
+ 67: sieben­und­sechzig
313
+ 68: acht­und­sechzig
314
+ 69: neun­und­sechzig
315
+ 70: siebzig
316
+ 71: ein­und­siebzig
317
+ 72: zwei­und­siebzig
318
+ 73: drei­und­siebzig
319
+ 74: vier­und­siebzig
320
+ 75: fünf­und­siebzig
321
+ 76: sechs­und­siebzig
322
+ 77: sieben­und­siebzig
323
+ 78: acht­und­siebzig
324
+ 79: neun­und­siebzig
325
+ 80: achtzig
326
+ 81: ein­und­achtzig
327
+ 82: zwei­und­achtzig
328
+ 83: drei­und­achtzig
329
+ 84: vier­und­achtzig
330
+ 85: fünf­und­achtzig
331
+ 86: sechs­und­achtzig
332
+ 87: sieben­und­achtzig
333
+ 88: acht­und­achtzig
334
+ 89: neun­und­achtzig
335
+ 90: neunzig
336
+ 91: ein­und­neunzig
337
+ 92: zwei­und­neunzig
338
+ 93: drei­und­neunzig
339
+ 94: vier­und­neunzig
340
+ 95: fünf­und­neunzig
341
+ 96: sechs­und­neunzig
342
+ 97: sieben­und­neunzig
343
+ 98: acht­und­neunzig
344
+ 99: neun­und­neunzig
345
+ 100: ein­hundert
346
+ 321: drei­hundert­ein­und­zwanzig
347
+ 322: drei­hundert­zwei­und­zwanzig
348
+ 323: drei­hundert­drei­und­zwanzig
349
+ 1141: ein­tausend­ein­hundert­ein­und­vierzig
350
+ 1142: ein­tausend­ein­hundert­zwei­und­vierzig
351
+ 1143: ein­tausend­ein­hundert­drei­und­vierzig
352
+ 10311: zehn­tausend­drei­hundert­elf
353
+ 138400: ein­hundert­acht­und­dreißig­tausend­vier­hundert
354
+ spellout-cardinal-neuter:
355
+ -1141: minus ein­tausend­ein­hundert­ein­und­vierzig
356
+ -1142: minus ein­tausend­ein­hundert­zwei­und­vierzig
357
+ -1143: minus ein­tausend­ein­hundert­drei­und­vierzig
358
+ -100: minus ein­hundert
359
+ -75: minus fünf­und­siebzig
360
+ -50: minus fünfzig
361
+ -24: minus vier­und­zwanzig
362
+ 0: 'null'
363
+ 1: ein
364
+ 2: zwei
365
+ 3: drei
366
+ 4: vier
367
+ 5: fünf
368
+ 6: sechs
369
+ 7: sieben
370
+ 8: acht
371
+ 9: neun
372
+ 10: zehn
373
+ 11: elf
374
+ 12: zwölf
375
+ 13: dreizehn
376
+ 14: vierzehn
377
+ 15: fünfzehn
378
+ 16: sechzehn
379
+ 17: siebzehn
380
+ 18: achtzehn
381
+ 19: neunzehn
382
+ 20: zwanzig
383
+ 21: ein­und­zwanzig
384
+ 22: zwei­und­zwanzig
385
+ 23: drei­und­zwanzig
386
+ 24: vier­und­zwanzig
387
+ 25: fünf­und­zwanzig
388
+ 26: sechs­und­zwanzig
389
+ 27: sieben­und­zwanzig
390
+ 28: acht­und­zwanzig
391
+ 29: neun­und­zwanzig
392
+ 30: dreißig
393
+ 31: ein­und­dreißig
394
+ 32: zwei­und­dreißig
395
+ 33: drei­und­dreißig
396
+ 34: vier­und­dreißig
397
+ 35: fünf­und­dreißig
398
+ 36: sechs­und­dreißig
399
+ 37: sieben­und­dreißig
400
+ 38: acht­und­dreißig
401
+ 39: neun­und­dreißig
402
+ 40: vierzig
403
+ 41: ein­und­vierzig
404
+ 42: zwei­und­vierzig
405
+ 43: drei­und­vierzig
406
+ 44: vier­und­vierzig
407
+ 45: fünf­und­vierzig
408
+ 46: sechs­und­vierzig
409
+ 47: sieben­und­vierzig
410
+ 48: acht­und­vierzig
411
+ 49: neun­und­vierzig
412
+ 50: fünfzig
413
+ 51: ein­und­fünfzig
414
+ 52: zwei­und­fünfzig
415
+ 53: drei­und­fünfzig
416
+ 54: vier­und­fünfzig
417
+ 55: fünf­und­fünfzig
418
+ 56: sechs­und­fünfzig
419
+ 57: sieben­und­fünfzig
420
+ 58: acht­und­fünfzig
421
+ 59: neun­und­fünfzig
422
+ 60: sechzig
423
+ 61: ein­und­sechzig
424
+ 62: zwei­und­sechzig
425
+ 63: drei­und­sechzig
426
+ 64: vier­und­sechzig
427
+ 65: fünf­und­sechzig
428
+ 66: sechs­und­sechzig
429
+ 67: sieben­und­sechzig
430
+ 68: acht­und­sechzig
431
+ 69: neun­und­sechzig
432
+ 70: siebzig
433
+ 71: ein­und­siebzig
434
+ 72: zwei­und­siebzig
435
+ 73: drei­und­siebzig
436
+ 74: vier­und­siebzig
437
+ 75: fünf­und­siebzig
438
+ 76: sechs­und­siebzig
439
+ 77: sieben­und­siebzig
440
+ 78: acht­und­siebzig
441
+ 79: neun­und­siebzig
442
+ 80: achtzig
443
+ 81: ein­und­achtzig
444
+ 82: zwei­und­achtzig
445
+ 83: drei­und­achtzig
446
+ 84: vier­und­achtzig
447
+ 85: fünf­und­achtzig
448
+ 86: sechs­und­achtzig
449
+ 87: sieben­und­achtzig
450
+ 88: acht­und­achtzig
451
+ 89: neun­und­achtzig
452
+ 90: neunzig
453
+ 91: ein­und­neunzig
454
+ 92: zwei­und­neunzig
455
+ 93: drei­und­neunzig
456
+ 94: vier­und­neunzig
457
+ 95: fünf­und­neunzig
458
+ 96: sechs­und­neunzig
459
+ 97: sieben­und­neunzig
460
+ 98: acht­und­neunzig
461
+ 99: neun­und­neunzig
462
+ 100: ein­hundert
463
+ 321: drei­hundert­ein­und­zwanzig
464
+ 322: drei­hundert­zwei­und­zwanzig
465
+ 323: drei­hundert­drei­und­zwanzig
466
+ 1141: ein­tausend­ein­hundert­ein­und­vierzig
467
+ 1142: ein­tausend­ein­hundert­zwei­und­vierzig
468
+ 1143: ein­tausend­ein­hundert­drei­und­vierzig
469
+ 10311: zehn­tausend­drei­hundert­elf
470
+ 138400: ein­hundert­acht­und­dreißig­tausend­vier­hundert
471
+ spellout-numbering:
472
+ -1141: minus ein­tausend­ein­hundert­ein­und­vierzig
473
+ -1142: minus ein­tausend­ein­hundert­zwei­und­vierzig
474
+ -1143: minus ein­tausend­ein­hundert­drei­und­vierzig
475
+ -100: minus ein­hundert
476
+ -75: minus fünf­und­siebzig
477
+ -50: minus fünfzig
478
+ -24: minus vier­und­zwanzig
479
+ 0: 'null'
480
+ 1: eins
481
+ 2: zwei
482
+ 3: drei
483
+ 4: vier
484
+ 5: fünf
485
+ 6: sechs
486
+ 7: sieben
487
+ 8: acht
488
+ 9: neun
489
+ 10: zehn
490
+ 11: elf
491
+ 12: zwölf
492
+ 13: dreizehn
493
+ 14: vierzehn
494
+ 15: fünfzehn
495
+ 16: sechzehn
496
+ 17: siebzehn
497
+ 18: achtzehn
498
+ 19: neunzehn
499
+ 20: zwanzig
500
+ 21: ein­und­zwanzig
501
+ 22: zwei­und­zwanzig
502
+ 23: drei­und­zwanzig
503
+ 24: vier­und­zwanzig
504
+ 25: fünf­und­zwanzig
505
+ 26: sechs­und­zwanzig
506
+ 27: sieben­und­zwanzig
507
+ 28: acht­und­zwanzig
508
+ 29: neun­und­zwanzig
509
+ 30: dreißig
510
+ 31: ein­und­dreißig
511
+ 32: zwei­und­dreißig
512
+ 33: drei­und­dreißig
513
+ 34: vier­und­dreißig
514
+ 35: fünf­und­dreißig
515
+ 36: sechs­und­dreißig
516
+ 37: sieben­und­dreißig
517
+ 38: acht­und­dreißig
518
+ 39: neun­und­dreißig
519
+ 40: vierzig
520
+ 41: ein­und­vierzig
521
+ 42: zwei­und­vierzig
522
+ 43: drei­und­vierzig
523
+ 44: vier­und­vierzig
524
+ 45: fünf­und­vierzig
525
+ 46: sechs­und­vierzig
526
+ 47: sieben­und­vierzig
527
+ 48: acht­und­vierzig
528
+ 49: neun­und­vierzig
529
+ 50: fünfzig
530
+ 51: ein­und­fünfzig
531
+ 52: zwei­und­fünfzig
532
+ 53: drei­und­fünfzig
533
+ 54: vier­und­fünfzig
534
+ 55: fünf­und­fünfzig
535
+ 56: sechs­und­fünfzig
536
+ 57: sieben­und­fünfzig
537
+ 58: acht­und­fünfzig
538
+ 59: neun­und­fünfzig
539
+ 60: sechzig
540
+ 61: ein­und­sechzig
541
+ 62: zwei­und­sechzig
542
+ 63: drei­und­sechzig
543
+ 64: vier­und­sechzig
544
+ 65: fünf­und­sechzig
545
+ 66: sechs­und­sechzig
546
+ 67: sieben­und­sechzig
547
+ 68: acht­und­sechzig
548
+ 69: neun­und­sechzig
549
+ 70: siebzig
550
+ 71: ein­und­siebzig
551
+ 72: zwei­und­siebzig
552
+ 73: drei­und­siebzig
553
+ 74: vier­und­siebzig
554
+ 75: fünf­und­siebzig
555
+ 76: sechs­und­siebzig
556
+ 77: sieben­und­siebzig
557
+ 78: acht­und­siebzig
558
+ 79: neun­und­siebzig
559
+ 80: achtzig
560
+ 81: ein­und­achtzig
561
+ 82: zwei­und­achtzig
562
+ 83: drei­und­achtzig
563
+ 84: vier­und­achtzig
564
+ 85: fünf­und­achtzig
565
+ 86: sechs­und­achtzig
566
+ 87: sieben­und­achtzig
567
+ 88: acht­und­achtzig
568
+ 89: neun­und­achtzig
569
+ 90: neunzig
570
+ 91: ein­und­neunzig
571
+ 92: zwei­und­neunzig
572
+ 93: drei­und­neunzig
573
+ 94: vier­und­neunzig
574
+ 95: fünf­und­neunzig
575
+ 96: sechs­und­neunzig
576
+ 97: sieben­und­neunzig
577
+ 98: acht­und­neunzig
578
+ 99: neun­und­neunzig
579
+ 100: ein­hundert
580
+ 321: drei­hundert­ein­und­zwanzig
581
+ 322: drei­hundert­zwei­und­zwanzig
582
+ 323: drei­hundert­drei­und­zwanzig
583
+ 1141: ein­tausend­ein­hundert­ein­und­vierzig
584
+ 1142: ein­tausend­ein­hundert­zwei­und­vierzig
585
+ 1143: ein­tausend­ein­hundert­drei­und­vierzig
586
+ 10311: zehn­tausend­drei­hundert­elf
587
+ 138400: ein­hundert­acht­und­dreißig­tausend­vier­hundert
588
+ spellout-numbering-year:
589
+ -1141: minus elf­hundert­ein­und­vierzig
590
+ -1142: minus elf­hundert­zwei­und­vierzig
591
+ -1143: minus elf­hundert­drei­und­vierzig
592
+ -100: minus ein­hundert
593
+ -75: minus fünf­und­siebzig
594
+ -50: minus fünfzig
595
+ -24: minus vier­und­zwanzig
596
+ 0: 'null'
597
+ 1: eins
598
+ 2: zwei
599
+ 3: drei
600
+ 4: vier
601
+ 5: fünf
602
+ 6: sechs
603
+ 7: sieben
604
+ 8: acht
605
+ 9: neun
606
+ 10: zehn
607
+ 11: elf
608
+ 12: zwölf
609
+ 13: dreizehn
610
+ 14: vierzehn
611
+ 15: fünfzehn
612
+ 16: sechzehn
613
+ 17: siebzehn
614
+ 18: achtzehn
615
+ 19: neunzehn
616
+ 20: zwanzig
617
+ 21: ein­und­zwanzig
618
+ 22: zwei­und­zwanzig
619
+ 23: drei­und­zwanzig
620
+ 24: vier­und­zwanzig
621
+ 25: fünf­und­zwanzig
622
+ 26: sechs­und­zwanzig
623
+ 27: sieben­und­zwanzig
624
+ 28: acht­und­zwanzig
625
+ 29: neun­und­zwanzig
626
+ 30: dreißig
627
+ 31: ein­und­dreißig
628
+ 32: zwei­und­dreißig
629
+ 33: drei­und­dreißig
630
+ 34: vier­und­dreißig
631
+ 35: fünf­und­dreißig
632
+ 36: sechs­und­dreißig
633
+ 37: sieben­und­dreißig
634
+ 38: acht­und­dreißig
635
+ 39: neun­und­dreißig
636
+ 40: vierzig
637
+ 41: ein­und­vierzig
638
+ 42: zwei­und­vierzig
639
+ 43: drei­und­vierzig
640
+ 44: vier­und­vierzig
641
+ 45: fünf­und­vierzig
642
+ 46: sechs­und­vierzig
643
+ 47: sieben­und­vierzig
644
+ 48: acht­und­vierzig
645
+ 49: neun­und­vierzig
646
+ 50: fünfzig
647
+ 51: ein­und­fünfzig
648
+ 52: zwei­und­fünfzig
649
+ 53: drei­und­fünfzig
650
+ 54: vier­und­fünfzig
651
+ 55: fünf­und­fünfzig
652
+ 56: sechs­und­fünfzig
653
+ 57: sieben­und­fünfzig
654
+ 58: acht­und­fünfzig
655
+ 59: neun­und­fünfzig
656
+ 60: sechzig
657
+ 61: ein­und­sechzig
658
+ 62: zwei­und­sechzig
659
+ 63: drei­und­sechzig
660
+ 64: vier­und­sechzig
661
+ 65: fünf­und­sechzig
662
+ 66: sechs­und­sechzig
663
+ 67: sieben­und­sechzig
664
+ 68: acht­und­sechzig
665
+ 69: neun­und­sechzig
666
+ 70: siebzig
667
+ 71: ein­und­siebzig
668
+ 72: zwei­und­siebzig
669
+ 73: drei­und­siebzig
670
+ 74: vier­und­siebzig
671
+ 75: fünf­und­siebzig
672
+ 76: sechs­und­siebzig
673
+ 77: sieben­und­siebzig
674
+ 78: acht­und­siebzig
675
+ 79: neun­und­siebzig
676
+ 80: achtzig
677
+ 81: ein­und­achtzig
678
+ 82: zwei­und­achtzig
679
+ 83: drei­und­achtzig
680
+ 84: vier­und­achtzig
681
+ 85: fünf­und­achtzig
682
+ 86: sechs­und­achtzig
683
+ 87: sieben­und­achtzig
684
+ 88: acht­und­achtzig
685
+ 89: neun­und­achtzig
686
+ 90: neunzig
687
+ 91: ein­und­neunzig
688
+ 92: zwei­und­neunzig
689
+ 93: drei­und­neunzig
690
+ 94: vier­und­neunzig
691
+ 95: fünf­und­neunzig
692
+ 96: sechs­und­neunzig
693
+ 97: sieben­und­neunzig
694
+ 98: acht­und­neunzig
695
+ 99: neun­und­neunzig
696
+ 100: ein­hundert
697
+ 321: drei­hundert­ein­und­zwanzig
698
+ 322: drei­hundert­zwei­und­zwanzig
699
+ 323: drei­hundert­drei­und­zwanzig
700
+ 1141: elf­hundert­ein­und­vierzig
701
+ 1142: elf­hundert­zwei­und­vierzig
702
+ 1143: elf­hundert­drei­und­vierzig
703
+ 10311: zehn­tausend­drei­hundert­elf
704
+ 138400: ein­hundert­acht­und­dreißig­tausend­vier­hundert
705
+ OrdinalRules:
706
+ digits-ordinal:
707
+ -1141: −1'141.
708
+ -1142: −1'142.
709
+ -1143: −1'143.
710
+ -100: −100.
711
+ -75: −75.
712
+ -50: −50.
713
+ -24: −24.
714
+ 0: '0.'
715
+ 1: '1.'
716
+ 2: '2.'
717
+ 3: '3.'
718
+ 4: '4.'
719
+ 5: '5.'
720
+ 6: '6.'
721
+ 7: '7.'
722
+ 8: '8.'
723
+ 9: '9.'
724
+ 10: '10.'
725
+ 11: '11.'
726
+ 12: '12.'
727
+ 13: '13.'
728
+ 14: '14.'
729
+ 15: '15.'
730
+ 16: '16.'
731
+ 17: '17.'
732
+ 18: '18.'
733
+ 19: '19.'
734
+ 20: '20.'
735
+ 21: '21.'
736
+ 22: '22.'
737
+ 23: '23.'
738
+ 24: '24.'
739
+ 25: '25.'
740
+ 26: '26.'
741
+ 27: '27.'
742
+ 28: '28.'
743
+ 29: '29.'
744
+ 30: '30.'
745
+ 31: '31.'
746
+ 32: '32.'
747
+ 33: '33.'
748
+ 34: '34.'
749
+ 35: '35.'
750
+ 36: '36.'
751
+ 37: '37.'
752
+ 38: '38.'
753
+ 39: '39.'
754
+ 40: '40.'
755
+ 41: '41.'
756
+ 42: '42.'
757
+ 43: '43.'
758
+ 44: '44.'
759
+ 45: '45.'
760
+ 46: '46.'
761
+ 47: '47.'
762
+ 48: '48.'
763
+ 49: '49.'
764
+ 50: '50.'
765
+ 51: '51.'
766
+ 52: '52.'
767
+ 53: '53.'
768
+ 54: '54.'
769
+ 55: '55.'
770
+ 56: '56.'
771
+ 57: '57.'
772
+ 58: '58.'
773
+ 59: '59.'
774
+ 60: '60.'
775
+ 61: '61.'
776
+ 62: '62.'
777
+ 63: '63.'
778
+ 64: '64.'
779
+ 65: '65.'
780
+ 66: '66.'
781
+ 67: '67.'
782
+ 68: '68.'
783
+ 69: '69.'
784
+ 70: '70.'
785
+ 71: '71.'
786
+ 72: '72.'
787
+ 73: '73.'
788
+ 74: '74.'
789
+ 75: '75.'
790
+ 76: '76.'
791
+ 77: '77.'
792
+ 78: '78.'
793
+ 79: '79.'
794
+ 80: '80.'
795
+ 81: '81.'
796
+ 82: '82.'
797
+ 83: '83.'
798
+ 84: '84.'
799
+ 85: '85.'
800
+ 86: '86.'
801
+ 87: '87.'
802
+ 88: '88.'
803
+ 89: '89.'
804
+ 90: '90.'
805
+ 91: '91.'
806
+ 92: '92.'
807
+ 93: '93.'
808
+ 94: '94.'
809
+ 95: '95.'
810
+ 96: '96.'
811
+ 97: '97.'
812
+ 98: '98.'
813
+ 99: '99.'
814
+ 100: '100.'
815
+ 321: '321.'
816
+ 322: '322.'
817
+ 323: '323.'
818
+ 1141: 1'141.
819
+ 1142: 1'142.
820
+ 1143: 1'143.
821
+ 10311: 10'311.
822
+ 138400: 138'400.
823
+ DurationRules:
824
+ duration:
825
+ -1141: -1'141
826
+ -1142: -1'142
827
+ -1143: -1'143
828
+ -100: '-100'
829
+ -75: '-75'
830
+ -50: '-50'
831
+ -24: '-24'
832
+ 0: '0'
833
+ 1: '1'
834
+ 2: '2'
835
+ 3: '3'
836
+ 4: '4'
837
+ 5: '5'
838
+ 6: '6'
839
+ 7: '7'
840
+ 8: '8'
841
+ 9: '9'
842
+ 10: '10'
843
+ 11: '11'
844
+ 12: '12'
845
+ 13: '13'
846
+ 14: '14'
847
+ 15: '15'
848
+ 16: '16'
849
+ 17: '17'
850
+ 18: '18'
851
+ 19: '19'
852
+ 20: '20'
853
+ 21: '21'
854
+ 22: '22'
855
+ 23: '23'
856
+ 24: '24'
857
+ 25: '25'
858
+ 26: '26'
859
+ 27: '27'
860
+ 28: '28'
861
+ 29: '29'
862
+ 30: '30'
863
+ 31: '31'
864
+ 32: '32'
865
+ 33: '33'
866
+ 34: '34'
867
+ 35: '35'
868
+ 36: '36'
869
+ 37: '37'
870
+ 38: '38'
871
+ 39: '39'
872
+ 40: '40'
873
+ 41: '41'
874
+ 42: '42'
875
+ 43: '43'
876
+ 44: '44'
877
+ 45: '45'
878
+ 46: '46'
879
+ 47: '47'
880
+ 48: '48'
881
+ 49: '49'
882
+ 50: '50'
883
+ 51: '51'
884
+ 52: '52'
885
+ 53: '53'
886
+ 54: '54'
887
+ 55: '55'
888
+ 56: '56'
889
+ 57: '57'
890
+ 58: '58'
891
+ 59: '59'
892
+ 60: '60'
893
+ 61: '61'
894
+ 62: '62'
895
+ 63: '63'
896
+ 64: '64'
897
+ 65: '65'
898
+ 66: '66'
899
+ 67: '67'
900
+ 68: '68'
901
+ 69: '69'
902
+ 70: '70'
903
+ 71: '71'
904
+ 72: '72'
905
+ 73: '73'
906
+ 74: '74'
907
+ 75: '75'
908
+ 76: '76'
909
+ 77: '77'
910
+ 78: '78'
911
+ 79: '79'
912
+ 80: '80'
913
+ 81: '81'
914
+ 82: '82'
915
+ 83: '83'
916
+ 84: '84'
917
+ 85: '85'
918
+ 86: '86'
919
+ 87: '87'
920
+ 88: '88'
921
+ 89: '89'
922
+ 90: '90'
923
+ 91: '91'
924
+ 92: '92'
925
+ 93: '93'
926
+ 94: '94'
927
+ 95: '95'
928
+ 96: '96'
929
+ 97: '97'
930
+ 98: '98'
931
+ 99: '99'
932
+ 100: '100'
933
+ 321: '321'
934
+ 322: '322'
935
+ 323: '323'
936
+ 1141: 1'141
937
+ 1142: 1'142
938
+ 1143: 1'143
939
+ 10311: 10'311
940
+ 138400: 138'400