diff -U 3 -H -b -w -B -E -d -t -r -N -- Cite r44396/Cite.i18n.php Cite my manual merge/Cite.i18n.php --- Cite r44396/Cite.i18n.php 2008-12-04 10:00:18.000000000 +0000 +++ Cite my manual merge/Cite.i18n.php 2008-12-14 21:36:59.000000000 +0000 @@ -23,8 +23,6 @@ # User errors 'cite_error' => 'Cite error: $1', - 'cite_error_ref_numeric_key' => 'Invalid <ref> tag; -name cannot be a simple integer. Use a descriptive title', 'cite_error_ref_no_key' => 'Invalid <ref> tag; refs with no content must have a name', 'cite_error_ref_too_many_keys' => 'Invalid <ref> tag; @@ -44,31 +42,46 @@ 'cite_error_references_no_text' => 'Invalid <ref> tag; no text was provided for refs named $1', 'cite_error_included_ref' => 'Closing </ref> missing for <ref> tag', + 'cite_error_references_nested' => 'Cite tags cannot be nested inside each other (ref was: $1)', /* Output formatting */ - 'cite_reference_link_key_with_num' => '$1_$2', - # Ids produced by + # Ids produced by - note to be XHTML compliant, both of these prefixes start with [a-zA-Z] and are not empty. 'cite_reference_link_prefix' => 'cite_ref-', 'cite_reference_link_suffix' => '', # Ids produced by 'cite_references_link_prefix' => 'cite_note-', 'cite_references_link_suffix' => '', - 'cite_reference_link' => '[[#$2|[$3]]]', - 'cite_references_link_one' => '
  • [[#$2|↑]] $3
  • ', - 'cite_references_link_many' => '
  • ↑ $2 $3
  • ', - 'cite_references_link_many_format' => '[[#$1|$2]]', + 'cite_references_link_nearseparator' => ', ', + 'cite_references_link_farseparator' => '–', + + 'cite_references_footnote_labels' => '* † ⁑ ‡ § ‖ ¶', + + //The only alternative to hard-coding the style of the links in the text is to have four constants: + 'cite_reference_pre' => '', + 'cite_reference_post' => '', + 'cite_reference_pre_bracket' => '[', + 'cite_reference_post_bracket' => ']', + //These fit together to make the link as "pre[[bra...cket]]post" or "prebra[[...,...,...]]cketpost" + + //Note that $4 is a new addition with footnotes, and is needed for the symbols to show up correctly. + 'cite_references_link_one' => '
  • $4[[#$2|↑]] $3
  • ', + 'cite_references_link_many' => '
  • $4↑ $2 $3
  • ', + 'cite_references_link_many_format' => '[[#$1|$2]]',//$2 holds , $3 alternate # An item from this set is passed as $3 in the message above 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', 'cite_references_link_many_sep' => " ", 'cite_references_link_many_and' => " ", + 'cite_references_footnote_prefix' => '
    $1
     ', - # Although I could just use # instead of
  • above and nothing here that + # Although I could just use # instead of
  • above and nothing here, that # will break on input that contains linebreaks 'cite_references_prefix' => '
      ', 'cite_references_suffix' => '
    ', + 'cite_footnote_references_prefix' => '
      ', + 'cite_footnote_references_suffix' => '
    ', ); /** Message documentation (Message documentation) @@ -81,7 +94,6 @@ $messages['qqq'] = array( 'cite_desc' => 'Extension description for cite. Shown in [[Special:Version]]. Do not translate or change tag names.', 'cite_error' => 'Cite extension. This is used when there are errors in ref or references tags. The parameter $1 is an error message.', - 'cite_error_ref_numeric_key' => 'Cite extension. Error message shown if the name of a ref tag only contains digits. Examples that cause this error are <ref name="123" /> or <ref name="456">input</ref>', 'cite_error_ref_no_key' => 'Cite extension. Error message shown when ref tags without any content (that is <ref/>) are used without a name.', 'cite_error_ref_too_many_keys' => 'Cite extension. Error message shown when ref tags has parameters other than name. Examples that cause this error are <ref name="name" notname="value" /> or <ref notname="value" >input<ref>', 'cite_error_ref_no_input' => 'Cite extension. Error message shown when ref tags without names have no content. An example that cause this error is <ref></ref>', @@ -113,7 +125,6 @@ 'cite_error_key_str_invalid' => 'Error interna; $str y/u $key no conforme(s). Isto no abría d\'escaizer nunca.', 'cite_error_stack_invalid_input' => "Error interna; clau de pila no conforme. Isto no abría d'escaizer nunca.", 'cite_error' => 'Error en a zita: $1', - 'cite_error_ref_numeric_key' => "Etiqueta <ref> incorreuta; o nombre d'a etiqueta no puede estar un numero entero, faiga serbir un títol descriptibo", 'cite_error_ref_no_key' => 'Etiqueta <ref> incorreuta; as referenzias sin de conteniu han de tener un nombre', 'cite_error_ref_too_many_keys' => 'Etiqueta <ref> incorreuta; nombres de parametros incorreutos.', 'cite_error_ref_no_input' => 'Etiqueta <ref> incorreuta; as referenzias sin nombre no han de tener conteniu', @@ -140,8 +151,6 @@ مفتاح ستاك غير صحيح. هذا لا يجب أن يحدث أبدا.', 'cite_error' => 'خطأ استشهاد: $1', - 'cite_error_ref_numeric_key' => 'وسم <ref> غير صحيح؛ -الاسم لا يمكن أن يكون عددا صحيحا بسيطا. استخدم عنوانا وصفيا', 'cite_error_ref_no_key' => 'وسم <ref> غير صحيح؛ المراجع غير ذات المحتوى يجب أن تمتلك اسما', 'cite_error_ref_too_many_keys' => 'وسم <ref> غير صحيح؛ @@ -179,8 +188,6 @@ مفتاح ستاك مش صحيح. ده لازم مايحصلش ابدا', 'cite_error' => 'المرجع غلط: $1', - 'cite_error_ref_numeric_key' => 'التاج <ref> مش صحيح؛ -الاسم ماينفعش يكون عدد صحيح بسيط. استخدم عنوان بيوصف', 'cite_error_ref_no_key' => 'التاج <ref> مش صحيح؛ المراجع اللى من غير محتوى لازميكون ليها اسم', 'cite_error_ref_too_many_keys' => 'التاج <ref> مش صحيح؛ @@ -212,7 +219,6 @@ 'cite_error_key_str_invalid' => 'Error internu; $str y/o $key non válidos. Esto nun habría asoceder nunca.', 'cite_error_stack_invalid_input' => 'Error internu; clave de pila non válida. Esto nun habría asoceder nunca.', 'cite_error' => 'Error de cita: $1', - 'cite_error_ref_numeric_key' => 'Etiqueta <ref> non válida; el nome nun pue ser un enteru simple, usa un títulu descriptivu', 'cite_error_ref_no_key' => 'Etiqueta <ref> non válida; les referencies ensin conteníu han tener un nome', 'cite_error_ref_too_many_keys' => 'Etiqueta <ref> non válida; nomes non válidos (p.ex. demasiaos)', 'cite_error_ref_no_input' => 'Etiqueta <ref> non válida; les referencies ensin nome han tener conteníu', @@ -242,8 +248,6 @@ نامعتربین دسته کلیت. شی نبایدن هچ وهد پیش کیت.', 'cite_error' => 'حطا ارجاع: $1', - 'cite_error_ref_numeric_key' => 'نامعتبر <ref>تگ; -نام یک سادگین هوری نه نه بیت. یک توضیحی عنوانی استفاده کنیت', 'cite_error_ref_no_key' => 'نامعتبر<ref>تگ; مراجع بی محتوا بایدن نامی داشته بنت', 'cite_error_ref_too_many_keys' => 'نامعتبر<ref>تگ; @@ -280,7 +284,6 @@ 'cite_error_key_str_invalid' => 'Вътрешна грешка: невалиден параметър $str и/или $key. Това не би трябвало да се случва никога.', 'cite_error_stack_invalid_input' => "'''Вътрешна грешка:''' невалиден ключ на стека. Това не би трябвало да се случва никога.", 'cite_error' => 'Грешка при цитиране: $1', - 'cite_error_ref_numeric_key' => "'''Грешка в етикет <ref>:''' името не може да бъде число, използва се описателно име", 'cite_error_ref_no_key' => "'''Грешка в етикет <ref>:''' етикетите без съдържание трябва да имат име", 'cite_error_ref_too_many_keys' => "'''Грешка в етикет <ref>:''' грешка в името, например повече от едно име на етикета", 'cite_error_ref_no_input' => "'''Грешка в етикет <ref>:''' етикетите без име трябва да имат съдържание", @@ -304,7 +307,6 @@ 'cite_error_key_str_invalid' => 'আভ্যন্তরীন ত্রুটি; অবৈধ $str এবং/অথবা $key। এটা কখনই ঘটা উচিত নয়।', 'cite_error_stack_invalid_input' => 'আভ্যন্তরীন ত্রুটি; অবৈধ স্ট্যাক কি। এটা কখনই ঘটা উচিত নয়।', 'cite_error' => 'উদ্ধৃতি ত্রুটি: $1', - 'cite_error_ref_numeric_key' => 'অবৈধ <ref> ট্যাগ; নাম কোন সরল পূর্ণসংখ্যা হতে পারবেনা, একটি বিবরণমূলক শিরোনাম ব্যবহার করুন', 'cite_error_ref_no_key' => 'অবৈধ <ref> ট্যাগ; বিষয়বস্তুহীন refসমূহের অবশ্যই নাম থাকতে হবে', 'cite_error_ref_too_many_keys' => 'অবৈধ <ref> ট্যাগ; অবৈধ নাম (যেমন- সংখ্যাতিরিক্ত)', 'cite_error_ref_no_input' => 'অবৈধ <ref> ট্যাগ; নামবিহীন refসমূহের অবশ্যই বিষয়বস্তু থাকতে হবে', @@ -327,8 +329,6 @@ alc'hwez pil direizh. Ne zlefe ket c'hoarvezout gwezh ebet.", 'cite_error' => 'Fazi arroud : $1', - 'cite_error_ref_numeric_key' => "Fazi implijout ar valizenn <ref> ; -n'hall ket an anv bezañ un niver anterin. Grit gant un titl deskrivus", 'cite_error_ref_no_key' => "Fazi implijout ar valizenn <ref> ; ret eo d'an daveennoù goullo kaout un anv", 'cite_error_ref_too_many_keys' => 'Fazi implijout ar valizenn <ref> ; @@ -373,8 +373,6 @@ el valor d'emmagatzematge no és vàlid. Aquesta situació no s'hauria de donar mai.", 'cite_error' => 'Error de cita: $1', - 'cite_error_ref_numeric_key' => 'Etiqueta <ref> no vàlida; -el nom no pot ser un nombre. Empreu una paraula o un títol descriptiu', 'cite_error_ref_no_key' => 'Etiqueta <ref> no vàlida; les refs sense contingut han de tenir nom', 'cite_error_ref_too_many_keys' => 'Etiqueta <ref> no vàlida; @@ -405,7 +403,6 @@ 'cite_error_key_str_invalid' => 'Vnitřní chyba; neplatný $str', 'cite_error_stack_invalid_input' => 'Vnitřní chyba; neplatný klíč zásobníku', 'cite_error' => 'Chybná citace $1', - 'cite_error_ref_numeric_key' => 'Chyba v tagu <ref>; názvem nesmí být prosté číslo, použijte popisné označení', 'cite_error_ref_no_key' => 'Chyba v tagu <ref>; prázdné citace musí obsahovat název', 'cite_error_ref_too_many_keys' => 'Chyba v tagu <ref>; chybné názvy, např. je jich příliš mnoho', 'cite_error_ref_no_input' => 'Chyba v tagu <ref>; citace bez názvu musí mít vlastní obsah', @@ -439,8 +436,6 @@ Allwedd pentwr annilys. Ni ddylai hyn fyth ddigwydd.', 'cite_error' => 'Gwall cyfeirio: $1', - 'cite_error_ref_numeric_key' => 'Tag <ref> annilys; -ni all enw fod yn rif yn unig. Defnyddiwch deitl disgrifiadol.', 'cite_error_ref_no_key' => 'Tag <ref> annilys; rhaid i dagiau ref sydd heb gynnwys iddynt gael enw', 'cite_error_ref_too_many_keys' => 'Tag <ref> annilys; @@ -462,7 +457,6 @@ 'cite_error_key_str_invalid' => 'Intern fejl: Ugyldig $str og/eller $key. Dette burde aldrig forekomme.', 'cite_error_stack_invalid_input' => 'Intern fejl: Ugyldig staknøgle. Dette burde aldrig forekomme.', 'cite_error' => 'Fodnotefejl: $1', - 'cite_error_ref_numeric_key' => 'Ugyldigt <ref>-tag; "name" kan ikke være et simpelt heltal, brug en beskrivende titel', 'cite_error_ref_no_key' => 'Ugyldigt <ref>-tag: Et <ref>-tag uden indhold skal have et navn', 'cite_error_ref_too_many_keys' => 'Ugyldigt <ref>-tag: Ugyldige navne, fx for mange', 'cite_error_ref_no_input' => 'Ugyldigt <ref>-tag: Et <ref>-tag uden navn skal have indhold', @@ -481,7 +475,6 @@ 'cite_error_key_str_invalid' => 'Interner Fehler: ungültiger $str und/oder $key. Dies sollte eigentlich gar nicht passieren können.', 'cite_error_stack_invalid_input' => 'Interner Fehler: ungültiger „name“-stack. Dies sollte eigentlich gar nicht passieren können.', 'cite_error' => 'Referenz-Fehler: $1', - 'cite_error_ref_numeric_key' => 'Ungültige <ref>-Verwendung: „name“ darf kein reiner Zahlenwert sein, benutze einen beschreibenden Namen.', 'cite_error_ref_no_key' => 'Ungültige <ref>-Verwendung: „ref“ ohne Inhalt muss einen Namen haben.', 'cite_error_ref_too_many_keys' => 'Ungültige <ref>-Verwendung: „name“ ist ungültig oder zu lang.', 'cite_error_ref_no_input' => 'Ungültige <ref>-Verwendung: „ref“ ohne Namen muss einen Inhalt haben.', @@ -497,7 +490,6 @@ * @author Raimond Spekking */ $messages['de-formal'] = array( - 'cite_error_ref_numeric_key' => 'Ungültige <ref>-Verwendung: „name“ darf kein reiner Zahlenwert sein, benutzen Sie einen beschreibenden Namen.', 'cite_error_references_invalid_input' => 'Ungültige <references>-Verwendung: Es ist kein zusätzlicher Text erlaubt, verwenden Sie ausschließlich .', 'cite_error_references_invalid_parameters' => 'Ungültige <references>-Verwendung: Es sind keine zusätzlichen Parameter erlaubt, verwenden Sie ausschließlich .', ); @@ -532,8 +524,6 @@ nevalida staka ŝlosilo. Ĉi tio verŝajne neniam okazus.', 'cite_error' => 'Citaĵa eraro: $1', - 'cite_error_ref_numeric_key' => 'Nevalida etikedo <ref>; -nomo ne povas esti simpla entjero. Uzu priskriban titolon.', 'cite_error_ref_no_key' => "Nevalida etikedo <ref>; ''ref'' kun nenia enhava nomo devas havi nomon", 'cite_error_ref_too_many_keys' => 'Nevalida etikedo <ref>; @@ -568,8 +558,6 @@ la clave de la pila no es válida. Esto nunca debe ocurrir.', 'cite_error' => 'Error en la cita: $1', - 'cite_error_ref_numeric_key' => 'El elemento <ref> no es válido; -el nombre no puede ser un número entero simple. Use un título descriptivo', 'cite_error_ref_no_key' => 'El elemento <ref> no es válido; las referencias sin contenido deben tener un nombre', 'cite_error_ref_too_many_keys' => 'El elemento <ref> no es válido; @@ -600,7 +588,6 @@ 'cite_error_key_str_invalid' => 'خطای داخلی؛ $str و/یا $key غیر مجاز. این خطا نباید هرگز رخ دهد.', 'cite_error_stack_invalid_input' => 'خطای داخلی؛ کلید پشته غیرمجاز. این خطا نباید هرگز رخ دهد.', 'cite_error' => 'خطای یادکرد: $1', - 'cite_error_ref_numeric_key' => 'برچسب غیرمجاز؛ نام نمی‌تواند یک عدد باشد. عنوان واضح‌تری را برگزینید', 'cite_error_ref_no_key' => 'برچسب غیرمجاز؛ یادکردهای بدون محتوا باید نام داشته باشند', 'cite_error_ref_too_many_keys' => 'برچسب غیرمجاز؛ نام‌های غیرمجاز یا بیش از اندازه', 'cite_error_ref_no_input' => 'برچسب غیرمجاز؛ یادکردهای بدون نام باید محتوا داشته باشند', @@ -625,7 +612,6 @@ 'cite_error_key_str_invalid' => 'Sisäinen virhe: kelpaamaton $str ja/tai $key.', 'cite_error_stack_invalid_input' => 'Sisäinen virhe: kelpaamaton pinoavain.', 'cite_error' => 'Viittausvirhe: $1', - 'cite_error_ref_numeric_key' => 'Kelpaamaton <ref>-elementti: nimi ei voi olla numero – käytä kuvaavampaa nimeä.', 'cite_error_ref_no_key' => 'Kelpaamaton <ref>-elementti: sisällöttömille refeille pitää määrittää nimi.', 'cite_error_ref_too_many_keys' => 'Kelpaamaton <ref>-elementti: virheelliset nimet, esim. liian monta', 'cite_error_ref_no_input' => 'Kelpaamaton <ref>-elementti: viitteillä ilman nimiä täytyy olla sisältöä', @@ -652,8 +638,6 @@ clé de pile incorrecte. Ceci ne devrait jamais se produire.', 'cite_error' => 'Erreur de citation : $1', - 'cite_error_ref_numeric_key' => 'Balise <ref> incorrecte ; -Le nom ne peut être un entier simple. Utilisez un titre descriptif.', 'cite_error_ref_no_key' => 'Balise <ref> incorrecte ; les références sans contenu doivent avoir un nom.', 'cite_error_ref_too_many_keys' => 'Balise <ref> incorrecte ; @@ -683,7 +667,6 @@ 'cite_error_key_str_invalid' => 'Èrror de dedens ; $str atendua.', 'cite_error_stack_invalid_input' => 'Èrror de dedens ; cllâf de pila envalida.', 'cite_error' => 'Èrror de citacion $1', - 'cite_error_ref_numeric_key' => 'Apèl envalido ; cllâf pas entègrâla atendua.', 'cite_error_ref_no_key' => 'Apèl envalido ; niona cllâf spècefiâ.', 'cite_error_ref_too_many_keys' => 'Apèl envalido ; cllâfs envalides, per ègzemplo, trop de cllâfs spècefiâs ou ben cllâf fôssa.', 'cite_error_ref_no_input' => 'Apèl envalido ; niona entrâ spècefiâ.', @@ -704,8 +687,6 @@ 'cite_error_key_str_invalid' => 'Erro interno; $str e/ou $key inválidos. Isto non debera ocorrer.', 'cite_error_stack_invalid_input' => 'Erro interno; stack key inválido. Isto non debera ocorrer.', 'cite_error' => 'Erro no código da cita: $1', - 'cite_error_ref_numeric_key' => 'etiqueta <ref> non válida; -o nome non pode ser un simple entero: use un título descritivo', 'cite_error_ref_no_key' => 'etiqueta <ref> non válida; as referencias que non teñan contido deben ter un nome', 'cite_error_ref_too_many_keys' => 'etiqueta <ref> non válida; @@ -747,7 +728,6 @@ 'cite_error_key_str_invalid' => 'שגיאה פנימית; $str ו/או $key שגויים. זהו באג בתוכנה.', 'cite_error_stack_invalid_input' => 'שגיאה פנימית; מפתח שגוי במחסנית. זהו באג בתוכנה.', 'cite_error' => 'שגיאת ציטוט: $1', - 'cite_error_ref_numeric_key' => 'תגית <ref> שגויה; שם לא יכול להיות מספר פשוט, יש להשתמש בכותרת תיאורית', 'cite_error_ref_no_key' => 'תגית <ref> שגויה; להערות שוליים ללא תוכן חייב להיות שם', 'cite_error_ref_too_many_keys' => 'תגית <ref> שגויה; שמות שגויים, למשל, רבים מדי', 'cite_error_ref_no_input' => 'תגית <ref> שגויה; להערות שוליים ללא שם חייב להיות תוכן', @@ -772,7 +752,6 @@ ऐसा होना नहीं चाहियें।', 'cite_error_stack_invalid_input' => 'आंतर्गत गलती; गलत स्टॅक की। ऐसा होना नहीं चाहियें।', 'cite_error' => 'गलती उद्घृत करें: $1', - 'cite_error_ref_numeric_key' => '<ref> गलत कोड; नाम यह पूर्णांकी संख्या नहीं हो सकता, कृपया माहितीपूर्ण शीर्षक दें', 'cite_error_ref_no_key' => '<ref> गलत कोड; खाली संदर्भोंको नाम होना आवश्यक हैं', 'cite_error_ref_too_many_keys' => '<ref> गलत कोड; गलत नाम, उदा. ढेर सारी', 'cite_error_ref_no_input' => '<ref> गलत कोड; नाम ना होने वाले संदर्भोंमें ज़ानकारी देना आवश्यक हैं', @@ -794,7 +773,6 @@ 'cite_error_key_str_invalid' => 'Unutrašnja greška: loš $str i/ili $key. Ovo se nikada ne bi smjelo dogoditi.', 'cite_error_stack_invalid_input' => 'Unutrašnja greška; loš ključ stacka. Ovo se nikada ne bi smjelo dogoditi.', 'cite_error' => 'Greška u citiranju: $1', - 'cite_error_ref_numeric_key' => 'Loša <ref> oznaka; naziv ne smije biti jednostavni broj, koristite opisni naziv', 'cite_error_ref_no_key' => 'Loša <ref> oznaka; ref-ovi bez sadržaja moraju imati naziv', 'cite_error_ref_too_many_keys' => 'Loša <ref> oznaka; loš naziv, npr. previše naziva', 'cite_error_ref_no_input' => 'Loša <ref> oznaka; ref-ovi bez imena moraju imati sadržaj', @@ -818,7 +796,6 @@ 'cite_error_key_str_invalid' => 'Interny zmylk: njepłaćiwy $str a/abo $key. To njeměło ženje wustupić.', 'cite_error_stack_invalid_input' => 'Interny zmylk; njepłaćiwy kluč staploweho składa. To njeměło ženje wustupić.', 'cite_error' => 'Referencny zmylk: $1', - 'cite_error_ref_numeric_key' => 'Njepłaćiwe wužiwanje taflički <ref>; "name" njesmě jednora hódnota integer być, wužij wopisowace mjeno.', 'cite_error_ref_no_key' => 'Njepłaćiwe wužiwanje taflički <ref>; "ref" bjez wobsaha dyrbi mjeno měć.', 'cite_error_ref_too_many_keys' => 'Njepłaćiwe wužiwanje taflički <ref>; njepłaćiwe mjena, na př. předołho', 'cite_error_ref_no_input' => 'Njepłaćiwe wužiwanje taflički <ref>; "ref" bjez mjena dyrbi wobsah měć', @@ -846,7 +823,6 @@ kle pil an pa bon ditou. Sa pa te dwe janm rive', 'cite_error' => 'Erè nan sitasyon : $1', - 'cite_error_ref_numeric_key' => 'Apèl ou fè an pa bon ; se kle ki pa entegral, ki pat long nou tap tann', 'cite_error_ref_no_key' => 'Apèl sa pa bon : nou pa bay pyès kle', 'cite_error_ref_too_many_keys' => 'Apèl ou fè an pa bon ; kle yo pa bon, pa egzanp, nou bay twòp kle oubyen kle yo pa bon oubyen nou pa byen rantre yo nan sistèm an.', 'cite_error_ref_no_input' => 'Apèl ou fè an pa bon ; ou pa presize pyès antre', @@ -872,7 +848,6 @@ 'cite_error_key_str_invalid' => 'Belső hiba; érvénytelen $str és/vagy $key. Ennek soha nem kellene előfordulnia.', 'cite_error_stack_invalid_input' => 'Belső hiba; érvénytelen kulcs. Ennek soha nem kellene előfordulnia.', 'cite_error' => 'Hiba a forráshivatkozásban: $1', - 'cite_error_ref_numeric_key' => 'Érvénytelen <ref> tag; a name értéke nem lehet csupán egy szám, használj leíró címeket', 'cite_error_ref_no_key' => 'Érvénytelen <ref> tag; a tartalom nélküli ref-eknek kötelező nevet (name) adni', 'cite_error_ref_too_many_keys' => 'Érvénytelen <ref> tag; hibás nevek, pl. túl sok', 'cite_error_ref_no_input' => 'Érvénytelen <ref> tag; a név (name) nélküli ref-eknek adni kell valamilyen tartalmat', @@ -897,8 +872,6 @@ clave de pila invalide. Isto non deberea jammais occurrer.', 'cite_error' => 'Error de citation: $1', - 'cite_error_ref_numeric_key' => 'Etiquetta <ref> invalide; -le nomine non pote esser un numero integre. Usa un titulo descriptive', 'cite_error_ref_no_key' => 'Etiquetta <ref> invalide; le refs sin contento debe haber un nomine', 'cite_error_ref_too_many_keys' => 'Etiquetta <ref> invalide; @@ -930,7 +903,6 @@ 'cite_error_key_str_invalid' => 'Kesalahan internal; $str tak sah', 'cite_error_stack_invalid_input' => 'Kesalahan internal; kunci stack tak sah', 'cite_error' => 'Kesalahan pengutipan $1', - 'cite_error_ref_numeric_key' => 'Kesalahan pemanggilan; diharapkan suatu kunci non-integer', 'cite_error_ref_no_key' => 'Kesalahan pemanggilan; tidak ada kunci yang dispesifikasikan', 'cite_error_ref_too_many_keys' => 'Kesalahan pemanggilan; kunci tak sah, contohnya karena terlalu banyak atau tidak ada kunci yang dispesifikasikan', 'cite_error_ref_no_input' => 'Kesalahan pemanggilan; tidak ada masukan yang dispesifikasikan', @@ -955,7 +927,6 @@ 'cite_error_key_str_invalid' => 'Errore interno: $str errato', 'cite_error_stack_invalid_input' => 'Errore interno: chiave di stack errata', 'cite_error' => 'Errore nella funzione Cite $1', - 'cite_error_ref_numeric_key' => "Errore nell'uso del marcatore <ref>: il nome non può essere un numero intero. Usare un titolo esteso", 'cite_error_ref_no_key' => "Errore nell'uso del marcatore <ref>: i ref vuoti non possono essere privi di nome", 'cite_error_ref_too_many_keys' => "Errore nell'uso del marcatore <ref>: nomi non validi (ad es. numero troppo elevato)", 'cite_error_ref_no_input' => "Errore nell'uso del marcatore <ref>: i ref privi di nome non possono essere vuoti", @@ -981,7 +952,6 @@ 'cite_error_key_str_invalid' => '内部エラー; 無効な $str', 'cite_error_stack_invalid_input' => '内部エラー; 無効なスタックキー', 'cite_error' => '引用エラー $1', - 'cite_error_ref_numeric_key' => '無効な <ref> タグ: 名前に単純な数値は使用できません。', 'cite_error_ref_no_key' => '無効な <ref> タグ: 引用句の内容がない場合には名前 (name 属性)が必要です', 'cite_error_ref_too_many_keys' => '無効な <ref> タグ: 無効な名前(多すぎる、もしくは誤った指定)', 'cite_error_ref_no_input' => '無効な <ref> タグ: 名前 (name 属性)がない場合には引用句の内容が必要です', @@ -1002,7 +972,6 @@ 'cite_error_key_str_invalid' => 'Intern fejl: Ugyldeg $str og/æller $key. Dette burde aldreg førekåm.', 'cite_error_stack_invalid_input' => 'Intern fejl: Ugyldeg staknøgle. Dette burde aldreg førekåm.', 'cite_error' => 'Fodnåtfejl: $1', - 'cite_error_ref_numeric_key' => 'Ugyldigt <ref>-tag; "name" kan ikke være et simpelt heltal, brug en beskrivende titel', 'cite_error_ref_no_key' => 'Ugyldigt <ref>-tag: Et <ref>-tag uden indhold skal have et navn', 'cite_error_ref_too_many_keys' => 'Ugyldigt <ref>-tag: Ugyldege navne, fx før mange', 'cite_error_ref_no_input' => 'Ugyldigt <ref>-tag: Et <ref>-tag uden navn skal have indhold', @@ -1026,8 +995,6 @@ stack key ora absah. Iki samesthine ora kadadéan.', 'cite_error' => 'Kaluputan sitat (pangutipan) $1', - 'cite_error_ref_numeric_key' => 'Tag <ref> ora absah; -jenengé ora bisa namung angka integer waé. Gunakna irah-irahan (judhul) dèskriptif', 'cite_error_ref_no_key' => 'Tag <ref> ora absah; refs tanpa isi kudu duwé jeneng', 'cite_error_ref_too_many_keys' => 'Tag <ref> ora absah; @@ -1055,7 +1022,6 @@ 'cite_error_key_str_invalid' => 'ٸشكٸ قاتە; جارامسىز $str', 'cite_error_stack_invalid_input' => 'ٸشكٸ قاتە; جارامسىز ستەك كٸلتٸ', 'cite_error' => 'دٵيەكسٶز الۋ $1 قاتەسٸ', - 'cite_error_ref_numeric_key' => 'جارامسىز <ref> بەلگٸشەسٸ; اتاۋ كٵدٸمگٸ بٷتٸن سان بولۋى مٷمكٸن ەمەس, سيپپاتاۋىش اتاۋ قولدانىڭىز', 'cite_error_ref_no_key' => 'جارامسىز <ref> بەلگٸشەسٸ; ماعلۇماتسىز تٷسٸنٸكتەمەلەردە اتاۋ بولۋى قاجەت', 'cite_error_ref_too_many_keys' => 'جارامسىز <ref> بەلگٸشە; جارامسىز اتاۋلار, مىسالى, تىم كٶپ', 'cite_error_ref_no_input' => 'جارامسىز <ref> بەلگٸشە; اتاۋسىز تٷسٸنٸكتەمەلەردە ماعلۇماتى بولۋى قاجەت', @@ -1070,7 +1036,6 @@ 'cite_error_key_str_invalid' => 'Ішкі қате; жарамсыз $str', 'cite_error_stack_invalid_input' => 'Ішкі қате; жарамсыз стек кілті', 'cite_error' => 'Дәйексөз алу $1 қатесі', - 'cite_error_ref_numeric_key' => 'Жарамсыз <ref> белгішесі; атау кәдімгі бүтін сан болуы мүмкін емес, сиппатауыш атау қолданыңыз', 'cite_error_ref_no_key' => 'Жарамсыз <ref> белгішесі; мағлұматсыз түсініктемелерде атау болуы қажет', 'cite_error_ref_too_many_keys' => 'Жарамсыз <ref> белгіше; жарамсыз атаулар, мысалы, тым көп', 'cite_error_ref_no_input' => 'Жарамсыз <ref> белгіше; атаусыз түсініктемелерде мағлұматы болуы қажет', @@ -1085,7 +1050,6 @@ 'cite_error_key_str_invalid' => 'İşki qate; jaramsız $str', 'cite_error_stack_invalid_input' => 'İşki qate; jaramsız stek kilti', 'cite_error' => 'Däýeksöz alw $1 qatesi', - 'cite_error_ref_numeric_key' => 'Jaramsız <ref> belgişesi; ataw kädimgi bütin san bolwı mümkin emes, sïppatawış ataw qoldanıñız', 'cite_error_ref_no_key' => 'Jaramsız <ref> belgişesi; mağlumatsız tüsiniktemelerde ataw bolwı qajet', 'cite_error_ref_too_many_keys' => 'Jaramsız <ref> belgişe; jaramsız atawlar, mısalı, tım köp', 'cite_error_ref_no_input' => 'Jaramsız <ref> belgişe; atawsız tüsiniktemelerde mağlumatı bolwı qajet', @@ -1119,9 +1083,6 @@ Der stack-Schößel stemmp nit. Dat sull nie optredde.', 'cite_error' => 'Fähler in cite met Refenenze: $1', - 'cite_error_ref_numeric_key' => 'Fähler en cite: -Ene <ref>-Name kann kei Zahl sin. -Nemm enne Tittel, dä jät säht.', 'cite_error_ref_no_key' => 'Fähler en cite: E <ref> oohne Enhalt moß ene Name han. Nemm enne Tittel, dä jät säht.', @@ -1169,8 +1130,6 @@ ongëltege ''stack''-Schlëssel. Dës sollt eigentlech guer net geschéien.", 'cite_error' => 'Zitéierfeeler: $1', - 'cite_error_ref_numeric_key' => 'Ongëltegen <ref> Tag; -De Numm ka keng einfach ganz Zuel sinn. Benotzt w.e.g. een Titel den eng Beschreiwung gëtt', 'cite_error_ref_no_key' => 'Ongëltegen <ref> Tag; Referenzen ouni Inhalt mussen e Numm hunn', 'cite_error_ref_too_many_keys' => 'Ongëltege <ref> Tag; @@ -1199,7 +1158,6 @@ 'cite_error_key_str_invalid' => 'Interne fout; ónzjuuste $str en/of $key. Dit zów noeaits mótte veurkómme.', 'cite_error_stack_invalid_input' => 'Interne fout; ónzjuuste stacksleutel. Dit zów noeaits mótte veurkómme.', 'cite_error' => 'Citeerfout: $1', - 'cite_error_ref_numeric_key' => "Ónzjuuste tag <ref>; de naam kin gein simpele integer zeen, gebroek 'ne besjrievendje titel", 'cite_error_ref_no_key' => "Ónzjuuste tag <ref>; refs zónger inhoud mótte 'ne naam höbbe", 'cite_error_ref_too_many_keys' => 'Ónzjuuste tag <ref>; ónzjuuste name, beveurbeildj te väöl', 'cite_error_ref_no_input' => 'Ónzjuuste tag <ref>; refs zónger naam mótte inhoud höbbe', @@ -1218,7 +1176,6 @@ 'cite_error_key_str_invalid' => 'Vidinė klaida; neleistinas $str', 'cite_error_stack_invalid_input' => 'Vidinė klaida; neleistinas steko raktas', 'cite_error' => 'Citavimo klaida $1', - 'cite_error_ref_numeric_key' => 'Neleistina <ref> gairė; vardas negali būti tiesiog skaičius, naudokite tekstinį pavadinimą', 'cite_error_ref_no_key' => 'Neleistina <ref> gairė; nuorodos be turinio turi turėti vardą', 'cite_error_ref_too_many_keys' => 'Neleistina <ref> gairė; neleistini vardai, pvz., per daug', 'cite_error_ref_no_input' => 'Neleistina <ref> gairė; nuorodos be vardo turi turėti turinį', @@ -1246,8 +1203,6 @@ ഇതു ഒരിക്കലും സംഭവിക്കാന്‍ പാടില്ലായിരുന്നു.', 'cite_error_stack_invalid_input' => 'ആന്തരിക പിഴവ്; അസാധുവായ സ്റ്റാക് കീ. ഇതു ഒരിക്കലും സംഭവിക്കാന്‍ പാടില്ലായിരുന്നു.', 'cite_error' => 'ഉദ്ധരിച്ചതില്‍ പിഴവ്: $1', - 'cite_error_ref_numeric_key' => 'അസാധുവായ <ref> ടാഗ്; -നാമത്തില്‍ സംഖ്യ മാത്രമായി അനുവദനീയമല്ല. എന്തെങ്കിലും ലഘുവിവരണം ഉപയോഗിക്കുക.', 'cite_error_ref_no_key' => 'അസാധുവായ <ref> ടാഗ്; ഉള്ളടക്കമൊന്നുമില്ലാത്ത അവലംബത്തിനും ഒരു പേരു വേണം.', 'cite_error_ref_too_many_keys' => 'അസാധുവായ <ref> ടാഗ്; @@ -1273,7 +1228,6 @@ 'cite_error_key_str_invalid' => 'अंतर्गत त्रुटी; चुकीचे $str आणि/किंवा $key. असे कधीही घडले नाही पाहिजे.', 'cite_error_stack_invalid_input' => 'अंतर्गत त्रुटी; चुकीची स्टॅक चावी. असे कधीही घडले नाही पाहिजे.', 'cite_error' => 'त्रूटी उधृत करा: $1', - 'cite_error_ref_numeric_key' => '<ref> चुकीचा कोड; नाव हे पूर्णांकी संख्या असू शकत नाही, कृपया माहितीपूर्ण शीर्षक द्या', 'cite_error_ref_no_key' => '<ref> चुकीचा कोड; रिकाम्या संदर्भांना नाव असणे गरजेचे आहे', 'cite_error_ref_too_many_keys' => '<ref> चुकीचा कोड; चुकीची नावे, उदा. खूप सारी', 'cite_error_ref_no_input' => '<ref> चुकीचा कोड; निनावी संदर्भांमध्ये माहिती असणे गरजेचे आहे', @@ -1293,7 +1247,6 @@ 'cite_error_key_str_invalid' => 'Ralat dalaman; str dan/atau $key tidak sah.', 'cite_error_stack_invalid_input' => 'Ralat dalaman; kunci tindanan tidak sah.', 'cite_error' => 'Ralat petik: $1', - 'cite_error_ref_numeric_key' => 'Tag <ref> tidak sah; nombor ringkas tidak dibenarkan, sila masukkan tajuk yang lebih terperinci', 'cite_error_ref_no_key' => 'Tag <ref> tidak sah; rujukan tanpa kandungan mestilah mempunyai nama', 'cite_error_ref_too_many_keys' => 'Tag <ref> tidak sah; nama-nama tidak sah, misalnya terlalu banyak', 'cite_error_ref_no_input' => "'Tag <ref> tidak sah; rujukan tanpa nama mestilah mempunyai kandungan", @@ -1315,7 +1268,6 @@ 'cite_error_key_str_invalid' => 'Internen Fehler: ungülligen $str un/oder $key. Dat schull egentlich nie vörkamen.', 'cite_error_stack_invalid_input' => 'Internen Fehler: ungülligen Stack-Slötel. Dat schull egentlich nie vörkamen.', 'cite_error' => 'Zitat-Fehler: $1', - 'cite_error_ref_numeric_key' => 'Ungülligen Tag <ref>: de Naam dröff keen reine Tall wesen, bruuk en Naam, de de Saak beschrifft.', 'cite_error_ref_no_key' => 'Ungülligen Tag <ref>: „ref“ ahn Inholt mutt en Naam hebben.', 'cite_error_ref_too_many_keys' => 'Ungülligen Tag <ref>: ungüllige Naams, to’n Bispeel to veel.', 'cite_error_ref_no_input' => 'Ungülligen Tag <ref>: „ref“ ahn Naam mutt en Inholt hebben.', @@ -1339,9 +1291,6 @@ onjuiste stacksleutel. Dit zou niet voor moeten komen.', 'cite_error' => 'Citefout: $1', - 'cite_error_ref_numeric_key' => 'Onjuiste tag <ref>; -de naam kan geen eenvoudige integer zijn. -Gebruik een beschrijvende titel', 'cite_error_ref_no_key' => 'Onjuiste tag <ref>; refs zonder inhoud moeten een naam hebben', 'cite_error_ref_too_many_keys' => 'Onjuiste tag <ref>; @@ -1372,7 +1321,6 @@ 'cite_error_key_str_invalid' => 'Intern feil: Ugyldig $str og/eller $key. Dette burde aldri skjedd.', 'cite_error_stack_invalid_input' => 'Intern feil; ugyldig stakknøkkel. Dette burde aldri skjedd.', 'cite_error' => 'Referansefeil: $1', - 'cite_error_ref_numeric_key' => 'Ugyldig <ref>-kode; namnet kan ikkje vere eit enkelt heiltal, bruk ein skildrande tittel', 'cite_error_ref_no_key' => 'Ugyldig <ref>-kode; referansar utan innhald må innehalde namn', 'cite_error_ref_too_many_keys' => 'Ugyldig <ref>-kode; ugyldige namn, t.d. for mange', 'cite_error_ref_no_input' => 'Ugyldig <ref>-kode; referansar uten namn må ha innhald', @@ -1395,7 +1343,6 @@ 'cite_error_key_str_invalid' => 'Intern feil: Ugyldig $str og/eller $key. Dette burde aldri forekomme.', 'cite_error_stack_invalid_input' => 'Intern feil; ugyldig stakknøkkel. Dette burde aldri forekomme.', 'cite_error' => 'Siteringsfeil: $1', - 'cite_error_ref_numeric_key' => 'Ugyldig <ref>-kode; navnet kan ikke være et enkelt heltall, bruk en beskrivende tittel', 'cite_error_ref_no_key' => 'Ugyldig <ref>-kode; referanser uten innhold må inneholde navn', 'cite_error_ref_too_many_keys' => 'Ugyldig <ref>-kode; ugyldige navn, f.eks. for mange', 'cite_error_ref_no_input' => 'Ugyldig <ref>-kode; referanser uten navn må ha innhold', @@ -1417,7 +1364,6 @@ 'cite_error_key_str_invalid' => 'Error intèrna ; $str esperada', 'cite_error_stack_invalid_input' => 'Error intèrna ; clau de pila invalida', 'cite_error' => 'Error de citacion : $1', - 'cite_error_ref_numeric_key' => 'Ampèl invalid ; clau non-integrala esperada', 'cite_error_ref_no_key' => 'Ampèl invalid ; cap de clau pas especificada', 'cite_error_ref_too_many_keys' => 'Ampèl invalid ; claus invalidas, per exemple, tròp de claus especificadas o clau erronèa', 'cite_error_ref_no_input' => 'Ampèl invalid ; cap de dintrada pas especificada', @@ -1453,7 +1399,6 @@ 'cite_error_key_str_invalid' => 'Błąd wewnętrzny – nieprawidłowy tekst $str i/lub klucz $key. To nigdy nie powinno się zdarzyć.', 'cite_error_stack_invalid_input' => 'Błąd wewnętrzny – nieprawidłowy klucz sterty. To nigdy nie powinno się zdarzyć.', 'cite_error' => "Błąd rozszerzenia ''cite'': $1", - 'cite_error_ref_numeric_key' => 'Nieprawidłowy znacznik <ref>. Nazwa nie może być liczbą, użyj nazwy opisowej.', 'cite_error_ref_no_key' => 'Nieprawidłowy znacznik <ref>. Odnośnik ref z zawartością musi mieć nazwę.', 'cite_error_ref_too_many_keys' => 'Nieprawidłowe nazwy parametrów elementu <ref>.', 'cite_error_ref_no_input' => 'Bład w składni elementu <ref>. Przypisy bez podanej nazwy muszą posiadać treść', @@ -1479,7 +1424,6 @@ 'cite_error_key_str_invalid' => 'Erro interno; $str inválido', 'cite_error_stack_invalid_input' => 'Erro interno; chave fixa inválida', 'cite_error' => 'Erro de citação $1', - 'cite_error_ref_numeric_key' => 'Código <ref> inválido; o nome não pode ser um número. Utilize um nome descritivo', 'cite_error_ref_no_key' => 'Código <ref> inválido; refs sem conteúdo devem ter um parâmetro de nome', 'cite_error_ref_too_many_keys' => 'Código <ref> inválido; nomes inválidos (por exemplo, nome muito extenso)', 'cite_error_ref_no_input' => 'Código <ref> inválido; refs sem parâmetro de nome devem possuir conteúdo a elas associado', @@ -1508,8 +1452,6 @@ stivă cheie invalidă. Acestea nu ar trebui să se întâmple.', 'cite_error' => 'Eroare la citare: $1', - 'cite_error_ref_numeric_key' => 'Etichetă <ref> invalidă; -numele nu poate fi un număr. Foloseşte un titlu descriptiv', 'cite_error_ref_no_key' => 'Etichetă <ref> invalidă; ref-urile fără conţinut trebuie să aibă un nume', 'cite_error_ref_too_many_keys' => 'Etichetă <ref> invalidă; @@ -1543,7 +1485,6 @@ Неверный ключ стека. Это никогда не должно происходить.', 'cite_error' => 'Ошибка цитирования $1', - 'cite_error_ref_numeric_key' => 'Неправильный вызов: ожидался нечисловой ключ', 'cite_error_ref_no_key' => 'Неправильный вызов: ключ не был указан', 'cite_error_ref_too_many_keys' => 'Неправильный вызов: неверные ключи, например было указано слишком много ключей или ключ был неправильным', 'cite_error_ref_no_input' => 'Неверный вызов: нет входных данных', @@ -1568,7 +1509,6 @@ 'cite_error_key_str_invalid' => 'Иһинээҕи сыыһа: $str уонна/эбэтэр $key сыыһалар.', 'cite_error_stack_invalid_input' => 'Иһинээҕи сыыһа: stack key сыыһалаах', 'cite_error' => 'Цитата сыыһата: $1', - 'cite_error_ref_numeric_key' => 'Неправильный вызов: ожидался нечисловой ключ', 'cite_error_ref_no_key' => '<ref> тиэк алҕаһа (Неправильный вызов): аата (күлүүһэ) ыйыллыбатах', 'cite_error_ref_too_many_keys' => '<ref> тиэк алҕаһа (Неправильный вызов): аата сыыһа ыйыллыбыт, эбэтэр наһаа элбэх аат суруллубут', 'cite_error_ref_no_input' => '<ref> тиэк алҕастаах (Неверный вызов): иһинээҕитэ сыыһа', @@ -1594,8 +1534,6 @@ අනීතික ඇසිරුම් යතුර. මෙය කිසිදින සිදුනොවිය යුතුය.', 'cite_error' => 'උපන්‍යාස දෝෂය: $1', - 'cite_error_ref_numeric_key' => 'අනීතික <ref> ටැගය; -නම සරල පූර්ණාංකයක් විය නොහැක. විස්තරශීලි ශිර්ෂයක් භාවිතා කරන්න', 'cite_error_ref_no_key' => 'අනීතික <ref> ටැගය; පෙළ විරහිත ආශ්‍රේය සඳහා නමක් තිබිය යුතුය', 'cite_error_ref_too_many_keys' => 'අනීතික <ref> ටැගය; @@ -1633,7 +1571,6 @@ 'cite_error_key_str_invalid' => 'Vnútorná chyba; neplatný $str', 'cite_error_stack_invalid_input' => 'Vnútorná chyba; neplatný kľúč zásobníka', 'cite_error' => 'Chyba citácie $1', - 'cite_error_ref_numeric_key' => 'Neplatné volanie; očakáva sa neceločíselný typ kľúča', 'cite_error_ref_no_key' => 'Neplatné volanie; nebol špecifikovaný kľúč', 'cite_error_ref_too_many_keys' => 'Neplatné volanie; neplatné kľúče, napr. príliš veľa alebo nesprávne špecifikovaný kľúč', 'cite_error_ref_no_input' => 'Neplatné volanie; nebol špecifikovaný vstup', @@ -1656,7 +1593,6 @@ 'cite_error_key_str_invalid' => 'Унутрашња грешка; лош $str и/или $key. Ово не би требало никад да се деси.', 'cite_error_stack_invalid_input' => 'Унутрашња грешка; лош кључ стека. Ово не би требало никад да се деси.', 'cite_error' => 'Грешка цитата: $1', - 'cite_error_ref_numeric_key' => 'Лоша ознака <ref>; име не може бити једноставни интеџер. Користи описни наслов.', 'cite_error_ref_no_key' => 'Лоша ознака <ref>; ref-ови без садржаја морају имати име.', 'cite_error_ref_too_many_keys' => 'Лоша ознака <ref>; лоша имена, односно много њих.', 'cite_error_ref_no_input' => 'Лоша ознака <ref>; ref-ови без имена морају имати садржај.', @@ -1676,7 +1612,6 @@ 'cite_error_key_str_invalid' => 'Internen Failer: ungultigen $str', 'cite_error_stack_invalid_input' => 'Internen Failer: uungultigen „name“-stack. Dit schuul eegentelk goarnit passierje konne.', 'cite_error' => 'Referenz-Failer $1', - 'cite_error_ref_numeric_key' => 'Uungultige -Ferweendenge: „name“ duur naan scheenen Taalenwäid weese, benutsje n beschrieuwenden Noome.', 'cite_error_ref_no_key' => 'Uungultige -Ferweendenge: „ref“ sunner Inhoold mout n Noome hääbe.', 'cite_error_ref_too_many_keys' => 'Uungultige -Ferweendenge: „name“ is uungultich of tou loang.', 'cite_error_ref_no_input' => 'Uungultige -Ferweendenge: „ref“ sunner Noome mout n Inhoold hääbe.', @@ -1709,7 +1644,6 @@ 'cite_error_key_str_invalid' => 'Internt fel; $str eller $key är ogiltiga. Det här borde aldrig hända.', 'cite_error_stack_invalid_input' => 'Internt fel; ogiltig nyckel i stacken. Det här borde aldrig hända.', 'cite_error' => 'Referensfel: $1', - 'cite_error_ref_numeric_key' => "Ogiltig <ref>-tag; parametern 'name' kan inte vara ett tal, använd ett beskrivande namn", 'cite_error_ref_no_key' => 'Ogiltig <ref>-tag; referenser utan innehåll måste ha ett namn', 'cite_error_ref_too_many_keys' => "Ogiltig <ref>-tag; ogiltiga parametrar, den enda tillåtna parametern är 'name'", 'cite_error_ref_no_input' => 'Ogiltig <ref>-tag; referenser utan namn måste ha innehåll', @@ -1733,7 +1667,6 @@ 'cite_error_key_str_invalid' => 'అంతర్గత పొరపాటు: తప్పుడు $str మరియు/లేదా $key. ఇది ఎప్పుడూ జరగకూడదు.', 'cite_error_stack_invalid_input' => 'అంతర్గత పొరపాటు: తప్పుడు స్టాక్ కీ. ఇది ఎప్పుడూ జరగకూడదు.', 'cite_error' => 'ఉదహరింపు పొరపాటు: $1', - 'cite_error_ref_numeric_key' => 'తప్పుడు <ref> టాగు; పేరు సరళ సంఖ్య అయివుండకూడదు, వివరమైన శీర్షిక వాడండి', 'cite_error_ref_no_key' => 'సరైన <ref> ట్యాగు కాదు; విషయం లేని ref లకు తప్పనిసరిగా పేరొకటుండాలి', 'cite_error_ref_too_many_keys' => 'సరైన <ref> ట్యాగు కాదు; తప్పు పేర్లు, ఉదాహరణకు మరీ ఎక్కువ', 'cite_error_ref_no_input' => 'సరైన <ref> ట్యాగు కాదు; పేరు లేని ref లలో తప్పనిసరిగా విషయం ఉండాలి', @@ -1752,7 +1685,6 @@ 'cite_error_key_str_invalid' => 'Хатои дохилӣ; $str ва/ё $key ғайримиҷоз. Ин хато набояд ҳаргиз рух диҳад.', 'cite_error_stack_invalid_input' => 'Хатои дохилӣ; клиди пушта ғайримиҷоз. Ин хато набояд ҳаргиз рух диҳад.', 'cite_error' => 'Хатои ёдкард: $1', - 'cite_error_ref_numeric_key' => 'Барчасби <ref> ғайримиҷоз; ном наметавонад як адад бошад, унвони возеҳтареро истифода кунед', 'cite_error_ref_no_key' => 'Барчасби <ref> ғайримиҷоз; ёдкардҳо бидуни мӯҳтаво бояд ном дошта бошанд', 'cite_error_ref_too_many_keys' => 'Барчасби <ref> ғайримиҷоз; номҳои ғайримиҷоз ё беш аз андоза', 'cite_error_ref_no_input' => 'Барчасби <ref> ғайримиҷоз; ёдкардҳои бидуни ном бояд мӯҳтаво дошта бошанд', @@ -1791,8 +1723,6 @@ неправильний $str і/або $key.', 'cite_error_stack_invalid_input' => 'Внутрішня помилка: неправильний ключ стека.', 'cite_error' => 'Помилка цитування: $1', - 'cite_error_ref_numeric_key' => 'Неправильний виклик <ref>: -назва не може містити тільки цифри.', 'cite_error_ref_no_key' => 'Неправильний виклик <ref>: порожній тег ref повинен мати параметр name.', 'cite_error_ref_too_many_keys' => 'Неправильний виклик <ref>: @@ -1829,7 +1759,6 @@ ciave de stack sbaglià. Sta roba no la dovarìa mai capitar.', 'cite_error' => 'Eror ne la funsion Cite $1', - 'cite_error_ref_numeric_key' => "Eror ne l'uso del marcator <ref>: el nome no'l pode mìa èssar un nùmaro intiero. Dòpara un titolo esteso", 'cite_error_ref_no_key' => "Eror ne l'uso del marcator <ref>: i ref vodi no i pol no verghe un nome", 'cite_error_ref_too_many_keys' => "Eror ne l'uso del marcator <ref>: nomi mìa validi (ad es. nùmaro massa elevà)", 'cite_error_ref_no_input' => "Eror ne l'uso del marcator <ref>: i ref che no gà un nome no i pol mìa èssar vodi", @@ -1854,7 +1783,6 @@ 'cite_error_key_str_invalid' => 'Lỗi nội bộ; $str và/hoặc $key không hợp lệ. Điều này không bao giờ nên xảy ra.', 'cite_error_stack_invalid_input' => 'Lỗi nội bộ; khóa xác định chồng bị sai. Đáng ra không bao giờ xảy ra điều này.', 'cite_error' => 'Lỗi chú thích: $1', - 'cite_error_ref_numeric_key' => 'Thẻ <ref> sai; tên không thể chỉ là số nguyên, hãy dùng tựa đề có tính miêu tả', 'cite_error_ref_no_key' => 'Thẻ <ref> sai; thẻ ref không có nội dung thì phải có tên', 'cite_error_ref_too_many_keys' => 'Thẻ <ref> sai; thông số tên sai, như, nhiều thông số tên quá', 'cite_error_ref_no_input' => 'Mã <ref> sai; thẻ ref không có tên thì phải có nội dung', @@ -1877,7 +1805,6 @@ 'cite_error_key_str_invalid' => 'Pöl ninik: $str e/u $key no lonöföl(s). Atos no sötonöv jenön.', 'cite_error_stack_invalid_input' => 'Pöl ninik; kumakik no lonöföl. Atos neai sötonöv jenön.', 'cite_error' => 'Saitamapöl: $1', - 'cite_error_ref_numeric_key' => 'Nem ela <ref> no lonöföl. Nem no kanon binädön te me numats; gebolös bepenami.', 'cite_error_ref_no_key' => 'Geb no lonöföl ela <ref>: els ref nen ninäd mutons labön nemi', 'cite_error_ref_too_many_keys' => 'El <ref> no lonöfon: labon nemis no lonöfikis, a. s. tumödikis', 'cite_error_ref_no_input' => 'El <ref> no lonöfon: els ref nen nem mutons labön ninädi', @@ -1893,8 +1820,6 @@ 'cite_desc' => 'לייגט צו און טאַגן, פֿאר ציטירונגען (אין הערות)', 'cite_croak' => 'טעות אין ציטירונג; $1: $2', 'cite_error' => 'ציטירן גרײַז: $1', - 'cite_error_ref_numeric_key' => 'גרײַזיגער <ref> טאַג; -נאמען טאר נישט זײַן קיין פשוטער נומער. ניצט א באשרײַבדיק קעפל', 'cite_error_ref_no_key' => 'אומגילדיגער <ref> טאַג; א רעפֿערענץ אָן תוכן מוז האבן א נאמען', 'cite_error_ref_too_many_keys' => 'אומגילטיגער <ref> טאַג; @@ -1914,7 +1839,6 @@ 'cite_error_key_str_invalid' => '內部錯誤; 無效嘅 $str', 'cite_error_stack_invalid_input' => '內部錯誤; 無效嘅堆疊匙', 'cite_error' => '引用錯誤 $1', - 'cite_error_ref_numeric_key' => '無效嘅呼叫; 需要一個非整數嘅匙', 'cite_error_ref_no_key' => '無效嘅呼叫; 未指定匙', 'cite_error_ref_too_many_keys' => '無效嘅呼叫; 無效嘅匙, 例如: 太多或者指定咗一個錯咗嘅匙', 'cite_error_ref_no_input' => '無效嘅呼叫; 未指定輸入', @@ -1935,7 +1859,6 @@ 'cite_error_key_str_invalid' => '内部错误;非法的 $str', 'cite_error_stack_invalid_input' => '内部错误;非法堆栈键值', 'cite_error' => '引用错误 $1', - 'cite_error_ref_numeric_key' => '无效呼叫;需要一个非整数的键值', 'cite_error_ref_no_key' => '无效呼叫;没有指定键值', 'cite_error_ref_too_many_keys' => '无效呼叫;非法键值,例如:过多或错误的指定键值', 'cite_error_ref_no_input' => '无效呼叫;没有指定的输入', @@ -1956,7 +1879,6 @@ 'cite_error_key_str_invalid' => '內部錯誤;非法的 $str', 'cite_error_stack_invalid_input' => '內部錯誤;非法堆疊鍵值', 'cite_error' => '引用錯誤 $1', - 'cite_error_ref_numeric_key' => '無效呼叫;需要一個非整數的鍵', 'cite_error_ref_no_key' => '無效呼叫;沒有指定鍵', 'cite_error_ref_too_many_keys' => '無效呼叫;非法鍵值,例如:過多或錯誤的指定鍵', 'cite_error_ref_no_input' => '無效呼叫;沒有指定的輸入', diff -U 3 -H -b -w -B -E -d -t -r -N -- Cite r44396/Cite_body.php Cite my manual merge/Cite_body.php --- Cite r44396/Cite_body.php 2008-10-05 00:00:07.000000000 +0100 +++ Cite my manual merge/Cite_body.php 2008-12-14 22:32:24.000000000 +0000 @@ -23,54 +23,42 @@ */ /** - * Datastructure representing input, in the format of: + * Datastructure representing input. + * It is an array of groups, so * - * array( - * 'user supplied' => array( - * 'text' => 'user supplied reference & key', - * 'count' => 1, // occurs twice - * 'number' => 1, // The first reference, we want - * // all occourances of it to - * // use the same number - * ), - * 0 => 'Anonymous reference', - * 1 => 'Another anonymous reference', - * 'some key' => array( - * 'text' => 'this one occurs once' - * 'count' => 0, - * 'number' => 4 - * ), - * 3 => 'more stuff' - * ); + * $mRefs = array(CITE_DEFAULT_GROUP => groupdata, "footnote" => groupdata, ...) * * - * This works because: - * * PHP's datastructures are guarenteed to be returned in the - * order that things are inserted into them (unless you mess - * with that) - * * User supplied keys can't be integers, therefore avoiding - * conflict with anonymous keys + * In turn, each groupdata element is an array of the form + * + * groupdata = array( + * 'id' => array( + * 'text' => (str) 'the text entered as the contents of the ', + * 'number' => (int) the position in the list of all references, named or not + * 'count' => (int) how many s link to this reference (so =1 if the + * ref is unnamed) + * ) + * ) + * + * 'id' is either the key prefixed by 'name:', or an integer generated when there is no key prefixed by "int:". + * + * NB: The text needs to be parsed recursively; the keys to mRefs (the group names) are NOT SAFE (escape), + * and the ids are NOT SAFE. * * @var array **/ var $mRefs = array(); /** - * Count for user displayed output (ref[1], ref[2], ...) + * Datastructure representing the [#] tags output to the page, holding the text, HTML id, and href of each + * one, to allow the actual markup to be made later after globbing together adjacent tags. * - * @var int - */ - var $mOutCnt = 0; - var $mGroupCnt = array(); - - /** - * Internal counter for anonymous references, separate from - * $mOutCnt because anonymous references won't increment it, - * but will incremement $mOutCnt + * Entries have the form + * array('id' => string, 'href' => string, 'text' => string, 'group' => string, 'number' => int). * - * @var int + * @var array */ - var $mInCnt = 0; + var $mRefDB = array(); /** * The backlinks, in order, to pass as $3 to @@ -82,6 +70,14 @@ var $mBacklinkLabels; /** + * The footnote labels used to produce the footnote symbols. + * After the list runs out, start repeating symbols. + * + * @var array + */ + var $mFootnoteLabels; + + /** * @var object */ var $mParser; @@ -94,13 +90,26 @@ */ var $mInCite = false; + /** + * These are the main styling variables for the links in the text, used so often + * in the parser faff that they are stored here. + * + * They fit together to make the link as "pre[[bra...cket]]post" or "prebra[[...,...,...]]cketpost". + */ + var $mPre, $mPost, $mBra, $mKet; + /**#@-*/ /** * Constructor */ function Cite() { + wfLoadExtensionMessages( 'Cite' ); $this->setHooks(); + $this->mPre = wfMsgForContentNoTrans( 'cite_reference_pre'); + $this->mPost = wfMsgForContentNoTrans( 'cite_reference_post'); + $this->mBra = wfMsgForContentNoTrans( 'cite_reference_pre_bracket'); + $this->mKet = wfMsgForContentNoTrans( 'cite_reference_post_bracket'); } /**#@+ @access private */ @@ -115,7 +124,7 @@ function ref( $str, $argv, $parser ) { wfLoadExtensionMessages( 'Cite' ); if ( $this->mInCite ) { - return htmlspecialchars( "$str" ); + return $this->error( 'cite_error_references_nested', htmlspecialchars( $str ) ); } else { $this->mInCite = true; $ret = $this->guardedRef( $str, $argv, $parser ); @@ -124,38 +133,34 @@ } } - function guardedRef( $str, $argv, $parser, $default_group=CITE_DEFAULT_GROUP ) { + function guardedRef( $str, $argv, $parser ) { $this->mParser = $parser; - # The key here is the "name" attribute. + # key is here the "name" attribute. list($key,$group) = $this->refArg( $argv ); + if ( $key === false ) { + //An error occured parsing the tags: probably some unknown options were passed in. + return $this->error( 'cite_error_ref_too_many_keys' ); + } + if( $str === '' ) { # . This construct is invalid if - # it's a contentful ref, but OK if it's a named duplicate and should - # be equivalent , for compatability with #tag. - if ( $key == false ) + # it's a contentful ref, but OK if it's a named duplicate, in which + # case it is equivalent to (needed for compatability with #tag). + if ( is_null( $key ) ) return $this->error( 'cite_error_ref_no_input' ); else $str = null; } - if( $key === false ) { - # TODO: Comment this case; what does this condition mean? - return $this->error( 'cite_error_ref_too_many_keys' ); - } - - if( $str === null and $key === null ) { - # Something like ; this makes no sense. + if( $key === '' ) { return $this->error( 'cite_error_ref_no_key' ); } - if( preg_match( '/^[0-9]+$/', $key ) ) { - # Numeric names mess up the resulting id's, potentially produ- - # cing duplicate id's in the XHTML. The Right Thing To Do - # would be to mangle them, but it's not really high-priority - # (and would produce weird id's anyway). - return $this->error( 'cite_error_ref_numeric_key' ); + if( is_null( $str ) and is_null ( $key ) ) { + # Something like ''; this makes no sense. + return $this->error( 'cite_error_ref_no_key' ); } if( preg_match( @@ -175,14 +180,14 @@ return $this->error( 'cite_error_included_ref' ); } - # Split these into groups. + #Put everything in a group. if( $group === null ) { - $group = $default_group; + $group = CITE_DEFAULT_GROUP; } if( is_string( $key ) or is_string( $str ) ) { # We don't care about the content: if the key exists, the ref - # is presumptively valid. Either it stores a new ref, or re- + # is presumably valid. Either it stores a new ref, or re- # fers to an existing one. If it refers to a nonexistent ref, # we'll figure that out later. Likewise it's definitely valid # if there's any content, regardless of key. @@ -200,27 +205,21 @@ * @static * * @param array $argv The argument vector - * @return mixed false on invalid input, a string on valid - * input and null on no input + * @return array(false,false) on invalid input, else an array with two values, 0=>$key, 1=>$group, + * with $key and $group NULL if not passed in argv. */ function refArg( $argv ) { - global $wgAllowCiteGroups; $cnt = count( $argv ); $group = null; $key = null; - if ( $cnt > 2 ) - // There should only be one key and one group - return false; - else if ( $cnt >= 1 ) { if ( isset( $argv['name'] ) ) { // Key given. - $key = Sanitizer::escapeId( $argv['name'] ); + $key = $argv['name']; unset( $argv['name']); --$cnt; } if ( isset( $argv['group'] ) ){ - if (! $wgAllowCiteGroups ) return array(false); //remove when groups are fully tested. // Group given. $group = $argv['group']; unset( $argv['group']); @@ -230,70 +229,37 @@ if ( $cnt == 0) return array ($key,$group); else - // Invalid key + // Invalid parameters return array(false,false); } - else - // No key - return array(null,$group); - } /** * Populate $this->mRefs based on input and arguments to * - * @param string $str Input from the tag - * @param mixed $key Argument to the tag as returned by $this->refArg() + * @param string $str Inner text from the ... tag, or null if none given + * @param mixed $key "name" argument to the tag, or null if none given + * @param string $group "group" argument to the tag, or CITE_DEFAULT_GROUP if none given * @return string */ - function stack( $str, $key = null, $group ) { + function stack( $str, $key, $group ) { if (! isset($this->mRefs[$group])) $this->mRefs[$group]=array(); - if (! isset($this->mGroupCnt[$group])) - $this->mGroupCnt[$group]=0; - if ( $key === null ) { - // No key - //$this->mRefs[$group][] = $str; - $this->mRefs[$group][] = array('count'=>-1, 'text'=>$str, 'key'=>++$this->mOutCnt); + if ( $key !== null ) $key = "name:$key"; + if ( $key !== null and isset( $this->mRefs[$group][$key] ) ) $number = $this->mRefs[$group][$key]['number']; + else $number = count( $this->mRefs[$group] ) + 1; + if ( $key === null ) $key = "int:$number"; - return $this->linkRef( $group, $this->mInCnt++ ); - } else if ( is_string( $key ) ) { - // Valid key - if ( ! isset( $this->mRefs[$group][$key] ) || ! is_array( $this->mRefs[$group][$key] ) ) { - // First occurance - $this->mRefs[$group][$key] = array( - 'text' => $str, - 'count' => 0, - 'key' => ++$this->mOutCnt, - 'number' => ++$this->mGroupCnt[$group] - ); - $this->mInCnt++; - return - $this->linkRef( - $group, - $key, - $this->mRefs[$group][$key]['key']."-".$this->mRefs[$group][$key]['count'], - $this->mRefs[$group][$key]['number'], - "-".$this->mRefs[$group][$key]['key'] - ); + if ( isset( $this->mRefs[$group][$key] ) ) { + //We have linked to this reference before + if ( $this->mRefs[$group][$key]['text'] === null ) $this->mRefs[$group][$key]['text'] = $str; + $count = ++$this->mRefs[$group][$key]['count']; } else { - // We've been here before - if ( $this->mRefs[$group][$key]['text'] === null && $str !== '' ) { - // If no text found before, use this text - $this->mRefs[$group][$key]['text'] = $str; - }; - return - $this->linkRef( - $group, - $key, - $this->mRefs[$group][$key]['key']."-".++$this->mRefs[$group][$key]['count'], - $this->mRefs[$group][$key]['number'], - "-".$this->mRefs[$group][$key]['key'] - ); } + //This is a brand new reference + $this->mRefs[$group][$key] = array('text'=>$str, 'number'=>$number, 'count'=>1); + $count = 1; } - - else - $this->croak( 'cite_error_stack_invalid_input', serialize( array( $key, $str ) ) ); + return $this->referencePlaceText($group, $key, $number, $count); } /** @@ -306,11 +272,7 @@ function references( $str, $argv, $parser ) { wfLoadExtensionMessages( 'Cite' ); if ( $this->mInCite ) { - if ( is_null( $str ) ) { - return htmlspecialchars( "" ); - } else { - return htmlspecialchars( "$str" ); - } + return $this->error( 'cite_error_references_nested' ); } else { $this->mInCite = true; $ret = $this->guardedReferences( $str, $argv, $parser ); @@ -319,24 +281,19 @@ } } - function guardedReferences( $str, $argv, $parser, $group = CITE_DEFAULT_GROUP ) { - global $wgAllowCiteGroups; - + function guardedReferences( $str, $argv, $parser ) { $this->mParser = $parser; if ( strval( $str ) !== '' ) return $this->error( 'cite_error_references_invalid_input' ); - - if ( isset( $argv['group'] ) and $wgAllowCiteGroups) { + $group = CITE_DEFAULT_GROUP; + if ( isset( $argv['group'] ) ) { $group = $argv['group']; unset ($argv['group']); - } - if ( count( $argv ) && $wgAllowCiteGroups ) - return $this->error( 'cite_error_references_invalid_parameters_group' ); - elseif ( count( $argv ) ) + if ( count( $argv ) ) return $this->error( 'cite_error_references_invalid_parameters' ); else return $this->referencesFormat($group); @@ -355,10 +312,12 @@ wfProfileIn( __METHOD__ .'-entries' ); $ent = array(); foreach ( $this->mRefs[$group] as $k => $v ) - $ent[] = $this->referencesFormatEntry( $k, $v ); + $ent[] = $this->referencesFormatEntry( $k, $v, $group ); - $prefix = wfMsgForContentNoTrans( 'cite_references_prefix' ); - $suffix = wfMsgForContentNoTrans( 'cite_references_suffix' ); + if ( $group == "footnote" ) $footnote = '_footnote'; + else $footnote = ''; + $prefix = wfMsgForContentNoTrans( "cite{$footnote}_references_prefix" ); + $suffix = wfMsgForContentNoTrans( "cite{$footnote}_references_suffix" ); $content = implode( "\n", $ent ); wfProfileOut( __METHOD__ .'-entries' ); @@ -370,7 +329,6 @@ //done, clean up so we can reuse the group unset ($this->mRefs[$group]); - unset($this->mGroupCnt[$group]); return $ret; } @@ -378,59 +336,40 @@ /** * Format a single entry for the referencesFormat() function * - * @param string $key The key of the reference - * @param mixed $val The value of the reference, string for anonymous - * references, array for user-suppplied + * @param string $key The key of the reference, or the number + * @param array $val array( + * 'text' => (str) 'the text entered as the contents of the ', + * 'number' => (int) the position in the list of all references, named or not + * 'count' => (int) how many s link to this reference (so =1 if the + * ref is unnamed) + * ) * @return string Wikitext */ - function referencesFormatEntry( $key, $val ) { - // Anonymous reference - if ( ! is_array( $val ) ) - return - wfMsgForContentNoTrans( - 'cite_references_link_one', - $this->referencesKey( $key ), - $this->refKey( $key ), - $val - ); - else if ($val['text']=='') return - wfMsgForContentNoTrans( - 'cite_references_link_one', - $this->referencesKey( $key ), - $this->refKey( $key, $val['count'] ), - $this->error( 'cite_error_references_no_text', $key ) - ); - if ( $val['count'] < 0 ) - return - wfMsgForContentNoTrans( - 'cite_references_link_one', - $this->referencesKey( $val['key'] ), - #$this->refKey( $val['key'], $val['count'] ), - $this->refKey( $val['key'] ), + function referencesFormatEntry( $key, $val, $group ) { + if ($group == "footnote") $f = wfMsgForContentNoTrans( 'cite_references_footnote_prefix', + $this->referencesFormatEntryFootnoteLabel($val['number'])); + else $f = ''; - ( $val['text'] != '' ? $val['text'] : $this->error( 'cite_error_references_no_text', $key ) ) - ); - // Standalone named reference, I want to format this like an - // anonymous reference because displaying "1. 1.1 Ref text" is - // overkill and users frequently use named references when they - // don't need them for convenience - else if ( $val['count'] === 0 ) + preg_match( '/(name|int):(.*)/', $key, $keyname ); + $keyname = $keyname[2]; //No need to escape; we are outputting wikitext, not HTML. + + if ( $val['count'] < 2 ) return wfMsgForContentNoTrans( 'cite_references_link_one', - $this->referencesKey( $key ."-" . $val['key'] ), - #$this->refKey( $key, $val['count'] ), - $this->refKey( $key, $val['key']."-".$val['count'] ), - ( $val['text'] != '' ? $val['text'] : $this->error( 'cite_error_references_no_text', $key ) ) + $this->referencesKey( $group, $val['number'] ), + $this->refKey( $group, $val['number'], $val['count'] ), + ( $val['text'] != '' ? $val['text'] : $this->error( 'cite_error_references_no_text', $keyname ) ), + $f ); // Named references with >1 occurrences else { $links = array(); //for group handling, we have an extra key here. - for ( $i = 0; $i <= $val['count']; ++$i ) { + for ( $i = 1; $i <= $val['count']; ++$i ) { $links[] = wfMsgForContentNoTrans( - 'cite_references_link_many_format', - $this->refKey( $key, $val['key']."-$i" ), + 'cite_references_link_many_format',//[[#$1|$2]] + $this->refKey( $group, $val['number'], $i ), $this->referencesFormatEntryNumericBacklinkLabel( $val['number'], $i, $val['count'] ), $this->referencesFormatEntryAlternateBacklinkLabel( $i ) ); @@ -439,10 +378,11 @@ $list = $this->listToText( $links ); return - wfMsgForContentNoTrans( 'cite_references_link_many', - $this->referencesKey( $key ."-" . $val['key'] ), + wfMsgForContentNoTrans( 'cite_references_link_many',//
  • $4↑ $2 $3
  • + $this->referencesKey( $group, $val['number'] ), $list, - ( $val['text'] != '' ? $val['text'] : $this->error( 'cite_error_references_no_text', $key ) ) + ( $val['text'] != '' ? $val['text'] : $this->error( 'cite_error_references_no_text', $keyname ) ), + $f ); } } @@ -482,8 +422,8 @@ if ( !isset( $this->mBacklinkLabels ) ) { $this->genBacklinkLabels(); } - if ( isset( $this->mBacklinkLabels[$offset] ) ) { - return $this->mBacklinkLabels[$offset]; + if ( isset( $this->mBacklinkLabels[$offset - 1] ) ) { + return $this->mBacklinkLabels[$offset - 1]; } else { // Feed me! return $this->error( 'cite_error_references_no_backlink_label' ); @@ -491,68 +431,82 @@ } /** + * Generate a footnote symbol given an offset + * + * @param int $value The offset + * + * @return string + */ + function referencesFormatEntryFootnoteLabel( $value ) { + if ( !isset( $this->mFootnoteLabels ) ) { + $this->genFootnoteLabels(); + } + return str_repeat($this->mFootnoteLabels[($value - 1) % count($this->mFootnoteLabels)], + ($value - 1) / count($this->mFootnoteLabels) + 1); + } + + /** * Return an id for use in wikitext output based on a key and - * optionally the number of it, used in , not - * (since otherwise it would link to itself) + * optionally the number of it, used to link from to * * @static * - * @param string $key The key - * @param int $num The number of the key - * @return string A key for use in wikitext + * @param int $number The number of the reference (not ref) + * @param int $count The index into all the refs pointing to this reference + * @return string An id for use in markup, links */ - function refKey( $key, $num = null ) { + function refKey( $group, $number, $count ) { $prefix = wfMsgForContent( 'cite_reference_link_prefix' ); $suffix = wfMsgForContent( 'cite_reference_link_suffix' ); - if ( isset( $num ) ) - $key = wfMsgForContentNoTrans( 'cite_reference_link_key_with_num', $key, $num ); - - return $prefix . $key . $suffix; + return Sanitizer::escapeId( $prefix . $group . '::' . $number . '::' . $count . $suffix ); } /** * Return an id for use in wikitext output based on a key and - * optionally the number of it, used in , not - * (since otherwise it would link to itself) + * optionally the number of it, used to link from to * * @static * - * @param string $key The key - * @param int $num The number of the key - * @return string A key for use in wikitext + * @param int $number The number of the reference (not ref) + * @return string An id for use in markup, links */ - function referencesKey( $key, $num = null ) { + function referencesKey( $group, $number ) { $prefix = wfMsgForContent( 'cite_references_link_prefix' ); $suffix = wfMsgForContent( 'cite_references_link_suffix' ); - if ( isset( $num ) ) - $key = wfMsgForContentNoTrans( 'cite_reference_link_key_with_num', $key, $num ); - - return $prefix . $key . $suffix; + return Sanitizer::escapeId( $prefix . $group . '::' . $number . $suffix ); } /** - * Generate a link ( element from a key + * Generate a link (...) for the element from a key * and return XHTML ready for output * - * @param string $key The key for the link + * @param string $group The group the ref belongs to + * @param string $key The key for the link, either a name or a generated number + * @param int $number The number of the reference (not ref) * @param int $count The index of the key, used for distinguishing * multiple occurances of the same key - * @param int $label The label to use for the link, I want to - * use the same label for all occourances of - * the same named reference. * @return string */ - function linkRef( $group, $key, $count = null, $label = null, $subkey = '' ) { + function referencePlaceText( $group, $key, $number, $count ) { global $wgContLang; - return - $this->parse( - wfMsgForContentNoTrans( - 'cite_reference_link', - $this->refKey( $key, $count ), - $this->referencesKey( $key . $subkey ), - (($group == CITE_DEFAULT_GROUP)?'':"$group ").$wgContLang->formatNum( is_null( $label ) ? ++$this->mGroupCnt[$group] : $label ) - ) - ); + + if ( $group == "footnote" ) { + $text = $this->referencesFormatEntryFootnoteLabel($number); + } else { + $groupname = ( $group == CITE_DEFAULT_GROUP ) ? ( '' ) : ( htmlspecialchars( $group )." " ); + $text = $groupname.$wgContLang->formatNum( $number ); + } + + //What is happening here: the actual proper wikitext for the [#] tag is made later, when we handle globbing. + //Here, we make an entry in the big global array of all [#] tags in the article, and put a placeholder index + //in the actual wikitext, to be resolved later. + $this->mRefDB[] = array( 'id' => $this->refKey( $group, $number, $count ), + 'href' => $this->referencesKey( $group, $number ), + 'text' => $text, + 'number' => $number, + 'group' => $group, ); + end($this->mRefDB); + return "".key($this->mRefDB).""; } /** @@ -649,6 +603,16 @@ } /** + * Generate the footnote labels, specified as a whitespace-separated list. + */ + function genFootnoteLabels() { + wfProfileIn( __METHOD__ ); + $text = wfMsgForContentNoTrans( 'cite_references_footnote_labels' ); + $this->mFootnoteLabels = preg_split( '#[\n\t ]#', $text ); + wfProfileOut( __METHOD__ ); + } + + /** * Gets run when Parser::clearState() gets run, since we don't * want the counts to transcend pages and other instances */ @@ -658,10 +622,8 @@ if($this->mInCite) return true; - $this->mGroupCnt = array(); - $this->mOutCnt = -1; - $this->mInCnt = 0; $this->mRefs = array(); + //$this->mRefDB = array(); return true; } @@ -676,6 +638,17 @@ $wgParser->setHook( 'references' , array( &$this, 'references' ) ); $wgHooks['ParserClearState'][] = array( &$this, 'clearState' ); + $wgHooks['ParserBeforeTidy'][] = array(&$this, 'referenceMerge'); + } + + /** + * This function is a processor which scans the page for any processed ref tags and merges + * adjacent ones, to create a neater apperance. + */ + function referenceMerge(&$parser, &$text) { + //This regexp really is robust, but relies on the properties of the id validation. Note this must be greedy. + $text = preg_replace_callback("#((?>[\d]*))+#", array(&$this,'callbackMerge'), $text); + return true; } /** @@ -708,6 +681,84 @@ wfDebugDieBacktrace( wfMsgForContent( 'cite_croak', $this->error( $error ), $data ) ); } + function callbackMerge($merge) { + $keys = preg_split( '#(()?|)#' , $merge[0], -1, PREG_SPLIT_NO_EMPTY); + //Now we have an array $keys holding the internal mRefDB id of the refs in this glob. + if ( count($keys) == 0 ) return $this->croak('Somehow matched a ref, but found no key', 'callbackMerge'); + if ( count($keys) == 1 ) { + $ref = $this->mRefDB[(int)$keys[0]]; + return "{$this->mPre}{$this->mBra}{$ref['text']}{$this->mKet}{$this->mPost}"; + } //else we must split the input up and do some globbing + + $refs; + foreach ( $keys as $key ) { + $ref = $this->mRefDB[(int)$key]; + $refs[$ref['group']][$ref['number']] = $ref; + } + + return $this->referenceFormat( $refs ); + } + + /** + * A presentational function which takes an array indexed by group, each element holding all the refs of + * that group in the current glob. Some sorting magic should be done and the final linked and prettified + * markup output. This is a nasty function and has lots of branches just to place commas in the right place. + * + * @param array $refs The array of arrays of refs + */ + function referenceFormat($refs) { + $comma = wfMsgForContentNoTrans('cite_references_link_nearseparator'); + $dash = wfMsgForContentNoTrans('cite_references_link_farseparator'); + + //We have an array refs holding the refs separated out into groups, and each group has its refs held by number. + //We just have to sort, and run a globbing function to insert commas and dashes correctly. + //We will not sort the groups (leave them in the order they came). + $output = "{$this->mPre}{$this->mBra}"; + //The text to put before new groups; initially empty, then $comma forever after. + $first = ''; + foreach ($refs as $groupname => $group) { + ksort($group); + //The number of the last thing actually printed; -10 at the start of a new group + $last = -10; + + //First run: we split our array of numbers into runs, with the indices grouped in $dashing. + unset( $dashing ); + foreach ( $group as $number => $ref) { + if ( $number == $last + 1 ) $dashing[count( $dashing ) - 1][] = $number; + else $dashing[][] = $number; + $last = $number; + } + + //Second run: now we print out the groups, putting in dashes for runs of more than three. + foreach ( $dashing as $dashinggroup ) { + if ( $groupname == 'footnote' or count( $dashinggroup ) < 3 ) {//We use just commas + foreach ( $dashinggroup as $number ) { + $output .= "$first{$group[$number]['text']}"; + $first = $comma; + } + } else {//We are dashing this group + //Start and end of this run of consecutive refs. + $start = $group[$dashinggroup[0]]; + $end = $group[$dashinggroup[count($dashinggroup) - 1]]; + + $output .= "$first{$start['text']}$dash"; + $first = $comma; + + for ( $i = $dashinggroup[0] + 1; $i < $dashinggroup[count( $dashinggroup ) - 1]; ++$i ) { + $output .= ""; + } + + $output .= "{$end['text']}"; + } + } + } + $output .= "{$this->mKet}{$this->mPost}"; + return $output; + } + /**#@-*/ } diff -U 3 -H -b -w -B -E -d -t -r -N -- Cite r44396/citeParserTests.txt Cite my manual merge/citeParserTests.txt --- Cite r44396/citeParserTests.txt 2008-11-17 22:00:08.000000000 +0000 +++ Cite my manual merge/citeParserTests.txt 2008-12-14 22:28:37.000000000 +0000 @@ -4,12 +4,14 @@ references !! endhooks +##NB: all descriptions match the regex ", no !! input Wikipedia rocks!Proceeds of Rockology, vol. XXI !! result -

    Wikipedia rocks![1] +

    Wikipedia rocks![1]

    !! end @@ -20,9 +22,9 @@ !! result -

    Wikipedia rocks![1] +

    Wikipedia rocks![1]

    -
    1. Proceeds of Rockology, vol. XXI
    +
    1. Proceeds of Rockology, vol. XXI
    !! end @@ -41,9 +43,9 @@ !! result -

    Templating[1] +

    Templating[1]

    -
    1. A simple template.
    +
    1. A simple template.
    !! end @@ -54,9 +56,9 @@ !! result -

    Templating[1] +

    Templating[1]

    -
    1. {{simple template}}
    +
    1. {{simple template}}
    !! end @@ -92,9 +94,9 @@ !! result -

    Templating[1] +

    Templating[1]

    -
    1. Text
    +
    1. Text
    !! end @@ -107,7 +109,7 @@ !! result -

    [1] +

    [1]

    @@ -118,7 +120,7 @@ -
    1. one
    +
    1. one
    !! end @@ -127,7 +129,7 @@ !! input {{REVISIONID}}elite !! result -

    1337[1] +

    1337[1]

    !! end @@ -141,7 +143,7 @@ !! end !! test -Blank ref followed by ref with content +Blank followed by with content !! input @@ -149,15 +151,15 @@ !! result -

    [1] -

    [1] +

    [1] +

    [1]

    -
    1. 1.0 1.1 content
    +
    1. 1.1 1.2 content
    !! end !! test -Regression: non-blank ref "0" followed by ref with content +Regression: non-blank "0" followed by with content !! input 0 @@ -165,15 +167,15 @@ !! result -

    [1] -

    [1] +

    [1] +

    [1]

    -
    1. 1.0 1.1 0
    +
    1. 1.1 1.2 0
    !! end !! test -Regression sanity check: non-blank ref "1" followed by ref with content +Regression sanity check: non-blank "1" followed by with content !! input 1 @@ -181,75 +183,108 @@ !! result -

    [1] -

    [1] +

    [1] +

    [1]

    -
    1. 1.0 1.1 1
    +
    1. 1.1 1.2 1
    !! end !! test -Ref names containing a number + names containing a number !! input One Two Three +Four !! result -

    [1] -[2] -[3] +

    [1] +[2] +[3] +[4]

    -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    +
    1. One
    2. +
    3. Two
    4. +
    5. Three
    6. +
    7. Four
    !! end !! test -Erroneous refs +Erroneous s and s !! input -Zero +==Ref: We can get things wrong either with the name, the group, the text, or extra parameters.== -Also zero, but differently! (Normal ref) +Firstly, extra parameters: stuff +The parser picks up problems like this for us: - +Null text is false without a name: +Empty text is treated the same: - +The group can be anything (so this is not an error): good - +The name cannot be absent if the string is empty: +The name must not be an empty string: bad +==References: we need to make sure that no parameters appart from 'group' are accepted, and no text== I'm a references with something to say! - + + +text text + +==(Tester tag to check output)== !! result -

    Cite error: Invalid <ref> tag; -name cannot be a simple integer. Use a descriptive title -

    [1] -

    Cite error: Invalid <ref> tag; +

    [edit] Ref: We can get things wrong either with the name, the group, the text, or extra parameters.

    +

    Firstly, extra parameters: Cite error: Invalid <ref> tag; +invalid names, e.g. too many Cite error: Invalid <ref> tag; +invalid names, e.g. too many Cite error: Invalid <ref> tag; +invalid names, e.g. too many +The parser picks up problems like this for us: [1] +

    Null text is false without a name: Cite error: Invalid <ref> tag; +refs with no content must have a nameCite error: Invalid <ref> tag; refs with no content must have a name -

    [2] -

    [3] -

    Cite error: Invalid <references> tag; +Empty text is treated the same: Cite error: Invalid <ref> tag; +refs with no name must have contentCite error: Invalid <ref> tag; +refs with no name must have content +

    The group can be anything (so this is not an error): [2] +

    The name cannot be absent if the string is empty: [3] +The name must not be an empty string: Cite error: Invalid <ref> tag; +refs with no content must have a name +

    +

    [edit] References: we need to make sure that no parameters appart from 'group' are accepted, and no text

    +

    Cite error: Invalid <references> tag; no input is allowed. Use <references />

    Cite error: Invalid <references> tag; no parameters are allowed. +Use <references /> Cite error: Invalid <references> tag; +no parameters are allowed. Use <references /> +Cite error: Invalid <references> tag; +no parameters are allowed. +Use <references /> Cite error: Invalid <references> tag; +no parameters are allowed. +Use <references /> +

    Cite error: Invalid <references> tag; +no input is allowed. Use <references /> Cite error: Invalid <references> tag; +no input is allowed. Use <references />

    -
    1. Also zero, but differently! (Normal ref)
    2. -
    3. Cite error: Invalid <ref> tag; -no text was provided for refs named bar
    4. -
    5. Cite error: Invalid <ref> tag; -no text was provided for refs named blankwithnoreference
    +

    [edit] (Tester tag to check output)

    +
    1. Cite error: Invalid <ref> tag; +no text was provided for refs named baz
    2. +
    3. good
    4. +
    5. Cite error: Invalid <ref> tag; +no text was provided for refs named correct
    !! end !! test -Simple , with in group +Simple , with , in group !! input Wikipedia rocks!Proceeds of Rockology, vol. XXI Wikipedia rocks!Proceeds of Rockology, vol. XXI @@ -257,32 +292,87 @@ !! result -

    Wikipedia rocks![1] -Wikipedia rocks![note 1] +

    Wikipedia rocks![1] +Wikipedia rocks![note 1]

    -
    1. Proceeds of Rockology, vol. XXI
    -
    1. Proceeds of Rockology, vol. XXI
    +
    1. Proceeds of Rockology, vol. XXI
    +
    1. Proceeds of Rockology, vol. XXI
    !! end !! test -Simple , with in group, with groupname in chinese +Simple , with in group, with groupnames in chinese and containing escape characters !! input -AAAref aBBBnote bCCCref c +AAAref aBBBnote bCCCref cDDDtestEEEtest ;refs ;notes +;escape + !! result -

    AAA[参 1]BBB[注 1]CCC[参 2] +

    AAA[参 1]BBB[注 1]CCC[参 2]DDD[-:%A_\/& 1]EEE[-:%A_\/& 2]

    refs
    -
    1. ref a
    2. -
    3. ref c
    +
    1. ref a
    2. +
    3. ref c
    notes
    -
    1. note b
    +
    1. note b
    +
    escape +
    +
    1. test
    2. +
    3. test
    + +!! end + +!! test +s using special footnote symbols +!! input +footnote aaa +footnote bbb + + +!! result +

    footnote a[*] +footnote b[†] +

    +
    1. *
        aa
    2. +
    3.   bb
    + +!! end + +!! test +Comprehensive test of globbing, using every feature +!! input + + + + + + + + + + + + + + + + +!! result +

    [1, 2] +

    [13] +

    [1, 2, 4] +

    [1, 35] +

    [*, ] +

    [*, , ] +

    [*, , ] +

    [*, , , §] +

    [1, 35, *, , , §] +

    !! end