| 
<?php
 // locale: ??????? (Russia) (ru_RU)
 // author: Oleg Bogdanov https://github.com/wormen
 
 /**
 * returns ending for plural form of word by number and array of variants (1, 4, 5)
 * example variants for apples ['??????', '??????', '?????']
 */
 
 /**
 * @param int $number
 * @param array $endingArray
 *
 * @return string
 */
 $getNumEnding = function ($number, array $endingArray)
 {
 $number = $number % 100;
 
 if ($number >= 11 && $number <= 19)
 {
 return $endingArray[2];
 }
 
 $i = $number % 10;
 
 switch ($i)
 {
 case (1):
 $ending = $endingArray[0];
 break;
 case (2):
 case (3):
 case (4):
 $ending = $endingArray[1];
 break;
 default:
 $ending = $endingArray[2];
 }
 
 return $ending;
 };
 
 return array(
 'months'            => explode('_', '??????_???????_?????_??????_???_????_????_???????_????????_???????_??????_???????'),
 'monthsNominative'  => explode('_', '??????_???????_????_??????_???_????_????_??????_????????_???????_??????_???????'),
 'monthsShort'       => explode('_', '???_???_???_???_???_???_???_???_???_???_???_???'),
 'weekdays'          => explode('_', '???????????_???????_?????_???????_???????_???????_???????????'),
 'weekdaysShort'     => explode('_', '??_??_??_??_??_??_??'),
 'calendar'          => array(
 'sameDay'  => '[???????]',
 'nextDay'  => '[??????]',
 'lastDay'  => '[?????]',
 'lastWeek' => 'l',
 'sameElse' => 'l',
 'withTime' => '[?] H:i',
 'default'  => 'd/m/Y',
 ),
 'relativeTime'      => array(
 'future' => '????? %s',
 'past'   => '%s ?????',
 's'      => '????????? ??????',
 'ss'     => function ($number) use ($getNumEnding)
 {
 return $getNumEnding($number, array('%d ???????', '%d ???????', '%d ??????'));
 },
 'm'      => '??????',
 'mm'     => function ($number) use ($getNumEnding)
 {
 return $getNumEnding($number, array('%d ??????', '%d ??????', '%d ?????'));
 },
 'h'      => '???',
 'hh'     => function ($number) use ($getNumEnding)
 {
 return $getNumEnding($number, array('%d ???', '%d ????', '%d ?????'));
 },
 'd'      => '????',
 'dd'     => function ($number) use ($getNumEnding)
 {
 return $getNumEnding($number, array('%d ????', '%d ???', '%d ????'));
 },
 'M'      => '?????',
 'MM'     => function ($number) use ($getNumEnding)
 {
 return $getNumEnding($number, array('%d ?????', '%d ??????', '%d ???????'));
 },
 'y'      => '???',
 'yy'     => function ($number) use ($getNumEnding)
 {
 return $getNumEnding($number, array('%d ???', '%d ????', '%d ???'));
 },
 ),
 'ordinal'       => function ($number)
 {
 return $number . '?';
 },
 'week'          => array(
 'dow' => 1, // Monday is the first day of the week.
 'doy' => 4  // The week that contains Jan 4th is the first week of the year.
 ),
 );
 
 |