Ajuda:Preinfotaules multilingües
Les plantilles multilingües que utilitzen preinfotaules, consten de 6 pàgines: 1 plantilla que crida a un dels 3 mòduls i 2 plantilles. L'última plantilla crida al mòdul infobox.
Els administradors locals de la infotaula només hauríem de modificar el mòdul i18n.
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. |
Creació de paràmetres no-estàndard a i18n
[modifica]Els paràmetres estàndard són els subministrats amb el paquet de la infotaula. Ocasionalment es pot voler:
- Canviar el format d'un paràmetre.
- Que varis paràmetres (habitualment no-estàndard) passin el seu contingut a un paràmetre estàndard.
Això comporta tres passos en el final del mòdul principal/i18n:
- Definició de les claus pels paràmetres no-estàndard. Claus definides a
local k
. - Definició de les variables no-estàndard. Variables definides en
p.new_args
. - Establir com es gestionen les variables que donen un valor a una variable estàndard. A través de
function p.local_func
.
Definició de les claus pels paràmetres 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 (amb lletres de la "a" a la "z", "_" i xifres que no estiguin com a primer caràcter) 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ó dels noms pels paràmetres no-estàndard
[modifica]Per defecte:
p.new_args = { -- explicacions en anglès... }
Llavors (i per exemple) per establir dos paràmetres cal definir-ne el seu nom. Suposem que tinguin de clau local_1
i local_2
. Llavors, utilitzant el tipus dels paràmetres:
p.new_args = { -- explicacions en anglès... [k.local_1] = "local_1", [k.local_2] = "local_2", }
O amb més d'una denominació:
p.new_args = { -- explicacions en anglès... [k.local_1] = {"local_1","Local 1"}, [k.local_2] = "local_2", }
Definició de restriccions pels paràmetres no-estàndard
[modifica]Opcionalment es poden establir restriccions, amb la sintaxi ja explicada aquí. Per exemple, per a un enter positiu:
p.new_lims = { -- explicacions en anglès... [k.local_1] = "i+", }
Establir com es gestionen les variables
[modifica]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 preinfotaula
[modifica]Introducció
[modifica]El paquet té dos parts diferenciades:
- La preinfotaula o mòduls en lua, que enviarà els paràmetres i etiquetes a:
- La plantilla en llenguatge wiki.
Aquesta situació és més laboriosa i l'execució de la infotaula és més lenta, però no cal saber programar en lua.
Afegir un nou element
[modifica]Si es vol afegir un nou element, que com la majoria d'elements, tindrà una etiqueta i prendrà un valor.
Per exemplificar-ho, es vol afegir "Element nou".
Cal seguir de forma acurada els següents passos:
A "Principal/items":
[modifica]- Afegir una clau identificativa per a "Element nou" i que s'utilitzarà en tots els mòduls. Si el nom fos "new_item".
- Escriure enmig de la llista (i al lloc que toqui, per facilitar-ne la cerca, per ordre d'aparició en la infotaula, i només per aquest motiu):
p.k = { ... new_item = "new_item ", ... }
- Escriure (en el lloc que toqui) en la llista:
p.idx = { ... {"al", p.k.new_item}, ... }
El primer element és segons el tipus d'etiqueta-paràmetre.
A "Principal"
[modifica]Suposem que s'ha definit "Principal/items" com a "Pi", apareixerà al principi del mòdul com:
local Pi = require "Module:Principal/items"
- Escriure (en el lloc que toqui) en la llista de paràmetres:
local items = { [MLMT.k.Args] = { ... [Prei.k.new_item] = {"new_item", "",}, ...
Si es vol que prengui el valor de la propietat P12345678, escriure:
local items = { [MLMT.k.Args] = { ... [Prei.k.new_item] = {"new_item", "_P12345678",}, ...
Observeu que la propietat va precedida del guió baix.
Si depengués de dos valors possibles, P12345678 i P87654321, escriure "_P12345678-P87654321"
- Escriure (en el lloc que toqui) en la llista d'etiquetes:
local items = { [MLMT.k.Labels] = { ... [Prei.k.new_item] = "New item", ...
Així, per defecte, l'etiqueta a presentar serà "New item". Ja la canviarem.
A "Principal/i18n"
[modifica]Suposem que s'ha definit "Principal/items" com a "Prei", apareixerà al principi de tot del mòdul com:
local Prei = require "Module:Pre/items"
Afegir la traducció:
- Escriure (en el lloc que toqui) en la llista de paràmetres:
local items = { [MLMT.k.Args] = { ... [Prei.k.new_item] = "nou_element", ...
D'aquesta forma, l'editor de l'article pot utilitzar Prei.k.new_item
des de |nou_element=
o |new_item=
.
Si no s'hagués escrit en aquesta secció o senzillament s'hagués anotat:
local items = { [MLMT.k.Args] = { ... [Prei.k.new_item] = "", ...
El valor només seria cridat per |new_item=
.
Si es vulgués més d'una forma d'entrada en la forma localitzada, per exemple "nova_entrada", s'hauria d'escriure:
local items = { [MLMT.k.Args] = { ... [Prei.k.new_item] = {"nou_element","nova_entrada"}, ...
- Escriure (en el lloc que toqui) en la llista d'etiquetes:
local items = { .... [MLMT.k.Labels] = { ... [Prei.k.new_item] = "Nou element", ...
Aquest "Nou element" substituirà a "New item" definit a "Prei".
Verificacions dels paràmetres
[modifica]Per a assignar un tipus de paràmetres als paràmetres s'anotarà a Principal/items la següent taula cal escriure (si no existeix) el nom d'arg_lims
. Si es vol que el nou element només pugui ser un número, cal escriure:
p.arg_lims = { ... {p.k.new_item', 'i'}, ... }
Generalment ja existirà a Principal/items la taula p.arg_lims
, en cas contrari hi ha escrit en el codi del mòdul:
i18n = GIBT.SetAttribToArgs (i18n, {})
-- per les llistesi18nM = GIBT.SetAttribToArgs (i18nM, {})
-- pel funcionament de la plantilla.
Llavors s'haurà de canviar a:
i18n = GIBT.SetAttribToArgs (i18n, Pi.arg_lims)
-- per les llistesi18nM = GIBT.SetAttribToArgs (i18nM, Pi.arg_lims)
-- pel funcionament de la plantilla.
No s'haurà de fer cap altra canvi a menys que es vulgui que la captura del paràmetre hagi de tenir un comportament no usual.
Assignació de valors per defecte als paràmetres
[modifica]Un exemple podria ser l'entrada d'un enter, que en el cas de que no s'assigni manualment per l'editor de l'article, s'assigni un valor per defecte. En aquests casos, i sempre en el mòdul principal, s'haurà de posar abans de la funció GIBT.std_lab_arg_to_tab
(funció que efectua la captura dels paràmetres assignats manualment).
Per exemple, si es vol donar un valor predeterminat de 160 a l'amplada, que correspon a la clau Prei.k.width
. Llavors s'hauria d'afegir la funció:
GIBT.arg_of_key (args, i18nM, Prei.k.width, 160, true)
.
Si en aquest mateix exemple l'amplada tingués també d'una etiqueta llavors s'hauria d'afegir la funció:
GIBT.arg_label_of_key (args, i18nM, Prei.k.width, 160)
.
Modificacions a la plantilla
[modifica]La plantilla rebrà els següents valors del mòdul {{{val_new_item|}}}
i {{{lbl_new_item|}}}
Afegir un encapçalament
[modifica]Es tracta de repetir els passos anteriors com si el header fos una etiqueta, i lògicament fer els passos només per a l'etiqueta ([MLMT.k.Labels]
). És bona costum afegir com a clau el prefix hd_
al nom de la clau, apareixerà en negreta el nom de la clau en les llistes.