GetListItemText_tr_TR.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. // Copyright (c) Microsoft. All rights reserved.
  2. // Licensed under the MIT license. See LICENSE file in the project root for full license information.
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. namespace OpenXmlPowerTools
  8. {
  9. public class ListItemTextGetter_tr_TR
  10. {
  11. private static string[] RomanOnes =
  12. {
  13. "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"
  14. };
  15. private static string[] RomanTens =
  16. {
  17. "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"
  18. };
  19. private static string[] RomanHundreds =
  20. {
  21. "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "M"
  22. };
  23. private static string[] RomanThousands =
  24. {
  25. "", "M", "MM", "MMM", "MMMM", "MMMMM", "MMMMMM", "MMMMMMM", "MMMMMMMM",
  26. "MMMMMMMMM", "MMMMMMMMMM"
  27. };
  28. private static string[] OneThroughNineteen = {
  29. "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz",
  30. "dokuz", "on", "onbir", "oniki", "onüç", "ondört",
  31. "onbeş", "onaltı", "onyedi", "onsekiz", "ondokuz"
  32. };
  33. private static string[] Tens = {
  34. "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş",
  35. "seksen", "doksan"
  36. };
  37. private static string[] OrdinalOneThroughNineteen = {
  38. "birinci", "ikinci", "üçüncü", "dördüncü", "beşinci", "altıncı",
  39. "yedinci", "sekizinci", "dokuzuncu", "onuncu", "onbirinci", "onikinci",
  40. "onüçüncü", "ondördüncü", "onbeşinci", "onaltıncı",
  41. "onyedinci", "onsekizinci", "ondokuzuncu"
  42. };
  43. private static string[] TwoThroughNineteen = {
  44. "", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz",
  45. "dokuz", "on", "onbir", "oniki", "onüç", "ondört",
  46. "onbeş", "onaltı", "onyedi", "onsekiz", "ondokuz"
  47. };
  48. private static string[] OrdinalTenths = {
  49. "onuncu", "yirminci", "otuzuncu", "kırkıncı", "ellinci",
  50. "altmışıncı", "yetmişinci", "sekseninci", "doksanıncı"
  51. };
  52. public static string GetListItemText(string languageCultureName, int levelNumber, string numFmt)
  53. {
  54. #region
  55. if (numFmt == "decimal")
  56. {
  57. return levelNumber.ToString();
  58. }
  59. if (numFmt == "decimalZero")
  60. {
  61. if (levelNumber <= 9)
  62. return "0" + levelNumber.ToString();
  63. else
  64. return levelNumber.ToString();
  65. }
  66. if (numFmt == "upperRoman")
  67. {
  68. int ones = levelNumber % 10;
  69. int tens = (levelNumber % 100) / 10;
  70. int hundreds = (levelNumber % 1000) / 100;
  71. int thousands = levelNumber / 1000;
  72. return RomanThousands[thousands] + RomanHundreds[hundreds] +
  73. RomanTens[tens] + RomanOnes[ones];
  74. }
  75. if (numFmt == "lowerRoman")
  76. {
  77. int ones = levelNumber % 10;
  78. int tens = (levelNumber % 100) / 10;
  79. int hundreds = (levelNumber % 1000) / 100;
  80. int thousands = levelNumber / 1000;
  81. return (RomanThousands[thousands] + RomanHundreds[hundreds] +
  82. RomanTens[tens] + RomanOnes[ones]).ToLower();
  83. }
  84. if (numFmt == "upperLetter")
  85. {
  86. string a = "ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";
  87. //string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  88. int c = (levelNumber - 1) / 29;
  89. int n = (levelNumber - 1) % 29;
  90. char x = a[n];
  91. return "".PadRight(c + 1, x);
  92. }
  93. if (numFmt == "lowerLetter")
  94. {
  95. string a = "abcçdefgğhıijklmnoöprsştuüvyz";
  96. int c = (levelNumber - 1) / 29;
  97. int n = (levelNumber - 1) % 29;
  98. char x = a[n];
  99. return "".PadRight(c + 1, x);
  100. }
  101. if (numFmt == "ordinal")
  102. {
  103. string suffix;
  104. /*if (levelNumber % 100 == 11 || levelNumber % 100 == 12 ||
  105. levelNumber % 100 == 13)
  106. suffix = "th";
  107. else if (levelNumber % 10 == 1)
  108. suffix = "st";
  109. else if (levelNumber % 10 == 2)
  110. suffix = "nd";
  111. else if (levelNumber % 10 == 3)
  112. suffix = "rd";
  113. else
  114. suffix = "th";*/
  115. suffix = ".";
  116. return levelNumber.ToString() + suffix;
  117. }
  118. if (numFmt == "cardinalText")
  119. {
  120. string result = "";
  121. int t1 = levelNumber / 1000;
  122. int t2 = levelNumber % 1000;
  123. if (t1 >= 1)
  124. result += OneThroughNineteen[t1 - 1] + " yüz";
  125. if (t1 >= 1 && t2 == 0)
  126. return result.Substring(0, 1).ToUpper() +
  127. result.Substring(1);
  128. if (t1 >= 1)
  129. result += " ";
  130. int h1 = (levelNumber % 1000) / 100;
  131. int h2 = levelNumber % 100;
  132. if (h1 >= 1)
  133. result += OneThroughNineteen[h1 - 1] + " bin";
  134. if (h1 >= 1 && h2 == 0)
  135. return result.Substring(0, 1).ToUpper() +
  136. result.Substring(1);
  137. if (h1 >= 1)
  138. result += " ";
  139. int z = levelNumber % 100;
  140. if (z <= 19)
  141. result += OneThroughNineteen[z - 1];
  142. else
  143. {
  144. int x = z / 10;
  145. int r = z % 10;
  146. result += Tens[x - 1];
  147. if (r >= 1)
  148. result += /*"-" + */OneThroughNineteen[r - 1];
  149. }
  150. return result.Substring(0, 1).ToUpper() +
  151. result.Substring(1);
  152. }
  153. #endregion
  154. if (numFmt == "ordinalText")
  155. {
  156. string result = "";
  157. int t1 = levelNumber / 1000;
  158. int t2 = levelNumber % 1000;
  159. if (t1 >= 1 && t2 != 0)
  160. result += TwoThroughNineteen[t1 - 1] + "bin";
  161. if (t1 >= 1 && t2 == 0)
  162. {
  163. result += TwoThroughNineteen[t1 - 1] + "bininci";
  164. return result.Substring(0, 1).ToUpper() +
  165. result.Substring(1);
  166. }
  167. //if (t1 >= 1)
  168. // result += " ";
  169. int h1 = (levelNumber % 1000) / 100;
  170. int h2 = levelNumber % 100;
  171. if (h1 >= 1 && h2 != 0)
  172. result += TwoThroughNineteen[h1 - 1] + "yüz";
  173. if (h1 >= 1 && h2 == 0)
  174. {
  175. result += TwoThroughNineteen[h1 - 1] + "yüzüncü";
  176. return result.Substring(0, 1).ToUpper() +
  177. result.Substring(1);
  178. }
  179. //if (h1 >= 1)
  180. // result += " ";
  181. int z = levelNumber % 100;
  182. if (z <= 19)
  183. result += OrdinalOneThroughNineteen[z - 1];
  184. else
  185. {
  186. int x = z / 10;
  187. int r = z % 10;
  188. if (r == 0)
  189. result += OrdinalTenths[x - 1];
  190. else
  191. result += Tens[x - 1];
  192. if (r >= 1)
  193. result += OrdinalOneThroughNineteen[r - 1]; //result += "-" + OrdinalOneThroughNineteen[r - 1];
  194. }
  195. return result.Substring(0, 1).ToUpper() +
  196. result.Substring(1);
  197. }
  198. if (numFmt == "0001, 0002, 0003, ...")
  199. {
  200. return string.Format("{0:0000}", levelNumber);
  201. }
  202. if (numFmt == "bullet")
  203. return "";
  204. return levelNumber.ToString();
  205. }
  206. }
  207. }