Tema de Viquiprojecte Discussió:Adaptació de plantilles a Wikidata/multilingüe/migració infotaules a V5/ToDo

Amadalvarez (discussiócontribucions)

@Vriullop @Joutbis A voltes sobre com resoldre el tema del multilingüisme en els inputs (paràmetres i/o valors del paràmetres) el @jmarchn, a qui convido en aquesta conversa) m'ha mostrat la seva solució d'un i18n en lloc del TNT que també havia provat. En concret, és el Mòdul:XCols/i18n.

Basant-me en el cas del Jordi, la meva reflexió, que m'agradaria debatre amb vosaltres per veure si vaig errat, és pot millorar, o ja està bé, és la següent:

  • amb l'i18n qui s'entera de l'equivalència és un mòdul, no una plantilla.
  • per aconseguir que a la plantilla li arribi el nom de paràmetre que entén, tot i que l'usuari hagi escrit un altre, només veig dues solucions:
    • li escrius el(s) sinònim(s) dins el codi -una mala praxis-
    • li poses una peça (que jo anomeno pre-infotaula) que fa una conversió N --> 1.
  • si analitzem aquesta segona opció -la que estic aplicant en la Global Infobox- és el que fa el i18n que ha preparat en Jordi. És a dir, el que jo anomeno pre-infotaula és funcionalment un i18n.
  • Les diferències són:
i18n pre-infotaula
  • l'usuari invoca el mòdul i aquest té dins i crida el i18n
  • està escrit en format taula LUA/JSON (?)
  • el manteniment es fa sobre la mateixa taula del i18n
  • l'usuari crida la pre-infotaula i aquesta converteix i passa control a la plantilla
  • està escrit en codi wiki
  • normalment el codi és la taula de conversió en si. En el cas dels Global Infobox, el manteniment es fa sobre una taula CSV (pendent de disseny definitiu) que permet generar la pre-infotaula, aïllant l'usuari final de la sintaxi del codi wiki.

L'altre dia en @Joutbis proposava fer una generació del codi de la plantilla sencer a partir d'una versió de codi únic (el que ara és la Global Infobox) + la taula CSV que conté les excepcions mantingudes per l'usuari final.

Espero els vostres assenyats comentaris


Vriullop (discussiócontribucions)

El plantejament que fas és correcte. El tractament és diferent amb mòdul o amb plantilla. El procés lògic seria fer un mòdul:Infobox person, però vistes les plantilles no seré jo que el faci i ja ho hem descartat.

El problema podrien ser les actualitzacions, canvis a la Global que obliguin a canvis en la preplantilla. Passa igualment amb mòdul i el seu i18n, de fet m'hi he trobat amb el mòdul:wikidata. De totes formes no acabo de veure que resulti problemàtic, només que cal anar amb compte. Si són paràmetres nous simplement quedaran sense traduir. Si són paràmetres de configuració cal preveure un valor per defecte fins que no es modifiqui en la preplantilla.

Amadalvarez (discussiócontribucions)

Gràcies, @Vriullop.

Els canvis a la Global porten aparellat una versió ampliada de la taula quan comporten nous paràmetres. A la taula sempre hi ha dos noms mnemotècnics que entén la Global per cada paràmetre: un codi curt (val_P569) i un nom en anglès (date_birth)

Com què a cada plataforma hi ha una còpia, una nova versió s'activa quan l'administrador de la plataforma decideix instal·lar-la, moment en el qual hauria d'aportar, opcionalment, la seva versió lingüística.

En tot cas, no podem oblidar que estem parlant de "inputs" i a les infotaules, el seu ús va a la baixa. A una nova WP no li caldria fer servir cap.

Tal com diu, tots els paràmetres de configuració tenen un valor per defecte a la taula std. i un altre dins el codi, per si la taula estigués mal configurada.


Jmarchn (discussiócontribucions)

@Amadalvarez, @Vriullop: Hola!. He creat el primer mòdul per a ser utilitzat com a plantilla: Mòdul:Infobox medical intervention que utilitza els nous Mòdul:Infotable images, Mòdul:Medical infotable items i el senzill Mòdul:InfotableColors. Els 3 primers mòduls amb l'i18n. "Infotable images" i "Medical infotable items" estan pensats per que es puguin utilitzar en altres nous mòduls d'infotaules (malalties, anatomia..)

