Merge "Special:Upload should not crash on failing previews"
[mediawiki.git] / languages / classes / LanguageKk_cyrl.php
blob39d19e75f241d7095d0eeec9159b03ab24331a79
1 <?php
2 /**
3 * Kazakh (Қазақша) specific code.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * http://www.gnu.org/copyleft/gpl.html
20 * @file
21 * @ingroup Language
24 /**
25 * Kazakh (Қазақша)
27 * @ingroup Language
29 // @codingStandardsIgnoreStart Ignore class name is not in camel caps format error
30 class LanguageKk_cyrl extends Language {
31 // @codingStandardsIgnoreEnd
32 # Convert from the nominative form of a noun to some other case
33 # Invoked with {{GRAMMAR:case|word}}
34 /**
35 * Cases: genitive, dative, accusative, locative, ablative, comitative + possessive forms
37 * @param string $word
38 * @param string $case
40 * @return string
42 function convertGrammarKk_cyrl( $word, $case ) {
43 global $wgGrammarForms;
44 if ( isset( $wgGrammarForms['kk-kz'][$case][$word] ) ) {
45 return $wgGrammarForms['kk-kz'][$case][$word];
47 if ( isset( $wgGrammarForms['kk-cyrl'][$case][$word] ) ) {
48 return $wgGrammarForms['kk-cyrl'][$case][$word];
50 // Set up some constants...
51 // Vowels in last syllable
52 $frontVowels = [ "е", "ө", "ү", "і", "ә", "э", "я", "ё", "и" ];
53 $backVowels = [ "а", "о", "ұ", "ы" ];
54 $allVowels = [ "е", "ө", "ү", "і", "ә", "э", "а", "о", "ұ", "ы", "я", "ё", "и" ];
55 // Preceding letters
56 $Nasals = [ "м", "н", "ң" ];
57 $Sonants = [ "и", "й", "л", "р", "у", "ю" ];
58 $Consonants = [ "п", "ф", "к", "қ", "т", "ш", "с", "х", "ц", "ч", "щ", "б", "в", "г", "д" ];
59 $Sibilants = [ "ж", "з" ];
60 $Sonorants = [ "и", "й", "л", "р", "у", "ю", "м", "н", "ң", "ж", "з" ];
62 // Possessives
63 $firstPerson = [ "м", "ң" ]; // 1st singular, 2nd unformal
64 $secondPerson = [ "з" ]; // 1st plural, 2nd formal
65 $thirdPerson = [ "ы", "і" ]; // 3rd
67 $lastLetter = $this->lastLetter( $word, $allVowels );
68 $wordEnding =& $lastLetter[0];
69 $wordLastVowel =& $lastLetter[1];
71 // Now convert the word
72 switch ( $case ) {
73 case "dc1":
74 case "genitive": # ilik
75 if ( in_array( $wordEnding, $Consonants ) ) {
76 if ( in_array( $wordLastVowel, $frontVowels ) ) {
77 $word = $word . "тің";
78 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
79 $word = $word . "тың";
81 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) ) {
82 if ( in_array( $wordLastVowel, $frontVowels ) ) {
83 $word = $word . "нің";
84 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
85 $word = $word . "ның";
87 } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) {
88 if ( in_array( $wordLastVowel, $frontVowels ) ) {
89 $word = $word . "дің";
90 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
91 $word = $word . "дың";
94 break;
95 case "dc2":
96 case "dative": # barıs
97 if ( in_array( $wordEnding, $Consonants ) ) {
98 if ( in_array( $wordLastVowel, $frontVowels ) ) {
99 $word = $word . "ке";
100 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
101 $word = $word . "қа";
103 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
104 if ( in_array( $wordLastVowel, $frontVowels ) ) {
105 $word = $word . "ге";
106 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
107 $word = $word . "ға";
110 break;
111 case "dc21":
112 case "possessive dative": # täweldık + barıs
113 if ( in_array( $wordEnding, $firstPerson ) ) {
114 if ( in_array( $wordLastVowel, $frontVowels ) ) {
115 $word = $word . "е";
116 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
117 $word = $word . "а";
119 } elseif ( in_array( $wordEnding, $secondPerson ) ) {
120 if ( in_array( $wordLastVowel, $frontVowels ) ) {
121 $word = $word . "ге";
122 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
123 $word = $word . "ға";
125 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
126 if ( in_array( $wordLastVowel, $frontVowels ) ) {
127 $word = $word . "не";
128 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
129 $word = $word . "на";
132 break;
133 case "dc3":
134 case "accusative": # tabıs
135 if ( in_array( $wordEnding, $Consonants ) ) {
136 if ( in_array( $wordLastVowel, $frontVowels ) ) {
137 $word = $word . "ті";
138 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
139 $word = $word . "ты";
141 } elseif ( in_array( $wordEnding, $allVowels ) ) {
142 if ( in_array( $wordLastVowel, $frontVowels ) ) {
143 $word = $word . "ні";
144 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
145 $word = $word . "ны";
147 } elseif ( in_array( $wordEnding, $Sonorants ) ) {
148 if ( in_array( $wordLastVowel, $frontVowels ) ) {
149 $word = $word . "ді";
150 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
151 $word = $word . "ды";
154 break;
155 case "dc31":
156 case "possessive accusative": # täweldık + tabıs
157 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
158 if ( in_array( $wordLastVowel, $frontVowels ) ) {
159 $word = $word . "ді";
160 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
161 $word = $word . "ды";
163 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
164 $word = $word . "н";
166 break;
167 case "dc4":
168 case "locative": # jatıs
169 if ( in_array( $wordEnding, $Consonants ) ) {
170 if ( in_array( $wordLastVowel, $frontVowels ) ) {
171 $word = $word . "те";
172 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
173 $word = $word . "та";
175 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
176 if ( in_array( $wordLastVowel, $frontVowels ) ) {
177 $word = $word . "де";
178 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
179 $word = $word . "да";
182 break;
183 case "dc41":
184 case "possessive locative": # täweldık + jatıs
185 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
186 if ( in_array( $wordLastVowel, $frontVowels ) ) {
187 $word = $word . "де";
188 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
189 $word = $word . "да";
191 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
192 if ( in_array( $wordLastVowel, $frontVowels ) ) {
193 $word = $word . "нде";
194 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
195 $word = $word . "нда";
198 break;
199 case "dc5":
200 case "ablative": # şığıs
201 if ( in_array( $wordEnding, $Consonants ) ) {
202 if ( in_array( $wordLastVowel, $frontVowels ) ) {
203 $word = $word . "тен";
204 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
205 $word = $word . "тан";
207 } elseif ( in_array( $wordEnding, $allVowels )
208 || in_array( $wordEnding, $Sonants )
209 || in_array( $wordEnding, $Sibilants )
211 if ( in_array( $wordLastVowel, $frontVowels ) ) {
212 $word = $word . "ден";
213 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
214 $word = $word . "дан";
216 } elseif ( in_array( $wordEnding, $Nasals ) ) {
217 if ( in_array( $wordLastVowel, $frontVowels ) ) {
218 $word = $word . "нен";
219 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
220 $word = $word . "нан";
223 break;
224 case "dc51":
225 case "possessive ablative": # täweldık + şığıs
226 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) {
227 if ( in_array( $wordLastVowel, $frontVowels ) ) {
228 $word = $word . "нен";
229 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
230 $word = $word . "нан";
232 } elseif ( in_array( $wordEnding, $secondPerson ) ) {
233 if ( in_array( $wordLastVowel, $frontVowels ) ) {
234 $word = $word . "ден";
235 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
236 $word = $word . "дан";
239 break;
240 case "dc6":
241 case "comitative": # kömektes
242 if ( in_array( $wordEnding, $Consonants ) ) {
243 $word = $word . "пен";
244 } elseif ( in_array( $wordEnding, $allVowels )
245 || in_array( $wordEnding, $Nasals )
246 || in_array( $wordEnding, $Sonants )
248 $word = $word . "мен";
249 } elseif ( in_array( $wordEnding, $Sibilants ) ) {
250 $word = $word . "бен";
252 break;
253 case "dc61":
254 case "possessive comitative": # täweldık + kömektes
255 if ( in_array( $wordEnding, $Consonants ) ) {
256 $word = $word . "пенен";
257 } elseif ( in_array( $wordEnding, $allVowels )
258 || in_array( $wordEnding, $Nasals )
259 || in_array( $wordEnding, $Sonants )
261 $word = $word . "менен";
262 } elseif ( in_array( $wordEnding, $Sibilants ) ) {
263 $word = $word . "бенен";
265 break;
266 default: # dc0 #nominative #ataw
268 return $word;
272 * @param string $word
273 * @param string $case
274 * @return string
276 function convertGrammarKk_latn( $word, $case ) {
277 global $wgGrammarForms;
278 if ( isset( $wgGrammarForms['kk-tr'][$case][$word] ) ) {
279 return $wgGrammarForms['kk-tr'][$case][$word];
281 if ( isset( $wgGrammarForms['kk-latn'][$case][$word] ) ) {
282 return $wgGrammarForms['kk-latn'][$case][$word];
284 // Set up some constants...
285 // Vowels in last syllable
286 $frontVowels = [ "e", "ö", "ü", "i", "ä", "é" ];
287 $backVowels = [ "a", "o", "u", "ı" ];
288 $allVowels = [ "e", "ö", "ü", "i", "ä", "é", "a", "o", "u", "ı" ];
289 // Preceding letters
290 $Nasals = [ "m", "n", "ñ" ];
291 $Sonants = [ "ï", "y", "ý", "l", "r", "w" ];
292 $Consonants = [ "p", "f", "k", "q", "t", "ş", "s", "x", "c", "ç", "b", "v", "g", "d" ];
293 $Sibilants = [ "j", "z" ];
294 $Sonorants = [ "ï", "y", "ý", "l", "r", "w", "m", "n", "ñ", "j", "z" ];
296 // Possessives
297 $firstPerson = [ "m", "ñ" ]; // 1st singular, 2nd unformal
298 $secondPerson = [ "z" ]; // 1st plural, 2nd formal
299 $thirdPerson = [ "ı", "i" ]; // 3rd
301 $lastLetter = $this->lastLetter( $word, $allVowels );
302 $wordEnding =& $lastLetter[0];
303 $wordLastVowel =& $lastLetter[1];
305 // Now convert the word
306 switch ( $case ) {
307 case "dc1":
308 case "genitive": # ilik
309 if ( in_array( $wordEnding, $Consonants ) ) {
310 if ( in_array( $wordLastVowel, $frontVowels ) ) {
311 $word = $word . "tiñ";
312 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
313 $word = $word . "tıñ";
315 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) ) {
316 if ( in_array( $wordLastVowel, $frontVowels ) ) {
317 $word = $word . "niñ";
318 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
319 $word = $word . "nıñ";
321 } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) {
322 if ( in_array( $wordLastVowel, $frontVowels ) ) {
323 $word = $word . "diñ";
324 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
325 $word = $word . "dıñ";
328 break;
329 case "dc2":
330 case "dative": # barıs
331 if ( in_array( $wordEnding, $Consonants ) ) {
332 if ( in_array( $wordLastVowel, $frontVowels ) ) {
333 $word = $word . "ke";
334 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
335 $word = $word . "qa";
337 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
338 if ( in_array( $wordLastVowel, $frontVowels ) ) {
339 $word = $word . "ge";
340 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
341 $word = $word . "ğa";
344 break;
345 case "dc21":
346 case "possessive dative": # täweldık + barıs
347 if ( in_array( $wordEnding, $firstPerson ) ) {
348 if ( in_array( $wordLastVowel, $frontVowels ) ) {
349 $word = $word . "e";
350 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
351 $word = $word . "a";
353 } elseif ( in_array( $wordEnding, $secondPerson ) ) {
354 if ( in_array( $wordLastVowel, $frontVowels ) ) {
355 $word = $word . "ge";
356 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
357 $word = $word . "ğa";
359 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
360 if ( in_array( $wordLastVowel, $frontVowels ) ) {
361 $word = $word . "ne";
362 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
363 $word = $word . "na";
366 break;
367 case "dc3":
368 case "accusative": # tabıs
369 if ( in_array( $wordEnding, $Consonants ) ) {
370 if ( in_array( $wordLastVowel, $frontVowels ) ) {
371 $word = $word . "ti";
372 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
373 $word = $word . "tı";
375 } elseif ( in_array( $wordEnding, $allVowels ) ) {
376 if ( in_array( $wordLastVowel, $frontVowels ) ) {
377 $word = $word . "ni";
378 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
379 $word = $word . "nı";
381 } elseif ( in_array( $wordEnding, $Sonorants ) ) {
382 if ( in_array( $wordLastVowel, $frontVowels ) ) {
383 $word = $word . "di";
384 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
385 $word = $word . "dı";
388 break;
389 case "dc31":
390 case "possessive accusative": # täweldık + tabıs
391 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
392 if ( in_array( $wordLastVowel, $frontVowels ) ) {
393 $word = $word . "di";
394 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
395 $word = $word . "dı";
397 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
398 $word = $word . "n";
400 break;
401 case "dc4":
402 case "locative": # jatıs
403 if ( in_array( $wordEnding, $Consonants ) ) {
404 if ( in_array( $wordLastVowel, $frontVowels ) ) {
405 $word = $word . "te";
406 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
407 $word = $word . "ta";
409 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
410 if ( in_array( $wordLastVowel, $frontVowels ) ) {
411 $word = $word . "de";
412 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
413 $word = $word . "da";
416 break;
417 case "dc41":
418 case "possessive locative": # täweldık + jatıs
419 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
420 if ( in_array( $wordLastVowel, $frontVowels ) ) {
421 $word = $word . "de";
422 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
423 $word = $word . "da";
425 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
426 if ( in_array( $wordLastVowel, $frontVowels ) ) {
427 $word = $word . "nde";
428 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
429 $word = $word . "nda";
432 break;
433 case "dc5":
434 case "ablative": # şığıs
435 if ( in_array( $wordEnding, $Consonants ) ) {
436 if ( in_array( $wordLastVowel, $frontVowels ) ) {
437 $word = $word . "ten";
438 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
439 $word = $word . "tan";
441 } elseif ( in_array( $wordEnding, $allVowels )
442 || in_array( $wordEnding, $Sonants )
443 || in_array( $wordEnding, $Sibilants )
445 if ( in_array( $wordLastVowel, $frontVowels ) ) {
446 $word = $word . "den";
447 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
448 $word = $word . "dan";
450 } elseif ( in_array( $wordEnding, $Nasals ) ) {
451 if ( in_array( $wordLastVowel, $frontVowels ) ) {
452 $word = $word . "nen";
453 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
454 $word = $word . "nan";
457 break;
458 case "dc51":
459 case "possessive ablative": # täweldık + şığıs
460 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) {
461 if ( in_array( $wordLastVowel, $frontVowels ) ) {
462 $word = $word . "nen";
463 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
464 $word = $word . "nan";
466 } elseif ( in_array( $wordEnding, $secondPerson ) ) {
467 if ( in_array( $wordLastVowel, $frontVowels ) ) {
468 $word = $word . "den";
469 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
470 $word = $word . "dan";
473 break;
474 case "dc6":
475 case "comitative": # kömektes
476 if ( in_array( $wordEnding, $Consonants ) ) {
477 $word = $word . "pen";
478 } elseif ( in_array( $wordEnding, $allVowels )
479 || in_array( $wordEnding, $Nasals )
480 || in_array( $wordEnding, $Sonants )
482 $word = $word . "men";
483 } elseif ( in_array( $wordEnding, $Sibilants ) ) {
484 $word = $word . "ben";
486 break;
487 case "dc61":
488 case "possessive comitative": # täweldık + kömektes
489 if ( in_array( $wordEnding, $Consonants ) ) {
490 $word = $word . "penen";
491 } elseif ( in_array( $wordEnding, $allVowels )
492 || in_array( $wordEnding, $Nasals )
493 || in_array( $wordEnding, $Sonants )
495 $word = $word . "menen";
496 } elseif ( in_array( $wordEnding, $Sibilants ) ) {
497 $word = $word . "benen";
499 break;
500 default: # dc0 #nominative #ataw
502 return $word;
506 * @param string $word
507 * @param string $case
508 * @return string
510 function convertGrammarKk_arab( $word, $case ) {
511 global $wgGrammarForms;
512 if ( isset( $wgGrammarForms['kk-cn'][$case][$word] ) ) {
513 return $wgGrammarForms['kk-cn'][$case][$word];
515 if ( isset( $wgGrammarForms['kk-arab'][$case][$word] ) ) {
516 return $wgGrammarForms['kk-arab'][$case][$word];
518 // Set up some constants...
519 // Vowels in last syllable
520 $frontVowels = [ "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە" ];
521 $backVowels = [ "ا", "و", "ۇ", "ى" ];
522 $allVowels = [ "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە", "ا", "و", "ۇ", "ى" ];
523 // Preceding letters
524 $Nasals = [ "م", "ن", "ڭ" ];
525 $Sonants = [ "ي", "ي", "ل", "ر", "ۋ" ];
526 $Consonants = [ "پ", "ف", "ك", "ق", "ت", "ش", "س", "ح", "تس", "چ", "ب", "ۆ", "گ", "د" ];
527 $Sibilants = [ "ج", "ز" ];
528 $Sonorants = [ "ي", "ي", "ل", "ر", "ۋ", "م", "ن", "ڭ", "ج", "ز" ];
530 // Possessives
531 $firstPerson = [ "م", "ڭ" ]; // 1st singular, 2nd unformal
532 $secondPerson = [ "ز" ]; // 1st plural, 2nd formal
533 $thirdPerson = [ "ى", "ٸ" ]; // 3rd
535 $lastLetter = $this->lastLetter( $word, $allVowels );
536 $wordEnding = $lastLetter[0];
537 $wordLastVowel = $lastLetter[1];
539 // Now convert the word
540 switch ( $case ) {
541 case "dc1":
542 case "genitive": # ilik
543 if ( in_array( $wordEnding, $Consonants ) ) {
544 if ( in_array( $wordLastVowel, $frontVowels ) ) {
545 $word = $word . "تٸڭ";
546 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
547 $word = $word . "تىڭ";
549 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) ) {
550 if ( in_array( $wordLastVowel, $frontVowels ) ) {
551 $word = $word . "نٸڭ";
552 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
553 $word = $word . "نىڭ";
555 } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) {
556 if ( in_array( $wordLastVowel, $frontVowels ) ) {
557 $word = $word . "دٸڭ";
558 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
559 $word = $word . "دىڭ";
562 break;
563 case "dc2":
564 case "dative": # barıs
565 if ( in_array( $wordEnding, $Consonants ) ) {
566 if ( in_array( $wordLastVowel, $frontVowels ) ) {
567 $word = $word . "كە";
568 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
569 $word = $word . "قا";
571 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
572 if ( in_array( $wordLastVowel, $frontVowels ) ) {
573 $word = $word . "گە";
574 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
575 $word = $word . "عا";
578 break;
579 case "dc21":
580 case "possessive dative": # täweldık + barıs
581 if ( in_array( $wordEnding, $firstPerson ) ) {
582 if ( in_array( $wordLastVowel, $frontVowels ) ) {
583 $word = $word . "ە";
584 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
585 $word = $word . "ا";
587 } elseif ( in_array( $wordEnding, $secondPerson ) ) {
588 if ( in_array( $wordLastVowel, $frontVowels ) ) {
589 $word = $word . "گە";
590 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
591 $word = $word . "عا";
593 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
594 if ( in_array( $wordLastVowel, $frontVowels ) ) {
595 $word = $word . "نە";
596 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
597 $word = $word . "نا";
600 break;
601 case "dc3":
602 case "accusative": # tabıs
603 if ( in_array( $wordEnding, $Consonants ) ) {
604 if ( in_array( $wordLastVowel, $frontVowels ) ) {
605 $word = $word . "تٸ";
606 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
607 $word = $word . "تى";
609 } elseif ( in_array( $wordEnding, $allVowels ) ) {
610 if ( in_array( $wordLastVowel, $frontVowels ) ) {
611 $word = $word . "نٸ";
612 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
613 $word = $word . "نى";
615 } elseif ( in_array( $wordEnding, $Sonorants ) ) {
616 if ( in_array( $wordLastVowel, $frontVowels ) ) {
617 $word = $word . "دٸ";
618 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
619 $word = $word . "دى";
622 break;
623 case "dc31":
624 case "possessive accusative": # täweldık + tabıs
625 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
626 if ( in_array( $wordLastVowel, $frontVowels ) ) {
627 $word = $word . "دٸ";
628 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
629 $word = $word . "دى";
631 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
632 $word = $word . "ن";
634 break;
635 case "dc4":
636 case "locative": # jatıs
637 if ( in_array( $wordEnding, $Consonants ) ) {
638 if ( in_array( $wordLastVowel, $frontVowels ) ) {
639 $word = $word . "تە";
640 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
641 $word = $word . "تا";
643 } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
644 if ( in_array( $wordLastVowel, $frontVowels ) ) {
645 $word = $word . "دە";
646 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
647 $word = $word . "دا";
650 break;
651 case "dc41":
652 case "possessive locative": # täweldık + jatıs
653 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
654 if ( in_array( $wordLastVowel, $frontVowels ) ) {
655 $word = $word . "دە";
656 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
657 $word = $word . "دا";
659 } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
660 if ( in_array( $wordLastVowel, $frontVowels ) ) {
661 $word = $word . "ندە";
662 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
663 $word = $word . "ندا";
666 break;
667 case "dc5":
668 case "ablative": # şığıs
669 if ( in_array( $wordEnding, $Consonants ) ) {
670 if ( in_array( $wordLastVowel, $frontVowels ) ) {
671 $word = $word . "تەن";
672 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
673 $word = $word . "تان";
675 } elseif ( in_array( $wordEnding, $allVowels )
676 || in_array( $wordEnding, $Sonants )
677 || in_array( $wordEnding, $Sibilants )
679 if ( in_array( $wordLastVowel, $frontVowels ) ) {
680 $word = $word . "دەن";
681 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
682 $word = $word . "دان";
684 } elseif ( in_array( $wordEnding, $Nasals ) ) {
685 if ( in_array( $wordLastVowel, $frontVowels ) ) {
686 $word = $word . "نەن";
687 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
688 $word = $word . "نان";
691 break;
692 case "dc51":
693 case "possessive ablative": # täweldık + şığıs
694 if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) {
695 if ( in_array( $wordLastVowel, $frontVowels ) ) {
696 $word = $word . "نەن";
697 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
698 $word = $word . "نان";
700 } elseif ( in_array( $wordEnding, $secondPerson ) ) {
701 if ( in_array( $wordLastVowel, $frontVowels ) ) {
702 $word = $word . "دەن";
703 } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
704 $word = $word . "دان";
707 break;
708 case "dc6":
709 case "comitative": # kömektes
710 if ( in_array( $wordEnding, $Consonants ) ) {
711 $word = $word . "پەن";
712 } elseif ( in_array( $wordEnding, $allVowels )
713 || in_array( $wordEnding, $Nasals )
714 || in_array( $wordEnding, $Sonants )
716 $word = $word . "مەن";
717 } elseif ( in_array( $wordEnding, $Sibilants ) ) {
718 $word = $word . "بەن";
720 break;
721 case "dc61":
722 case "possessive comitative": # täweldık + kömektes
723 if ( in_array( $wordEnding, $Consonants ) ) {
724 $word = $word . "پەنەن";
725 } elseif ( in_array( $wordEnding, $allVowels )
726 || in_array( $wordEnding, $Nasals )
727 || in_array( $wordEnding, $Sonants )
729 $word = $word . "مەنەن";
730 } elseif ( in_array( $wordEnding, $Sibilants ) ) {
731 $word = $word . "بەنەن";
733 break;
734 default: # dc0 #nominative #ataw
736 return $word;
740 * @param string $word
741 * @param array $allVowels
742 * @return array
744 function lastLetter( $word, $allVowels ) {
745 $lastLetter = [];
747 // Put the word in a form we can play with since we're using UTF-8
748 $ar = preg_split( '//u', parent::lc( $word ), -1, PREG_SPLIT_NO_EMPTY );
750 // Here's an array with the order of the letters in the word reversed
751 // so we can find a match quicker *shrug*
752 $wordReversed = array_reverse( $ar );
754 // Here's the last letter in the word
755 $lastLetter[0] = $ar[count( $ar ) - 1];
757 // Find the last vowel in the word
758 $lastLetter[1] = null;
759 foreach ( $wordReversed as $xvalue ) {
760 foreach ( $allVowels as $yvalue ) {
761 if ( strcmp( $xvalue, $yvalue ) == 0 ) {
762 $lastLetter[1] = $xvalue;
763 break;
764 } else {
765 continue;
768 if ( $lastLetter[1] !== null ) {
769 break;
770 } else {
771 continue;
775 return $lastLetter;
779 * Avoid grouping whole numbers between 0 to 9999
781 * @param string $_
783 * @return string
785 function commafy( $_ ) {
786 if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
787 return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) );
788 } else {
789 return $_;