gbence-g3a_i18n 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,4 @@
1
+ - v0.2.1: Adding ordinals support.
1
2
  - v0.2.0: Changing API (localize -> translate), and license.
2
3
  - v0.1.1: Githubbing README.
3
4
  - v0.1.0: Initial release.
data/README.rdoc CHANGED
@@ -13,6 +13,11 @@ translate Integers and Floats through the well known I18n API, eg.:
13
13
  I18n.t(1234.0 + 1/6.0)
14
14
  # => "ezerkétszázharmincnégy és egy hatod"
15
15
 
16
+ And it provides ordinals too...
17
+
18
+ I18n.t 1234, :format => :ordinal
19
+ # => "ezerkétszázharmincnegyedik"
20
+
16
21
  == Prerequisites
17
22
 
18
23
  You should install svenfuchs' i18n gem prior to this one.
data/g3a_i18n.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'g3a_i18n'
5
- s.version = '0.2.0'
5
+ s.version = '0.2.1'
6
6
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
7
7
  s.authors = ["Bence Golda"]
8
8
  s.email = 'gbence@algernon.hu'
data/lib/g3a/i18n.rb CHANGED
@@ -11,7 +11,7 @@ end
11
11
 
12
12
  module G3A::I18n::Backend
13
13
  class ObjectHandler < ::I18n::Backend::Simple
14
- def translate locale, object, format=:default
14
+ def translate locale, object, options={}
15
15
  case object
16
16
  when Float
17
17
  source = object.to_s
@@ -21,8 +21,14 @@ module G3A::I18n::Backend
21
21
  source
22
22
  when Integer
23
23
  source = object.to_s
24
- (translations[locale][:integer] || [] rescue []).each do |rule|
25
- source.gsub!(Regexp.new(rule.keys.first), rule.values.first)
24
+ if options[:format] == :ordinal
25
+ (translations[locale][:integer_ordinal] || [] rescue []).each do |rule|
26
+ source.gsub!(Regexp.new(rule.keys.first), rule.values.first)
27
+ end
28
+ else
29
+ (translations[locale][:integer] || [] rescue []).each do |rule|
30
+ source.gsub!(Regexp.new(rule.keys.first), rule.values.first)
31
+ end
26
32
  end
27
33
  source
28
34
  else
data/locales/hu.yml CHANGED
@@ -55,6 +55,71 @@ hu:
55
55
  - "2": "két"
56
56
  - "1": "egy"
57
57
  - "0": ""
58
+ :integer_ordinal:
59
+ - "[-−](\d\d*)": "mínusz \1"
60
+ - "^0$": "nulladik"
61
+ - "^1$": "első"
62
+ - "^2$": "második"
63
+ - "(\d{1,3})0{21}": "\1trilliárdodik"
64
+ - "(\d{1,3})(\d{21})": "\1trilliárd-\2"
65
+ - "-000": "-"
66
+ - "(\d{1,3})0{18}": "\1trilliomodik"
67
+ - "(\d{1,3})(\d{18})": "\1trillió-\2"
68
+ - "-000": "-"
69
+ - "(\d{1,3})0{15}": "\1billiárdodik"
70
+ - "(\d{1,3})(\d{15})": "\1billiárd-\2"
71
+ - "-000": "-"
72
+ - "(\d{1,3})0{12}": "\1billiomodik"
73
+ - "(\d{1,3})(\d{12})": "\1billió-\2"
74
+ - "-000": "-"
75
+ - "(\d{1,3})0{9}": "\1milliárdodik"
76
+ - "(\d{1,3})(\d{9})": "\1milliárd-\2"
77
+ - "-000": "-"
78
+ - "(\d{1,3})0{6}": "\1milliomodik"
79
+ - "(\d{1,3})(\d{6})": "\1millió-\2"
80
+ - "-000": "-"
81
+ - "(\d{1,3})000$": "\1ezredik"
82
+ - "(\d{1,3})(\d{3})": "\1ezer-\2"
83
+ - "(-|^| )1ezer-": "\1ezer"
84
+ - "100$": "századik"
85
+ - "(\d)00$": "\1századik"
86
+ - "1(\d\d)": "száz\1"
87
+ - "0(\d\d)": "\1"
88
+ - "(\d)(\d\d)": "\1száz\2"
89
+ - "20$": "huszadik"
90
+ - "20": "húsz"
91
+ - "10$": "tizedik"
92
+ - "10": "tíz"
93
+ - "9(\d)": "kilencven\1"
94
+ - "8(\d)": "nyolcvan\1"
95
+ - "7(\d)": "hetven\1"
96
+ - "6(\d)": "hatvan\1"
97
+ - "5(\d)": "ötven\1"
98
+ - "4(\d)": "negyven\1"
99
+ - "3(\d)": "harminc\1"
100
+ - "2(\d)": "huszon\1"
101
+ - "1(\d)": "tizen\1"
102
+ - "0(\d)": "\1"
103
+ - "9$": "kilencedik"
104
+ - "9": "kilenc"
105
+ - "8$": "nyolcadik"
106
+ - "8": "nyolc"
107
+ - "7$": "hetedik"
108
+ - "7": "hét"
109
+ - "6$": "hatodik"
110
+ - "6": "hat"
111
+ - "5$": "ötödik"
112
+ - "5": "öt"
113
+ - "4$": "negyedik"
114
+ - "4": "négy"
115
+ - "3$": "harmadik"
116
+ - "3": "három"
117
+ - "2$": "kettedik"
118
+ - "2": "két"
119
+ - "1$": "egyedik"
120
+ - "1": "egy"
121
+ - "0$": "edik"
122
+ - "0": ""
58
123
  :float:
