Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Hungarian language. #40

Merged
merged 1 commit into from
Jan 31, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## Next Release

### Features
* Add Hungarian language.

## 0.5.0 (October 19, 2012)

### Features
Expand Down
8 changes: 8 additions & 0 deletions README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Converti les nombres en lettres en utilisant la librairie I18n.
* Türkçe**
* Italiano**
* Nederlands**
* Hungarian

** Experimental

Expand All @@ -37,6 +38,7 @@ Converti les nombres en lettres en utilisant la librairie I18n.
=> "yirmi bir"
=> "ventiuno"
=> "éénentwintig"
=> "huszonegy"

231.to_words
=> "two hundred thirty-one"
Expand All @@ -46,6 +48,7 @@ Converti les nombres en lettres en utilisant la librairie I18n.
=> "iki yüz otuz bir"
=> "2 cento trentauno"
=> "tweehonderdéénendertig"
=> "kettőszázharmincegy"

4030.to_words
=> "four thousand thirty"
Expand All @@ -55,6 +58,7 @@ Converti les nombres en lettres en utilisant la librairie I18n.
=> "dört bin otuz"
=> "quattro mille trenta"
=> "vierthousanddertig"
=> "négyezer-harminc"

1000100.to_words
=> "one million one hundred"
Expand All @@ -64,6 +68,7 @@ Converti les nombres en lettres en utilisant la librairie I18n.
=> "bir milyon bir yüz"
=> "uno milione 1 cento"
=> "één miljoen honderd"
=> "egymillió-egyszáz"

1000000000000000000000000000000000.to_words
=> "one decillion"
Expand All @@ -73,11 +78,13 @@ Converti les nombres en lettres en utilisant la librairie I18n.
=> "bir desilyon"
=> "uno decillion"
=> "één decillion"
=> "egykvintilliárd"

[1, 2, 3].to_words
=> ["one", "two", "three"]
=> ["один", "два", "три"]
=> ["un", "deux", "trois"]
=> ["egy", "kettő", "három"]

[11, 22, 133].to_words
=> ["eleven", "twenty-two", "one hundred thirty-three"]
Expand All @@ -87,6 +94,7 @@ Converti les nombres en lettres en utilisant la librairie I18n.
=> ["on bir", "yirmi iki", "bir yüz otuz üç"]
=> ["undici", "ventidue", "1 cento trentatre"]
=> ["elf", "tweeentwintig", "honderddrieendertig"]
=> ["tizenegy", "huszonkettő", "egyszázharminchárom"]

== Requirements / Требования / Configuration Requise

Expand Down
7 changes: 7 additions & 0 deletions lib/numbers_and_words/i18n/locales/numbers.hu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
hu:
numbers:
ones: [nulla, egy, kettő, három, négy, öt, hat, hét, nyolc, kilenc]
tens: [nulla, tíz, húsz, harminc, negyven, ötven, hatvan, hetven, nyolcvan, kilencven]
tens_with_ones: [nulla, tizen, huszon, harminc, negyven, ötven, hatvan, hetven, nyolcvan, kilencven]
hundreds: száz
mega: [egy, ezer, millió, milliárd, billió, billiárd, trillió, trilliárd, kvadrillió, kvadrilliárd, kvintillió, kvintilliárd]
1 change: 1 addition & 0 deletions lib/numbers_and_words/strategies.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
require 'numbers_and_words/strategies/fr'
require 'numbers_and_words/strategies/nl'
require 'numbers_and_words/strategies/it'
require 'numbers_and_words/strategies/hu'
44 changes: 44 additions & 0 deletions lib/numbers_and_words/strategies/hu.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
module NumbersAndWords
module Strategies
class Hu < Base
include Families::Latin
include NumbersAndWords::TranslationsHelpers::Hu

def convert figures
super
@words.empty? ? zero : @words.collect { |iteration| iteration.reverse.join }.reverse.join(greater_than_2000? && '-' || '')
end

private
def greater_than_2000?
figures.length > 4 || (figures.length == 4 && figures.last >= 2)
end

