diff --git a/CHANGELOG.md b/CHANGELOG.md index 499681c1..70597c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Your contribution here. ### Bugs + * Fix big numbers in Spanish. \[[#129](https://github.com/kslazarev/numbers_and_words/pull/129)\] \([@jlduran](https://github.com/jlduran)\) \(assignee: [@jlduran](https://github.com/jlduran)\) * Fix typo for number twenty-one in Spanish. \[[#127](https://github.com/kslazarev/numbers_and_words/pull/127)\] \([@jlduran](https://github.com/jlduran)\) \(assignee: [@jlduran](https://github.com/jlduran)\) ## 0.10.5 (March 9, 2016) diff --git a/lib/numbers_and_words/i18n/locales/numbers.es.yml b/lib/numbers_and_words/i18n/locales/numbers.es.yml index e587b07d..b8eacc57 100644 --- a/lib/numbers_and_words/i18n/locales/numbers.es.yml +++ b/lib/numbers_and_words/i18n/locales/numbers.es.yml @@ -4,14 +4,39 @@ es: ones: [cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve] one_twenties: ún ones_twenties: [_, uno, dós, trés, cuatro, cinco, séis, siete, ocho, nueve] - teens: [diez, once, doce, trece, catorce, quince, dieciséis, diecisiete, dieciocho, diecinueve] tens: [_, diez, veinti, treinta, cuarenta, cincuenta, sesenta, setenta, ochenta, noventa] twenty: veinte - hundreds: [ciento, doscientos, trescientos, cuatrocientos, quinientos, seiscientos, setecientos, ochocientos, novecientos] one_hundred: cien - - mega: [_, mil, millón, mil millones, billón, mil billones, trillón, mil trillones, cuatrillón, mil cuatrillones, quintillón, mil quintillones] - megas: [_, mil, millones, mil millones, billones, mil billones, trillones, mil trillones, cuatrillones, mil cuatrillones, quintillones, mil quintillones] + mega: [_, thousand, million, billion, trillion, quadrillion, quintillion, sextillion, septillion, octillion, nonillion, decillion, undecillion, duodecillion, tredecillion, quattuordecillion] + thousand: mil + million: + one: millón + other: millones + billion: mil millones + trillion: + one: billón + other: billones + quadrillion: mil billones + quintillion: + one: trillón + other: trillones + sextillion: mil trillones + septillion: + one: cuatrillón + other: cuatrillones + octillion: mil cuatrillones + nonillion: + one: quintillón + other: quintillones + decillion: mil quintillones + undecillion: + one: sextillón + other: sextillones + duodecillion: mil sextillones + tredecillion: + one: septillón + other: septillones + quattuordecillion: mil septillones union: y diff --git a/lib/numbers_and_words/strategies/figures_converter/languages/es.rb b/lib/numbers_and_words/strategies/figures_converter/languages/es.rb index 71e3d1e0..bcce0c85 100644 --- a/lib/numbers_and_words/strategies/figures_converter/languages/es.rb +++ b/lib/numbers_and_words/strategies/figures_converter/languages/es.rb @@ -8,17 +8,15 @@ class Es < Base def capacity_iteration words = [] capacity_words = words_in_capacity(@current_capacity) - words.push megs(capacity_words) unless capacity_words.empty? - - if 0 < @current_capacity - capacity_words = capacity_words.map do |word| - if twenty_one? - word.gsub(@translations.ones(1), @translations.one_twenties) - elsif !thousand? || !one? - word.gsub(@translations.ones(1), @translations.one) - end - end.compact - end + words.push megs unless capacity_words.empty? + + capacity_words = capacity_words.map do |word| + if twenty_one? + word.gsub(@translations.ones(1), @translations.one_twenties) + elsif !thousand? || !one? + word.gsub(@translations.ones(1), @translations.one) + end + end.compact words + capacity_words end @@ -28,14 +26,19 @@ def hundreds simple_number_to_words.empty?) }) end - def megs(capacity_words) - super({ is_one: capacity_words == [@translations.ones(1)] }) + def megs + if thousand? && + @figures.number_in_capacity(@current_capacity - 1) != 0 + @translations.thousand + else + super({ number: @figures.number_in_capacity(@current_capacity) }) + end end private def one? - [translations.ones(1)] == words_in_capacity(@current_capacity) + [@translations.ones(1)] == words_in_capacity(@current_capacity) end def thousand? diff --git a/lib/numbers_and_words/translations/es.rb b/lib/numbers_and_words/translations/es.rb index 2cb07a14..e6ab1e23 100644 --- a/lib/numbers_and_words/translations/es.rb +++ b/lib/numbers_and_words/translations/es.rb @@ -37,9 +37,8 @@ def hundreds(number, options = {}) options[:is_hundred] ? t(:one_hundred) : t(:hundreds)[number - 1] end - def megs(capacity, options = {}) - options[:is_one] = false if options[:is_one].nil? - options[:is_one] ? t(:mega)[capacity] : t(:megas)[capacity] + def thousand + t(:thousand) end end end diff --git a/spec/numbers_and_words/integer/fixture_examples/es.yml b/spec/numbers_and_words/integer/fixture_examples/es.yml index 01743bb3..42a3addf 100644 --- a/spec/numbers_and_words/integer/fixture_examples/es.yml +++ b/spec/numbers_and_words/integer/fixture_examples/es.yml @@ -47,10 +47,11 @@ to_words: 999999000: novecientos noventa y nueve millones novecientos noventa y nueve mil 999999999: novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve billions: - 1174315110: mil millones ciento setenta y cuatro millones trescientos quince mil ciento diez - 1174315119: mil millones ciento setenta y cuatro millones trescientos quince mil ciento diecinueve - 15174315119: quince mil millones ciento setenta y cuatro millones trescientos quince mil ciento diecinueve - 35174315119: treinta y cinco mil millones ciento setenta y cuatro millones trescientos quince mil ciento diecinueve - 935174315119: novecientos treinta y cinco mil millones ciento setenta y cuatro millones trescientos quince mil ciento diecinueve + 1000000000: mil millones + 1174315110: mil ciento setenta y cuatro millones trescientos quince mil ciento diez + 1174315119: mil ciento setenta y cuatro millones trescientos quince mil ciento diecinueve + 15174315119: quince mil ciento setenta y cuatro millones trescientos quince mil ciento diecinueve + 35174315119: treinta y cinco mil ciento setenta y cuatro millones trescientos quince mil ciento diecinueve + 935174315119: novecientos treinta y cinco mil ciento setenta y cuatro millones trescientos quince mil ciento diecinueve trillions: - 2935174315119: dos billones novecientos treinta y cinco mil millones ciento setenta y cuatro millones trescientos quince mil ciento diecinueve + 2935174315119: dos billones novecientos treinta y cinco mil ciento setenta y cuatro millones trescientos quince mil ciento diecinueve