59
124
  - "\.0$": ""
60
125
  - "\.5$": " és fél"
@@ -17,17 +17,24 @@ context "Hungarian" do
17
17
  lambda { I18n.translate 1 }.should_not raise_error
18
18
  end
19
19
 
20
+ # cardinals
20
21
  {
21
22
  0 => 'nulla',
22
23
  1 => 'egy',
23
24
  2 => 'kettő',
25
+ 3 => 'három',
26
+ 4 => 'négy',
27
+ 5 => 'öt',
28
+ 6 => 'hat',
29
+ 7 => 'hét',
30
+ 8 => 'nyolc',
31
+ 9 => 'kilenc',
24
32
  10 => 'tíz',
25
33
  11 => 'tizenegy',
26
34
  12 => 'tizenkettő',
27
35
  20 => 'húsz',
28
36
  22 => 'huszonkettő',
29
37
  23 => 'huszonhárom',
30
- 12 => 'tizenkettő',
31
38
  100 => 'száz',
32
39
  101 => 'százegy',
33
40
  110 => 'száztíz',
@@ -64,5 +71,63 @@ context "Hungarian" do
64
71
  end
65
72
  EOC
66
73
  end
74
+
75
+ # ordinals
76
+ {
77
+ 0 => 'nulladik',
78
+ 1 => 'első',
79
+ 2 => 'második',
80
+ 3 => 'harmadik',
81
+ 4 => 'negyedik',
82
+ 5 => 'ötödik',
83
+ 6 => 'hatodik',
84
+ 7 => 'hetedik',
85
+ 8 => 'nyolcadik',
86
+ 9 => 'kilencedik',
87
+ 10 => 'tizedik',
88
+ 11 => 'tizenegyedik',
89
+ 12 => 'tizenkettedik',
90
+ 20 => 'huszadik',
91
+ 21 => 'huszonegyedik',
92
+ 22 => 'huszonkettedik',
93
+ 23 => 'huszonharmadik',
94
+ 24 => 'huszonnegyedik',
95
+ 100 => 'századik',
96
+ 101 => 'százegyedik',
97
+ 110 => 'száztizedik',
98
+ 123 => 'százhuszonharmadik',
99
+ 201 => 'kétszázegyedik',
100
+ 1001 => 'ezeregyedik',
101
+ 1010 => 'ezertizedik',
102
+ 1011 => 'ezertizenegyedik',
103
+ 1100 => 'ezerszázadik',
104
+ 1234 => 'ezerkétszázharmincnegyedik',
105
+ 1999 => 'ezerkilencszázkilencvenkilencedik',
106
+ 2000 => 'kétezredik',
107
+ 2001 => 'kétezer-egyedik',
108
+ 3000 => 'háromezredik',
109
+ 22222 => 'huszonkétezer-kétszázhuszonkettedik',
110
+ 100001 => 'százezer-egyedik',
111
+ 200000 => 'kétszázezredik',
112
+ 2000000 => 'kétmilliomodik',
113
+ 2200000 => 'kétmillió-kétszázezredik',
114
+ 2200001 => 'kétmillió-kétszázezer-egyedik',
115
+ 2_000_000_000 => 'kétmilliárdodik',
116
+ 2_000_000_001 => 'kétmilliárd-egyedik',
117
+ 2_000_000_000_000 => 'kétbilliomodik',
118
+ 2_000_200_000_000 => 'kétbillió-kétszázmilliomodik',
119
+ 2_000_000_200_000 => 'kétbillió-kétszázezredik',
120
+ 2_002_020_200_222 => 'kétbillió-kétmilliárd-húszmillió-kétszázezer-kétszázhuszonkettedik',
121
+ 12_345_678_901_234_567_890 => 'tizenkéttrillió-háromszáznegyvenötbilliárd-hatszázhetvennyolcbillió-kilencszázegymilliárd-kétszázharmincnégymillió-ötszázhatvanhétezer-nyolcszázkilencvenedik',
122
+ -12_345_678_901_234_567_890 => 'mínusz tizenkéttrillió-háromszáznegyvenötbilliárd-hatszázhetvennyolcbillió-kilencszázegymilliárd-kétszázharmincnégymillió-ötszázhatvanhétezer-nyolcszázkilencvenedik'
123
+ }.each do |number,translation|
124
+ instance_eval <<-EOC
125
+ describe #{number}.to_s do
126
+ it "should equal to '#{translation}'" do
127
+ I18n.translate(#{number}, :format => :ordinal).should == "#{translation}"
128
+ end
129
+ end
130
+ EOC
131
+ end
67
132
  end
68
133
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gbence-g3a_i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bence Golda