Index: trunk/extensions/Configure/settings/Settings-ext.txt |
— | — | @@ -171,7 +171,7 @@ |
172 | 172 | settings[] = wgCategoryWatchNotifyEditor: bool, wgCategoryWatchUseAutoCat: bool |
173 | 173 | url = http://www.mediawiki.org/wiki/Extension:CategoryWatch |
174 | 174 | |
175 | | -catfeed |
| 175 | +CategoryFeed |
176 | 176 | url = http://wikidev.net |
177 | 177 | |
178 | 178 | CentralAuth |
Index: trunk/extensions/CategoryFeed/CategoryFeed.i18n.php |
— | — | @@ -0,0 +1,468 @@ |
| 2 | +<?php |
| 3 | +/* Internationalization file for CategoryFeed extension |
| 4 | +*/ |
| 5 | + |
| 6 | +$messages = array(); |
| 7 | + |
| 8 | +$messages['en'] = array( |
| 9 | + 'categoryfeed-desc' => 'Uses bits from recentchanges feeds. |
| 10 | +Create in-page version, especially useful for Wikinews', |
| 11 | +); |
| 12 | + |
| 13 | +/** Message documentation (Message documentation) |
| 14 | + * @author Purodha |
| 15 | + */ |
| 16 | +$messages['qqq'] = array( |
| 17 | + 'categoryfeed-desc' => 'Short description of this extension, shown on [[Special:Version]]. Do not translate or change links.', |
| 18 | +); |
| 19 | + |
| 20 | +/** Arabic (العربية) |
| 21 | + * @author Meno25 |
| 22 | + */ |
| 23 | +$messages['ar'] = array( |
| 24 | + 'categoryfeed-desc' => 'يستخدم أجزاء من تلقيمات أحدث التغييرات. ينشئ نسخة في الصفحة، مفيد خصوصا لويكي الأخبار.', |
| 25 | +); |
| 26 | + |
| 27 | +/** Egyptian Spoken Arabic (مصرى) |
| 28 | + * @author Meno25 |
| 29 | + */ |
| 30 | +$messages['arz'] = array( |
| 31 | + 'categoryfeed-desc' => 'يستخدم أجزاء من تلقيمات أحدث التغييرات. ينشئ نسخة فى الصفحة، مفيد خصوصا لويكى الأخبار.', |
| 32 | +); |
| 33 | + |
| 34 | +/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца)) |
| 35 | + * @author EugeneZelenko |
| 36 | + */ |
| 37 | +$messages['be-tarask'] = array( |
| 38 | + 'categoryfeed-desc' => 'Выкарыстоўвае некаторыя часткі стужкі апошніх зьменаў. |
| 39 | +Стварае яе вэрсію на старонцы, асабліва карысна для ВікіНавінаў.', |
| 40 | +); |
| 41 | + |
| 42 | +/** Bengali (বাংলা) |
| 43 | + * @author Zaheen |
| 44 | + */ |
| 45 | +$messages['bn'] = array( |
| 46 | + 'categoryfeed-desc' => 'সাম্প্রতিক পরিবর্তনের ফিড থেকে বিট ব্যবহার করে। পাতা-মধ্যবর্তী সংস্করণ সৃষ্টি করুন, উইকিসংবাদের জন্য বিশেষ উপকারী।', |
| 47 | +); |
| 48 | + |
| 49 | +/** Breton (Brezhoneg) |
| 50 | + * @author Fulup |
| 51 | + */ |
| 52 | +$messages['br'] = array( |
| 53 | + 'categoryfeed-desc' => 'Implijout a ra bitoù evit boueta an degasadennoù nevez. Sevel a ra stumm ur bajenn, ar pezh zo emsav-tre evit Wikinews.', |
| 54 | +); |
| 55 | + |
| 56 | +/** Bosnian (Bosanski) |
| 57 | + * @author CERminator |
| 58 | + */ |
| 59 | +$messages['bs'] = array( |
| 60 | + 'categoryfeed-desc' => 'Koristi bitove iz fida nedavnih promjena. |
| 61 | +Pravi verziju in-page, naročito korisna za Wikivijesti.', |
| 62 | +); |
| 63 | + |
| 64 | +/** Catalan (Català) |
| 65 | + * @author Ssola |
| 66 | + */ |
| 67 | +$messages['ca'] = array( |
| 68 | + 'categoryfeed-desc' => 'Utilitza fragments dels canvis recents. |
| 69 | +Crea versions per les pàgines, especialment útil per Wikinews.', |
| 70 | +); |
| 71 | + |
| 72 | +/** Czech (Česky) |
| 73 | + * @author Matěj Grabovský |
| 74 | + */ |
| 75 | +$messages['cs'] = array( |
| 76 | + 'categoryfeed-desc' => 'Používá kousky z kanálů posledních změn. Vytvoří verzi v rámci stránky. Obzvlášť užitečné pro Wikinews.', |
| 77 | +); |
| 78 | + |
| 79 | +/** German (Deutsch) |
| 80 | + * @author Melancholie |
| 81 | + */ |
| 82 | +$messages['de'] = array( |
| 83 | + 'categoryfeed-desc' => 'Nutzt Teile der Letzte-Änderungen-Newsfeeds. |
| 84 | +Erzeugung einer eingebetteten Version; besonders für Wikinews nützlich.', |
| 85 | +); |
| 86 | + |
| 87 | +/** Lower Sorbian (Dolnoserbski) |
| 88 | + * @author Michawiki |
| 89 | + */ |
| 90 | +$messages['dsb'] = array( |
| 91 | + 'categoryfeed-desc' => 'Wužywa bity z kanalow aktualnych změnow. |
| 92 | +Napóraj wersiju w boku, wósebnje wužytnu za Wikinowosće.', |
| 93 | +); |
| 94 | + |
| 95 | +/** Greek (Ελληνικά) |
| 96 | + * @author Omnipaedista |
| 97 | + */ |
| 98 | +$messages['el'] = array( |
| 99 | + 'categoryfeed-desc' => 'Χρησιμοποιεί κομμάτια από τη ροή προσφάτων αλλαγών. |
| 100 | +Δημιουργία έκδοσης για εισαγωγή μέσα στις σελίδες, ιδιαίτερα χρήσιμης για τα Βικινέα', |
| 101 | +); |
| 102 | + |
| 103 | +/** Spanish (Español) |
| 104 | + * @author Sanbec |
| 105 | + */ |
| 106 | +$messages['es'] = array( |
| 107 | + 'categoryfeed-desc' => 'Usa partes de sindicaciones de modificaciones recientes. |
| 108 | +Crea versiones para su uso en páginas, especialmente útil para Wikinews.', |
| 109 | +); |
| 110 | + |
| 111 | +/** Basque (Euskara) |
| 112 | + * @author Theklan |
| 113 | + */ |
| 114 | +$messages['eu'] = array( |
| 115 | + 'categoryfeed-desc' => 'Azken aldaketen jariotik zatiak erabiltzen ditu. |
| 116 | +Wikinewserako bereziki erabilgarria den in-page bertsioa sortzen du.', |
| 117 | +); |
| 118 | + |
| 119 | +/** Finnish (Suomi) |
| 120 | + * @author Cimon Avaro |
| 121 | + * @author Crt |
| 122 | + */ |
| 123 | +$messages['fi'] = array( |
| 124 | + 'categoryfeed-desc' => 'Käyttää osasia tuoreet muutokset -syötteestä. |
| 125 | +Luo sivunsisäisen version, joka on erityisen hyödyllistä Wikinewsissä.', |
| 126 | +); |
| 127 | + |
| 128 | +/** French (Français) |
| 129 | + * @author McDutchie |
| 130 | + */ |
| 131 | +$messages['fr'] = array( |
| 132 | + 'categoryfeed-desc' => 'Utilise des pièces des syndications de modifications récentes. |
| 133 | +Crée une version à insérer dans les pages, très pratique pour Wikinews.', |
| 134 | +); |
| 135 | + |
| 136 | +/** Galician (Galego) |
| 137 | + * @author Toliño |
| 138 | + */ |
| 139 | +$messages['gl'] = array( |
| 140 | + 'categoryfeed-desc' => 'Usa anacos de accións dos cambios recentes. |
| 141 | +Crear versións dentro dunha páxina, útil especialmente nas Galinovas.', |
| 142 | +); |
| 143 | + |
| 144 | +/** Swiss German (Alemannisch) |
| 145 | + * @author Als-Holder |
| 146 | + */ |
| 147 | +$messages['gsw'] = array( |
| 148 | + 'categoryfeed-desc' => 'Nutzt Teil vu dr Letschte-Änderige-Newsfeeds. |
| 149 | +E yybetteti Version aalege; bsundersch fir Wikinews nitzli.', |
| 150 | +); |
| 151 | + |
| 152 | +/** Hebrew (עברית) |
| 153 | + * @author Rotemliss |
| 154 | + */ |
| 155 | +$messages['he'] = array( |
| 156 | + 'categoryfeed-desc' => 'שימוש בחלקים מהזנות השינויים האחרונים כדי ליצור גרסה בתוך הדף. פעולה זו שימושית במיוחד בוויקיחדשות.', |
| 157 | +); |
| 158 | + |
| 159 | +/** Hindi (हिन्दी) |
| 160 | + * @author Kaustubh |
| 161 | + */ |
| 162 | +$messages['hi'] = array( |
| 163 | + 'categoryfeed-desc' => 'हाल में हुए बदलावोंके फीड्स इस्तेमाल करता हैं। |
| 164 | +पन्ने के अंदर ही अवतरण बन जाते हैं, जो कि विकिन्युज के लिये विशेष उपयुक्त हैं।', |
| 165 | +); |
| 166 | + |
| 167 | +/** Hiligaynon (Ilonggo) |
| 168 | + * @author Tagimata |
| 169 | + */ |
| 170 | +$messages['hil'] = array( |
| 171 | + 'categoryfeed-desc' => 'Naga-gamit sang gamay-gamay nga butang halin sa mga bag-o nga gin-islan feeds. |
| 172 | +Himu-an in-pahina bersiyon, labi na gid ang mga mapuslanon para sa Wikinews', |
| 173 | +); |
| 174 | + |
| 175 | +/** Upper Sorbian (Hornjoserbsce) |
| 176 | + * @author Michawiki |
| 177 | + */ |
| 178 | +$messages['hsb'] = array( |
| 179 | + 'categoryfeed-desc' => 'Wužiwa bity z kanalow aktualnych změnow. Wutwor wersiju w stronje, kotraž je wosebje wužitna za WikiNews.', |
| 180 | +); |
| 181 | + |
| 182 | +/** Hungarian (Magyar) |
| 183 | + * @author Glanthor Reviol |
| 184 | + */ |
| 185 | +$messages['hu'] = array( |
| 186 | + 'categoryfeed-desc' => 'A friss változások hírcsatornáiból használ részleteket. |
| 187 | +Lapon belüli változatot készít, különösen hasznos a Wikihírekhez', |
| 188 | +); |
| 189 | + |
| 190 | +/** Interlingua (Interlingua) |
| 191 | + * @author McDutchie |
| 192 | + */ |
| 193 | +$messages['ia'] = array( |
| 194 | + 'categoryfeed-desc' => 'Usa partes de syndicationes de modificationes recente. |
| 195 | +Crea versiones pro uso in paginas, specialmente utile pro Wikinews.', |
| 196 | +); |
| 197 | + |
| 198 | +/** Indonesian (Bahasa Indonesia) |
| 199 | + * @author Bennylin |
| 200 | + */ |
| 201 | +$messages['id'] = array( |
| 202 | + 'categoryfeed-desc' => 'Menggunakan bit dari sindikasi perubahan terbaru. |
| 203 | +Membuat versi halamannya, berguna terutama untuk Wikinews', |
| 204 | +); |
| 205 | + |
| 206 | +/** Italian (Italiano) |
| 207 | + * @author Darth Kule |
| 208 | + */ |
| 209 | +$messages['it'] = array( |
| 210 | + 'categoryfeed-desc' => 'Utilizza parti dai feed delle ultime modifiche. |
| 211 | +Crea una versione da inserire nelle pagine, particolarmente utile per Wikinews', |
| 212 | +); |
| 213 | + |
| 214 | +/** Japanese (日本語) |
| 215 | + * @author Aotake |
| 216 | + * @author JtFuruhata |
| 217 | + */ |
| 218 | +$messages['ja'] = array( |
| 219 | + 'categoryfeed-desc' => '最近の更新フィードから一部の情報を抽出し、ページ内バージョンを作成する。ウィキニュースで特に有用', |
| 220 | +); |
| 221 | + |
| 222 | +/** Korean (한국어) |
| 223 | + * @author Klutzy |
| 224 | + * @author Yknok29 |
| 225 | + */ |
| 226 | +$messages['ko'] = array( |
| 227 | + 'categoryfeed-desc' => '최근 바뀜 피드에서 일부 정보를 빼내, 문서 내부 버전을 작성합니다. 위키뉴스에 유용한 기능입니다.', |
| 228 | +); |
| 229 | + |
| 230 | +/** Ripoarisch (Ripoarisch) |
| 231 | + * @author Purodha |
| 232 | + */ |
| 233 | +$messages['ksh'] = array( |
| 234 | + 'categoryfeed-desc' => 'Bruch Stöcker fum <i lang="en">ecentchanges feeds</i>, määt et en de Sigge, dat es besöngisch joot ze Bruche em Neueschkeitewiki.', |
| 235 | +); |
| 236 | + |
| 237 | +/** Luxembourgish (Lëtzebuergesch) |
| 238 | + * @author Robby |
| 239 | + */ |
| 240 | +$messages['lb'] = array( |
| 241 | + 'categoryfeed-desc' => 'Benotzt Biten vun de Rezenten Ännerungen. |
| 242 | +Leet eng nei Versioun an der Säit unn, besonnesch nëtzlech fir Wikinews', |
| 243 | +); |
| 244 | + |
| 245 | +/** Limburgish (Limburgs) |
| 246 | + * @author Ooswesthoesbes |
| 247 | + */ |
| 248 | +$messages['li'] = array( |
| 249 | + 'categoryfeed-desc' => "Gebroek informatie oet de recente wieziginge. |
| 250 | +Maak 'n versie binne 'n pagina. |
| 251 | +In 't biezunjer henjig veur Wikinews", |
| 252 | +); |
| 253 | + |
| 254 | +/** Malagasy (Malagasy) |
| 255 | + * @author Jagwar |
| 256 | + */ |
| 257 | +$messages['mg'] = array( |
| 258 | + 'categoryfeed-desc' => "Mampiasa piesy avy amin'ny topa ny fanovàna farany. |
| 259 | +Manome fapitahana ampidirina anaty pejy, ilaina be ho an'ny Wikivao", |
| 260 | +); |
| 261 | + |
| 262 | +/** Macedonian (Македонски) |
| 263 | + * @author Bjankuloski06 |
| 264 | + */ |
| 265 | +$messages['mk'] = array( |
| 266 | + 'categoryfeed-desc' => 'Кориснички делчиња од емитувања за скорешни промени. |
| 267 | +Создава верзија во самата страница, особено корисно за Викивести', |
| 268 | +); |
| 269 | + |
| 270 | +/** Marathi (मराठी) |
| 271 | + * @author Kaustubh |
| 272 | + */ |
| 273 | +$messages['mr'] = array( |
| 274 | + 'categoryfeed-desc' => 'अलीकडील बदलांमधील फीड्स वापरते. पानातच आवृत्ती तयार होते, विकिन्युज साठी विशेष उपयुक्त.', |
| 275 | +); |
| 276 | + |
| 277 | +/** Low German (Plattdüütsch) |
| 278 | + * @author Slomox |
| 279 | + */ |
| 280 | +$messages['nds'] = array( |
| 281 | + 'categoryfeed-desc' => 'Bruukt Delen vun de Toletzt-Ännert-Newsfeeds. |
| 282 | +Maakt en inbunnen Version; besünners praktisch för Wikinews.', |
| 283 | +); |
| 284 | + |
| 285 | +/** Nedersaksisch (Nedersaksisch) |
| 286 | + * @author Servien |
| 287 | + */ |
| 288 | +$messages['nds-nl'] = array( |
| 289 | + 'categoryfeed-desc' => "Gebruuk infermasie uut de leste wiezigingen. |
| 290 | +Maak een versie binnen een pagina, in 't biezunder hendig veur Wikiniejs", |
| 291 | +); |
| 292 | + |
| 293 | +/** Nepali (नेपाली) |
| 294 | + * @author सरोज कुमार ढकाल |
| 295 | + */ |
| 296 | +$messages['ne'] = array( |
| 297 | + 'categoryfeed-desc' => 'हालै परिवर्तन गरिएको फिडबाट बिट्सहरु प्रयोग गर्छ । |
| 298 | +पृष्ठ-भित्र शृजना गर्ने , विशेषरुपमा विकिन्युजलाई प्रभावकारी', |
| 299 | +); |
| 300 | + |
| 301 | +/** Dutch (Nederlands) |
| 302 | + * @author Siebrand |
| 303 | + */ |
| 304 | +$messages['nl'] = array( |
| 305 | + 'categoryfeed-desc' => 'Gebruikt informatie uit de recente wijzigingen. |
| 306 | +Maakt een versie binnen een pagina. |
| 307 | +In het bijzonder handig voor Wikinews', |
| 308 | +); |
| 309 | + |
| 310 | +/** Norwegian Nynorsk (Norsk (nynorsk)) |
| 311 | + * @author Harald Khan |
| 312 | + */ |
| 313 | +$messages['nn'] = array( |
| 314 | + 'categoryfeed-desc' => 'Nyttar informasjon frå siste endringar. |
| 315 | +Ein kan laga versjonar til bruk på innhaldssider, noko som er spesielt nyttig for Wikinyhende.', |
| 316 | +); |
| 317 | + |
| 318 | +/** Norwegian (bokmål) (Norsk (bokmål)) |
| 319 | + * @author Jon Harald Søby |
| 320 | + */ |
| 321 | +$messages['no'] = array( |
| 322 | + 'categoryfeed-desc' => 'Bruker informasjon fra siste endringer. Man kan lage versjoner til bruk på innholdssider, noe som er spesielt nyttig for Wikinews.', |
| 323 | +); |
| 324 | + |
| 325 | +/** Occitan (Occitan) |
| 326 | + * @author Cedric31 |
| 327 | + */ |
| 328 | +$messages['oc'] = array( |
| 329 | + 'categoryfeed-desc' => 'Utiliza de bits per alimentar los darrièrs cambiaments. Crèa una version de pagina, fòrça practica per Wikinews.', |
| 330 | +); |
| 331 | + |
| 332 | +/** Plautdietsch (Plautdietsch) |
| 333 | + * @author Wikipeeta |
| 334 | + */ |
| 335 | +$messages['pdt'] = array( |
| 336 | + 'categoryfeed-desc' => 'Brukt Deele vonne Latzte-Endarung-Newsfeeds. |
| 337 | +Moakt eene ennjebungne Versioon; besondasch praktisch fe Wikinews.', |
| 338 | +); |
| 339 | + |
| 340 | +/** Polish (Polski) |
| 341 | + * @author Sp5uhe |
| 342 | + */ |
| 343 | +$messages['pl'] = array( |
| 344 | + 'categoryfeed-desc' => 'Wykorzystując informacje z listy ostatnich zmian tworzy wersję umieszczaną wewnątrz treści strony. Szczególnie użyteczne dla Wikinews.', |
| 345 | +); |
| 346 | + |
| 347 | +/** Piedmontese (Piemontèis) |
| 348 | + * @author Dragonòt |
| 349 | + */ |
| 350 | +$messages['pms'] = array( |
| 351 | + 'categoryfeed-desc' => 'A dòvra dij "bit" da dij "feed" pen-e cambià. |
| 352 | +A crea vërsion anpaginà, utij dzortut për Wikinews', |
| 353 | +); |
| 354 | + |
| 355 | +/** Portuguese (Português) |
| 356 | + * @author Malafaya |
| 357 | + */ |
| 358 | +$messages['pt'] = array( |
| 359 | + 'categoryfeed-desc' => 'Usa pedaços de "feeds" de alterações recentes. Cria uma versão dentro de uma página, especialmente útil para Wikinotícias.', |
| 360 | +); |
| 361 | + |
| 362 | +/** Brazilian Portuguese (Português do Brasil) |
| 363 | + * @author Eduardo.mps |
| 364 | + */ |
| 365 | +$messages['pt-br'] = array( |
| 366 | + 'categoryfeed-desc' => 'Usa partes do "feed" das alterações recentes. Cria uma versão dentro de uma página, especialmente útil para o Wikinotícias.', |
| 367 | +); |
| 368 | + |
| 369 | +/** Tarandíne (Tarandíne) |
| 370 | + * @author Joetaras |
| 371 | + */ |
| 372 | +$messages['roa-tara'] = array( |
| 373 | + 'categoryfeed-desc' => "Ause le stuezze da le feed de le cangiaminde recende. |
| 374 | +Ccreje 'na versione jndr'à pàgene, specialmende utile pe le Uicchinews.", |
| 375 | +); |
| 376 | + |
| 377 | +/** Russian (Русский) |
| 378 | + * @author Александр Сигачёв |
| 379 | + */ |
| 380 | +$messages['ru'] = array( |
| 381 | + 'categoryfeed-desc' => 'Использует некоторые части ленты свежих правок, создаёт её версию внутри страницы. Особенно полезно для Викиновостей.', |
| 382 | +); |
| 383 | + |
| 384 | +/** Yakut (Саха тыла) |
| 385 | + * @author HalanTul |
| 386 | + */ |
| 387 | +$messages['sah'] = array( |
| 388 | + 'categoryfeed-desc' => 'Кэлиҥҥи уларытыылар сорҕолорун туһанар, сирэй иһигэр хатылыыр. |
| 389 | +Биики Сонуннарга ордук туһалаах.', |
| 390 | +); |
| 391 | + |
| 392 | +/** Slovak (Slovenčina) |
| 393 | + * @author Helix84 |
| 394 | + */ |
| 395 | +$messages['sk'] = array( |
| 396 | + 'categoryfeed-desc' => 'Používa kúsky z kanálov posledných zmien. Vytvorí verziu v rámci stránky. Obzvlášť užitočné pre Wikinews.', |
| 397 | +); |
| 398 | + |
| 399 | +/** Serbian Cyrillic ekavian (Српски (ћирилица)) |
| 400 | + * @author Михајло Анђелковић |
| 401 | + */ |
| 402 | +$messages['sr-ec'] = array( |
| 403 | + 'categoryfeed-desc' => 'Користи битове из протока скорашњих измена. |
| 404 | +Прави верзију унутар стране, посебно корисну за Викивести.', |
| 405 | +); |
| 406 | + |
| 407 | +/** Serbian Latin ekavian (Srpski (latinica)) |
| 408 | + * @author Michaello |
| 409 | + */ |
| 410 | +$messages['sr-el'] = array( |
| 411 | + 'categoryfeed-desc' => 'Koristi bitove iz protoka skorašnjih izmena. |
| 412 | +Pravi verziju unutar strane, posebno korisnu za Vikivesti.', |
| 413 | +); |
| 414 | + |
| 415 | +/** Seeltersk (Seeltersk) |
| 416 | + * @author Pyt |
| 417 | + */ |
| 418 | +$messages['stq'] = array( |
| 419 | + 'categoryfeed-desc' => 'Nutset Deele fon ju Lääste-Annerengen-Newsfeeds. |
| 420 | +Moakjen fon ne ienbäädede Version; besunners foar Wikinews nutselk.', |
| 421 | +); |
| 422 | + |
| 423 | +/** Swedish (Svenska) |
| 424 | + * @author M.M.S. |
| 425 | + */ |
| 426 | +$messages['sv'] = array( |
| 427 | + 'categoryfeed-desc' => 'Använder information från senaste ändringarna. Man kan skapa versioner för användning till innehållssidor, något som är speciellt användbart för Wikinews.', |
| 428 | +); |
| 429 | + |
| 430 | +/** Telugu (తెలుగు) |
| 431 | + * @author Veeven |
| 432 | + */ |
| 433 | +$messages['te'] = array( |
| 434 | + 'categoryfeed-desc' => 'ఇటీవలి మార్పుల ఫీడుల నుండి అంకాలని వాడుకుంటుంది. |
| 435 | +పేజీ-లో సంచికని సృష్టించండి, వికీన్యూస్‌కి ఉపయోగకరం', |
| 436 | +); |
| 437 | + |
| 438 | +/** Tagalog (Tagalog) |
| 439 | + * @author AnakngAraw |
| 440 | + */ |
| 441 | +$messages['tl'] = array( |
| 442 | + 'categoryfeed-desc' => "Gumagamit ng maliliit na mga piraso mula sa isinubong kamakailang mga pagbabago. |
| 443 | +Lumikha ng bersyong nasa loob ng pahina, partikular na magagamit para sa Wikibalita (''Wikinews'').", |
| 444 | +); |
| 445 | + |
| 446 | +/** Turkish (Türkçe) |
| 447 | + * @author Vito Genovese |
| 448 | + */ |
| 449 | +$messages['tr'] = array( |
| 450 | + 'categoryfeed-desc' => 'Son değişiklikler beslemelerinin parçalarını kullanır. |
| 451 | +Özellikle Vikihaber için yararlı olan sayfa içi sürümünü oluşturun', |
| 452 | +); |
| 453 | + |
| 454 | +/** Ukrainian (Українська) |
| 455 | + * @author Ahonc |
| 456 | + */ |
| 457 | +$messages['uk'] = array( |
| 458 | + 'categoryfeed-desc' => 'Використовує деякі частини стрічки свіжих змін. |
| 459 | +Створює її версію всередині сторінки, особливо корисно для Вікіновин.', |
| 460 | +); |
| 461 | + |
| 462 | +/** Vietnamese (Tiếng Việt) |
| 463 | + * @author Vinhtantran |
| 464 | + */ |
| 465 | +$messages['vi'] = array( |
| 466 | + 'categoryfeed-desc' => 'Sử dụng những đoạn ngắn từ bản tin của thay đổi gần đây. |
| 467 | +Tạo ra một phiên bản nhúng vào trang, đặc biệt hữu ích cho Wikinews.', |
| 468 | +); |
| 469 | + |
Property changes on: trunk/extensions/CategoryFeed/CategoryFeed.i18n.php |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 470 | + native |
Index: trunk/extensions/CategoryFeed/CategoryFeed.php |
— | — | @@ -0,0 +1,321 @@ |
| 2 | +<?php |
| 3 | +/** |
| 4 | + * CategoryFeed extension for MediaWiki 1.4+ |
| 5 | + * |
| 6 | + * Copyright (C) 2005 Gabriel Wicke <wicke@wikidev.net> |
| 7 | + * http://wikidev.net |
| 8 | + * |
| 9 | + * uses bits from recentchanges feeds |
| 10 | + * |
| 11 | + * This program is free software; you can redistribute it and/or modify |
| 12 | + * it under the terms of the GNU General Public License as published by |
| 13 | + * the Free Software Foundation; either version 2 of the License, or |
| 14 | + * (at your option) any later version. |
| 15 | + * |
| 16 | + * This program is distributed in the hope that it will be useful, |
| 17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 19 | + * GNU General Public License for more details. |
| 20 | + * |
| 21 | + * You should have received a copy of the GNU General Public License along |
| 22 | + * with this program; if not, write to the Free Software Foundation, Inc., |
| 23 | + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
| 24 | + * http://www.gnu.org/copyleft/gpl.html |
| 25 | + * |
| 26 | + * @todo Create in-page version, especially useful for wikinews |
| 27 | + */ |
| 28 | + |
| 29 | + |
| 30 | +$wgExtensionFunctions[] = 'setupCatRSSExtension'; |
| 31 | +$wgExtensionCredits['other'][] = array( |
| 32 | + 'path' => __FILE__, |
| 33 | + 'name' => 'Category Feed', |
| 34 | + 'author' => 'Gabriel Wicke', |
| 35 | + 'descriptionmsg' => 'categoryfeed-desc', |
| 36 | + 'url' => 'http://wikidev.net', |
| 37 | +); |
| 38 | + |
| 39 | +$dir = dirname(__FILE__) . '/'; |
| 40 | +$wgExtensionMessagesFiles['catfeed'] = $dir . 'Categoryfeed.i18n.php'; |
| 41 | + |
| 42 | +if( $wgCategoryMagicGallery ) |
| 43 | + require_once('ImageGallery.php'); |
| 44 | + |
| 45 | +function setupCatRSSExtension() { |
| 46 | + |
| 47 | + global $IP; |
| 48 | + require_once( "$IP/includes/CategoryPage.php" ); |
| 49 | + require_once("Feed.php"); |
| 50 | + wfLoadExtensionMessages( 'catfeed' ); |
| 51 | + global $wgHooks; |
| 52 | + |
| 53 | + $wgHooks['CategoryPageView'][] = 'viewCatFeed'; |
| 54 | + global $wgParser; |
| 55 | + $wgParser->setHook( "catnews", "viewCatNewslist" ); |
| 56 | + |
| 57 | + |
| 58 | + class CategoryByDate extends CategoryPage { |
| 59 | + /** |
| 60 | + * Feed for recently-added members of a category based on cl_timestamp |
| 61 | + * Uses bits of the recentchanges feeds (caching and formatting) |
| 62 | + */ |
| 63 | + |
| 64 | + var $mLimit = 50; |
| 65 | + var $mDatelevel = 2; |
| 66 | + |
| 67 | + function CategoryByDate( &$title, $tarray = false ) { |
| 68 | + global $wgRequest; |
| 69 | + $this->mTitle = $title; |
| 70 | + $this->mFeedFormat = $wgRequest->getVal( 'feed', '' ); |
| 71 | + $this->mTitleStrings = array(); |
| 72 | + if ( is_array($tarray) ) { |
| 73 | + foreach($tarray as $title) { |
| 74 | + $this->mTitleStrings[] = $title->getDBkey(); |
| 75 | + } |
| 76 | + } else { |
| 77 | + $this->mTitleStrings[] = $title->getDBkey(); |
| 78 | + } |
| 79 | + } |
| 80 | + |
| 81 | + function view() { |
| 82 | + // cache handling in subclass |
| 83 | + return $this->getData(); |
| 84 | + } |
| 85 | + function getData() { |
| 86 | + $fname = __CLASS__ . '::' . __FUNCTION__; |
| 87 | + $this->mMaxTimeStamp = 0; |
| 88 | + |
| 89 | + $dbr = wfGetDB( DB_SLAVE ); |
| 90 | + $set = implode( ',', array_map( |
| 91 | + array( &$dbr, 'addQuotes' ), |
| 92 | + $this->mTitleStrings ) ); |
| 93 | + $res = $dbr->select( |
| 94 | + array( 'cur', 'categorylinks' ), |
| 95 | + array( 'cur_title', 'cur_namespace', 'cur_text', 'cur_user_text', 'cl_sortkey', 'cl_timestamp' ), |
| 96 | + array( 'cl_from = cur_id', |
| 97 | + 'cl_to IN (' . $set . ')', |
| 98 | + 'cur_is_redirect' => 0), |
| 99 | + $fname, |
| 100 | + array( 'ORDER BY' => 'cl_timestamp DESC, cl_sortkey ASC', |
| 101 | + 'LIMIT' => $this->mLimit )); |
| 102 | + $rows = array(); |
| 103 | + while( $row = $dbr->fetchObject ( $res ) ) { |
| 104 | + $rows[] = $row; |
| 105 | + if ( $row->cl_timestamp > $this->mMaxTimeStamp ) { |
| 106 | + $this->mMaxTimeStamp = $row->cl_timestamp; |
| 107 | + } |
| 108 | + } |
| 109 | + return $this->formatRows( &$rows ); |
| 110 | + } |
| 111 | + |
| 112 | + # strip images, links, tags |
| 113 | + function formatSummary ( $text ) { |
| 114 | + global $wgContLang; |
| 115 | + $prefixes = array_keys($wgContLang->getLanguageNames()); |
| 116 | + $prefixes[] = $wgContLang->getNsText(NS_CATEGORY); |
| 117 | + $imgprefix = $wgContLang->getNsText(NS_IMAGE); |
| 118 | + $text = "\n".$text; |
| 119 | + |
| 120 | + $rules = array( |
| 121 | + "/\[\[(".implode('|',$prefixes)."):[^\]]*\]\]/i" => "", # interwiki links, cat links |
| 122 | + "/\[\[(?!".$imgprefix.")([^\[\]]+)\|([^[\]\|]*)\]\]/" => "\$2", # piped links |
| 123 | + "/\[\[(?!".$imgprefix.")([^\[\]]+)\]\]/i" => "\$1", # links |
| 124 | + "/\[http:\/\/[^\s]+\s*(.*?)\]/" => "\$1", # external links |
| 125 | + "/\[\[(".$imgprefix."|Image|Media):[^\]]*\]\]/i" => "", # images, plus int. prefix |
| 126 | + "/<br([^>]{1,60})>/i" => "\n", # break |
| 127 | + "/{{([^}]+)}}/s" => "", # templates |
| 128 | + "/<table[^>]{0,660}>(.{1,1200})<\/table>/si" => "", # short tables are removed |
| 129 | + "/\n{\|(.{1,1200})\n\|}/s" => "", # short tables are removed |
| 130 | + "/\n\|-.*(?=\n)/" => "", # table row in long tables |
| 131 | + "/\n{?\|.*\|?(?=\n)/" => "", # table cell in long tables |
| 132 | + "/\n===\s*(.*)\s*===\s*\n/" => "\n* \$1\n", # h3 |
| 133 | + "/\n==\s*(.*)\s*==\s*\n/" => "\n* \$1\n", # h2 |
| 134 | + "/\n=\s*(.*)\s*=\s*\n/" => "\n* \$1\n", # h1 |
| 135 | + "/'''([^']+)'''/" => "\$1", # bold |
| 136 | + "/''([^']+)''/" => "\$1", # italic |
| 137 | + "/\n----+/" => "", # hr |
| 138 | + "/<([^>]{1,2000})>/s" => "", # any html tags |
| 139 | + "/__\w{1,60}__/i" => "", # __notoc__ etc |
| 140 | + "/(\n\s*)+/" => "\n" # many newlines |
| 141 | + ); |
| 142 | + |
| 143 | + $text = preg_replace( array_keys($rules), array_values($rules), $text); |
| 144 | + |
| 145 | + # only return the first few chars for now |
| 146 | + $shorttext = $wgContLang->truncate( trim( $text ), 145 ); |
| 147 | + return htmlspecialchars( $shorttext ); |
| 148 | + } |
| 149 | + |
| 150 | + function setLimit($limit) { |
| 151 | + $this->mLimit=$limit; |
| 152 | + } |
| 153 | + |
| 154 | + function setDatelevel($datelevel) { |
| 155 | + $this->mDatelevel=$datelevel; |
| 156 | + } |
| 157 | + |
| 158 | + } |
| 159 | + |
| 160 | + class CategoryByDateFeed extends CategoryByDate { |
| 161 | + |
| 162 | + function view() { |
| 163 | + global $wgRequest; |
| 164 | + global $messageMemc, $wgDBname; |
| 165 | + global $wgFeedClasses, $wgTitle, $wgSitename, $wgContLanguageCode; |
| 166 | + |
| 167 | + if( !isset( $wgFeedClasses[$this->mFeedFormat] ) ) { |
| 168 | + wfHttpError( 500, "Internal Server Error", "Unsupported feed type." ); |
| 169 | + return false; |
| 170 | + } |
| 171 | + $feedTitle = $this->mTitle->getPrefixedText() . ' - ' . $wgSitename; |
| 172 | + $this->feed = new $wgFeedClasses[$this->mFeedFormat]( |
| 173 | + $feedTitle, |
| 174 | + htmlspecialchars( wfMsgForContent( 'catfeedsummary' ) ), |
| 175 | + $wgTitle->getFullUrl() ); |
| 176 | + |
| 177 | + $pagekey = md5( $this->mTitle->getDBkey() ); |
| 178 | + $timekey = "$wgDBname:catfeed:$pagekey:$this->mFeedFormat:limit:{$this->mLimit}:timestamp"; |
| 179 | + $key = "$wgDBname:catfeed:$pagekey:$this->mFeedFormat:limit:{$this->mLimit}"; |
| 180 | + $cachedFeed = false; |
| 181 | + $adddeltimestamp = $wgDBname.':Category:'.$pagekey.':adddeltimestamp'; |
| 182 | + |
| 183 | + $catLastAddDel = $messageMemc->get( $adddeltimestamp ); |
| 184 | + |
| 185 | + if( $feedLastmod = $messageMemc->get( $timekey ) |
| 186 | + and $catLastAddDel <= $feedLastmod ) { |
| 187 | + wfDebug( "CatFeed: loading feed from cache ($key; $feedLastmod; $catLastAddDel )...\n" ); |
| 188 | + $cachedFeed = $messageMemc->get( $key ); |
| 189 | + } else { |
| 190 | + wfDebug( "CatFeed: cached feed timestamp check failed ($feedLastmod; $catLastAddDel) timekey: $timekey; adddel: $adddeltimestamp \n" ); |
| 191 | + |
| 192 | + } |
| 193 | + if( is_string( $cachedFeed ) ) { |
| 194 | + wfDebug( "CatFeed: Outputting cached feed\n" ); |
| 195 | + $this->feed->httpHeaders(); |
| 196 | + echo $cachedFeed; |
| 197 | + } else { |
| 198 | + wfDebug( "CatFeed: rendering new feed and caching it\n" ); |
| 199 | + ob_start(); |
| 200 | + $this->getData(); |
| 201 | + $cachedFeed = ob_get_contents(); |
| 202 | + ob_end_flush(); |
| 203 | + |
| 204 | + $expire = 3600 * 24; # One day |
| 205 | + $messageMemc->set( $key, $cachedFeed ); |
| 206 | + $messageMemc->set( $timekey, $catLastAddDel , $expire ); |
| 207 | + } |
| 208 | + return true; |
| 209 | + } |
| 210 | + |
| 211 | + function formatRows( $rows ) { |
| 212 | + global $wgSitename, $wgFeedClasses, $wgContLanguageCode; |
| 213 | + |
| 214 | + $this->feed->outHeader(); |
| 215 | + foreach( $rows as $row ) { |
| 216 | + $title = Title::makeTitle( $row->cur_namespace, $row->cur_title ); |
| 217 | + $item = new FeedItem( |
| 218 | + $title->getPrefixedText(), |
| 219 | + $this->formatSummary( $row->cur_text ), |
| 220 | + $title->getFullURL(), |
| 221 | + $row->cl_timestamp, |
| 222 | + $row->cur_user_text, |
| 223 | + '' #$talkpage->getFullURL() |
| 224 | + ); |
| 225 | + $this->feed->outItem( $item ); |
| 226 | + } |
| 227 | + $this->feed->outFooter(); |
| 228 | + } |
| 229 | + |
| 230 | + } |
| 231 | + |
| 232 | + class CategoryByDateNewslist extends CategoryByDate { |
| 233 | + |
| 234 | + function formatRows( $rows ) { |
| 235 | + # format members of a category as 'news list' within a page |
| 236 | + # useful for portals, probably wikinews etc |
| 237 | + # todo: allow multiple categories to be merged ('or' in sql) |
| 238 | + global $wgUser, $wgLang; |
| 239 | + $skin = &$wgUser->getSkin(); |
| 240 | + $list = ''; |
| 241 | + $ts = $closedl = $date = $oldns = $oldtitle = ''; |
| 242 | + foreach( $rows as $row ) { |
| 243 | + # check for duplicates, cheaper than in the db |
| 244 | + if($row->cur_namespace != $oldns or $row->cur_title != $oldtitle) { |
| 245 | + $oldns = $row->cur_namespace; |
| 246 | + $oldtitle = $row->cur_title; |
| 247 | + $title = Title::makeTitle( $row->cur_namespace, $row->cur_title ); |
| 248 | + $ts = $row->cl_timestamp; |
| 249 | + $newdate = $wgLang->date( wfTimestamp( TS_MW, $ts ) ); |
| 250 | + if( $date != $newdate ) { |
| 251 | + $date = $newdate; |
| 252 | + $list .= "$closedl\n<h{$this->mDatelevel}> ".$date." </h{$this->mDatelevel}>\n<dl>"; |
| 253 | + $closedl = '</dl>'; |
| 254 | + } |
| 255 | + $list .= '<dt>' . $skin->makeKnownLinkObj($title) . |
| 256 | + ' <span style="font-size: 0.76em;font-weight:normal;">' . |
| 257 | + $wgLang->time( wfTimestamp( TS_MW, $ts ) ) . '</span></dt><dd> ' . |
| 258 | + $this->formatSummary( $row->cur_text ).'</dd>'; |
| 259 | + } |
| 260 | + } |
| 261 | + return $list . $closedl; |
| 262 | + } |
| 263 | + } |
| 264 | + |
| 265 | +} |
| 266 | + |
| 267 | +function viewCatFeed( &$CategoryPage ) { |
| 268 | + global $wgRequest; |
| 269 | + $catfeed = new CategoryByDateFeed($CategoryPage->mTitle); |
| 270 | + # nothing to do,CategoryPage::view continues |
| 271 | + if(!$wgRequest->getBool('feed',false)) return true; |
| 272 | + |
| 273 | + # else continue |
| 274 | + $catfeed->view(); |
| 275 | + # stop CategoryPage::view from continuing |
| 276 | + return false; |
| 277 | +} |
| 278 | +function viewCatNewslist( $input ) { |
| 279 | + $text = ''; |
| 280 | + |
| 281 | + # Defaults |
| 282 | + # |
| 283 | + # Number of headlines to be shown |
| 284 | + $limit=50; |
| 285 | + # Header level to be used for dates |
| 286 | + $datelevel=2; |
| 287 | + |
| 288 | + # Extract possible options from input |
| 289 | + getCatOption($limit,$input,"limit"); |
| 290 | + getCatOption($datelevel,$input,"datelevel"); |
| 291 | + |
| 292 | + $iptitles = split("\n",trim($input)); |
| 293 | + $dbtitles = array(); |
| 294 | + |
| 295 | + # Add only valid title objects |
| 296 | + foreach ( $iptitles as $title ) { |
| 297 | + $addtitle = Title::newFromURL($title); |
| 298 | + if(get_class($addtitle)=="title") { |
| 299 | + $dbtitles[] = $addtitle; |
| 300 | + } |
| 301 | + } |
| 302 | + # search for 5 categories max for now |
| 303 | + $dbtitles = array_slice($dbtitles, 0, 4); |
| 304 | + if(count($dbtitles)>0) { |
| 305 | + $catnews = new CategoryByDateNewslist($dbtitles[0], $dbtitles); |
| 306 | + $catnews->setLimit($limit); |
| 307 | + $catnews->setDatelevel($datelevel); |
| 308 | + $text .= $catnews->view(); |
| 309 | + } |
| 310 | + |
| 311 | + return $text; |
| 312 | +} |
| 313 | + |
| 314 | +function getCatOption(&$value,&$input,$name) { |
| 315 | + |
| 316 | + if(preg_match("/$name\s*=\s*(\d+)/mi",$input,$matches)) { |
| 317 | + $value=$matches[1]; |
| 318 | + # Extract from input |
| 319 | + $input=preg_replace("/$name\s*=\s*\d+/mi","",$input); |
| 320 | + } |
| 321 | +} |
| 322 | + |
Property changes on: trunk/extensions/CategoryFeed/CategoryFeed.php |
___________________________________________________________________ |
Name: svn:keywords |
1 | 323 | + Author Date Id Revision LastChangedDate LastChangedRevision |
Name: svn:eol-style |
2 | 324 | + native |
Index: trunk/extensions/Translate/groups/mediawiki-defines.txt |
— | — | @@ -77,6 +77,8 @@ |
78 | 78 | Call |
79 | 79 | aliasfile = Call/Call.alias.php |
80 | 80 | |
| 81 | +Category Feed |
| 82 | + |
81 | 83 | Category Intersection |
82 | 84 | aliasfile = CategoryIntersection/CategoryIntersection.alias.php |
83 | 85 | |
— | — | @@ -97,10 +99,6 @@ |
98 | 100 | ignored = categorytree-empty-bullet,categorytree-page-bullet |
99 | 101 | ignored = categorytree-member-num |
100 | 102 | |
101 | | -Category Feed |
102 | | -file = catfeed/catfeed.i18n.php |
103 | | -id = ext-catfeed |
104 | | - |
105 | 103 | Category Watch |
106 | 104 | |
107 | 105 | Central Auth |