Wikipedia:Landsbybrønden/Opdatering af Modul:Citation-CS1 og masse-ensretning

Fra Wikipedia, den frie encyklopædi

Opdatering af Modul:Citation-CS1 og masse-ensretning[rediger kildetekst]

Jeg har 2 forskellige ting i dette opslag. De har principielt ikke noget med hinanden at gøre, men i praksis så har de det alligevel.

  1. Det ene er, at jeg gerne vil opdatere Modul:Citation/CS1 og jeg har derfor kopieret de engelske dele til de tilsvarende danske sandkasser. Fx Modul:Citation/CS1/sandkasse.
  2. Det andet er, at jeg foreslår en masseensretning på dawiki. Fx hvis en værdi i et felt kan være både Ja, ja, J, j, OK, ok og ok. Så foreslår jeg, at vi retter dem til det fx ok. Det kan også være forskellige skrivemåder nu en bot alligevel er i gang med at rette artiklerne. Så hvis vi fx både kan skrive % og pct., så retter vi det til den ene værdi.
Baggrunden for forslagene

Baggrunden er at jf. Wikipedia:Landsbybrønden/Brug archive.org så har det været lidt kompliceret at få Bruger:InternetArchiveBot (IABot) til at køre på dawiki. Bruger:Weblars har gjort en kæmpe indsats og fik det til at virke.

Da Weblars p.t. desværre ikke er aktiv, så har jeg selv forsøgt mig med at kigge på modulet. Jeg synes ikke det er særlig let at finde rundt i og ændringerne er ikke dokumenteret samlet – i alt fald ikke et sted jeg kan finde.

Jeg har skrevet et opslag på Moduldiskussion:Citation/CS1#Opdatering_2021_pga_IABot i håb om at der lige kom en kodenørd forbi og ville fixe det hele. Men jeg tænker, at de fleste ligesom mig tænker ”Uh, det har jeg ikke lyst til at pille ved!”.

Men jeg kom frem til, at det bedste nok var at hente alle modulerne igen og starte forfra på tilpasningerne. Så det har jeg gjort. Mange af tilpasningerne kan jeg heldigvis genbruge fra det eksisterende modul. Så det er ikke så slemt, som det lyder.

Jeg har så skrevet med en af hoved-kode-nørderne på det engelske modul (Trappist the monk) og munken synes at det lød spændende at jeg ville starte forfra og forsøge at dokumentere ændringerne. Så munken vil gerne hjælpe (jeg måtte dog så meget gerne hjælpe med at beskrive ændringerne, så andre wikier har en guide til hvis de vil gøre det samme). Fx skulle vi lave en særlig tilpasning fordi maj er på 3 bogstaver hvilket er det samme som når man forkorter måneder (fx feb). Det bliver nu fanget automatisk af koden, så vi ikke behøver at lave denne tilpasning. I Danmark skriver vi punktum i datoer fx 2. maj 2021 så derfor skal vi have en særlig ['d.My'] og da denne også bruges i Norge og Finland samt på Færøerne, så ville det jo være smart, at koden på enwiki understøtter det så man kan slå det til ved fjerne udkommenteringen et par steder.

Men der er stadig mange ting, der skal tilpasses.

Forslag om at genimportere modulet

Modulet virker p.t. men IABot fungerer ikke optimalt sammen med modulet og de danske skabeloner. Det viser sig, at kombinationen af tilpasninger af modulet gør, at botten og modulet og {{Cite web}} (og formentlig andre skabeloner) opfatter koden forskelligt.

Det er ret uoverskueligt at få det rettet og det er svært at finde nogen, der har lyst til at hjælpe fordi modulet på dawiki er specialtilpasset og bygger på en gammel version af det engelske modul.

Jeg tænker, at det bedste derfor er at genimportere modulet. På den måde får vi de seneste funktioner med og jeg tænker også at det bliver lettere at vedligeholde modulet, {{Cite web}} og alle de andre skabeloner, der bruger modulet.

Hvis vi genimporterer modulet, så er der brug for at oversætte en række felter mv. igen. Det er så her mit næste forslag (nedenfor) kommer ind i billedet. For vi kan enten besluttet at vi bruger de engelske navne (og undlader at oversætte) eller også at vi oversætter til dansk fordi det er den danske Wikipedia. Vi kan også beslutte, at vi tillader fx norske og svenske navne fordi det gør det lettere at kopiere artikler mv. fra disse wikier. Men det øger mængden af tilpasninger vi skal foretage.

