Ajuda:Infotaules multilingües sols-lua
Les plantilles multilingües que utilitzen el mode sols-lua, consten de 4 pàgines: 1 plantilla que crida a un dels 3 mòduls i un d'aquests crida al mòdul infobox.
Tipus d'etiqueta-paràmetre
[modifica]Tipus | Funció |
---|---|
a |
Per l'argument (o paràmetre) |
l o L |
Per etiqueta (o label en anglès, sense posar o posant el primer caràcter del text de l'etiqueta en majúscules). |
al |
Si s'assigna un argument i una etiqueta alhora. És la forma més habitual. |
cl |
Igual a al , però mostrarà l’etiqueta com a encapçalament i el text en mode col·lapsat.
|
a- |
Igual a a , però la infotaula el mostrarà (el text ocuparà tota l'amplada de la infotaula).
|
Creació de paràmetres i etiquetes no-estàndard a i18n
[modifica]Els paràmetres estàndard i etiquetes són els subministrats amb el paquet de la infotaula. Ocasionalment es pot voler:
- Afegir nous paràmetres-etiquetes.
- Canviar l'ordre dels paràmetres-etiquetes.
- Eliminar paràmetres-etiquetes.
- Que varis paràmetres, que no estan en el paquet subministrat, passin el seu contingut a un paràmetre estàndard.
Definició de les claus pels paràmetres i etiquetes no-estàndard
[modifica]Per defecte:
local k = {
-- explicacions en anglès...
}
Si es volen utilitzar dues variables, s'ha d'escollir un nom per la clau (tenint en compte les seves característiques) o key en anglès.
Per exemple per a local_1
i local_2
:
local k = {
-- explicacions en anglès...
local_1 = "local_1",
local_2 = "local_2",
}
Observeu que el nom de la clau i el seu valor com a cadena són iguals. Això no té a veure amb el nom en que l'editor de l'article l'utilitzarà, i que s'explica més avall.
Aquesta repetició és una exigència del llenguatge lua i assegura un correcte ús posterior.
Definició de paràmetres no-estàndard
[modifica]Cal assignar-ho a la taula p.new_items
, que per defecte és:
p.new_items = {
[MLMT.k.Args] = {
-- explicacions en anglès...
},
[MLMT.k.Labels] = {
-- explicacions en anglès...
},
}
Pels paràmetres ("Args")
[modifica]Cada element consta de:
- [clau] = {"nom/s_parametre/s_manual/s", "crida a WD"},
On:
- "nom/s_parametre/s_manual/s" pot ser "nom" o {"nom_1","nom2"}
- "crida a WD", pot ser:
- senzilla, per ex.
"_P123456789"
- complexa, per ex.
{property="P123456789", formatting='[http:/web/$1 $1]", ...}
- senzilla, per ex.
- S'admet més d'una crida a WD.
Es pot ometre el primer o el segon sub-element. Ometre un sub-element vol dir deixar-lo entre ""
.
Per les etiquetes ("Labels")
[modifica]Cada element consta de:
- [clau] = "etiqueta",
"etiqueta" ha de ser:
- un text o
- una crida a WD, per exemple "_P123456789"
Exemple
[modifica]Per establir dos paràmetres (característiques de l'argument i etiqueta), i que tinguin de clau local_1
i local_2
.
p.new_items = {
[MLMT.k.Args] = {
[k.local_1] = {"local_1", ""},
[k.local_2] = {"local_2", ""},
},
[MLMT.k.Labels] = {
[k.local_1] = "Local 1",
[k.local_2] = "Local 2",
},
}
Si es vulgués que els segon nou paràmetre podés ser cridat amb dos noms diferents, llavors:
p.new_items = {
[MLMT.k.Args] = {
[k.local_1] = {"local_1", ""},
[k.local_2] = {{"local_2","numero"}, ""},
...
}
Si es vulgués que el primer paràmetre prengués el valor de WD en cas de no haver estat entrat manualment, llavors, per un suposada propietat Editorial (P123):
p.new_items = {
[MLMT.k.Args] = {
[k.local_1] = {"local_1", "_P123"},
...
}
Si local_2
hagués de ser un número enter i positiu, cal afegir a p.arg_lims
la clau i el tipus dels paràmetres:
p.arg_lims = {
-- explicacions en anglès...
{k.local_2, "i+"},
}
Ordre d'aparició dels paràmetres
[modifica]És per:
- Modificar l'ordre en que es mostren a la infotaula.
- Afegir al lloc requerit els paràmetres no-estàndard.
Per a fer-ho cal:
- Obrir "Principal/items" i copiar-ne tota la taula
p.idx
- Copiar-ne el seu contingut a "Principal/i18n" que és el mòdul que es modificarà.
- Caldrà canviar la denominació de les variables d'aquesta taula de nom "p.k..." per "Abrev.k...",
Abrev
per definida a l'inici d'aquest mòdul i que seguint l'exemple seriaIPi
. - Finalment:
- Modificar l'ordre dels elements d'aquesta taula segons convingui i/o
- Col·locar el nou o nous elements a on sigui requerit. Cal seguir l'estructura establerta per als altres elements.
Gestió de les variables
[modifica]Ocasionalment pot ser necessari modificar els valors entrats manualment o recuperats automàticament de WD.
Al final del i18n hi ha la funció:
function p.local_func (frame, args)
vals = {}
-- explicacions en anglès...
return vals
end
Que retorna cap (opció per defecte) o vàries assignacions a paràmetres.
Els paràmetres de la funció que s'hi passen són:
frame
: de vegades és necessari per a una funció (expandTemplate
, a veure més avall).args
: és una funció que retorna el valor d'un paràmetre o una cadena buida.
vals
: és una taula que no contindrà cap element a diversos elements. On cada element conté el nom del paràmetre estàndard de destinació i les instruccions que li envien un valor.
Cada resultat s'associarà un paràmetre on es vol que es mostri el resultat:
- Així si
result_for_this_param
conté el valor d'un element, gràcies a unes operacions que s'expliquen en la següent subsecció. - Amb
table.insert (vals, {target_param_name, result_for_this_param})
s'anotarà a la taulavals
l'element. Cal definir a quin paràmetre estàndard (target_param_name
) es vol enviar el resultat de l'operació que s'ha efectuat amb els paràmetres (habitualment) no-estàndard.
Operacions amb les variables
[modifica]El que segueix precedit per una línia result_for_this_param=
, per tal d'emmagatzemar el valor en aquesta variable.
Saben programar mínimament amb lua:
- per exemple. per a dues línies:
args(k.param_1)..'</br>'..args(k.param_2)
O una crida a un mòdul:
require("Module:Module_name_to_call").called_function (parameter_list)
On:
parameter_list
és la llista dels paràmetres separats per comes entre{}
:
- per exemple:
{separator='<br>', args(k.param_1), args(k.param_2)}
Amb una plantilla, si no sabeu com programar en lua o una plantilla és una millor solució:
frame:expandTemplate { -- ← clau inicial
title = "template_name",
args = {the_args}
} -- ← clau final
On:
template_name
és el nom de la plantilla a utilitzar; s'ha d'escriure entre""
.the_args
són els paràmetres a passar a la plantilla a utilitzar.
- per exemple:
{args(k.param_1), args(k.param_2)}
, onk.param_1
ik.param_2
són les claus dels dos paràmetres no-estàndard. - També podeu llegir: callParserFunction and expandTemplate per a més detalls i exemples de com escriure els paràmetres a passar.
Establir la posició dels paràmetres no-estàndard
[modifica]Ens nous paràmetres creats es posicionaran en les llistes que generen les infotaules (d'arguments i etiquetes, o sols d'arguments) i en el codi pel TemplateData.
Alternativament es pot dir on es volen posar, per això hi ha la taula p.new_pos
. Aquesta taula consta d'una llista d'elements en que cada element consta de dos claus:
- La clau del paràmetre no-estàndard.
- La clau del paràmetre anterior al no-estàndard. Si hi ha varis paràmetres no-estàndard, el paràmetre anterior pot ser un paràmetre no-estàndard sempre que ja s'hagi posicionat en un element previ.
Exemple:
p.new_pos = {
{k.local_1, IPi.k.prior},
{k.local_2, k.local_1},
}
Si s'utilitza el posicionament, s'ha d'utilitzar per a tots els nous paràmetres.
Modificació/construcció d'una infotaula
[modifica]És quan tota la infotaula es programarà en lua.
A més:
- S'omet la necessitat de numerar el label i data, ja que ho fa automàticament.
- La presència o no dels encapçalaments d'un grup d'elements queda facilitada.
Per afegir un nou element cal seguir els passos similars a la #Construcció d'una preinfotaula, si be els noms de les funcions canvien, així load_arg_of_key
i label_of_key
estan substituïdes per una única load_show_key
, funció encarregada d'enviar a infobox l'etiqueta i el valor corresponent a la clau, si troba un valor per la clau.
Per fer una crida senzilla a una propietat de WD cal escriure-la tal com s'ha assenyalat amb l'ús de la preinfotaula.
Amb més facilitats, admet
- Crides complexes a WD, per exemple es pot escriure:
local items = {
[MLMT.k.Args] = {
...
[Prei.k.new_item] = {"new_item", {"P12345678 OR P87654321",
formatting='[http://www.aweb.org/?id=$1 $1]',
list='firstrank',},
},
...
- Admet diverses crides a WD, en l'exemple si falla la primera crida, el módul efectua la segona crida:
local items = {
[MLMT.k.Args] = {
...
[Prei.k.new_item] = {"new_item", {"P12345678 OR P87654321",
formatting='[http://www.aweb.org/?id=$1 $1]',},
{"P123456789",
formatting='[http://www.otherweb.org/?id=$1 $1',},
},
...
- Admet la formatació per a un paràmetre que s'entri només manualment, així:
local items = {
[MLMT.k.Args] = {
...
[Prei.k.new_item] = {"new_item", {formatting='[http://www.unaweb.org/?id=$1 $1]'}},
...
- Admet crear un paràmetre el valor del qual només sigui obtingut de WD, així:
local items = {
[MLMT.k.Args] = {
...
[Prei.k.new_item] = {"", "P12345678",},
...
però en aquest cas s'hauria de modificar la funció que comprova precisament que no hi hagi una petició del paràmetre sense nom assignat:
function arg_names_types_from_key (key)
return SA.CheckIsStrOrTab (itemsM[MLMT.k.Args][key][1], key), MLMT.IT.s
end
per una funció semblant a:
function arg_names_types_from_key (key)
if key == Prei.k.new_item then
return nil
else
return SA.CheckIsStrOrTab (itemsM[MLMT.k.Args][key][1], key), MLMT.IT.s
end
end