| /*************************************************************************** |
| |
| Copyright (c) Microsoft Corporation 2012-2015. |
| |
| This code is licensed using the Microsoft Public License (Ms-PL). The text of the license can be found here: |
| |
| http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx |
| |
| Published at http://OpenXmlDeveloper.org |
| Resource Center and Documentation: http://openxmldeveloper.org/wiki/w/wiki/powertools-for-open-xml.aspx |
| |
| Developer: Ayberk CAL |
| Coordinator: Eric White |
| Blog: http://www.ericwhite.com |
| Twitter: @EricWhiteDev |
| Email: eric@ericwhite.com |
| |
| ***************************************************************************/ |
| |
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Text; |
| |
| namespace OpenXmlPowerTools |
| { |
| public class ListItemTextGetter_tr_TR |
| { |
| private static string[] RomanOnes = |
| { |
| "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" |
| }; |
| |
| private static string[] RomanTens = |
| { |
| "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" |
| }; |
| |
| private static string[] RomanHundreds = |
| { |
| "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "M" |
| }; |
| |
| private static string[] RomanThousands = |
| { |
| "", "M", "MM", "MMM", "MMMM", "MMMMM", "MMMMMM", "MMMMMMM", "MMMMMMMM", |
| "MMMMMMMMM", "MMMMMMMMMM" |
| }; |
| |
| private static string[] OneThroughNineteen = { |
| "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", |
| "dokuz", "on", "onbir", "oniki", "onüç", "ondört", |
| "onbeş", "onaltı", "onyedi", "onsekiz", "ondokuz" |
| }; |
| |
| private static string[] Tens = { |
| "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş", |
| "seksen", "doksan" |
| }; |
| |
| private static string[] OrdinalOneThroughNineteen = { |
| "birinci", "ikinci", "üçüncü", "dördüncü", "beşinci", "altıncı", |
| "yedinci", "sekizinci", "dokuzuncu", "onuncu", "onbirinci", "onikinci", |
| "onüçüncü", "ondördüncü", "onbeşinci", "onaltıncı", |
| "onyedinci", "onsekizinci", "ondokuzuncu" |
| }; |
| |
| private static string[] TwoThroughNineteen = { |
| "", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", |
| "dokuz", "on", "onbir", "oniki", "onüç", "ondört", |
| "onbeş", "onaltı", "onyedi", "onsekiz", "ondokuz" |
| }; |
| |
| private static string[] OrdinalTenths = { |
| "onuncu", "yirminci", "otuzuncu", "kırkıncı", "ellinci", |
| "altmışıncı", "yetmişinci", "sekseninci", "doksanıncı" |
| }; |
| |
| public static string GetListItemText(string languageCultureName, int levelNumber, string numFmt) |
| { |
| #region |
| if (numFmt == "decimal") |
| { |
| return levelNumber.ToString(); |
| } |
| if (numFmt == "decimalZero") |
| { |
| if (levelNumber <= 9) |
| return "0" + levelNumber.ToString(); |
| else |
| return levelNumber.ToString(); |
| } |
| if (numFmt == "upperRoman") |
| { |
| int ones = levelNumber % 10; |
| int tens = (levelNumber % 100) / 10; |
| int hundreds = (levelNumber % 1000) / 100; |
| int thousands = levelNumber / 1000; |
| return RomanThousands[thousands] + RomanHundreds[hundreds] + |
| RomanTens[tens] + RomanOnes[ones]; |
| } |
| if (numFmt == "lowerRoman") |
| { |
| int ones = levelNumber % 10; |
| int tens = (levelNumber % 100) / 10; |
| int hundreds = (levelNumber % 1000) / 100; |
| int thousands = levelNumber / 1000; |
| return (RomanThousands[thousands] + RomanHundreds[hundreds] + |
| RomanTens[tens] + RomanOnes[ones]).ToLower(); |
| } |
| if (numFmt == "upperLetter") |
| { |
| string a = "ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ"; |
| //string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
| int c = (levelNumber - 1) / 29; |
| int n = (levelNumber - 1) % 29; |
| char x = a[n]; |
| return "".PadRight(c + 1, x); |
| } |
| if (numFmt == "lowerLetter") |
| { |
| string a = "abcçdefgğhıijklmnoöprsştuüvyz"; |
| int c = (levelNumber - 1) / 29; |
| int n = (levelNumber - 1) % 29; |
| char x = a[n]; |
| return "".PadRight(c + 1, x); |
| } |
| if (numFmt == "ordinal") |
| { |
| string suffix; |
| /*if (levelNumber % 100 == 11 || levelNumber % 100 == 12 || |
| levelNumber % 100 == 13) |
| suffix = "th"; |
| else if (levelNumber % 10 == 1) |
| suffix = "st"; |
| else if (levelNumber % 10 == 2) |
| suffix = "nd"; |
| else if (levelNumber % 10 == 3) |
| suffix = "rd"; |
| else |
| suffix = "th";*/ |
| suffix = "."; |
| return levelNumber.ToString() + suffix; |
| } |
| if (numFmt == "cardinalText") |
| { |
| string result = ""; |
| int t1 = levelNumber / 1000; |
| int t2 = levelNumber % 1000; |
| if (t1 >= 1) |
| result += OneThroughNineteen[t1 - 1] + " yüz"; |
| if (t1 >= 1 && t2 == 0) |
| return result.Substring(0, 1).ToUpper() + |
| result.Substring(1); |
| if (t1 >= 1) |
| result += " "; |
| int h1 = (levelNumber % 1000) / 100; |
| int h2 = levelNumber % 100; |
| if (h1 >= 1) |
| result += OneThroughNineteen[h1 - 1] + " bin"; |
| if (h1 >= 1 && h2 == 0) |
| return result.Substring(0, 1).ToUpper() + |
| result.Substring(1); |
| if (h1 >= 1) |
| result += " "; |
| int z = levelNumber % 100; |
| if (z <= 19) |
| result += OneThroughNineteen[z - 1]; |
| else |
| { |
| int x = z / 10; |
| int r = z % 10; |
| result += Tens[x - 1]; |
| if (r >= 1) |
| result += /*"-" + */OneThroughNineteen[r - 1]; |
| } |
| return result.Substring(0, 1).ToUpper() + |
| result.Substring(1); |
| } |
| #endregion |
| if (numFmt == "ordinalText") |
| { |
| string result = ""; |
| int t1 = levelNumber / 1000; |
| int t2 = levelNumber % 1000; |
| if (t1 >= 1 && t2 != 0) |
| result += TwoThroughNineteen[t1 - 1] + "bin"; |
| if (t1 >= 1 && t2 == 0) |
| { |
| result += TwoThroughNineteen[t1 - 1] + "bininci"; |
| return result.Substring(0, 1).ToUpper() + |
| result.Substring(1); |
| } |
| //if (t1 >= 1) |
| // result += " "; |
| int h1 = (levelNumber % 1000) / 100; |
| int h2 = levelNumber % 100; |
| if (h1 >= 1 && h2 != 0) |
| result += TwoThroughNineteen[h1 - 1] + "yüz"; |
| if (h1 >= 1 && h2 == 0) |
| { |
| result += TwoThroughNineteen[h1 - 1] + "yüzüncü"; |
| return result.Substring(0, 1).ToUpper() + |
| result.Substring(1); |
| } |
| //if (h1 >= 1) |
| // result += " "; |
| int z = levelNumber % 100; |
| if (z <= 19) |
| result += OrdinalOneThroughNineteen[z - 1]; |
| else |
| { |
| int x = z / 10; |
| int r = z % 10; |
| if (r == 0) |
| result += OrdinalTenths[x - 1]; |
| else |
| result += Tens[x - 1]; |
| if (r >= 1) |
| result += OrdinalOneThroughNineteen[r - 1]; //result += "-" + OrdinalOneThroughNineteen[r - 1]; |
| } |
| return result.Substring(0, 1).ToUpper() + |
| result.Substring(1); |
| } |
| if (numFmt == "0001, 0002, 0003, ...") |
| { |
| return string.Format("{0:0000}", levelNumber); |
| } |
| if (numFmt == "bullet") |
| return ""; |
| return levelNumber.ToString(); |
| } |
| } |
| } |