Jeg vil derfor gerne høre om der er stemning til at importere modulet igen?

Hvis ja, er der så nogle ting vi gerne vil gøre anderledes denne gang?

Forslag om at masse-ensretning

Som nævnt så virker modulet p.t. men IABot og modulet og {{Cite web}} opfatter koden forskelligt. Problemet er tilsyneladende at man på et tidspunkt har rettet |dead-url= til fordel for |url-status=.

Som det danske modul er sat op, så skriver IABot ”yes” hvis URL’en er død. Men {{Cite web}} opfatter ”yes” som at URL’en er levende. Det betyder faktisk at yes og no giver samme resultat hvilket ikke er logisk.

Jeg foreslår derfor, at vi laver en masse-ensretning af værdierne til fx ”live”, ”dead”, ”usurped”. Men det betyder, at vi skal rette måske 40.000 sider (igen). Det havde selvfølgelig været bedre at have opdaget det noget før, men det gjorde vi altså ikke. Eller hvis nogen havde opdaget det, så undlod de at fortælle om det.

Da enwiki og IABot bruger |url-status= hvor man skal svare på spørgsmålet hvilken status har URL’en, så giver det os kun problemer, at vi har |dead-url=, hvor man skal svare på om URL’en er død. For hvordan skal man så svare, hvis siden er blevet overtaget af en anden?

Jeg foreslår derfor, at vi retter alle felterne til, så vi bruger samme som enwiki. Dvs. vi fjerne udgåede felter og tilføjer manglende felter.

Derudover skal vi så som nævnt beslutte om vi vil tillade engelske, danske, svenske, norske, kinesiske feltnavne. Jeg mener helt klart at vi skal tillade engelske navne. Jeg kan også lokkes til at tillade danske. Men jeg synes at vi skal fjerne alle andre sprog. Hvis vi alligevel skal rette 40.000 sider, så synes jeg vi skal overveje, om der er andre skabeloner og andre ting vil gerne vil rette nu hvor en bot alligevel retter.

Som nævnt kan vi fx brugen af ”%” og ”pct.” fra den ene til den anden hvis der er stemning for det. Der er dog nogle krav:

  1. Det skal kunne gøres med en bot, så det skal kunne afgøres fuldautomatisk. Dvs. det skal være korrekt i 100 % af tilfældene at rette fra A til B. Eller som minimum korrekt i fx 999 ud af 1.000 gange.
  2. Det må ikke være kontroversielle ændringer. Så ikke noget med at rette fx Holland til Nederlandene.

Der er fx nogen der mener, at man bør skrive navne på skabelonerne med stort begyndelsesbogstav men alle felterne med lille begyndelsesbogstav. Der er også nogen der mener at det bedste er at skrive mellemrum før | og ingen mellemrum før/efter =. Fx {{Skabelon |felt 1=blah |felt 2=blaaaaaah}}.

Det kunne også være at nogen mener, at når man skriver overskrifter == Foo ==, så skal det være med mellemrum mellem == og selve teksten og evt. altid med en blank linke før teksten overfor og ingen blank linje efter overskriften. Den slags kosmetiske ændringer vil man jo normalt ikke lave bare for at ensrette. Men nu man alligevel skal rette, så kunne det måske være interessant.

Jeg ved ikke om der er nogle andre ændringer, det vil være muligt eller hensigtsmæssig at rette med en bot. Men nu er der i alt fald mulighed for at komme med forslaget hvis nogen har en idé. --MGA73 (diskussion) 2. maj 2021, 12:56 (CEST)[svar]

Kommentarer mht. modul og ensretning[rediger kildetekst]

Jeg har oprettet en underoverskrift for at gøre det lettere at kommentere. Jeg håber, at der er nogle, der vil byde ind, for modulet er kompliceret og det vil være godt med 2, 4 eller 30 ekstra øjne til at kigge på koden og hjælpe med at teste og rapportere eventuelle problemer. --MGA73 (diskussion) 2. maj 2021, 12:56 (CEST)[svar]

