Ajuda:Preinfotaules multilingües

Multilanguage preinfoboxes

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:

  1. Definició de les claus pels paràmetres no-estàndard. Claus definides a local k.
  2. Definició de les variables no-estàndard. Variables definides en p.new_args.
  3. 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 taula vals 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)}, on k.param_1 i k.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 llistes
  • i18nM = GIBT.SetAttribToArgs (i18nM, {}) -- pel funcionament de la plantilla.

Llavors s'haurà de canviar a:

  • i18n = GIBT.SetAttribToArgs (i18n, Pi.arg_lims) -- per les llistes
  • i18nM = 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.