diff --git a/release_notes.md b/release_notes.md index ae0ddac56..111a85918 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,6 +1,7 @@ ###In Development - [#217](https://github.com/Mehdik/Humanizer/pull/217): Changed OrdinalizeExtensions to better accommodate localisations. Added pt-BR and Spanish Ordinalize localisation. - [#221](https://github.com/Mehdik/Humanizer/pull/221): Added Russian ordinalizer + - [#228](https://github.com/Mehdik/Humanizer/pull/228): Fixed the "twenties" in SpanishNumberToWordsConverter [Commits](https://github.com/MehdiK/Humanizer/compare/v1.22.1...master) diff --git a/src/Humanizer.Tests/Localisation/es/NumberToWordsTests.cs b/src/Humanizer.Tests/Localisation/es/NumberToWordsTests.cs index d8c96abab..a2da4509b 100644 --- a/src/Humanizer.Tests/Localisation/es/NumberToWordsTests.cs +++ b/src/Humanizer.Tests/Localisation/es/NumberToWordsTests.cs @@ -12,7 +12,7 @@ public NumberToWordsTests() : base("es-ES") { } [InlineData(1, "uno")] [InlineData(10, "diez")] [InlineData(11, "once")] - [InlineData(122, "ciento veinte dos")] + [InlineData(122, "ciento veintidós")] [InlineData(3501, "tres mil quinientos uno")] [InlineData(100, "cien")] [InlineData(1000, "mil")] @@ -28,17 +28,19 @@ public NumberToWordsTests() : base("es-ES") { } [InlineData(11111111, "once millones ciento once mil ciento once")] [InlineData(111111111, "ciento once millones ciento once mil ciento once")] [InlineData(1111111111, "mil millones ciento once millones ciento once mil ciento once")] - [InlineData(123, "ciento veinte tres")] + [InlineData(123, "ciento veintitrés")] [InlineData(1234, "mil doscientos treinta y cuatro")] [InlineData(12345, "doce mil trescientos cuarenta y cinco")] - [InlineData(123456, "ciento veinte tres mil cuatrocientos cincuenta y seis")] + [InlineData(123456, "ciento veintitrés mil cuatrocientos cincuenta y seis")] [InlineData(1234567, "millón doscientos treinta y cuatro mil quinientos sesenta y siete")] [InlineData(12345678, "doce millones trescientos cuarenta y cinco mil seiscientos setenta y ocho")] - [InlineData(123456789, "ciento veinte tres millones cuatrocientos cincuenta y seis mil setecientos ochenta y nueve")] + [InlineData(123456789, "ciento veintitrés millones cuatrocientos cincuenta y seis mil setecientos ochenta y nueve")] [InlineData(1234567890, "mil millones doscientos treinta y cuatro millones quinientos sesenta y siete mil ochocientos noventa")] [InlineData(15, "quince")] [InlineData(16, "dieciséis")] - [InlineData(25, "veinte cinco")] + [InlineData(20, "veinte")] + [InlineData(22, "veintidós")] + [InlineData(25, "veinticinco")] [InlineData(35, "treinta y cinco")] [InlineData(1999, "mil novecientos noventa y nueve")] [InlineData(2014, "dos mil catorce")] diff --git a/src/Humanizer/Localisation/NumberToWords/SpanishNumberToWordsConverter.cs b/src/Humanizer/Localisation/NumberToWords/SpanishNumberToWordsConverter.cs index b3880e6bb..8aaf782b0 100644 --- a/src/Humanizer/Localisation/NumberToWords/SpanishNumberToWordsConverter.cs +++ b/src/Humanizer/Localisation/NumberToWords/SpanishNumberToWordsConverter.cs @@ -6,7 +6,9 @@ namespace Humanizer.Localisation.NumberToWords internal class SpanishNumberToWordsConverter : DefaultNumberToWordsConverter { private static readonly string[] HundredsMap = { "cero", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos" }; - private static readonly string[] UnitsMap = { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve" }; + private static readonly string[] UnitsMap = { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", + "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiuno", + "veintidós", "veintitrés", "veinticuatro", "veinticinco", "veintiséis", "veintisiete", "veintiocho", "veintinueve"}; private static readonly string[] TensMap = { "cero", "diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa" }; private static readonly Dictionary Ordinals = new Dictionary @@ -68,7 +70,7 @@ public override string Convert(int number) if (number > 0) { - if (number < 20) + if (number < 30) parts.Add(UnitsMap[number]); else if (number > 20 && number < 30) { var lastPart = TensMap[number / 10];