Det vil jeg egentlig gerne hjælpe med. Dog - jeg kender både Lua og da-wiki, men alligevel forekommer det mig noget uklart hvordan det egentlig hænger sammen med moduler og bots osv. Findes der en intro - gerne på engelsk, også som beskrives wiki's arkitektur "under the hood". Jeg er mest Windows mand, så der er mange Linux ting jeg ikke har så meget erfaring med. --Honymand (diskussion) 2. maj 2021, 14:45 (CEST)[svar]
@Honymand: Det er bare fantastisk! Jeg har hidtil holdt mig væk fra Lua. Når jeg har brugt min egen bot, så har jeg taget udgangspunkt i det der står på den enkelte wikiside. Altså en slags simpel søg og erstat. Altså fx find "status=ja" og ret til "status=live". Udfordringerne kommer så når der både kan bruges store og små bogstaver og med og uden mellemrum omkring = og når ja også kan være j, yes eller y. Det gør kodningen besværlig, men dog mulig fordi jeg jo kender til både engelsk og dansk.
Modulet er så sat op til at det kan forstå ja, j, yes, y, dead, død, live osv. med store og små bogstaver. Det udnytter IABot så den ikke behøver at kende til spansk, fransk, russisk, kinesisk, dansk osv. Så den spørger modulet hvilken værdi status er og så siger modulet at status = dead (på engelsk). Når botten så har fået svaret, så slår den op i konfigurationen i modulet og tjekker hvordan dawiki foretrækker at "dead" skal se ud. Det er så blevet sat op som "yes".
Hvis opsætningen er ufuldstændig kan IABot muligvis på en eller anden måde "gætte" hvad det mest sandsynlige er. Så hvis vi bruger "ok" så tænker botten at "ok" sandsynligvis betyder "live".
Jeg har dog sat IABot på pause mens vi diskuterer hvordan vi gerne vil have opsætningen og hvilke værdier vi synes skal betyde hvad. Jeg tænker, at det vil blive endnu mere rodet, hvis vi sætter en bot til at rette på den ene måde mens IABot stadig tror, at vi vil bruge den gamle måde. Så derfor er step 1 at beslutte opsætningen, step 2 at rette modulet, step 3 at konvertere og først da kan step 4 være at starte IABot igen. --MGA73 (diskussion) 2. maj 2021, 15:41 (CEST)[svar]
Hvordan afprøver man rettet kode i et modul? Jeg har nu fundet ud af hvordan jeg ser og retter LUA koden, men jeg er i tvivl om hvordan man afprøver en rettelse.--Honymand (diskussion) 2. maj 2021, 17:19 (CEST)[svar]
@Honymand: Selve rettelserne foretages i Modul:Citation/CS1/sandkasse og de andre sandkasser. Jeg ser resultatet i Bruger:MGA73/sandkasse men Moduldiskussion:Citation/CS1/Date validation/testcases og Skabelon:Citation/testcases er vist en smartere måde at gøre det på.
Det største problem er intervaller, hvor Danmark åbenbart gør det modsatte af engelsksprogede lande. Altså hyphen/dash og tankestreg/bindestreg og så om der skal mellemrum omkring. Jeg tænker, at vi kan kopiere den gamle rettelse men jeg har spurgt munken, om der er en bedre måde at gøre det på. Tanken er at gøre modulet på enwiki så fleksibelt, at det er let at kopiere til andre wikier. Så måske der kan laves en kode hvor vi bare skal rette true/false i stedet for at indsætte kode manuelt. Jeg tænker, at det afhænger af hvor svært det er at kode og hvor mange andre lande, der ikke gør som enwiki. --MGA73 (diskussion) 2. maj 2021, 18:14 (CEST)[svar]
Jeg går ud fra, at du har luret, at nogle fejl som i min sandkasse fx "Tjek datoværdier i: |date= (hjælp)" ikke er en fejl i modulet men en fejl i datoangivelsen på selve siden. Meningen er, at en bruger skal rette fejlene som angivet i Hjælp:CS1-fejl#bad_date. --MGA73 (diskussion) 2. maj 2021, 18:19 (CEST)[svar]
Ja, dato/tid formatering og fortolkning har jeg arbejdet en del med, men det er jo en hel videnskab i sig selv.--Honymand (diskussion) 2. maj 2021, 19:18 (CEST)[svar]
@Honymand: Det lyder godt! Jeg har lige fået svar fra munken at hvis vores "gamle" date_hyphen_to_dash() kode virker fint, så skal vi bare bruge den. Jeg tænker dog at for vores egen skyld, så skal vi markere tydeligt hvor og hvad vi ændrer. Herunder henvise hvis der skal rettes i flere moduler. Har du styr på hvordan reglerne er? --MGA73 (diskussion) 2. maj 2021, 19:31 (CEST)[svar]
Jeg så lige at der vist er opnået enighed om reglerne i Moduldiskussion:Citation/CS1#Tankestreg_-->_bindestreg. Der synes også at være stemning for, at det i alt fald i nogle tilfælde er bedre at rette forkerte skrivemåder på selve wiki-siden end at ændre koden til at konvertere alle (u)mulige fejltyper til det korrekte. --MGA73 (diskussion) 2. maj 2021, 20:10 (CEST)[svar]
@MGA73: Nej, jeg har ikke styr på reglerne. Som jeg prøvede at sige til at starte med, kender jeg godt til Lua og programmering i det hele taget, men *ikke* i wiki-kontekst. Jeg foreslår derfor at vi tager nogle meget konrete små skridt til at starte med - så hvis du kan foreslå en konkret ting jeg kan starte med at rette, så vil jeg prøve det. --Honymand (diskussion) 2. maj 2021, 20:51 (CEST)[svar]
@Honymand: ok, så kan det godt være, at vi skal have nogle med, som har helt styr på hvordan tingene bør virke. Men jeg har fx kopieret Danmark#Bibliografi ind i Bruger:MGA73/sandkasse#Kopi_fra_Danmark for at se om der var andre fejl end fejl relateret til perioder/range. Jeg undrer mig over hvorfor |article= fejler i nummer 8. Kan du lure hvorfor? --MGA73 (diskussion) 2. maj 2021, 21:36 (CEST)[svar]
@MGA73: Nej, jeg kan ikke lige se det sted i koden som udskriver fejlen. Normalt ville jeg køre koden i en såkaldt Debugger, men det ved jeg ikke lige hvordan man gør med data fra wiki. Men så vidt jeg kan "lure" er det fordi article= ikke er understøttet uden at der er nogle flere parametre angivet.--Honymand (diskussion) 2. maj 2021, 22:06 (CEST)[svar]
@Honymand: Så kan det måske være, at de parametre der er krævet ikke er oversat i sandkassen endnu. --MGA73 (diskussion) 2. maj 2021, 22:10 (CEST)[svar]
@Honymand: Tjek Special:Diff/10758669. Problemet var sandkassen... Grrrr. Jeg var ved at blive vandvittig af at jeg ikke kunne finde den pokkers fejl. --MGA73 (diskussion) 5. maj 2021, 00:15 (CEST)[svar]
@MGA73: Tak for info.--Honymand (diskussion) 5. maj 2021, 21:22 (CEST)[svar]
Jeg er er positiv for at genimportere modulerne fra enwiki. Der er god ide at kunne fiske kode fra en wiki, som har kræfter til at vedligeholde skabeloner og moduler, som vi har svært ved. Jeg kigget på Kategori:Sider med kildeangivelser med ikke-understøttede parametre og der er s2cid en af de nye parametre, som flere artikler har angivet en værdi for den og det er med i den nye kode. Genimport bør være mulig på andre skabeloner og moduller. Derudover kunne det være ide at det tænkt vedligeholdelsen ind i Wikifunctions, når det kommer.
Jeg kan se i konfiguration, at der er nogle nye kategorier, som vi ikke har, som ikke er fundet et dansk navn. Så der også tilpasning det nye...
Omkring ensretning
* parametre: Jeg vil beholder alle parametre, som er på danske og engelsk og bevare dem på svensk, norsk og tysk i en lang overgangsperiode. For der er mange af dem... Og det er farligere at ensrette end at lade det være. For der er er mange parametre, som skal tages hensyn til. Og da det er styret af konfiguration og ikke af kode, så er det et mindre problem, at der er parametre på andre sprog end på dansk eller engelsk. Der er en del som flytter brug af de relevante skabeloner over uden tilpasning, og de skal rettes til løbende hvis vi er for streng i hvad vi tillader. Ellers bør den primære sprog på de parametre være de danske.
* funktion: Der er vel noget som vi er nød til at rette til. Jeg ved ikke om der er andre end dem, som er nævnt som |dead-url= / |url-status.
* datoer: datoer bør helst være danske, mens de engelske bør være valide, men bør bot-ændres til danske. Kartebolle foreslå på et tidspunkt at vi skulle have en sporingskategori for datoer på engelsk, så det var let at finde dem og rette dem med bot. Jeg har tjekket dem som ikke er godkendt som valid dato. De mange af de gennemgående fejl har jeg bot-rettet.
Der er stor opgave, så tag den tid det tag at få kvalitetssikret det inden den nye udgave kommer i drift. Og det er også positiv at den primære vedligeholder på den engelske spiller med at gøre det lettere at overfører det i fremtiden... --Steen Th (diskussion) 3. maj 2021, 10:48 (CEST)[svar]
@Honymand: Som Steen Th har nævnt på IRC så vil det måske være godt, hvis vi kunne udrydde nogle af de forskellige fejl i Kategori:CS1-vedligeholdelse inden vi tager de nye skabeloner i brug. Hvis du og alle andre har lyst, så ville det være fint hvis vi kunne rydde lidt op. Hvis der er nogle fejl, der er mange af og/eller er lette at rette, så kan vi evt. sætte en bot til det. Men problemet er at finde ud af hvilke typer af fejl der er og hvordan vi retter dem. Jeg har selv kig på Special:Diff/10759208 som jeg mener min bot kan fixe mange af forholdsvist let, hvis det ellers er korrekt forstået, at man skal rette til fx Second eller 2th til 2. En anden type fejl er som Special:Diff/10758989 med wikilinks om årstal mv., hvor Steen har en plan for at fixe det meste med en bot. En tredje problemstilling er Skabelon:CathEncy hvor der måske bare er en uhensigtsmæssighed i skabelonen. Man behøver ikke rette hundredevis af artikler for at hjælpe. Det vil også være et skridt på vejen, hvis man fx udbygger beskrivelsen i den relevante kategori og fortæller hvad problemet er og hvordan man retter det. --MGA73 (diskussion) 5. maj 2021, 21:46 (CEST)[svar]
@MGA73: Bare lige for at være sikker på jeg forstår dig rigtigt.
* Kategori:CS1-vedligeholdelse indeholder artikler kategoriseret efter forskellige fejl i de pågældende artikler
* Disse fejl skal rettes ved at rette i artiklerne (evt. med bot), har ikke noget at gøre med evt. rettelser i LUA-kode ?
--Honymand (diskussion) 7. maj 2021, 20:32 (CEST)[svar]
@Honymand: Fedt at du spørger. Det gør tingene meget lettere, hvis vi taler om det samme!
Ja, Kategori:CS1-vedligeholdelse indeholder artikler kategoriseret efter forskellige fejl i de pågældende artikler og ja, disse fejl skal rettes i artiklerne.
Der kan dog godt være fejl i koden. Fx har jeg fundet et eksempel, hvor artiklen muligvis bliver listet som en fejl, fordi der står "år=" i artiklen i stedet for "year=". Det giver jo ingen mening, og der vil det rigtige være at rette koden.
Der kan også være nogle fejl, der er så almindelige, at vi beslutter at det er lettere at rette koden, så den accepterer/retter fejlen. --MGA73 (diskussion) 7. maj 2021, 20:43 (CEST)[svar]
Jeg har indsat en hjælpetekst øverst i Kategori:CS1-vedligeholdelse: Unavngivet tidsskrift. I det pågældende tilfælde ser det således ud til, at vi ikke lige kan løse fejlen. Altså medmindre nogen finder en smart løsning. Hvis der ikke menes en konkret artikel i UfR men hele tidsskriftet, så kunne man måske bruge en anden skabelon og undgå "fejlen". --MGA73 (diskussion) 7. maj 2021, 21:29 (CEST)[svar]
@MGA73: Modtaget. --Honymand (diskussion) 7. maj 2021, 22:38 (CEST)[svar]
@MGA73: Jeg kan se der stadig er noget jeg ikke forstår. Nu kiggede jeg på Aleksej Kosygin fordi den var den eneste i Kategori:CS1-vedligeholdelse: ASIN bruger ISBN, men hvordan får jeg modulet til at vise fejlen? Mao. hvordan kører jeg modulet på artiklen - skal den kopieres et sted hen?--Honymand (diskussion) 8. maj 2021, 10:47 (CEST)[svar]
@Honymand: For at finde og rette fejlen, så behøver du ikke at bruge det opdaterede modul. Hvis du kan finde fejlen med det gamle modul, så kan du bare rette fejlen (altså hvis du ved hvordan man retter den - jeg kunne fx ikke selv finde ud af rette den nævnte fejl).
For at teste det opdaterede modul skal tilføje /sandkasse. Hvis det fx er {{Cite book}}, så skal du rette til {{Cite book/sandkasse}}. Det er dog ikke sikkert, at der er oprettet en sandkasse for alle skabelonerne og det er heller ikke sikkert, at sandkassen bruger modulet.
Hvis det du spørger om er hvordan pokker du finder præcis den skabelon, der giver fejlen, så er der ikke altid nogen let måde. I den konkrete artikel er der kun 2 skabeloner, der indeholder feltet "asin =" og fejlen er i den med asin 0812690052. (Jeg fandt fejlen ved at kopiere de 2 skabeloner til en fiktiv artikel og så vise først den ene og så den anden). I det her eksempel, så hjælper det faktisk at tilføje /sandkasse, for den nye skabelon viser fejlen meget tydeligt. Det gør den nuværende ikke. --MGA73 (diskussion) 8. maj 2021, 11:41 (CEST)[svar]
@MGA73: Har du testet om din rettelse på Aleksej Kosygin fjerner fejlen - det ser den nemlig ikke ud til at gøre. Fejlen har ikke noget med "asin" at gøre så vidt jeg kan se. Fejlen jeg ser er:
"Lua-fejl i Modul:Citation/CS1/Date_validation/sandkasse på linje 1063: attempt to call method 'match' (a nil value)"
Det skyldes at funktionen :match er udefineret for param_val objektet. Dette er forsøgt rettet tidligere ved at indsætte et is_set() check som jeg kan se du har kommenteret ud (og tak: godt at kommentere ud fremfor at slette).
@Dipsacus fullonum: og @Weblars: Er der en af jer der ved hvordan man checker for udefineret funktion i Lua-script på wiki; de metoder jeg kunne finde på nettet giver fejl.
Men den egentlige fejl er selvfølgelig at objektet fra start ikke er velformet, men det er lidt mere kompliceret at rette. --Honymand (diskussion) 8. maj 2021, 15:20 (CEST)[svar]
@Honymand: Ja Kategori:CS1-vedligeholdelse: ASIN bruger ISBN er nu tom. Dermed er problemet vel løst :-) Ifølge ASIN så får bøger der har et ISBN ikke et ASIN. På en:Alexei_Kosygin#Bibliography er der heller ikke angivet et ASIN. --MGA73 (diskussion) 8. maj 2021, 15:25 (CEST)[svar]
@MGA73: Måske har jeg misforstået noget. Men hvis jeg retter i Aleksej Kosygin, ændrer den pågældende linje til {{Cite book/sandkasse og vælger "Vis forhåndsvisning" så kommer der en fejl.--Honymand (diskussion) 8. maj 2021, 15:30 (CEST)[svar]
@Honymand: Det er fordi jeg har rettet i modulet Special:Diff/10762009 og den rettelse får det hele til at bryde ned. --MGA73 (diskussion) 8. maj 2021, 15:34 (CEST)[svar]
@Honymand: Ah. Problemet er som sagt at param_val:match ikke findes. Enten fordi der også skulle rettes i den kaldende kode (CS1 modulet) eller fordi match skal bruges på en anden måde, f.eks. mw.match - men det har jeg ikke overblikket til at ordne.--Honymand (diskussion) 8. maj 2021, 16:09 (CEST)[svar]
@Honymand: Når man pinger sig selv så er man sikker på at der er mindst 1 fornuftig, der læser hvad man skriver :-D Jeg tænkte om tekniske diskussioner burde flyttes til Moduldiskussion:Citation/CS1#Tankestreg_-->_bindestreg_2021 så denne bruges til en diskussion af om der skal ensrettes eller ej. Ikke at der er voldsom megen diskussion. --MGA73 (diskussion) 10. maj 2021, 17:00 (CEST)[svar]