def strings
if figures.capacity_count
number_without_capacity_to_words + complex_number_to_words
elsif figures.hundreds
[hundreds_number_to_words]
elsif figures.tens or figures.ones
[simple_number_to_words]
else
[]
end
end

def complex_number_to_words
(1..figures.capacity_count).map{|capacity| capacity_iteration(capacity).flatten}.reject(&:empty?) # flatten inside, reject empty
end

def simple_number_to_words
if figures.teens || figures.tens
[complex_tens]
elsif figures.ones
[translation_ones(figures.ones)]
else
[]
end
end
end
end
end
1 change: 1 addition & 0 deletions lib/numbers_and_words/translations_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
require 'numbers_and_words/translations_helpers/fr'
require 'numbers_and_words/translations_helpers/nl'
require 'numbers_and_words/translations_helpers/it'
require 'numbers_and_words/translations_helpers/hu'
17 changes: 17 additions & 0 deletions lib/numbers_and_words/translations_helpers/hu.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module NumbersAndWords
module TranslationsHelpers
module Hu
include NumbersAndWords::TranslationsHelpers::Base
include NumbersAndWords::TranslationsHelpers::Families::Latin

def translation_tens_with_ones numbers
ones, tens = numbers
[t(:tens_with_ones)[tens], translation_ones(ones)].join ''
end

def translation_hundreds number
[t(:ones)[number], t(:hundreds)].join ''
end
end
end
end
19 changes: 19 additions & 0 deletions spec/numbers_and_words/array/fixture_examples/hu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
to_words:
simple_example:
?
- 1
- 2
- 3
:
- egy
- kettő
- három
complex_example:
?
- 101
- 21
- 13
:
- egyszázegy
- huszonegy
- tizenhárom
54 changes: 54 additions & 0 deletions spec/numbers_and_words/integer/fixture_examples/hu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
to_words:
ones:
0: nulla
1: egy
9: kilenc
teens:
10: tíz
11: tizenegy
19: tizenkilenc
20: húsz
21: huszonegy
80: nyolcvan
90: kilencven
99: kilencvenkilenc
hundreds:
100: egyszáz
101: egyszázegy
111: egyszáztizenegy
120: egyszázhúsz
121: egyszázhuszonegy
900: kilencszáz
909: kilencszázkilenc
919: kilencszáztizenkilenc
990: kilencszázkilencven
999: kilencszázkilencvenkilenc
thousands:
1000: egyezer
1111: egyezeregyszáztizenegy
2000: kettőezer
2001: kettőezer-egy
2111: kettőezer-egyszáztizenegy
4000: négyezer
5000: ötezer
11000: tizenegyezer
21000: huszonegyezer
999000: kilencszázkilencvenkilencezer
999999: kilencszázkilencvenkilencezer-kilencszázkilencvenkilenc
millions:
1000000: egymillió
2000000: kettőmillió
4000000: négymillió
5000000: ötmillió
999000000: kilencszázkilencvenkilencmillió
999000999: kilencszázkilencvenkilencmillió-kilencszázkilencvenkilenc
999999000: kilencszázkilencvenkilencmillió-kilencszázkilencvenkilencezer
999999999: kilencszázkilencvenkilencmillió-kilencszázkilencvenkilencezer-kilencszázkilencvenkilenc
billions:
1174315110: egymilliárd-egyszázhetvennégymillió-háromszáztizenötezer-egyszáztíz
1174315119: egymilliárd-egyszázhetvennégymillió-háromszáztizenötezer-egyszáztizenkilenc
15174315119: tizenötmilliárd-egyszázhetvennégymillió-háromszáztizenötezer-egyszáztizenkilenc
35174315119: harmincötmilliárd-egyszázhetvennégymillió-háromszáztizenötezer-egyszáztizenkilenc
935174315119: kilencszázharmincötmilliárd-egyszázhetvennégymillió-háromszáztizenötezer-egyszáztizenkilenc
trillions:
2935174315119: kettőbillió-kilencszázharmincötmilliárd-egyszázhetvennégymillió-háromszáztizenötezer-egyszáztizenkilenc