Podeu veure una demo amb el duplicat (una amb el mòdul i l'altre amb la plantilla) que he fet a Angioplàstia.

Un únic problema que potser em sabrà solucionar en Vicenç. A "Infobox medical intervention" no sé com fer que actuï una plantilla en un element retornat amb Wikidata. Ho he provat a la línia 80 d'Infobox medical intervention" però no fa res... Aquest problema queda il·lustrat en l'exemple en els valors CIM-9-MC -> 00.6, 36.0 i 39.50.

A veure que us sembla...

Vriullop (discussiócontribucions)

Jordi, en la línia 67 la comparació ha de ser la contrària, sinó no usa formatting. Per cert, mira mw:Manual:Coding conventions/Lua. És recomanable les funcions amb camelCase cosa que comporta que les variables siguin amb minúscules i guió_baix. L'excepció poden ser les variables que carreguen un require. Distingint les tres coses és més fàcil de llegir. Bona feina, té pinta d'un model replicable.

Amadalvarez (discussiócontribucions)

Si el @Vriullop és un bon senyal, però t'asseguro que em resulta tan críptic i barroc com a vosaltres les plantilles.

Està clar que m'hauré de reciclar.

Una cosa,entenc el paràmetres item i lang ?

Jmarchn (discussiócontribucions)

@Amadalvarez, @Vriullop: Hola de nou!.

Una vegada resolt el problema:

  • He afegit (en el mòdul una sola línia, la 79) la comprovació d'arguments, això vol dir que si no s'utilitza WD i s'introdueix un paràmetre manualment es comprova que el nom sigui acceptable, altrament apareix un missatge d'advertiment mostrant aquell nom invàlid.
  • Comprovació dels paràmetres de i18n (que tinguin valor i que siguin en un format correcte, ja sigui una cadena o vàries, segons el cas).
Amadalvarez (discussiócontribucions)

Poso aquest missatge aquí tot i parlar d'una altra infotaula, perquè tracta dels aspectes relatius a tenir un model LUA d'infotaules globals.

@Jmarchn Respecte la wonderfull nova plantilla:Infotaula malaltia. No entenc res del codi (encara), però les teves explicacions sobre l'estructuració del codi m'han semblat molt suggerents i, com deia el @Vriullop, sembla un model replicable. Alguns afegitons que se li hauria de fer al model:

  • cal que tracti el paràmetre item amb el Qid al que ha d'accedir. Tal com està, només funciona dins l'article real de l'espai principal.
  • igualment amb el paràmetre lang per tal que recuperi els valors a la llengua indicada en aquest paràmetre o de la llengua de les preferències.
  • Cal diferenciar entre els noms dels paràmetres d'entrada i el text que es mostrarà al label. El multilingüisme dels codis d'entrada està ben resolt amb l'i18n, però els labels s'han de poder obtenir en la llengua seleccionada via GetLabelFix o similar. Addicionalment, cal preveure un nom de paràmetre excepcional a incorporar a la i18n per poder alterar el valor local de les etiquetes en cas que el retorn que dóna GetLabelFix no sigui l'adient pel cas concret d'una infotaula. (Mira Viquiprojecte:Adaptació_de_plantilles_a_Wikidata/multilingüe/migració_infotaules_a_V5/Construcció_eines_instal·lació on, al marge del tema principal de que tracta, s'explica els tipus de paràmetres a fer servir i uns casos d'ús.
    • El més important és que descriu que hi ha conceptes que requereixen paràmetre valor + paràmetre etiqueta, és el cas dels continguts WD i els manuals que no tenen propietat; i hi ha conceptes que se solucionen només amb un paràmetre, és el cas de les etiquetes sense contingut de valor (com els headers) i també el cas dels valors de parametrització, com ara la categoria on han d'anar l'article si acompleix una condició o el valor de "collapsible" de les taules, o quin són els valors vàlids d'un paràmetre en altre llengua, és a dir en aquells paràmetres que poden ser yes/no o left/right. No de com funciona dins el codi, sinó de com ho pot expressar l'usuari de la plantilla.
  • Enllaçant amb la funció de llistes desplegables: hauràs de migrar totes les opcions, perquè si que es fan servir (veure tractament premis a la infotaula persona/formatglobal)
  • Bona feina, seguiré mirant-la.
Amadalvarez (discussiócontribucions)

@Vriullop Pregunta innocent: es pot cridar una plantilla des d'un mòdul LUA ?

Jmarchn (discussiócontribucions)

Sí. Per exemple {{mesh2|name=Nom|number=Num}} es converteix en:

frame:expandTemplate {title = 'mesh2', args = {name=Nom, number=Num}}

Amadalvarez (discussiócontribucions)

Interessant.

Es podria fer un mòdul que tingués l'i18n com aquest teu d'igualar sinònims de paràmetre i a continuació crides una infotaula passant-li tots amb el nom intern ?

Jmarchn (discussiócontribucions)

Oi tant!. Vols que ho faci amb una infotaula senzilleta per la prova?.

Amadalvarez (discussiócontribucions)

Si no t'ha de robar gaire temps....

Ho dic, perquè després haig de pensar com encaixen les taules en tot això i el que facis ara igual només ens serveix com a maqueta.

Merci.

Jmarchn (discussiócontribucions)

Endavant...

Amadalvarez (discussiócontribucions)

Val. Per fer-ho fàcil. Si mires l'esquema veuràs que el sistema està pensat per a ser utilitzat fent servir directament la Global Infobox person, sense paràmetres o amb els que té com std. el diccionari que hi ha a la /Tab param (aquesta taula és com una part del codi, no s'ha de tocar mai per part de les plataformes on s'instal·la).

L'altra forma d'entrar és mitjançant la infotaula local (en el nostre cas, Proves persona) que permet fer servir noms locals. El codi, tot i ser fàcil d'entendre, és llarg i amb una sintaxi plena de claudàtors i, per tant, fàcil d'equivocar-se si demanem que l'escrigui cada comunitat. Per a facilitar-ho, la pre-infotaula es genera (de forma artesanal, però mecànica) mitjançant la Create Global pre-Infobox person que s'alimenta de les taules /Tab param i /Tab exception (la dels valors locals)


Per tant, es tractaria d'emular el comportament de la pre-infotaula (no de generar-la) per acabar invocant la Global Infobox person. Jo he arribat pel camí explicat, però qualsevol altre menys manual i igual de versàtil m'està bé.

He preparat:

recorda que a Viquiprojecte:Adaptació de plantilles a Wikidata/multilingüe/migració infotaules a V5/Construcció eines instal·lació hi ha descripció dels paràmetres i casos d'ús.

Ànims !

Amadalvarez (discussiócontribucions)

@Jmarchn Per cert, sobre el comentari que em vas fer de la complexitat de la sintaxi de la taula: la taula complexa és la /tab param que no es modifica localment. La taula que han de emplenar els usuaris d'altres plataformes és la /tab exception què només té 2 paràmetres i que només cal informar si volen canviar el nom del paràmetre manual o el text del label. En condicions raonables, el nom del paràmetre només el voldran traduir si és un cas sempre manual (sense property) o si volen fer migració de plantilles aprofitant els paràmetres antics. El text del label només cal si no els hi va bé el text que hi ha a WD.

Vull dir que, li dediquem molts esforços però, per moltes plataformes, no serà imprescindible.

Amadalvarez (discussiócontribucions)

@Jmarchn Per cert, re-llegeix el text de l'encàrrec, perquè li he fet algun retoc menor de redacció, res fonamental.

Un comentari important: He provat les teves noves infotaules canviant la llengua de preferències i la part de dades surt canviat (cosa del mòdul) i els labels no, perquè els tens com a text directe. Fins aquí una obvietat que ja sabies. Bé, doncs aquest encàrrec de fer un i18n que emuli la pre-infotaula que he fet és una peça clau per gestionar el multilingüisme dels labels també a les infotaules que segueixin el teu model LUA, ja que permet determinar quin text recuperar per fer els labels, bé sigui per defecte, bé sigui per parametrització de la plataforma, bé sigui a gust de l'editor de l'article.

Salut !

Jmarchn (discussiócontribucions)

@Amadalvarez, @Vriullop: Hola!. Abans de començar a treballar amb la proposta que havíem parlat amb l'Amador, he volgut enllestir Mòdul:Infobox medical intervention i, ja més complex, el Mòdul:Infobox disease (i abans d'anunciar i substituir les plantilles corresponents actuals).

Com podeu veure ja accepten el paràmetre de l'item, pels exemples.

Però no he inclòs el del lang. El motiu és que:

  • Amb àrab ja va bé tal qual (tot i que queda la taula a la dreta, però és com ho tenen els àrabs!), les etiquetes i les dades ja queden tal com toca.
  • Amb hebreu, queda a l'esquerra però utilitzen un infobox a la seva mida i no compatible.
  • No he comprovat altres (farsi, etc.)

He millorat l'infobox disease incloent dues capçaleres més (a part dels ítems no inclosos fins ara, però que s'han estès des de l'última versió angles de fa un parell d'anys).

