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.