00001 <?php
00002
00009 class LanguageRu extends Language {
00010 # Convert from the nominative form of a noun to some other case
00011 # Invoked with {{grammar:case|word}}
00012 function convertGrammar( $word, $case ) {
00013 global $wgGrammarForms;
00014 if ( isset($wgGrammarForms['ru'][$case][$word]) ) {
00015 return $wgGrammarForms['ru'][$case][$word];
00016 }
00017
00018 # These rules are not perfect, but they are currently only used for site names so it doesn't
00019 # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
00020
00021 #join and array_slice instead mb_substr
00022 $ar = array();
00023 preg_match_all( '/./us', $word, $ar );
00024 if (!preg_match("/[a-zA-Z_]/us", $word))
00025 switch ( $case ) {
00026 case 'genitive': #родительный падеж
00027 if ((join('',array_slice($ar[0],-4))=='вики') || (join('',array_slice($ar[0],-4))=='Вики'))
00028 {}
00029 elseif (join('',array_slice($ar[0],-1))=='ь')
00030 $word = join('',array_slice($ar[0],0,-1)).'я';
00031 elseif (join('',array_slice($ar[0],-2))=='ия')
00032 $word=join('',array_slice($ar[0],0,-2)).'ии';
00033 elseif (join('',array_slice($ar[0],-2))=='ка')
00034 $word=join('',array_slice($ar[0],0,-2)).'ки';
00035 elseif (join('',array_slice($ar[0],-2))=='ти')
00036 $word=join('',array_slice($ar[0],0,-2)).'тей';
00037 elseif (join('',array_slice($ar[0],-2))=='ды')
00038 $word=join('',array_slice($ar[0],0,-2)).'дов';
00039 elseif (join('',array_slice($ar[0],-3))=='ник')
00040 $word=join('',array_slice($ar[0],0,-3)).'ника';
00041 break;
00042 case 'dative': #дательный падеж
00043 #stub
00044 break;
00045 case 'accusative': #винительный падеж
00046 #stub
00047 break;
00048 case 'instrumental': #творительный падеж
00049 #stub
00050 break;
00051 case 'prepositional': #предложный падеж
00052 #stub
00053 break;
00054 }
00055 return $word;
00056 }
00057
00073 function convertPlural( $count, $forms ) {
00074 if ( !count($forms) ) { return ''; }
00075
00076
00077 if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
00078
00079
00080
00081 $forms = $this->preConvertPlural( $forms, 3 );
00082
00083 if ($count > 10 && floor(($count % 100) / 10) == 1) {
00084 return $forms[2];
00085 } else {
00086 switch ($count % 10) {
00087 case 1: return $forms[0];
00088 case 2:
00089 case 3:
00090 case 4: return $forms[1];
00091 default: return $forms[2];
00092 }
00093 }
00094 }
00095
00096
00097
00098
00099
00100
00101 function commafy($_) {
00102 if (preg_match('/^-?\d{1,4}(\.\d*)?$/',$_)) {
00103 return $_;
00104 } else {
00105 return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
00106 }
00107 }
00108 }