(bug 6724) Update for Russian translation (ru)
[lhc/web/wiklou.git] / languages / LanguageRu.php
1 <?php
2 /** Russian (русский язык)
3 *
4 * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail)
5 *
6 * @package MediaWiki
7 * @subpackage Language
8 */
9
10 require_once( 'LanguageUtf8.php' );
11
12
13 /* private */ $wgNamespaceNamesRu = array(
14 NS_MEDIA => 'Медиа',
15 NS_SPECIAL => 'Служебная',
16 NS_MAIN => '',
17 NS_TALK => 'Обсуждение',
18 NS_USER => 'Участник',
19 NS_USER_TALK => 'Обсуждение_участника',
20 NS_PROJECT => $wgMetaNamespace,
21 NS_PROJECT_TALK => FALSE, #Set in constructor
22 NS_IMAGE => 'Изображение',
23 NS_IMAGE_TALK => 'Обсуждение_изображения',
24 NS_MEDIAWIKI => 'MediaWiki',
25 NS_MEDIAWIKI_TALK => 'Обсуждение_MediaWiki',
26 NS_TEMPLATE => 'Шаблон',
27 NS_TEMPLATE_TALK => 'Обсуждение_шаблона',
28 NS_HELP => 'Справка',
29 NS_HELP_TALK => 'Обсуждение_справки',
30 NS_CATEGORY => 'Категория',
31 NS_CATEGORY_TALK => 'Обсуждение_категории',
32 ) + $wgNamespaceNamesEn;
33
34
35 /* private */ $wgQuickbarSettingsRu = array(
36 'Не показывать', 'Неподвижная слева', 'Неподвижная справа', 'Плавающая слева', 'Плавающая справа'
37 );
38
39 /* private */ $wgSkinNamesRu = array(
40 'standard' => 'Стандартный',
41 'nostalgia' => 'Ностальгия',
42 'cologneblue' => 'Кёльнская тоска',
43 'davinci' => 'Да Винчи',
44 'mono' => 'Моно',
45 'monobook' => 'Моно-книга',
46 'myskin' => 'Своё',
47 'chick' => 'Цыпа'
48 );
49
50
51 /* private */ $wgBookstoreListRu = array(
52 'ОЗОН' => 'http://www.ozon.ru/?context=advsearch_book&isbn=$1',
53 'Books.Ru' => 'http://www.books.ru/shop/search/advanced?as%5Btype%5D=books&as%5Bname%5D=&as%5Bisbn%5D=$1&as%5Bauthor%5D=&as%5Bmaker%5D=&as%5Bcontents%5D=&as%5Binfo%5D=&as%5Bdate_after%5D=&as%5Bdate_before%5D=&as%5Bprice_less%5D=&as%5Bprice_more%5D=&as%5Bstrict%5D=%E4%E0&as%5Bsub%5D=%E8%F1%EA%E0%F2%FC&x=22&y=8',
54 'Яндекс.Маркет' => 'http://market.yandex.ru/search.xml?text=$1',
55 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
56 );
57
58
59 # Note to translators:
60 # Please include the English words as synonyms. This allows people
61 # from other wikis to contribute more easily.
62 #
63 /* private */ $wgMagicWordsRu = array(
64 # ID CASE SYNONYMS
65 'redirect' => array( 0, '#REDIRECT', '#ПЕРЕНАПРАВЛЕНИЕ', '#ПЕРЕНАПР'),
66 'notoc' => array( 0, '__NOTOC__', '__БЕЗСОДЕРЖАНИЯ__'),
67 'forcetoc' => array( 0, '__FORCETOC__'),
68 'toc' => array( 0, '__TOC__', '__СОДЕРЖАНИЕ__'),
69 'noeditsection' => array( 0, '__NOEDITSECTION__', '__БЕЗРЕДАКТИРОВАНИЯРАЗДЕЛА__'),
70 'start' => array( 0, '__START__', '__НАЧАЛО__'),
71 'currentmonth' => array( 1, 'CURRENTMONTH', 'ТЕКУЩИЙМЕСЯЦ'),
72 'currentmonthname' => array( 1, 'CURRENTMONTHNAME','НАЗВАНИЕТЕКУЩЕГОМЕСЯЦА'),
73 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN','НАЗВАНИЕТЕКУЩЕГОМЕСЯЦАРОД'),
74 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV', 'НАЗВАНИЕТЕКУЩЕГОМЕСЯЦААБР'),
75 'currentday' => array( 1, 'CURRENTDAY','ТЕКУЩИЙДЕНЬ'),
76 'currentday2' => array( 1, 'CURRENTDAY2','ТЕКУЩИЙДЕНЬ2'),
77 'currentdayname' => array( 1, 'CURRENTDAYNAME','НАЗВАНИЕТЕКУЩЕГОДНЯ'),
78 'currentyear' => array( 1, 'CURRENTYEAR','ТЕКУЩИЙГОД'),
79 'currenttime' => array( 1, 'CURRENTTIME','ТЕКУЩЕЕВРЕМЯ'),
80 'numberofarticles' => array( 1, 'NUMBEROFARTICLES','КОЛИЧЕСТВОСТАТЕЙ'),
81 'numberoffiles' => array( 1, 'NUMBEROFFILES', 'КОЛИЧЕСТВОФАЛОВ'),
82 'pagename' => array( 1, 'PAGENAME','НАЗВАНИЕСТРАНИЦЫ'),
83 'pagenamee' => array( 1, 'PAGENAMEE','НАЗВАНИЕСТРАНИЦЫ2'),
84 'namespace' => array( 1, 'NAMESPACE','ПРОСТРАНСТВОИМЁН'),
85 'msg' => array( 0, 'MSG:'),
86 'subst' => array( 0, 'SUBST:','ПОДСТ:'),
87 'msgnw' => array( 0, 'MSGNW:'),
88 'end' => array( 0, '__END__','__КОНЕЦ__'),
89 'img_thumbnail' => array( 1, 'thumbnail', 'thumb', 'мини'),
90 'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1', 'мини=$1'),
91 'img_right' => array( 1, 'right','справа'),
92 'img_left' => array( 1, 'left','слева'),
93 'img_none' => array( 1, 'none'),
94 'img_width' => array( 1, '$1px','$1пкс'),
95 'img_center' => array( 1, 'center', 'centre','центр'),
96 'img_framed' => array( 1, 'framed', 'enframed', 'frame','обрамить'),
97 'int' => array( 0, 'INT:'),
98 'sitename' => array( 1, 'SITENAME','НАЗВАНИЕСАЙТА'),
99 'ns' => array( 0, 'NS:','ПИ:'),
100 'localurl' => array( 0, 'LOCALURL:'),
101 'localurle' => array( 0, 'LOCALURLE:'),
102 'server' => array( 0, 'SERVER','СЕРВЕР'),
103 'servername' => array( 0, 'SERVERNAME', 'НАЗВАНИЕСЕРВЕРА'),
104 'scriptpath' => array( 0, 'SCRIPTPATH', 'ПУТЬКСКРИПТУ'),
105 'grammar' => array( 0, 'GRAMMAR:'),
106 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__БЕЗПРЕОБРАЗОВАНИЯЗАГОЛОВКА__'),
107 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__БЕЗПРЕОБРАЗОВАНИЯТЕКСТА__'),
108 'currentweek' => array( 1, 'CURRENTWEEK','ТЕКУЩАЯНЕДЕЛЯ'),
109 'currentdow' => array( 1, 'CURRENTDOW','ТЕКУЩИЙДЕНЬНЕДЕЛИ'),
110 'revisionid' => array( 1, 'REVISIONID', 'ИДВЕРСИИ'),
111 );
112
113 if (!$wgCachedMessageArrays) {
114 require_once('MessagesRu.php');
115 }
116
117 /* Please, see Language.php for general function comments */
118 class LanguageRu extends LanguageUtf8 {
119 function __construct() {
120 global $wgNamespaceNamesRu, $wgMetaNamespace;
121 parent::__construct();
122 $wgNamespaceNamesRu[NS_PROJECT_TALK] = 'Обсуждение_' . $this->convertGrammar( $wgMetaNamespace, 'genitive' );
123 }
124
125 function getNamespaces() {
126 global $wgNamespaceNamesRu;
127 return $wgNamespaceNamesRu;
128 }
129
130 function getQuickbarSettings() {
131 global $wgQuickbarSettingsRu;
132 return $wgQuickbarSettingsRu;
133 }
134
135 function getSkinNames() {
136 global $wgSkinNamesRu;
137 return $wgSkinNamesRu;
138 }
139
140 function getDateFormats() {
141 global $wgDateFormatsRu;
142 return $wgDateFormatsRu;
143 }
144
145 function getMessage( $key ) {
146 global $wgAllMessagesRu;
147 return isset($wgAllMessagesRu[$key]) ? $wgAllMessagesRu[$key] : parent::getMessage($key);
148 }
149
150 function fallback8bitEncoding() {
151 return "windows-1251";
152 }
153
154 //only for quotation mark
155 function linkPrefixExtension() { return true; }
156
157 function &getMagicWords() {
158 global $wgMagicWordsRu;
159 return $wgMagicWordsRu;
160 }
161
162 # Convert from the nominative form of a noun to some other case
163 # Invoked with {{grammar:case|word}}
164 function convertGrammar( $word, $case ) {
165 global $wgGrammarForms;
166 if ( isset($wgGrammarForms['ru'][$case][$word]) ) {
167 return $wgGrammarForms['ru'][$case][$word];
168 }
169
170 # These rules are not perfect, but they are currently only used for site names so it doesn't
171 # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
172
173 #join and array_slice instead mb_substr
174 $ar = array();
175 preg_match_all( '/./us', $word, $ar );
176 if (!preg_match("/[a-zA-Z_]/us", $word))
177 switch ( $case ) {
178 case 'genitive': #родительный падеж
179 if ((join('',array_slice($ar[0],-4))=='вики') || (join('',array_slice($ar[0],-4))=='Вики'))
180 {}
181 elseif (join('',array_slice($ar[0],-1))=='ь')
182 $word = join('',array_slice($ar[0],0,-1)).'я';
183 elseif (join('',array_slice($ar[0],-2))=='ия')
184 $word=join('',array_slice($ar[0],0,-2)).'ии';
185 elseif (join('',array_slice($ar[0],-2))=='ка')
186 $word=join('',array_slice($ar[0],0,-2)).'ки';
187 elseif (join('',array_slice($ar[0],-2))=='ти')
188 $word=join('',array_slice($ar[0],0,-2)).'тей';
189 elseif (join('',array_slice($ar[0],-2))=='ды')
190 $word=join('',array_slice($ar[0],0,-2)).'дов';
191 elseif (join('',array_slice($ar[0],-3))=='ник')
192 $word=join('',array_slice($ar[0],0,-3)).'ника';
193 break;
194 case 'dative': #дательный падеж
195 #stub
196 break;
197 case 'accusative': #винительный падеж
198 #stub
199 break;
200 case 'instrumental': #творительный падеж
201 #stub
202 break;
203 case 'prepositional': #предложный падеж
204 #stub
205 break;
206 }
207 return $word;
208 }
209
210 function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
211 $count = str_replace (' ', '', $count);
212 if ($count > 10 && floor(($count % 100) / 10) == 1) {
213 return $wordform3;
214 } else {
215 switch ($count % 10) {
216 case 1: return $wordform1;
217 case 2:
218 case 3:
219 case 4: return $wordform2;
220 default: return $wordform3;
221 }
222 }
223 }
224
225 /*
226 * Russian numeric format is "12 345,67" but "1234,56"
227 */
228
229 function commafy($_) {
230 if (!preg_match('/^\d{1,4}$/',$_)) {
231 return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
232 } else {
233 return $_;
234 }
235 }
236
237 function separatorTransformTable() {
238 return array(
239 ',' => "\xc2\xa0",
240 '.' => ','
241 );
242 }
243
244 function getMonthNameGen( $key ) {
245 global $wgMonthNamesGenEn, $wgContLang;
246 // see who called us and use the correct message function
247 if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
248 return wfMsgForContent( $wgMonthNamesGenEn[$key-1] );
249 else
250 return wfMsg( $wgMonthNamesGenEn[$key-1] );
251 }
252
253 function formatMonth( $month, $format ) {
254 return $this->getMonthNameGen( $month );
255 }
256
257 }
258 ?>