MediaWiki  master
LanguageKk_cyrl.php
Go to the documentation of this file.
1 <?php
29 // phpcs:ignore Squiz.Classes.ValidClassName.NotCamelCaps
30 class LanguageKk_cyrl extends Language {
31  # Convert from the nominative form of a noun to some other case
32  # Invoked with {{GRAMMAR:case|word}}
33 
41  function convertGrammarKk_cyrl( $word, $case ) {
42  global $wgGrammarForms;
43  if ( isset( $wgGrammarForms['kk-kz'][$case][$word] ) ) {
44  return $wgGrammarForms['kk-kz'][$case][$word];
45  }
46  if ( isset( $wgGrammarForms['kk-cyrl'][$case][$word] ) ) {
47  return $wgGrammarForms['kk-cyrl'][$case][$word];
48  }
49  // Set up some constants...
50  // Vowels in last syllable
51  $frontVowels = [ "е", "ө", "ү", "і", "ә", "э", "я", "ё", "и" ];
52  $backVowels = [ "а", "о", "ұ", "ы" ];
53  $allVowels = [ "е", "ө", "ү", "і", "ә", "э", "а", "о", "ұ", "ы", "я", "ё", "и" ];
54  // Preceding letters
55  $Nasals = [ "м", "н", "ң" ];
56  $Sonants = [ "и", "й", "л", "р", "у", "ю" ];
57  $Consonants = [ "п", "ф", "к", "қ", "т", "ш", "с", "х", "ц", "ч", "щ", "б", "в", "г", "д" ];
58  $Sibilants = [ "ж", "з" ];
59  $Sonorants = [ "и", "й", "л", "р", "у", "ю", "м", "н", "ң", "ж", "з" ];
60 
61  // Possessives
62  $firstPerson = [ "м", "ң" ]; // 1st singular, 2nd unformal
63  $secondPerson = [ "з" ]; // 1st plural, 2nd formal
64  $thirdPerson = [ "ы", "і" ]; // 3rd
65 
66  list( $wordEnding, $wordLastVowel ) = $this->lastLetter( $word, $allVowels );
67 
68  // Now convert the word
69  switch ( $case ) {
70  case "dc1":
71  case "genitive": # ilik
72  if ( in_array( $wordEnding, $Consonants ) ) {
73  if ( in_array( $wordLastVowel, $frontVowels ) ) {
74  $word .= "тің";
75  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
76  $word .= "тың";
77  }
78  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) ) {
79  if ( in_array( $wordLastVowel, $frontVowels ) ) {
80  $word .= "нің";
81  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
82  $word .= "ның";
83  }
84  } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) {
85  if ( in_array( $wordLastVowel, $frontVowels ) ) {
86  $word .= "дің";
87  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
88  $word .= "дың";
89  }
90  }
91  break;
92  case "dc2":
93  case "dative": # barıs
94  if ( in_array( $wordEnding, $Consonants ) ) {
95  if ( in_array( $wordLastVowel, $frontVowels ) ) {
96  $word .= "ке";
97  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
98  $word .= "қа";
99  }
100  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
101  if ( in_array( $wordLastVowel, $frontVowels ) ) {
102  $word .= "ге";
103  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
104  $word .= "ға";
105  }
106  }
107  break;
108  case "dc21":
109  case "possessive dative": # täweldık + barıs
110  if ( in_array( $wordEnding, $firstPerson ) ) {
111  if ( in_array( $wordLastVowel, $frontVowels ) ) {
112  $word .= "е";
113  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
114  $word .= "а";
115  }
116  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
117  if ( in_array( $wordLastVowel, $frontVowels ) ) {
118  $word .= "ге";
119  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
120  $word .= "ға";
121  }
122  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
123  if ( in_array( $wordLastVowel, $frontVowels ) ) {
124  $word .= "не";
125  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
126  $word .= "на";
127  }
128  }
129  break;
130  case "dc3":
131  case "accusative": # tabıs
132  if ( in_array( $wordEnding, $Consonants ) ) {
133  if ( in_array( $wordLastVowel, $frontVowels ) ) {
134  $word .= "ті";
135  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
136  $word .= "ты";
137  }
138  } elseif ( in_array( $wordEnding, $allVowels ) ) {
139  if ( in_array( $wordLastVowel, $frontVowels ) ) {
140  $word .= "ні";
141  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
142  $word .= "ны";
143  }
144  } elseif ( in_array( $wordEnding, $Sonorants ) ) {
145  if ( in_array( $wordLastVowel, $frontVowels ) ) {
146  $word .= "ді";
147  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
148  $word .= "ды";
149  }
150  }
151  break;
152  case "dc31":
153  case "possessive accusative": # täweldık + tabıs
154  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
155  if ( in_array( $wordLastVowel, $frontVowels ) ) {
156  $word .= "ді";
157  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
158  $word .= "ды";
159  }
160  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
161  $word .= "н";
162  }
163  break;
164  case "dc4":
165  case "locative": # jatıs
166  if ( in_array( $wordEnding, $Consonants ) ) {
167  if ( in_array( $wordLastVowel, $frontVowels ) ) {
168  $word .= "те";
169  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
170  $word .= "та";
171  }
172  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
173  if ( in_array( $wordLastVowel, $frontVowels ) ) {
174  $word .= "де";
175  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
176  $word .= "да";
177  }
178  }
179  break;
180  case "dc41":
181  case "possessive locative": # täweldık + jatıs
182  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
183  if ( in_array( $wordLastVowel, $frontVowels ) ) {
184  $word .= "де";
185  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
186  $word .= "да";
187  }
188  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
189  if ( in_array( $wordLastVowel, $frontVowels ) ) {
190  $word .= "нде";
191  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
192  $word .= "нда";
193  }
194  }
195  break;
196  case "dc5":
197  case "ablative": # şığıs
198  if ( in_array( $wordEnding, $Consonants ) ) {
199  if ( in_array( $wordLastVowel, $frontVowels ) ) {
200  $word .= "тен";
201  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
202  $word .= "тан";
203  }
204  } elseif ( in_array( $wordEnding, $allVowels )
205  || in_array( $wordEnding, $Sonants )
206  || in_array( $wordEnding, $Sibilants )
207  ) {
208  if ( in_array( $wordLastVowel, $frontVowels ) ) {
209  $word .= "ден";
210  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
211  $word .= "дан";
212  }
213  } elseif ( in_array( $wordEnding, $Nasals ) ) {
214  if ( in_array( $wordLastVowel, $frontVowels ) ) {
215  $word .= "нен";
216  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
217  $word .= "нан";
218  }
219  }
220  break;
221  case "dc51":
222  case "possessive ablative": # täweldık + şığıs
223  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) {
224  if ( in_array( $wordLastVowel, $frontVowels ) ) {
225  $word .= "нен";
226  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
227  $word .= "нан";
228  }
229  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
230  if ( in_array( $wordLastVowel, $frontVowels ) ) {
231  $word .= "ден";
232  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
233  $word .= "дан";
234  }
235  }
236  break;
237  case "dc6":
238  case "comitative": # kömektes
239  if ( in_array( $wordEnding, $Consonants ) ) {
240  $word .= "пен";
241  } elseif ( in_array( $wordEnding, $allVowels )
242  || in_array( $wordEnding, $Nasals )
243  || in_array( $wordEnding, $Sonants )
244  ) {
245  $word .= "мен";
246  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
247  $word .= "бен";
248  }
249  break;
250  case "dc61":
251  case "possessive comitative": # täweldık + kömektes
252  if ( in_array( $wordEnding, $Consonants ) ) {
253  $word .= "пенен";
254  } elseif ( in_array( $wordEnding, $allVowels )
255  || in_array( $wordEnding, $Nasals )
256  || in_array( $wordEnding, $Sonants )
257  ) {
258  $word .= "менен";
259  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
260  $word .= "бенен";
261  }
262  break;
263  default: # dc0 #nominative #ataw
264  }
265  return $word;
266  }
267 
273  function convertGrammarKk_latn( $word, $case ) {
274  global $wgGrammarForms;
275  if ( isset( $wgGrammarForms['kk-tr'][$case][$word] ) ) {
276  return $wgGrammarForms['kk-tr'][$case][$word];
277  }
278  if ( isset( $wgGrammarForms['kk-latn'][$case][$word] ) ) {
279  return $wgGrammarForms['kk-latn'][$case][$word];
280  }
281  // Set up some constants...
282  // Vowels in last syllable
283  $frontVowels = [ "e", "ö", "ü", "i", "ä", "é" ];
284  $backVowels = [ "a", "o", "u", "ı" ];
285  $allVowels = [ "e", "ö", "ü", "i", "ä", "é", "a", "o", "u", "ı" ];
286  // Preceding letters
287  $Nasals = [ "m", "n", "ñ" ];
288  $Sonants = [ "ï", "y", "ý", "l", "r", "w" ];
289  $Consonants = [ "p", "f", "k", "q", "t", "ş", "s", "x", "c", "ç", "b", "v", "g", "d" ];
290  $Sibilants = [ "j", "z" ];
291  $Sonorants = [ "ï", "y", "ý", "l", "r", "w", "m", "n", "ñ", "j", "z" ];
292 
293  // Possessives
294  $firstPerson = [ "m", "ñ" ]; // 1st singular, 2nd unformal
295  $secondPerson = [ "z" ]; // 1st plural, 2nd formal
296  $thirdPerson = [ "ı", "i" ]; // 3rd
297 
298  list( $wordEnding, $wordLastVowel ) = $this->lastLetter( $word, $allVowels );
299 
300  // Now convert the word
301  switch ( $case ) {
302  case "dc1":
303  case "genitive": # ilik
304  if ( in_array( $wordEnding, $Consonants ) ) {
305  if ( in_array( $wordLastVowel, $frontVowels ) ) {
306  $word .= "tiñ";
307  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
308  $word .= "tıñ";
309  }
310  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) ) {
311  if ( in_array( $wordLastVowel, $frontVowels ) ) {
312  $word .= "niñ";
313  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
314  $word .= "nıñ";
315  }
316  } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) {
317  if ( in_array( $wordLastVowel, $frontVowels ) ) {
318  $word .= "diñ";
319  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
320  $word .= "dıñ";
321  }
322  }
323  break;
324  case "dc2":
325  case "dative": # barıs
326  if ( in_array( $wordEnding, $Consonants ) ) {
327  if ( in_array( $wordLastVowel, $frontVowels ) ) {
328  $word .= "ke";
329  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
330  $word .= "qa";
331  }
332  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
333  if ( in_array( $wordLastVowel, $frontVowels ) ) {
334  $word .= "ge";
335  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
336  $word .= "ğa";
337  }
338  }
339  break;
340  case "dc21":
341  case "possessive dative": # täweldık + barıs
342  if ( in_array( $wordEnding, $firstPerson ) ) {
343  if ( in_array( $wordLastVowel, $frontVowels ) ) {
344  $word .= "e";
345  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
346  $word .= "a";
347  }
348  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
349  if ( in_array( $wordLastVowel, $frontVowels ) ) {
350  $word .= "ge";
351  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
352  $word .= "ğa";
353  }
354  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
355  if ( in_array( $wordLastVowel, $frontVowels ) ) {
356  $word .= "ne";
357  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
358  $word .= "na";
359  }
360  }
361  break;
362  case "dc3":
363  case "accusative": # tabıs
364  if ( in_array( $wordEnding, $Consonants ) ) {
365  if ( in_array( $wordLastVowel, $frontVowels ) ) {
366  $word .= "ti";
367  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
368  $word .= "tı";
369  }
370  } elseif ( in_array( $wordEnding, $allVowels ) ) {
371  if ( in_array( $wordLastVowel, $frontVowels ) ) {
372  $word .= "ni";
373  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
374  $word .= "nı";
375  }
376  } elseif ( in_array( $wordEnding, $Sonorants ) ) {
377  if ( in_array( $wordLastVowel, $frontVowels ) ) {
378  $word .= "di";
379  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
380  $word .= "dı";
381  }
382  }
383  break;
384  case "dc31":
385  case "possessive accusative": # täweldık + tabıs
386  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
387  if ( in_array( $wordLastVowel, $frontVowels ) ) {
388  $word .= "di";
389  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
390  $word .= "dı";
391  }
392  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
393  $word .= "n";
394  }
395  break;
396  case "dc4":
397  case "locative": # jatıs
398  if ( in_array( $wordEnding, $Consonants ) ) {
399  if ( in_array( $wordLastVowel, $frontVowels ) ) {
400  $word .= "te";
401  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
402  $word .= "ta";
403  }
404  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
405  if ( in_array( $wordLastVowel, $frontVowels ) ) {
406  $word .= "de";
407  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
408  $word .= "da";
409  }
410  }
411  break;
412  case "dc41":
413  case "possessive locative": # täweldık + jatıs
414  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
415  if ( in_array( $wordLastVowel, $frontVowels ) ) {
416  $word .= "de";
417  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
418  $word .= "da";
419  }
420  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
421  if ( in_array( $wordLastVowel, $frontVowels ) ) {
422  $word .= "nde";
423  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
424  $word .= "nda";
425  }
426  }
427  break;
428  case "dc5":
429  case "ablative": # şığıs
430  if ( in_array( $wordEnding, $Consonants ) ) {
431  if ( in_array( $wordLastVowel, $frontVowels ) ) {
432  $word .= "ten";
433  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
434  $word .= "tan";
435  }
436  } elseif ( in_array( $wordEnding, $allVowels )
437  || in_array( $wordEnding, $Sonants )
438  || in_array( $wordEnding, $Sibilants )
439  ) {
440  if ( in_array( $wordLastVowel, $frontVowels ) ) {
441  $word .= "den";
442  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
443  $word .= "dan";
444  }
445  } elseif ( in_array( $wordEnding, $Nasals ) ) {
446  if ( in_array( $wordLastVowel, $frontVowels ) ) {
447  $word .= "nen";
448  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
449  $word .= "nan";
450  }
451  }
452  break;
453  case "dc51":
454  case "possessive ablative": # täweldık + şığıs
455  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) {
456  if ( in_array( $wordLastVowel, $frontVowels ) ) {
457  $word .= "nen";
458  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
459  $word .= "nan";
460  }
461  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
462  if ( in_array( $wordLastVowel, $frontVowels ) ) {
463  $word .= "den";
464  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
465  $word .= "dan";
466  }
467  }
468  break;
469  case "dc6":
470  case "comitative": # kömektes
471  if ( in_array( $wordEnding, $Consonants ) ) {
472  $word .= "pen";
473  } elseif ( in_array( $wordEnding, $allVowels )
474  || in_array( $wordEnding, $Nasals )
475  || in_array( $wordEnding, $Sonants )
476  ) {
477  $word .= "men";
478  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
479  $word .= "ben";
480  }
481  break;
482  case "dc61":
483  case "possessive comitative": # täweldık + kömektes
484  if ( in_array( $wordEnding, $Consonants ) ) {
485  $word .= "penen";
486  } elseif ( in_array( $wordEnding, $allVowels )
487  || in_array( $wordEnding, $Nasals )
488  || in_array( $wordEnding, $Sonants )
489  ) {
490  $word .= "menen";
491  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
492  $word .= "benen";
493  }
494  break;
495  default: # dc0 #nominative #ataw
496  }
497  return $word;
498  }
499 
505  function convertGrammarKk_arab( $word, $case ) {
506  global $wgGrammarForms;
507  if ( isset( $wgGrammarForms['kk-cn'][$case][$word] ) ) {
508  return $wgGrammarForms['kk-cn'][$case][$word];
509  }
510  if ( isset( $wgGrammarForms['kk-arab'][$case][$word] ) ) {
511  return $wgGrammarForms['kk-arab'][$case][$word];
512  }
513  // Set up some constants...
514  // Vowels in last syllable
515  $frontVowels = [ "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە" ];
516  $backVowels = [ "ا", "و", "ۇ", "ى" ];
517  $allVowels = [ "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە", "ا", "و", "ۇ", "ى" ];
518  // Preceding letters
519  $Nasals = [ "م", "ن", "ڭ" ];
520  $Sonants = [ "ي", "ي", "ل", "ر", "ۋ" ];
521  $Consonants = [ "پ", "ف", "ك", "ق", "ت", "ش", "س", "ح", "تس", "چ", "ب", "ۆ", "گ", "د" ];
522  $Sibilants = [ "ج", "ز" ];
523  $Sonorants = [ "ي", "ي", "ل", "ر", "ۋ", "م", "ن", "ڭ", "ج", "ز" ];
524 
525  // Possessives
526  $firstPerson = [ "م", "ڭ" ]; // 1st singular, 2nd unformal
527  $secondPerson = [ "ز" ]; // 1st plural, 2nd formal
528  $thirdPerson = [ "ى", "ٸ" ]; // 3rd
529 
530  list( $wordEnding, $wordLastVowel ) = $this->lastLetter( $word, $allVowels );
531 
532  // Now convert the word
533  switch ( $case ) {
534  case "dc1":
535  case "genitive": # ilik
536  if ( in_array( $wordEnding, $Consonants ) ) {
537  if ( in_array( $wordLastVowel, $frontVowels ) ) {
538  $word .= "تٸڭ";
539  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
540  $word .= "تىڭ";
541  }
542  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) ) {
543  if ( in_array( $wordLastVowel, $frontVowels ) ) {
544  $word .= "نٸڭ";
545  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
546  $word .= "نىڭ";
547  }
548  } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) {
549  if ( in_array( $wordLastVowel, $frontVowels ) ) {
550  $word .= "دٸڭ";
551  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
552  $word .= "دىڭ";
553  }
554  }
555  break;
556  case "dc2":
557  case "dative": # barıs
558  if ( in_array( $wordEnding, $Consonants ) ) {
559  if ( in_array( $wordLastVowel, $frontVowels ) ) {
560  $word .= "كە";
561  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
562  $word .= "قا";
563  }
564  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
565  if ( in_array( $wordLastVowel, $frontVowels ) ) {
566  $word .= "گە";
567  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
568  $word .= "عا";
569  }
570  }
571  break;
572  case "dc21":
573  case "possessive dative": # täweldık + barıs
574  if ( in_array( $wordEnding, $firstPerson ) ) {
575  if ( in_array( $wordLastVowel, $frontVowels ) ) {
576  $word .= "ە";
577  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
578  $word .= "ا";
579  }
580  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
581  if ( in_array( $wordLastVowel, $frontVowels ) ) {
582  $word .= "گە";
583  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
584  $word .= "عا";
585  }
586  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
587  if ( in_array( $wordLastVowel, $frontVowels ) ) {
588  $word .= "نە";
589  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
590  $word .= "نا";
591  }
592  }
593  break;
594  case "dc3":
595  case "accusative": # tabıs
596  if ( in_array( $wordEnding, $Consonants ) ) {
597  if ( in_array( $wordLastVowel, $frontVowels ) ) {
598  $word .= "تٸ";
599  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
600  $word .= "تى";
601  }
602  } elseif ( in_array( $wordEnding, $allVowels ) ) {
603  if ( in_array( $wordLastVowel, $frontVowels ) ) {
604  $word .= "نٸ";
605  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
606  $word .= "نى";
607  }
608  } elseif ( in_array( $wordEnding, $Sonorants ) ) {
609  if ( in_array( $wordLastVowel, $frontVowels ) ) {
610  $word .= "دٸ";
611  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
612  $word .= "دى";
613  }
614  }
615  break;
616  case "dc31":
617  case "possessive accusative": # täweldık + tabıs
618  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
619  if ( in_array( $wordLastVowel, $frontVowels ) ) {
620  $word .= "دٸ";
621  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
622  $word .= "دى";
623  }
624  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
625  $word .= "ن";
626  }
627  break;
628  case "dc4":
629  case "locative": # jatıs
630  if ( in_array( $wordEnding, $Consonants ) ) {
631  if ( in_array( $wordLastVowel, $frontVowels ) ) {
632  $word .= "تە";
633  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
634  $word .= "تا";
635  }
636  } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) {
637  if ( in_array( $wordLastVowel, $frontVowels ) ) {
638  $word .= "دە";
639  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
640  $word .= "دا";
641  }
642  }
643  break;
644  case "dc41":
645  case "possessive locative": # täweldık + jatıs
646  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) {
647  if ( in_array( $wordLastVowel, $frontVowels ) ) {
648  $word .= "دە";
649  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
650  $word .= "دا";
651  }
652  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
653  if ( in_array( $wordLastVowel, $frontVowels ) ) {
654  $word .= "ندە";
655  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
656  $word .= "ندا";
657  }
658  }
659  break;
660  case "dc5":
661  case "ablative": # şığıs
662  if ( in_array( $wordEnding, $Consonants ) ) {
663  if ( in_array( $wordLastVowel, $frontVowels ) ) {
664  $word .= "تەن";
665  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
666  $word .= "تان";
667  }
668  } elseif ( in_array( $wordEnding, $allVowels )
669  || in_array( $wordEnding, $Sonants )
670  || in_array( $wordEnding, $Sibilants )
671  ) {
672  if ( in_array( $wordLastVowel, $frontVowels ) ) {
673  $word .= "دەن";
674  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
675  $word .= "دان";
676  }
677  } elseif ( in_array( $wordEnding, $Nasals ) ) {
678  if ( in_array( $wordLastVowel, $frontVowels ) ) {
679  $word .= "نەن";
680  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
681  $word .= "نان";
682  }
683  }
684  break;
685  case "dc51":
686  case "possessive ablative": # täweldık + şığıs
687  if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) {
688  if ( in_array( $wordLastVowel, $frontVowels ) ) {
689  $word .= "نەن";
690  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
691  $word .= "نان";
692  }
693  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
694  if ( in_array( $wordLastVowel, $frontVowels ) ) {
695  $word .= "دەن";
696  } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
697  $word .= "دان";
698  }
699  }
700  break;
701  case "dc6":
702  case "comitative": # kömektes
703  if ( in_array( $wordEnding, $Consonants ) ) {
704  $word .= "پەن";
705  } elseif ( in_array( $wordEnding, $allVowels )
706  || in_array( $wordEnding, $Nasals )
707  || in_array( $wordEnding, $Sonants )
708  ) {
709  $word .= "مەن";
710  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
711  $word .= "بەن";
712  }
713  break;
714  case "dc61":
715  case "possessive comitative": # täweldık + kömektes
716  if ( in_array( $wordEnding, $Consonants ) ) {
717  $word .= "پەنەن";
718  } elseif ( in_array( $wordEnding, $allVowels )
719  || in_array( $wordEnding, $Nasals )
720  || in_array( $wordEnding, $Sonants )
721  ) {
722  $word .= "مەنەن";
723  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
724  $word .= "بەنەن";
725  }
726  break;
727  default: # dc0 #nominative #ataw
728  }
729  return $word;
730  }
731 
737  function lastLetter( $word, $allVowels ) {
738  $lastLetter = [];
739 
740  // Put the word in a form we can play with since we're using UTF-8
741  $ar = preg_split( '//u', parent::lc( $word ), -1, PREG_SPLIT_NO_EMPTY );
742 
743  // Here's an array with the order of the letters in the word reversed
744  // so we can find a match quicker *shrug*
745  $wordReversed = array_reverse( $ar );
746 
747  // Here's the last letter in the word
748  $lastLetter[0] = $ar[count( $ar ) - 1];
749 
750  // Find the last vowel in the word
751  $lastLetter[1] = null;
752  foreach ( $wordReversed as $xvalue ) {
753  foreach ( $allVowels as $yvalue ) {
754  if ( strcmp( $xvalue, $yvalue ) == 0 ) {
755  $lastLetter[1] = $xvalue;
756  break;
757  }
758  }
759  if ( $lastLetter[1] !== null ) {
760  break;
761  }
762  }
763 
764  return $lastLetter;
765  }
766 }
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global list
Definition: deferred.txt:11
Kazakh (Қазақша)
convertGrammarKk_latn( $word, $case)
convertGrammarKk_cyrl( $word, $case)
Cases: genitive, dative, accusative, locative, ablative, comitative + possessive forms.
this hook is for auditing only or null if authentication failed before getting that far or null if we can t even determine that When $user is not null
Definition: hooks.txt:780
This document is intended to provide useful advice for parties seeking to redistribute MediaWiki to end users It s targeted particularly at maintainers for Linux since it s been observed that distribution packages of MediaWiki often break We ve consistently had to recommend that users seeking support use official tarballs instead of their distribution s and this often solves whatever problem the user is having It would be nice if this could such as
Definition: distributors.txt:9
injection txt This is an overview of how MediaWiki makes use of dependency injection The design described here grew from the discussion of RFC T384 The term dependency this means that anything an object needs to operate should be injected from the the object itself should only know narrow no concrete implementation of the logic it relies on The requirement to inject everything typically results in an architecture that based on two main types of and essentially stateless service objects that use other service objects to operate on the value objects As of the beginning MediaWiki is only starting to use the DI approach Much of the code still relies on global state or direct resulting in a highly cyclical dependency which acts as the top level factory for services in MediaWiki which can be used to gain access to default instances of various services MediaWikiServices however also allows new services to be defined and default services to be redefined Services are defined or redefined by providing a callback the instantiator that will return a new instance of the service When it will create an instance of MediaWikiServices and populate it with the services defined in the files listed by thereby bootstrapping the DI framework Per $wgServiceWiringFiles lists includes ServiceWiring php
Definition: injection.txt:35
lastLetter( $word, $allVowels)
$wgGrammarForms
Some languages need different word forms, usually for different cases.
convertGrammarKk_arab( $word, $case)