Ara ja no té sentit una {{infotaula símptoma}} diferenciada, això ja no es fa servir i queda diferenciat pel Tipus que es mostra en la infotaula i com podeu veure en l'exemple de la cefalàlgia.

Com podeu observar, en l'últim exemple dels dos mòduls, he inclòs la funció de bolcat de tots els possibles noms de paràmetres (segons l'ordre establert a l'última taula de Mòdul:NomMòdul/items). Es podria millorar per preparar el TemplateData o per una taula... He millorat els i18n i arreglat alguns detalls més.

Amadalvarez (discussiócontribucions)

@Jmarchn Sobre el lang: no cal pensar en el cas més difícil per decidir tenir-la o no. Tindrem més interessats francesos, asturians o bascos que àrabs. En tot cas, on apareix la infotaula és una qüestió que resol la plataforma, el que hem de fer nosaltres és aconseguir que els continguts de la Infotaula surtin Right-to-Left (RTL). Mira Plantilla:OpenDivRTL i un exemple del seu ús a Plantilla:Global Infobox person/outputformat. Es fa servir immediatament abans i després d'invocar el mòdul:infobox, com un entrepà on el tall és la infotaula i el OpenDivRTL / CloseDivRTL és el pa. Amb això s'inverteix el contingut amb algunes petitíssimes excepcions segons sigui l'edició que ha preparat el retorn del mòdul:wikidata en edicions complexes i amb moltes dades. Prova-ho i si tens alguna incidència, ho mirem.

