[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/languages/classes/ -> LanguageKk_cyrl.php (source)

   1  <?php
   2  /**
   3   * Kazakh (Қазақша) specific code.
   4   *
   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.
   9   *
  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.
  14   *
  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
  19   *
  20   * @file
  21   * @ingroup Language
  22   */
  23  
  24  /**
  25   * Kazakh (Қазақша)
  26   *
  27   * @ingroup Language
  28   */
  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
  36       *
  37       * @param string $word
  38       * @param string $case
  39       *
  40       * @return string
  41       */
  42  	function convertGrammarKk_cyrl( $word, $case ) {
  43          global $wgGrammarForms;
  44          if ( isset( $wgGrammarForms['kk-kz'][$case][$word] ) ) {
  45              return $wgGrammarForms['kk-kz'][$case][$word];
  46          }
  47          if ( isset( $wgGrammarForms['kk-cyrl'][$case][$word] ) ) {
  48              return $wgGrammarForms['kk-cyrl'][$case][$word];
  49          }
  50          // Set up some constants...
  51          // Vowels in last syllable
  52          $frontVowels = array( "е", "ө", "ү", "і", "ә", "э", "я", "ё", "и" );
  53          $backVowels = array( "а", "о", "ұ", "ы" );
  54          $allVowels = array( "е", "ө", "ү", "і", "ә", "э", "а", "о", "ұ", "ы", "я", "ё", "и" );
  55          // Preceding letters
  56          $Nasals = array( "м", "н", "ң" );
  57          $Sonants = array( "и", "й", "л", "р", "у", "ю" );
  58          $Consonants = array( "п", "ф", "к", "қ", "т", "ш", "с", "х", "ц", "ч", "щ", "б", "в", "г", "д" );
  59          $Sibilants = array( "ж", "з" );
  60          $Sonorants = array( "и", "й", "л", "р", "у", "ю", "м", "н", "ң", "ж", "з" );
  61  
  62          // Possessives
  63          $firstPerson = array( "м", "ң" ); // 1st singular, 2nd unformal
  64          $secondPerson = array( "з" ); // 1st plural, 2nd formal
  65          $thirdPerson = array( "ы", "і" ); // 3rd
  66  
  67          $lastLetter = $this->lastLetter( $word, $allVowels );
  68          $wordEnding =& $lastLetter[0];
  69          $wordLastVowel =& $lastLetter[1];
  70  
  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 . "тың";
  80                      }
  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 . "ның";
  86                      }
  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 . "дың";
  92                      }
  93                  }
  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 . "қа";
 102                      }
 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 . "ға";
 108                      }
 109                  }
 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 . "а";
 118                      }
 119                  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
 120                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 121                          $word = $word . "ге";
 122                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 123                          $word = $word . "ға";
 124                      }
 125                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 126                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 127                          $word = $word . "не";
 128                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 129                          $word = $word . "на";
 130                      }
 131                  }
 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 . "ты";
 140                      }
 141                  } elseif ( in_array( $wordEnding, $allVowels ) ) {
 142                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 143                          $word = $word . "ні";
 144                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 145                          $word = $word . "ны";
 146                      }
 147                  } elseif ( in_array( $wordEnding, $Sonorants ) ) {
 148                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 149                          $word = $word . "ді";
 150                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 151                          $word = $word . "ды";
 152                      }
 153                  }
 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 . "ды";
 162                      }
 163                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 164                          $word = $word . "н";
 165                  }
 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 . "та";
 174                      }
 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 . "да";
 180                      }
 181                  }
 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 . "да";
 190                      }
 191                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 192                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 193                          $word = $word . "нде";
 194                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 195                          $word = $word . "нда";
 196                      }
 197                  }
 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 . "тан";
 206                      }
 207                  } elseif ( in_array( $wordEnding, $allVowels )
 208                      || in_array( $wordEnding, $Sonants )
 209                      || in_array( $wordEnding, $Sibilants )
 210                  ) {
 211                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 212                          $word = $word . "ден";
 213                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 214                          $word = $word . "дан";
 215                      }
 216                  } elseif ( in_array( $wordEnding, $Nasals ) ) {
 217                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 218                          $word = $word . "нен";
 219                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 220                          $word = $word . "нан";
 221                      }
 222                  }
 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 . "нан";
 231                      }
 232                  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
 233                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 234                          $word = $word . "ден";
 235                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 236                          $word = $word . "дан";
 237                      }
 238                  }
 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 )
 247                  ) {
 248                          $word = $word . "мен";
 249                  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
 250                          $word = $word . "бен";
 251                  }
 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 )
 260                  ) {
 261                          $word = $word . "менен";
 262                  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
 263                          $word = $word . "бенен";
 264                  }
 265                  break;
 266              default: # dc0 #nominative #ataw
 267          }
 268          return $word;
 269      }
 270  
 271      /**
 272       * @param string $word
 273       * @param string $case
 274       * @return string
 275       */
 276  	function convertGrammarKk_latn( $word, $case ) {
 277          global $wgGrammarForms;
 278          if ( isset( $wgGrammarForms['kk-tr'][$case][$word] ) ) {
 279              return $wgGrammarForms['kk-tr'][$case][$word];
 280          }
 281          if ( isset( $wgGrammarForms['kk-latn'][$case][$word] ) ) {
 282              return $wgGrammarForms['kk-latn'][$case][$word];
 283          }
 284          // Set up some constants...
 285          // Vowels in last syllable
 286          $frontVowels = array( "e", "ö", "ü", "i", "ä", "é" );
 287          $backVowels = array( "a", "o", "u", "ı" );
 288          $allVowels = array( "e", "ö", "ü", "i", "ä", "é", "a", "o", "u", "ı" );
 289          // Preceding letters
 290          $Nasals = array( "m", "n", "ñ" );
 291          $Sonants = array( "ï", "y", "ý", "l", "r", "w" );
 292          $Consonants = array( "p", "f", "k", "q", "t", "ş", "s", "x", "c", "ç", "b", "v", "g", "d" );
 293          $Sibilants = array( "j", "z" );
 294          $Sonorants = array( "ï", "y", "ý", "l", "r", "w", "m", "n", "ñ", "j", "z" );
 295  
 296          // Possessives
 297          $firstPerson = array( "m", "ñ" ); // 1st singular, 2nd unformal
 298          $secondPerson = array( "z" ); // 1st plural, 2nd formal
 299          $thirdPerson = array( "ı", "i" ); // 3rd
 300  
 301          $lastLetter = $this->lastLetter( $word, $allVowels );
 302          $wordEnding =& $lastLetter[0];
 303          $wordLastVowel =& $lastLetter[1];
 304  
 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ıñ";
 314                      }
 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ıñ";
 320                      }
 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ıñ";
 326                      }
 327                  }
 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";
 336                      }
 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";
 342                      }
 343                  }
 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";
 352                      }
 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";
 358                      }
 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";
 364                      }
 365                  }
 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ı";
 374                      }
 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ı";
 380                      }
 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ı";
 386                      }
 387                  }
 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ı";
 396                      }
 397                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 398                          $word = $word . "n";
 399                  }
 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";
 408                      }
 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";
 414                      }
 415                  }
 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";
 424                      }
 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";
 430                      }
 431                  }
 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";
 440                      }
 441                  } elseif ( in_array( $wordEnding, $allVowels )
 442                      || in_array( $wordEnding, $Sonants )
 443                      || in_array( $wordEnding, $Sibilants )
 444                  ) {
 445                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 446                          $word = $word . "den";
 447                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 448                          $word = $word . "dan";
 449                      }
 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";
 455                      }
 456                  }
 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";
 465                      }
 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";
 471                      }
 472                  }
 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 )
 481                  ) {
 482                          $word = $word . "men";
 483                  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
 484                          $word = $word . "ben";
 485                  }
 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 )
 494                  ) {
 495                          $word = $word . "menen";
 496                  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
 497                          $word = $word . "benen";
 498                  }
 499                  break;
 500              default: # dc0 #nominative #ataw
 501          }
 502          return $word;
 503      }
 504  
 505      /**
 506       * @param string $word
 507       * @param string $case
 508       * @return string
 509       */
 510  	function convertGrammarKk_arab( $word, $case ) {
 511          global $wgGrammarForms;
 512          if ( isset( $wgGrammarForms['kk-cn'][$case][$word] ) ) {
 513              return $wgGrammarForms['kk-cn'][$case][$word];
 514          }
 515          if ( isset( $wgGrammarForms['kk-arab'][$case][$word] ) ) {
 516              return $wgGrammarForms['kk-arab'][$case][$word];
 517          }
 518          // Set up some constants...
 519          // Vowels in last syllable
 520          $frontVowels = array( "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە" );
 521          $backVowels = array( "ا", "و", "ۇ", "ى" );
 522          $allVowels = array( "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە", "ا", "و", "ۇ", "ى" );
 523          // Preceding letters
 524          $Nasals = array( "م", "ن", "ڭ" );
 525          $Sonants = array( "ي", "ي", "ل", "ر", "ۋ" );
 526          $Consonants = array( "پ", "ف", "ك", "ق", "ت", "ش", "س", "ح", "تس", "چ", "ب", "ۆ", "گ", "د" );
 527          $Sibilants = array( "ج", "ز" );
 528          $Sonorants = array( "ي", "ي", "ل", "ر", "ۋ", "م", "ن", "ڭ", "ج", "ز" );
 529  
 530          // Possessives
 531          $firstPerson = array( "م", "ڭ" ); // 1st singular, 2nd unformal
 532          $secondPerson = array( "ز" ); // 1st plural, 2nd formal
 533          $thirdPerson = array( "ى", "ٸ" ); // 3rd
 534  
 535          $lastLetter = $this->lastLetter( $word, $allVowels );
 536          $wordEnding = $lastLetter[0];
 537          $wordLastVowel = $lastLetter[1];
 538  
 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 . "تىڭ";
 548                      }
 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 . "نىڭ";
 554                      }
 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 . "دىڭ";
 560                      }
 561                  }
 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 . "قا";
 570                      }
 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 . "عا";
 576                      }
 577                  }
 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 . "ا";
 586                      }
 587                  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
 588                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 589                          $word = $word . "گە";
 590                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 591                          $word = $word . "عا";
 592                      }
 593                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 594                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 595                          $word = $word . "نە";
 596                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 597                          $word = $word . "نا";
 598                      }
 599                  }
 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 . "تى";
 608                      }
 609                  } elseif ( in_array( $wordEnding, $allVowels ) ) {
 610                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 611                          $word = $word . "نٸ";
 612                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 613                          $word = $word . "نى";
 614                      }
 615                  } elseif ( in_array( $wordEnding, $Sonorants ) ) {
 616                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 617                          $word = $word . "دٸ";
 618                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 619                          $word = $word . "دى";
 620                      }
 621                  }
 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 . "دى";
 630                      }
 631                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 632                          $word = $word . "ن";
 633                  }
 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 . "تا";
 642                      }
 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 . "دا";
 648                      }
 649                  }
 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 . "دا";
 658                      }
 659                  } elseif ( in_array( $wordEnding, $thirdPerson ) ) {
 660                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 661                          $word = $word . "ندە";
 662                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 663                          $word = $word . "ندا";
 664                      }
 665                  }
 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 . "تان";
 674                      }
 675                  } elseif ( in_array( $wordEnding, $allVowels )
 676                      || in_array( $wordEnding, $Sonants )
 677                      || in_array( $wordEnding, $Sibilants )
 678                  ) {
 679                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 680                          $word = $word . "دەن";
 681                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 682                          $word = $word . "دان";
 683                      }
 684                  } elseif ( in_array( $wordEnding, $Nasals ) ) {
 685                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 686                          $word = $word . "نەن";
 687                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 688                          $word = $word . "نان";
 689                      }
 690                  }
 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 . "نان";
 699                      }
 700                  } elseif ( in_array( $wordEnding, $secondPerson ) ) {
 701                      if ( in_array( $wordLastVowel, $frontVowels ) ) {
 702                          $word = $word . "دەن";
 703                      } elseif ( in_array( $wordLastVowel, $backVowels ) ) {
 704                          $word = $word . "دان";
 705                      }
 706                  }
 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 )
 715                  ) {
 716                          $word = $word . "مەن";
 717                  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
 718                          $word = $word . "بەن";
 719                  }
 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 )
 728                  ) {
 729                          $word = $word . "مەنەن";
 730                  } elseif ( in_array( $wordEnding, $Sibilants ) ) {
 731                          $word = $word . "بەنەن";
 732                  }
 733                  break;
 734              default: # dc0 #nominative #ataw
 735          }
 736          return $word;
 737      }
 738  
 739      /**
 740       * @param string $word
 741       * @param array $allVowels
 742       * @return array
 743       */
 744  	function lastLetter( $word, $allVowels ) {
 745          $lastLetter = array();
 746  
 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 );
 749  
 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 );
 753  
 754          // Here's the last letter in the word
 755          $lastLetter[0] = $ar[count( $ar ) - 1];
 756  
 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;
 766                  }
 767              }
 768              if ( $lastLetter[1] !== null ) {
 769                  break;
 770              } else {
 771                  continue;
 772              }
 773          }
 774  
 775          return $lastLetter;
 776      }
 777  
 778      /**
 779       * Avoid grouping whole numbers between 0 to 9999
 780       *
 781       * @param string $_
 782       *
 783       * @return string
 784       */
 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 $_;
 790          }
 791      }
 792  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1