twitter_cldr 3.0.0.beta1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (698) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +16 -2
  3. data/History.txt +9 -1
  4. data/README.md +297 -113
  5. data/Rakefile +97 -17
  6. data/lib/twitter_cldr/collation/collator.rb +12 -3
  7. data/lib/twitter_cldr/collation/trie_builder.rb +1 -1
  8. data/lib/twitter_cldr/{tokenizers/calendars → data_readers}/additional_date_format_selector.rb +6 -4
  9. data/lib/twitter_cldr/data_readers/calendar_data_reader.rb +91 -0
  10. data/lib/twitter_cldr/data_readers/data_reader.rb +32 -0
  11. data/lib/twitter_cldr/data_readers/date_data_reader.rb +26 -0
  12. data/lib/twitter_cldr/data_readers/date_time_data_reader.rb +41 -0
  13. data/lib/twitter_cldr/data_readers/number_data_reader.rb +142 -0
  14. data/lib/twitter_cldr/data_readers/time_data_reader.rb +26 -0
  15. data/lib/twitter_cldr/data_readers/timespan_data_reader.rb +122 -0
  16. data/lib/twitter_cldr/data_readers.rb +17 -0
  17. data/lib/twitter_cldr/formatters/calendars/{datetime_formatter.rb → date_time_formatter.rb} +27 -42
  18. data/lib/twitter_cldr/formatters/calendars/timespan_formatter.rb +3 -64
  19. data/lib/twitter_cldr/formatters/formatter.rb +39 -0
  20. data/lib/twitter_cldr/formatters/list_formatter.rb +22 -12
  21. data/lib/twitter_cldr/formatters/numbers/abbreviated/abbreviated_number_formatter.rb +5 -26
  22. data/lib/twitter_cldr/formatters/numbers/currency_formatter.rb +2 -11
  23. data/lib/twitter_cldr/formatters/numbers/decimal_formatter.rb +4 -2
  24. data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +45 -27
  25. data/lib/twitter_cldr/formatters/numbers/percent_formatter.rb +3 -13
  26. data/lib/twitter_cldr/formatters/numbers/rbnf/formatters.rb +224 -0
  27. data/lib/twitter_cldr/formatters/numbers/rbnf/post_processors/chinese.rb +122 -0
  28. data/lib/twitter_cldr/formatters/numbers/rbnf/rule.rb +93 -0
  29. data/lib/twitter_cldr/formatters/numbers/rbnf/rule_group.rb +20 -0
  30. data/lib/twitter_cldr/formatters/numbers/rbnf/rule_parser.rb +86 -0
  31. data/lib/twitter_cldr/formatters/numbers/rbnf/rule_set.rb +259 -0
  32. data/lib/twitter_cldr/formatters/numbers/rbnf/substitution.rb +30 -0
  33. data/lib/twitter_cldr/formatters/numbers/rbnf.rb +127 -0
  34. data/lib/twitter_cldr/formatters/plurals/plural_formatter.rb +18 -6
  35. data/lib/twitter_cldr/formatters.rb +4 -5
  36. data/lib/twitter_cldr/localized/localized_array.rb +1 -1
  37. data/lib/twitter_cldr/localized/localized_date.rb +6 -3
  38. data/lib/twitter_cldr/localized/localized_datetime.rb +38 -15
  39. data/lib/twitter_cldr/localized/localized_number.rb +40 -24
  40. data/lib/twitter_cldr/localized/localized_object.rb +4 -4
  41. data/lib/twitter_cldr/localized/localized_string.rb +40 -7
  42. data/lib/twitter_cldr/localized/localized_time.rb +9 -2
  43. data/lib/twitter_cldr/localized/localized_timespan.rb +50 -5
  44. data/lib/twitter_cldr/normalization.rb +8 -19
  45. data/lib/twitter_cldr/parsers/parser.rb +50 -0
  46. data/lib/twitter_cldr/parsers/segmentation_parser.rb +137 -0
  47. data/lib/twitter_cldr/parsers/symbol_table.rb +30 -0
  48. data/lib/twitter_cldr/parsers/unicode_regex/character_class.rb +91 -0
  49. data/lib/twitter_cldr/parsers/unicode_regex/character_range.rb +39 -0
  50. data/lib/twitter_cldr/parsers/unicode_regex/character_set.rb +65 -0
  51. data/lib/twitter_cldr/parsers/unicode_regex/component.rb +50 -0
  52. data/lib/twitter_cldr/parsers/unicode_regex/literal.rb +83 -0
  53. data/lib/twitter_cldr/parsers/unicode_regex/unicode_string.rb +41 -0
  54. data/lib/twitter_cldr/parsers/unicode_regex_parser.rb +262 -0
  55. data/lib/twitter_cldr/parsers.rb +5 -1
  56. data/lib/twitter_cldr/resources/casefolder.rb.erb +64 -0
  57. data/lib/twitter_cldr/resources/casefolder_class_generator.rb +75 -0
  58. data/lib/twitter_cldr/resources/download.rb +10 -4
  59. data/lib/twitter_cldr/resources/icu_based_importer.rb +18 -0
  60. data/lib/twitter_cldr/resources/locales_resources_importer.rb +24 -13
  61. data/lib/twitter_cldr/resources/normalization_quick_check_importer.rb +1 -14
  62. data/lib/twitter_cldr/resources/rbnf_test_importer.rb +107 -0
  63. data/lib/twitter_cldr/resources/readme_renderer.rb +115 -0
  64. data/lib/twitter_cldr/resources/tailoring_importer.rb +2 -8
  65. data/lib/twitter_cldr/resources/uli/segment_exceptions_importer.rb +62 -0
  66. data/lib/twitter_cldr/resources/uli.rb +12 -0
  67. data/lib/twitter_cldr/resources/unicode_data_importer.rb +84 -14
  68. data/lib/twitter_cldr/resources/unicode_importer.rb +37 -0
  69. data/lib/twitter_cldr/resources/unicode_properties_importer.rb +79 -0
  70. data/lib/twitter_cldr/resources.rb +8 -1
  71. data/lib/twitter_cldr/shared/break_iterator.rb +213 -0
  72. data/lib/twitter_cldr/shared/calendar.rb +38 -14
  73. data/lib/twitter_cldr/shared/casefolder.rb +210 -0
  74. data/lib/twitter_cldr/shared/code_point.rb +103 -16
  75. data/lib/twitter_cldr/shared/numbering_system.rb +58 -0
  76. data/lib/twitter_cldr/shared/territories.rb +43 -1
  77. data/lib/twitter_cldr/shared/unicode_regex.rb +81 -0
  78. data/lib/twitter_cldr/shared.rb +13 -9
  79. data/lib/twitter_cldr/tokenizers/calendars/date_time_tokenizer.rb +77 -0
  80. data/lib/twitter_cldr/tokenizers/calendars/date_tokenizer.rb +14 -29
  81. data/lib/twitter_cldr/tokenizers/calendars/time_tokenizer.rb +13 -28
  82. data/lib/twitter_cldr/tokenizers/calendars/timespan_tokenizer.rb +11 -87
  83. data/lib/twitter_cldr/tokenizers/numbers/number_tokenizer.rb +16 -71
  84. data/lib/twitter_cldr/tokenizers/numbers/rbnf_tokenizer.rb +53 -0
  85. data/lib/twitter_cldr/tokenizers/pattern_tokenizer.rb +42 -0
  86. data/lib/twitter_cldr/tokenizers/segmentation/segmentation_tokenizer.rb +39 -0
  87. data/lib/twitter_cldr/tokenizers/tokenizer.rb +116 -0
  88. data/lib/twitter_cldr/tokenizers/unicode_regex/unicode_regex_tokenizer.rb +52 -0
  89. data/lib/twitter_cldr/tokenizers.rb +8 -4
  90. data/lib/twitter_cldr/utils/code_points.rb +1 -1
  91. data/lib/twitter_cldr/utils/range_set.rb +242 -0
  92. data/lib/twitter_cldr/utils/yaml.rb +17 -12
  93. data/lib/twitter_cldr/utils.rb +1 -1
  94. data/lib/twitter_cldr/version.rb +1 -1
  95. data/lib/twitter_cldr.rb +2 -1
  96. data/resources/custom/locales/sv/units.yml +8 -0
  97. data/resources/locales/af/calendars.yml +278 -224
  98. data/resources/locales/af/currencies.yml +954 -916
  99. data/resources/locales/af/languages.yml +583 -580
  100. data/resources/locales/af/layout.yml +5 -5
  101. data/resources/locales/af/lists.yml +23 -7
  102. data/resources/locales/af/numbers.yml +59 -54
  103. data/resources/locales/af/plurals.yml +2 -2
  104. data/resources/locales/af/rbnf.yml +261 -0
  105. data/resources/locales/af/territories.yml +264 -263
  106. data/resources/locales/ar/calendars.yml +287 -259
  107. data/resources/locales/ar/currencies.yml +1730 -1692
  108. data/resources/locales/ar/languages.yml +583 -580
  109. data/resources/locales/ar/layout.yml +5 -5
  110. data/resources/locales/ar/lists.yml +23 -7
  111. data/resources/locales/ar/numbers.yml +66 -61
  112. data/resources/locales/ar/plurals.yml +5 -8
  113. data/resources/locales/ar/rbnf.yml +519 -0
  114. data/resources/locales/ar/territories.yml +264 -263
  115. data/resources/locales/be/calendars.yml +238 -237
  116. data/resources/locales/be/currencies.yml +954 -917
  117. data/resources/locales/be/languages.yml +583 -580
  118. data/resources/locales/be/layout.yml +5 -5
  119. data/resources/locales/be/lists.yml +23 -7
  120. data/resources/locales/be/numbers.yml +62 -57
  121. data/resources/locales/be/plurals.yml +7 -4
  122. data/resources/locales/be/rbnf.yml +1288 -0
  123. data/resources/locales/be/territories.yml +264 -263
  124. data/resources/locales/bg/calendars.yml +278 -218
  125. data/resources/locales/bg/currencies.yml +955 -917
  126. data/resources/locales/bg/languages.yml +583 -580
  127. data/resources/locales/bg/layout.yml +5 -5
  128. data/resources/locales/bg/lists.yml +23 -7
  129. data/resources/locales/bg/numbers.yml +62 -57
  130. data/resources/locales/bg/plurals.yml +2 -2
  131. data/resources/locales/bg/rbnf.yml +280 -0
  132. data/resources/locales/bg/territories.yml +264 -263
  133. data/resources/locales/bn/calendars.yml +287 -225
  134. data/resources/locales/bn/currencies.yml +953 -916
  135. data/resources/locales/bn/languages.yml +583 -580
  136. data/resources/locales/bn/layout.yml +5 -5
  137. data/resources/locales/bn/lists.yml +23 -7
  138. data/resources/locales/bn/numbers.yml +62 -57
  139. data/resources/locales/bn/plurals.yml +2 -2
  140. data/resources/locales/bn/rbnf.yml +4 -0
  141. data/resources/locales/bn/territories.yml +264 -263
  142. data/resources/locales/ca/calendars.yml +278 -278
  143. data/resources/locales/ca/currencies.yml +953 -916
  144. data/resources/locales/ca/languages.yml +583 -580
  145. data/resources/locales/ca/layout.yml +5 -5
  146. data/resources/locales/ca/lists.yml +23 -7
  147. data/resources/locales/ca/numbers.yml +62 -57
  148. data/resources/locales/ca/plurals.yml +3 -2
  149. data/resources/locales/ca/rbnf.yml +756 -0
  150. data/resources/locales/ca/territories.yml +264 -263
  151. data/resources/locales/cs/calendars.yml +269 -262
  152. data/resources/locales/cs/currencies.yml +1483 -1172
  153. data/resources/locales/cs/languages.yml +583 -580
  154. data/resources/locales/cs/layout.yml +5 -5
  155. data/resources/locales/cs/lists.yml +23 -7
  156. data/resources/locales/cs/numbers.yml +64 -58
  157. data/resources/locales/cs/plurals.yml +6 -2
  158. data/resources/locales/cs/rbnf.yml +367 -0
  159. data/resources/locales/cs/territories.yml +264 -263
  160. data/resources/locales/cy/calendars.yml +275 -274
  161. data/resources/locales/cy/currencies.yml +1585 -1548
  162. data/resources/locales/cy/languages.yml +583 -580
  163. data/resources/locales/cy/layout.yml +5 -5
  164. data/resources/locales/cy/lists.yml +23 -7
  165. data/resources/locales/cy/numbers.yml +66 -61
  166. data/resources/locales/cy/plurals.yml +4 -3
  167. data/resources/locales/cy/rbnf.yml +298 -0
  168. data/resources/locales/cy/territories.yml +264 -263
  169. data/resources/locales/da/calendars.yml +281 -280
  170. data/resources/locales/da/currencies.yml +954 -916
  171. data/resources/locales/da/languages.yml +583 -580
  172. data/resources/locales/da/layout.yml +5 -5
  173. data/resources/locales/da/lists.yml +23 -7
  174. data/resources/locales/da/numbers.yml +62 -57
  175. data/resources/locales/da/plurals.yml +3 -2
  176. data/resources/locales/da/rbnf.yml +194 -0
  177. data/resources/locales/da/territories.yml +264 -263
  178. data/resources/locales/de/calendars.yml +294 -293
  179. data/resources/locales/de/currencies.yml +954 -916
  180. data/resources/locales/de/languages.yml +583 -580
  181. data/resources/locales/de/layout.yml +5 -5
  182. data/resources/locales/de/lists.yml +23 -7
  183. data/resources/locales/de/numbers.yml +62 -57
  184. data/resources/locales/de/plurals.yml +3 -2
  185. data/resources/locales/de/rbnf.yml +346 -0
  186. data/resources/locales/de/territories.yml +264 -263
  187. data/resources/locales/el/calendars.yml +279 -282
  188. data/resources/locales/el/currencies.yml +954 -916
  189. data/resources/locales/el/languages.yml +583 -580
  190. data/resources/locales/el/layout.yml +5 -5
  191. data/resources/locales/el/lists.yml +23 -7
  192. data/resources/locales/el/numbers.yml +62 -57
  193. data/resources/locales/el/plurals.yml +2 -2
  194. data/resources/locales/el/rbnf.yml +880 -0
  195. data/resources/locales/el/territories.yml +264 -263
  196. data/resources/locales/en/calendars.yml +192 -191
  197. data/resources/locales/en/currencies.yml +953 -915
  198. data/resources/locales/en/languages.yml +583 -580
  199. data/resources/locales/en/layout.yml +5 -5
  200. data/resources/locales/en/lists.yml +23 -7
  201. data/resources/locales/en/numbers.yml +62 -57
  202. data/resources/locales/en/plurals.yml +3 -2
  203. data/resources/locales/en/rbnf.yml +542 -0
  204. data/resources/locales/en/territories.yml +264 -263
  205. data/resources/locales/en-GB/calendars.yml +195 -194
  206. data/resources/locales/en-GB/currencies.yml +953 -915
  207. data/resources/locales/en-GB/languages.yml +583 -580
  208. data/resources/locales/en-GB/layout.yml +5 -5
  209. data/resources/locales/en-GB/lists.yml +23 -7
  210. data/resources/locales/en-GB/numbers.yml +62 -57
  211. data/resources/locales/en-GB/plurals.yml +2 -1
  212. data/resources/locales/en-GB/rbnf.yml +4 -0
  213. data/resources/locales/en-GB/territories.yml +264 -263
  214. data/resources/locales/es/calendars.yml +288 -238
  215. data/resources/locales/es/currencies.yml +953 -922
  216. data/resources/locales/es/languages.yml +583 -580
  217. data/resources/locales/es/layout.yml +5 -5
  218. data/resources/locales/es/lists.yml +23 -7
  219. data/resources/locales/es/numbers.yml +62 -57
  220. data/resources/locales/es/plurals.yml +2 -2
  221. data/resources/locales/es/rbnf.yml +913 -0
  222. data/resources/locales/es/territories.yml +264 -263
  223. data/resources/locales/eu/calendars.yml +277 -218
  224. data/resources/locales/eu/currencies.yml +953 -916
  225. data/resources/locales/eu/languages.yml +583 -580
  226. data/resources/locales/eu/layout.yml +5 -5
  227. data/resources/locales/eu/lists.yml +23 -7
  228. data/resources/locales/eu/numbers.yml +56 -51
  229. data/resources/locales/eu/plurals.yml +2 -2
  230. data/resources/locales/eu/rbnf.yml +4 -0
  231. data/resources/locales/eu/territories.yml +264 -263
  232. data/resources/locales/fa/calendars.yml +294 -293
  233. data/resources/locales/fa/currencies.yml +955 -916
  234. data/resources/locales/fa/languages.yml +583 -580
  235. data/resources/locales/fa/layout.yml +5 -5
  236. data/resources/locales/fa/lists.yml +23 -7
  237. data/resources/locales/fa/numbers.yml +62 -57
  238. data/resources/locales/fa/plurals.yml +2 -2
  239. data/resources/locales/fa/rbnf.yml +157 -0
  240. data/resources/locales/fa/territories.yml +264 -263
  241. data/resources/locales/fi/calendars.yml +284 -283
  242. data/resources/locales/fi/currencies.yml +953 -915
  243. data/resources/locales/fi/languages.yml +583 -580
  244. data/resources/locales/fi/layout.yml +5 -5
  245. data/resources/locales/fi/lists.yml +23 -7
  246. data/resources/locales/fi/numbers.yml +62 -57
  247. data/resources/locales/fi/plurals.yml +3 -2
  248. data/resources/locales/fi/rbnf.yml +206 -0
  249. data/resources/locales/fi/territories.yml +264 -263
  250. data/resources/locales/fil/calendars.yml +281 -230
  251. data/resources/locales/fil/currencies.yml +953 -916
  252. data/resources/locales/fil/languages.yml +583 -580
  253. data/resources/locales/fil/layout.yml +5 -5
  254. data/resources/locales/fil/lists.yml +23 -7
  255. data/resources/locales/fil/numbers.yml +62 -57
  256. data/resources/locales/fil/plurals.yml +3 -2
  257. data/resources/locales/fil/rbnf.yml +158 -0
  258. data/resources/locales/fil/territories.yml +264 -263
  259. data/resources/locales/fr/calendars.yml +297 -296
  260. data/resources/locales/fr/currencies.yml +968 -949
  261. data/resources/locales/fr/languages.yml +583 -580
  262. data/resources/locales/fr/layout.yml +5 -5
  263. data/resources/locales/fr/lists.yml +23 -7
  264. data/resources/locales/fr/numbers.yml +62 -57
  265. data/resources/locales/fr/plurals.yml +2 -2
  266. data/resources/locales/fr/rbnf.yml +621 -0
  267. data/resources/locales/fr/territories.yml +264 -263
  268. data/resources/locales/ga/calendars.yml +192 -191
  269. data/resources/locales/ga/currencies.yml +954 -916
  270. data/resources/locales/ga/languages.yml +583 -580
  271. data/resources/locales/ga/layout.yml +5 -5
  272. data/resources/locales/ga/lists.yml +23 -7
  273. data/resources/locales/ga/numbers.yml +62 -57
  274. data/resources/locales/ga/plurals.yml +4 -3
  275. data/resources/locales/ga/rbnf.yml +615 -0
  276. data/resources/locales/ga/territories.yml +264 -263
  277. data/resources/locales/gl/calendars.yml +283 -217
  278. data/resources/locales/gl/currencies.yml +953 -916
  279. data/resources/locales/gl/languages.yml +583 -580
  280. data/resources/locales/gl/layout.yml +5 -5
  281. data/resources/locales/gl/lists.yml +23 -7
  282. data/resources/locales/gl/numbers.yml +62 -57
  283. data/resources/locales/gl/plurals.yml +3 -2
  284. data/resources/locales/gl/rbnf.yml +4 -0
  285. data/resources/locales/gl/territories.yml +264 -263
  286. data/resources/locales/he/calendars.yml +248 -220
  287. data/resources/locales/he/currencies.yml +992 -932
  288. data/resources/locales/he/languages.yml +583 -580
  289. data/resources/locales/he/layout.yml +5 -5
  290. data/resources/locales/he/lists.yml +23 -7
  291. data/resources/locales/he/numbers.yml +64 -59
  292. data/resources/locales/he/plurals.yml +6 -3
  293. data/resources/locales/he/rbnf.yml +1029 -0
  294. data/resources/locales/he/territories.yml +264 -263
  295. data/resources/locales/hi/calendars.yml +284 -216
  296. data/resources/locales/hi/currencies.yml +953 -915
  297. data/resources/locales/hi/languages.yml +583 -580
  298. data/resources/locales/hi/layout.yml +5 -5
  299. data/resources/locales/hi/lists.yml +23 -7
  300. data/resources/locales/hi/numbers.yml +60 -55
  301. data/resources/locales/hi/plurals.yml +2 -2
  302. data/resources/locales/hi/rbnf.yml +430 -0
  303. data/resources/locales/hi/territories.yml +264 -263
  304. data/resources/locales/hr/calendars.yml +308 -307
  305. data/resources/locales/hr/currencies.yml +1248 -1504
  306. data/resources/locales/hr/languages.yml +583 -580
  307. data/resources/locales/hr/layout.yml +5 -5
  308. data/resources/locales/hr/lists.yml +23 -7
  309. data/resources/locales/hr/numbers.yml +63 -59
  310. data/resources/locales/hr/plurals.yml +12 -4
  311. data/resources/locales/hr/rbnf.yml +599 -0
  312. data/resources/locales/hr/territories.yml +264 -263
  313. data/resources/locales/hu/calendars.yml +285 -284
  314. data/resources/locales/hu/currencies.yml +954 -916
  315. data/resources/locales/hu/languages.yml +583 -580
  316. data/resources/locales/hu/layout.yml +5 -5
  317. data/resources/locales/hu/lists.yml +23 -7
  318. data/resources/locales/hu/numbers.yml +62 -57
  319. data/resources/locales/hu/plurals.yml +2 -2
  320. data/resources/locales/hu/rbnf.yml +363 -0
  321. data/resources/locales/hu/territories.yml +264 -263
  322. data/resources/locales/id/calendars.yml +276 -275
  323. data/resources/locales/id/currencies.yml +954 -916
  324. data/resources/locales/id/languages.yml +583 -580
  325. data/resources/locales/id/layout.yml +5 -5
  326. data/resources/locales/id/lists.yml +23 -7
  327. data/resources/locales/id/numbers.yml +61 -56
  328. data/resources/locales/id/plurals.yml +2 -2
  329. data/resources/locales/id/rbnf.yml +121 -0
  330. data/resources/locales/id/territories.yml +264 -263
  331. data/resources/locales/is/calendars.yml +281 -242
  332. data/resources/locales/is/currencies.yml +954 -916
  333. data/resources/locales/is/languages.yml +583 -580
  334. data/resources/locales/is/layout.yml +5 -5
  335. data/resources/locales/is/lists.yml +23 -7
  336. data/resources/locales/is/numbers.yml +62 -57
  337. data/resources/locales/is/plurals.yml +5 -2
  338. data/resources/locales/is/rbnf.yml +326 -0
  339. data/resources/locales/is/territories.yml +264 -263
  340. data/resources/locales/it/calendars.yml +275 -260
  341. data/resources/locales/it/currencies.yml +953 -920
  342. data/resources/locales/it/languages.yml +583 -580
  343. data/resources/locales/it/layout.yml +5 -5
  344. data/resources/locales/it/lists.yml +23 -7
  345. data/resources/locales/it/numbers.yml +59 -54
  346. data/resources/locales/it/plurals.yml +3 -2
  347. data/resources/locales/it/rbnf.yml +1189 -0
  348. data/resources/locales/it/territories.yml +264 -263
  349. data/resources/locales/ja/calendars.yml +269 -207
  350. data/resources/locales/ja/currencies.yml +953 -915
  351. data/resources/locales/ja/languages.yml +583 -580
  352. data/resources/locales/ja/layout.yml +5 -5
  353. data/resources/locales/ja/lists.yml +23 -7
  354. data/resources/locales/ja/numbers.yml +62 -57
  355. data/resources/locales/ja/plurals.yml +2 -2
  356. data/resources/locales/ja/rbnf.yml +209 -0
  357. data/resources/locales/ja/territories.yml +264 -263
  358. data/resources/locales/ko/calendars.yml +246 -213
  359. data/resources/locales/ko/currencies.yml +953 -915
  360. data/resources/locales/ko/languages.yml +583 -580
  361. data/resources/locales/ko/layout.yml +5 -5
  362. data/resources/locales/ko/lists.yml +23 -7
  363. data/resources/locales/ko/numbers.yml +60 -55
  364. data/resources/locales/ko/plurals.yml +2 -2
  365. data/resources/locales/ko/rbnf.yml +722 -0
  366. data/resources/locales/ko/territories.yml +264 -263
  367. data/resources/locales/lv/calendars.yml +286 -285
  368. data/resources/locales/lv/currencies.yml +1122 -1084
  369. data/resources/locales/lv/languages.yml +583 -580
  370. data/resources/locales/lv/layout.yml +5 -5
  371. data/resources/locales/lv/lists.yml +23 -7
  372. data/resources/locales/lv/numbers.yml +63 -58
  373. data/resources/locales/lv/plurals.yml +11 -3
  374. data/resources/locales/lv/rbnf.yml +238 -0
  375. data/resources/locales/lv/territories.yml +264 -263
  376. data/resources/locales/ms/calendars.yml +280 -279
  377. data/resources/locales/ms/currencies.yml +954 -916
  378. data/resources/locales/ms/languages.yml +583 -580
  379. data/resources/locales/ms/layout.yml +5 -5
  380. data/resources/locales/ms/lists.yml +23 -7
  381. data/resources/locales/ms/numbers.yml +62 -57
  382. data/resources/locales/ms/plurals.yml +2 -2
  383. data/resources/locales/ms/rbnf.yml +130 -0
  384. data/resources/locales/ms/territories.yml +264 -263
  385. data/resources/locales/nb/calendars.yml +284 -283
  386. data/resources/locales/nb/currencies.yml +958 -916
  387. data/resources/locales/nb/languages.yml +583 -580
  388. data/resources/locales/nb/layout.yml +5 -5
  389. data/resources/locales/nb/lists.yml +23 -7
  390. data/resources/locales/nb/numbers.yml +62 -57
  391. data/resources/locales/nb/plurals.yml +2 -2
  392. data/resources/locales/nb/rbnf.yml +191 -0
  393. data/resources/locales/nb/territories.yml +264 -263
  394. data/resources/locales/nl/calendars.yml +285 -284
  395. data/resources/locales/nl/currencies.yml +953 -917
  396. data/resources/locales/nl/languages.yml +583 -580
  397. data/resources/locales/nl/layout.yml +5 -5
  398. data/resources/locales/nl/lists.yml +23 -7
  399. data/resources/locales/nl/numbers.yml +62 -57
  400. data/resources/locales/nl/plurals.yml +3 -2
  401. data/resources/locales/nl/rbnf.yml +320 -0
  402. data/resources/locales/nl/territories.yml +264 -263
  403. data/resources/locales/pl/calendars.yml +288 -287
  404. data/resources/locales/pl/currencies.yml +1326 -1284
  405. data/resources/locales/pl/languages.yml +583 -580
  406. data/resources/locales/pl/layout.yml +5 -5
  407. data/resources/locales/pl/lists.yml +23 -7
  408. data/resources/locales/pl/numbers.yml +64 -59
  409. data/resources/locales/pl/plurals.yml +11 -4
  410. data/resources/locales/pl/rbnf.yml +410 -0
  411. data/resources/locales/pl/territories.yml +264 -263
  412. data/resources/locales/pt/calendars.yml +290 -289
  413. data/resources/locales/pt/currencies.yml +954 -916
  414. data/resources/locales/pt/languages.yml +583 -580
  415. data/resources/locales/pt/layout.yml +5 -5
  416. data/resources/locales/pt/lists.yml +23 -7
  417. data/resources/locales/pt/numbers.yml +62 -57
  418. data/resources/locales/pt/plurals.yml +4 -2
  419. data/resources/locales/pt/rbnf.yml +586 -0
  420. data/resources/locales/pt/territories.yml +264 -263
  421. data/resources/locales/ro/calendars.yml +284 -283
  422. data/resources/locales/ro/currencies.yml +1170 -1132
  423. data/resources/locales/ro/languages.yml +583 -580
  424. data/resources/locales/ro/layout.yml +5 -5
  425. data/resources/locales/ro/lists.yml +23 -7
  426. data/resources/locales/ro/numbers.yml +63 -58
  427. data/resources/locales/ro/plurals.yml +5 -2
  428. data/resources/locales/ro/rbnf.yml +250 -0
  429. data/resources/locales/ro/territories.yml +264 -263
  430. data/resources/locales/ru/calendars.yml +282 -281
  431. data/resources/locales/ru/currencies.yml +1118 -1247
  432. data/resources/locales/ru/languages.yml +583 -580
  433. data/resources/locales/ru/layout.yml +5 -5
  434. data/resources/locales/ru/lists.yml +23 -7
  435. data/resources/locales/ru/numbers.yml +63 -59
  436. data/resources/locales/ru/plurals.yml +8 -4
  437. data/resources/locales/ru/rbnf.yml +385 -0
  438. data/resources/locales/ru/territories.yml +264 -263
  439. data/resources/locales/sk/calendars.yml +254 -251
  440. data/resources/locales/sk/currencies.yml +1174 -1008
  441. data/resources/locales/sk/languages.yml +583 -580
  442. data/resources/locales/sk/layout.yml +5 -5
  443. data/resources/locales/sk/lists.yml +23 -7
  444. data/resources/locales/sk/numbers.yml +64 -58
  445. data/resources/locales/sk/plurals.yml +6 -2
  446. data/resources/locales/sk/rbnf.yml +304 -0
  447. data/resources/locales/sk/territories.yml +264 -263
  448. data/resources/locales/sq/calendars.yml +283 -206
  449. data/resources/locales/sq/currencies.yml +954 -916
  450. data/resources/locales/sq/languages.yml +583 -580
  451. data/resources/locales/sq/layout.yml +5 -5
  452. data/resources/locales/sq/lists.yml +23 -7
  453. data/resources/locales/sq/numbers.yml +62 -57
  454. data/resources/locales/sq/plurals.yml +2 -2
  455. data/resources/locales/sq/rbnf.yml +181 -0
  456. data/resources/locales/sq/territories.yml +264 -263
  457. data/resources/locales/sr/calendars.yml +290 -289
  458. data/resources/locales/sr/currencies.yml +1251 -1508
  459. data/resources/locales/sr/languages.yml +583 -580
  460. data/resources/locales/sr/layout.yml +5 -5
  461. data/resources/locales/sr/lists.yml +23 -7
  462. data/resources/locales/sr/numbers.yml +62 -58
  463. data/resources/locales/sr/plurals.yml +12 -4
  464. data/resources/locales/sr/rbnf.yml +429 -0
  465. data/resources/locales/sr/territories.yml +264 -263
  466. data/resources/locales/sv/calendars.yml +290 -289
  467. data/resources/locales/sv/currencies.yml +960 -930
  468. data/resources/locales/sv/languages.yml +583 -580
  469. data/resources/locales/sv/layout.yml +5 -5
  470. data/resources/locales/sv/lists.yml +23 -7
  471. data/resources/locales/sv/numbers.yml +63 -58
  472. data/resources/locales/sv/plurals.yml +3 -2
  473. data/resources/locales/sv/rbnf.yml +692 -0
  474. data/resources/locales/sv/territories.yml +264 -263
  475. data/resources/locales/ta/calendars.yml +281 -266
  476. data/resources/locales/ta/currencies.yml +953 -915
  477. data/resources/locales/ta/languages.yml +583 -580
  478. data/resources/locales/ta/layout.yml +5 -5
  479. data/resources/locales/ta/lists.yml +23 -7
  480. data/resources/locales/ta/numbers.yml +62 -57
  481. data/resources/locales/ta/plurals.yml +2 -2
  482. data/resources/locales/ta/rbnf.yml +241 -0
  483. data/resources/locales/ta/territories.yml +264 -263
  484. data/resources/locales/th/calendars.yml +278 -289
  485. data/resources/locales/th/currencies.yml +953 -915
  486. data/resources/locales/th/languages.yml +583 -580
  487. data/resources/locales/th/layout.yml +5 -5
  488. data/resources/locales/th/lists.yml +23 -7
  489. data/resources/locales/th/numbers.yml +62 -57
  490. data/resources/locales/th/plurals.yml +2 -2
  491. data/resources/locales/th/rbnf.yml +119 -0
  492. data/resources/locales/th/territories.yml +264 -263
  493. data/resources/locales/tr/calendars.yml +287 -286
  494. data/resources/locales/tr/currencies.yml +953 -916
  495. data/resources/locales/tr/languages.yml +583 -580
  496. data/resources/locales/tr/layout.yml +5 -5
  497. data/resources/locales/tr/lists.yml +23 -7
  498. data/resources/locales/tr/numbers.yml +61 -56
  499. data/resources/locales/tr/plurals.yml +2 -2
  500. data/resources/locales/tr/rbnf.yml +277 -0
  501. data/resources/locales/tr/territories.yml +264 -263
  502. data/resources/locales/uk/calendars.yml +286 -252
  503. data/resources/locales/uk/currencies.yml +1311 -1070
  504. data/resources/locales/uk/languages.yml +583 -580
  505. data/resources/locales/uk/layout.yml +5 -5
  506. data/resources/locales/uk/lists.yml +23 -7
  507. data/resources/locales/uk/numbers.yml +64 -59
  508. data/resources/locales/uk/plurals.yml +10 -4
  509. data/resources/locales/uk/rbnf.yml +430 -0
  510. data/resources/locales/uk/territories.yml +264 -263
  511. data/resources/locales/ur/calendars.yml +267 -228
  512. data/resources/locales/ur/currencies.yml +954 -916
  513. data/resources/locales/ur/languages.yml +583 -580
  514. data/resources/locales/ur/layout.yml +5 -5
  515. data/resources/locales/ur/lists.yml +23 -7
  516. data/resources/locales/ur/numbers.yml +62 -57
  517. data/resources/locales/ur/plurals.yml +3 -2
  518. data/resources/locales/ur/rbnf.yml +4 -0
  519. data/resources/locales/ur/territories.yml +264 -263
  520. data/resources/locales/vi/calendars.yml +256 -236
  521. data/resources/locales/vi/currencies.yml +953 -915
  522. data/resources/locales/vi/languages.yml +583 -580
  523. data/resources/locales/vi/layout.yml +5 -5
  524. data/resources/locales/vi/lists.yml +23 -7
  525. data/resources/locales/vi/numbers.yml +62 -57
  526. data/resources/locales/vi/plurals.yml +2 -2
  527. data/resources/locales/vi/rbnf.yml +164 -0
  528. data/resources/locales/vi/territories.yml +264 -263
  529. data/resources/locales/zh/calendars.yml +266 -265
  530. data/resources/locales/zh/currencies.yml +953 -915
  531. data/resources/locales/zh/languages.yml +583 -580
  532. data/resources/locales/zh/layout.yml +5 -5
  533. data/resources/locales/zh/lists.yml +23 -7
  534. data/resources/locales/zh/numbers.yml +62 -57
  535. data/resources/locales/zh/plurals.yml +2 -2
  536. data/resources/locales/zh/rbnf.yml +689 -0
  537. data/resources/locales/zh/territories.yml +264 -263
  538. data/resources/locales/zh-Hant/calendars.yml +266 -265
  539. data/resources/locales/zh-Hant/currencies.yml +955 -915
  540. data/resources/locales/zh-Hant/languages.yml +583 -580
  541. data/resources/locales/zh-Hant/layout.yml +5 -5
  542. data/resources/locales/zh-Hant/lists.yml +23 -7
  543. data/resources/locales/zh-Hant/numbers.yml +62 -57
  544. data/resources/locales/zh-Hant/plurals.yml +2 -2
  545. data/resources/locales/zh-Hant/rbnf.yml +647 -0
  546. data/resources/locales/zh-Hant/territories.yml +264 -263
  547. data/resources/shared/currency_digits_and_rounding.yml +67 -64
  548. data/resources/shared/numbering_systems.yml +176 -0
  549. data/resources/shared/rbnf_root.yml +1573 -0
  550. data/resources/shared/segments/segments_root.yml +728 -0
  551. data/resources/shared/segments/tailorings/en.yml +8 -0
  552. data/resources/uli/segments/de.yml +128 -0
  553. data/resources/uli/segments/en.yml +154 -0
  554. data/resources/uli/segments/es.yml +112 -0
  555. data/resources/uli/segments/fr.yml +47 -0
  556. data/resources/uli/segments/it.yml +37 -0
  557. data/resources/uli/segments/pt.yml +173 -0
  558. data/resources/uli/segments/ru.yml +10 -0
  559. data/resources/unicode_data/casefolding.yml +4765 -0
  560. data/resources/unicode_data/indices/bidi_class.yml +4572 -0
  561. data/resources/unicode_data/indices/bidi_mirrored.yml +3087 -0
  562. data/resources/unicode_data/indices/category.yml +10918 -0
  563. data/resources/unicode_data/indices/keys.yml +101 -0
  564. data/resources/unicode_data/properties/line_break.yml +9269 -0
  565. data/resources/unicode_data/properties/sentence_break.yml +8067 -0
  566. data/resources/unicode_data/properties/word_break.yml +3001 -0
  567. data/spec/collation/collation_spec.rb +2 -1
  568. data/spec/collation/collator_spec.rb +4 -3
  569. data/spec/collation/tailoring_spec.rb +2 -2
  570. data/spec/collation/tailoring_tests/he.txt +5 -2
  571. data/spec/{tokenizers/calendars → data_readers}/additional_date_format_selector_spec.rb +13 -13
  572. data/spec/data_readers/date_time_data_reader_spec.rb +26 -0
  573. data/spec/data_readers/number_data_reader_spec.rb +18 -0
  574. data/spec/data_readers/timespan_data_reader.rb +22 -0
  575. data/spec/formatters/calendars/datetime_formatter_spec.rb +18 -22
  576. data/spec/formatters/list_formatter_spec.rb +16 -87
  577. data/spec/formatters/numbers/abbreviated/abbreviated_number_formatter_spec.rb +15 -59
  578. data/spec/formatters/numbers/abbreviated/long_decimal_formatter_spec.rb +32 -17
  579. data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +33 -17
  580. data/spec/formatters/numbers/currency_formatter_spec.rb +18 -13
  581. data/spec/formatters/numbers/decimal_formatter_spec.rb +16 -18
  582. data/spec/formatters/numbers/number_formatter_spec.rb +40 -31
  583. data/spec/formatters/numbers/percent_formatter_spec.rb +14 -6
  584. data/spec/formatters/numbers/rbnf/allowed_failures.yml +74 -0
  585. data/spec/formatters/numbers/rbnf/locales/af/rbnf_test.yml +706 -0
  586. data/spec/formatters/numbers/rbnf/locales/ar/rbnf_test.yml +706 -0
  587. data/spec/formatters/numbers/rbnf/locales/be/rbnf_test.yml +1174 -0
  588. data/spec/formatters/numbers/rbnf/locales/bg/rbnf_test.yml +706 -0
  589. data/spec/formatters/numbers/rbnf/locales/bn/rbnf_test.yml +1291 -0
  590. data/spec/formatters/numbers/rbnf/locales/ca/rbnf_test.yml +1174 -0
  591. data/spec/formatters/numbers/rbnf/locales/cs/rbnf_test.yml +823 -0
  592. data/spec/formatters/numbers/rbnf/locales/cy/rbnf_test.yml +940 -0
  593. data/spec/formatters/numbers/rbnf/locales/da/rbnf_test.yml +940 -0
  594. data/spec/formatters/numbers/rbnf/locales/de/rbnf_test.yml +940 -0
  595. data/spec/formatters/numbers/rbnf/locales/el/rbnf_test.yml +1174 -0
  596. data/spec/formatters/numbers/rbnf/locales/en/rbnf_test.yml +1291 -0
  597. data/spec/formatters/numbers/rbnf/locales/en-GB/rbnf_test.yml +1291 -0
  598. data/spec/formatters/numbers/rbnf/locales/es/rbnf_test.yml +1642 -0
  599. data/spec/formatters/numbers/rbnf/locales/eu/rbnf_test.yml +1291 -0
  600. data/spec/formatters/numbers/rbnf/locales/fa/rbnf_test.yml +589 -0
  601. data/spec/formatters/numbers/rbnf/locales/fi/rbnf_test.yml +706 -0
  602. data/spec/formatters/numbers/rbnf/locales/fil/rbnf_test.yml +706 -0
  603. data/spec/formatters/numbers/rbnf/locales/fr/rbnf_test.yml +1408 -0
  604. data/spec/formatters/numbers/rbnf/locales/ga/rbnf_test.yml +940 -0
  605. data/spec/formatters/numbers/rbnf/locales/gl/rbnf_test.yml +1291 -0
  606. data/spec/formatters/numbers/rbnf/locales/he/rbnf_test.yml +1057 -0
  607. data/spec/formatters/numbers/rbnf/locales/hi/rbnf_test.yml +823 -0
  608. data/spec/formatters/numbers/rbnf/locales/hr/rbnf_test.yml +1174 -0
  609. data/spec/formatters/numbers/rbnf/locales/hu/rbnf_test.yml +940 -0
  610. data/spec/formatters/numbers/rbnf/locales/id/rbnf_test.yml +706 -0
  611. data/spec/formatters/numbers/rbnf/locales/is/rbnf_test.yml +823 -0
  612. data/spec/formatters/numbers/rbnf/locales/it/rbnf_test.yml +1174 -0
  613. data/spec/formatters/numbers/rbnf/locales/ja/rbnf_test.yml +823 -0
  614. data/spec/formatters/numbers/rbnf/locales/ko/rbnf_test.yml +1408 -0
  615. data/spec/formatters/numbers/rbnf/locales/lv/rbnf_test.yml +706 -0
  616. data/spec/formatters/numbers/rbnf/locales/ms/rbnf_test.yml +706 -0
  617. data/spec/formatters/numbers/rbnf/locales/nb/rbnf_test.yml +940 -0
  618. data/spec/formatters/numbers/rbnf/locales/nl/rbnf_test.yml +706 -0
  619. data/spec/formatters/numbers/rbnf/locales/pl/rbnf_test.yml +823 -0
  620. data/spec/formatters/numbers/rbnf/locales/pt/rbnf_test.yml +1174 -0
  621. data/spec/formatters/numbers/rbnf/locales/ro/rbnf_test.yml +823 -0
  622. data/spec/formatters/numbers/rbnf/locales/ru/rbnf_test.yml +823 -0
  623. data/spec/formatters/numbers/rbnf/locales/sk/rbnf_test.yml +823 -0
  624. data/spec/formatters/numbers/rbnf/locales/sq/rbnf_test.yml +706 -0
  625. data/spec/formatters/numbers/rbnf/locales/sr/rbnf_test.yml +940 -0
  626. data/spec/formatters/numbers/rbnf/locales/sv/rbnf_test.yml +1876 -0
  627. data/spec/formatters/numbers/rbnf/locales/ta/rbnf_test.yml +706 -0
  628. data/spec/formatters/numbers/rbnf/locales/th/rbnf_test.yml +706 -0
  629. data/spec/formatters/numbers/rbnf/locales/tr/rbnf_test.yml +706 -0
  630. data/spec/formatters/numbers/rbnf/locales/uk/rbnf_test.yml +823 -0
  631. data/spec/formatters/numbers/rbnf/locales/ur/rbnf_test.yml +1291 -0
  632. data/spec/formatters/numbers/rbnf/locales/vi/rbnf_test.yml +706 -0
  633. data/spec/formatters/numbers/rbnf/locales/zh/rbnf_test.yml +940 -0
  634. data/spec/formatters/numbers/rbnf/locales/zh-Hant/rbnf_test.yml +940 -0
  635. data/spec/formatters/numbers/rbnf/rbnf_spec.rb +98 -0
  636. data/spec/formatters/plurals/plural_formatter_spec.rb +4 -4
  637. data/spec/formatters/plurals/rules_spec.rb +5 -5
  638. data/spec/localized/localized_date_spec.rb +1 -1
  639. data/spec/localized/localized_datetime_spec.rb +8 -13
  640. data/spec/localized/localized_number_spec.rb +17 -32
  641. data/spec/localized/localized_object_spec.rb +0 -5
  642. data/spec/localized/localized_string_spec.rb +40 -2
  643. data/spec/localized/localized_time_spec.rb +3 -6
  644. data/spec/localized/localized_timespan_spec.rb +144 -0
  645. data/spec/normalization_spec.rb +12 -12
  646. data/spec/parsers/number_parser_spec.rb +5 -5
  647. data/spec/parsers/parser_spec.rb +60 -0
  648. data/spec/parsers/segmentation_parser_spec.rb +96 -0
  649. data/spec/parsers/symbol_table_spec.rb +32 -0
  650. data/spec/parsers/unicode_regex/character_class_spec.rb +117 -0
  651. data/spec/parsers/unicode_regex/character_range_spec.rb +21 -0
  652. data/spec/parsers/unicode_regex/character_set_spec.rb +36 -0
  653. data/spec/parsers/unicode_regex/literal_spec.rb +34 -0
  654. data/spec/parsers/unicode_regex/unicode_string_spec.rb +22 -0
  655. data/spec/parsers/unicode_regex_parser_spec.rb +86 -0
  656. data/spec/readme_spec.rb +8 -269
  657. data/spec/shared/break_iterator_spec.rb +72 -0
  658. data/spec/shared/calendar_spec.rb +5 -4
  659. data/spec/shared/casefolder_spec.rb +30 -0
  660. data/spec/shared/casefolding.txt +251 -0
  661. data/spec/shared/casefolding_expected.txt +251 -0
  662. data/spec/shared/code_point_spec.rb +44 -14
  663. data/spec/shared/numbering_system_spec.rb +41 -0
  664. data/spec/shared/territories_spec.rb +14 -6
  665. data/spec/shared/unicode_regex_spec.rb +203 -0
  666. data/spec/spec_helper.rb +17 -0
  667. data/spec/tokenizers/calendars/date_tokenizer_spec.rb +26 -30
  668. data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +11 -90
  669. data/spec/tokenizers/calendars/time_tokenizer_spec.rb +5 -5
  670. data/spec/tokenizers/calendars/timespan_tokenizer_spec.rb +17 -7
  671. data/spec/tokenizers/numbers/number_tokenizer_spec.rb +28 -27
  672. data/spec/tokenizers/segmentation/segmentation_tokenizer_spec.rb +40 -0
  673. data/spec/tokenizers/unicode_regex/unicode_regex_tokenizer_spec.rb +190 -0
  674. data/spec/utils/range_set_spec.rb +171 -0
  675. data/spec/utils/yaml/yaml_spec.rb +62 -51
  676. data/twitter_cldr.gemspec +1 -1
  677. metadata +199 -30
  678. data/lib/twitter_cldr/formatters/base.rb +0 -47
  679. data/lib/twitter_cldr/formatters/calendars/date_formatter.rb +0 -19
  680. data/lib/twitter_cldr/formatters/calendars/time_formatter.rb +0 -19
  681. data/lib/twitter_cldr/normalization/base.rb +0 -37
  682. data/lib/twitter_cldr/normalization/hangul.rb +0 -79
  683. data/lib/twitter_cldr/normalization/nfc.rb +0 -24
  684. data/lib/twitter_cldr/normalization/nfd.rb +0 -26
  685. data/lib/twitter_cldr/normalization/nfkc.rb +0 -114
  686. data/lib/twitter_cldr/normalization/nfkd.rb +0 -120
  687. data/lib/twitter_cldr/normalization/quick_check.rb +0 -41
  688. data/lib/twitter_cldr/tokenizers/base.rb +0 -169
  689. data/lib/twitter_cldr/tokenizers/calendars/datetime_tokenizer.rb +0 -131
  690. data/lib/twitter_cldr/utils/territories.rb +0 -56
  691. data/spec/formatters/base_spec.rb +0 -18
  692. data/spec/formatters/calendars/timespan_formatter_spec.rb +0 -112
  693. data/spec/normalization/NormalizationTestShort.txt +0 -602
  694. data/spec/normalization/base_spec.rb +0 -16
  695. data/spec/normalization/hangul_spec.rb +0 -42
  696. data/spec/normalization/normalization_spec.rb +0 -113
  697. data/spec/tokenizers/base_spec.rb +0 -259
  698. data/spec/utils/territories_spec.rb +0 -16
