123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- // Copyright (c) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace OpenXmlPowerTools
- {
- public class ListItemTextGetter_fr_FR
- {
- private static string[] OneThroughNineteen = {
- "", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit",
- "neuf", "dix", "onze", "douze", "treize", "quatorze",
- "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf"
- };
- private static string[] Tens = {
- "", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix",
- "quatre-vingt", "quatre-vingt-dix"
- };
- private static string[] OrdinalOneThroughNineteen = {
- "", "unième", "deuxième", "troisième", "quatrième", "cinquième", "sixième",
- "septième", "huitième", "neuvième", "dixième", "onzième", "douzième",
- "treizième", "quatorzième", "quinzième", "seizième",
- "dix-septième", "dix-huitième", "dix-neuvième"
- };
- private static string[] OrdinalTenths = {
- "", "dixième", "vingtième", "trentième", "quarantième", "cinquantième",
- "soixantième", "soixante-dixième", "quatre-vingtième", "quatre-vingt-dixième"
- };
- private static string[] OrdinalTenthsPlus = {
- "", "", "vingt", "trente", "quarante", "cinquante",
- "soixante", "", "quatre-vingt", ""
- };
- public static string GetListItemText(string languageCultureName, int levelNumber, string numFmt)
- {
- if (numFmt == "cardinalText")
- {
- string result = "";
- var sLevel = (levelNumber + 10000).ToString();
- int thousands = int.Parse(sLevel.Substring(1, 1));
- int hundreds = int.Parse(sLevel.Substring(2, 1));
- int tens = int.Parse(sLevel.Substring(3, 1));
- int ones = int.Parse(sLevel.Substring(4, 1));
- /* exact thousands */
- if (levelNumber == 1000)
- return "Mille";
- if (levelNumber > 1000 && hundreds == 0 && tens == 0 && ones == 0)
- {
- result = OneThroughNineteen[thousands] + " mille";
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* > 1000 */
- if (levelNumber > 1000 && levelNumber < 2000)
- result = "mille ";
- else if (levelNumber > 2000 && levelNumber < 10000)
- result = OneThroughNineteen[thousands] + " mille ";
- /* exact hundreds */
- if (hundreds > 0 && tens == 0 && ones == 0)
- {
- if (hundreds == 1)
- result += "cent";
- else
- result += OneThroughNineteen[hundreds] + " cents";
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* > 100 */
- if (hundreds > 0)
- {
- if (hundreds == 1)
- result += "cent ";
- else
- result += OneThroughNineteen[hundreds] + " cent ";
- }
- /* exact tens */
- if (tens > 0 && ones == 0)
- {
- if (tens == 8)
- result += "quatre-vingts";
- else
- result += Tens[tens];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* 71-79 */
- if (tens == 7)
- {
- if (ones == 1)
- result += Tens[6] + " et " + OneThroughNineteen[ones + 10];
- else
- result += Tens[6] + "-" + OneThroughNineteen[ones + 10];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* 91-99 */
- if (tens == 9)
- {
- result += Tens[8] + "-" + OneThroughNineteen[ones + 10];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- if (tens >= 2)
- {
- if (ones == 1 && tens != 8 && tens != 9)
- result += Tens[tens] + " et un";
- else
- result += Tens[tens] + "-" + OneThroughNineteen[ones];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- if (levelNumber < 20)
- {
- result += OneThroughNineteen[tens * 10 + ones];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- result += OneThroughNineteen[tens * 10 + ones];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- if (numFmt == "ordinal")
- {
- string suffix;
- if (levelNumber == 1)
- suffix = "er";
- else
- suffix = "e";
- return levelNumber.ToString() + suffix;
- }
- if (numFmt == "ordinalText")
- {
- string result = "";
- if (levelNumber == 1)
- return "Premier";
- var sLevel = (levelNumber + 10000).ToString();
- int thousands = int.Parse(sLevel.Substring(1, 1));
- int hundreds = int.Parse(sLevel.Substring(2, 1));
- int tens = int.Parse(sLevel.Substring(3, 1));
- int ones = int.Parse(sLevel.Substring(4, 1));
- /* exact thousands */
- if (levelNumber == 1000)
- return "Millième";
- if (levelNumber > 1000 && hundreds == 0 && tens == 0 && ones == 0)
- {
- result = OneThroughNineteen[thousands] + " millième";
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* > 1000 */
- if (levelNumber > 1000 && levelNumber < 2000)
- result = "mille ";
- else if (levelNumber > 2000 && levelNumber < 10000)
- result = OneThroughNineteen[thousands] + " mille ";
- /* exact hundreds */
- if (hundreds > 0 && tens == 0 && ones == 0)
- {
- if (hundreds == 1)
- result += "centième";
- else
- result += OneThroughNineteen[hundreds] + " centième";
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* > 100 */
- if (hundreds > 0)
- {
- if (hundreds == 1)
- result += "cent ";
- else
- result += OneThroughNineteen[hundreds] + " cent ";
- }
- /* exact tens */
- if (tens > 0 && ones == 0)
- {
- result += OrdinalTenths[tens];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* 71-79 */
- if (tens == 7)
- {
- if (ones == 1)
- result += OrdinalTenthsPlus[6] + " et " + OrdinalOneThroughNineteen[ones + 10];
- else
- result += OrdinalTenthsPlus[6] + "-" + OrdinalOneThroughNineteen[ones + 10];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- /* 91-99 */
- if (tens == 9)
- {
- result += OrdinalTenthsPlus[8] + "-" + OrdinalOneThroughNineteen[ones + 10];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- if (tens >= 2)
- {
- if (ones == 1 && tens != 8 && tens != 9)
- result += OrdinalTenthsPlus[tens] + " et unième";
- else
- result += OrdinalTenthsPlus[tens] + "-" + OrdinalOneThroughNineteen[ones];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- if (levelNumber < 20)
- {
- result += OrdinalOneThroughNineteen[tens * 10 + ones];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- result += OrdinalOneThroughNineteen[tens * 10 + ones];
- return result.Substring(0, 1).ToUpper() + result.Substring(1);
- }
- return null;
- }
- }
- }
|