Módulo:Traducción de plantillas
Ir a la navegación
Ir a la búsqueda
Uso
Este módulo vale para traducir una plantilla a otra. Su función principal es eliminar los parámetros sin valor y eleiminar los prefijos sufijos y otros elementos de las imágenes o url siempre que se aporten los parámetros correspondientes.
Parámetros
{{#invoke:Traducción de plantillas|parametro}}
p_nombre
: Nombre de la plantilla a la que se quiere traducir.p_imagen
: Nombre del parámetro imagen sobre la que se quiere que se eliminen corchetes, prefijos y sufijos.p_imagen2
: Nombre del parámetro de una segunda imagen sobre la que se quiere que se eliminen corchetes, prefijos y sufijos.p_url
: Nombre del parámetro web sobre el que se quiere que se eliminen corchetes y prefijohttp://
p_url2
: Nombre del parámetro de una segunda web sobre el que se quiere que se eliminen corchetes y prefijohttp://
p_ordenar
: Orden en que se quiere que se devuelvan los parámetros. Se deben incluir una lista con todos los parámetros separados por una coma sin espacios y si se omite devolverá los parámetros en un orden aleatorio diferente al que se da en la plantilla.
--Módulo para traducir plantillas local p = {} local args function imagenSinPrefijos(archivo)--Función auxiliar para quitar prefijos y sufijos al enlace de una imagen local imagen = {} if archivo ~= nil then if string.find(archivo, '[Aa]rchivo') then imagen = string.gsub(archivo,'..[Aa]rchivo:(.*\.%a%a%a)|.*','%1') elseif string.find(archivo, '[Ff]ile') then imagen = string.gsub(archivo,'..[Ff]ile:(.*\.%a%a%a)|.*','%1') elseif string.find(archivo, '[Ii]magen') then imagen = string.gsub(archivo,'..[Ii]magen:(.*\.%a%a%a)|.*','%1') elseif string.find(archivo, '[Ii]mage') then imagen = string.gsub(archivo,'..[Ii]mage:(.*\.%a%a%a)|.*','%1') else imagen = archivo end else imagen = '' end return imagen end function url(web) -- Función auxiliar para quitar prefijos y corchetes a una url -- Ejemplos: -- - ''[http://www.basketfrance.com www.basketfrance.com]'' --> www.basketfrance.com -- - ''[http://www.fab.ad Ir al sitio.]'' --> www.fab.ad -- - ''No tiene'' --> local cambio = web if not cambio then return cambio end -- Salir si la dirección a convertir está vacía -- Eliminar negritas y cursivas cambio=string.gsub(cambio,"'''","") if not cambio then return cambio end cambio=string.gsub(cambio,"''","") if not cambio then return cambio end -- Eliminar corchetes cambio = string.gsub(cambio,'%[(.+)%]','%1',1) if not cambio then return cambio end -- Eliminar el texto del enlace externo cambio = string.match(cambio,'%S+') if not cambio then return cambio end -- Eliminar el protocolo cambio = string.gsub(cambio,'http:%/%/(.*)','%1') if not cambio then return cambio end --Eliminar la url si no comienza por www cambio = string.match(cambio,'www.*') return cambio end function ordenar(parametro) local ordenar = parametro['p_ordenar'] if ordenar then nombreParametro = mw.text.split (ordenar,',') return nombreParametro else return '' end end function indexNum(tabla) --Convierte en númericos los índices que son string local copia = {} local cont = 0 for k, v in pairs(tabla) do cont = cont + 1 copia[cont] = v end -- return table.sort(copia,ordenar) return copia end function traductor(parametro,separador) local plantilla = {} if args['p_nombre'] then plantilla = parametro['p_nombre'] else plantilla = '' end if plantilla ~= '' then if next(parametro) ~= '' then if parametro['p_url'] and parametro[parametro['p_url']] then parametro[parametro['p_url']] = url(parametro[parametro['p_url']]) --Quitamos prefijos de URL end if parametro['p_url2'] and parametro[parametro['p_url2']] then parametro[parametro['p_url2']] = url(parametro[parametro['p_url2']]) --Quitamos prefijos de URL2 end if parametro['p_imagen'] and parametro[parametro['p_imagen']] then parametro[parametro['p_imagen']] = imagenSinPrefijos(parametro[parametro['p_imagen']]) -- Quitamos prefijos de imagen end if parametro['p_imagen2'] and parametro[parametro['p_imagen2']] then parametro[parametro['p_imagen2']] = imagenSinPrefijos(parametro[parametro['p_imagen2']]) -- Quitamos prefijos de imagen2 end local ordenar = ordenar(parametro) local par = {} for k, v in pairs (parametro) do -- Quitamos los parámetros internos k=tostring(k) if mw.ustring.sub(k, 1, 2) ~= 'p_' then par[k] = v end end local cont = 0 local linea = {} local np = {} if ordenar[1] then np = ordenar else np = par end for k, v in pairs(np) do -- Creamos linea de la plantilla local ko = {} local vo = {} if ordenar[1] then ko = par[v] vo = v else ko = v vo = k end cont = cont + 1 -- Elimino líneas cuyo parámetro valga '?' o no tenga valor if not ko or ko == '?' or ko=='' then linea[cont] = '' elseif separador == '' then linea[cont] = tostring('|' .. vo .. '=' .. ko) else local espacio = string.rep (' ', 17 - mw.ustring.len(vo)) -- Separación Param = linea[cont] = tostring(separador..'| ' .. vo .. espacio .. '= ' .. ko) end end if next(linea) then if separador=='' then return marco:preprocess('{{' .. plantilla .. table.concat(linea) ..'}}') else return marco:preprocess('{{' .. plantilla .. table.concat(linea) ..'\n}}') -- Crea la plantilla con sus parámetros end else return '' end else return '' end else return '<span class="error">No se ha definido la plantilla</span>' end end function p.ficha(frame) marco = frame local origArgs = {} if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end args = {} for k, v in pairs(origArgs) do args[k] = v end return traductor(args,'\n') end function p.plantilla(frame) marco = frame local origArgs = {} if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end args = {} for k, v in pairs(origArgs) do args[k] = v end return traductor(args,'') end return p