123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- using System;
- using System.Text;
- using System.Collections;
- using System.Collections.Generic;
- namespace FastReport.Functions
- {
- internal class NumToWordsEs : NumToWordsBase
- {
- private static Dictionary<string, CurrencyInfo> currencyList;
- private static string[] fixedWords =
- {
- "", "un", "dos", "tres", "cuatro", "cinco", "seis",
- "siete", "ocho", "nueve", "diez", "once",
- "doce", "trece", "catorce", "quince",
- "dieciséis", "diecisiete", "dieciocho", "diecinueve",
- "veinte", "veintiún", "veintidós", "veintitrés", "veinticuatro",
- "veinticinco", "veintiséis", "veintisiete", "veintiocho", "veintinueve"
- };
- private static string[] tens =
- {
- "", "diez", "veinte", "treinta", "cuarenta", "cincuenta",
- "sesenta", "setenta", "ochenta", "noventa"
- };
- private static string[] hunds =
- {
- "", "cien", "doscientos", "trescientos", "cuatrocientos",
- "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos"
- };
- private static WordInfo thousands = new WordInfo("mil");
- private static WordInfo millions = new WordInfo("millón", "millones");
- private static WordInfo milliards = new WordInfo("mil");
- private static WordInfo trillions = new WordInfo("billón", "billones");
- protected override void Str(long value, WordInfo senior, StringBuilder result)
- {
- if (value == 0)
- {
- result.Append(GetZero() + " " + senior.many + " ");
- }
- else if (value == 1)
- {
- if (senior.male)
- result.Append("un ");
- else
- result.Append("una ");
- result.Append(senior.one).Append(" ");
- }
- else
- {
- if (value % 1000 != 0)
- result.Append(Str1000(value, senior, 1).Replace("veintiún", "veintiun"));
- else
- result.Append(senior.many + " ");
- value /= 1000;
- result.Insert(0, Str1000(value, GetThousands(), 2));
- value /= 1000;
- result.Insert(0, Str1000(value, GetMillions(), 3));
- // in spanish, the "milliard" is not used. They use "thousand of million" instead
- bool hasMillions = value % 1000 > 0;
- value /= 1000;
- string thousandsOfMillions = Str1000(value, GetThousands(), 4);
- if (value > 0 && !hasMillions)
- thousandsOfMillions += "millones ";
- result.Insert(0, thousandsOfMillions);
- value /= 1000;
- result.Insert(0, Str1000(value, GetTrillions(), 5));
- }
- }
- protected override string Case(long value, WordInfo info)
- {
- // return things (dollars, euros, pages, etc) in the plural form unless it is 1.
- // the "1" case is handled in the Str method.
- if (info == thousands || info == millions || info == milliards || info == trillions)
- {
- if (value == 1)
- return info.one;
- }
- return info.many;
- }
- protected override int GetFixedWordsCount()
- {
- return 30;
- }
- protected override string GetFixedWords(bool male, long value)
- {
- return fixedWords[value];
- }
- protected override string GetTen(bool male, long value)
- {
- return tens[value];
- }
- protected override string GetHund(bool male, long value)
- {
- if (value / 100 == 1 && value % 100 != 0)
- return "ciento";
- return hunds[value / 100];
- }
- protected override WordInfo GetThousands()
- {
- return thousands;
- }
- protected override WordInfo GetMillions()
- {
- return millions;
- }
- protected override WordInfo GetMilliards()
- {
- return milliards;
- }
- protected override WordInfo GetTrillions()
- {
- return trillions;
- }
- protected override CurrencyInfo GetCurrency(string currencyName)
- {
- currencyName = currencyName.ToUpper();
- if (currencyName == "CAD")
- currencyName = "USD";
- return currencyList[currencyName];
- }
- protected override string GetZero()
- {
- return "cero";
- }
- protected override string GetMinus()
- {
- return "minus";
- }
- protected override string GetDecimalSeparator()
- {
- return "con ";
- }
- protected override string Get10_1Separator()
- {
- return " y ";
- }
- static NumToWordsEs()
- {
- currencyList = new Dictionary<string, CurrencyInfo>();
- currencyList.Add("USD", new CurrencyInfo(
- new WordInfo("dolar", "dolares"),
- new WordInfo("centavo", "centavos")));
- currencyList.Add("EUR", new CurrencyInfo(
- new WordInfo("euro", "euros"),
- new WordInfo("centavo", "centavos")));
- currencyList.Add("MXN", new CurrencyInfo(
- new WordInfo("peso", "pesos"),
- new WordInfo("centavo", "centavos")));
- }
- }
- }
|