Skip to content
This repository
Browse code

Merging latest master

  • Loading branch information...
commit f78beb0d5dcb5acb613f9ce92e211e336e704547 2 parents 1c1f8eb + 22a1910
authored November 15, 2012

Showing 61 changed files with 30,261 additions and 94 deletions. Show diff stats Hide diff stats

  1. 5  Gemfile
  2. 41  Rakefile
  3. 27  lib/twitter_cldr/formatters/numbers/currency_formatter.rb
  4. 4  lib/twitter_cldr/formatters/numbers/decimal_formatter.rb
  5. 20  lib/twitter_cldr/formatters/numbers/number_formatter.rb
  6. 4  lib/twitter_cldr/formatters/numbers/percent_formatter.rb
  7. 26  lib/twitter_cldr/resources.rb
  8. 16  lib/twitter_cldr/resources/locales_resources_importer.rb
  9. 33  lib/twitter_cldr/shared/currencies.rb
  10. 351  resources/locales/af/currencies.yml
  11. 1,463  resources/locales/ar/currencies.yml
  12. 66  resources/locales/be/currencies.yml
  13. 756  resources/locales/bg/currencies.yml
  14. 561  resources/locales/bn/currencies.yml
  15. 898  resources/locales/ca/currencies.yml
  16. 1,053  resources/locales/cs/currencies.yml
  17. 54  resources/locales/cy/currencies.yml
  18. 810  resources/locales/da/currencies.yml
  19. 835  resources/locales/de/currencies.yml
  20. 863  resources/locales/el/currencies.yml
  21. 905  resources/locales/en/currencies.yml
  22. 817  resources/locales/es/currencies.yml
  23. 336  resources/locales/eu/currencies.yml
  24. 443  resources/locales/fa/currencies.yml
  25. 900  resources/locales/fi/currencies.yml
  26. 347  resources/locales/fil/currencies.yml
  27. 903  resources/locales/fr/currencies.yml
  28. 511  resources/locales/ga/currencies.yml
  29. 467  resources/locales/gl/currencies.yml
  30. 470  resources/locales/he/currencies.yml
  31. 378  resources/locales/hi/currencies.yml
  32. 637  resources/locales/hu/currencies.yml
  33. 391  resources/locales/id/currencies.yml
  34. 714  resources/locales/it/currencies.yml
  35. 566  resources/locales/ja/currencies.yml
  36. 562  resources/locales/ko/currencies.yml
  37. 512  resources/locales/lv/currencies.yml
  38. 335  resources/locales/ms/currencies.yml
  39. 755  resources/locales/nb/currencies.yml
  40. 583  resources/locales/nl/currencies.yml
  41. 1,049  resources/locales/pl/currencies.yml
  42. 901  resources/locales/pt/currencies.yml
  43. 937  resources/locales/ro/currencies.yml
  44. 1,044  resources/locales/ru/currencies.yml
  45. 577  resources/locales/sk/currencies.yml
  46. 56  resources/locales/sq/currencies.yml
  47. 1,489  resources/locales/sr/currencies.yml
  48. 903  resources/locales/sv/currencies.yml
  49. 334  resources/locales/ta/currencies.yml
  50. 566  resources/locales/th/currencies.yml
  51. 569  resources/locales/tr/currencies.yml
  52. 786  resources/locales/uk/currencies.yml
  53. 349  resources/locales/ur/currencies.yml
  54. 558  resources/locales/zh-Hant/currencies.yml
  55. 558  resources/locales/zh/currencies.yml
  56. 187  resources/shared/currency_digits_and_rounding.yml
  57. 11  spec/formatters/numbers/currency_formatter_spec.rb
  58. 6  spec/readme_spec.rb
  59. 16  spec/shared/currencies_spec.rb
  60. 7  spec/spec_helper.rb
  61. 34  spec/utils/yaml/yaml_spec.rb
5  Gemfile
@@ -21,5 +21,10 @@ group :test do
21 21
   platform :mri_18 do
22 22
     gem 'rcov'
23 23
   end
  24
+
  25
+  platform :mri_19 do
  26
+    gem 'simplecov'
  27
+    gem 'launchy'
  28
+  end
24 29
 end
25 30
 
41  Rakefile
@@ -32,11 +32,32 @@ namespace :spec do
32 32
 end
33 33
 
34 34
 if RUBY_VERSION < '1.9.0'
35  
-  desc 'Run all examples with RCov'
36  
-  RSpec::Core::RakeTask.new('spec:rcov') do |t|
37  
-    t.rcov      = true
38  
-    t.pattern   = './spec/**/*_spec.rb'
39  
-    t.rcov_opts = %w(-T --sort coverage --exclude gems/,spec/)
  35
+  desc 'Run specs with RCov'
  36
+  RSpec::Core::RakeTask.new('spec:cov') do |t|
  37
+    t.rcov       = true
  38
+    t.pattern    = './spec/**/*_spec.rb'
  39
+    t.rcov_opts  = '-T --sort coverage --exclude gems/,spec/'
  40
+  end
  41
+
  42
+  desc 'Run full specs suit with RCov'
  43
+  task 'spec:cov:full' => %w[spec:full_spec_env spec:cov]
  44
+else
  45
+  namespace :spec do
  46
+    desc 'Run specs with SimpleCov'
  47
+    task :cov => ['spec:simplecov_env', :spec] do
  48
+      require 'launchy'
  49
+      Launchy.open 'coverage/index.html'
  50
+    end
  51
+
  52
+    desc 'Run full specs suit with SimpleCov'
  53
+    task 'cov:full' => %w[spec:full_spec_env spec:cov]
  54
+
  55
+    task :simplecov_env do
  56
+      puts 'Cleaning up coverage reports'
  57
+      rm_rf 'coverage'
  58
+
  59
+      ENV['SCOV'] = 'true'
  60
+    end
40 61
   end
41 62
 end
42 63
 
@@ -45,7 +66,7 @@ namespace :update do
45 66
   task :locales_resources, :cldr_path do |_, args|
46 67
     TwitterCldr::Resources::LocalesResourcesImporter.new(
47 68
         args[:cldr_path] || './vendor/cldr',
48  
-        './resources/locales'
  69
+        './resources'
49 70
     ).import
50 71
   end
51 72
 
@@ -79,6 +100,14 @@ namespace :update do
79 100
     ).import