data/spec/readme_spec.rb CHANGED
@@ -5,276 +5,15 @@
5
5
 
6
6
  require 'spec_helper'
7
7
 
8
- def spaces(str)
9
- str.gsub("\xC2\xA0", " ")
10
- end
11
-
12
8
  describe "README" do
13
- it "verifies supported_locales" do
14
- sup = TwitterCldr.supported_locales
15
- sup.should be_a(Array)
16
- sup.first.should be_a(Symbol)
17
- end
18
-
19
- it "verifies supported_locale?" do
20
- TwitterCldr.supported_locale?(:es).should be_true
21
- TwitterCldr.supported_locale?(:xx).should be_false
22
- end
23
-
24
- it "verifies number formatting" do
25
- nbsp = "\xC2\xA0"
26
- 1337.localize(:es).to_s.should == "1.337"
27
- spaces(1337.localize(:es).to_currency.to_s).should == "1.337,00 $"
28
- spaces(1337.localize(:es).to_currency.to_s(:currency => "EUR").to_s).should == "1.337,00 €"
29
- 1337.localize(:es).to_percent.to_s.should == "1.337%"
30
- 1337.localize(:es).to_percent.to_s(:precision => 2).should == "1.337,00%"
31
- 1337.localize(:es).to_decimal.to_s(:precision => 3).should == "1.337,000"
32
-
33
- num = TwitterCldr::Localized::LocalizedNumber.new(1337, :es)
34
- spaces(num.to_currency.to_s).should == "1.337,00 $"
35
- end
36
-
37
- it "verifies extra currency data" do
38
- currency_codes = TwitterCldr::Shared::Currencies.currency_codes
39
- currency_codes.should be_a(Array)
40
- currency_codes.should include("LTL")
41
- currency_codes.should include("PHP")
42
- TwitterCldr::Shared::Currencies.for_code("CAD").should == {
43
- :currency => :CAD,
44
- :cldr_symbol => "CA$",
45
- :symbol => "$",
46
- :name => "Canadian dollar",
47
- :code_points => [36]
48
- }
49
- end
50
-
51
- it "verifies short and long decimals" do
52
- 2337.localize.to_short_decimal.to_s.should == "2K"
53
- 1337123.localize.to_short_decimal.to_s.should == "1M"
54
-
55
- 2337.localize.to_long_decimal.to_s.should == "2 thousand"
56
- 1337123.localize.to_long_decimal.to_s.should == "1 million"
57
- end
58
-
59
- it "verifies dates" do
60
- date_time = DateTime.new(2011, 12, 12, 21, 44, 57, 0.0)
61
- time = Time.at(date_time.localize.to_time.base_obj.utc)
62
-
63
- date_time.localize(:es).to_full_s.should == "lunes, 12 de diciembre de 2011 21:44:57 UTC +00:00"
64
- date_time.localize(:es).to_long_s.should == "12 de diciembre de 2011 21:44:57 UTC"
65
- date_time.localize(:es).to_medium_s.should == "12/12/2011 21:44:57"
66
- date_time.localize(:es).to_short_s.should == "12/12/11 21:44"
67
-
68
- date_time.localize(:es).to_date.to_full_s.should == "lunes, 12 de diciembre de 2011"
69
- date_time.localize(:es).to_date.to_long_s.should == "12 de diciembre de 2011"
70
- date_time.localize(:es).to_date.to_medium_s.should == "12/12/2011"
71
- date_time.localize(:es).to_date.to_short_s.should == "12/12/11"
72
-
73
- time.localize(:es).to_full_s.should match(/21:44:57 UTC [-+]\d{2}:\d{2}/)
74
- time.localize(:es).to_long_s.should == "21:44:57 UTC"
75
- time.localize(:es).to_medium_s.should == "21:44:57"
76
- time.localize(:es).to_short_s.should == "21:44"
77
-
78
- dt = TwitterCldr::Localized::LocalizedDateTime.new(date_time, :es)
79
- dt.to_short_s.should == "12/12/11 21:44"
80
- end
81
-
82
- it "verifies additional date formats" do
83
- date_time = DateTime.new(2011, 12, 12, 21, 44, 57, 0.0)
84
- TwitterCldr::Formatters::DateTimeFormatter.additional_formats_for(:ja).should be_a(Array)
85
- date_time.localize(:ja).to_s.should == "2011/12/12 21:44:57"
86
- date_time.localize(:ja).to_s(:format => "EEEEd").should == "12日月曜日"
87
- end
88
-
89
- it "verifies relative time spans" do
90
- (DateTime.now - 1).localize.ago.to_s.should match_normalized("1 day ago")
91
- (DateTime.now - 0.5).localize.ago.to_s.should match_normalized("12 hours ago") # (i.e. half a day)
92
-
93
- (DateTime.now + 1).localize.until.to_s.should match_normalized("In 1 day")
94
- (DateTime.now + 0.5).localize.until.to_s.should match_normalized("In 12 hours")
95
-
96
- (DateTime.now - 1).localize(:de).ago.to_s.should match_normalized("Vor 1 Tag")
97
- (DateTime.now + 1).localize(:de).until.to_s.should match_normalized("In 1 Tag")
98
-
99
- (DateTime.now - 1).localize(:de).ago.to_s(:unit => :hour).should match_normalized("Vor 24 Stunden")
100
- (DateTime.now + 1).localize(:de).until.to_s(:unit => :hour).should match_normalized("In 24 Stunden")
101
-
102
- # 86400 = 1 day in seconds, 259200 = 3 days in seconds
103
- (Time.now + 86400).localize(:de).ago(:base_time => (Time.now + 259200)).to_s(:unit => :hour).should match_normalized("Vor 48 Stunden")
104
-
105
- ts = TwitterCldr::Localized::LocalizedTimespan.new(86400, :locale => :de)
106
- ts.to_s.should match_normalized("In 1 Tag")
107
- ts.to_s(:unit => :hour).should match_normalized("In 24 Stunden")
108
-
109
- ts = TwitterCldr::Localized::LocalizedTimespan.new(-86400, :locale => :de)
110
- ts.to_s.should match_normalized("Vor 1 Tag")
111
- ts.to_s(:unit => :hour).should match_normalized("Vor 24 Stunden")
112
- end
113
-
114
- it "verifies approximate timespans" do
115
- TwitterCldr::Localized::LocalizedTimespan.new(44).to_s(:approximate => true).should == "In 44 seconds"
116
- TwitterCldr::Localized::LocalizedTimespan.new(45).to_s(:approximate => true).should == "In 1 minute"
117
- TwitterCldr::Localized::LocalizedTimespan.new(52).to_s(:approximate => true).should == "In 1 minute"
118
- end
119
-
120
- it "verifies plural rules" do
121
- 1.localize(:ru).plural_rule.should == :one
122
- 2.localize(:ru).plural_rule.should == :few
123
- 5.localize(:ru).plural_rule.should == :many
124
-
125
- TwitterCldr::Formatters::Plurals::Rules.all.should == [:one, :other]
126
- TwitterCldr::Formatters::Plurals::Rules.all_for(:es).should == [:one, :other]
127
- TwitterCldr::Formatters::Plurals::Rules.all_for(:ru).should == [:one, :few, :many, :other]
128
-
129
- # get the rule for a number in a specific locale
130
- TwitterCldr::Formatters::Plurals::Rules.rule_for(1, :ru).should == :one
131
- TwitterCldr::Formatters::Plurals::Rules.rule_for(2, :ru).should == :few
132
- end
133
-
134
- describe "plural interpolation" do
135
- it "verifies first technique" do
136
- replacements = { :horse_count => 3,
137
- :horses => { :one => "is 1 horse",
138
- :other => "are %{horse_count} horses" } }
139
-
140
- ("there %{horse_count:horses} in the barn".localize % replacements).should == "there are 3 horses in the barn"
141
- end
142
-
143
- it "verifies second technique" do
144
- str = 'there %<{ "horse_count": { "one": "is one horse", "other": "are %{horse_count} horses" } }> in the barn'
145
- (str.localize % { :horse_count => 3 }).should == "there are 3 horses in the barn"
146
- end
147
-
148
- it "verifies regular Ruby interpolation works" do
149
- ("five euros plus %.3f in tax" % (13.25 * 0.087)).should == "five euros plus 1.153 in tax"
150
-
151
- if RUBY_VERSION >= '1.9.0'
152
- ("there are %{count} horses in the barn" % { :count => "5" }).should == "there are 5 horses in the barn"
153
- end
9
+ renderer = TwitterCldr::Resources::ReadmeRenderer.new(
10
+ File.read(File.join(File.dirname(__FILE__), "../README.md.erb"))
11
+ )
12
+
13
+ renderer.render
14
+ renderer.assertion_failures.each do |failure|
15
+ it "encountered assertion failure on line #{failure.line_number}" do
16
+ raise failure.message
154
17
  end
