twitter_cldr 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -2
- data/History.txt +11 -0
- data/README.md +2 -2
- data/Rakefile +1 -1
- data/lib/twitter_cldr.rb +1 -0
- data/lib/twitter_cldr/core_ext.rb +1 -1
- data/lib/twitter_cldr/formatters/base.rb +3 -3
- data/lib/twitter_cldr/formatters/calendars/datetime_formatter.rb +32 -23
- data/lib/twitter_cldr/formatters/numbers/abbreviated/abbreviated_number_formatter.rb +3 -2
- data/lib/twitter_cldr/localized/localized_date.rb +32 -13
- data/lib/twitter_cldr/localized/localized_datetime.rb +24 -6
- data/lib/twitter_cldr/localized/localized_time.rb +12 -3
- data/lib/twitter_cldr/resources/download.rb +7 -1
- data/lib/twitter_cldr/resources/language_codes_importer.rb +8 -8
- data/lib/twitter_cldr/resources/loader.rb +1 -1
- data/lib/twitter_cldr/resources/tailoring_importer.rb +1 -3
- data/lib/twitter_cldr/shared/languages.rb +1 -1
- data/lib/twitter_cldr/tokenizers/calendars/datetime_tokenizer.rb +2 -1
- data/lib/twitter_cldr/version.rb +1 -1
- data/resources/collation/tailoring/af.yml +0 -1
- data/resources/collation/tailoring/ar.yml +3 -12
- data/resources/collation/tailoring/be.yml +4 -5
- data/resources/collation/tailoring/bg.yml +1 -2
- data/resources/collation/tailoring/bn.yml +3 -5
- data/resources/collation/tailoring/ca.yml +3 -6
- data/resources/collation/tailoring/cs.yml +3 -14
- data/resources/collation/tailoring/cy.yml +3 -26
- data/resources/collation/tailoring/da.yml +3 -31
- data/resources/collation/tailoring/de.yml +0 -1
- data/resources/collation/tailoring/el.yml +0 -1
- data/resources/collation/tailoring/en.yml +0 -1
- data/resources/collation/tailoring/es.yml +3 -4
- data/resources/collation/tailoring/eu.yml +0 -1
- data/resources/collation/tailoring/fa.yml +3 -38
- data/resources/collation/tailoring/fi.yml +3 -24
- data/resources/collation/tailoring/fil.yml +3 -7
- data/resources/collation/tailoring/fr.yml +0 -1
- data/resources/collation/tailoring/ga.yml +0 -1
- data/resources/collation/tailoring/gl.yml +0 -1
- data/resources/collation/tailoring/he.yml +3 -2
- data/resources/collation/tailoring/hi.yml +3 -5
- data/resources/collation/tailoring/hu.yml +3 -64
- data/resources/collation/tailoring/id.yml +0 -1
- data/resources/collation/tailoring/it.yml +0 -1
- data/resources/collation/tailoring/ja.yml +55 -7429
- data/resources/collation/tailoring/ko.yml +3 -7478
- data/resources/collation/tailoring/lv.yml +3 -18
- data/resources/collation/tailoring/ms.yml +0 -1
- data/resources/collation/tailoring/nb.yml +3 -31
- data/resources/collation/tailoring/nl.yml +0 -1
- data/resources/collation/tailoring/pl.yml +3 -20
- data/resources/collation/tailoring/pt.yml +0 -1
- data/resources/collation/tailoring/ro.yml +3 -16
- data/resources/collation/tailoring/ru.yml +1 -2
- data/resources/collation/tailoring/sk.yml +3 -18
- data/resources/collation/tailoring/sq.yml +3 -33
- data/resources/collation/tailoring/sr.yml +1 -2
- data/resources/collation/tailoring/sv.yml +3 -30
- data/resources/collation/tailoring/ta.yml +3 -29
- data/resources/collation/tailoring/th.yml +3 -11
- data/resources/collation/tailoring/tr.yml +3 -15
- data/resources/collation/tailoring/uk.yml +4 -5
- data/resources/collation/tailoring/ur.yml +3 -83
- data/resources/collation/tailoring/vi.yml +3 -20
- data/resources/collation/tailoring/zh-Hant.yml +14 -75240
- data/resources/collation/tailoring/zh.yml +44 -41897
- data/resources/collation/tries/af.dump +0 -0
- data/resources/collation/tries/ar.dump +0 -0
- data/resources/collation/tries/be.dump +0 -0
- data/resources/collation/tries/bg.dump +0 -0
- data/resources/collation/tries/bn.dump +0 -0
- data/resources/collation/tries/ca.dump +0 -0
- data/resources/collation/tries/cs.dump +0 -0
- data/resources/collation/tries/cy.dump +0 -0
- data/resources/collation/tries/da.dump +0 -0
- data/resources/collation/tries/de.dump +0 -0
- data/resources/collation/tries/default.dump +0 -0
- data/resources/collation/tries/el.dump +0 -0
- data/resources/collation/tries/en.dump +0 -0
- data/resources/collation/tries/es.dump +0 -0
- data/resources/collation/tries/eu.dump +0 -0
- data/resources/collation/tries/fa.dump +0 -0
- data/resources/collation/tries/fi.dump +0 -0
- data/resources/collation/tries/fil.dump +0 -0
- data/resources/collation/tries/fr.dump +0 -0
- data/resources/collation/tries/ga.dump +0 -0
- data/resources/collation/tries/gl.dump +0 -0
- data/resources/collation/tries/he.dump +0 -0
- data/resources/collation/tries/hi.dump +0 -0
- data/resources/collation/tries/hu.dump +0 -0
- data/resources/collation/tries/id.dump +0 -0
- data/resources/collation/tries/it.dump +0 -0
- data/resources/collation/tries/ja.dump +0 -0
- data/resources/collation/tries/ko.dump +0 -0
- data/resources/collation/tries/lv.dump +0 -0
- data/resources/collation/tries/ms.dump +0 -0
- data/resources/collation/tries/nb.dump +0 -0
- data/resources/collation/tries/nl.dump +0 -0
- data/resources/collation/tries/pl.dump +0 -0
- data/resources/collation/tries/pt.dump +0 -0
- data/resources/collation/tries/ro.dump +0 -0
- data/resources/collation/tries/ru.dump +0 -0
- data/resources/collation/tries/sk.dump +0 -0
- data/resources/collation/tries/sq.dump +0 -0
- data/resources/collation/tries/sr.dump +0 -0
- data/resources/collation/tries/sv.dump +0 -0
- data/resources/collation/tries/ta.dump +0 -0
- data/resources/collation/tries/th.dump +0 -0
- data/resources/collation/tries/tr.dump +0 -0
- data/resources/collation/tries/uk.dump +0 -0
- data/resources/collation/tries/ur.dump +0 -0
- data/resources/collation/tries/vi.dump +0 -0
- data/resources/collation/tries/zh-Hant.dump +0 -0
- data/resources/collation/tries/zh.dump +0 -0
- data/resources/locales/af/calendars.yml +5 -4
- data/resources/locales/af/currencies.yml +2 -0
- data/resources/locales/af/layout.yml +2 -1
- data/resources/locales/ar/calendars.yml +10 -10
- data/resources/locales/ar/currencies.yml +7 -0
- data/resources/locales/ar/layout.yml +1 -1
- data/resources/locales/be/calendars.yml +9 -9
- data/resources/locales/be/currencies.yml +1 -2
- data/resources/locales/be/layout.yml +2 -1
- data/resources/locales/bg/calendars.yml +8 -11
- data/resources/locales/bg/currencies.yml +3 -0
- data/resources/locales/bg/layout.yml +2 -1
- data/resources/locales/bg/territories.yml +1 -1
- data/resources/locales/bn/calendars.yml +6 -7
- data/resources/locales/bn/currencies.yml +2 -0
- data/resources/locales/bn/layout.yml +2 -1
- data/resources/locales/bn/territories.yml +1 -1
- data/resources/locales/ca/calendars.yml +8 -7
- data/resources/locales/ca/currencies.yml +3 -0
- data/resources/locales/ca/layout.yml +2 -1
- data/resources/locales/cs/calendars.yml +10 -11
- data/resources/locales/cs/currencies.yml +4 -0
- data/resources/locales/cs/layout.yml +2 -1
- data/resources/locales/cs/territories.yml +1 -1
- data/resources/locales/cy/calendars.yml +22 -12
- data/resources/locales/cy/currencies.yml +1080 -3
- data/resources/locales/cy/languages.yml +107 -23
- data/resources/locales/cy/layout.yml +2 -1
- data/resources/locales/cy/lists.yml +1 -1
- data/resources/locales/cy/numbers.yml +16 -4
- data/resources/locales/cy/territories.yml +257 -1
- data/resources/locales/cy/units.yml +175 -28
- data/resources/locales/da/calendars.yml +6 -9
- data/resources/locales/da/currencies.yml +3 -0
- data/resources/locales/da/layout.yml +2 -1
- data/resources/locales/da/territories.yml +1 -1
- data/resources/locales/de/calendars.yml +8 -11
- data/resources/locales/de/currencies.yml +3 -0
- data/resources/locales/de/layout.yml +2 -1
- data/resources/locales/de/territories.yml +1 -1
- data/resources/locales/el/calendars.yml +9 -11
- data/resources/locales/el/currencies.yml +3 -0
- data/resources/locales/el/layout.yml +2 -1
- data/resources/locales/el/numbers.yml +1 -0
- data/resources/locales/el/territories.yml +1 -1
- data/resources/locales/en/calendars.yml +8 -5
- data/resources/locales/en/currencies.yml +3 -0
- data/resources/locales/en/languages.yml +2 -1
- data/resources/locales/en/layout.yml +2 -1
- data/resources/locales/en/territories.yml +3 -3
- data/resources/locales/es/calendars.yml +6 -7
- data/resources/locales/es/currencies.yml +3 -0
- data/resources/locales/es/layout.yml +2 -1
- data/resources/locales/es/territories.yml +2 -2
- data/resources/locales/eu/calendars.yml +5 -4
- data/resources/locales/eu/currencies.yml +2 -0
- data/resources/locales/eu/layout.yml +2 -1
- data/resources/locales/eu/territories.yml +1 -1
- data/resources/locales/fa/calendars.yml +6 -8
- data/resources/locales/fa/currencies.yml +2 -0
- data/resources/locales/fa/layout.yml +1 -1
- data/resources/locales/fa/territories.yml +1 -1
- data/resources/locales/fi/calendars.yml +11 -14
- data/resources/locales/fi/currencies.yml +3 -0
- data/resources/locales/fi/layout.yml +2 -1
- data/resources/locales/fil/calendars.yml +5 -5
- data/resources/locales/fil/currencies.yml +2 -0
- data/resources/locales/fil/layout.yml +2 -1
- data/resources/locales/fil/territories.yml +1 -1
- data/resources/locales/fr/calendars.yml +9 -16
- data/resources/locales/fr/currencies.yml +3 -1
- data/resources/locales/fr/layout.yml +2 -1
- data/resources/locales/fr/territories.yml +2 -2
- data/resources/locales/ga/calendars.yml +13 -12
- data/resources/locales/ga/currencies.yml +2 -0
- data/resources/locales/ga/layout.yml +2 -1
- data/resources/locales/gl/calendars.yml +6 -6
- data/resources/locales/gl/currencies.yml +2 -0
- data/resources/locales/gl/layout.yml +2 -1
- data/resources/locales/gl/territories.yml +1 -1
- data/resources/locales/he/calendars.yml +8 -16
- data/resources/locales/he/currencies.yml +2 -0
- data/resources/locales/he/layout.yml +1 -1
- data/resources/locales/he/territories.yml +1 -1
- data/resources/locales/hi/calendars.yml +8 -10
- data/resources/locales/hi/currencies.yml +2 -0
- data/resources/locales/hi/languages.yml +64 -74
- data/resources/locales/hi/layout.yml +2 -1
- data/resources/locales/hi/territories.yml +32 -32
- data/resources/locales/hr/calendars.yml +6 -7
- data/resources/locales/hr/currencies.yml +5 -0
- data/resources/locales/hr/layout.yml +2 -1
- data/resources/locales/hr/territories.yml +1 -1
- data/resources/locales/hu/calendars.yml +9 -11
- data/resources/locales/hu/currencies.yml +2 -0
- data/resources/locales/hu/layout.yml +2 -1
- data/resources/locales/hu/territories.yml +1 -1
- data/resources/locales/id/calendars.yml +7 -6
- data/resources/locales/id/currencies.yml +2 -0
- data/resources/locales/id/languages.yml +9 -9
- data/resources/locales/id/layout.yml +2 -1
- data/resources/locales/id/territories.yml +1 -1
- data/resources/locales/is/calendars.yml +7 -8
- data/resources/locales/is/currencies.yml +2 -0
- data/resources/locales/is/layout.yml +2 -1
- data/resources/locales/is/territories.yml +1 -1
- data/resources/locales/it/calendars.yml +5 -8
- data/resources/locales/it/currencies.yml +3 -0
- data/resources/locales/it/layout.yml +2 -1
- data/resources/locales/it/territories.yml +1 -1
- data/resources/locales/ja/calendars.yml +12 -12
- data/resources/locales/ja/currencies.yml +2 -0
- data/resources/locales/ja/layout.yml +2 -1
- data/resources/locales/ko/calendars.yml +12 -11
- data/resources/locales/ko/currencies.yml +2 -0
- data/resources/locales/ko/layout.yml +2 -1
- data/resources/locales/ko/territories.yml +1 -1
- data/resources/locales/lv/calendars.yml +6 -6
- data/resources/locales/lv/currencies.yml +4 -0
- data/resources/locales/lv/layout.yml +2 -1
- data/resources/locales/ms/calendars.yml +5 -4
- data/resources/locales/ms/currencies.yml +2 -0
- data/resources/locales/ms/layout.yml +2 -1
- data/resources/locales/ms/territories.yml +1 -1
- data/resources/locales/nb/calendars.yml +7 -7
- data/resources/locales/nb/currencies.yml +3 -0
- data/resources/locales/nb/layout.yml +2 -1
- data/resources/locales/nb/territories.yml +1 -1
- data/resources/locales/nl/calendars.yml +5 -8
- data/resources/locales/nl/currencies.yml +3 -0
- data/resources/locales/nl/layout.yml +2 -1
- data/resources/locales/nl/territories.yml +1 -1
- data/resources/locales/pl/calendars.yml +9 -10
- data/resources/locales/pl/currencies.yml +5 -0
- data/resources/locales/pl/layout.yml +2 -1
- data/resources/locales/pl/territories.yml +1 -1
- data/resources/locales/pt/calendars.yml +9 -14
- data/resources/locales/pt/currencies.yml +3 -0
- data/resources/locales/pt/layout.yml +2 -1
- data/resources/locales/pt/territories.yml +1 -1
- data/resources/locales/ro/calendars.yml +10 -12
- data/resources/locales/ro/currencies.yml +4 -0
- data/resources/locales/ro/layout.yml +2 -1
- data/resources/locales/ro/territories.yml +1 -1
- data/resources/locales/ru/calendars.yml +8 -13
- data/resources/locales/ru/currencies.yml +5 -0
- data/resources/locales/ru/languages.yml +1 -1
- data/resources/locales/ru/layout.yml +2 -1
- data/resources/locales/ru/territories.yml +15 -15
- data/resources/locales/sk/calendars.yml +23 -48
- data/resources/locales/sk/currencies.yml +5 -1
- data/resources/locales/sk/layout.yml +2 -1
- data/resources/locales/sk/territories.yml +1 -1
- data/resources/locales/sq/calendars.yml +9 -9
- data/resources/locales/sq/layout.yml +2 -1
- data/resources/locales/sr/calendars.yml +7 -12
- data/resources/locales/sr/currencies.yml +5 -0
- data/resources/locales/sr/languages.yml +4 -4
- data/resources/locales/sr/layout.yml +2 -1
- data/resources/locales/sr/territories.yml +1 -1
- data/resources/locales/sv/calendars.yml +53 -57
- data/resources/locales/sv/currencies.yml +4 -2
- data/resources/locales/sv/layout.yml +2 -1
- data/resources/locales/sv/numbers.yml +0 -1
- data/resources/locales/sv/territories.yml +1 -1
- data/resources/locales/ta/calendars.yml +6 -5
- data/resources/locales/ta/currencies.yml +2 -0
- data/resources/locales/ta/layout.yml +2 -1
- data/resources/locales/ta/territories.yml +1 -1
- data/resources/locales/th/calendars.yml +7 -8
- data/resources/locales/th/currencies.yml +2 -0
- data/resources/locales/th/layout.yml +2 -1
- data/resources/locales/tr/calendars.yml +8 -11
- data/resources/locales/tr/currencies.yml +3 -1
- data/resources/locales/tr/layout.yml +2 -1
- data/resources/locales/tr/territories.yml +1 -1
- data/resources/locales/uk/calendars.yml +8 -10
- data/resources/locales/uk/currencies.yml +5 -0
- data/resources/locales/uk/layout.yml +2 -1
- data/resources/locales/ur/calendars.yml +8 -7
- data/resources/locales/ur/currencies.yml +3 -1
- data/resources/locales/ur/layout.yml +1 -1
- data/resources/locales/ur/territories.yml +1 -1
- data/resources/locales/vi/calendars.yml +19 -19
- data/resources/locales/vi/currencies.yml +2 -0
- data/resources/locales/vi/layout.yml +2 -1
- data/resources/locales/vi/territories.yml +1 -1
- data/resources/locales/zh-Hant/calendars.yml +7 -10
- data/resources/locales/zh-Hant/currencies.yml +2 -0
- data/resources/locales/zh-Hant/layout.yml +2 -1
- data/resources/locales/zh/calendars.yml +7 -10
- data/resources/locales/zh/currencies.yml +2 -0
- data/resources/locales/zh/layout.yml +2 -1
- data/resources/locales/zh/territories.yml +4 -4
- data/resources/shared/currency_digits_and_rounding.yml +4 -1
- data/resources/shared/language_codes_table.dump +0 -0
- data/resources/shared/phone_codes.yml +1 -0
- data/resources/shared/postal_codes.yml +159 -159
- data/resources/unicode_data/blocks/alphabetic_presentation_forms.yml +23 -23
- data/resources/unicode_data/blocks/arabic.yml +4 -4
- data/resources/unicode_data/blocks/arabic_mathematical_alphabetic_symbols.yml +141 -141
- data/resources/unicode_data/blocks/arabic_presentation_forms_a.yml +593 -593
- data/resources/unicode_data/blocks/arabic_presentation_forms_b.yml +139 -139
- data/resources/unicode_data/blocks/armenian.yml +1 -1
- data/resources/unicode_data/blocks/basic_latin.yml +33 -33
- data/resources/unicode_data/blocks/cjk_compatibility.yml +256 -256
- data/resources/unicode_data/blocks/cjk_compatibility_forms.yml +30 -30
- data/resources/unicode_data/blocks/cjk_radicals_supplement.yml +2 -2
- data/resources/unicode_data/blocks/cjk_symbols_and_punctuation.yml +5 -5
- data/resources/unicode_data/blocks/cjk_unified_ideographs.yml +2 -2
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_a.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/cjk_unified_ideographs_extension_d.yml +2 -2
- data/resources/unicode_data/blocks/cuneiform_numbers_and_punctuation.yml +4 -4
- data/resources/unicode_data/blocks/currency_symbols.yml +17 -1
- data/resources/unicode_data/blocks/enclosed_alphanumeric_supplement.yml +77 -77
- data/resources/unicode_data/blocks/enclosed_alphanumerics.yml +139 -139
- data/resources/unicode_data/blocks/enclosed_cjk_letters_and_months.yml +245 -245
- data/resources/unicode_data/blocks/enclosed_ideographic_supplement.yml +57 -57
- data/resources/unicode_data/blocks/general_punctuation.yml +26 -26
- data/resources/unicode_data/blocks/georgian.yml +1 -1
- data/resources/unicode_data/blocks/greek_and_coptic.yml +13 -13
- data/resources/unicode_data/blocks/greek_extended.yml +4 -4
- data/resources/unicode_data/blocks/halfwidth_and_fullwidth_forms.yml +225 -225
- data/resources/unicode_data/blocks/hangul_compatibility_jamo.yml +94 -94
- data/resources/unicode_data/blocks/hangul_syllables.yml +2 -2
- data/resources/unicode_data/blocks/high_private_use_surrogates.yml +2 -2
- data/resources/unicode_data/blocks/high_surrogates.yml +2 -2
- data/resources/unicode_data/blocks/hiragana.yml +3 -3
- data/resources/unicode_data/blocks/kanbun.yml +14 -14
- data/resources/unicode_data/blocks/kangxi_radicals.yml +214 -214
- data/resources/unicode_data/blocks/katakana.yml +1 -1
- data/resources/unicode_data/blocks/lao.yml +3 -3
- data/resources/unicode_data/blocks/latin_1_supplement.yml +46 -46
- data/resources/unicode_data/blocks/latin_extended_a.yml +6 -6
- data/resources/unicode_data/blocks/latin_extended_additional.yml +1 -1
- data/resources/unicode_data/blocks/latin_extended_b.yml +12 -12
- data/resources/unicode_data/blocks/latin_extended_c.yml +2 -2
- data/resources/unicode_data/blocks/latin_extended_d.yml +3 -3
- data/resources/unicode_data/blocks/letterlike_symbols.yml +53 -53
- data/resources/unicode_data/blocks/low_surrogates.yml +2 -2
- data/resources/unicode_data/blocks/mathematical_alphanumeric_symbols.yml +996 -996
- data/resources/unicode_data/blocks/mathematical_operators.yml +4 -4
- data/resources/unicode_data/blocks/number_forms.yml +49 -49
- data/resources/unicode_data/blocks/phonetic_extensions.yml +61 -61
- data/resources/unicode_data/blocks/phonetic_extensions_supplement.yml +37 -37
- data/resources/unicode_data/blocks/private_use_area.yml +2 -2
- data/resources/unicode_data/blocks/small_form_variants.yml +26 -26
- data/resources/unicode_data/blocks/spacing_modifier_letters.yml +20 -20
- data/resources/unicode_data/blocks/superscripts_and_subscripts.yml +42 -42
- data/resources/unicode_data/blocks/supplemental_mathematical_operators.yml +4 -4
- data/resources/unicode_data/blocks/supplementary_private_use_area_a.yml +2 -2
- data/resources/unicode_data/blocks/supplementary_private_use_area_b.yml +2 -2
- data/resources/unicode_data/blocks/thai.yml +1 -1
- data/resources/unicode_data/blocks/tibetan.yml +4 -4
- data/resources/unicode_data/blocks/tifinagh.yml +1 -1
- data/resources/unicode_data/blocks/vertical_forms.yml +10 -10
- data/spec/collation/trie_dumps_spec.rb +1 -1
- data/spec/core_ext_spec.rb +1 -1
- data/spec/formatters/calendars/datetime_formatter_spec.rb +1 -1
- data/spec/formatters/numbers/abbreviated/long_decimal_formatter_spec.rb +4 -0
- data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +4 -0
- data/spec/formatters/numbers/currency_formatter_spec.rb +5 -3
- data/spec/localized/localized_date_spec.rb +36 -27
- data/spec/localized/localized_datetime_spec.rb +10 -1
- data/spec/localized/localized_time_spec.rb +11 -1
- data/spec/readme_spec.rb +10 -11
- data/spec/resources/loader_spec.rb +18 -8
- data/spec/shared/currencies_spec.rb +1 -1
- data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +2 -2
- data/twitter_cldr.gemspec +1 -0
- metadata +56 -49
data/Gemfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
source
|
|
1
|
+
source "https://rubygems.org"
|
|
2
2
|
|
|
3
3
|
gemspec
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ end
|
|
|
10
10
|
|
|
11
11
|
group :development do
|
|
12
12
|
gem 'nokogiri'
|
|
13
|
-
gem 'ruby-cldr', :github => '
|
|
13
|
+
gem 'ruby-cldr', :github => 'camertron/ruby-cldr'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
group :test do
|
data/History.txt
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
== 2.4.0
|
|
2
|
+
|
|
3
|
+
* Upgrade to CLDR v23.
|
|
4
|
+
* Ability to disable loading of any custom locale resources.
|
|
5
|
+
* Long and short decimal formatters now respect the :precision option.
|
|
6
|
+
|
|
7
|
+
== 2.3.0
|
|
8
|
+
|
|
9
|
+
* Adding timezone support to date/time formatting.
|
|
10
|
+
* Removing the localize method from Date objects. Call to_date on a LocalizedDateTime or LocalizedTime object instead.
|
|
11
|
+
|
|
1
12
|
== 2.2.0
|
|
2
13
|
|
|
3
14
|
* Relaxing JSON dependency to give users more version flexibility. JSON gem now has no version number in twitter-cldr-rb.
|
data/README.md
CHANGED
|
@@ -89,8 +89,8 @@ In addition to formatting regular decimals, TwitterCLDR supports short and long
|
|
|
89
89
|
`Date`, `Time`, and `DateTime` objects are supported:
|
|
90
90
|
|
|
91
91
|
```ruby
|
|
92
|
-
DateTime.now.localize(:es).to_full_s # "lunes, 12 de diciembre de 2011 21:44:57 UTC -
|
|
93
|
-
DateTime.now.localize(:es).to_long_s # "12 de diciembre de 2011 21:44:57
|
|
92
|
+
DateTime.now.localize(:es).to_full_s # "lunes, 12 de diciembre de 2011 21:44:57 UTC -08:00"
|
|
93
|
+
DateTime.now.localize(:es).to_long_s # "12 de diciembre de 2011 21:44:57 UTC"
|
|
94
94
|
DateTime.now.localize(:es).to_medium_s # "12/12/2011 21:44:57"
|
|
95
95
|
DateTime.now.localize(:es).to_short_s # "12/12/11 21:44"
|
|
96
96
|
|
data/Rakefile
CHANGED
|
@@ -80,7 +80,7 @@ namespace :update do
|
|
|
80
80
|
TwitterCldr::Resources::TailoringImporter.new(
|
|
81
81
|
args[:cldr_path] || './vendor/cldr',
|
|
82
82
|
'./resources/collation/tailoring',
|
|
83
|
-
args[:icu4j_jar_path] ||'./vendor/icu4j-
|
|
83
|
+
args[:icu4j_jar_path] ||'./vendor/icu4j-50_1_1.jar'
|
|
84
84
|
).import(TwitterCldr.supported_locales)
|
|
85
85
|
end
|
|
86
86
|
|
data/lib/twitter_cldr.rb
CHANGED
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
TwitterCldr::Localized::LocalizedNumber.localize(klass)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
[Array,
|
|
10
|
+
[Array, DateTime, String, Symbol, Time, Hash].each do |klass|
|
|
11
11
|
TwitterCldr::Localized::const_get("Localized#{klass}").localize(klass)
|
|
12
12
|
end
|
|
@@ -9,12 +9,12 @@ module TwitterCldr
|
|
|
9
9
|
attr_reader :tokenizer
|
|
10
10
|
|
|
11
11
|
def format(obj, options = {})
|
|
12
|
-
process_tokens(self.get_tokens(obj, options), obj)
|
|
12
|
+
process_tokens(self.get_tokens(obj, options), obj, options)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
protected
|
|
16
16
|
|
|
17
|
-
def process_tokens(tokens, obj)
|
|
17
|
+
def process_tokens(tokens, obj, options = {})
|
|
18
18
|
result = ""
|
|
19
19
|
|
|
20
20
|
tokens.each_with_index do |token, index|
|
|
@@ -22,7 +22,7 @@ module TwitterCldr
|
|
|
22
22
|
when :composite
|
|
23
23
|
result << eval(process_tokens(token.tokens, obj)).to_s
|
|
24
24
|
when :pattern
|
|
25
|
-
result << self.result_for_token(token, index, obj)
|
|
25
|
+
result << self.result_for_token(token, index, obj, options)
|
|
26
26
|
else
|
|
27
27
|
if token.value.size > 0 && token.value[0].chr == "'" && token.value[-1].chr == "'"
|
|
28
28
|
result << token.value[1..-2]
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
# This class has been adapted from Sven Fuch's ruby-cldr gem
|
|
7
7
|
# See LICENSE for the accompanying license for his contributions
|
|
8
8
|
|
|
9
|
+
require 'tzinfo'
|
|
10
|
+
|
|
9
11
|
module TwitterCldr
|
|
10
12
|
module Formatters
|
|
11
13
|
class DateTimeFormatter < Base
|
|
@@ -49,8 +51,8 @@ module TwitterCldr
|
|
|
49
51
|
)
|
|
50
52
|
end
|
|
51
53
|
|
|
52
|
-
def result_for_token(token, index, date)
|
|
53
|
-
self.send(METHODS[token.value[0].chr], date, token.value, token.value.size)
|
|
54
|
+
def result_for_token(token, index, date, options = {})
|
|
55
|
+
self.send(METHODS[token.value[0].chr], date, token.value, token.value.size, options)
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
def additional_format_selector
|
|
@@ -69,7 +71,7 @@ module TwitterCldr
|
|
|
69
71
|
|
|
70
72
|
# there is incomplete era data in CLDR for certain locales like Hindi
|
|
71
73
|
# fall back if that happens
|
|
72
|
-
def era(date, pattern, length)
|
|
74
|
+
def era(date, pattern, length, options = {})
|
|
73
75
|
choices = case length
|
|
74
76
|
when 0
|
|
75
77
|
["", ""]
|
|
@@ -86,22 +88,22 @@ module TwitterCldr
|
|
|
86
88
|
end
|
|
87
89
|
end
|
|
88
90
|
|
|
89
|
-
def year(date, pattern, length)
|
|
91
|
+
def year(date, pattern, length, options = {})
|
|
90
92
|
year = date.year.to_s
|
|
91
93
|
year = year.length == 1 ? year : year[-2, 2] if length == 2
|
|
92
94
|
year = year.rjust(length, '0') if length > 1
|
|
93
95
|
year
|
|
94
96
|
end
|
|
95
97
|
|
|
96
|
-
def year_of_week_of_year(date, pattern, length)
|
|
98
|
+
def year_of_week_of_year(date, pattern, length, options = {})
|
|
97
99
|
raise NotImplementedError
|
|
98
100
|
end
|
|
99
101
|
|
|
100
|
-
def day_of_week_in_month(date, pattern, length) # e.g. 2nd Wed in July
|
|
102
|
+
def day_of_week_in_month(date, pattern, length, options = {}) # e.g. 2nd Wed in July
|
|
101
103
|
raise NotImplementedError
|
|
102
104
|
end
|
|
103
105
|
|
|
104
|
-
def quarter(date, pattern, length)
|
|
106
|
+
def quarter(date, pattern, length, options = {})
|
|
105
107
|
quarter = (date.month.to_i - 1) / 3 + 1
|
|
106
108
|
case length
|
|
107
109
|
when 1
|
|
@@ -115,7 +117,7 @@ module TwitterCldr
|
|
|
115
117
|
end
|
|
116
118
|
end
|
|
117
119
|
|
|
118
|
-
def quarter_stand_alone(date, pattern, length)
|
|
120
|
+
def quarter_stand_alone(date, pattern, length, options = {})
|
|
119
121
|
quarter = (date.month.to_i - 1) / 3 + 1
|
|
120
122
|
case length
|
|
121
123
|
when 1
|
|
@@ -133,7 +135,7 @@ module TwitterCldr
|
|
|
133
135
|
end
|
|
134
136
|
end
|
|
135
137
|
|
|
136
|
-
def month(date, pattern, length)
|
|
138
|
+
def month(date, pattern, length, options = {})
|
|
137
139
|
case length
|
|
138
140
|
when 1
|
|
139
141
|
date.month.to_s
|
|
@@ -151,7 +153,7 @@ module TwitterCldr
|
|
|
151
153
|
end
|
|
152
154
|
end
|
|
153
155
|
|
|
154
|
-
def month_stand_alone(date, pattern, length)
|
|
156
|
+
def month_stand_alone(date, pattern, length, options = {})
|
|
155
157
|
case length
|
|
156
158
|
when 1
|
|
157
159
|
date.month.to_s
|
|
@@ -168,7 +170,7 @@ module TwitterCldr
|
|
|
168
170
|
end
|
|
169
171
|
end
|
|
170
172
|
|
|
171
|
-
def day(date, pattern, length)
|
|
173
|
+
def day(date, pattern, length, options = {})
|
|
172
174
|
case length
|
|
173
175
|
when 1
|
|
174
176
|
date.day.to_s
|
|
@@ -177,7 +179,7 @@ module TwitterCldr
|
|
|
177
179
|
end
|
|
178
180
|
end
|
|
179
181
|
|
|
180
|
-
def weekday(date, pattern, length)
|
|
182
|
+
def weekday(date, pattern, length, options = {})
|
|
181
183
|
key = WEEKDAY_KEYS[date.wday]
|
|
182
184
|
case length
|
|
183
185
|
when 1..3
|
|
@@ -189,7 +191,7 @@ module TwitterCldr
|
|
|
189
191
|
end
|
|
190
192
|
end
|
|
191
193
|
|
|
192
|
-
def weekday_local(date, pattern, length)
|
|
194
|
+
def weekday_local(date, pattern, length, options = {})
|
|
193
195
|
# "Like E except adds a numeric value depending on the local starting day of the week"
|
|
194
196
|
# CLDR does not contain data as to which day is the first day of the week, so we will assume Monday (Ruby default)
|
|
195
197
|
case length
|
|
@@ -200,7 +202,7 @@ module TwitterCldr
|
|
|
200
202
|
end
|
|
201
203
|
end
|
|
202
204
|
|
|
203
|
-
def weekday_local_stand_alone(date, pattern, length)
|
|
205
|
+
def weekday_local_stand_alone(date, pattern, length, options = {})
|
|
204
206
|
case length
|
|
205
207
|
when 1
|
|
206
208
|
weekday_local(date, pattern, length)
|
|
@@ -209,14 +211,14 @@ module TwitterCldr
|
|
|
209
211
|
end
|
|
210
212
|
end
|
|
211
213
|
|
|
212
|
-
def period(time, pattern, length)
|
|
214
|
+
def period(time, pattern, length, options = {})
|
|
213
215
|
# Always use :wide form. Day-period design was changed in CLDR -
|
|
214
216
|
# http://cldr.unicode.org/development/development-process/design-proposals/day-period-design that means some
|
|
215
217
|
# major changes are required for a full support of day periods.
|
|
216
218
|
@tokenizer.calendar[:periods][:format][:wide][time.strftime('%p').downcase.to_sym]
|
|
217
219
|
end
|
|
218
220
|
|
|
219
|
-
def hour(time, pattern, length)
|
|
221
|
+
def hour(time, pattern, length, options = {})
|
|
220
222
|
hour = time.hour
|
|
221
223
|
hour = case pattern[0, 1]
|
|
222
224
|
when 'h' # [1-12]
|
|
@@ -231,29 +233,36 @@ module TwitterCldr
|
|
|
231
233
|
length == 1 ? hour.to_s : hour.to_s.rjust(length, '0')
|
|
232
234
|
end
|
|
233
235
|
|
|
234
|
-
def minute(time, pattern, length)
|
|
236
|
+
def minute(time, pattern, length, options = {})
|
|
235
237
|
length == 1 ? time.min.to_s : time.min.to_s.rjust(length, '0')
|
|
236
238
|
end
|
|
237
239
|
|
|
238
|
-
def second(time, pattern, length)
|
|
240
|
+
def second(time, pattern, length, options = {})
|
|
239
241
|
length == 1 ? time.sec.to_s : time.sec.to_s.rjust(length, '0')
|
|
240
242
|
end
|
|
241
243
|
|
|
242
|
-
def second_fraction(time, pattern, length)
|
|
244
|
+
def second_fraction(time, pattern, length, options = {})
|
|
243
245
|
raise ArgumentError.new('can not use the S format with more than 6 digits') if length > 6
|
|
244
246
|
(time.usec.to_f / 10 ** (6 - length)).round.to_s.rjust(length, '0')
|
|
245
247
|
end
|
|
246
248
|
|
|
247
|
-
def timezone(time, pattern, length)
|
|
249
|
+
def timezone(time, pattern, length, options = {})
|
|
250
|
+
# ruby is dumb and doesn't let you set non-UTC timezones in dates/times, so we have to pass it as an option instead
|
|
251
|
+
timezone_info = TZInfo::Timezone.get(options[:timezone] || "UTC")
|
|
252
|
+
|
|
248
253
|
case length
|
|
249
254
|
when 1..3
|
|
250
|
-
|
|
255
|
+
timezone_info.current_period.abbreviation.to_s
|
|
251
256
|
else
|
|
252
|
-
|
|
257
|
+
hours = (timezone_info.current_period.utc_offset.to_f / 60 ** 2).abs
|
|
258
|
+
divisor = hours.to_i
|
|
259
|
+
minutes = (hours % (divisor == 0 ? 1 : divisor)) * 60
|
|
260
|
+
sign = timezone_info.current_period.utc_offset < 0 ? "-" : "+"
|
|
261
|
+
"UTC #{sign}#{divisor.to_s.rjust(2, "0")}:#{minutes.floor.to_s.rjust(2, "0")}"
|
|
253
262
|
end
|
|
254
263
|
end
|
|
255
264
|
|
|
256
|
-
def timezone_generic_non_location(time, pattern, length)
|
|
265
|
+
def timezone_generic_non_location(time, pattern, length, options = {})
|
|
257
266
|
raise NotImplementedError, 'requires timezone translation data'
|
|
258
267
|
end
|
|
259
268
|
end
|
|
@@ -36,8 +36,9 @@ module TwitterCldr
|
|
|
36
36
|
|
|
37
37
|
def transform_number(number)
|
|
38
38
|
if (number < NUMBER_MAX) && (number >= NUMBER_MIN)
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
power = (((number.to_s.length - 1) / 3) * 3).floor
|
|
40
|
+
factor = (10 ** power).to_f
|
|
41
|
+
number / factor
|
|
41
42
|
else
|
|
42
43
|
number
|
|
43
44
|
end
|
|
@@ -7,26 +7,45 @@ module TwitterCldr
|
|
|
7
7
|
module Localized
|
|
8
8
|
|
|
9
9
|
class LocalizedDate < LocalizedDateTime
|
|
10
|
-
def to_datetime(time)
|
|
11
|
-
|
|
12
|
-
LocalizedDateTime.new(
|
|
10
|
+
def to_datetime(time = Time.now)
|
|
11
|
+
dt = DateTime.parse("#{@base_obj.strftime("%Y-%m-%d")}T#{unwrap_time_obj(time).strftime("%H:%M:%S%z")}")
|
|
12
|
+
LocalizedDateTime.new(dt, @locale, chain_params)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def to_time(base = Time.now)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
case @base_obj
|
|
17
|
+
when Time
|
|
18
|
+
LocalizedTime.new(@base_obj, @locale, chain_params)
|
|
19
|
+
when DateTime
|
|
20
|
+
utc_dt = @base_obj.new_offset(0)
|
|
21
|
+
|
|
22
|
+
time = Time.gm(
|
|
23
|
+
utc_dt.year,
|
|
24
|
+
utc_dt.month,
|
|
25
|
+
utc_dt.day,
|
|
26
|
+
utc_dt.hour,
|
|
27
|
+
utc_dt.min,
|
|
28
|
+
utc_dt.sec,
|
|
29
|
+
utc_dt.sec_fraction * (RUBY_VERSION < '1.9' ? 86400000000 : 1000000)
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
LocalizedTime.new(time, @locale, chain_params)
|
|
33
|
+
else
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
26
36
|
end
|
|
27
37
|
|
|
28
38
|
protected
|
|
29
39
|
|
|
40
|
+
def unwrap_time_obj(time)
|
|
41
|
+
time.is_a?(LocalizedTime) ? time.base_obj : time
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def base_in_timezone
|
|
45
|
+
time = unwrap_time_obj(to_time)
|
|
46
|
+
timezone_info.utc_to_local(time.is_a?(DateTime) ? time.new_offset(0) : time.utc)
|
|
47
|
+
end
|
|
48
|
+
|
|
30
49
|
def formatter_const
|
|
31
50
|
TwitterCldr::Formatters::DateFormatter
|
|
32
51
|
end
|
|
@@ -3,20 +3,23 @@
|
|
|
3
3
|
# Copyright 2012 Twitter, Inc
|
|
4
4
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
|
|
6
|
+
require 'tzinfo'
|
|
7
|
+
|
|
6
8
|
module TwitterCldr
|
|
7
9
|
module Localized
|
|
8
10
|
|
|
9
11
|
class LocalizedDateTime < LocalizedObject
|
|
10
|
-
attr_reader :calendar_type
|
|
12
|
+
attr_reader :calendar_type, :timezone
|
|
11
13
|
|
|
12
14
|
def initialize(obj, locale, options = {})
|
|
13
15
|
super
|
|
14
16
|
@calendar_type = options[:calendar_type] || TwitterCldr::DEFAULT_CALENDAR_TYPE
|
|
17
|
+
@timezone = options[:timezone] || "UTC"
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
TwitterCldr::Tokenizers::DateTimeTokenizer::VALID_TYPES.each do |format_type|
|
|
18
21
|
define_method "to_#{format_type}_s" do
|
|
19
|
-
@formatter.format(
|
|
22
|
+
@formatter.format(base_in_timezone, chain_params.merge(:type => format_type.to_sym))
|
|
20
23
|
end
|
|
21
24
|
end
|
|
22
25
|
|
|
@@ -42,15 +45,14 @@ module TwitterCldr
|
|
|
42
45
|
|
|
43
46
|
def to_s(options = {})
|
|
44
47
|
if options[:format]
|
|
45
|
-
@formatter.format(
|
|
48
|
+
@formatter.format(base_in_timezone, options.merge(:type => :additional))
|
|
46
49
|
else
|
|
47
50
|
to_default_s
|
|
48
51
|
end
|
|
49
52
|
end
|
|
50
53
|
|
|
51
54
|
def to_date
|
|
52
|
-
|
|
53
|
-
LocalizedDate.new(date, @locale, :calendar_type => @calendar_type)
|
|
55
|
+
LocalizedDate.new(@base_obj, @locale, chain_params)
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
def to_time(base = Time.now)
|
|
@@ -66,14 +68,30 @@ module TwitterCldr
|
|
|
66
68
|
utc_dt.sec_fraction * (RUBY_VERSION < '1.9' ? 86400000000 : 1000000)
|
|
67
69
|
)
|
|
68
70
|
|
|
69
|
-
LocalizedTime.new(time, @locale,
|
|
71
|
+
LocalizedTime.new(time, @locale, chain_params)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def with_timezone(timezone)
|
|
75
|
+
self.class.new(@base_obj, @locale, chain_params.merge(:timezone => timezone))
|
|
70
76
|
end
|
|
71
77
|
|
|
72
78
|
protected
|
|
73
79
|
|
|
80
|
+
def chain_params
|
|
81
|
+
{ :calendar_type => @calendar_type, :timezone => @timezone }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def base_in_timezone
|
|
85
|
+
timezone_info.utc_to_local(@base_obj.new_offset(0))
|
|
86
|
+
end
|
|
87
|
+
|
|
74
88
|
def formatter_const
|
|
75
89
|
TwitterCldr::Formatters::DateTimeFormatter
|
|
76
90
|
end
|
|
91
|
+
|
|
92
|
+
def timezone_info
|
|
93
|
+
(@@timezone_info ||= {})[@timezone] ||= TZInfo::Timezone.get(@timezone)
|
|
94
|
+
end
|
|
77
95
|
end
|
|
78
96
|
|
|
79
97
|
end
|
|
@@ -9,23 +9,32 @@ module TwitterCldr
|
|
|
9
9
|
class LocalizedTime < LocalizedDateTime
|
|
10
10
|
def to_datetime(date)
|
|
11
11
|
date_obj = date.is_a?(LocalizedDate) ? date.base_obj : date
|
|
12
|
-
|
|
12
|
+
dt = DateTime.parse("#{date_obj.strftime("%Y-%m-%d")}T#{@base_obj.strftime("%H:%M:%S%z")}")
|
|
13
|
+
LocalizedDateTime.new(dt, @locale, chain_params)
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def to_time(base_time = Time.now)
|
|
16
17
|
self
|
|
17
18
|
end
|
|
18
19
|
|
|
20
|
+
def to_date
|
|
21
|
+
LocalizedDate.new(@base_obj, @locale, chain_params)
|
|
22
|
+
end
|
|
23
|
+
|
|
19
24
|
def gmtime
|
|
20
|
-
LocalizedTime.new(@base_obj.gmtime, @locale,
|
|
25
|
+
LocalizedTime.new(@base_obj.gmtime, @locale, chain_params)
|
|
21
26
|
end
|
|
22
27
|
|
|
23
28
|
def localtime
|
|
24
|
-
LocalizedTime.new(@base_obj.localtime, @locale,
|
|
29
|
+
LocalizedTime.new(@base_obj.localtime, @locale, chain_params)
|
|
25
30
|
end
|
|
26
31
|
|
|
27
32
|
protected
|
|
28
33
|
|
|
34
|
+
def base_in_timezone
|
|
35
|
+
timezone_info.utc_to_local(@base_obj.utc)
|
|
36
|
+
end
|
|
37
|
+
|
|
29
38
|
def formatter_const
|
|
30
39
|
TwitterCldr::Formatters::TimeFormatter
|
|
31
40
|
end
|