From kde-commits Sat Mar 31 21:17:17 2012 From: Ingo Malchow Date: Sat, 31 Mar 2012 21:17:17 +0000 To: kde-commits Subject: [websites/wiki-kde-org/develop] extensions/LanguageSelector: update languageselector extension Message-Id: <20120331211717.7243CA60A9 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=133322872913619 Git commit 4ee4350219ea7bbdd4049635e21262b8d981f007 by Ingo Malchow. Committed on 31/03/2012 at 23:17. Pushed by imalchow into branch 'develop'. update languageselector extension M +122 -28 extensions/LanguageSelector/LanguageSelector.i18n.php M +2 -2 extensions/LanguageSelector/LanguageSelector.js M +141 -174 extensions/LanguageSelector/LanguageSelector.php http://commits.kde.org/websites/wiki-kde-org/4ee4350219ea7bbdd4049635e21262= b8d981f007 diff --git a/extensions/LanguageSelector/LanguageSelector.i18n.php b/extens= ions/LanguageSelector/LanguageSelector.i18n.php index df2b504..ab3013d 100644 --- a/extensions/LanguageSelector/LanguageSelector.i18n.php +++ b/extensions/LanguageSelector/LanguageSelector.i18n.php @@ -29,6 +29,27 @@ $messages['qqq'] =3D array( 'languageselector-setlang' =3D> 'Part of the "LanguageSelector" extension= . This is the text of a submit button to select your user interface languag= e. Mostly the button is not shown, but sometimes it appears next to the la= nguage selector (a dropdown box like in your [[Special:Preferences|user pre= ferences]]).', ); = +/** Goan Konkani (Latin script) (Konknni) + * @author The Discoverer + */ +$messages['gom-latn'] =3D array( + 'languageselector' =3D> 'Bhas', +); + +/** =D1=82=D0=BE=D0=BB=D1=8B=D1=88=D3=99 =D0=B7=D1=8B=D0=B2=D0=BE=D0=BD (= =D1=82=D0=BE=D0=BB=D1=8B=D1=88=D3=99 =D0=B7=D1=8B=D0=B2=D0=BE=D0=BD) + * @author =D0=93=D1=83=D1=81=D0=B5=D0=B9=D0=BD + */ +$messages['tly'] =3D array( + 'languageselector' =3D> '=D0=97=D1=8B=D0=B2=D0=BE=D0=BD', +); + +/** =E1=B9=AAuroyo (=E1=B9=AAuroyo) + * @author Ariyo + */ +$messages['tru'] =3D array( + 'languageselector' =3D> 'Le=C5=9Fono', +); + /** Abkhazian (=D0=90=D2=A7=D1=81=D1=83=D0=B0) * @author Temuri rajavi */ @@ -106,7 +127,15 @@ $messages['ast'] =3D array( 'languageselector-setlang' =3D> 'establecer', ); = -/** Bashkir (=D0=91=D0=B0=D1=88=D2=A1=D0=BE=D1=80=D1=82) +/** Azerbaijani (Az=C9=99rbaycanca) + * @author Proger + */ +$messages['az'] =3D array( + 'languageselector' =3D> 'Dil', + 'languageselector-setlang' =3D> 'Se=C3=A7', +); + +/** Bashkir (=D0=91=D0=B0=D1=88=D2=A1=D0=BE=D1=80=D1=82=D1=81=D0=B0) * @author Assele * @author =D0=A0=D1=83=D1=81=D1=82=D0=B0=D0=BC =D0=9D=D1=83=D1=80=D1=8B= =D0=B5=D0=B2 */ @@ -118,14 +147,15 @@ $messages['ba'] =3D array( = /** Bavarian (Boarisch) * @author Man77 + * @author Mucalexx */ $messages['bar'] =3D array( - 'languageselector' =3D> 'Spr=C3=A5ch', - 'languageselector-desc' =3D> 'Spr=C3=A5chnausw=C3=A5ih auf jeda Seitn, aa= fia Bsuacha', - 'languageselector-setlang' =3D> 'setzn', + 'languageselector' =3D> 'Sprooch', + 'languageselector-desc' =3D> 'Sproochnauswoi auf jeeder Seiten, aa fyr Bs= uacher', + 'languageselector-setlang' =3D> 's=C3=A9tzen', ); = -/** Belarusian (Tara=C5=A1kievica orthography) (=D0=91=D0=B5=D0=BB=D0=B0= =D1=80=D1=83=D1=81=D0=BA=D0=B0=D1=8F (=D1=82=D0=B0=D1=80=D0=B0=D1=88=D0=BA= =D0=B5=D0=B2=D1=96=D1=86=D0=B0)) +/** Belarusian (Tara=C5=A1kievica orthography) (=E2=80=AA=D0=91=D0=B5=D0= =BB=D0=B0=D1=80=D1=83=D1=81=D0=BA=D0=B0=D1=8F (=D1=82=D0=B0=D1=80=D0=B0=D1= =88=D0=BA=D0=B5=D0=B2=D1=96=D1=86=D0=B0)=E2=80=AC) * @author Jim-by * @author Red Winged Duck */ @@ -142,6 +172,14 @@ $messages['bg'] =3D array( 'languageselector' =3D> '=D0=95=D0=B7=D0=B8=D0=BA', ); = +/** Bhojpuri (=E0=A4=AD=E0=A5=8B=E0=A4=9C=E0=A4=AA=E0=A5=81=E0=A4=B0=E0=A5= =80) + * @author Anshumangupta21 + */ +$messages['bho'] =3D array( + 'languageselector' =3D> '=E0=A4=AD=E0=A4=BE=E0=A4=B7=E0=A4=BE', + 'languageselector-setlang' =3D> '=E0=A4=97=E0=A5=81=E0=A4=9F', +); + /** Bengali (=E0=A6=AC=E0=A6=BE=E0=A6=82=E0=A6=B2=E0=A6=BE) * @author Bellayet */ @@ -151,6 +189,15 @@ $messages['bn'] =3D array( 'languageselector-setlang' =3D> '=E0=A6=B8=E0=A7=8D=E0=A6=A5=E0=A6=BE=E0= =A6=AA=E0=A6=A8', ); = +/** Tibetan (=E0=BD=96=E0=BD=BC=E0=BD=91=E0=BC=8B=E0=BD=A1=E0=BD=B2=E0=BD= =82) + * @author Freeyak + */ +$messages['bo'] =3D array( + 'languageselector' =3D> '=E0=BD=A6=E0=BE=90=E0=BD=91=E0=BC=8B=E0=BD=A2=E0= =BD=B2=E0=BD=82=E0=BD=A6=E0=BC=8D', + 'languageselector-desc' =3D> '=E0=BD=A4=E0=BD=BC=E0=BD=82=E0=BC=8B=E0=BD= =84=E0=BD=BC=E0=BD=A6=E0=BC=8B=E0=BD=A6=E0=BD=BC=E0=BC=8B=E0=BD=A6=E0=BD=BC= =E0=BD=A0=E0=BD=B2=E0=BC=8B=E0=BD=A6=E0=BE=90=E0=BD=91=E0=BC=8B=E0=BD=A2=E0= =BD=B2=E0=BD=82=E0=BD=A6=E0=BC=8B=E0=BD=A0=E0=BD=91=E0=BD=BA=E0=BD=98=E0=BD= =A6=E0=BC=8B=E0=BD=9A=E0=BD=93=E0=BC=8B=E0=BD=91=E0=BD=84=E0=BC=8B=E0=BC=8D= =E0=BD=82=E0=BD=9E=E0=BD=93=E0=BC=8B=E0=BD=A3=E0=BE=9F=E0=BC=8B=E0=BD=80= =E0=BE=B3=E0=BD=BC=E0=BD=82=E0=BC=8B=E0=BD=96=E0=BE=B1=E0=BD=BA=E0=BD=91=E0= =BC=8B=E0=BD=98=E0=BD=81=E0=BD=93=E0=BC=8B=E0=BD=82=E0=BE=B1=E0=BD=B2=E0=BC= =8B=E0=BD=86=E0=BD=BA=E0=BD=91=E0=BC=8B=E0=BD=91=E0=BD=B4=E0=BD=A0=E0=BD=84= =E0=BC=8B=E0=BD=A1=E0=BD=B2=E0=BD=93=E0=BC=8D', + 'languageselector-setlang' =3D> '=E0=BD=A6=E0=BE=92=E0=BE=B2=E0=BD=B2=E0= =BD=82', +); + /** Breton (Brezhoneg) * @author Fulup */ @@ -169,6 +216,13 @@ $messages['bs'] =3D array( 'languageselector-setlang' =3D> 'postavi', ); = +/** =D0=91=D1=83=D1=80=D1=8F=D0=B0=D0=B4 (=D0=91=D1=83=D1=80=D1=8F=D0=B0= =D0=B4) + * @author =D0=9E=D0=B9=D0=9B + */ +$messages['bxr'] =3D array( + 'languageselector' =3D> '=D0=A5=D1=8D=D0=BB=D1=8D=D0=BD', +); + /** Catalan (Catal=C3=A0) * @author Jordi Roqu=C3=A9 * @author SMP @@ -225,9 +279,12 @@ $messages['cy'] =3D array( = /** Danish (Dansk) * @author Jon Harald S=C3=B8by + * @author Peter Alberti */ $messages['da'] =3D array( 'languageselector' =3D> 'Sprog', + 'languageselector-desc' =3D> 'Sprogv=C3=A6lger p=C3=A5 alle sider, ogs=C3= =A5 for g=C3=A6ster', + 'languageselector-setlang' =3D> 'v=C3=A6lg', ); = /** German (Deutsch) @@ -528,13 +585,13 @@ $messages['kk-arab'] =3D array( 'languageselector-setlang' =3D> '=D8=A7=D9=86=D9=89=D9=82=D8=AA=D8=A7=DB= =8B', ); = -/** Kazakh (Cyrillic) (=D2=9A=D0=B0=D0=B7=D0=B0=D2=9B=D1=88=D0=B0 (Cyrilli= c)) */ +/** Kazakh (Cyrillic script) (=E2=80=AA=D2=9A=D0=B0=D0=B7=D0=B0=D2=9B=D1= =88=D0=B0 (=D0=BA=D0=B8=D1=80=D0=B8=D0=BB)=E2=80=AC) */ $messages['kk-cyrl'] =3D array( 'languageselector' =3D> '=D0=A2=D1=96=D0=BB', 'languageselector-setlang' =3D> '=D0=B0=D0=BD=D1=8B=D2=9B=D1=82=D0=B0=D1= =83', ); = -/** Kazakh (Latin) (=D2=9A=D0=B0=D0=B7=D0=B0=D2=9B=D1=88=D0=B0 (Latin)) */ +/** Kazakh (Latin script) (=E2=80=AAQazaq=C5=9Fa (lat=C4=B1n)=E2=80=AC) */ $messages['kk-latn'] =3D array( 'languageselector' =3D> 'Til', 'languageselector-setlang' =3D> 'an=C4=B1qtaw', @@ -583,7 +640,14 @@ $messages['ksh'] =3D array( 'languageselector-setlang' =3D> 'Setze', ); = -/** Cornish (Kernewek) +/** Kurdish (Latin script) (=E2=80=AAKurd=C3=AE (lat=C3=AEn=C3=AE)=E2=80= =AC) + * @author George Animal + */ +$messages['ku-latn'] =3D array( + 'languageselector' =3D> 'Ziman', +); + +/** Cornish (Kernowek) * @author Kw-Moon */ $messages['kw'] =3D array( @@ -638,6 +702,7 @@ $messages['lt'] =3D array( */ $messages['ltg'] =3D array( 'languageselector' =3D> 'Vol=C5=ABda', + 'languageselector-setlang' =3D> 'n=C5=ABstateit', ); = /** Macedonian (=D0=9C=D0=B0=D0=BA=D0=B5=D0=B4=D0=BE=D0=BD=D1=81=D0=BA=D0= =B8) @@ -698,9 +763,19 @@ $messages['myv'] =3D array( = /** Nahuatl (N=C4=81huatl) * @author Fluence + * @author Te=C3=B2tlalili */ $messages['nah'] =3D array( - 'languageselector' =3D> 'Tlaht=C5=8Dlli', + 'languageselector' =3D> 'Tl=C3=A2t=C3=B2lli', +); + +/** Norwegian (bokm=C3=A5l)=E2=80=AC (=E2=80=AANorsk (bokm=C3=A5l)=E2=80= =AC) + * @author Jon Harald S=C3=B8by + */ +$messages['nb'] =3D array( + 'languageselector' =3D> 'Spr=C3=A5k', + 'languageselector-desc' =3D> 'Valg av spr=C3=A5k p=C3=A5 alle sider, ogs= =C3=A5 for gjester', + 'languageselector-setlang' =3D> 'sett', ); = /** Low German (Plattd=C3=BC=C3=BCtsch) @@ -730,15 +805,6 @@ $messages['nn'] =3D array( 'languageselector-setlang' =3D> 'set', ); = -/** Norwegian (bokm=C3=A5l)=E2=80=AC (=E2=80=AANorsk (bokm=C3=A5l)=E2=80= =AC) - * @author Jon Harald S=C3=B8by - */ -$messages['no'] =3D array( - 'languageselector' =3D> 'Spr=C3=A5k', - 'languageselector-desc' =3D> 'Valg av spr=C3=A5k p=C3=A5 alle sider, ogs= =C3=A5 for gjester', - 'languageselector-setlang' =3D> 'sett', -); - /** Northern Sotho (Sesotho sa Leboa) * @author Mohau */ @@ -755,7 +821,16 @@ $messages['oc'] =3D array( 'languageselector-setlang' =3D> 'Definir', ); = -/** Ossetic (=D0=98=D1=80=D0=BE=D0=BD=D0=B0=D1=83) +/** Oriya (=E0=AC=93=E0=AD=9C=E0=AC=BF=E0=AC=86) + * @author Jnanaranjan Sahu + */ +$messages['or'] =3D array( + 'languageselector' =3D> '=E0=AC=AD=E0=AC=BE=E0=AC=B7=E0=AC=BE', + 'languageselector-desc' =3D> '=E0=AC=AD=E0=AC=BE=E0=AC=B7=E0=AC=BE =E0=AC= =9A=E0=AD=9F=E0=AC=A8=E0=AC=95=E0=AC=BE=E0=AC=B0=E0=AD=80 =E0=AC=B8=E0=AC= =AC=E0=AD=81 =E0=AC=AA=E0=AD=83=E0=AC=B7=E0=AD=8D=E0=AC=A0=E0=AC=BE=E0=AC= =B0=E0=AD=87, =E0=AC=85=E0=AC=A4=E0=AC=BF=E0=AC=A5=E0=AC=BF =E0=AC=AE=E0=AC= =BE=E0=AC=A8=E0=AC=99=E0=AD=8D=E0=AC=95 =E0=AC=AA=E0=AC=BE=E0=AC=87=E0=AC= =81 =E0=AC=AE=E0=AC=A7=E0=AD=8D=E0=AD=9F', + 'languageselector-setlang' =3D> '=E0=AC=B8=E0=AD=87=E0=AC=9F =E0=AC=95=E0= =AC=B0=E0=AC=A8=E0=AD=8D=E0=AC=A4=E0=AD=81', +); + +/** Ossetic (=D0=98=D1=80=D0=BE=D0=BD) * @author Amikeco */ $messages['os'] =3D array( @@ -862,7 +937,16 @@ $messages['ru'] =3D array( 'languageselector-setlang' =3D> '=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0= =B2=D0=B8=D1=82=D1=8C', ); = -/** Yakut (=D0=A1=D0=B0=D1=85=D0=B0 =D1=82=D1=8B=D0=BB=D0=B0) +/** Rusyn (=D0=A0=D1=83=D1=81=D0=B8=D0=BD=D1=8C=D1=81=D0=BA=D1=8B=D0=B9) + * @author Gazeb + */ +$messages['rue'] =3D array( + 'languageselector' =3D> '=D0=AF=D0=B7=D1=8B=D0=BA', + 'languageselector-desc' =3D> '=D0=92=D1=8B=D0=B1=D0=B5=D1=80 =D1=8F=D0=B7= =D1=8B=D0=BA=D0=B0 =D0=BD=D0=B0 =D0=BA=D0=B0=D0=B6=D0=B4=D1=96=D0=B9 =D1=81= =D1=82=D0=BE=D1=80=D1=96=D0=BD=D1=86=D1=97 =D1=96 =D1=82=D1=8B=D0=B6 =D0=BF= =D1=80=D0=BE =D0=BD=D0=B0=D0=B2=D1=89=D1=96=D0=B2=D0=BD=D0=B8=D0=BA=D1=96= =D0=B2', + 'languageselector-setlang' =3D> '=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0= =B8=D1=82=D0=B8', +); + +/** Sakha (=D0=A1=D0=B0=D1=85=D0=B0 =D1=82=D1=8B=D0=BB=D0=B0) * @author HalanTul */ $messages['sah'] =3D array( @@ -871,7 +955,7 @@ $messages['sah'] =3D array( 'languageselector-setlang' =3D> '=D1=82=D1=83=D1=80=D1=83=D0=BE=D1=80', ); = -/** Tachelhit (Ta=C5=A1l=E1=B8=A5iyt) +/** Tachelhit (Ta=C5=A1l=E1=B8=A5iyt/=E2=B5=9C=E2=B4=B0=E2=B5=9B=E2=B5=8D= =E2=B5=83=E2=B5=89=E2=B5=9C) * @author Zanatos */ $messages['shi'] =3D array( @@ -916,7 +1000,7 @@ $messages['sli'] =3D array( 'languageselector-setlang' =3D> 'setza', ); = -/** Serbian Cyrillic ekavian (=D0=A1=D1=80=D0=BF=D1=81=D0=BA=D0=B8 (=D1=9B= =D0=B8=D1=80=D0=B8=D0=BB=D0=B8=D1=86=D0=B0)) +/** Serbian (Cyrillic script) (=E2=80=AA=D0=A1=D1=80=D0=BF=D1=81=D0=BA=D0= =B8 (=D1=9B=D0=B8=D1=80=D0=B8=D0=BB=D0=B8=D1=86=D0=B0)=E2=80=AC) * @author Sasa Stefanovic * @author =D0=9C=D0=B8=D1=85=D0=B0=D1=98=D0=BB=D0=BE =D0=90=D0=BD=D1=92= =D0=B5=D0=BB=D0=BA=D0=BE=D0=B2=D0=B8=D1=9B */ @@ -926,7 +1010,7 @@ $messages['sr-ec'] =3D array( 'languageselector-setlang' =3D> '=D0=BF=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0= =B8', ); = -/** Serbian Latin ekavian (Srpski (latinica)) +/** Serbian (Latin script) (=E2=80=AASrpski (latinica)=E2=80=AC) * @author Michaello */ $messages['sr-el'] =3D array( @@ -963,6 +1047,15 @@ $messages['sv'] =3D array( 'languageselector-setlang' =3D> 'v=C3=A4lj', ); = +/** Tamil (=E0=AE=A4=E0=AE=AE=E0=AE=BF=E0=AE=B4=E0=AF=8D) + * @author Karthi.dr + * @author Mahir78 + */ +$messages['ta'] =3D array( + 'languageselector' =3D> '=E0=AE=AE=E0=AF=8A=E0=AE=B4=E0=AE=BF', + 'languageselector-setlang' =3D> '=E0=AE=85=E0=AE=AE=E0=AF=88', +); + /** Telugu (=E0=B0=A4=E0=B1=86=E0=B0=B2=E0=B1=81=E0=B0=97=E0=B1=81) * @author Veeven */ @@ -981,7 +1074,7 @@ $messages['tet'] =3D array( 'languageselector-setlang' =3D> 'hili', ); = -/** Tajik (Cyrillic) (=D0=A2=D0=BE=D2=B7=D0=B8=D0=BA=D3=A3 (Cyrillic)) +/** Tajik (Cyrillic script) (=D0=A2=D0=BE=D2=B7=D0=B8=D0=BA=D3=A3) * @author Ibrahim */ $messages['tg-cyrl'] =3D array( @@ -989,7 +1082,7 @@ $messages['tg-cyrl'] =3D array( 'languageselector-desc' =3D> '=D0=97=D0=B0=D0=B1=D0=BE=D0=BD =D0=B8=D0=BD= =D1=82=D0=B8=D1=85=D0=BE=D0=B1=D0=BA=D1=83=D0=BD=D0=B0=D0=BD=D0=B4=D0=B0 = =D0=B4=D0=B0=D1=80 =D2=B3=D0=B0=D1=80 =D1=81=D0=B0=D2=B3=D0=B8=D1=84=D0=B0,= =D0=B1=D0=B0=D1=80=D0=BE=D0=B8 =D1=82=D0=B0=D1=88=D1=80=D0=B8=D1=84=D0=BE= =D0=B2=D0=B0=D1=80=D0=B0=D0=BD=D0=B4=D0=B0=D0=B3=D0=BE=D0=BD =D0=BD=D0=B8= =D0=B7', ); = -/** Tajik (Latin) (=D0=A2=D0=BE=D2=B7=D0=B8=D0=BA=D3=A3 (Latin)) +/** Tajik (Latin script) (tojik=C4=AB) * @author Liangent */ $messages['tg-latn'] =3D array( @@ -1030,7 +1123,7 @@ $messages['tr'] =3D array( 'languageselector-setlang' =3D> 'ayar', ); = -/** Tatar (Cyrillic) (=D0=A2=D0=B0=D1=82=D0=B0=D1=80=D1=87=D0=B0/Tatar=C3= =A7a (Cyrillic)) +/** Tatar (Cyrillic script) (=D0=A2=D0=B0=D1=82=D0=B0=D1=80=D1=87=D0=B0) * @author =D0=98=D0=BB=D1=8C=D0=BD=D0=B0=D1=80 */ $messages['tt-cyrl'] =3D array( @@ -1038,7 +1131,7 @@ $messages['tt-cyrl'] =3D array( 'languageselector-setlang' =3D> '=D1=83=D1=80=D0=BD=D0=B0=D1=88=D1=82=D1= =8B=D1=80=D1=83', ); = -/** Uighur (Latin) (=D8=A6=DB=87=D9=8A=D8=BA=DB=87=D8=B1=DA=86=DB=95 / Uyg= hurche=E2=80=8E (Latin)) +/** Uyghur (Latin script) (Uyghurche=E2=80=8E) * @author Jose77 */ $messages['ug-latn'] =3D array( @@ -1117,11 +1210,12 @@ $messages['zh-hans'] =3D array( = /** Traditional Chinese (=E2=80=AA=E4=B8=AD=E6=96=87(=E7=B9=81=E9=AB=94)= =E2=80=AC) * @author Liangent + * @author Mark85296341 * @author Shinjiman */ $messages['zh-hant'] =3D array( 'languageselector' =3D> '=E8=AA=9E=E8=A8=80', - 'languageselector-desc' =3D> '=E5=9C=A8=E6=AF=8F=E4=B8=80=E9=A0=81=E9=9D= =A2=E4=B8=8A=E6=B7=BB=E5=8A=A0=E8=AA=9E=E8=A8=80=E9=81=B8=E6=93=87=E9=A0=85= =EF=BC=8C=E5=B0=8D=E5=8C=BF=E5=90=8D=E8=A8=AA=E5=95=8F=E8=80=85=E4=BA=A6=E6= =9C=89=E6=95=88', + 'languageselector-desc' =3D> '=E5=9C=A8=E6=AF=8F=E4=B8=80=E9=A0=81=E9=9D= =A2=E4=B8=8A=E5=8A=A0=E5=85=A5=E8=AA=9E=E8=A8=80=E9=81=B8=E6=93=87=E9=A0=85= =EF=BC=8C=E5=B0=8D=E5=8C=BF=E5=90=8D=E8=A8=AA=E5=95=8F=E8=80=85=E4=BA=A6=E6= =9C=89=E6=95=88', 'languageselector-setlang' =3D> '=E8=A8=AD=E5=AE=9A', ); = diff --git a/extensions/LanguageSelector/LanguageSelector.js b/extensions/L= anguageSelector/LanguageSelector.js index 860ca95..34665e2 100644 --- a/extensions/LanguageSelector/LanguageSelector.js +++ b/extensions/LanguageSelector/LanguageSelector.js @@ -1,4 +1,4 @@ -addOnloadHook(function() { = +$( function() { var i =3D 1; while ( true ) { var btn =3D document.getElementById("languageselector-commit-"+i); @@ -21,4 +21,4 @@ addOnloadHook(function() { = i++; } -}); \ No newline at end of file +}); diff --git a/extensions/LanguageSelector/LanguageSelector.php b/extensions/= LanguageSelector/LanguageSelector.php index e334035..dd05a96 100644 --- a/extensions/LanguageSelector/LanguageSelector.php +++ b/extensions/LanguageSelector/LanguageSelector.php @@ -44,8 +44,7 @@ $wgLanguageSelectorDetectLanguage =3D LANGUAGE_SELECTOR_P= REFER_CLIENT_LANG; = /** * Languages to offer in the language selector. Per default, this includes = all languages MediaWiki knows -* about by virtue of $wgLanguageNames. A shorter list may be more usable, = though. -* If the Polyglot extension is installed, $wgPolyglotLanguages is used as = fallback. +* about by virtue of languages/Names.php. A shorter list may be more usabl= e, though. */ $wgLanguageSelectorLanguages =3D null; = @@ -75,150 +74,177 @@ $wgHooks['AddNewAccount'][] =3D 'wfLanguageSelectorAd= dNewAccount'; $wgHooks['BeforePageDisplay'][] =3D 'wfLanguageSelectorBeforePageDisplay'; $wgHooks['GetCacheVaryCookies'][] =3D 'wfLanguageSelectorGetCacheVaryCooki= es'; $wgHooks['ParserFirstCallInit'][] =3D 'wfLanguageSelectorSetHook'; +$wgHooks['UserGetLanguageObject'][] =3D 'wfLanguageSelectorGetLanguageCode= '; = $wgExtensionFunctions[] =3D 'wfLanguageSelectorExtension'; = $wgParserOutputHooks['languageselector'] =3D 'wfLanguageSelectorAddJavascr= ipt'; = -$wgLanguageSelectorRequestedLanguage =3D null; -$wgLanguageSelectorFormUsed =3D false; - +$wgResourceModules['ext.languageSelector'] =3D array( + 'scripts' =3D> 'LanguageSelector.js', + 'localBasePath' =3D> dirname( __FILE__ ), + 'remoteExtPath' =3D> 'LanguageSelector' +); = $dir =3D dirname(__FILE__) . '/'; $wgExtensionMessagesFiles['LanguageSelector'] =3D $dir . 'LanguageSelector= .i18n.php'; $wgJSAutoloadClasses['LanguageSelector'] =3D 'extensions/LanguageSelector/= LanguageSelector.js'; = -function wfLanguageSelectorSetHook() { - global $wgParser; - $wgParser->setHook( 'languageselector', 'wfLanguageSelectorTag' ); +/** + * @param $parser Parser + * @return bool + */ +function wfLanguageSelectorSetHook( $parser ) { + $parser->setHook( 'languageselector', 'wfLanguageSelectorTag' ); return true; } = function wfLanguageSelectorExtension() { - wfLoadExtensionMessages( 'LanguageSelector' ); - global $wgLanguageSelectorLanguages, $wgLanguageSelectorDetectLanguage, - $wgLanguageSelectorRequestedLanguage, $wgLanguageSelectorLocation, - $wgLanguageSelectorShowAll, $wgCommandLineMode; - global $wgUser, $wgLang, $wgRequest, $wgCookiePrefix, $wgCookiePath, $wgH= ooks; + global $wgLanguageSelectorLocation, + $wgLanguageSelectorShowAll, $wgHooks; = - if ( $wgCommandLineMode ) { - return true; - } + // We'll probably be beaten to this by the call in wfLanguageSelectorGetL= anguageCode(), + // but just in case, call this to make sure the global is properly initia= lised + wfGetLanguageSelectorLanguages(); = - if ( $wgLanguageSelectorLanguages =3D=3D=3D null ) { - $wgLanguageSelectorLanguages =3D @$GLOBALS['wgPolyglotLanguages']; + if ( $wgLanguageSelectorLocation !=3D LANGUAGE_SELECTOR_MANUAL && $wgLang= uageSelectorLocation !=3D LANGUAGE_SELECTOR_AT_TOP_OF_TEXT ) { + switch ( $wgLanguageSelectorLocation ) { + case LANGUAGE_SELECTOR_IN_TOOLBOX: + $wgHooks['SkinTemplateToolboxEnd'][] =3D 'wfLanguageSelectorSkinHook'; + break; + default: + $wgHooks['SkinTemplateOutputPageBeforeExec'][] =3D 'wfLanguageSelector= SkinTemplateOutputPageBeforeExec'; + break; + } } +} = +function wfGetLanguageSelectorLanguages(){ + global $wgLanguageSelectorLanguages, $wgLanguageSelectorShowAll; if ( $wgLanguageSelectorLanguages =3D=3D=3D null ) { $wgLanguageSelectorLanguages =3D array_keys( Language::getLanguageNames(= !$wgLanguageSelectorShowAll ) ); sort( $wgLanguageSelectorLanguages ); } + return $wgLanguageSelectorLanguages; +} + +/** + * Hook to UserGetLanguageObject + * @param $user User + * @param $code String + * @return bool + */ +function wfLanguageSelectorGetLanguageCode( $user, &$code ) { + global $wgLanguageSelectorDetectLanguage, + $wgCommandLineMode, $wgRequest, $wgContLang; + + if ( $wgCommandLineMode ) { + return true; + } = $setlang =3D $wgRequest->getVal( 'setlang' ); - if ( $setlang && !in_array( $setlang, $wgLanguageSelectorLanguages ) ) - $setlang =3D null; //ignore invalid + if ( $setlang && !in_array( $setlang, wfGetLanguageSelectorLanguages() ) = ) { + $setlang =3D null; // ignore invalid + } = if ( $setlang ) { - setcookie( $wgCookiePrefix . 'LanguageSelectorLanguage', $setlang, 0, $w= gCookiePath ); - $wgLanguageSelectorRequestedLanguage =3D $setlang; + $wgRequest->response()->setcookie( 'LanguageSelectorLanguage', $setlang = ); + $requestedLanguage =3D $setlang; } else { - $wgLanguageSelectorRequestedLanguage =3D @$_COOKIE[$wgCookiePrefix.'Lang= uageSelectorLanguage']; + $requestedLanguage =3D $wgRequest->getCookie( 'LanguageSelectorLanguage'= ); } = - if ( $setlang && !$wgUser->isAnon() ) { - if ( $setlang !=3D $wgUser->getOption( 'language' ) ) { - $wgUser->setOption( 'language', $wgLanguageSelectorRequestedLanguage ); - $wgUser->saveSettings(); - // Reset $wgLang so that user's language is immediately changed - $wgLang =3D new StubUserLang; + if ( $setlang && !$user->isAnon() ) { + if ( $setlang !=3D $user->getOption( 'language' ) ) { + $user->setOption( 'language', $requestedLanguage ); + $user->saveSettings(); + $code =3D $requestedLanguage; } } = - if ( !$wgRequest->getVal( 'uselang' ) && $wgUser->isAnon() ) { - - //NOTE: we need this for anons, so squids don't get confused. - // but something is still wrong with caching... - header( 'Vary: Cookie', false ); //hrm, this is pretty BAD. - header( 'Vary: Accept-Language', false ); - - if ( $wgLanguageSelectorRequestedLanguage || $wgLanguageSelectorDetectLa= nguage !=3D LANGUAGE_SELECTOR_USE_CONTENT_LANG ) { - - if ( !class_exists( 'StubAutoLang' ) ) { - class StubAutoLang extends StubObject { - function __construct() { - parent::__construct( 'wgLang' ); - } - = - function __call( $name, $args ) { - return $this->_call( $name, $args ); + if ( !$wgRequest->getVal( 'uselang' ) && $user->isAnon() ) { + if ( $wgLanguageSelectorDetectLanguage !=3D LANGUAGE_SELECTOR_USE_CONTEN= T_LANG ) { + if ( $requestedLanguage ) { + $code =3D $requestedLanguage; + } else { + $languages =3D $wgRequest->getAcceptLang(); + + // see if the content language is accepted by the client. + if ( $wgLanguageSelectorDetectLanguage !=3D LANGUAGE_SELECTOR_PREFER_C= ONTENT_LANG + || !array_key_exists( $wgContLang->getCode(), $languages ) ) + { + + $supported =3D wfGetLanguageSelectorLanguages(); + // look for a language that is acceptable to the client + // and known to the wiki. + foreach( $languages as $reqCode =3D> $q ) { + if ( in_array( $reqCode, $supported ) ) { + $code =3D $reqCode; + break; + } } - = - //partially copied from StubObject.php. There should be a better way.= .. - function _newObject() { - global $wgContLanguageCode, $wgContLang, $wgLanguageSelectorDetectLa= nguage, $wgLanguageSelectorRequestedLanguage; - - $code =3D $wgLanguageSelectorRequestedLanguage; - if (!$code) $code =3D wfLanguageSelectorDetectLanguage( $wgLanguageS= electorDetectLanguage ); - - if( $code =3D=3D $wgContLanguageCode ) { - return $wgContLang; - } else { - $obj =3D Language::factory( $code ); - return $obj; + + // Apparently Safari sends stupid things like "de-de" only. + // Try again with stripped codes. + foreach( $languages as $reqCode =3D> $q ) { + $stupidPHP =3D explode( '-', $reqCode, 2 ); + $bareCode =3D array_shift( $stupidPHP ); + if ( in_array( $bareCode, $supported ) ) { + $code =3D $bareCode; + break; } } } } - = - $wgLang =3D new StubAutoLang; - } - } - - if ( $wgLanguageSelectorLocation !=3D LANGUAGE_SELECTOR_MANUAL && $wgLang= uageSelectorLocation !=3D LANGUAGE_SELECTOR_AT_TOP_OF_TEXT ) { - switch ( $wgLanguageSelectorLocation ) { - case LANGUAGE_SELECTOR_IN_TOOLBOX: - $wgHooks['SkinTemplateToolboxEnd'][] =3D 'wfLanguageSelectorSkinHook'; - break; - default: - $wgHooks['SkinTemplateOutputPageBeforeExec'][] =3D 'wfLanguageSelector= SkinTemplateOutputPageBeforeExec'; - break; } } = + return true; } = +/** + * @param $out OutputPage + * @return bool + */ function wfLanguageSelectorBeforePageDisplay( &$out ) { - global $wgExtensionAssetsPath, $wgLanguageSelectorLocation, $wgLanguageSe= lectorFormUsed; + global $wgLanguageSelectorLocation; + + if ( $wgLanguageSelectorLocation =3D=3D LANGUAGE_SELECTOR_MANUAL ) { + return true; + } = if ( $wgLanguageSelectorLocation =3D=3D LANGUAGE_SELECTOR_AT_TOP_OF_TEXT = ) { - $html =3D wfLanguageSelectorHTML(); + $html =3D wfLanguageSelectorHTML( $out->getTitle() ); $out->mBodytext =3D $html . $out->mBodytext; } = - if ( $wgLanguageSelectorFormUsed || - $wgLanguageSelectorLocation !=3D LANGUAGE_SELECTOR_MANUAL ) - { - $out->addScriptFile( $wgExtensionAssetsPath . - '/LanguageSelector/LanguageSelector.js' ); - } + $out->addModules( 'ext.languageSelector' ); = return true; } = -function wfLanguageSelectorGetCacheVaryCookies( &$cookies ) { +function wfLanguageSelectorGetCacheVaryCookies( $out, &$cookies ) { global $wgCookiePrefix; - $cookies[] =3D $wgCookiePrefix.'LanguageSelectorLanguage'; - return true; } = -function wfLanguageSelectorSkinHook( &$out ) { - $html =3D wfLanguageSelectorHTML(); +/** + * @param $skin Skin + * @return bool + */ +function wfLanguageSelectorSkinHook( &$skin ) { + $html =3D wfLanguageSelectorHTML( $skin->getTitle() ); print $html; return true; } = +/** + * @param $input String + * @param $args Array + * @param $parser Parser + * @return string + */ function wfLanguageSelectorTag( $input, $args, $parser ) { $style =3D @$args['style']; $class =3D @$args['class']; @@ -243,7 +269,7 @@ function wfLanguageSelectorTag( $input, $args, $parser = ) { $showcode =3D strtolower( $showcode ); if ( $showcode =3D=3D "true" || $showcode =3D=3D "yes" || $showcode =3D= =3D "on" ) { $showcode =3D true; - } else if ( $showcode =3D=3D "false" || $showcode =3D=3D "no" || $showco= de =3D=3D "off" ) { + } elseif ( $showcode =3D=3D "false" || $showcode =3D=3D "no" || $showcod= e =3D=3D "off" ) { $showcode =3D false; } else { $showcode =3D null; @@ -255,26 +281,31 @@ function wfLanguageSelectorTag( $input, $args, $parse= r ) { # So that this also works with parser cache $parser->getOutput()->addOutputHook( 'languageselector' ); = - return wfLanguageSelectorHTML( $style, $class, $selectorstyle, $buttonsty= le, $showcode ); + return wfLanguageSelectorHTML( $parser->getTitle(), $style, $class, $sele= ctorstyle, $buttonstyle, $showcode ); } = +/** + * @param $skin Skin + * @param $tpl QuickTemplate + * @return bool + */ function wfLanguageSelectorSkinTemplateOutputPageBeforeExec( &$skin, &$tpl= ) { - global $wgLanguageSelectorLocation, $wgLanguageSelectorLanguages; - global $wgLang, $wgContLang, $wgTitle; + global $wgLanguageSelectorLocation; + global $wgLang, $wgContLang; = if ($wgLanguageSelectorLocation =3D=3D LANGUAGE_SELECTOR_AS_PORTLET) { $code =3D $wgLang->getCode(); $lines =3D array(); - foreach ($wgLanguageSelectorLanguages as $ln) { + foreach ( wfGetLanguageSelectorLanguages() as $ln ) { $lines[] =3D array( - $href =3D $wgTitle->getFullURL( 'setlang=3D' . $ln ), + $href =3D $skin->getTitle()->getFullURL( 'setlang=3D' . $ln ), 'text' =3D> $wgContLang->getLanguageName($ln), 'href' =3D> $href, 'id' =3D> 'n-languageselector', 'active' =3D> ($ln =3D=3D $code), ); } - = + $tpl->data['sidebar']['languageselector'] =3D $lines; return true; } @@ -287,85 +318,19 @@ function wfLanguageSelectorSkinTemplateOutputPageBefo= reExec( &$skin, &$tpl ) { case LANGUAGE_SELECTOR_INTO_SUBTITLE: $key =3D 'subtitle'; break; case LANGUAGE_SELECTOR_INTO_CATLINKS: $key =3D 'catlinks'; break; } - = + if ($key) { - $html =3D wfLanguageSelectorHTML(); + $html =3D wfLanguageSelectorHTML( $skin->getTitle() ); $tpl->set( $key, $tpl->data[ $key ] . $html ); } = return true; } = -function wfLanguageSelectorDetectLanguage( $mode ) { - global $wgContLang, $wgLanguageSelectorLanguages; - - $contLang =3D $wgContLang->getCode(); - - if ( !$mode || $mode =3D=3D LANGUAGE_SELECTOR_USE_CONTENT_LANG ) { - return $contLang; - } - - /** - * get accepted languages from Accept-Languages - * HTTP header. - */ - $accept =3D @$_SERVER["HTTP_ACCEPT_LANGUAGE"]; - - if ( empty( $accept ) ) - return $contLang; - - $accept =3D explode( ',', $accept ); - - /** - * normalize accepted languages - */ - $languages =3D array(); - foreach ( $accept as $lan ) { - @list( $value, $qpart ) =3D explode( ';', trim( $lan ) ); - $match =3D array(); - if( !isset( $qpart ) ) { - $languages[$value] =3D 1.0; - } elseif( preg_match( '/q\s*=3D\s*(\d*\.\d+)/', $qpart, $match ) ) { - $languages[$value] =3D floatval( $match[1] ); - } - } - - /** - * see if the content language is accepted by the - * client. - */ - if ( $mode =3D=3D LANGUAGE_SELECTOR_PREFER_CONTENT_LANG && array_key_exis= ts( $contLang, $languages ) ) { - return $contLang; - } - - arsort( $languages, SORT_NUMERIC ); - - /** - * look for a language that is acceptable to the client - * and known to the wiki. - */ - foreach( $languages as $code =3D> $q ) { - /** - * TODO: only accept languages for which an implementation exists. - * this is disabled, because it's slow. Note that this code is - * executed for every page request! - */ - /* - global $IP; - $langfile=3D"$IP/languages/Language".str_replace('-', '_', ucfirst($code= )).".php"; - if(!file_exists($langfile)) { - continue; - } - */ - - if ( in_array( $code, $wgLanguageSelectorLanguages ) ) { - return $code; - } - } - - return $contLang; -} - +/** + * @param $u User + * @return bool + */ function wfLanguageSelectorAddNewAccount( $u ) { global $wgUser, $wgLang; = @@ -380,20 +345,23 @@ function wfLanguageSelectorAddNewAccount( $u ) { return true; } = +/** + * @param $outputPage OutputPage + * @param $parserOutput ParserOutput + * @param $data + * @return void + */ function wfLanguageSelectorAddJavascript( $outputPage, $parserOutput, $dat= a ) { - global $wgLanguageSelectorFormUsed; - - $wgLanguageSelectorFormUsed =3D true; + $outputPage->addModules( 'ext.languageSelector' ); } = -function wfLanguageSelectorHTML( $style =3D null, $class =3D null, $select= orstyle =3D null, $buttonstyle =3D null, $showCode =3D null ) { - global $wgLanguageSelectorLanguages, $wgTitle, $wgLang, $wgContLang, $wgS= cript, - $wgLanguageSelectorShowCode, $wgLanguageSelectorFormUsed; +function wfLanguageSelectorHTML( Title $title, $style =3D null, $class =3D= null, $selectorstyle =3D null, $buttonstyle =3D null, $showCode =3D null )= { + global $wgLang, $wgContLang, $wgScript, + $wgLanguageSelectorShowCode; = if ( $showCode =3D=3D=3D null ) { $showCode =3D $wgLanguageSelectorShowCode; } - $wgLanguageSelectorFormUsed =3D true; = static $id =3D 0; $id +=3D 1; @@ -413,14 +381,14 @@ function wfLanguageSelectorHTML( $style =3D null, $cl= ass =3D null, $selectorstyle =3D 'action' =3D> $wgScript, 'style' =3D> 'display:inline;' ) ); - $html .=3D Xml::hidden( 'title', $wgTitle->getPrefixedDBKey() ); + $html .=3D Html::Hidden( 'title', $title->getPrefixedDBKey() ); $html .=3D Xml::openElement('select', array( 'name' =3D> 'setlang', 'id' =3D> 'languageselector-select-' . $id, 'style' =3D> $selectorstyle ) ); = - foreach ( $wgLanguageSelectorLanguages as $ln ) { + foreach ( wfGetLanguageSelectorLanguages() as $ln ) { $name =3D $wgContLang->getLanguageName( $ln ); if ( $showCode ) $name =3D wfBCP47( $ln ) . ' - ' . $name; = @@ -435,4 +403,3 @@ function wfLanguageSelectorHTML( $style =3D null, $clas= s =3D null, $selectorstyle =3D = return $html; } -