Sobre la feina feta: les meves felicitacions !

Jmarchn (discussiócontribucions)
File:Infotaula en farsi.png

@Amadalvarez, no acabo de veure la utilitat d'OpenDivRTL / CloseDivRTL, que ja havia vist. A la dreta tens la captura de pantalla de l'infotaula d'exemple en una pàgina en farsi (persa), i per tant sense utilitzar OpenDivRTL, i tot queda ben posat.

No veig la utilitat de que un usuari persa vulgui veure en un article d'escriptura d'esquerra a dreta (només) la infotaula correctament col·locada com si estigués en un article de la viquipèdia en el seu idioma quan tota la resta de l'article seguirà l'escriptura d'esquerra a dreta.

Amadalvarez (discussiócontribucions)

Doncs no he entès bé el teu missatge.

El canvi de llengua, sigui a preferències o amb el lang, vàrem acordar que només ha de funcionar "fora de l'espai principal", precisament per evitar això que comentes. Si navegues per articles de la cawiki la teva llengua no afecta al contingut de la infotaula.

Si proves a posar-te en àrab en una biografia de cawiki veuràs que la pàgina s'inverteix d'ordre (ho fa la plataforma) però els continguts del cos i de la infotaula continuen en català i en LTR. Si ho fas en una pàgina d'usuari, el contingut de la infotaula és tradueix i s'inverteix.

Si poses preferències = ar i mires la documentació de la infobox disease, el text surt traduït, però la infotaula surt escrita LTR

Jmarchn (discussiócontribucions)

@Amadalvarez, sobre el lua:

Viquipèdia:Lua/Introducció

https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ca

En el primer hi ha la referència al mòdul molt útil Mòdul:SimpleDebug, que vaig crear, per veure els valors que prenen les variables.

Sobre la qüestió del "case", admet operacions i funcions (però no una estructura de codi, s'ha de segregar en una funció prèviament descrita, com en l'exemple la Sum:

A = 3
function Sum (a, b) --suma a i b
	return a + b
end	
p.i18n = {
	['OMIM']	= "OMIMaquí",
	['Suma']	= Sum(A,3)-1,
}

p.i18b['ONIM'] --conté "OMIMaquí"
p.i18b['Suma'] --conté 5
Resposta a «Pre-infotaula vs i18n»