155
-
156
- it "verifies named interpolation parameters" do
157
- #"five euros plus %<percent>.3f in %{noun}".localize % { :percent => 13.25 * 0.087, :noun => "tax" }.should == "five euros plus 1.15 in tax"
158
- end
159
- end
160
-
161
- it "verifies language code conversion" do
162
- TwitterCldr::Shared::LanguageCodes.convert(:es, :from => :bcp_47, :to => :iso_639_2).should == :spa
163
-
164
- expected = [:bcp_47, :iso_639_1, :iso_639_2, :iso_639_3]
165
- actual = TwitterCldr::Shared::LanguageCodes.standards_for(:es, :bcp_47)
166
- expected.size.should == actual.size
167
- actual.each { |standard| expected.should include(standard) }
168
-
169
- expected = [:bcp_47, :iso_639_1, :iso_639_2, :iso_639_3]
170
- actual = TwitterCldr::Shared::LanguageCodes.standards_for_language(:Spanish)
171
- expected.size.should == actual.size
172
- actual.each { |standard| expected.should include(standard) }
173
-
174
- TwitterCldr::Shared::LanguageCodes.languages.should include(:Spanish)
175
-
176
- TwitterCldr::Shared::LanguageCodes.valid_standard?(:iso_639_1).should be_true
177
- TwitterCldr::Shared::LanguageCodes.valid_standard?(:blarg).should be_false
178
-
179
- TwitterCldr::Shared::LanguageCodes.valid_code?(:es, :bcp_47).should be_true
180
- TwitterCldr::Shared::LanguageCodes.valid_code?(:es, :iso_639_2).should be_false
181
-
182
- TwitterCldr::Shared::LanguageCodes.from_language(:Spanish, :iso_639_2).should == :spa
183
-
184
- TwitterCldr::Shared::LanguageCodes.to_language(:spa, :iso_639_2).should == "Spanish"
185
- end
186
-
187
- it "verifies postal code validations" do
188
- TwitterCldr::Shared::PostalCodes.valid?(:us, "94103").should be_true
189
- TwitterCldr::Shared::PostalCodes.valid?(:us, "9410").should be_false
190
- TwitterCldr::Shared::PostalCodes.valid?(:gb, "BS98 1TL").should be_true
191
- TwitterCldr::Shared::PostalCodes.valid?(:se, "280 12").should be_true
192
- TwitterCldr::Shared::PostalCodes.valid?(:ca, "V3H 1Z7").should be_true
193
-
194
- TwitterCldr::Shared::PostalCodes.territories.should include(:gb)
195
-
196
- TwitterCldr::Shared::PostalCodes.regex_for_territory(:us).should == /\d{5}([ \-]\d{4})?/
197
- end
198
-
199
- it "verifies phone codes" do
200
- TwitterCldr::Shared::PhoneCodes.code_for_territory(:us).should == "1"
201
- TwitterCldr::Shared::PhoneCodes.code_for_territory(:pe).should == "51"
202
- TwitterCldr::Shared::PhoneCodes.code_for_territory(:eg).should == "20"
203
- TwitterCldr::Shared::PhoneCodes.code_for_territory(:dk).should == "45"
204
- TwitterCldr::Shared::PhoneCodes.territories.should include(:pe)
205
- end
206
-
207
- it "verifies world languages" do
208
- :es.localize(:es).as_language_code.should == "español"
209
- :ru.localize(:es).as_language_code.should == "ruso"
210
- ls = TwitterCldr::Localized::LocalizedSymbol.new(:ru, :es)
211
- ls.as_language_code.should == "ruso"
212
- end
213
-
214
- it "verifies language data" do
215
- # get all languages for the default locale
216
- all = TwitterCldr::Shared::Languages.all
217
- all.should include(:"zh-Hant")
218
- all[:'zh-Hant'].should == "Traditional Chinese"
219
- all.should include(:vi)
220
- all[:vi].should == "Vietnamese"
221
-
222
- # get all languages for a specific locale
223
- all_es = TwitterCldr::Shared::Languages.all_for(:es)
224
- all_es.should include(:"zh-Hant")
225
- all_es[:'zh-Hant'].should == "chino tradicional"
226
- all_es.should include(:vi)
227
- all_es[:vi].should == "vietnamita"
228
-
229
- # get a language by its code for the default locale
230
- TwitterCldr::Shared::Languages.from_code(:'zh-Hant').should == "Traditional Chinese"
231
-
232
- # get a language from its code for a specific locale
233
- TwitterCldr::Shared::Languages.from_code_for_locale(:'zh-Hant', :es).should == "chino tradicional"
234
-
235
- # translate a language from one locale to another
236
- TwitterCldr::Shared::Languages.translate_language("chino tradicional", :es, :en).should == "Traditional Chinese"
237
- TwitterCldr::Shared::Languages.translate_language("Traditional Chinese", :en, :es).should == "chino tradicional"
238
- end
239
-
240
- it "verifies code point conversions" do
241
- code_point = TwitterCldr::Shared::CodePoint.find(0x1F3E9)
242
- code_point.name.should == "LOVE HOTEL"
243
- code_point.bidi_mirrored.should == "N"
244
- code_point.category.should == "So"
245
- code_point.combining_class.should == "0"
246
-
247
- # Convert characters to code points:
248
- TwitterCldr::Utils::CodePoints.from_string("¿").should == [0x0BF]
249
-
250
- # Convert code points to characters:
251
- TwitterCldr::Utils::CodePoints.to_string([0xBF]).should == "¿"
252
- end
253
-
254
- it "verifies normalization" do
255
- TwitterCldr::Normalization::NFD.normalize('français').should == TwitterCldr::Utils::CodePoints.to_string([0x66, 0x72, 0x61, 0x6E, 0x63, 0x327, 0x61, 0x69, 0x73])
256
- TwitterCldr::Utils::CodePoints.from_string('español').should == [0x65, 0x73, 0x70, 0x61, 0xF1, 0x6F, 0x6C]
257
- TwitterCldr::Utils::CodePoints.from_string(TwitterCldr::Normalization::NFD.normalize('español')).should == [0x65, 0x73, 0x70, 0x61, 0x6E, 0x303, 0x6F, 0x6C]
258
-
259
- "español".localize.code_points.should == [101, 115, 112, 97, 241, 111, 108]
260
- "español".localize.normalize.code_points.should == [101, 115, 112, 97, 110, 771, 111, 108]
261
- "español".localize.normalize(:using => :NFKD).code_points.should == [101, 115, 112, 97, 110, 771, 111, 108]
262
- end
263
-
264
- it "verifies Twitter-specific locale conversion" do
265
- TwitterCldr.convert_locale(:'zh-cn').should == :zh
266
- TwitterCldr.convert_locale(:zh).should == :zh
267
- TwitterCldr.convert_locale(:'zh-tw').should == :'zh-Hant'
268
- TwitterCldr.convert_locale(:'zh-Hant').should == :'zh-Hant'
269
-
270
- TwitterCldr.convert_locale(:msa).should == :ms
271
- TwitterCldr.convert_locale(:ms).should == :ms
272
- end
273
-
274
- it "verifies locale defaults" do
275
- TwitterCldr.locale.should == :en
276
- TwitterCldr.locale = nil
277
- FastGettext.locale = "ru"
278
- TwitterCldr.locale.should == :ru
279
18
  end
