ruby-cldr 0.1.0 → 0.5.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +53 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +56 -46
- data/README.textile +8 -0
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/cldr/download.rb +1 -1
- data/lib/cldr/export.rb +74 -16
- data/lib/cldr/export/data.rb +34 -21
- data/lib/cldr/export/data/aliases.rb +47 -0
- data/lib/cldr/export/data/base.rb +4 -0
- data/lib/cldr/export/data/characters.rb +30 -0
- data/lib/cldr/export/data/country_codes.rb +29 -0
- data/lib/cldr/export/data/currencies.rb +13 -3
- data/lib/cldr/export/data/fields.rb +60 -0
- data/lib/cldr/export/data/languages.rb +1 -1
- data/lib/cldr/export/data/likely_subtags.rb +29 -0
- data/lib/cldr/export/data/numbers.rb +48 -6
- data/lib/cldr/export/data/parent_locales.rb +23 -0
- data/lib/cldr/export/data/plural_rules.rb +70 -0
- data/lib/cldr/export/data/plurals/rules.rb +12 -1
- data/lib/cldr/export/data/rbnf.rb +12 -4
- data/lib/cldr/export/data/region_currencies.rb +45 -0
- data/lib/cldr/export/data/segments_root.rb +61 -0
- data/lib/cldr/export/data/subdivisions.rb +35 -0
- data/lib/cldr/export/data/territories.rb +1 -1
- data/lib/cldr/export/data/territories_containment.rb +30 -0
- data/lib/cldr/export/data/timezones.rb +18 -2
- data/lib/cldr/export/data/transforms.rb +76 -0
- data/lib/cldr/export/data/variables.rb +42 -0
- data/lib/cldr/export/yaml.rb +5 -21
- data/lib/cldr/thor.rb +2 -2
- data/ruby-cldr.gemspec +157 -0
- data/test/export/data/calendars_test.rb +102 -52
- data/test/export/data/country_codes_test.rb +21 -0
- data/test/export/data/currencies_test.rb +40 -26
- data/test/export/data/languages_test.rb +69 -51
- data/test/export/data/numbers_test.rb +61 -62
- data/test/export/data/plurals_test.rb +10 -3
- data/test/export/data/subdivisions_test.rb +33 -0
- data/test/export/data/territories_containment_test.rb +10 -0
- data/test/export/data/territories_test.rb +12 -5
- data/test/export/data/timezones_test.rb +5 -8
- data/test/export_test.rb +57 -5
- data/test/format/time_test.rb +5 -5
- metadata +51 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '08d81c0b6ee1d96ffa243d2ebf097de3daf26cbfdaa017e461bf57019fa6f2c3'
|
4
|
+
data.tar.gz: 623a6819224e69f397169989b3aafe7e63a348d2a2f579f4e3375d6853f2b70d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3e3a11bbf75be01de319dfe8a5941ac0c4cfe2f7d8526484de7b7ce9b4449d9bbc0edc4d857b442047f8b57e2e6c198f19532f13b1ef2b17fe3cabf84a908bb
|
7
|
+
data.tar.gz: 4c1f2d8503207ae9fdc5ec626b7441f89d98ccd505acb9ba43f536522ea9a392bd5cca2ba7ab964ee6d5dad88429571f8a97612eff83423b0ecc17da00743d5c
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
5
|
+
|
6
|
+
## How do I make a good changelog?
|
7
|
+
### Guiding Principles
|
8
|
+
- Changelogs are for humans, not machines.
|
9
|
+
- There should be an entry for every single version.
|
10
|
+
- The same types of changes should be grouped.
|
11
|
+
- Versions and sections should be linkable.
|
12
|
+
- The latest version comes first.
|
13
|
+
- The release date of each version is displayed.
|
14
|
+
- Mention whether you follow Semantic Versioning.
|
15
|
+
|
16
|
+
### Types of changes
|
17
|
+
- Added for new features.
|
18
|
+
- Changed for changes in existing functionality.
|
19
|
+
- Deprecated for soon-to-be removed features.
|
20
|
+
- Removed for now removed features.
|
21
|
+
- Fixed for any bug fixes.
|
22
|
+
- Security in case of vulnerabilities.
|
23
|
+
|
24
|
+
## [Unreleased]
|
25
|
+
|
26
|
+
---
|
27
|
+
|
28
|
+
## [0.2.0] - 2019-03-26
|
29
|
+
|
30
|
+
- Updated to CLDR 34 [#43](https://github.com/ruby-i18n/ruby-cldr/pull/43)
|
31
|
+
- Lots of [other changes](https://github.com/ruby-i18n/ruby-cldr/compare/v0.1.1...v0.2.0)
|
32
|
+
|
33
|
+
## [0.3.0] - 2019-06-16
|
34
|
+
|
35
|
+
- Export currency names [#51](https://github.com/ruby-i18n/ruby-cldr/pull/51)
|
36
|
+
- Bring back root fallback for english [#47](https://github.com/ruby-i18n/ruby-cldr/pull/47)
|
37
|
+
- Export subdivisions [#46](https://github.com/ruby-i18n/ruby-cldr/pull/46)
|
38
|
+
|
39
|
+
## [0.4.0] - 2020-09-01
|
40
|
+
|
41
|
+
- Support pluralization codes with missing spaces [#53](https://github.com/ruby-i18n/ruby-cldr/pull/53)
|
42
|
+
- Add in functionality to export country codes [#61](https://github.com/ruby-i18n/ruby-cldr/pull/61)
|
43
|
+
|
44
|
+
## [0.5.0] - 2020-11-20
|
45
|
+
|
46
|
+
- Added a changelog, [#49](https://github.com/ruby-i18n/ruby-cldr/pull/49)
|
47
|
+
- Added Travis CI for testing, [#48](https://github.com/ruby-i18n/ruby-cldr/pull/48)
|
48
|
+
- Added root fallback to en language, [#47](https://github.com/ruby-i18n/ruby-cldr/pull/47)
|
49
|
+
- Added subdivisions to the list of exportable components, [#46](https://github.com/ruby-i18n/ruby-cldr/pull/46)
|
50
|
+
- Added country codes as an exportable component, [#61](https://github.com/ruby-i18n/ruby-cldr/pull/61)
|
51
|
+
- Added narrow symbols to exported currency data, [#64](https://github.com/ruby-i18n/ruby-cldr/pull/64)
|
52
|
+
|
53
|
+
[Unreleased]: https://github.com/ruby-i18n/ruby-cldr/compare/v0.5.0...HEAD
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,63 +1,70 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
addressable (2.
|
5
|
-
builder (3.2.
|
6
|
-
coderay (1.
|
7
|
-
|
8
|
-
|
4
|
+
addressable (2.4.0)
|
5
|
+
builder (3.2.3)
|
6
|
+
coderay (1.1.2)
|
7
|
+
concurrent-ruby (1.1.4)
|
8
|
+
descendants_tracker (0.0.4)
|
9
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
10
|
+
faraday (0.9.2)
|
9
11
|
multipart-post (>= 1.2, < 3)
|
10
|
-
git (1.
|
11
|
-
github_api (0.
|
12
|
-
addressable (~> 2.
|
13
|
-
descendants_tracker (~> 0.0.
|
12
|
+
git (1.5.0)
|
13
|
+
github_api (0.16.0)
|
14
|
+
addressable (~> 2.4.0)
|
15
|
+
descendants_tracker (~> 0.0.4)
|
14
16
|
faraday (~> 0.8, < 0.10)
|
15
|
-
hashie (>=
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
jeweler (2.
|
17
|
+
hashie (>= 3.4)
|
18
|
+
mime-types (>= 1.16, < 3.0)
|
19
|
+
oauth2 (~> 1.0)
|
20
|
+
hashie (3.6.0)
|
21
|
+
highline (2.0.1)
|
22
|
+
i18n (1.5.3)
|
23
|
+
concurrent-ruby (~> 1.0)
|
24
|
+
jeweler (2.3.9)
|
23
25
|
builder
|
24
|
-
bundler
|
26
|
+
bundler
|
25
27
|
git (>= 1.2.5)
|
26
|
-
github_api
|
28
|
+
github_api (~> 0.16.0)
|
27
29
|
highline (>= 1.6.15)
|
28
30
|
nokogiri (>= 1.5.10)
|
31
|
+
psych
|
29
32
|
rake
|
30
33
|
rdoc
|
31
|
-
|
32
|
-
jwt (
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
multi_json (1.
|
37
|
-
multi_xml (0.
|
34
|
+
semver2
|
35
|
+
jwt (2.1.0)
|
36
|
+
method_source (0.8.2)
|
37
|
+
mime-types (2.99.3)
|
38
|
+
mini_portile2 (2.4.0)
|
39
|
+
multi_json (1.13.1)
|
40
|
+
multi_xml (0.6.0)
|
38
41
|
multipart-post (2.0.0)
|
39
|
-
nokogiri (1.
|
40
|
-
|
41
|
-
oauth2 (
|
42
|
-
faraday (>= 0.8, < 0.
|
43
|
-
jwt (
|
42
|
+
nokogiri (1.10.8)
|
43
|
+
mini_portile2 (~> 2.4.0)
|
44
|
+
oauth2 (1.4.1)
|
45
|
+
faraday (>= 0.8, < 0.16.0)
|
46
|
+
jwt (>= 1.0, < 3.0)
|
44
47
|
multi_json (~> 1.3)
|
45
48
|
multi_xml (~> 0.5)
|
46
|
-
rack (
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
rack (>= 1.2, < 3)
|
50
|
+
power_assert (1.1.3)
|
51
|
+
pry (0.10.4)
|
52
|
+
coderay (~> 1.1.0)
|
53
|
+
method_source (~> 0.8.1)
|
50
54
|
slop (~> 3.4)
|
51
|
-
pry-nav (0.2.
|
52
|
-
pry (
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
rubyzip (1.
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
pry-nav (0.2.4)
|
56
|
+
pry (>= 0.9.10, < 0.11.0)
|
57
|
+
psych (3.1.0)
|
58
|
+
rack (2.2.3)
|
59
|
+
rake (13.0.1)
|
60
|
+
rdoc (6.1.1)
|
61
|
+
rubyzip (1.3.0)
|
62
|
+
semver2 (3.4.2)
|
63
|
+
slop (3.6.0)
|
64
|
+
test-unit (3.3.0)
|
65
|
+
power_assert
|
66
|
+
thor (0.20.3)
|
67
|
+
thread_safe (0.3.6)
|
61
68
|
|
62
69
|
PLATFORMS
|
63
70
|
ruby
|
@@ -69,5 +76,8 @@ DEPENDENCIES
|
|
69
76
|
pry
|
70
77
|
pry-nav
|
71
78
|
rubyzip
|
79
|
+
test-unit
|
72
80
|
thor
|
73
|
-
|
81
|
+
|
82
|
+
BUNDLED WITH
|
83
|
+
2.1.4
|
data/README.textile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
h1. Ruby library for exporting and using data from CLDR
|
2
2
|
|
3
|
+
!https://travis-ci.com/ruby-i18n/ruby-cldr.svg?branch=master!:https://travis-ci.com/ruby-i18n/ruby-cldr
|
4
|
+
|
3
5
|
CLDR ("Common Locale Data Repository":http://cldr.unicode.org) contains tons of high-quality locale data such as formatting rules for dates, times, numbers, currencies as well as language, country, calendar-specific names etc.
|
4
6
|
|
5
7
|
For localizing applications in Ruby we'll obviously be able to use this incredibly comprehensive and well-maintained resource.
|
@@ -98,6 +100,12 @@ E.g.:
|
|
98
100
|
# => "12. November 2010 13:14"
|
99
101
|
</pre>
|
100
102
|
|
103
|
+
h2. Tests
|
104
|
+
|
105
|
+
<pre>
|
106
|
+
bundle exec ruby test/all.rb
|
107
|
+
</pre>
|
108
|
+
|
101
109
|
h2. Resources
|
102
110
|
|
103
111
|
For additional information on CLDR plural rules see:
|
data/Rakefile
CHANGED
@@ -8,11 +8,11 @@ begin
|
|
8
8
|
gem.summary = %Q{Ruby library for exporting and using data from CLDR }
|
9
9
|
gem.description = %Q{Ruby library for exporting and using data from CLDR, see http://cldr.unicode.org}
|
10
10
|
gem.email = "svenfuchs@artweb-design.de"
|
11
|
-
gem.homepage = "http://github.com/
|
11
|
+
gem.homepage = "http://github.com/ruby-i18n/ruby-cldr"
|
12
12
|
gem.authors = ["Sven Fuchs"]
|
13
13
|
gem.files = FileList["*.thor", "[A-Z]*", "{lib,test}/**/*"]
|
14
14
|
end
|
15
15
|
Jeweler::GemcutterTasks.new
|
16
16
|
rescue LoadError
|
17
17
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
18
|
-
end
|
18
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/cldr/download.rb
CHANGED
@@ -5,7 +5,7 @@ require 'zip'
|
|
5
5
|
module Cldr
|
6
6
|
class << self
|
7
7
|
def download(source = nil, target = nil)
|
8
|
-
source ||= 'http://unicode.org/Public/cldr/
|
8
|
+
source ||= 'http://unicode.org/Public/cldr/34/core.zip'
|
9
9
|
target ||= File.expand_path('./vendor/cldr')
|
10
10
|
|
11
11
|
URI.parse(source).open do |tempfile|
|
data/lib/cldr/export.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'i18n'
|
2
|
-
require '
|
2
|
+
require 'fileutils'
|
3
|
+
require 'i18n/locale/tag'
|
3
4
|
require 'core_ext/string/camelize'
|
4
5
|
require 'core_ext/string/underscore'
|
5
6
|
require 'core_ext/hash/deep_stringify_keys'
|
@@ -12,12 +13,20 @@ module Cldr
|
|
12
13
|
autoload :Ruby, 'cldr/export/ruby'
|
13
14
|
autoload :Yaml, 'cldr/export/yaml'
|
14
15
|
|
15
|
-
SHARED_COMPONENTS = [
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
SHARED_COMPONENTS = %w[
|
17
|
+
CountryCodes
|
18
|
+
CurrencyDigitsAndRounding
|
19
|
+
Metazones
|
20
|
+
NumberingSystems
|
21
|
+
RbnfRoot
|
22
|
+
SegmentsRoot
|
23
|
+
TerritoriesContainment
|
24
|
+
WindowsZones
|
25
|
+
Transforms
|
26
|
+
LikelySubtags
|
27
|
+
Variables
|
28
|
+
Aliases
|
29
|
+
RegionCurrencies
|
21
30
|
]
|
22
31
|
|
23
32
|
class << self
|
@@ -39,8 +48,23 @@ module Cldr
|
|
39
48
|
end
|
40
49
|
|
41
50
|
shared_components.each do |component|
|
42
|
-
|
43
|
-
|
51
|
+
case component
|
52
|
+
when "Transforms"
|
53
|
+
yaml_exporter = Cldr::Export::Yaml.new
|
54
|
+
Dir.glob("#{Cldr::Export::Data.dir}/transforms/**.xml").each do |transform_file|
|
55
|
+
data = Data::Transforms.new(transform_file)
|
56
|
+
source = data[:transforms].first[:source]
|
57
|
+
target = data[:transforms].first[:target]
|
58
|
+
variant = data[:transforms].first[:variant]
|
59
|
+
file_name = [source, target, variant].compact.join('-')
|
60
|
+
output_path = File.join(base_path, "transforms", "#{file_name}.yml")
|
61
|
+
write(output_path, yaml_exporter.yaml(data))
|
62
|
+
yield component, nil, output_path if block_given?
|
63
|
+
end
|
64
|
+
else
|
65
|
+
ex = exporter(component, options[:format])
|
66
|
+
ex.export('', component, options, &block)
|
67
|
+
end
|
44
68
|
end
|
45
69
|
|
46
70
|
locales.each do |locale|
|
@@ -88,13 +112,45 @@ module Cldr
|
|
88
112
|
end
|
89
113
|
|
90
114
|
def shared_data(component, options = {})
|
91
|
-
|
115
|
+
case component.to_s
|
116
|
+
when 'Transforms'
|
117
|
+
# do nothing, this has to be handled separately
|
118
|
+
else
|
119
|
+
Data.const_get(component.to_s.camelize).new
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def to_i18n(locale)
|
124
|
+
return locale.to_s.gsub('_', '-').to_sym
|
125
|
+
end
|
126
|
+
|
127
|
+
def from_i18n(locale)
|
128
|
+
return locale.to_s.gsub('-', '_')
|
92
129
|
end
|
93
130
|
|
94
131
|
def locales(locale, component, options)
|
95
|
-
locale = locale
|
96
|
-
|
97
|
-
locales
|
132
|
+
locale = to_i18n(locale)
|
133
|
+
|
134
|
+
locales = if options[:merge]
|
135
|
+
defined_parents = Cldr::Export::Data::ParentLocales.new
|
136
|
+
|
137
|
+
ancestry = [locale]
|
138
|
+
loop do
|
139
|
+
if defined_parents[from_i18n(ancestry.last)]
|
140
|
+
ancestry << to_i18n(defined_parents[from_i18n(ancestry.last)])
|
141
|
+
elsif I18n::Locale::Tag.tag(ancestry.last).self_and_parents.count > 1
|
142
|
+
ancestry << I18n::Locale::Tag.tag(ancestry.last).self_and_parents.last.to_sym
|
143
|
+
else
|
144
|
+
break
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
ancestry
|
149
|
+
else
|
150
|
+
[locale]
|
151
|
+
end
|
152
|
+
|
153
|
+
locales << :root if should_merge_root?(locale, component, options)
|
98
154
|
locales
|
99
155
|
end
|
100
156
|
|
@@ -115,9 +171,11 @@ module Cldr
|
|
115
171
|
SHARED_COMPONENTS.include?(component)
|
116
172
|
end
|
117
173
|
|
118
|
-
def
|
119
|
-
|
174
|
+
def should_merge_root?(locale, component, options)
|
175
|
+
return false if %w(Rbnf Fields).include?(component)
|
176
|
+
return true if options[:merge]
|
177
|
+
locale == :en
|
120
178
|
end
|
121
179
|
end
|
122
180
|
end
|
123
|
-
end
|
181
|
+
end
|
data/lib/cldr/export/data.rb
CHANGED
@@ -3,30 +3,43 @@ require 'core_ext/string/camelize'
|
|
3
3
|
module Cldr
|
4
4
|
module Export
|
5
5
|
module Data
|
6
|
-
autoload :
|
7
|
-
autoload :
|
8
|
-
autoload :
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :
|
16
|
-
autoload :
|
17
|
-
autoload :
|
18
|
-
autoload :
|
19
|
-
autoload :
|
20
|
-
autoload :
|
21
|
-
autoload :
|
22
|
-
autoload :
|
23
|
-
autoload :
|
6
|
+
autoload :Aliases, 'cldr/export/data/aliases'
|
7
|
+
autoload :Base, 'cldr/export/data/base'
|
8
|
+
autoload :Calendars, 'cldr/export/data/calendars'
|
9
|
+
autoload :Characters, 'cldr/export/data/characters'
|
10
|
+
autoload :CountryCodes, 'cldr/export/data/country_codes'
|
11
|
+
autoload :Currencies, 'cldr/export/data/currencies'
|
12
|
+
autoload :CurrencyDigitsAndRounding, 'cldr/export/data/currency_digits_and_rounding'
|
13
|
+
autoload :Delimiters, 'cldr/export/data/delimiters'
|
14
|
+
autoload :Fields, 'cldr/export/data/fields'
|
15
|
+
autoload :Languages, 'cldr/export/data/languages'
|
16
|
+
autoload :Layout, 'cldr/export/data/layout'
|
17
|
+
autoload :LikelySubtags, 'cldr/export/data/likely_subtags'
|
18
|
+
autoload :Lists, 'cldr/export/data/lists'
|
19
|
+
autoload :Metazones, 'cldr/export/data/metazones'
|
20
|
+
autoload :NumberingSystems, 'cldr/export/data/numbering_systems'
|
21
|
+
autoload :Numbers, 'cldr/export/data/numbers'
|
22
|
+
autoload :ParentLocales, 'cldr/export/data/parent_locales'
|
23
|
+
autoload :Plurals, 'cldr/export/data/plurals'
|
24
|
+
autoload :PluralRules, 'cldr/export/data/plural_rules'
|
25
|
+
autoload :Rbnf, 'cldr/export/data/rbnf'
|
26
|
+
autoload :RbnfRoot, 'cldr/export/data/rbnf_root'
|
27
|
+
autoload :RegionCurrencies, 'cldr/export/data/region_currencies'
|
28
|
+
autoload :SegmentsRoot, 'cldr/export/data/segments_root'
|
29
|
+
autoload :Subdivisions, 'cldr/export/data/subdivisions'
|
30
|
+
autoload :Territories, 'cldr/export/data/territories'
|
31
|
+
autoload :TerritoriesContainment, 'cldr/export/data/territories_containment'
|
32
|
+
autoload :Timezones, 'cldr/export/data/timezones'
|
33
|
+
autoload :Units, 'cldr/export/data/units'
|
34
|
+
autoload :Variables, 'cldr/export/data/variables'
|
35
|
+
autoload :WindowsZones, 'cldr/export/data/windows_zones'
|
36
|
+
autoload :Transforms, 'cldr/export/data/transforms'
|
24
37
|
|
25
38
|
class << self
|
26
39
|
def dir
|
27
40
|
@dir ||= File.expand_path('./vendor/cldr/common')
|
28
41
|
end
|
29
|
-
|
42
|
+
|
30
43
|
def dir=(dir)
|
31
44
|
@dir = dir
|
32
45
|
end
|
@@ -36,9 +49,9 @@ module Cldr
|
|
36
49
|
end
|
37
50
|
|
38
51
|
def components
|
39
|
-
self.constants.sort - [:Base, :Export]
|
52
|
+
self.constants.sort - [:Base, :Export, :ParentLocales]
|
40
53
|
end
|
41
54
|
end
|
42
55
|
end
|
43
56
|
end
|
44
|
-
end
|
57
|
+
end
|