MediaWiki  master
LanguageOs.php
Go to the documentation of this file.
1 <?php
24 
30 class LanguageOs extends Language {
31 
56  public function convertGrammar( $word, $case ) {
57  $grammarForms =
58  MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::GrammarForms );
59  if ( isset( $grammarForms['os'][$case][$word] ) ) {
60  return $grammarForms['os'][$case][$word];
61  }
62  # Ending for allative case
63  $end_allative = 'мæ';
64  # Variable for 'j' beetwen vowels
65  $jot = '';
66  # Variable for "-" for not Ossetic words
67  $hyphen = '';
68  # Variable for ending
69  $ending = '';
70 
71  # CHecking if the $word is in plural form
72  if ( preg_match( '/тæ$/u', $word ) ) {
73  $word = mb_substr( $word, 0, -1 );
74  $end_allative = 'æм';
75  } elseif ( preg_match( "/[аæеёиоыэюя]$/u", $word ) ) {
76  # Works if $word is in singular form.
77  # Checking if $word ends on one of the vowels: е, ё, и, о, ы, э, ю, я.
78  $jot = 'й';
79  } elseif ( preg_match( "/у$/u", $word ) ) {
80  # Checking if $word ends on 'у'. 'У'
81  # can be either consonant 'W' or vowel 'U' in Cyrillic Ossetic.
82  # Examples: {{grammar:genitive|аунеу}} = аунеуы, {{grammar:genitive|лæппу}} = лæппуйы.
83  if ( !preg_match( "/[аæеёиоыэюя]$/u", mb_substr( $word, -2, 1 ) ) ) {
84  $jot = 'й';
85  }
86  } elseif ( !preg_match( "/[бвгджзйклмнопрстфхцчшщьъ]$/u", $word ) ) {
87  $hyphen = '-';
88  }
89 
90  switch ( $case ) {
91  case 'genitive':
92  $ending = $hyphen . $jot . 'ы';
93  break;
94  case 'dative':
95  $ending = $hyphen . $jot . 'æн';
96  break;
97  case 'allative':
98  $ending = $hyphen . $end_allative;
99  break;
100  case 'ablative':
101  if ( $jot == 'й' ) {
102  $ending = $hyphen . $jot . 'æ';
103  } else {
104  $ending = $hyphen . $jot . 'æй';
105  }
106  break;
107  case 'inessive':
108  break;
109  case 'superessive':
110  $ending = $hyphen . $jot . 'ыл';
111  break;
112  case 'equative':
113  $ending = $hyphen . $jot . 'ау';
114  break;
115  case 'comitative':
116  $ending = $hyphen . 'имæ';
117  break;
118  }
119  return $word . $ending;
120  }
121 }
Ossetian (Ирон)
Definition: LanguageOs.php:30
convertGrammar( $word, $case)
Convert from the nominative form of a noun to other cases Invoked with {{grammar:case|word}}.
Definition: LanguageOs.php:56
Base class for language-specific code.
Definition: Language.php:56
A class containing constants representing the names of configuration variables.
Service locator for MediaWiki core services.