280
19
  end
@@ -0,0 +1,72 @@
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::Shared
9
+
10
+ describe BreakIterator do
11
+ describe "#each_sentence" do
12
+ let(:iterator) { BreakIterator.new(:en, :use_uli_exceptions => true) }
13
+
14
+ it "should return an enumerator if called without a block" do
15
+ iterator.each_sentence("foo bar").should be_a(Enumerator)
16
+ end
17
+
18
+ it "splits a simple string into sentences" do
19
+ str = "The. Quick. Brown. Fox."
20
+ iterator.each_sentence(str).to_a.should == [
21
+ "The.", " Quick.", " Brown.", " Fox."
22
+ ]
23
+ end
24
+
25
+ it "does not split on commas, for example" do
26
+ str = "The. Quick, brown. Fox."
27
+ iterator.each_sentence(str).to_a.should == [
28
+ "The.", " Quick, brown.", " Fox."
29
+ ]
30
+ end
31
+
32
+ it "does not split periods in the midst of other letters, eg. in a URL" do
33
+ str = "Visit us. Go to http://translate.twitter.com."
34
+ iterator.each_sentence(str).to_a.should == [
35
+ "Visit us.",
36
+ " Go to http://translate.twitter.com."
37
+ ]
38
+ end
39
+
40
+ it "splits on sentences that end with other kinds of punctuation" do
41
+ str = "Help us translate! Speak another language? You really, really rock."
42
+ iterator.each_sentence(str).to_a.should == [
43
+ "Help us translate!",
44
+ " Speak another language?",
45
+ " You really, really rock."
46
+ ]
47
+ end
48
+
49
+ context "with ULI exceptions" do
50
+ it "does not split on certain abbreviations like Mr. and Mrs." do
51
+ str = "I really like Mrs. Patterson. She's nice."
52
+ iterator.each_sentence(str).to_a.should == [
53
+ "I really like Mrs. Patterson.",
54
+ " She's nice."
55
+ ]
56
+ end
57
+ end
58
+
59
+ context "without ULI exceptions" do
60
+ let(:iterator) { BreakIterator.new(:en, :use_uli_exceptions => false) }
61
+
62
+ it "splits on certain abbreviations like Mr. and Mrs. (use ULI rules to avoid this behavior)" do
63
+ str = "I really like Mrs. Patterson. She's nice."
64
+ iterator.each_sentence(str).to_a.should == [
65
+ "I really like Mrs.",
66
+ " Patterson.",
67
+ " She's nice."
68
+ ]
69
+ end
70
+ end
71
+ end
72
+ end
@@ -14,6 +14,7 @@ describe Calendar do
14
14
  before(:each) do
15
15
  # clear cache for each test
16
16
  Calendar.send(:class_variable_set, :@@calendar_cache, {})
17
+ Calendar.send(:class_variable_set, :@@field_cache, {})
17
18
  end
18
19
 
19
20
  describe '#initialize' do
@@ -189,15 +190,15 @@ describe Calendar do
189
190
  describe '#eras' do
190
191
  it 'returns default eras' do
191
192
  calendar.eras.should == {
192
- 0 => "v. Chr.",
193
- 1 => "n. Chr."
193
+ 0 => "vor der gewöhnlichen Zeitrechnung",
194
+ 1 => "der gewöhnlichen Zeitrechnung"
194
195
  }
195
196
  end
196
197
 
197
198
  it 'returns eras with other name forms' do
198
199
  calendar.eras(:abbr).should == {
199
- 0 => "v. Chr.",
200
- 1 => "n. Chr."
200
+ 0 => "v. u. Z.",
201
+ 1 => "u. Z."
201
202
  }
202
203
  end
203
204
  end
@@ -0,0 +1,30 @@
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::Shared
9
+
10
+ describe Casefolder do
11
+ describe "#casefold" do
12
+ it "should casefold a few canonical examples" do
13
+ Casefolder.casefold("Weißrussland").should == "weissrussland"
14
+ Casefolder.casefold("Hello, World").should == "hello, world"
15
+ end
16
+
17
+ it "should correctly casefold the Turkic i character" do
18
+ Casefolder.casefold("Istanbul", true).should == "ıstanbul"
19
+ Casefolder.casefold("İstanbul", true).should == "istanbul"
20
+ end
21
+
22
+ # the files used in this test come from the unicode_utils gem
23
+ it "should casefold a large block of text and exactly match the expected text" do
24
+ base_path = File.dirname(__FILE__)
25
+ text = File.read(File.join(base_path, "casefolding.txt"))
26
+ expected = File.read(File.join(base_path, "casefolding_expected.txt"))
27
+ Casefolder.casefold(text).should == expected
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,251 @@
1
+ Dreiländereck
2
+ aus Wikipedia, der freien Enzyklopädie
3
+ Wechseln zu: Navigation, Suche
4
+ Dreiländereck D/F/CH am Rheinhafen von Basel
5
+ Vaalserberg: Dreiländereck (D/NL/B)
6
+ Sevening: Europadenkmal (D/B/L)
7
+ Denkmal für das „Schengener Abkommen“ in Schengen, Luxemburg (D/L/F)
8
+ Zittau: Dreiländereck (D/CZ/PL)
9
+ Treriksröset: Dreiländereck FIN/N/S
10
+ Berg Ofen: Grenzstein Dreiländereck I/SLO/A
11
+ Monte Roraima: Dreiländereck Brasilien, Guyana, Venezuela
12
+ Markstein auf der argentinischen Seite des Dreiländerecks RA/BR/PY
13
+
14
+ Ein Dreiländereck – auch Länderdreieck genannt – ist der geografische Punkt, wo drei gleichrangige Grenzen und auch drei gleich geartete Territorien (Länder, Staaten, Bundesländer) aufeinander treffen. Bekannt werden solche Dreiländerecke meist, wenn sie schon längere Zeit bestehen oder aber, wenn drei Kulturen aufeinander treffen.
15
+
16
+ Meist ist diese Stelle durch die jeweiligen Staatsflaggen oder Monumente markiert.
17
+
18
+ Von den zurzeit 195 Staaten auf der Erde haben 134 einen solchen Grenzpunkt. Insgesamt existieren 157 Dreiländerecke auf der Erde. Die Häufigkeit des Vorkommens von Dreiländerecken ist abhängig von der Anzahl der Nachbarn, aber auch von der Anzahl der Seegrenzen. So haben Inselnationen wie Japan keines, wie auch Staaten wie Portugal oder Dänemark, die nur ein Nachbarland haben bzw. vollständig von einem Staat umgeben sind (wie z. B. San Marino). Auch sind zwei Nachbarländer kein hinreichendes Kriterium, wie es z. B. bzgl. der USA in Nordamerika ist. Auch die Fläche eines Staats hat nur bedingt mit der Anzahl an Dreiländerecken zu tun: Der Staat mit den meisten ist China mit 15, während Russland, der flächenmäßig größte Staat der Welt, nur acht hat.
19
+
20
+ Österreich hat an seinen Grenzen neun Dreiländerecke (und ist damit der Staat mit den meisten Dreiländerecken innerhalb Europas), Deutschland sieben, die Schweiz sechs und Liechtenstein weist zwei Dreiländerecke auf.
21
+ Inhaltsverzeichnis
22
+ [Verbergen]
23
+
24
+ * 1 Dreiländerecke weltweit
25
+ o 1.1 Europa
26
+ o 1.2 Mittel- und Südamerika
27
+ o 1.3 Nordamerika
28
+ o 1.4 Afrika
29
+ o 1.5 Asien
30
+ * 2 Ehemalige Dreiländerecke
31
+ o 2.1 Europa
32
+ * 3 Siehe auch
33
+ * 4 Weblinks
34
+
35
+ Dreiländerecke weltweit [Bearbeiten]
36
+
37
+ Alphabetische Liste von allen 46 internationalen Dreiländerecken in Europa:
38
+
39
+ Europa [Bearbeiten]
40
+
41
+ * Albanien – Griechenland – Mazedonien, am Prespa-See
42
+ * Albanien – Mazedonien – Kosovo, südlich von Prizren in Kosovo
43
+ * Albanien – Montenegro – Kosovo, nördlich von Bajram Curri in Albanien
44
+ * Andorra – Frankreich – Spanien (Osteck), in den Pyrenäen
45
+ * Andorra – Frankreich – Spanien (Westeck), in den Pyrenäen
46
+ * Belgien – Deutschland – Luxemburg, am Europadenkmal an der Our bei Sevenig
47
+ * Belgien – Deutschland – Niederlande, auf dem Vaalserberg westlich von Aachen (war zeitweilig auch wegen Neutral-Moresnet ein Vierländereck)
48
+ * Belgien – Frankreich – Luxemburg, bei Longwy, Pétange, Aubange
49
+ * Bosnien-Herzegowina – Kroatien – Montenegro, nordöstlich von Gruda in Kroatien
50
+ * Bosnien-Herzegowina – Kroatien – Serbien, westlich von Omjelovo in Bosnien-Herzegowina
51
+ * Bosnien-Herzegowina – Montenegro – Serbien, westlich von Priboj in Serbien
52
+ * Bulgarien – Griechenland – Mazedonien, westlich von Petritsch in Bulgarien
53
+ * Bulgarien – Griechenland – Türkei, bei der griechischen Gemeinde Trigono, westlich des türkischen Edirne
54
+ * Bulgarien – Mazedonien – Serbien, westlich von Kjustendil in Bulgarien
55
+ * Bulgarien – Rumänien – Serbien, östlich von Negotin in Serbien
56
+ * Deutschland – Frankreich – Luxemburg, bei Perl, Apach, Schengen in der Mosel
57
+ * Deutschland – Frankreich – Schweiz, bei Basel, Hüningen und Weil am Rhein im Rhein
58
+ * Deutschland – Polen – Tschechien, südöstlich von Zittau
59
+ * Deutschland – Schweiz – Österreich, im Bodensee
60
+ * Deutschland – Tschechien – Österreich, am Plöckenstein (1320 m), Böhmerwald
61
+ * Estland – Lettland – Russland, westlich von Stuborova in Lettland
62
+ * Finnland – Norwegen – Russland, nordöstlich von Ivalo in Finnland
63
+ * Finnland – Norwegen – Schweden, schwedisch Treriksröset, norwegisch Treriksrøysa, finnisch Kolmen valtakunnan rajapyykki, westlich von Kilpisjärvi in Finnland
64
+ * Frankreich – Italien – Schweiz, auf der Bergspitze des Mont Dolent (3820 m) nahe dem Mont Blanc
65
+ * Italien – Schweiz – Österreich, nähe Reschenpass an der „Dreiländerecke“ (2.179 m)
66
+ * Italien – Slowenien – Österreich, bei Arnoldstein auf dem Gipfel des Ofen (slow. Peč) alias Dreiländereck
67
+ * Kroatien – Serbien – Ungarn, nordöstlich von Gruda in Kroatien
68
+ * Kroatien – Slowenien – Ungarn, südöstlich von Letenye in Ungarn
69
+ * Lettland – Litauen – Weißrussland, nordöstlich von Visaginas in Litauen
70
+ * Lettland – Russland – Weißrussland, südöstlich von Suskova in Lettland
71
+ * Liechtenstein – Schweiz – Österreich (Nordeck), im Rhein bei Sennwald
72
+ * Liechtenstein – Schweiz – Österreich (Südeck), im Rätikon am Naafkopf (2571 m)
73
+ * Litauen – Polen – Russland (Kaliningrad), westlich von Wizajny in Polen
74
+ * Litauen – Polen – Weißrussland, westlich von Druskininkai in Litauen
75
+ * Moldawien – Rumänien – Ukraine (Nordeck), nordöstlich von Dărăbani in Rumänien
76
+ * Moldawien – Rumänien – Ukraine (Südeck), östlich von Galaţi in Rumänien
77
+ * Polen – Slowakei – Tschechien, bei Hrčava in Tschechien und Jaworzynka in Polen
78
+ * Polen – Slowakei – Ukraine, nordöstlich von Nova Sedlica in Slowakei
79
+ * Polen – Ukraine – Weißrussland, südöstlich von Wlodawa in Polen
80
+ * Rumänien – Serbien – Ungarn, südlich von Kübekhaza in Ungarn
81
+ * Rumänien – Ukraine – Ungarn, nordöstlich von Bercu in Rumänien
82
+ * Russland – Ukraine – Weißrussland, südöstlich von Homel in Weißrussland
83
+ * Slowakei – Ukraine – Ungarn, bei Zahony in Ungarn
84
+ * Slowakei – Ungarn – Österreich, bei Deutsch Jahrndorf in Österreich, Rajka in Ungarn
85
+ * Slowakei – Tschechien – Österreich, bei Hohenau an der March in Österreich
86
+ * Slowenien – Österreich – Ungarn, östlich von Tauka in Österreich
87
+
88
+ Die nachfolgende Auflistung zeigt eine kleine Auswahl existierender Dreiländerecke in anderen Kontinenten:
89
+
90
+ Mittel- und Südamerika [Bearbeiten]
91
+
92
+ In Mittelamerika existieren zwei Dreiländerecke und in Südamerika 13:
93
+
94
+ * Argentinien – Bolivien – Chile
95
+ * Argentinien – Bolivien – Paraguay
96
+ * Argentinien – Brasilien – Paraguay: Hito Tres Fronteras, bekannt durch die Iguaçu-Wasserfälle
97
+ * Argentinien – Brasilien – Uruguay
98
+ * Mittelamerika: Belize – Guatemala – Mexiko
99
+ * Bolivien – Brasilien – Paraguay
100
+ * Bolivien – Brasilien – Peru
101
+ * Bolivien – Chile – Peru
102
+ * Brasilien – Kolumbien – Peru: Tres Fronteras, im Amazonas-Regenwald mit einer Dreistadt Tabatinga, Leticia, Santa Rosa mit mehr als 100.000 Einwohnern
103
+ * Brasilien – Kolumbien – Venezuela
104
+ * Brasilien – Französisch-Guayana – Surinam
105
+ * Brasilien – Guyana – Surinam
106
+ * Brasilien – Guyana – Venezuela: Auf dem Berg Monte Roraima
107
+ * Kolumbien – Ecuador – Peru
108
+ * Mittelamerika: Guatemala – Honduras – El Salvador
109
+
110
+ Nordamerika [Bearbeiten]
111
+
112
+ Da mit Kanada und den Vereinigten Staaten nur zwei Staaten in Nordamerika neben einigen französischen Inseln an der kanadischen Ostküste existieren, kann es dort keine Dreiländerecke geben.
113
+
114
+ Die Bundesstaaten der Vereinigten Staaten bilden 38 Tri-State Areas (Dreistaatengebiete).
115
+
116
+ Afrika [Bearbeiten]
117
+
118
+ In Afrika existieren 55 Dreiländerecke:
119
+
120
+ * Südafrika – Botswana – Namibia
121
+ * Südafrika – Botswana – Simbabwe
122
+ * Südafrika – Mosambik – Simbabwe (siehe Crook’s Corner)
123
+ * Südafrika – Mosambik – Swasiland (Nord)
124
+ * Südafrika – Mosambik – Swasiland (Süd)
125
+ * Algerien – Libyen – Niger
126
+ * Algerien – Libyen – Tunesien
127
+ * Algerien – Mali – Mauretanien
128
+ * Algerien – Mali – Niger
129
+ * Algerien – Marokko – West-Sahara
130
+ * Algerien – Mauretanien – West-Sahara
131
+ * Angola – Namibia – Sambia
132
+ * Angola – Republik Kongo – Demokratische Republik Kongo: Cabinda
133
+ * Angola – Demokratische Republik Kongo – Sambia
134
+ * Benin – Burkina Faso – Niger
135
+ * Benin – Burkina Faso – Togo
136
+ * Benin – Niger – Nigeria
137
+ * Botswana – Sambia – Simbabwe
138
+ * Burkina Faso – Elfenbeinküste – Ghana
139
+ * Burkina Faso – Elfenbeinküste – Mali
140
+ * Burkina Faso – Ghana – Togo
141
+ * Burkina Faso – Mali – Niger
142
+ * Burundi – Demokratische Republik Kongo – Ruanda
143
+ * Burundi – Ruanda – Tansania
144
+ * Kamerun – Gabun – Äquatorial-Guinea
145
+ * Kamerun – Gabun – Republik Kongo
146
+ * Kamerun – Nigeria – Tschad
147
+ * Kamerun – Zentralafrikanische Republik – Republik Kongo
148
+ * Kamerun – Zentralafrikanische Republik – Tschad
149
+ * Elfenbeinküste – Guinea – Liberia
150
+ * Elfenbeinküste – Guinea – Mali
151
+ * Dschibuti – Eritrea – Äthiopien
152
+ * Dschibuti – Äthiopien – Somalia
153
+ * Ägypten – Libyen – Sudan
154
+ * Eritrea – Äthiopien – Sudan
155
+ * Äthiopien – Kenia – Somalia
156
+ * Äthiopien – Kenia – Sudan
157
+ * Guinea – Guinea-Bissau – Senegal
158
+ * Guinea – Liberia – Sierra Leone
159
+ * Kenia – Uganda – Sudan
160
+ * Kenia – Uganda – Tansania
161
+ * Libyen – Niger – Tschad
162
+ * Libyen – Sudan – Tschad
163
+ * Malawi – Mosambik – Tansania
164
+ * Malawi – Mosambik – Sambia
165
+ * Mosambik – Tansania – Sambia
166
+ * Mosambik – Sambia – Simbabwe: Bei Zumbo
167
+ * Mali – Mauretanien – Senegal
168
+ * Niger – Nigeria – Tschad
169
+ * Uganda – Demokratische Republik Kongo – Ruanda
170
+ * Uganda – Demokratische Republik Kongo – Sudan
171
+ * Uganda – Ruanda – Tansania
172
+ * Zentralafrikanische Republik – Republik Kongo – Demokratische Republik Kongo
173
+ * Zentralafrikanische Republik – Demokratische Republik Kongo – Sudan
174
+ * Demokratische Republik Kongo – Tansania – Sambia
175
+
176
+ Asien [Bearbeiten]
177
+
178
+ In Asien existieren 42 Dreiländerecke:
179
+
180
+ * Afghanistan – Iran – Pakistan
181
+ * Afghanistan – Iran – Turkmenistan
182
+ * Afghanistan – VR China – Pakistan
183
+ * Afghanistan – VR China – Tadschikistan
184
+ * Afghanistan – Usbekistan – Tadschikistan
185
+ * Afghanistan – Usbekistan – Turkmenistan
186
+ * Saudi-Arabien – Vereinigte Arabische Emirate – Oman: Umm az Zamul
187
+ * Saudi-Arabien – Irak – Jordanien
188
+ * Saudi-Arabien – Irak – Kuwait
189
+ * Saudi-Arabien – Oman – Jemen
190
+ * Armenien – Aserbaidschan – Georgien
191
+
192
+ Mekong und Goldenes Dreieck
193
+
194
+ * Armenien – Aserbaidschan – Iran
195
+ * Armenien – Aserbaidschan – Iran
196
+ * Armenien – Aserbaidschan – Türkei
197
+ * Gaza-Streifen – Ägypten – Israel
198
+ * Bangladesch – Burma – Indien
199
+ * Bhutan – VR China – Indien (Osten)
200
+ * Bhutan – VR China – Indien (Westen)
201
+ * Burma – VR China – Indien
202
+ * Burma – VR China – Laos
203
+ * Burma – Laos – Thailand: Goldenes Dreieck
204
+ * Kambodscha – Laos – Thailand
205
+ * Kambodscha – Laos – Vietnam
206
+ * VR China – Indien – Nepal (Osten)
207
+ * VR China – Indien – Nepal (Westen)
208
+ * VR China – Indien – Pakistan
209
+ * VR China – Kasachstan – Kirgisien
210
+ * VR China – Kasachstan – Russland
211
+ * VR China – Laos – Vietnam
212
+ * VR China – Mongolei – Russland (Osten)
213
+ * VR China – Mongolei – Russland (Westen)
214
+ * VR China – Nord-Korea – Russland in der Region Primorje
215
+ * Palästina – Israel – Jordanien (Nord)
216
+ * Palästina – Israel – Jordanien (Süden)
217
+ * Irak – Iran – Türkei
218
+ * Irak – Jordanien – Syrien
219
+ * Irak – Syrien – Türkei
220
+ * Israel – Jordanien – Syrien
221
+ * Israel – Libanon – Syrien: Mount Hermon
222
+ * Kasachstan – Kirgisien – Usbekistan
223
+ * Kasachstan – Usbekistan – Turkmenistan
224
+ * Kirgisien – Usbekistan – Tadschikistan
225
+
226
+ Die Dreiländerecke VR China – Kasachstan – Russland sowie VR China – Mongolei – Russland liegen im Altai nur 50 Kilometer voneinander entfernt.
227
+
228
+ Ehemalige Dreiländerecke [Bearbeiten]
229
+
230
+ Infolge von Grenzverschiebungen kommt es vor, dass Dreiländerecke zu normalen Staatsgrenzen werden, aber dennoch ein markanter Punkt bleiben:
231
+
232
+ Europa [Bearbeiten]
233
+
234
+ * Italien – Schweiz – Österreich; bis zur Abtretung Südtirols von Österreich an Italien, nähe Stilfserjoch auf der Dreisprachenspitze. Es ist heute ein „Dreispracheneck“ geblieben mit Italienisch (Lombardei), Deutsch (Südtirol) und Rätoromanisch (Schweiz).
235
+ * BR Deutschland – DDR – Tschechoslowakei; bis zur Wiedervereinigung an der Stelle, wo Bayern, Sachsen und Böhmen (Tschechien) aufeinander treffen, es handelt sich um einen Punkt in der Nähe der Orte Regnitzlosau, Landkreis Hof, Bayern; Eichigt, Vogtlandkreis, Sachsen; und Hranice u Aše, Okres Cheb, heute Tschechische Republik.
236
+
237
+ Siehe auch [Bearbeiten]
238
+ Commons Commons: Dreiländereck – Bilder, Videos und Audiodateien
239
+
240
+ * Dreikaisereck
241
+ * Vierländereck
242
+ * Dreiherrenstein
243
+ * Tanzen im Dreiländereck
244
+ * Dreigräben
245
+
246
+ Weblinks [Bearbeiten]
247
+
248
+ * Liste aller Dreiländer als KML-Datei mit Koordinaten
249
+
250
+ Von „http://de.wikipedia.org/wiki/Dreil%C3%A4ndereck“
251
+ Kategorien: Politische Geographie | Grenze