twitter_cldr 6.6.0 → 6.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/README.md +13 -13
- data/Rakefile +16 -1
- data/lib/twitter_cldr/formatters/formatter.rb +0 -4
- data/lib/twitter_cldr/formatters/list_formatter.rb +7 -1
- data/lib/twitter_cldr/resources/calendars_importer.rb +220 -0
- data/lib/twitter_cldr/resources/language_codes_importer.rb +1 -1
- data/lib/twitter_cldr/resources/list_formats_importer.rb +140 -0
- data/lib/twitter_cldr/resources/locales_resources_importer.rb +0 -28
- data/lib/twitter_cldr/resources/requirements/cldr_requirement.rb +21 -11
- data/lib/twitter_cldr/resources/requirements/unicode_requirement.rb +7 -3
- data/lib/twitter_cldr/resources/segment_dictionaries_importer.rb +6 -3
- data/lib/twitter_cldr/resources/timezone_tests_importer.rb +8 -0
- data/lib/twitter_cldr/resources/units_importer.rb +134 -0
- data/lib/twitter_cldr/resources.rb +6 -0
- data/lib/twitter_cldr/shared/calendar.rb +1 -17
- data/lib/twitter_cldr/shared/casefolder.rb +53 -48
- data/lib/twitter_cldr/shared/unit.rb +2 -4
- data/lib/twitter_cldr/tokenizers/calendars/date_tokenizer.rb +0 -1
- data/lib/twitter_cldr/tokenizers/tokenizer.rb +7 -12
- data/lib/twitter_cldr/tokenizers.rb +0 -1
- data/lib/twitter_cldr/version.rb +1 -1
- data/lib/twitter_cldr/versions.rb +3 -3
- data/resources/locales/af/calendars.yml +1 -0
- data/resources/locales/af/currencies.yml +3 -6
- data/resources/locales/af/languages.yml +2 -1
- data/resources/locales/af/lists.yml +18 -3
- data/resources/locales/af/numbers.yml +1 -0
- data/resources/locales/af/timezones.yml +3 -0
- data/resources/locales/af/units.yml +513 -125
- data/resources/locales/ar/calendars.yml +1 -0
- data/resources/locales/ar/currencies.yml +2 -4
- data/resources/locales/ar/languages.yml +1 -1
- data/resources/locales/ar/lists.yml +12 -0
- data/resources/locales/ar/numbers.yml +1 -0
- data/resources/locales/ar/timezones.yml +3 -0
- data/resources/locales/ar/units.yml +263 -122
- data/resources/locales/az/calendars.yml +1 -0
- data/resources/locales/az/currencies.yml +1 -3
- data/resources/locales/az/languages.yml +2 -2
- data/resources/locales/az/lists.yml +8 -0
- data/resources/locales/az/numbers.yml +1 -0
- data/resources/locales/az/timezones.yml +3 -0
- data/resources/locales/az/units.yml +116 -44
- data/resources/locales/be/calendars.yml +2 -1
- data/resources/locales/be/currencies.yml +7 -5
- data/resources/locales/be/languages.yml +2 -1
- data/resources/locales/be/lists.yml +18 -3
- data/resources/locales/be/numbers.yml +5 -4
- data/resources/locales/be/timezones.yml +3 -0
- data/resources/locales/be/units.yml +37 -7
- data/resources/locales/bg/calendars.yml +1 -0
- data/resources/locales/bg/currencies.yml +1 -4
- data/resources/locales/bg/languages.yml +1 -1
- data/resources/locales/bg/lists.yml +17 -2
- data/resources/locales/bg/numbers.yml +1 -0
- data/resources/locales/bg/timezones.yml +3 -0
- data/resources/locales/bg/units.yml +24 -15
- data/resources/locales/bn/calendars.yml +1 -0
- data/resources/locales/bn/currencies.yml +1 -3
- data/resources/locales/bn/languages.yml +1 -1
- data/resources/locales/bn/lists.yml +14 -2
- data/resources/locales/bn/numbers.yml +1 -0
- data/resources/locales/bn/timezones.yml +3 -0
- data/resources/locales/bn/units.yml +126 -24
- data/resources/locales/bo/calendars.yml +64 -13
- data/resources/locales/bo/currencies.yml +1 -7
- data/resources/locales/bo/lists.yml +42 -7
- data/resources/locales/bo/numbers.yml +1 -0
- data/resources/locales/bo/units.yml +8 -16
- data/resources/locales/bs/calendars.yml +2 -2
- data/resources/locales/bs/currencies.yml +1 -3
- data/resources/locales/bs/fields.yml +2 -2
- data/resources/locales/bs/languages.yml +5 -1
- data/resources/locales/bs/lists.yml +18 -3
- data/resources/locales/bs/numbers.yml +1 -0
- data/resources/locales/bs/timezones.yml +3 -0
- data/resources/locales/bs/units.yml +36 -20
- data/resources/locales/ca/calendars.yml +1 -0
- data/resources/locales/ca/currencies.yml +79 -81
- data/resources/locales/ca/languages.yml +1 -1
- data/resources/locales/ca/lists.yml +12 -2
- data/resources/locales/ca/numbers.yml +1 -0
- data/resources/locales/ca/territories.yml +7 -7
- data/resources/locales/ca/timezones.yml +3 -0
- data/resources/locales/ca/units.yml +52 -68
- data/resources/locales/cs/calendars.yml +1 -0
- data/resources/locales/cs/currencies.yml +1 -1
- data/resources/locales/cs/languages.yml +1 -1
- data/resources/locales/cs/lists.yml +2 -0
- data/resources/locales/cs/numbers.yml +1 -0
- data/resources/locales/cs/timezones.yml +3 -0
- data/resources/locales/cs/units.yml +417 -190
- data/resources/locales/cy/calendars.yml +3 -0
- data/resources/locales/cy/currencies.yml +1 -4
- data/resources/locales/cy/fields.yml +3 -3
- data/resources/locales/cy/languages.yml +2 -2
- data/resources/locales/cy/lists.yml +12 -2
- data/resources/locales/cy/numbers.yml +1 -0
- data/resources/locales/cy/timezones.yml +3 -0
- data/resources/locales/cy/units.yml +339 -111
- data/resources/locales/da/calendars.yml +2 -1
- data/resources/locales/da/currencies.yml +6 -8
- data/resources/locales/da/languages.yml +1 -1
- data/resources/locales/da/lists.yml +10 -1
- data/resources/locales/da/numbers.yml +1 -0
- data/resources/locales/da/timezones.yml +3 -0
- data/resources/locales/da/units.yml +101 -49
- data/resources/locales/de/calendars.yml +5 -0
- data/resources/locales/de/currencies.yml +1 -1
- data/resources/locales/de/languages.yml +2 -2
- data/resources/locales/de/lists.yml +18 -3
- data/resources/locales/de/numbers.yml +1 -0
- data/resources/locales/de/rbnf.yml +65 -2
- data/resources/locales/de/timezones.yml +3 -0
- data/resources/locales/de/units.yml +181 -108
- data/resources/locales/de-AT/calendars.yml +3 -0
- data/resources/locales/de-AT/currencies.yml +1 -1
- data/resources/locales/de-AT/languages.yml +2 -2
- data/resources/locales/de-AT/lists.yml +18 -3
- data/resources/locales/de-AT/numbers.yml +1 -0
- data/resources/locales/de-AT/timezones.yml +3 -0
- data/resources/locales/de-AT/units.yml +181 -108
- data/resources/locales/de-CH/calendars.yml +5 -0
- data/resources/locales/de-CH/currencies.yml +1 -1
- data/resources/locales/de-CH/languages.yml +2 -2
- data/resources/locales/de-CH/lists.yml +18 -3
- data/resources/locales/de-CH/numbers.yml +1 -0
- data/resources/locales/de-CH/timezones.yml +3 -0
- data/resources/locales/de-CH/units.yml +183 -110
- data/resources/locales/el/calendars.yml +10 -9
- data/resources/locales/el/currencies.yml +3 -5
- data/resources/locales/el/fields.yml +4 -0
- data/resources/locales/el/languages.yml +4 -4
- data/resources/locales/el/lists.yml +14 -2
- data/resources/locales/el/numbers.yml +1 -0
- data/resources/locales/el/timezones.yml +3 -0
- data/resources/locales/el/units.yml +143 -118
- data/resources/locales/en/calendars.yml +90 -11
- data/resources/locales/en/currencies.yml +1 -5
- data/resources/locales/en/languages.yml +2 -2
- data/resources/locales/en/lists.yml +12 -2
- data/resources/locales/en/numbers.yml +1 -0
- data/resources/locales/en/timezones.yml +3 -0
- data/resources/locales/en/units.yml +42 -30
- data/resources/locales/en-001/calendars.yml +89 -11
- data/resources/locales/en-001/currencies.yml +1 -5
- data/resources/locales/en-001/languages.yml +2 -2
- data/resources/locales/en-001/lists.yml +8 -0
- data/resources/locales/en-001/numbers.yml +1 -0
- data/resources/locales/en-001/timezones.yml +3 -0
- data/resources/locales/en-001/units.yml +41 -27
- data/resources/locales/en-150/calendars.yml +89 -11
- data/resources/locales/en-150/currencies.yml +1 -5
- data/resources/locales/en-150/languages.yml +2 -2
- data/resources/locales/en-150/lists.yml +8 -0
- data/resources/locales/en-150/numbers.yml +1 -0
- data/resources/locales/en-150/timezones.yml +3 -0
- data/resources/locales/en-150/units.yml +41 -27
- data/resources/locales/en-AU/calendars.yml +1 -0
- data/resources/locales/en-AU/currencies.yml +0 -4
- data/resources/locales/en-AU/languages.yml +4 -4
- data/resources/locales/en-AU/lists.yml +8 -0
- data/resources/locales/en-AU/numbers.yml +1 -0
- data/resources/locales/en-AU/timezones.yml +3 -0
- data/resources/locales/en-AU/units.yml +49 -35
- data/resources/locales/en-CA/calendars.yml +117 -44
- data/resources/locales/en-CA/currencies.yml +12 -17
- data/resources/locales/en-CA/fields.yml +110 -113
- data/resources/locales/en-CA/languages.yml +2 -2
- data/resources/locales/en-CA/lists.yml +8 -0
- data/resources/locales/en-CA/numbers.yml +2 -1
- data/resources/locales/en-CA/territories.yml +19 -19
- data/resources/locales/en-CA/timezones.yml +129 -40
- data/resources/locales/en-CA/units.yml +190 -178
- data/resources/locales/en-GB/calendars.yml +2 -0
- data/resources/locales/en-GB/currencies.yml +1 -5
- data/resources/locales/en-GB/languages.yml +2 -2
- data/resources/locales/en-GB/lists.yml +8 -0
- data/resources/locales/en-GB/numbers.yml +1 -0
- data/resources/locales/en-GB/timezones.yml +3 -0
- data/resources/locales/en-GB/units.yml +41 -27
- data/resources/locales/en-IE/calendars.yml +89 -11
- data/resources/locales/en-IE/currencies.yml +1 -5
- data/resources/locales/en-IE/languages.yml +2 -2
- data/resources/locales/en-IE/lists.yml +8 -0
- data/resources/locales/en-IE/numbers.yml +1 -0
- data/resources/locales/en-IE/timezones.yml +3 -0
- data/resources/locales/en-IE/units.yml +41 -27
- data/resources/locales/en-IN/calendars.yml +89 -11
- data/resources/locales/en-IN/currencies.yml +1 -5
- data/resources/locales/en-IN/languages.yml +2 -2
- data/resources/locales/en-IN/lists.yml +8 -0
- data/resources/locales/en-IN/numbers.yml +25 -24
- data/resources/locales/en-IN/timezones.yml +3 -0
- data/resources/locales/en-IN/units.yml +41 -27
- data/resources/locales/en-NZ/calendars.yml +89 -11
- data/resources/locales/en-NZ/currencies.yml +1 -5
- data/resources/locales/en-NZ/languages.yml +1 -1
- data/resources/locales/en-NZ/lists.yml +8 -0
- data/resources/locales/en-NZ/numbers.yml +1 -0
- data/resources/locales/en-NZ/timezones.yml +3 -0
- data/resources/locales/en-NZ/units.yml +41 -27
- data/resources/locales/en-SG/calendars.yml +89 -11
- data/resources/locales/en-SG/currencies.yml +1 -5
- data/resources/locales/en-SG/languages.yml +2 -2
- data/resources/locales/en-SG/lists.yml +8 -0
- data/resources/locales/en-SG/numbers.yml +1 -0
- data/resources/locales/en-SG/timezones.yml +3 -0
- data/resources/locales/en-SG/units.yml +41 -27
- data/resources/locales/en-US/calendars.yml +90 -11
- data/resources/locales/en-US/currencies.yml +1 -5
- data/resources/locales/en-US/languages.yml +2 -2
- data/resources/locales/en-US/lists.yml +12 -2
- data/resources/locales/en-US/numbers.yml +1 -0
- data/resources/locales/en-US/timezones.yml +3 -0
- data/resources/locales/en-US/units.yml +42 -30
- data/resources/locales/en-ZA/calendars.yml +89 -11
- data/resources/locales/en-ZA/currencies.yml +1 -5
- data/resources/locales/en-ZA/languages.yml +2 -2
- data/resources/locales/en-ZA/lists.yml +8 -0
- data/resources/locales/en-ZA/numbers.yml +1 -0
- data/resources/locales/en-ZA/timezones.yml +3 -0
- data/resources/locales/en-ZA/units.yml +41 -27
- data/resources/locales/eo/calendars.yml +78 -11
- data/resources/locales/eo/currencies.yml +1 -7
- data/resources/locales/eo/lists.yml +42 -7
- data/resources/locales/eo/numbers.yml +1 -0
- data/resources/locales/eo/units.yml +274 -102
- data/resources/locales/es/calendars.yml +3 -2
- data/resources/locales/es/currencies.yml +21 -22
- data/resources/locales/es/fields.yml +8 -8
- data/resources/locales/es/languages.yml +3 -3
- data/resources/locales/es/lists.yml +18 -3
- data/resources/locales/es/numbers.yml +1 -0
- data/resources/locales/es/plural_rules.yml +2 -1
- data/resources/locales/es/plurals.yml +4 -1
- data/resources/locales/es/timezones.yml +6 -3
- data/resources/locales/es/units.yml +396 -34
- data/resources/locales/es-419/calendars.yml +39 -38
- data/resources/locales/es-419/currencies.yml +19 -20
- data/resources/locales/es-419/languages.yml +2 -2
- data/resources/locales/es-419/lists.yml +18 -3
- data/resources/locales/es-419/numbers.yml +1 -0
- data/resources/locales/es-419/plural_rules.yml +2 -1
- data/resources/locales/es-419/plurals.yml +4 -1
- data/resources/locales/es-419/timezones.yml +6 -3
- data/resources/locales/es-419/units.yml +370 -31
- data/resources/locales/es-AR/calendars.yml +33 -32
- data/resources/locales/es-AR/currencies.yml +19 -20
- data/resources/locales/es-AR/languages.yml +2 -2
- data/resources/locales/es-AR/lists.yml +18 -3
- data/resources/locales/es-AR/numbers.yml +1 -0
- data/resources/locales/es-AR/plural_rules.yml +2 -1
- data/resources/locales/es-AR/plurals.yml +4 -1
- data/resources/locales/es-AR/timezones.yml +6 -3
- data/resources/locales/es-AR/units.yml +370 -31
- data/resources/locales/es-CO/calendars.yml +24 -23
- data/resources/locales/es-CO/currencies.yml +19 -20
- data/resources/locales/es-CO/languages.yml +2 -2
- data/resources/locales/es-CO/lists.yml +18 -3
- data/resources/locales/es-CO/numbers.yml +1 -0
- data/resources/locales/es-CO/plural_rules.yml +2 -1
- data/resources/locales/es-CO/plurals.yml +4 -1
- data/resources/locales/es-CO/timezones.yml +6 -3
- data/resources/locales/es-CO/units.yml +368 -29
- data/resources/locales/es-MX/calendars.yml +35 -34
- data/resources/locales/es-MX/currencies.yml +17 -18
- data/resources/locales/es-MX/languages.yml +2 -2
- data/resources/locales/es-MX/lists.yml +18 -3
- data/resources/locales/es-MX/numbers.yml +1 -0
- data/resources/locales/es-MX/plural_rules.yml +2 -1
- data/resources/locales/es-MX/plurals.yml +4 -1
- data/resources/locales/es-MX/timezones.yml +4 -1
- data/resources/locales/es-MX/units.yml +368 -29
- data/resources/locales/es-US/calendars.yml +41 -40
- data/resources/locales/es-US/currencies.yml +19 -20
- data/resources/locales/es-US/fields.yml +3 -3
- data/resources/locales/es-US/languages.yml +9 -9
- data/resources/locales/es-US/lists.yml +18 -3
- data/resources/locales/es-US/numbers.yml +25 -24
- data/resources/locales/es-US/plural_rules.yml +2 -1
- data/resources/locales/es-US/plurals.yml +4 -1
- data/resources/locales/es-US/territories.yml +2 -2
- data/resources/locales/es-US/timezones.yml +8 -5
- data/resources/locales/es-US/units.yml +381 -42
- data/resources/locales/et/calendars.yml +15 -14
- data/resources/locales/et/currencies.yml +3 -6
- data/resources/locales/et/languages.yml +1 -0
- data/resources/locales/et/lists.yml +14 -2
- data/resources/locales/et/numbers.yml +7 -6
- data/resources/locales/et/timezones.yml +3 -0
- data/resources/locales/et/units.yml +48 -27
- data/resources/locales/eu/calendars.yml +3 -1
- data/resources/locales/eu/currencies.yml +612 -23
- data/resources/locales/eu/fields.yml +8 -0
- data/resources/locales/eu/languages.yml +12 -7
- data/resources/locales/eu/lists.yml +20 -3
- data/resources/locales/eu/numbers.yml +1 -0
- data/resources/locales/eu/timezones.yml +70 -1
- data/resources/locales/eu/units.yml +85 -13
- data/resources/locales/fa/calendars.yml +6 -5
- data/resources/locales/fa/currencies.yml +12 -12
- data/resources/locales/fa/languages.yml +2 -2
- data/resources/locales/fa/lists.yml +6 -0
- data/resources/locales/fa/numbers.yml +14 -13
- data/resources/locales/fa/territories.yml +1 -1
- data/resources/locales/fa/timezones.yml +7 -4
- data/resources/locales/fa/units.yml +296 -147
- data/resources/locales/fi/calendars.yml +1 -0
- data/resources/locales/fi/currencies.yml +1 -2
- data/resources/locales/fi/languages.yml +1 -1
- data/resources/locales/fi/lists.yml +18 -3
- data/resources/locales/fi/numbers.yml +1 -0
- data/resources/locales/fi/rbnf.yml +172 -0
- data/resources/locales/fi/timezones.yml +3 -0
- data/resources/locales/fi/units.yml +146 -84
- data/resources/locales/fil/calendars.yml +1 -0
- data/resources/locales/fil/currencies.yml +3 -5
- data/resources/locales/fil/fields.yml +24 -24
- data/resources/locales/fil/languages.yml +3 -2
- data/resources/locales/fil/lists.yml +16 -2
- data/resources/locales/fil/numbers.yml +1 -0
- data/resources/locales/fil/timezones.yml +4 -1
- data/resources/locales/fil/units.yml +56 -16
- data/resources/locales/fr/calendars.yml +1 -0
- data/resources/locales/fr/currencies.yml +1 -2
- data/resources/locales/fr/languages.yml +1 -1
- data/resources/locales/fr/lists.yml +12 -2
- data/resources/locales/fr/numbers.yml +1 -0
- data/resources/locales/fr/plural_rules.yml +2 -2
- data/resources/locales/fr/rbnf.yml +1 -1
- data/resources/locales/fr/timezones.yml +4 -1
- data/resources/locales/fr/units.yml +322 -103
- data/resources/locales/fr-BE/calendars.yml +1 -0
- data/resources/locales/fr-BE/currencies.yml +1 -2
- data/resources/locales/fr-BE/languages.yml +1 -1
- data/resources/locales/fr-BE/lists.yml +12 -2
- data/resources/locales/fr-BE/numbers.yml +1 -0
- data/resources/locales/fr-BE/plural_rules.yml +2 -2
- data/resources/locales/fr-BE/timezones.yml +4 -1
- data/resources/locales/fr-BE/units.yml +322 -103
- data/resources/locales/fr-CA/calendars.yml +1 -0
- data/resources/locales/fr-CA/currencies.yml +1 -2
- data/resources/locales/fr-CA/languages.yml +1 -1
- data/resources/locales/fr-CA/lists.yml +12 -2
- data/resources/locales/fr-CA/numbers.yml +1 -0
- data/resources/locales/fr-CA/plural_rules.yml +2 -2
- data/resources/locales/fr-CA/timezones.yml +3 -0
- data/resources/locales/fr-CA/units.yml +349 -124
- data/resources/locales/fr-CH/calendars.yml +1 -0
- data/resources/locales/fr-CH/currencies.yml +1 -2
- data/resources/locales/fr-CH/languages.yml +1 -1
- data/resources/locales/fr-CH/lists.yml +12 -2
- data/resources/locales/fr-CH/numbers.yml +1 -0
- data/resources/locales/fr-CH/plural_rules.yml +2 -2
- data/resources/locales/fr-CH/timezones.yml +4 -1
- data/resources/locales/fr-CH/units.yml +322 -103
- data/resources/locales/ga/calendars.yml +12 -7
- data/resources/locales/ga/currencies.yml +1 -3
- data/resources/locales/ga/fields.yml +5 -5
- data/resources/locales/ga/languages.yml +23 -22
- data/resources/locales/ga/lists.yml +8 -0
- data/resources/locales/ga/numbers.yml +2 -1
- data/resources/locales/ga/territories.yml +10 -10
- data/resources/locales/ga/timezones.yml +41 -60
- data/resources/locales/ga/units.yml +33 -31
- data/resources/locales/gl/calendars.yml +1 -0
- data/resources/locales/gl/currencies.yml +7 -7
- data/resources/locales/gl/languages.yml +2 -1
- data/resources/locales/gl/lists.yml +15 -2
- data/resources/locales/gl/numbers.yml +1 -0
- data/resources/locales/gl/timezones.yml +3 -0
- data/resources/locales/gl/units.yml +73 -14
- data/resources/locales/gu/calendars.yml +2 -1
- data/resources/locales/gu/currencies.yml +1 -4
- data/resources/locales/gu/languages.yml +1 -1
- data/resources/locales/gu/lists.yml +12 -1
- data/resources/locales/gu/numbers.yml +1 -0
- data/resources/locales/gu/timezones.yml +3 -0
- data/resources/locales/gu/units.yml +59 -24
- data/resources/locales/he/calendars.yml +3 -1
- data/resources/locales/he/currencies.yml +39 -24
- data/resources/locales/he/fields.yml +4 -0
- data/resources/locales/he/languages.yml +4 -2
- data/resources/locales/he/lists.yml +14 -1
- data/resources/locales/he/numbers.yml +1 -0
- data/resources/locales/he/timezones.yml +3 -0
- data/resources/locales/he/units.yml +60 -38
- data/resources/locales/hi/calendars.yml +1 -0
- data/resources/locales/hi/currencies.yml +1 -4
- data/resources/locales/hi/languages.yml +2 -2
- data/resources/locales/hi/lists.yml +18 -3
- data/resources/locales/hi/numbers.yml +1 -0
- data/resources/locales/hi/territories.yml +1 -1
- data/resources/locales/hi/timezones.yml +5 -1
- data/resources/locales/hi/units.yml +126 -23
- data/resources/locales/hr/calendars.yml +1 -0
- data/resources/locales/hr/currencies.yml +6 -6
- data/resources/locales/hr/languages.yml +1 -1
- data/resources/locales/hr/lists.yml +21 -3
- data/resources/locales/hr/numbers.yml +4 -3
- data/resources/locales/hr/timezones.yml +3 -0
- data/resources/locales/hr/units.yml +141 -85
- data/resources/locales/hu/calendars.yml +1 -0
- data/resources/locales/hu/currencies.yml +4 -5
- data/resources/locales/hu/languages.yml +3 -2
- data/resources/locales/hu/lists.yml +20 -3
- data/resources/locales/hu/numbers.yml +1 -0
- data/resources/locales/hu/timezones.yml +3 -0
- data/resources/locales/hu/units.yml +31 -27
- data/resources/locales/hy/calendars.yml +1 -0
- data/resources/locales/hy/currencies.yml +6 -4
- data/resources/locales/hy/languages.yml +2 -1
- data/resources/locales/hy/lists.yml +14 -2
- data/resources/locales/hy/numbers.yml +1 -0
- data/resources/locales/hy/timezones.yml +3 -0
- data/resources/locales/hy/units.yml +141 -110
- data/resources/locales/id/calendars.yml +3 -2
- data/resources/locales/id/currencies.yml +1 -3
- data/resources/locales/id/fields.yml +12 -3
- data/resources/locales/id/languages.yml +2 -1
- data/resources/locales/id/lists.yml +14 -2
- data/resources/locales/id/numbers.yml +1 -0
- data/resources/locales/id/timezones.yml +47 -0
- data/resources/locales/id/units.yml +64 -67
- data/resources/locales/is/calendars.yml +1 -0
- data/resources/locales/is/currencies.yml +4 -6
- data/resources/locales/is/fields.yml +0 -14
- data/resources/locales/is/languages.yml +2 -2
- data/resources/locales/is/lists.yml +13 -2
- data/resources/locales/is/numbers.yml +1 -0
- data/resources/locales/is/units.yml +134 -112
- data/resources/locales/it/calendars.yml +1 -0
- data/resources/locales/it/currencies.yml +2 -3
- data/resources/locales/it/languages.yml +1 -0
- data/resources/locales/it/lists.yml +18 -3
- data/resources/locales/it/numbers.yml +1 -0
- data/resources/locales/it/plural_rules.yml +2 -1
- data/resources/locales/it/plurals.yml +4 -1
- data/resources/locales/it/rbnf.yml +1 -1
- data/resources/locales/it/timezones.yml +3 -0
- data/resources/locales/it/units.yml +412 -19
- data/resources/locales/it-CH/calendars.yml +1 -0
- data/resources/locales/it-CH/currencies.yml +2 -3
- data/resources/locales/it-CH/languages.yml +1 -0
- data/resources/locales/it-CH/lists.yml +18 -3
- data/resources/locales/it-CH/numbers.yml +1 -0
- data/resources/locales/it-CH/plural_rules.yml +2 -1
- data/resources/locales/it-CH/plurals.yml +4 -1
- data/resources/locales/it-CH/timezones.yml +3 -0
- data/resources/locales/it-CH/units.yml +412 -19
- data/resources/locales/ja/calendars.yml +1 -0
- data/resources/locales/ja/currencies.yml +1 -2
- data/resources/locales/ja/languages.yml +1 -1
- data/resources/locales/ja/lists.yml +18 -3
- data/resources/locales/ja/numbers.yml +2 -1
- data/resources/locales/ja/timezones.yml +3 -0
- data/resources/locales/ja/units.yml +126 -20
- data/resources/locales/ka/calendars.yml +1 -0
- data/resources/locales/ka/currencies.yml +5 -3
- data/resources/locales/ka/languages.yml +1 -1
- data/resources/locales/ka/lists.yml +18 -3
- data/resources/locales/ka/numbers.yml +1 -0
- data/resources/locales/ka/timezones.yml +3 -0
- data/resources/locales/ka/units.yml +24 -10
- data/resources/locales/kk/calendars.yml +1 -0
- data/resources/locales/kk/currencies.yml +6 -4
- data/resources/locales/kk/languages.yml +3 -2
- data/resources/locales/kk/lists.yml +21 -3
- data/resources/locales/kk/numbers.yml +1 -0
- data/resources/locales/kk/timezones.yml +3 -0
- data/resources/locales/kk/units.yml +20 -6
- data/resources/locales/km/calendars.yml +1 -0
- data/resources/locales/km/currencies.yml +6 -4
- data/resources/locales/km/languages.yml +2 -1
- data/resources/locales/km/lists.yml +17 -2
- data/resources/locales/km/numbers.yml +1 -0
- data/resources/locales/km/timezones.yml +3 -0
- data/resources/locales/km/units.yml +30 -19
- data/resources/locales/kn/calendars.yml +1 -0
- data/resources/locales/kn/currencies.yml +4 -7
- data/resources/locales/kn/languages.yml +1 -1
- data/resources/locales/kn/lists.yml +14 -2
- data/resources/locales/kn/numbers.yml +1 -0
- data/resources/locales/kn/timezones.yml +4 -1
- data/resources/locales/kn/units.yml +344 -39
- data/resources/locales/ko/calendars.yml +1 -0
- data/resources/locales/ko/currencies.yml +2 -3
- data/resources/locales/ko/languages.yml +1 -1
- data/resources/locales/ko/lists.yml +18 -3
- data/resources/locales/ko/numbers.yml +1 -0
- data/resources/locales/ko/territories.yml +1 -1
- data/resources/locales/ko/timezones.yml +3 -0
- data/resources/locales/ko/units.yml +20 -12
- data/resources/locales/lo/calendars.yml +5 -0
- data/resources/locales/lo/currencies.yml +1 -3
- data/resources/locales/lo/languages.yml +1 -1
- data/resources/locales/lo/lists.yml +16 -2
- data/resources/locales/lo/numbers.yml +1 -0
- data/resources/locales/lo/timezones.yml +3 -0
- data/resources/locales/lo/units.yml +25 -26
- data/resources/locales/lt/calendars.yml +1 -0
- data/resources/locales/lt/currencies.yml +1 -3
- data/resources/locales/lt/languages.yml +1 -1
- data/resources/locales/lt/lists.yml +18 -3
- data/resources/locales/lt/numbers.yml +1 -0
- data/resources/locales/lt/timezones.yml +3 -0
- data/resources/locales/lt/units.yml +153 -142
- data/resources/locales/lv/calendars.yml +2 -1
- data/resources/locales/lv/currencies.yml +1 -4
- data/resources/locales/lv/languages.yml +1 -1
- data/resources/locales/lv/lists.yml +18 -3
- data/resources/locales/lv/numbers.yml +1 -0
- data/resources/locales/lv/timezones.yml +3 -0
- data/resources/locales/lv/units.yml +134 -132
- data/resources/locales/mk/calendars.yml +2 -1
- data/resources/locales/mk/currencies.yml +3 -4
- data/resources/locales/mk/languages.yml +2 -2
- data/resources/locales/mk/lists.yml +15 -2
- data/resources/locales/mk/numbers.yml +7 -6
- data/resources/locales/mk/territories.yml +2 -2
- data/resources/locales/mk/timezones.yml +4 -1
- data/resources/locales/mk/units.yml +74 -241
- data/resources/locales/mr/calendars.yml +1 -0
- data/resources/locales/mr/currencies.yml +1 -5
- data/resources/locales/mr/languages.yml +1 -1
- data/resources/locales/mr/lists.yml +16 -2
- data/resources/locales/mr/numbers.yml +1 -0
- data/resources/locales/mr/timezones.yml +3 -0
- data/resources/locales/mr/units.yml +55 -20
- data/resources/locales/ms/calendars.yml +1 -0
- data/resources/locales/ms/currencies.yml +1 -4
- data/resources/locales/ms/languages.yml +2 -2
- data/resources/locales/ms/lists.yml +14 -2
- data/resources/locales/ms/numbers.yml +1 -0
- data/resources/locales/ms/timezones.yml +3 -0
- data/resources/locales/ms/units.yml +110 -13
- data/resources/locales/mt/calendars.yml +1 -0
- data/resources/locales/mt/currencies.yml +1 -4
- data/resources/locales/mt/languages.yml +1 -2
- data/resources/locales/mt/lists.yml +24 -4
- data/resources/locales/mt/numbers.yml +1 -0
- data/resources/locales/mt/territories.yml +4 -4
- data/resources/locales/mt/units.yml +8 -16
- data/resources/locales/my/calendars.yml +13 -12
- data/resources/locales/my/currencies.yml +11 -9
- data/resources/locales/my/languages.yml +3 -2
- data/resources/locales/my/lists.yml +25 -15
- data/resources/locales/my/numbers.yml +1 -0
- data/resources/locales/my/timezones.yml +3 -0
- data/resources/locales/my/units.yml +20 -16
- data/resources/locales/nb/calendars.yml +2 -1
- data/resources/locales/nb/currencies.yml +1 -2
- data/resources/locales/nb/fields.yml +4 -4
- data/resources/locales/nb/languages.yml +2 -2
- data/resources/locales/nb/lists.yml +20 -3
- data/resources/locales/nb/numbers.yml +2 -1
- data/resources/locales/nb/rbnf.yml +1 -928
- data/resources/locales/nb/timezones.yml +3 -0
- data/resources/locales/nb/units.yml +133 -67
- data/resources/locales/nl/calendars.yml +1 -0
- data/resources/locales/nl/currencies.yml +1 -1
- data/resources/locales/nl/languages.yml +3 -1
- data/resources/locales/nl/lists.yml +18 -3
- data/resources/locales/nl/numbers.yml +1 -0
- data/resources/locales/nl/timezones.yml +3 -0
- data/resources/locales/nl/units.yml +55 -23
- data/resources/locales/nl-BE/calendars.yml +1 -0
- data/resources/locales/nl-BE/currencies.yml +1 -1
- data/resources/locales/nl-BE/languages.yml +3 -1
- data/resources/locales/nl-BE/lists.yml +18 -3
- data/resources/locales/nl-BE/numbers.yml +1 -0
- data/resources/locales/nl-BE/timezones.yml +3 -0
- data/resources/locales/nl-BE/units.yml +55 -23
- data/resources/locales/pl/calendars.yml +2 -1
- data/resources/locales/pl/currencies.yml +6 -6
- data/resources/locales/pl/languages.yml +1 -1
- data/resources/locales/pl/lists.yml +18 -2
- data/resources/locales/pl/numbers.yml +1 -0
- data/resources/locales/pl/timezones.yml +4 -1
- data/resources/locales/pl/units.yml +219 -162
- data/resources/locales/pt/calendars.yml +38 -4
- data/resources/locales/pt/currencies.yml +4 -6
- data/resources/locales/pt/languages.yml +1 -1
- data/resources/locales/pt/lists.yml +18 -2
- data/resources/locales/pt/numbers.yml +1 -0
- data/resources/locales/pt/plural_rules.yml +2 -1
- data/resources/locales/pt/plurals.yml +4 -1
- data/resources/locales/pt/rbnf.yml +52 -70
- data/resources/locales/pt/timezones.yml +3 -0
- data/resources/locales/pt/units.yml +28 -33
- data/resources/locales/pt-PT/calendars.yml +22 -2
- data/resources/locales/pt-PT/currencies.yml +4 -6
- data/resources/locales/pt-PT/languages.yml +1 -1
- data/resources/locales/pt-PT/lists.yml +14 -2
- data/resources/locales/pt-PT/numbers.yml +1 -0
- data/resources/locales/pt-PT/plural_rules.yml +2 -1
- data/resources/locales/pt-PT/plurals.yml +4 -1
- data/resources/locales/pt-PT/territories.yml +2 -2
- data/resources/locales/pt-PT/timezones.yml +3 -0
- data/resources/locales/pt-PT/units.yml +55 -41
- data/resources/locales/ro/calendars.yml +1 -0
- data/resources/locales/ro/currencies.yml +4 -5
- data/resources/locales/ro/languages.yml +3 -1
- data/resources/locales/ro/lists.yml +14 -2
- data/resources/locales/ro/numbers.yml +1 -0
- data/resources/locales/ro/timezones.yml +3 -0
- data/resources/locales/ro/units.yml +104 -39
- data/resources/locales/ru/calendars.yml +9 -8
- data/resources/locales/ru/currencies.yml +6 -4
- data/resources/locales/ru/day_periods.yml +4 -4
- data/resources/locales/ru/languages.yml +2 -2
- data/resources/locales/ru/lists.yml +14 -2
- data/resources/locales/ru/numbers.yml +1 -0
- data/resources/locales/ru/timezones.yml +3 -0
- data/resources/locales/ru/units.yml +297 -321
- data/resources/locales/sk/calendars.yml +3 -2
- data/resources/locales/sk/currencies.yml +1 -1
- data/resources/locales/sk/fields.yml +2 -2
- data/resources/locales/sk/languages.yml +1 -1
- data/resources/locales/sk/lists.yml +18 -3
- data/resources/locales/sk/numbers.yml +1 -0
- data/resources/locales/sk/timezones.yml +3 -0
- data/resources/locales/sk/units.yml +198 -225
- data/resources/locales/sl/calendars.yml +5 -4
- data/resources/locales/sl/currencies.yml +6 -5
- data/resources/locales/sl/languages.yml +1 -1
- data/resources/locales/sl/lists.yml +20 -3
- data/resources/locales/sl/numbers.yml +1 -0
- data/resources/locales/sl/timezones.yml +3 -0
- data/resources/locales/sl/units.yml +296 -234
- data/resources/locales/sq/calendars.yml +1 -0
- data/resources/locales/sq/currencies.yml +5 -5
- data/resources/locales/sq/languages.yml +6 -1
- data/resources/locales/sq/lists.yml +18 -3
- data/resources/locales/sq/numbers.yml +1 -0
- data/resources/locales/sq/timezones.yml +3 -0
- data/resources/locales/sq/units.yml +53 -34
- data/resources/locales/sr/calendars.yml +24 -25
- data/resources/locales/sr/currencies.yml +185 -187
- data/resources/locales/sr/fields.yml +2 -8
- data/resources/locales/sr/languages.yml +1 -1
- data/resources/locales/sr/lists.yml +18 -3
- data/resources/locales/sr/numbers.yml +1 -0
- data/resources/locales/sr/timezones.yml +3 -0
- data/resources/locales/sr/units.yml +123 -78
- data/resources/locales/sr-Cyrl-ME/calendars.yml +16 -17
- data/resources/locales/sr-Cyrl-ME/currencies.yml +185 -187
- data/resources/locales/sr-Cyrl-ME/fields.yml +2 -8
- data/resources/locales/sr-Cyrl-ME/languages.yml +1 -1
- data/resources/locales/sr-Cyrl-ME/lists.yml +18 -3
- data/resources/locales/sr-Cyrl-ME/numbers.yml +1 -0
- data/resources/locales/sr-Cyrl-ME/timezones.yml +3 -0
- data/resources/locales/sr-Cyrl-ME/units.yml +123 -78
- data/resources/locales/sr-Latn-ME/calendars.yml +198 -199
- data/resources/locales/sr-Latn-ME/currencies.yml +185 -187
- data/resources/locales/sr-Latn-ME/fields.yml +2 -8
- data/resources/locales/sr-Latn-ME/languages.yml +1 -1
- data/resources/locales/sr-Latn-ME/lists.yml +30 -15
- data/resources/locales/sr-Latn-ME/numbers.yml +1 -0
- data/resources/locales/sr-Latn-ME/timezones.yml +3 -0
- data/resources/locales/sr-Latn-ME/units.yml +660 -615
- data/resources/locales/sv/calendars.yml +1 -0
- data/resources/locales/sv/currencies.yml +4 -6
- data/resources/locales/sv/languages.yml +1 -1
- data/resources/locales/sv/lists.yml +14 -2
- data/resources/locales/sv/numbers.yml +1 -0
- data/resources/locales/sv/timezones.yml +5 -2
- data/resources/locales/sv/units.yml +43 -297
- data/resources/locales/sw/calendars.yml +1 -0
- data/resources/locales/sw/currencies.yml +3 -5
- data/resources/locales/sw/languages.yml +2 -1
- data/resources/locales/sw/lists.yml +4 -0
- data/resources/locales/sw/numbers.yml +1 -0
- data/resources/locales/sw/timezones.yml +3 -0
- data/resources/locales/sw/units.yml +20 -7
- data/resources/locales/ta/calendars.yml +3 -2
- data/resources/locales/ta/currencies.yml +2 -4
- data/resources/locales/ta/fields.yml +1 -1
- data/resources/locales/ta/languages.yml +1 -1
- data/resources/locales/ta/lists.yml +18 -2
- data/resources/locales/ta/numbers.yml +1 -0
- data/resources/locales/ta/timezones.yml +3 -0
- data/resources/locales/ta/units.yml +505 -122
- data/resources/locales/th/calendars.yml +1 -12
- data/resources/locales/th/currencies.yml +1 -2
- data/resources/locales/th/languages.yml +1 -1
- data/resources/locales/th/lists.yml +11 -0
- data/resources/locales/th/numbers.yml +1 -0
- data/resources/locales/th/timezones.yml +3 -0
- data/resources/locales/th/units.yml +275 -16
- data/resources/locales/tr/calendars.yml +1 -0
- data/resources/locales/tr/currencies.yml +3 -2
- data/resources/locales/tr/languages.yml +1 -1
- data/resources/locales/tr/lists.yml +14 -2
- data/resources/locales/tr/numbers.yml +1 -0
- data/resources/locales/tr/timezones.yml +3 -0
- data/resources/locales/tr/units.yml +56 -38
- data/resources/locales/uk/calendars.yml +8 -7
- data/resources/locales/uk/currencies.yml +5 -2
- data/resources/locales/uk/languages.yml +2 -6
- data/resources/locales/uk/lists.yml +20 -2
- data/resources/locales/uk/numbers.yml +1 -0
- data/resources/locales/uk/timezones.yml +3 -0
- data/resources/locales/uk/units.yml +494 -299
- data/resources/locales/ur/calendars.yml +1 -0
- data/resources/locales/ur/currencies.yml +4 -6
- data/resources/locales/ur/languages.yml +2 -1
- data/resources/locales/ur/lists.yml +14 -2
- data/resources/locales/ur/numbers.yml +1 -0
- data/resources/locales/ur/timezones.yml +3 -0
- data/resources/locales/ur/units.yml +53 -15
- data/resources/locales/vi/calendars.yml +1 -0
- data/resources/locales/vi/currencies.yml +2 -3
- data/resources/locales/vi/languages.yml +2 -2
- data/resources/locales/vi/lists.yml +22 -3
- data/resources/locales/vi/numbers.yml +1 -0
- data/resources/locales/vi/timezones.yml +3 -0
- data/resources/locales/vi/units.yml +16 -17
- data/resources/locales/xh/calendars.yml +29 -6
- data/resources/locales/xh/currencies.yml +1 -7
- data/resources/locales/xh/lists.yml +42 -7
- data/resources/locales/xh/numbers.yml +1 -0
- data/resources/locales/xh/units.yml +8 -16
- data/resources/locales/zh/calendars.yml +8 -6
- data/resources/locales/zh/currencies.yml +1 -1
- data/resources/locales/zh/languages.yml +1 -1
- data/resources/locales/zh/lists.yml +18 -3
- data/resources/locales/zh/numbers.yml +1 -0
- data/resources/locales/zh/timezones.yml +4 -1
- data/resources/locales/zh/units.yml +31 -9
- data/resources/locales/zh-Hant/calendars.yml +18 -12
- data/resources/locales/zh-Hant/currencies.yml +1 -1
- data/resources/locales/zh-Hant/languages.yml +1 -1
- data/resources/locales/zh-Hant/lists.yml +18 -3
- data/resources/locales/zh-Hant/numbers.yml +1 -0
- data/resources/locales/zh-Hant/timezones.yml +4 -1
- data/resources/locales/zh-Hant/units.yml +99 -14
- data/resources/locales/zu/calendars.yml +1 -1
- data/resources/locales/zu/currencies.yml +1 -4
- data/resources/locales/zu/fields.yml +0 -5
- data/resources/locales/zu/languages.yml +1 -1
- data/resources/locales/zu/lists.yml +13 -2
- data/resources/locales/zu/numbers.yml +1 -0
- data/resources/locales/zu/timezones.yml +3 -0
- data/resources/locales/zu/units.yml +32 -20
- data/resources/shared/aliases.yml +4 -3
- data/resources/shared/bcp47_timezone_metadata.yml +3 -1
- data/resources/shared/hyphenation/ca.yml +1 -1
- data/resources/shared/hyphenation/de-AT.yml +1 -1
- data/resources/shared/hyphenation/de-CH.yml +1 -1
- data/resources/shared/hyphenation/de-DE.yml +1 -1
- data/resources/shared/hyphenation/eo.yml +3180 -0
- data/resources/shared/hyphenation/fr.yml +1 -1
- data/resources/shared/hyphenation/hr-HR.yml +1 -1
- data/resources/shared/hyphenation/hu-HU.yml +1439 -57
- data/resources/shared/hyphenation/mn-MN.yml +1000 -0
- data/resources/shared/hyphenation/sl-SI.yml +1 -1
- data/resources/shared/hyphenation/sq-AL.yml +14015 -0
- data/resources/shared/language_codes_table.dump +0 -0
- data/resources/shared/likely_subtags.yml +18 -9
- data/resources/shared/metazones.yml +9 -39
- data/resources/shared/numbering_systems.yml +3 -0
- data/resources/shared/parent_locales.yml +3 -2
- data/resources/shared/rbnf_root.yml +84 -2
- data/resources/shared/segments/dictionaries/laodict.dump +0 -0
- data/resources/shared/segments/rules/el/sentence.yml +574 -556
- data/resources/shared/segments/rules/en-US-POSIX/word.yml +416 -403
- data/resources/shared/segments/rules/ja/line.yml +804 -776
- data/resources/shared/segments/rules/ja/word.yml +416 -403
- data/resources/shared/segments/rules/root/grapheme.yml +407 -402
- data/resources/shared/segments/rules/root/line.yml +804 -776
- data/resources/shared/segments/rules/root/sentence.yml +574 -556
- data/resources/shared/segments/rules/root/word.yml +416 -403
- data/resources/shared/segments/rules/zh/line.yml +804 -776
- data/resources/shared/segments/rules/zh-Hant/line.yml +804 -776
- data/resources/shared/segments/tests/dictionary_tests/combined.yml +31 -42
- data/resources/shared/segments/tests/dictionary_tests/lo.yml +31 -42
- data/resources/shared/segments/tests/line_break_test.yml +2 -0
- data/resources/shared/transforms/Han-Latin.yml +57 -57
- data/resources/shared/transforms/Latin-ASCII.yml +51 -2
- data/resources/shared/transforms/Turkmen-Latin-BGN.yml +4 -4
- data/resources/shared/validity_data.yml +54 -10
- data/resources/unicode_data/blocks/ahom.yml +112 -0
- data/resources/unicode_data/blocks/arabic.yml +16 -0
- data/resources/unicode_data/blocks/arabic_extended_a.yml +192 -0
- data/resources/unicode_data/blocks/arabic_extended_b.yml +657 -0
- data/resources/unicode_data/blocks/arabic_presentation_forms_a.yml +320 -0
- data/resources/unicode_data/blocks/balinese.yml +48 -0
- data/resources/unicode_data/blocks/brahmi.yml +96 -0
- data/resources/unicode_data/blocks/cjk_unified_ideographs.yml +2 -2
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_b.yml +2 -2
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_c.yml +2 -2
- data/resources/unicode_data/blocks/combining_diacritical_marks_extended.yml +224 -0
- data/resources/unicode_data/blocks/combining_diacritical_marks_supplement.yml +16 -0
- data/resources/unicode_data/blocks/currency_symbols.yml +16 -0
- data/resources/unicode_data/blocks/cypro_minoan.yml +1585 -0
- data/resources/unicode_data/blocks/ethiopic_extended_b.yml +449 -0
- data/resources/unicode_data/blocks/geometric_shapes_extended.yml +16 -0
- data/resources/unicode_data/blocks/glagolitic.yml +32 -0
- data/resources/unicode_data/blocks/hanunoo.yml +2 -2
- data/resources/unicode_data/blocks/kaithi.yml +16 -0
- data/resources/unicode_data/blocks/kana_extended_a.yml +64 -0
- data/resources/unicode_data/blocks/kana_extended_b.yml +209 -0
- data/resources/unicode_data/blocks/kannada.yml +16 -0
- data/resources/unicode_data/blocks/latin_extended_d.yml +208 -0
- data/resources/unicode_data/blocks/latin_extended_f.yml +913 -0
- data/resources/unicode_data/blocks/latin_extended_g.yml +497 -0
- data/resources/unicode_data/blocks/mongolian.yml +16 -0
- data/resources/unicode_data/blocks/musical_symbols.yml +32 -0
- data/resources/unicode_data/blocks/old_uyghur.yml +417 -0
- data/resources/unicode_data/blocks/supplemental_punctuation.yml +176 -0
- data/resources/unicode_data/blocks/supplemental_symbols_and_pictographs.yml +32 -0
- data/resources/unicode_data/blocks/symbols_and_pictographs_extended_a.yml +496 -0
- data/resources/unicode_data/blocks/tagalog.yml +48 -0
- data/resources/unicode_data/blocks/takri.yml +16 -0
- data/resources/unicode_data/blocks/tangsa.yml +1425 -0
- data/resources/unicode_data/blocks/telugu.yml +32 -0
- data/resources/unicode_data/blocks/toto.yml +497 -0
- data/resources/unicode_data/blocks/transport_and_map_symbols.yml +48 -0
- data/resources/unicode_data/blocks/unified_canadian_aboriginal_syllabics_extended_a.yml +257 -0
- data/resources/unicode_data/blocks/vithkuqi.yml +1121 -0
- data/resources/unicode_data/blocks/znamenny_musical_notation.yml +2961 -0
- data/resources/unicode_data/blocks.yml +50 -2
- data/resources/unicode_data/casefolding.yml +160 -0
- data/resources/unicode_data/properties/Age/14.0/value.dump +0 -0
- data/resources/unicode_data/properties/Alphabetic/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Class/AL/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Class/AN/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Class/ET/value.dump +1 -1
- data/resources/unicode_data/properties/Bidi_Class/L/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Class/NSM/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Class/ON/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Class/R/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Mirrored/N/value.dump +0 -0
- data/resources/unicode_data/properties/Bidi_Mirrored/Y/value.dump +3 -2
- data/resources/unicode_data/properties/Bidi_Paired_Bracket_Type/Close/value.dump +6 -2
- data/resources/unicode_data/properties/Bidi_Paired_Bracket_Type/Open/value.dump +6 -2
- data/resources/unicode_data/properties/Block/Ahom/value.dump +0 -0
- data/resources/unicode_data/properties/Block/Arabic Extended-B/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Cypro-Minoan/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Ethiopic Extended-B/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Kana Extended-B/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Latin Extended-F/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Latin Extended-G/value.dump +0 -0
- data/resources/unicode_data/properties/Block/Old Uyghur/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Tangsa/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Tangut Supplement/value.dump +0 -0
- data/resources/unicode_data/properties/Block/Toto/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Unified Canadian Aboriginal Syllabics Extended-A/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Vithkuqi/value.dump +3 -0
- data/resources/unicode_data/properties/Block/Znamenny Musical Notation/value.dump +0 -0
- data/resources/unicode_data/properties/Canonical_Combining_Class/0/value.dump +0 -0
- data/resources/unicode_data/properties/Canonical_Combining_Class/218/value.dump +3 -2
- data/resources/unicode_data/properties/Canonical_Combining_Class/220/value.dump +9 -4
- data/resources/unicode_data/properties/Canonical_Combining_Class/230/value.dump +0 -0
- data/resources/unicode_data/properties/Canonical_Combining_Class/7/value.dump +3 -2
- data/resources/unicode_data/properties/Canonical_Combining_Class/9/value.dump +4 -3
- data/resources/unicode_data/properties/Case_Ignorable/value.dump +0 -0
- data/resources/unicode_data/properties/Cased/value.dump +0 -0
- data/resources/unicode_data/properties/Changes_When_Casefolded/value.dump +0 -0
- data/resources/unicode_data/properties/Changes_When_Casemapped/value.dump +0 -0
- data/resources/unicode_data/properties/Changes_When_Lowercased/value.dump +0 -0
- data/resources/unicode_data/properties/Changes_When_Titlecased/value.dump +13 -5
- data/resources/unicode_data/properties/Changes_When_Uppercased/value.dump +13 -5
- data/resources/unicode_data/properties/Dash/value.dump +0 -0
- data/resources/unicode_data/properties/Default_Ignorable_Code_Point/value.dump +0 -0
- data/resources/unicode_data/properties/Diacritic/value.dump +0 -0
- data/resources/unicode_data/properties/East_Asian_Width/N/value.dump +0 -0
- data/resources/unicode_data/properties/East_Asian_Width/W/value.dump +0 -0
- data/resources/unicode_data/properties/Emoji/value.dump +0 -0
- data/resources/unicode_data/properties/Emoji_Modifier_Base/value.dump +4 -2
- data/resources/unicode_data/properties/Emoji_Presentation/value.dump +0 -0
- data/resources/unicode_data/properties/Extender/value.dump +3 -2
- data/resources/unicode_data/properties/General_Category/C/f/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/L/l/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/L/m/value.dump +13 -5
- data/resources/unicode_data/properties/General_Category/L/o/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/L/u/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/M/c/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/M/n/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/N/d/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/P/d/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/P/e/value.dump +6 -2
- data/resources/unicode_data/properties/General_Category/P/o/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/P/s/value.dump +6 -2
- data/resources/unicode_data/properties/General_Category/S/c/value.dump +1 -1
- data/resources/unicode_data/properties/General_Category/S/k/value.dump +0 -0
- data/resources/unicode_data/properties/General_Category/S/o/value.dump +0 -0
- data/resources/unicode_data/properties/Grapheme_Base/value.dump +0 -0
- data/resources/unicode_data/properties/Grapheme_Cluster_Break/Extend/value.dump +0 -0
- data/resources/unicode_data/properties/Grapheme_Cluster_Break/Prepend/value.dump +0 -0
- data/resources/unicode_data/properties/Grapheme_Cluster_Break/SpacingMark/value.dump +0 -0
- data/resources/unicode_data/properties/Grapheme_Extend/value.dump +0 -0
- data/resources/unicode_data/properties/Grapheme_Link/value.dump +4 -3
- data/resources/unicode_data/properties/ID_Continue/value.dump +0 -0
- data/resources/unicode_data/properties/ID_Start/value.dump +0 -0
- data/resources/unicode_data/properties/Ideographic/value.dump +0 -0
- data/resources/unicode_data/properties/Indic_Positional_Category/Bottom/value.dump +6 -4
- data/resources/unicode_data/properties/Indic_Positional_Category/Right/value.dump +0 -0
- data/resources/unicode_data/properties/Indic_Positional_Category/Top/value.dump +0 -0
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant/value.dump +0 -0
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant_Dead/value.dump +4 -2
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant_Final/value.dump +6 -3
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Consonant_Succeeding_Repha/value.dump +2 -5
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Nukta/value.dump +3 -2
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Pure_Killer/value.dump +4 -3
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Vowel_Dependent/value.dump +5 -3
- data/resources/unicode_data/properties/Indic_Syllabic_Category/Vowel_Independent/value.dump +0 -0
- data/resources/unicode_data/properties/Joining_Group/ALEF/value.dump +3 -2
- data/resources/unicode_data/properties/Joining_Group/GAF/value.dump +5 -3
- data/resources/unicode_data/properties/Joining_Group/HAH/value.dump +3 -2
- data/resources/unicode_data/properties/Joining_Group/NOON/value.dump +3 -2
- data/resources/unicode_data/properties/Joining_Group/No_Joining_Group/value.dump +0 -0
- data/resources/unicode_data/properties/Joining_Group/QAF/value.dump +4 -2
- data/resources/unicode_data/properties/Joining_Group/TAH/value.dump +3 -2
- data/resources/unicode_data/properties/Joining_Group/THIN YEH/value.dump +3 -0
- data/resources/unicode_data/properties/Joining_Group/VERTICAL TAIL/value.dump +3 -0
- data/resources/unicode_data/properties/Joining_Type/Dual_Joining/value.dump +0 -0
- data/resources/unicode_data/properties/Joining_Type/Join_Causing/value.dump +4 -2
- data/resources/unicode_data/properties/Joining_Type/Non_Joining/value.dump +0 -0
- data/resources/unicode_data/properties/Joining_Type/Right_Joining/value.dump +6 -3
- data/resources/unicode_data/properties/Line_Break/AL/value.dump +0 -0
- data/resources/unicode_data/properties/Line_Break/BA/value.dump +0 -0
- data/resources/unicode_data/properties/Line_Break/CL/value.dump +6 -2
- data/resources/unicode_data/properties/Line_Break/CM/value.dump +0 -0
- data/resources/unicode_data/properties/Line_Break/EB/value.dump +4 -2
- data/resources/unicode_data/properties/Line_Break/EX/value.dump +4 -3
- data/resources/unicode_data/properties/Line_Break/ID/value.dump +0 -0
- data/resources/unicode_data/properties/Line_Break/NU/value.dump +0 -0
- data/resources/unicode_data/properties/Line_Break/OP/value.dump +6 -2
- data/resources/unicode_data/properties/Line_Break/PO/value.dump +3 -2
- data/resources/unicode_data/properties/Line_Break/PR/value.dump +2 -1
- data/resources/unicode_data/properties/Line_Break/SA/value.dump +0 -0
- data/resources/unicode_data/properties/Lowercase/value.dump +0 -0
- data/resources/unicode_data/properties/Numeric_Type/0/value.dump +0 -0
- data/resources/unicode_data/properties/Numeric_Type/1/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/2/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/3/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/4/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/5/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/6/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/7/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/8/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/9/value.dump +3 -2
- data/resources/unicode_data/properties/Numeric_Type/value.dump +0 -0
- data/resources/unicode_data/properties/Other_Alphabetic/value.dump +0 -0
- data/resources/unicode_data/properties/Other_Lowercase/value.dump +6 -2
- data/resources/unicode_data/properties/Prepended_Concatenation_Mark/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Ahom/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Arabic/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Balinese/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Brahmi/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Canadian_Aboriginal/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Common/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Cypro_Minoan/value.dump +3 -0
- data/resources/unicode_data/properties/Script/Ethiopic/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Glagolitic/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Han/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Hiragana/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Inherited/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Kaithi/value.dump +1 -1
- data/resources/unicode_data/properties/Script/Kannada/value.dump +1 -1
- data/resources/unicode_data/properties/Script/Katakana/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Latin/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Mongolian/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Old_Uyghur/value.dump +3 -0
- data/resources/unicode_data/properties/Script/Tagalog/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Takri/value.dump +1 -1
- data/resources/unicode_data/properties/Script/Tangsa/value.dump +4 -0
- data/resources/unicode_data/properties/Script/Telugu/value.dump +0 -0
- data/resources/unicode_data/properties/Script/Toto/value.dump +3 -0
- data/resources/unicode_data/properties/Script/Vithkuqi/value.dump +10 -0
- data/resources/unicode_data/properties/Script_Extensions/Adlm/value.dump +3 -2
- data/resources/unicode_data/properties/Script_Extensions/Arab/value.dump +3 -2
- data/resources/unicode_data/properties/Script_Extensions/Cpmn/value.dump +0 -0
- data/resources/unicode_data/properties/Script_Extensions/Mani/value.dump +5 -2
- data/resources/unicode_data/properties/Script_Extensions/Nkoo/value.dump +6 -0
- data/resources/unicode_data/properties/Script_Extensions/Ougr/value.dump +6 -0
- data/resources/unicode_data/properties/Script_Extensions/Syrc/value.dump +3 -2
- data/resources/unicode_data/properties/Sentence_Break/Close/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/Extend/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/Format/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/Lower/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/Numeric/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/OLetter/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/STerm/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Break/Upper/value.dump +0 -0
- data/resources/unicode_data/properties/Sentence_Terminal/value.dump +0 -0
- data/resources/unicode_data/properties/Soft_Dotted/value.dump +3 -2
- data/resources/unicode_data/properties/Terminal_Punctuation/value.dump +0 -0
- data/resources/unicode_data/properties/Unified_Ideograph/value.dump +0 -0
- data/resources/unicode_data/properties/Uppercase/value.dump +0 -0
- data/resources/unicode_data/properties/Variation_Selector/value.dump +0 -0
- data/resources/unicode_data/properties/Word_Break/ALetter/value.dump +0 -0
- data/resources/unicode_data/properties/Word_Break/Extend/value.dump +0 -0
- data/resources/unicode_data/properties/Word_Break/Format/value.dump +0 -0
- data/resources/unicode_data/properties/Word_Break/Katakana/value.dump +0 -0
- data/resources/unicode_data/properties/Word_Break/Numeric/value.dump +0 -0
- data/resources/unicode_data/properties/XID_Continue/value.dump +0 -0
- data/resources/unicode_data/properties/XID_Start/value.dump +0 -0
- data/resources/unicode_data/property_value_aliases.yml +40 -0
- data/spec/formatters/list_formatter_spec.rb +20 -0
- data/spec/formatters/numbers/rbnf/locales/de/rbnf_test.yml +234 -0
- data/spec/formatters/numbers/rbnf/locales/fi/rbnf_test.yml +234 -0
- data/spec/formatters/numbers/rbnf/locales/pt/rbnf_test.yml +32 -32
- data/spec/localized/localized_date_spec.rb +0 -12
- data/spec/localized/localized_datetime_spec.rb +1 -15
- data/spec/localized/localized_time_spec.rb +0 -12
- data/spec/parsers/unicode_regex/character_set_spec.rb +2 -1
- data/spec/shared/unit_spec.rb +9 -9
- data/spec/spec_helper.rb +1 -1
- data/spec/timezones/tests/af.yml +3 -3
- data/spec/timezones/tests/ar.yml +3 -3
- data/spec/timezones/tests/az.yml +3 -3
- data/spec/timezones/tests/be.yml +3 -3
- data/spec/timezones/tests/bg.yml +3 -3
- data/spec/timezones/tests/bn.yml +3 -3
- data/spec/timezones/tests/bo.yml +3 -3
- data/spec/timezones/tests/bs.yml +3 -3
- data/spec/timezones/tests/ca.yml +17 -17
- data/spec/timezones/tests/cs.yml +3 -3
- data/spec/timezones/tests/cy.yml +3 -3
- data/spec/timezones/tests/da.yml +3 -3
- data/spec/timezones/tests/de-AT.yml +3 -3
- data/spec/timezones/tests/de-CH.yml +3 -3
- data/spec/timezones/tests/de.yml +3 -3
- data/spec/timezones/tests/el.yml +3 -3
- data/spec/timezones/tests/en-001.yml +3 -3
- data/spec/timezones/tests/en-150.yml +3 -3
- data/spec/timezones/tests/en-AU.yml +3 -3
- data/spec/timezones/tests/en-CA.yml +208 -208
- data/spec/timezones/tests/en-GB.yml +3 -3
- data/spec/timezones/tests/en-IE.yml +3 -3
- data/spec/timezones/tests/en-IN.yml +3 -3
- data/spec/timezones/tests/en-NZ.yml +3 -3
- data/spec/timezones/tests/en-SG.yml +3 -3
- data/spec/timezones/tests/en-US.yml +3 -3
- data/spec/timezones/tests/en-ZA.yml +3 -3
- data/spec/timezones/tests/en.yml +3 -3
- data/spec/timezones/tests/eo.yml +3 -3
- data/spec/timezones/tests/es-419.yml +6 -6
- data/spec/timezones/tests/es-AR.yml +6 -6
- data/spec/timezones/tests/es-CO.yml +6 -6
- data/spec/timezones/tests/es-MX.yml +4 -4
- data/spec/timezones/tests/es-US.yml +13 -13
- data/spec/timezones/tests/es.yml +6 -6
- data/spec/timezones/tests/et.yml +3 -3
- data/spec/timezones/tests/eu.yml +285 -285
- data/spec/timezones/tests/fa.yml +14 -14
- data/spec/timezones/tests/fi.yml +3 -3
- data/spec/timezones/tests/fil.yml +9 -9
- data/spec/timezones/tests/fr-BE.yml +11 -11
- data/spec/timezones/tests/fr-CA.yml +3 -3
- data/spec/timezones/tests/fr-CH.yml +11 -11
- data/spec/timezones/tests/fr.yml +11 -11
- data/spec/timezones/tests/ga.yml +190 -190
- data/spec/timezones/tests/gl.yml +3 -3
- data/spec/timezones/tests/gu.yml +3 -3
- data/spec/timezones/tests/he.yml +3 -3
- data/spec/timezones/tests/hi.yml +7 -7
- data/spec/timezones/tests/hr.yml +3 -3
- data/spec/timezones/tests/hu.yml +3 -3
- data/spec/timezones/tests/hy.yml +3 -3
- data/spec/timezones/tests/id.yml +287 -287
- data/spec/timezones/tests/is.yml +3 -3
- data/spec/timezones/tests/it-CH.yml +3 -3
- data/spec/timezones/tests/it.yml +3 -3
- data/spec/timezones/tests/ja.yml +3 -3
- data/spec/timezones/tests/ka.yml +3 -3
- data/spec/timezones/tests/kk.yml +3 -3
- data/spec/timezones/tests/km.yml +3 -3
- data/spec/timezones/tests/kn.yml +10 -10
- data/spec/timezones/tests/ko.yml +3 -3
- data/spec/timezones/tests/lo.yml +3 -3
- data/spec/timezones/tests/lt.yml +3 -3
- data/spec/timezones/tests/lv.yml +3 -3
- data/spec/timezones/tests/mk.yml +8 -8
- data/spec/timezones/tests/mr.yml +3 -3
- data/spec/timezones/tests/ms.yml +3 -3
- data/spec/timezones/tests/mt.yml +13 -13
- data/spec/timezones/tests/my.yml +3 -3
- data/spec/timezones/tests/nb.yml +3 -3
- data/spec/timezones/tests/nl-BE.yml +3 -3
- data/spec/timezones/tests/nl.yml +3 -3
- data/spec/timezones/tests/pl.yml +5 -5
- data/spec/timezones/tests/pt-PT.yml +3 -3
- data/spec/timezones/tests/pt.yml +3 -3
- data/spec/timezones/tests/ro.yml +3 -3
- data/spec/timezones/tests/ru.yml +3 -3
- data/spec/timezones/tests/sk.yml +3 -3
- data/spec/timezones/tests/sl.yml +3 -3
- data/spec/timezones/tests/sq.yml +3 -3
- data/spec/timezones/tests/sr-Cyrl-ME.yml +3 -3
- data/spec/timezones/tests/sr-Latn-ME.yml +3 -3
- data/spec/timezones/tests/sr.yml +3 -3
- data/spec/timezones/tests/sv.yml +4 -4
- data/spec/timezones/tests/sw.yml +3 -3
- data/spec/timezones/tests/ta.yml +3 -3
- data/spec/timezones/tests/th.yml +3 -3
- data/spec/timezones/tests/tr.yml +3 -3
- data/spec/timezones/tests/uk.yml +3 -3
- data/spec/timezones/tests/ur.yml +3 -3
- data/spec/timezones/tests/vi.yml +3 -3
- data/spec/timezones/tests/xh.yml +3 -3
- data/spec/timezones/tests/zh-Hant.yml +13 -13
- data/spec/timezones/tests/zh.yml +13 -13
- data/spec/timezones/tests/zu.yml +3 -3
- data/spec/tokenizers/calendars/date_tokenizer_spec.rb +0 -18
- metadata +44 -6
- data/lib/twitter_cldr/tokenizers/composite_token.rb +0 -26
- data/resources/custom/locales/en-AU/calendars.yml +0 -10
- data/spec/tokenizers/composite_token_spec.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb3f9e357d9106f3b87744f5a8203eda30efd0dac40a24dacfbfaca6122431bc
|
4
|
+
data.tar.gz: a39e1373d65e2665124caedba55b039d62214950ced3db2e79636e38aef9e9e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e810877761c6898a5e5efb187c2f16a91536bf5e2bf784d802eb99ef9fe482140c79490f20e2c3748622147f340be3905cdc2cebc1c046e7eff9c5929130c8d
|
7
|
+
data.tar.gz: 2e9d84af9731ba6ada0cd0fc63224a54fbdb4f7de6b3de1d0f4748d20f71c6f17b65b490b5d32b56e269273c5c05dc94fa704da8fe89af077a62e50aad562023
|
data/Gemfile
CHANGED
@@ -4,7 +4,7 @@ gemspec
|
|
4
4
|
|
5
5
|
group :development, :test do
|
6
6
|
gem 'rake'
|
7
|
-
gem 'pry-
|
7
|
+
gem 'pry-byebug' unless RUBY_PLATFORM == 'java'
|
8
8
|
gem 'ruby-prof' unless RUBY_PLATFORM == 'java'
|
9
9
|
gem 'regexp_parser', '~> 0.5'
|
10
10
|
gem 'benchmark-ips'
|
@@ -13,7 +13,7 @@ group :development, :test do
|
|
13
13
|
# gemspec allows any version, but most people are probably using 1.x, so
|
14
14
|
# let's test and develop against that
|
15
15
|
gem 'tzinfo', '< 2'
|
16
|
-
gem 'tzinfo-data', '= 1.
|
16
|
+
gem 'tzinfo-data', '= 1.2021.1' # try to keep in sync with ICU
|
17
17
|
end
|
18
18
|
|
19
19
|
group :development do
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## twitter-cldr-rb
|
1
|
+
## twitter-cldr-rb ![Unit Tests](https://github.com/camertron/rux/actions/workflows/unit_tests.yml/badge.svg?branch=master) [![Code Climate](https://codeclimate.com/github/twitter/twitter-cldr-rb.png)](https://codeclimate.com/github/twitter/twitter-cldr-rb) [![Coverage Status](https://coveralls.io/repos/twitter/twitter-cldr-rb/badge.png?branch=master)](https://coveralls.io/r/twitter/twitter-cldr-rb?branch=master)
|
2
2
|
|
3
3
|
TwitterCldr uses Unicode's Common Locale Data Repository (CLDR) to format certain types of text into their
|
4
4
|
localized equivalents. Currently supported types of text include dates, times, currencies, decimals, percentages, and symbols.
|
@@ -558,20 +558,20 @@ The CLDR contains postal code validation regexes for a number of countries.
|
|
558
558
|
|
559
559
|
```ruby
|
560
560
|
# United States
|
561
|
-
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
|
561
|
+
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
|
562
562
|
postal_code.valid?("94103") # true
|
563
563
|
postal_code.valid?("9410") # false
|
564
564
|
|
565
565
|
# England (Great Britain)
|
566
|
-
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:gb)
|
566
|
+
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:gb)
|
567
567
|
postal_code.valid?("BS98 1TL") # true
|
568
568
|
|
569
569
|
# Sweden
|
570
|
-
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:se)
|
570
|
+
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:se)
|
571
571
|
postal_code.valid?("280 12") # true
|
572
572
|
|
573
573
|
# Canada
|
574
|
-
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:ca)
|
574
|
+
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:ca)
|
575
575
|
postal_code.valid?("V3H 1Z7") # true
|
576
576
|
```
|
577
577
|
|
@@ -579,7 +579,7 @@ Match all valid postal codes in a string with the `#find_all` method:
|
|
579
579
|
|
580
580
|
```ruby
|
581
581
|
# United States
|
582
|
-
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
|
582
|
+
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
|
583
583
|
postal_code.find_all("12345 23456") # ["12345", "23456"]
|
584
584
|
```
|
585
585
|
|
@@ -592,7 +592,7 @@ TwitterCldr::Shared::PostalCodes.territories # [:ac, :ad, :af, :ai, :al, ... ]
|
|
592
592
|
Just want the regex? No problem:
|
593
593
|
|
594
594
|
```ruby
|
595
|
-
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
|
595
|
+
postal_code = TwitterCldr::Shared::PostalCodes.for_territory(:us)
|
596
596
|
postal_code.regexp # /(\d{5})(?:[ \-](\d{4}))?/
|
597
597
|
```
|
598
598
|
|
@@ -1014,17 +1014,17 @@ The Psych gem that is the default YAML engine in Ruby 1.9 doesn't handle Unicode
|
|
1014
1014
|
You can make use of TwitterCLDR's YAML dumper by calling `localize` and then `to_yaml` on an `Array`, `Hash`, or `String`:
|
1015
1015
|
|
1016
1016
|
```ruby
|
1017
|
-
{ :hello => "world" }.localize.to_yaml
|
1018
|
-
["hello", "world"].localize.to_yaml
|
1019
|
-
"hello, world".localize.to_yaml
|
1017
|
+
{ :hello => "world" }.localize.to_yaml
|
1018
|
+
["hello", "world"].localize.to_yaml
|
1019
|
+
"hello, world".localize.to_yaml
|
1020
1020
|
```
|
1021
1021
|
|
1022
1022
|
Behind the scenes, these convenience methods are using the `TwitterCldr::Shared::YAML` class. You can do the same thing if you're feeling adventurous:
|
1023
1023
|
|
1024
1024
|
```ruby
|
1025
|
-
TwitterCldr::Shared::YAML.dump({ :hello => "world" })
|
1026
|
-
TwitterCldr::Shared::YAML.dump(["hello", "world"])
|
1027
|
-
TwitterCldr::Shared::YAML.dump("hello, world")
|
1025
|
+
TwitterCldr::Shared::YAML.dump({ :hello => "world" })
|
1026
|
+
TwitterCldr::Shared::YAML.dump(["hello", "world"])
|
1027
|
+
TwitterCldr::Shared::YAML.dump("hello, world")
|
1028
1028
|
```
|
1029
1029
|
|
1030
1030
|
## Adding New Locales
|
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ require 'rubygems/package_task'
|
|
13
13
|
|
14
14
|
require './lib/twitter_cldr'
|
15
15
|
|
16
|
-
require 'pry-
|
16
|
+
require 'pry-byebug' unless RUBY_PLATFORM == 'java'
|
17
17
|
|
18
18
|
Bundler::GemHelper.install_tasks
|
19
19
|
|
@@ -89,6 +89,11 @@ namespace :update do
|
|
89
89
|
TwitterCldr::Resources::NumberFormatsImporter.new.import
|
90
90
|
end
|
91
91
|
|
92
|
+
desc 'Import list formats'
|
93
|
+
task :list_formats do
|
94
|
+
TwitterCldr::Resources::ListFormatsImporter.new.import
|
95
|
+
end
|
96
|
+
|
92
97
|
desc 'Import currency symbols'
|
93
98
|
task :currency_symbols do
|
94
99
|
TwitterCldr::Resources::CurrencySymbolsImporter.new.import
|
@@ -136,6 +141,16 @@ namespace :update do
|
|
136
141
|
TwitterCldr::Resources::UnicodePropertyAliasesImporter.new.import
|
137
142
|
end
|
138
143
|
|
144
|
+
desc 'Import unit data'
|
145
|
+
task :units do
|
146
|
+
TwitterCldr::Resources::UnitsImporter.new.import
|
147
|
+
end
|
148
|
+
|
149
|
+
desc 'Import calendar data'
|
150
|
+
task :calendars do
|
151
|
+
TwitterCldr::Resources::CalendarsImporter.new.import
|
152
|
+
end
|
153
|
+
|
139
154
|
desc 'Generate the casefolder class. Depends on unicode data'
|
140
155
|
task :casefolder do
|
141
156
|
TwitterCldr::Resources::CasefolderClassGenerator.new.import
|
@@ -0,0 +1,220 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
require 'nokogiri'
|
7
|
+
require 'fileutils'
|
8
|
+
require 'parallel'
|
9
|
+
require 'etc'
|
10
|
+
require 'set'
|
11
|
+
|
12
|
+
module TwitterCldr
|
13
|
+
module Resources
|
14
|
+
|
15
|
+
class CalendarsImporter < Importer
|
16
|
+
|
17
|
+
requirement :cldr, Versions.cldr_version
|
18
|
+
output_path 'locales'
|
19
|
+
locales TwitterCldr.supported_locales
|
20
|
+
ruby_engine :mri
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def execute
|
25
|
+
locales = Set.new
|
26
|
+
|
27
|
+
finish = -> (locale, *) do
|
28
|
+
locales.add(locale)
|
29
|
+
STDOUT.write "\rImported #{locale}, #{locales.size} of #{params[:locales].size} total"
|
30
|
+
end
|
31
|
+
|
32
|
+
Parallel.each(params[:locales], in_processes: Etc.nprocessors, finish: finish) do |locale|
|
33
|
+
import_locale(locale)
|
34
|
+
locales << locale
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def import_locale(locale)
|
39
|
+
data = requirements[:cldr].merge_each_ancestor(locale) do |ancestor_locale|
|
40
|
+
GregorianCalendar.new(ancestor_locale, requirements[:cldr]).to_h
|
41
|
+
end
|
42
|
+
|
43
|
+
output_file = File.join(output_path, locale.to_s, 'calendars.yml')
|
44
|
+
|
45
|
+
File.open(output_file, 'w:utf-8') do |output|
|
46
|
+
output.write(
|
47
|
+
TwitterCldr::Utils::YAML.dump(
|
48
|
+
TwitterCldr::Utils.deep_symbolize_keys(locale => data),
|
49
|
+
use_natural_symbols: true
|
50
|
+
)
|
51
|
+
)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def output_path
|
56
|
+
params.fetch(:output_path)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
class GregorianCalendar
|
63
|
+
attr_reader :locale, :cldr_req
|
64
|
+
|
65
|
+
def initialize(locale, cldr_req)
|
66
|
+
@locale = locale
|
67
|
+
@cldr_req = cldr_req
|
68
|
+
end
|
69
|
+
|
70
|
+
def to_h
|
71
|
+
{
|
72
|
+
calendars: {
|
73
|
+
gregorian: {
|
74
|
+
months: contexts('month'),
|
75
|
+
days: contexts('day'),
|
76
|
+
eras: eras,
|
77
|
+
quarters: contexts('quarter'),
|
78
|
+
periods: contexts('dayPeriod', group: "alt"),
|
79
|
+
fields: fields,
|
80
|
+
formats: {
|
81
|
+
date: formats('date'),
|
82
|
+
time: formats('time'),
|
83
|
+
datetime: formats('dateTime')
|
84
|
+
},
|
85
|
+
additional_formats: additional_formats
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def calendar
|
94
|
+
@calendar ||= doc.xpath('//ldml/dates/calendars/calendar[@type="gregorian"]').first
|
95
|
+
end
|
96
|
+
|
97
|
+
def contexts(kind, options = {})
|
98
|
+
return {} unless calendar
|
99
|
+
|
100
|
+
calendar.xpath("#{kind}s/#{kind}Context").each_with_object({}) do |node, result|
|
101
|
+
context = node.attribute('type').value.to_sym
|
102
|
+
result[context] = widths(node, kind, context, options)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def widths(node, kind, context, options = {})
|
107
|
+
node.xpath("#{kind}Width").each_with_object({}) do |node, result|
|
108
|
+
width = node.attribute('type').value.to_sym
|
109
|
+
result[width] = elements(node, kind, context, width, options)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def elements(node, kind, context, width, options = {})
|
114
|
+
aliased = node.xpath('alias').first
|
115
|
+
|
116
|
+
if aliased
|
117
|
+
alias_path = "#{node.path}/#{aliased.attribute('path').value}"
|
118
|
+
elements(doc.xpath(alias_path).first, kind, context, width, options)
|
119
|
+
else
|
120
|
+
node.xpath(kind).each_with_object({}) do |node, result|
|
121
|
+
key = node.attribute('type').value
|
122
|
+
key = key =~ /^\d*$/ ? key.to_i : key.to_sym
|
123
|
+
|
124
|
+
if options[:group] && found_group = node.attribute(options[:group])
|
125
|
+
result[found_group.value] ||= {}
|
126
|
+
result[found_group.value][key] = node.content
|
127
|
+
else
|
128
|
+
result[key] = node.content
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def periods
|
135
|
+
am = calendar.xpath("am").first
|
136
|
+
pm = calendar.xpath("pm").first
|
137
|
+
|
138
|
+
{}.tap do |result|
|
139
|
+
result[:am] = am.content if am
|
140
|
+
result[:pm] = pm.content if pm
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def eras
|
145
|
+
return {} unless calendar
|
146
|
+
|
147
|
+
base_path = "#{calendar.path}/eras"
|
148
|
+
keys = doc.xpath("#{base_path}/*").map { |node| node.name }
|
149
|
+
|
150
|
+
keys.each_with_object({}) do |name, result|
|
151
|
+
path = "#{base_path}/#{name}/*"
|
152
|
+
key = name.gsub('era', '').gsub(/s$/, '').downcase.to_sym
|
153
|
+
result[key] = doc.xpath(path).each_with_object({}) do |node, ret|
|
154
|
+
type = node.attribute('type').value.to_i rescue 0
|
155
|
+
ret[type] = node.content
|
156
|
+
ret
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def formats(type)
|
162
|
+
return {} unless calendar
|
163
|
+
|
164
|
+
formats = calendar.xpath("#{type}Formats/#{type}FormatLength").each_with_object({}) do |node, result|
|
165
|
+
key = node.attribute('type').value.to_sym rescue :format
|
166
|
+
result[key] = pattern(node, type)
|
167
|
+
end
|
168
|
+
if default = default_format(type)
|
169
|
+
formats = default.merge(formats)
|
170
|
+
end
|
171
|
+
formats
|
172
|
+
end
|
173
|
+
|
174
|
+
def additional_formats
|
175
|
+
return {} unless calendar
|
176
|
+
|
177
|
+
calendar.xpath("dateTimeFormats/availableFormats/dateFormatItem").each_with_object({}) do |node, result|
|
178
|
+
key = node.attribute('id').value
|
179
|
+
result[key] = node.content
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
def default_format(type)
|
184
|
+
if node = calendar.xpath("#{type}Formats/default").first
|
185
|
+
key = node.attribute('choice').value.to_sym
|
186
|
+
{ :default => :"calendars.gregorian.formats.#{type.downcase}.#{key}" }
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def pattern(node, type)
|
191
|
+
node.xpath("#{type}Format/pattern").each_with_object({}) do |node, result|
|
192
|
+
pattern = node.content
|
193
|
+
pattern = pattern.gsub('{0}', '{{time}}').gsub('{1}', '{{date}}') if type == 'dateTime'
|
194
|
+
result[:pattern] = pattern
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def fields
|
199
|
+
doc.xpath("//ldml/dates/fields/field").each_with_object({}) do |node, result|
|
200
|
+
key = node.attribute('type').value.to_sym
|
201
|
+
name = node.xpath('displayName').first
|
202
|
+
result[key] = name.content if name
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def doc
|
207
|
+
@doc ||= begin
|
208
|
+
locale_fs = locale.to_s.gsub('-', '_')
|
209
|
+
Nokogiri.XML(File.read(File.join(cldr_main_path, "#{locale_fs}.xml")))
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
def cldr_main_path
|
214
|
+
@cldr_main_path ||= File.join(cldr_req.common_path, 'main')
|
215
|
+
end
|
216
|
+
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
require 'nokogiri'
|
7
|
+
require 'parallel'
|
8
|
+
require 'etc'
|
9
|
+
require 'set'
|
10
|
+
|
11
|
+
module TwitterCldr
|
12
|
+
module Resources
|
13
|
+
|
14
|
+
class ListFormatsImporter < Importer
|
15
|
+
|
16
|
+
requirement :cldr, Versions.cldr_version
|
17
|
+
output_path 'locales'
|
18
|
+
locales TwitterCldr.supported_locales
|
19
|
+
ruby_engine :mri
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def execute
|
24
|
+
locales = Set.new
|
25
|
+
|
26
|
+
finish = -> (locale, *) do
|
27
|
+
locales.add(locale)
|
28
|
+
STDOUT.write "\rImported #{locale}, #{locales.size} of #{params[:locales].size} total"
|
29
|
+
end
|
30
|
+
|
31
|
+
Parallel.each(params[:locales], in_processes: Etc.nprocessors, finish: finish) do |locale|
|
32
|
+
import_locale(locale)
|
33
|
+
locales << locale
|
34
|
+
end
|
35
|
+
|
36
|
+
puts
|
37
|
+
end
|
38
|
+
|
39
|
+
def import_locale(locale)
|
40
|
+
# The merging that happens here works at the listPatternPart level of granularity.
|
41
|
+
# In other words, a missing part will be filled in by any part with the same key
|
42
|
+
# in the locale's ancestor chain. The raw CLDR data contains the inheritance marker
|
43
|
+
# (i.e. "↑↑↑") for listPatterns that are missing parts, but the expanded data we
|
44
|
+
# get in the downloadable CLDR zip file doesn't include them or the inherited data,
|
45
|
+
# making it impossible for TwitterCLDR to know how it should handle missing keys.
|
46
|
+
# I believe whatever massage tool the CLDR maintainers use to generate the final
|
47
|
+
# data set doesn't take aliases into account, which explains the holes in the data.
|
48
|
+
# By allowing individual listPatternParts to be populated by data from ancestor
|
49
|
+
# locales, we fill in any missing parts at the minor risk of being slightly wrong
|
50
|
+
# when formatting lists. In my opinion, it's far better to produce a slightly wrong
|
51
|
+
# string than to error or produce an entirely empty string.
|
52
|
+
data = requirements[:cldr].merge_each_ancestor(locale) do |ancestor_locale|
|
53
|
+
ListFormats.new(ancestor_locale, requirements[:cldr]).to_h
|
54
|
+
end
|
55
|
+
|
56
|
+
output_file = File.join(output_path, locale.to_s, 'lists.yml')
|
57
|
+
|
58
|
+
File.open(output_file, 'w:utf-8') do |output|
|
59
|
+
output.write(
|
60
|
+
TwitterCldr::Utils::YAML.dump(
|
61
|
+
TwitterCldr::Utils.deep_symbolize_keys(locale => data),
|
62
|
+
use_natural_symbols: true
|
63
|
+
)
|
64
|
+
)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def output_path
|
69
|
+
params.fetch(:output_path)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
class ListFormats
|
76
|
+
|
77
|
+
attr_reader :locale, :cldr_req
|
78
|
+
|
79
|
+
def initialize(locale, cldr_req)
|
80
|
+
@locale = locale
|
81
|
+
@cldr_req = cldr_req
|
82
|
+
end
|
83
|
+
|
84
|
+
def to_h
|
85
|
+
{ lists: lists }
|
86
|
+
end
|
87
|
+
|
88
|
+
def lists
|
89
|
+
doc.xpath('//ldml/listPatterns/listPattern').each_with_object({}) do |pattern_node, pattern_result|
|
90
|
+
pattern_type = if attribute = pattern_node.attribute('type')
|
91
|
+
attribute.value.to_sym
|
92
|
+
else
|
93
|
+
:default
|
94
|
+
end
|
95
|
+
|
96
|
+
pattern_node = pattern_for(pattern_type)
|
97
|
+
|
98
|
+
pattern_result[pattern_type] = pattern_node.xpath('listPatternPart').each_with_object({}) do |type_node, type_result|
|
99
|
+
type_result[type_node.attribute('type').value.to_sym] = type_node.content
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def pattern_for(type)
|
105
|
+
xpath = xpath_for(type)
|
106
|
+
pattern_node = doc.xpath(xpath)[0]
|
107
|
+
alias_node = pattern_node.xpath('alias')[0]
|
108
|
+
|
109
|
+
if alias_node
|
110
|
+
alias_type = alias_node.attribute('path').value[/@type='([\w-]+)'/, 1] || :default
|
111
|
+
# follow aliases so we can fully expand them
|
112
|
+
pattern_node = pattern_for(alias_type)
|
113
|
+
end
|
114
|
+
|
115
|
+
pattern_node
|
116
|
+
end
|
117
|
+
|
118
|
+
def xpath_for(type)
|
119
|
+
if type == :default
|
120
|
+
'//ldml/listPatterns/listPattern[not(@type)]'
|
121
|
+
else
|
122
|
+
"//ldml/listPatterns/listPattern[@type='#{type}']"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def doc
|
127
|
+
@doc ||= begin
|
128
|
+
locale_fs = locale.to_s.gsub('-', '_')
|
129
|
+
Nokogiri.XML(File.read(File.join(cldr_main_path, "#{locale_fs}.xml")))
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def cldr_main_path
|
134
|
+
@cldr_main_path ||= File.join(cldr_req.common_path, 'main')
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
end
|
@@ -22,13 +22,10 @@ module TwitterCldr
|
|
22
22
|
|
23
23
|
LOCALE_COMPONENTS = %w[
|
24
24
|
layout
|
25
|
-
calendars
|
26
25
|
languages
|
27
26
|
currencies
|
28
27
|
plural_rules
|
29
|
-
lists
|
30
28
|
rbnf
|
31
|
-
units
|
32
29
|
fields
|
33
30
|
]
|
34
31
|
|
@@ -73,7 +70,6 @@ module TwitterCldr
|
|
73
70
|
}
|
74
71
|
|
75
72
|
Cldr::Export.export(export_args) do |component, locale, path|
|
76
|
-
add_buddhist_calendar(component, locale, path)
|
77
73
|
process_plurals(component, locale, path)
|
78
74
|
deep_symbolize(path)
|
79
75
|
end
|
@@ -141,30 +137,6 @@ module TwitterCldr
|
|
141
137
|
output.write(YAML.dump(locale => plurals))
|
142
138
|
end
|
143
139
|
end
|
144
|
-
|
145
|
-
# TODO: export buddhist calendar from CLDR data instead of using BUDDHIST_CALENDAR constant.
|
146
|
-
#
|
147
|
-
def add_buddhist_calendar(component, locale, path)
|
148
|
-
return unless component == 'Calendars' && locale == :th
|
149
|
-
|
150
|
-
data = YAML.load(File.read(path))
|
151
|
-
data['th']['calendars']['buddhist'] = BUDDHIST_CALENDAR
|
152
|
-
|
153
|
-
File.open(path, 'w:utf-8') { |output| output.write(YAML.dump(data))}
|
154
|
-
end
|
155
|
-
|
156
|
-
BUDDHIST_CALENDAR = {
|
157
|
-
'formats' => {
|
158
|
-
'date' => {
|
159
|
-
'default' => :'calendars.buddhist.formats.date.medium',
|
160
|
-
'full' => { 'pattern' => 'EEEEที่ d MMMM G y' },
|
161
|
-
'long' => { 'pattern' => 'd MMMM พ.ศ. #{y + 543}' },
|
162
|
-
'medium' => { 'pattern' => 'd MMM #{y + 543}' },
|
163
|
-
'short' => { 'pattern' => 'd/M/#{y + 543}' }
|
164
|
-
}
|
165
|
-
}
|
166
|
-
}
|
167
|
-
|
168
140
|
end
|
169
141
|
|
170
142
|
end
|
@@ -4,8 +4,9 @@
|
|
4
4
|
# http://www.apache.org/licenses/LICENSE-2.0
|
5
5
|
|
6
6
|
require 'i18n'
|
7
|
+
require 'net/ftp'
|
7
8
|
require 'nokogiri'
|
8
|
-
require '
|
9
|
+
require 'tempfile'
|
9
10
|
require 'uri'
|
10
11
|
require 'zip'
|
11
12
|
|
@@ -14,7 +15,7 @@ module TwitterCldr
|
|
14
15
|
module Requirements
|
15
16
|
|
16
17
|
class CldrRequirement
|
17
|
-
CLDR_URL = "
|
18
|
+
CLDR_URL = "ftp://unicode.org/Public/cldr/%{version}/core.zip".freeze
|
18
19
|
|
19
20
|
attr_reader :version
|
20
21
|
|
@@ -111,15 +112,24 @@ module TwitterCldr
|
|
111
112
|
end
|
112
113
|
|
113
114
|
def download
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
115
|
+
FileUtils.mkdir_p(source_path)
|
116
|
+
|
117
|
+
uri = URI(cldr_url)
|
118
|
+
ext_name = File.extname(cldr_url)
|
119
|
+
file_name = File.basename(cldr_url).chomp(ext_name)
|
120
|
+
|
121
|
+
Net::FTP.open(uri.host) do |ftp|
|
122
|
+
ftp.login
|
123
|
+
|
124
|
+
Tempfile.open([file_name, ext_name]) do |tmp|
|
125
|
+
ftp.getbinaryfile(uri.path, tmp.path)
|
126
|
+
|
127
|
+
Zip::File.open(tmp.path) do |file|
|
128
|
+
file.each do |entry|
|
129
|
+
path = File.join(source_path, entry.name)
|
130
|
+
FileUtils.mkdir_p(File.dirname(path))
|
131
|
+
file.extract(entry, path)
|
132
|
+
end
|
123
133
|
end
|
124
134
|
end
|
125
135
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Copyright 2012 Twitter, Inc
|
4
4
|
# http://www.apache.org/licenses/LICENSE-2.0
|
5
5
|
|
6
|
-
require '
|
6
|
+
require 'net/ftp'
|
7
7
|
require 'fileutils'
|
8
8
|
|
9
9
|
module TwitterCldr
|
@@ -45,8 +45,12 @@ module TwitterCldr
|
|
45
45
|
def download(file)
|
46
46
|
source_path = source_path_for(file)
|
47
47
|
FileUtils.mkdir_p(File.dirname(source_path))
|
48
|
-
|
49
|
-
|
48
|
+
uri = URI(File.join(url % { version: version }, file))
|
49
|
+
|
50
|
+
Net::FTP.open(uri.host) do |ftp|
|
51
|
+
ftp.login
|
52
|
+
ftp.getbinaryfile(uri.path, source_path)
|
53
|
+
end
|
50
54
|
end
|
51
55
|
end
|
52
56
|
|