80 101
   end
81 102
 
  103
+  desc 'Import currency digits and rounding resource'
  104
+   task :currency_digits_and_rounding, :cldr_path do |_, args|
  105
+     TwitterCldr::Resources::CurrencyDigitsAndRoundingImporter.new(
  106
+         args[:cldr_path] || './vendor/cldr',
  107
+        './resources/shared'
  108
+    ).import
  109
+  end
  110
+
82 111
   desc 'Import postal codes resource'
83 112
   task :postal_codes, :cldr_path do |_, args|
84 113
     TwitterCldr::Resources::PostalCodesImporter.new(
27  lib/twitter_cldr/formatters/numbers/currency_formatter.rb
@@ -6,29 +6,28 @@
6 6
 module TwitterCldr
7 7
   module Formatters
8 8
     class CurrencyFormatter < NumberFormatter
9  
-      DEFAULT_CURRENCY_SYMBOL = "$"
10  
-      DEFAULT_PRECISION = 2
11  
-
12 9
       def initialize(options = {})
13 10
         @tokenizer = TwitterCldr::Tokenizers::NumberTokenizer.new(:locale => self.extract_locale(options), :type => :currency)
14 11
         super
15 12
       end
16 13
 
17 14
       def format(number, options = {})
18  
-        if options[:currency]
19  
-          currency ||= TwitterCldr::Shared::Currencies.for_code(options[:currency])
20  
-          currency ||= TwitterCldr::Shared::Currencies.for_country(options[:currency])
21  
-          currency ||= { :symbol => options[:currency] }
22  
-        else
23  
-          currency = { :symbol => DEFAULT_CURRENCY_SYMBOL }
24  
-        end
  15
+        options[:currency] ||= "USD"
  16
+        currency = TwitterCldr::Shared::Currencies.for_code(options[:currency])
  17
+        currency ||= TwitterCldr::Shared::Currencies.for_country(options[:currency])
  18
+        currency ||= { :symbol => options[:currency], :currency => options[:currency] }
  19
+
  20
+        digits_and_rounding = resource(options[:currency])
  21
+        options[:precision] ||= digits_and_rounding[:digits]
  22
+        options[:rounding] ||= digits_and_rounding[:rounding]
25 23
 
26  
-        super(number, options).gsub('¤', currency[:symbol])
  24
+        super(number, options).gsub('¤', (currency[:symbol] || currency[:currency].to_s))
27 25
       end
28 26
 
29  
-      def default_format_options_for(number)
30  
-        precision = precision_from(number)
31  
-        { :precision => precision == 0 ? DEFAULT_PRECISION : precision }
  27
+      private
  28
+      def resource(code)
  29
+        @resource ||= TwitterCldr.get_resource(:shared, :currency_digits_and_rounding)
  30
+        @resource[code.to_sym] || @resource[:DEFAULT]
32 31
       end
33 32
     end
34 33
   end
4  lib/twitter_cldr/formatters/numbers/decimal_formatter.rb
@@ -16,10 +16,6 @@ def format(number, options = {})
16 16
       rescue TypeError, ArgumentError
17 17
         number
18 18
       end
19  
-
20  
-      def default_format_options_for(number)
21  
-        { :precision => precision_from(number) }
22  
-      end
23 19
     end
24 20
   end
25 21
 end
20  lib/twitter_cldr/formatters/numbers/number_formatter.rb
@@ -14,10 +14,10 @@ def initialize(options = {})
14 14
         @symbols = DEFAULT_SYMBOLS.merge(tokenizer.symbols)
15 15
       end
16 16
 
17  
-      def format(number, options = {})
18  
-        opts = self.default_format_options_for(number).merge(options)
  17
+      def format(number, opts = {})
  18
+        opts[:precision] ||= precision_from(number)
19 19
         prefix, suffix, integer_format, fraction_format = *partition_tokens(self.get_tokens(number, opts))
20  
-        
  20
+
21 21
         int, fraction = parse_number(number, opts)
22 22
         result =  integer_format.apply(int, opts)
23 23
         result << fraction_format.apply(fraction, opts) if fraction
@@ -35,13 +35,21 @@ def partition_tokens(tokens)
35 35
 
36 36
       def parse_number(number, options = {})
37 37
         precision = options[:precision] || self.precision_from(number)
38  
-        number = "%.#{precision}f" % round_to(number, precision).abs
  38
+        rounding = options[:rounding] || 0
  39
+
  40
+        number = "%.#{precision}f" % round_to(number, precision, rounding).abs
39 41
         number.split(".")
40 42
       end
41 43
 
42  
-      def round_to(number, precision)
  44
+      def round_to(number, precision, rounding = 0)
43 45
         factor = 10 ** precision
44  
-        (number * factor).round.to_f / factor
  46
+        result = (number * factor).round.to_f / factor
  47
+        if rounding > 0
  48
+          rounding = rounding.to_f / factor
  49
+          result = (result *  (1.0 / rounding)).round.to_f / (1.0 / rounding)
  50
+        end
  51
+
  52
+        result
45 53
       end
46 54
 
47 55
       def precision_from(num)
4  lib/twitter_cldr/formatters/numbers/percent_formatter.rb
@@ -16,10 +16,6 @@ def initialize(options = {})
16 16
       def format(number, options = {})
17 17
         super(number, options).gsub('¤', @tokenizer.symbols[:percent_sign] || DEFAULT_PERCENT_SIGN)
18 18
       end
19  
-
20  
-      def default_format_options_for(number)
21  
-        { :precision => 0 }
22  
-      end
23 19
     end
24 20
   end
25 21
 end
26  lib/twitter_cldr/resources.rb
@@ -5,17 +5,19 @@
5 5
 
6 6
 module TwitterCldr
7 7
   module Resources
8  
-    autoload :CanonicalCompositionsUpdater,   'twitter_cldr/resources/canonical_compositions_updater'
9  
-    autoload :CollationTriesDumper,           'twitter_cldr/resources/collation_tries_dumper'
10  
-    autoload :CompositionExclusionsImporter,  'twitter_cldr/resources/composition_exclusions_importer'
11  
-    autoload :CustomLocalesResourcesImporter, 'twitter_cldr/resources/custom_locales_resources_importer'
12  
-    autoload :LanguageCodesImporter,          'twitter_cldr/resources/language_codes_importer'
13  
-    autoload :Loader,                         'twitter_cldr/resources/loader'
14  
-    autoload :LocalesResourcesImporter,       'twitter_cldr/resources/locales_resources_importer'
15  
-    autoload :PhoneCodesImporter,             'twitter_cldr/resources/phone_codes_importer'
16  
-    autoload :PostalCodesImporter,            'twitter_cldr/resources/postal_codes_importer'
17  
-    autoload :TailoringImporter,              'twitter_cldr/resources/tailoring_importer'
18  
-    autoload :UnicodeDataImporter,            'twitter_cldr/resources/unicode_data_importer'
19  
-    autoload :BidiTestImporter,               'twitter_cldr/resources/bidi_test_importer'
  8
+    autoload :CanonicalCompositionsUpdater,       'twitter_cldr/resources/canonical_compositions_updater'
  9
+    autoload :CollationTriesDumper,               'twitter_cldr/resources/collation_tries_dumper'
  10
+    autoload :CompositionExclusionsImporter,      'twitter_cldr/resources/composition_exclusions_importer'
  11
+    autoload :CurrenciesImporter,                 'twitter_cldr/resources/currencies_importer'
  12
+    autoload :CurrencyDigitsAndRoundingImporter,  'twitter_cldr/resources/currency_digits_and_rounding_importer'
  13
+    autoload :CustomLocalesResourcesImporter,     'twitter_cldr/resources/custom_locales_resources_importer'
  14
+    autoload :LanguageCodesImporter,              'twitter_cldr/resources/language_codes_importer'
  15
+    autoload :Loader,                             'twitter_cldr/resources/loader'
  16
+    autoload :LocalesResourcesImporter,           'twitter_cldr/resources/locales_resources_importer'
  17
+    autoload :PhoneCodesImporter,                 'twitter_cldr/resources/phone_codes_importer'
  18
+    autoload :PostalCodesImporter,                'twitter_cldr/resources/postal_codes_importer'
  19
+    autoload :TailoringImporter,                  'twitter_cldr/resources/tailoring_importer'
  20
+    autoload :UnicodeDataImporter,                'twitter_cldr/resources/unicode_data_importer'
  21
+    autoload :BidiTestImporter,                   'twitter_cldr/resources/bidi_test_importer'
20 22
   end
21 23
 end
16  lib/twitter_cldr/resources/locales_resources_importer.rb
@@ -12,7 +12,7 @@ module Resources
12 12
 
13 13
     class LocalesResourcesImporter
14 14
 
15  
-      COMPONENTS = %w[calendars languages numbers units plurals lists layout]
  15
+      COMPONENTS = %w[calendars languages numbers units plurals lists layout currencies]
16 16
 
17 17
       # Arguments:
18 18
       #
@@ -39,19 +39,23 @@ def prepare_ruby_cldr
39 39
       # Copies zh plurals to zh-Hant (they can share, but locale code needs to be different).
40 40
       #
41 41
       def copy_zh_hant_plurals
42  
-        File.open(File.join(@output_path, 'zh-Hant', 'plurals.yml'), 'w:utf-8') do |output|
43  
-          data = YAML.load(File.read(File.join(@output_path, 'zh', 'plurals.yml')))
  42
+        File.open(File.join(@output_path, 'locales', 'zh-Hant', 'plurals.yml'), 'w:utf-8') do |output|
  43
+          data = YAML.load(File.read(File.join(@output_path, 'locales', 'zh', 'plurals.yml')))
44 44
           output.write(YAML.dump(:'zh-Hant' => data[:zh].gsub(':zh', ":'zh-Hant'")))
45 45
         end
46 46
       end
47 47
 
48 48
       def import_components
49  
-        Cldr::Export.export(:locales => TwitterCldr.supported_locales, :components => COMPONENTS, :target => @output_path) do |component, locale, path|
  49
+        Cldr::Export.export(:locales => TwitterCldr.supported_locales, :components => COMPONENTS, :target => File.join(@output_path, 'locales')) do |component, locale, path|
50 50
           add_buddhist_calendar(component, locale, path)
51 51
           process_plurals(component, locale, path)
52 52
           deep_symbolize(component, locale, path)
53 53
         end
54 54
 
  55
+        Cldr::Export.export(:components => ["currency_digits_and_rounding"], :target => File.join(@output_path, 'shared')) do |component, locale, path|
  56
+          deep_symbolize(component, locale, path)
  57
+        end
  58
+
55 59
         copy_zh_hant_plurals
56 60
       end
57 61
 
@@ -65,7 +69,7 @@ def deep_symbolize(component, locale, path)
65 69
       end
66 70
 
67 71
       def process_plurals(component, locale, path)
68  
-        return unless component == 'plurals'
  72
+        return unless component == 'Plurals'
69 73
 
70 74
         plural_rules = File.read(path)
71 75
 
@@ -79,7 +83,7 @@ def process_plurals(component, locale, path)
79 83
       # TODO: export buddhist calendar from CLDR data instead of using BUDDHIST_CALENDAR constant.
80 84
       #
81 85
       def add_buddhist_calendar(component, locale, path)
82  
-        return unless component == 'calendars' && locale == :th
  86
+        return unless component == 'Calendars' && locale == :th
83 87
 
84 88
         data = YAML.load(File.read(path))
85 89
         data['th']['calendars']['buddhist'] = BUDDHIST_CALENDAR
33  lib/twitter_cldr/shared/currencies.rb
@@ -6,34 +6,41 @@
6 6
 module TwitterCldr
7 7
   module Shared
8 8
     module Currencies
9  
-
10 9
       class << self
11  
-
12 10
         def countries
13  
-          resource.keys.map(&:to_s)
  11
+          Kernel.warn("Currencies#countries will be deprecated. Please use Currencies#for_code.")
  12
+          resource_countries.keys.map(&:to_s)
14 13
         end
15 14
 
16  
-        def currency_codes
17  
-          resource.values.map { |data| data[:code] }
  15
+        def currency_codes(locale = :en)
  16
+          resource(locale).keys.map { |c| c.to_s }
18 17
         end
19 18
 
20  
-        def for_country(country_name)
21  
-          resource[country_name.to_sym]
  19
+        def for_country(country_name, locale = :en)
  20
+          Kernel.warn("Currencies#for_country will be deprecated. Please use Currencies#for_code.")
  21
+          for_code(resource_countries[country_name.to_sym][:code], locale) if resource_countries[country_name.to_sym]
22 22
         end
23 23
 
24  
-        def for_code(currency_code)
25  
-          country_name, data = resource.detect { |_, data| data[:code] == currency_code }
26  
-          { :country => country_name.to_s, :currency => data[:currency], :symbol => data[:symbol] } if data
  24
+        def for_code(currency_code, locale = :en)
  25
+          currency_code = currency_code.to_sym
  26
+          data = resource(locale)[currency_code]
  27
+          { :currency => currency_code,
  28
+            :name => data[:one],
  29
+            :symbol => data[:symbol] } if data
27 30
         end
28 31
 
29 32
         private
30 33
 
31  
-        def resource
32  
-          @resource ||= TwitterCldr.get_resource(:shared, :currencies)
  34
+        def resource_countries
  35
+          @resource_countries ||= TwitterCldr.get_resource(:shared, :currencies)
33 36
         end
34 37
 
  38
+        def resource(locale)
  39
+          locale = locale.to_sym
  40
+          @resource ||= {}
  41
+          @resource[locale] ||= TwitterCldr.get_resource(:locales, locale, :currencies)[locale][:currencies]
  42
+        end
35 43
       end
36  
-
37 44
     end
38 45
   end
39 46
 end
351  resources/locales/af/currencies.yml
... ...
@@ -0,0 +1,351 @@
  1
+---
  2
+:af:
  3
+  :currencies:
  4
+    :AED:
  5
+      :one: Verenigde Arabiese Emirate dirham
  6
+    :AFN:
  7
+      :one: Afgaanse afgani
  8
+    :ALL:
  9
+      :one: Albanese lek
  10
+    :AMD:
  11
+      :one: Armeense dram
  12
+    :ANG:
  13
+      :one: Nederlands-Antilliaanse gulde
  14
+    :AOA:
  15
+      :one: Angolese kwanza
  16
+    :ARS:
  17
+      :one: Argentynse peso
  18
+    :AUD:
  19
+      :one: Australiese dollar
  20
+      :symbol: AU$
  21
+    :AWG:
  22
+      :one: Arubaanse floryn
  23
+    :AZN:
  24
+      :one: Azerbeidjaanse manat
  25
+    :BAM:
  26
+      :one: Bosnië en Herzegowina omskakelbare marka
  27
+    :BBD:
  28
+      :one: Barbados-dollar
  29
+    :BDT:
  30
+      :one: Bangladesjiese taka
  31
+    :BGN:
  32
+      :one: Bulgaarse lev
  33
+    :BHD:
  34
+      :one: Bahrainse dinar
  35
+    :BIF:
  36
+      :one: Burundiese frank
  37
+    :BMD:
  38
+      :one: Bermuda-dollar
  39
+    :BND:
  40
+      :one: Broeneise dollar
  41
+    :BOB:
  42
+      :one: Boliviaanse boliviano
  43
+    :BRL:
  44
+      :one: Brasiliaanse real
  45
+      :symbol: R$
  46
+    :BSD:
  47
+      :one: Bahamiaanse dollar
  48
+    :BTN:
  49
+      :one: Bhoetanese ngoeltroem
  50
+    :BWP:
  51
+      :one: Botswana pula
  52
+    :BYR:
  53
+      :one: Belo-Russiese roebel
  54
+    :BZD:
  55
+      :one: Beliziese dollar
  56
+    :CAD:
  57
+      :one: Kanadese dollar
  58
+      :symbol: CA$
  59
+    :CDF:
  60
+      :one: Kongolese frank
  61
+    :CHF:
  62
+      :one: Switserse frank
  63
+    :CLP:
  64
+      :one: Chileense peso
  65
+    :CNY:
  66
+      :one: Sjinese joean renminbi
  67
+      :symbol: CN¥
  68
+    :COP:
  69
+      :one: Colombiaanse peso
  70
+    :CRC:
  71
+      :one: Costa Ricaanse colón
  72
+    :CUC:
  73
+      :one: Kubaanse omskakelbare peso
  74
+    :CUP:
  75
+      :one: Kubaanse peso
  76
+    :CVE:
  77
+      :one: Kaap Verdiese escudo
  78
+    :CZK:
  79
+      :one: Tsjeggiese kroon
  80
+    :DJF:
  81
+      :one: Djiboeti frank
  82
+    :DKK:
  83
+      :one: Deense kroon
  84
+    :DOP:
  85
+      :one: Dominikaanse peso
  86
+    :DZD:
  87
+      :one: Algeriese dinar
  88
+    :EGP:
  89
+      :one: Egiptiese pond
  90
+    :ERN:
  91
+      :one: Eritrese nakfa
  92
+    :ETB:
  93
+      :one: Etiopiese birr
  94
+    :EUR:
  95
+      :one: Euro
  96
+      :symbol: €
  97
+    :FJD:
  98
+      :one: Fidjiaanse dollar
  99
+    :FKP:
  100
+      :one: Falkland-eilande pond
  101
+    :GBP:
  102
+      :one: Britse pond
  103
+      :symbol: £
  104
+    :GEL:
  105
+      :one: Georgiese lari
  106
+    :GHC:
  107
+      :one: Ghanese cedi (1979-2007)
  108
+    :GHS:
  109
+      :one: Ghanese cedi
  110
+    :GIP:
  111
+      :one: Gibraltarese pond
  112
+    :GMD:
  113
+      :one: Gambiese dalasi
  114
+    :GNF:
  115
+      :one: Guinese frank
  116
+    :GNS:
  117
+      :one: Guinese syli
  118
+    :GTQ:
  119
+      :one: Guatemalaanse quetzal
  120
+    :GYD:
  121
+      :one: Guyanese dollar
  122
+    :HKD:
  123
+      :one: Hong Kong dollar
  124
+      :symbol: HK$
  125
+    :HNL:
  126
+      :one: Hondurese lempira
  127
+    :HRK:
  128
+      :one: Kroatiese kuna
  129
+    :HTG:
  130
+      :one: Haïtiaanse gourde
  131
+    :HUF:
  132
+      :one: Hongaarse forint
  133
+    :IDR:
  134
+      :one: Indonesiese roepia
  135
+    :ILS:
  136
+      :one: Israeliese nuwe sikkel
  137
+      :symbol: ₪
  138
+    :INR:
  139
+      :one: Indiese rupee
  140
+      :symbol: ₹
  141
+    :IQD:
  142
+      :one: Irakse dinar
  143
+    :IRR:
  144
+      :one: Iranse rial
  145
+    :ISK:
  146
+      :one: Yslandse kroon
  147
+    :ITL:
  148
+      :one: Italiaanse lier
  149
+    :JMD:
  150
+      :one: Jamaikaanse dollar
  151
+    :JOD:
  152
+      :one: Jordaniese dinar
  153
+    :JPY:
  154
+      :one: Japannese jen
  155
+      :symbol: JP¥
  156
+    :KES:
  157
+      :one: Keniaanse sjieling
  158
+    :KGS:
  159
+      :one: Kirgisiese som
  160
+    :KHR:
  161
+      :one: Kambodjaanse riel
  162
+    :KMF:
  163
+      :one: Comoriese frank
  164
+    :KPW:
  165
+      :one: Noord-Koreaanse won
  166
+    :KRW:
  167
+      :one: Suid-Koreaanse won
  168
+      :symbol: ₩
  169
+    :KWD:
  170
+      :one: Koeweitse dinar
  171
+    :KYD:
  172
+      :one: Cayman-eilande dollar
  173
+    :KZT:
  174
+      :one: Kazakse tenge
  175
+    :LAK:
  176
+      :one: Laosiaanse kip
  177
+    :LBP:
  178
+      :one: Lebanese pond
  179
+    :LKR:
  180
+      :one: Sri Lankaanse roepee
  181
+    :LRD:
  182
+      :one: Liberiese dollar
  183
+    :LSL:
  184
+      :one: Lesotho loti
  185
+    :LTL:
  186
+      :one: Litause litas
  187
+    :LVL:
  188
+      :one: Lettiese lats
  189
+    :LYD:
  190
+      :one: Libiese dinar
  191
+    :MAD:
  192
+      :one: Marokkaanse dirham
  193
+    :MDL:
  194
+      :one: Moldowiese leu
  195
+    :MGA:
  196
+      :one: Malgassiese ariary
  197
+    :MKD:
  198
+      :one: Macedoniese denar
  199
+    :MMK:
  200
+      :one: Myanma Kyat
  201
+    :MNT:
  202
+      :one: Mongoolse toegrik
  203
+    :MOP:
  204
+      :one: Macaose pataca
  205
+    :MRO:
  206
+      :one: Mauritaniese ouguiya
  207
+    :MUR:
  208
+      :one: Mauritiaanse rupee
  209
+    :MVR:
  210
+      :one: Malediviese rufia
  211
+    :MWK:
  212
+      :one: Malawiese kwacha
  213
+    :MXN:
  214
+      :one: Meksikaanse peso
  215
+      :symbol: MX$
  216
+    :MYR:
  217
+      :one: Maleisiese ringgit
  218
+    :MZM:
  219
+      :one: Mosambiekse metical (1980-2006)
  220
+    :MZN:
  221
+      :one: Mosambiekse metical
  222
+    :NAD:
  223
+      :one: Namibiese dollar
  224
+    :NGN:
  225
+      :one: Nigeriese naira
  226
+    :NIO:
  227
+      :one: Nicaraguaanse córdoba
  228
+    :NOK:
  229
+      :one: Noorse kroon
  230
+    :NPR:
  231
+      :one: Nepalese roepee
  232
+    :NZD:
  233
+      :one: Nieu-Seeland dollar
  234
+      :symbol: NZ$
  235
+    :OMR:
  236
+      :one: Omaanse rial
  237
+    :PAB:
  238
+      :one: Panamese balboa
  239
+    :PEN:
  240
+      :one: Peruaanse nuwe sol
  241
+    :PGK:
  242
+      :one: Papoease kina
  243
+    :PHP:
  244
+      :one: Filippynse peso
  245
+    :PKR:
  246
+      :one: Pakistanse roepee
  247
+    :PLN:
  248
+      :one: Poolse zloty
  249
+    :PYG:
  250
+      :one: Paraguaanse guarani
  251
+    :QAR:
  252
+      :one: Katarese rial
  253
+    :RSD:
  254
+      :one: Serbiese dinar
  255
+    :RUB:
  256
+      :one: Russiese roebel
  257
+    :RWF:
  258
+      :one: Rwandiese frank
  259
+    :SAR:
  260
+      :one: Saoedi-Arabiese riyal
  261
+    :SBD:
  262
+      :one: Salomons-eilande dollar
  263
+    :SCR:
  264
+      :one: Seychellese rupee
  265
+    :SDG:
  266
+      :one: Soedannese pond
  267
+    :SDP:
  268
+      :one: Soedannese pond (1957-1998)
  269
+    :SEK:
  270
+      :one: Sweedse kroon
  271
+    :SGD:
  272
+      :one: Singapoer-dollar
  273
+    :SHP:
  274
+      :one: Sint Helena pond
  275
+    :SLL:
  276
+      :one: Sierra Leonese leone
  277
+    :SOS:
  278
+      :one: Somaliese sjieling
  279
+    :SRD:
  280
+      :one: Surinaamse dollar
  281
+    :STD:
  282
+      :one: São Tomé en Príncipe dobra
  283
+    :SYP:
  284
+      :one: Siriese pond
  285
+    :SZL:
  286
+      :one: Swazilandse lilangeni
  287
+    :THB:
  288
+      :one: Thaise baht
  289
+      :symbol: ฿
  290
+    :TJS:
  291
+      :one: Tadjikse roebel
  292
+    :TMT:
  293
+      :one: Toerkmeense manat
  294
+    :TND:
  295
+      :one: Tunisiese dinar
  296
+    :TOP:
  297
+      :one: Tongaanse pa'anga
  298
+    :TRL:
  299
+      :one: Turkse lier (1922-2005)
  300
+    :TRY:
  301
+      :one: Turkse lier
  302
+    :TTD:
  303
+      :one: Trinidad en Tobago dollar
  304
+    :TWD:
  305
+      :one: Nuwe Taiwanese dollar
  306
+      :symbol: NT$
  307
+    :TZS:
  308
+      :one: Tanzaniese sjieling
  309
+    :UAH:
  310
+      :one: Oekraïnse hriwna
  311
+    :UGX:
  312
+      :one: Ugandese sjieling
  313
+    :USD:
  314
+      :one: Amerikaanse dollar
  315
+      :symbol: US$
  316
+    :UYU:
  317
+      :one: Uruguaanse peso
  318
+    :UZS:
  319
+      :one: Oezbekiese som
  320
+    :VEF:
  321
+      :one: Venezolaanse bolivar
  322
+    :VND:
  323
+      :one: Viëtnamese dong
  324
+      :symbol: ₫
  325
+    :VUV:
  326
+      :one: Vanuatu vatu
  327
+    :WST:
  328
+      :one: Samoaanse tala
  329
+    :XAF:
  330
+      :one: CFA frank BEAC
  331
+      :symbol: FCFA
  332
+    :XCD:
  333
+      :one: Oos-Karibbiese dollar
  334
+      :symbol: EC$
  335
+    :XOF:
  336
+      :one: CFA frank BCEAO
  337
+      :symbol: CFA
  338
+    :XPF:
  339
+      :one: CFP-frank
  340
+      :symbol: CFPF
  341
+    :XXX:
  342
+      :one: Onbekende geldeenheid
  343
+    :YER:
  344
+      :one: Jemenitiese rial
  345
+    :ZAR:
  346
+      :one: Suid-Afrikaanse rand
  347
+      :symbol: R
  348
+    :ZMK:
  349
+      :one: Zambiese kwacha
  350
+    :ZWD:
  351
+      :one: Zimbabwiese dollar
1,463  resources/locales/ar/currencies.yml
... ...
@@ -0,0 +1,1463 @@
  1
+---
  2
+:ar:
  3
+  :currencies:
  4
+    :ADP:
  5
+      :one: بيستا أندوري
  6
+    :AED:
  7
+      :few: درهم إماراتي
  8
+      :many: درهم إماراتي
  9
+      :one: درهم إماراتي
  10
+      :other: درهم إماراتي
  11
+      :symbol: د.إ.‏
  12
+      :two: درهم إماراتي
  13
+      :zero: درهم إماراتي
  14
+    :AFA:
  15
+      :one: أفغاني - 1927-2002
  16
+    :AFN:
  17
+      :few: أفغاني
  18
+      :many: أفغاني
  19
+      :one: أفغاني
  20
+      :other: أفغاني
  21
+      :two: أفغاني
  22
+      :zero: أفغاني
  23
+    :ALL:
  24
+      :few: ليك ألباني
  25
+      :many: ليك ألباني
  26
+      :one: ليك ألباني
  27
+      :other: ليك ألباني
  28
+      :two: ليك ألباني
  29
+      :zero: ليك ألباني
  30
+    :AMD:
  31
+      :few: درام أرميني
  32
+      :many: درام أرميني
  33
+      :one: درام أرميني
  34
+      :other: درام أرميني
  35
+      :two: درام أرميني
  36
+      :zero: درام أرميني
  37
+    :ANG:
  38
+      :few: جلدر هولندي [ANG]
  39
+      :many: جلدر هولندي [ANG]
  40
+      :one: جلدر هولندي [ANG]
  41
+      :other: جلدر هولندي [ANG]
  42
+      :two: جلدر هولندي [ANG]
  43
+      :zero: جلدر هولندي [ANG]
  44
+    :AOA:
  45
+      :few: كوانزا أنجولي
  46
+      :many: كوانزا أنجولي
  47
+      :one: كوانزا أنجولي
  48
+      :other: كوانزا أنجولي
  49
+      :two: كوانزا أنجولي
  50
+      :zero: كوانزا أنجولي
  51
+    :AOK:
  52
+      :one: كوانزا أنجولي - 1977-1990
  53
+    :AON:
  54
+      :one: كوانزا أنجولي جديدة - 1990-2000
  55
+    :AOR:
  56
+      :one: كوانزا أنجولي معدلة - 1995 - 1999
  57
+    :ARA:
  58
+      :few: أسترال أرجنتيني
  59
+      :many: أسترال أرجنتيني
  60
+      :one: أسترال أرجنتيني
  61
+      :other: أسترال أرجنتيني
  62
+      :two: أسترال أرجنتيني
  63
+      :zero: أسترال أرجنتيني
  64
+    :ARP:
  65
+      :one: بيزو أرجنتيني - 1983-1985
  66
+    :ARS:
  67
+      :few: بيزو أرجنتيني
  68
+      :many: بيزو أرجنتيني
  69
+      :one: بيزو أرجنتيني
  70
+      :other: بيزو أرجنتيني
  71
+      :two: بيزو أرجنتيني
  72
+      :zero: بيزو أرجنتيني
  73
+    :ATS:
  74
+      :one: شلن نمساوي
  75
+    :AUD:
  76
+      :few: دولار أسترالي
  77
+      :many: دولار أسترالي
  78
+      :one: دولار أسترالي
  79
+      :other: دولار أسترالي
  80
+      :symbol: AU$
  81
+      :two: دولار أسترالي
  82
+      :zero: دولار أسترالي
  83
+    :AWG:
  84
+      :few: جلدر أروبي
  85
+      :many: جلدر أروبي
  86
+      :one: جلدر أروبي
  87
+      :other: جلدر أروبي
  88
+      :two: جلدر أروبي
  89
+      :zero: جلدر أروبي
  90
+    :AZM:
  91
+      :few: مانات أذريبجاني
  92
+      :many: مانات أذريبجاني
  93
+      :one: مانات أذريبجاني
  94
+      :other: مانات أذريبجاني
  95
+      :two: مانات أذريبجاني
  96
+      :zero: مانات أذريبجاني
  97
+    :AZN:
  98
+      :one: مانات أذربيجان
  99
+    :BAD:
  100
+      :one: دينار البوسنة والهرسك
  101
+    :BAM:
  102
+      :few: مارك البوسنة والهرسك قابل للتحويل
  103
+      :many: مارك البوسنة والهرسك قابل للتحويل
  104
+      :one: مارك البوسنة والهرسك قابل للتحويل
  105
+      :other: مارك البوسنة والهرسك قابل للتحويل
  106
+      :two: مارك البوسنة والهرسك قابل للتحويل
  107
+      :zero: مارك البوسنة والهرسك قابل للتحويل
  108
+    :BBD:
  109
+      :few: دولار بربادوسي
  110
+      :many: دولار بربادوسي
  111
+      :one: دولار بربادوسي
  112
+      :other: دولار بربادوسي
  113
+      :two: دولار بربادوسي
  114
+      :zero: دولار بربادوسي
  115
+    :BDT:
  116
+      :few: تاكا بنجلاديشي
  117
+      :many: تاكا بنجلاديشي
  118
+      :one: تاكا بنجلاديشي
  119
+      :other: تاكا بنجلاديشي
  120
+      :two: تاكا بنجلاديشي
  121
+      :zero: تاكا بنجلاديشي
  122
+    :BEC:
  123
+      :one: فرنك بلجيكي قابل للتحويل
  124
+    :BEF:
  125
+      :few: فرنك بلجيكي
  126
+      :many: فرنك بلجيكي
  127
+      :one: فرنك بلجيكي
  128
+      :other: فرنك بلجيكي
  129
+      :two: فرنك بلجيكي
  130
+      :zero: فرنك بلجيكي
  131
+    :BEL:
  132
+      :one: فرنك بلجيكي مالي
  133
+    :BGL:
  134
+      :one: ليف بلغاري
  135
+    :BGN:
  136
+      :few: ليف بلغاري جديد
  137
+      :many: ليف بلغاري جديد
  138
+      :one: ليف بلغاري جديد
  139
+      :other: ليف بلغاري جديد
  140
+      :two: ليف بلغاري جديد
  141
+      :zero: ليف بلغاري جديد
  142
+    :BHD:
  143
+      :few: دينار بحريني
  144
+      :many: دينار بحريني
  145
+      :one: دينار بحريني
  146
+      :other: دينار بحريني
  147
+      :symbol: د.ب.‏
  148
+      :two: دينار بحريني
  149
+      :zero: دينار بحريني
  150
+    :BIF:
  151
+      :few: فرنك بروندي
  152
+      :many: فرنك بروندي
  153
+      :one: فرنك بروندي
  154
+      :other: فرنك بروندي
  155
+      :two: فرنك بروندي
  156
+      :zero: فرنك بروندي
  157
+    :BMD:
  158
+      :few: دولار برمودي
  159
+      :many: دولار برمودي
  160
+      :one: دولار برمودي
  161
+      :other: دولار برمودي
  162
+      :two: دولار برمودي
  163
+      :zero: دولار برمودي
  164
+    :BND:
  165
+      :few: دولار بروناي
  166
+      :many: دولار بروناي
  167
+      :one: دولار بروناي
  168
+      :other: دولار بروناي
  169
+      :two: دولار بروناي
  170
+      :zero: دولار بروناي
  171
+    :BOB:
  172
+      :few: بوليفاريو
  173
+      :many: بوليفاريو
  174
+      :one: بوليفاريو
  175
+      :other: بوليفاريو
  176
+      :two: بوليفاريو
  177
+      :zero: بوليفاريو
  178
+    :BOP:
  179
+      :few: بيزو بوليفي
  180
+      :many: بيزو بوليفي
  181
+      :one: بيزو بوليفي
  182
+      :other: بيزو بوليفي
  183
+      :two: بيزو بوليفي
  184
+      :zero: بيزو بوليفي
  185
+    :BOV:
  186
+      :one: مفدول بوليفي
  187
+    :BRB:
  188
+      :one: نوفو كروزايرو برازيلي - 1967-1986
  189
+    :BRC:
  190
+      :one: كروزادو برازيلي
  191
+    :BRE:
  192
+      :one: كروزايرو برازيلي - 1990-1993
  193
+    :BRL:
  194
+      :few: ريال برازيلي
  195
+      :many: ريال برازيلي
  196
+      :one: ريال برازيلي
  197
+      :other: ريال برازيلي
  198
+      :symbol: ر.ب.‏
  199
+      :two: ريال برازيلي
  200
+      :zero: ريال برازيلي
  201
+    :BSD:
  202
+      :few: دولار باهامي
  203
+      :many: دولار باهامي
  204
+      :one: دولار باهامي
  205
+      :other: دولار باهامي
  206
+      :two: دولار باهامي
  207
+      :zero: دولار باهامي
  208
+    :BTN:
  209
+      :few: نولتوم بوتاني
  210
+      :many: نولتوم بوتاني
  211
+      :one: نولتوم بوتاني
  212
+      :other: نولتوم بوتاني
  213
+      :two: نولتوم بوتاني
  214
+      :zero: نولتوم بوتاني
  215
+    :BUK:
  216
+      :one: كيات بورمي
  217
+    :BWP:
  218
+      :few: بولا بتسواني
  219
+      :many: بولا بتسواني
  220
+      :one: بولا بتسواني
  221
+      :other: بولا بتسواني
  222
+      :two: بولا بتسواني
  223
+      :zero: بولا بتسواني
  224
+    :BYB:
  225
+      :one: روبل بيلاروسي جديد - 1994-1999
  226
+    :BYR:
  227
+      :few: روبل بيلاروسي
  228
+      :many: روبل بيلاروسي
  229
+      :one: روبل بيلاروسي
  230
+      :other: روبل بيلاروسي
  231
+      :two: روبل بيلاروسي
  232
+      :zero: روبل بيلاروسي
  233
+    :BZD:
  234
+      :few: دولار بليزي
  235
+      :many: دولار بليزي
  236
+      :one: دولار بليزي
  237
+      :other: دولار بليزي
  238
+      :two: دولار بليزي
  239
+      :zero: دولار بليزي
  240
+    :CAD:
  241
+      :few: دولار كندي
  242
+      :many: دولار كندي
  243
+      :one: دولار كندي
  244
+      :other: دولار كندي
  245
+      :symbol: CA$
  246
+      :two: دولار كندي
  247
+      :zero: دولار كندي
  248
+    :CDF:
  249
+      :few: فنك كونغولي
  250
+      :many: فنك كونغولي
  251
+      :one: فنك كونغولي
  252
+      :other: فنك كونغولي
  253
+      :two: فنك كونغولي
  254
+      :zero: فنك كونغولي
  255
+    :CHF:
  256
+      :few: فرنك سويسري
  257
+      :many: فرنك سويسري
  258
+      :one: فرنك سويسري
  259
+      :other: فرنك سويسري
  260
+      :two: فرنك سويسري
  261
+      :zero: فرنك سويسري
  262
+    :CLP:
  263
+      :few: بيزو شيلي
  264
+      :many: بيزو شيلي
  265
+      :one: بيزو شيلي
  266
+      :other: بيزو شيلي
  267
+      :two: بيزو شيلي
  268
+      :zero: بيزو شيلي
  269
+    :CNY:
  270
+      :few: يوان صيني
  271
+      :many: يوان صيني
  272
+      :one: يوان صيني
  273
+      :other: يوان صيني
  274
+      :symbol: ي.ص
  275
+      :two: يوان صيني
  276
+      :zero: يوان صيني
  277
+    :COP:
  278
+      :few: بيزو كولومبي
  279
+      :many: بيزو كولومبي
  280
+      :one: بيزو كولومبي
  281
+      :other: بيزو كولومبي
  282
+      :two: بيزو كولومبي
  283
+      :zero: بيزو كولومبي
  284
+    :CRC:
  285
+      :few: كولن كوستا ريكي
  286
+      :many: كولن كوستا ريكي
  287
+      :one: كولن كوستا ريكي
  288
+      :other: كولن كوستا ريكي
  289
+      :two: كولن كوستا ريكي
  290
+      :zero: كولن كوستا ريكي
  291
+    :CSD:
  292
+      :one: دينار صربي قديم
  293
+    :CSK:
  294
+      :one: كرونة تشيكوسلوفاكيا
  295
+    :CUC:
  296
+      :one: بيزو كوبي قابل للتحويل
  297
+    :CUP:
  298
+      :few: بيزو كوبي
  299
+      :many: بيزو كوبي
  300
+      :one: بيزو كوبي
  301
+      :other: بيزو كوبي
  302
+      :two: بيزو كوبي
  303
+      :zero: بيزو كوبي
  304
+    :CVE:
  305
+      :few: اسكودو الرأس الخضراء
  306
+      :many: اسكودو الرأس الخضراء
  307
+      :one: اسكودو الرأس الخضراء
  308
+      :other: اسكودو الرأس الخضراء
  309
+      :two: اسكودو الرأس الخضراء
  310
+      :zero: اسكودو الرأس الخضراء
  311
+    :CYP:
  312
+      :few: جنيه قبرصي
  313
+      :many: جنيه قبرصي
  314
+      :one: جنيه قبرصي
  315
+      :other: جنيه قبرصي
  316
+      :two: جنيه قبرصي
  317
+      :zero: جنيه قبرصي
  318
+    :CZK:
  319
+      :few: كرونة تشيكية
  320
+      :many: كرونة تشيكية
  321
+      :one: كرونة تشيكية
  322
+      :other: كرونة تشيكية
  323
+      :two: كرونة تشيكية
  324
+      :zero: كرونة تشيكية
  325
+    :DDM:
  326
+      :one: أوستمارك ألماني شرقي
  327
+    :DEM:
  328
+      :few: مارك ألماني
  329
+      :many: مارك ألماني
  330
+      :one: مارك ألماني
  331
+      :other: مارك ألماني
  332
+      :two: مارك ألماني
  333
+      :zero: مارك ألماني
  334
+    :DJF:
  335
+      :few: فرنك جيبوتي
  336
+      :many: فرنك جيبوتي
  337
+      :one: فرنك جيبوتي
  338
+      :other: فرنك جيبوتي
  339
+      :two: فرنك جيبوتي
  340
+      :zero: فرنك جيبوتي
  341
+    :DKK:
  342
+      :few: كرونة دانماركي
  343
+      :many: كرونة دانماركي
  344
+      :one: كرونة دانماركي
  345
+      :other: كرونة دانماركي
  346
+      :two: كرونة دانماركي
  347
+      :zero: كرونة دانماركي
  348
+    :DOP:
  349
+      :few: بيزو الدومنيكان
  350
+      :many: بيزو الدومنيكان
  351
+      :one: بيزو الدومنيكان
  352
+      :other: بيزو الدومنيكان
  353
+      :two: بيزو الدومنيكان
  354
+      :zero: بيزو الدومنيكان
  355
+    :DZD:
  356
+      :few: دينار جزائري
  357
+      :many: دينار جزائري
  358
+      :one: دينار جزائري
  359
+      :other: دينار جزائري
  360
+      :symbol: د.ج.‏
  361
+      :two: دينار جزائري
  362
+      :zero: دينار جزائري
  363
+    :EEK:
  364
+      :few: كرونة أستونية
  365
+      :many: كرونة أستونية
  366
+      :one: كرونة أستونية
  367
+      :other: كرونة أستونية
  368
+      :two: كرونة أستونية
  369
+      :zero: كرونة أستونية
  370
+    :EGP:
  371
+      :few: جنيه مصري
  372
+      :many: جنيه مصري
  373
+      :one: جنيه مصري
  374
+      :other: جنيه مصري
  375
+      :symbol: ج.م.‏
  376
+      :two: جنيه مصري
  377
+      :zero: جنيه مصري
  378
+    :ERN:
  379
+      :few: ناكفا أريتري
  380
+      :many: ناكفا أريتري
  381
+      :one: ناكفا أريتري
  382
+      :other: ناكفا أريتري
  383
+      :two: ناكفا أريتري
  384
+      :zero: ناكفا أريتري
  385
+    :ESP:
  386
+      :few: بيزيتا إسباني
  387
+      :many: بيزيتا إسباني
  388
+      :one: بيزيتا إسباني
  389
+      :other: بيزيتا إسباني
  390
+      :two: بيزيتا إسباني
  391
+      :zero: بيزيتا إسباني
  392
+    :ETB:
  393
+      :few: بير أثيوبي
  394
+      :many: بير أثيوبي
  395
+      :one: بير أثيوبي
  396
+      :other: بير أثيوبي
  397
+      :two: بير أثيوبي
  398
+      :zero: بير أثيوبي
  399
+    :EUR:
  400
+      :few: يورو
  401
+      :many: يورو
  402
+      :one: يورو
  403
+      :other: يورو
  404
+      :symbol: €
  405
+      :two: يورو
  406
+      :zero: يورو
  407
+    :FIM: