Este módulo convierte un valor de una unidad de medida a otra. Por ejemplo:
{{convert|123|lb|kg}}
→ 123 libras (56 kg)El módulo se llama mediante una plantilla: los parámetros que se pasan a la plantilla son utilizados por este módulo para controlar cómo se realiza una conversión. Por ejemplo, las unidades se pueden abreviar (como kg
) o mostrar como nombres (como kilogram
), y el valor de salida se puede redondear a una precisión especificada. Para obtener información sobre el uso, consulte Ayuda:Convertir .
Las plantillas que invocan este módulo son:
Se requieren los siguientes módulos:
Los siguientes módulos son opcionales y se utilizan solo si es necesario y si el módulo existe:
Para el soporte de Wikidata se requieren los siguientes módulos:
Las siguientes páginas de ayuda están disponibles:
Una página que contiene un error de conversión se agrega a la siguiente categoría oculta, siempre que la página esté en un espacio de nombres específico (artículos, de manera predeterminada):
Las unidades se definen en el wikitexto de la lista maestra de unidades.
El módulo: Convert/data se transcluye en cada página mediante el módulo de conversión, por lo que experimentar con una nueva unidad en ese módulo implicaría una sobrecarga significativa. El módulo Module: Convert/extra es una alternativa que solo se transcluye en páginas con una unidad que no está definida en el módulo de datos principal.
Módulo discusión:Convertir/mostrar enumera todos los enlaces de unidad para que puedan verificarse.
Al realizar un cambio, copie los módulos actuales en las páginas del entorno aislado y luego edite las copias del entorno aislado:
Utilice la siguiente plantilla para probar los resultados (ejemplo {{convert/sandbox|123|lb|kg}}
):
La plantilla:Convert/sandbox invoca el módulo:Convert/sandbox con el parámetro |sandbox=sandbox
que hace que convert utilice los módulos sandbox en lugar de los módulos normales.
Lo siguiente debe usarse para probar los resultados de la edición de los módulos de conversión.
No es necesario guardar una página de casos de prueba antes de ver los resultados de las pruebas. Por ejemplo, se puede editar la plantilla:Convert/testcases/sandbox4 para cambiar las pruebas. Mientras sigue editando esa página, pegue " Template talk:Convert/testcases/sandbox4
" (sin comillas) en el cuadro de título de la página debajo de "Vista previa de la página con esta plantilla" y luego haga clic en "Mostrar vista previa".
La plantilla que invoca este módulo puede definir opciones para configurar el módulo. Por ejemplo:
{{#invoke:convert|convert|numdot=,|numsep=.}}
Otras opciones, con valores por defecto, son:
|maxsigfig=14
– número máximo de cifras significativas|nscat=0
– espacios de nombres (separados por comas) en los que un error o advertencia agrega una categoría a la página|warnings=0
– 0 (cero) desactiva las advertencias; 1 muestra advertencias importantes; 2 muestra todas las advertenciasUna opción en la plantilla puede especificar que se utilicen las versiones sandbox de los módulos. Si se especifica, el texto del lado derecho del signo igual debe ser el nombre de la subpágina de cada módulo sandbox.
|sandbox=sandbox
– omitir para funcionamiento normalTodo el texto utilizado para los parámetros de entrada y para los mensajes y categorías de salida se puede personalizar. Por ejemplo, en enwiki |lk=on
se puede utilizar la opción para vincular cada unidad mostrada a su artículo. Los " lk
" y " on
" se pueden reemplazar con cualquier texto deseado. Además, los números de entrada y salida se pueden formatear y pueden utilizar dígitos en el idioma local. Consulte la guía de traducción para obtener más información.
¡Documenta los módulos para acceder a Wikidata!
-- Convertir un valor de una unidad de medida a otra.-- Ejemplo: {{convert|123|lb|kg}} --> 123 libras (56 kg)-- Consulte la [[:es:Guía de Template:Convert/Transwiki]] si va a copiar a otra wiki.MENOS local = '−' -- Unicode U+2212 SIGNO MENOS (UTF-8: e2 88 92)abs locales = matemáticas.abspiso local = math.floorformato local = cadena.formatolog10 local = matemáticas.log10ustring local = mw.ustringulen local = ustring.lenusub local = ustring.sub-- Opciones de configuración para mantener los valores mágicos en una ubicación.-- Los datos de conversión y el texto del mensaje se definen en módulos separados.configuración local, maxsigfignumdot local: debe ser '.' o ',' o un carácter que funcione en una expresión regularnumsep local, numsep_remove, numsep_remove2código de datos local, todas las unidadescódigo de texto localvarname local: puede ser un código para usar nombres de variables que dependen del valorlocal from_en_table -- para traducir una cadena de salida de dígitos en al idioma locallocal to_en_table -- para traducir una cadena de entrada de dígitos en el idioma local a en-- Utilice translation_table en convert/text para cambiar lo siguiente.local en_default -- true usa lang=en a menos que convert tenga lang=local o dígitos localesmétodo_grupo local = 3: código para la cantidad de dígitos que hay en un grupolocal per_word = 'per' -- para unidades como "litros por kilómetro"sufijo_plural_local = 's' - probablemente el único otro valor útil sea '' para deshabilitar los nombres de unidades en plurallocal omitsep - verdadero para omitir el separador antes del símbolo/nombre local-- Todas las unidades deben definirse en el módulo de datos. Sin embargo, para poder realizar cambios rápidos-- y experimentos, cualquier unidad desconocida se busca en un módulo de datos adicional, si existe.-- Ese módulo se incluiría solo en una pequeña cantidad de páginas, por lo que debería haber- poca sobrecarga del servidor al realizar cambios, y los cambios deberían propagarse rápidamente.módulo extra_local: nombre del módulo con unidades adicionalesunidades extra_locales -- nulas o tabla de unidades extra de módulo_extra-- Algunas opciones en la plantilla de invocación pueden establecer variables utilizadas más adelante en el módulo.local currency_text -- para un símbolo de moneda definido por el usuario: {{convert|12|$/ha|$=€}} (el euro reemplaza al dólar)función local from_en(texto)-- La entrada es una cadena que representa un número en dígitos con signo decimal '.'-- sin agrupación de dígitos (que se realiza justo después de llamar a esto).-- Devuelve la traducción de la cadena con numdot y dígitos en el idioma local.si numdot ~= '.' entoncestexto = texto:gsub('%.', numdot)finSi desde_en_table entoncestexto = texto:gsub('%d', from_en_table)fintexto de retornofinfunción local to_en(texto)-- La entrada es una cadena que representa un número en el idioma local con-- una marca decimal numdot opcional y agrupación de dígitos numsep.-- Devuelve la traducción de la cadena con el signo '.' y los dígitos en,-- y sin separadores (deben eliminarse aquí para manejar casos como este)-- numsep = '.' y numdot = ',' con entrada "1.234.567,8").Si to_en_table entoncestexto = ustring.gsub(texto, '%d', to_en_table)finSi numsep_remove entoncestexto = texto:gsub(numsep_remove, '')finsi numsep_remove2 entoncestexto = texto:gsub(numsep_remove2, '')finsi numdot ~= '.' entoncestexto = texto:gsub(numdot, '.')fintexto de retornofinfunción local decimal_mark(texto)-- Devuelve "," si el texto probablemente usa coma como signo decimal o no tiene signo decimal.-- Devuelve '.' si el texto probablemente esté usando un punto como marca decimal.-- De lo contrario, no devuelve nada (marca decimal desconocida).si no es texto:find('[.,]') entonces devuelve ',' fintexto = texto:gsub('^%-', ''):gsub('%+%d+/%d+$', ''):gsub('[Ee]%-?%d+$', '')decimal local =texto:match('^0?([.,])%d+$') otexto:match('%d([.,])%d?%d?$') otexto:coincidencia('%d([.,])%d%d%d%d+$')Si es decimal, entonces devuelve decimal fin.si texto:match('%.%d+%.') entonces devuelve ',' finsi texto:match('%,%d+,') entonces devuelve '.' finfinadd_warning local, with_separator -- declaraciones de reenvíofunción local to_en_with_check(texto, parámetros)-- Versión de to_en() para una wiki que usa numdot = ',' y numsep = '.' para comprobar-- texto (un número de entrada como una cadena) que podría haber sido copiado de enwiki.-- Por ejemplo, en '1.234' el '.' podría ser un signo decimal o un separador de grupo.-- De viwiki.Si to_en_table entoncestexto = ustring.gsub(texto, '%d', to_en_table)finsi decimal_mark(texto) == '.' entoncesoriginal local = textotexto = texto:gsub(',', '') -- por ejemplo, interpretar "1,234.5" como un valor enwikiSi parms entoncesadd_warning(parms, 0, 'cvt_enwiki_num', original, con_separador({}, texto))findemásSi numsep_remove entoncestexto = texto:gsub(numsep_remove, '')finsi numsep_remove2 entoncestexto = texto:gsub(numsep_remove2, '')finsi numdot ~= '.' entoncestexto = texto:gsub(numdot, '.')finfintexto de retornofinfunción local omit_separator(id)-- Devuelve verdadero si no debe haber ningún separador antes de id (un símbolo de unidad o nombre).-- Para zhwiki, no debe haber separador si id usa caracteres locales.--El siguiente truco debería ser una prueba suficiente.Si omite, entoncessi id:sub(1, 2) == '-{' entonces -- para la variante del idioma del contenido "-{...}-"devuelve verdaderofinsi id:byte() > 127 entonceslocal primero = usub(id, 1, 1)si primero ~= 'Å' y primero ~= '°' y primero ~= 'µ' entoncesdevuelve verdaderofinfinfindevuelve id:sub(1, 1) == '/' -- sin separador antes de las unidades como "/ha"finmódulo_ortográfico local: nombre del módulo que puede deletrear númeroscorrector ortográfico local: función de ese módulo para controlar la ortografía (configúrela si es necesario)wikidata_module local, wikidata_data_module - nombres de los módulos de Wikidatawikidata_code local, wikidata_data: tablas exportadas desde esos módulos (configúrelas si es necesario)función local set_config(args)-- Establecer las opciones de configuración desde la plantilla #invoke o valores predeterminados.configuración = argumentosmaxsigfig = config.maxsigfig o 14 – número máximo de cifras significativasmódulo de datos local, módulo de textosandbox local = config.sandbox y ('/' .. config.sandbox) o ''data_module = "Módulo:Convertir/datos" .. sandboxtext_module = "Módulo:Convertir/texto" .. sandboxextra_module = "Módulo:Convertir/extra" .. sandboxwikidata_module = "Módulo:Convertir/wikidata" .. zona protegidawikidata_data_module = "Módulo:Convertir/wikidata/datos" .. zona de pruebasspell_module = "Módulo:ConvertirNumeric"código_datos = mw.loadData(módulo_datos)código_texto = mw.loadData(módulo_texto)todas_unidades = código_de_datos.todas_unidadestraducción local = código_texto.tabla_traducciónSi la traducción entoncesnumdot = traducción.numdotnumsep = traducción.numsepsi numdot == ',' y numsep == '.' entoncessi text_code.all_messages.cvt_enwiki_num entoncesa_en = a_en_con_chequefinfinSi es traducción.grupo entoncesmétodo_grupo = traducción.grupofinSi traducción.por_palabra entoncespor_palabra = traducción.por_palabrafinSi traducción.plural_suffix entoncessufijo_plural = traducción.sufijo_pluralfinvarname = traducción.varnamefrom_en_table = traducción.from_enuso_solución_alternativa local = verdaderoSi se usa_workaround entonces-- 2013-07-05 Solución alternativa de error haciendo una copia de la tabla requerida.-- mw.ustring.gsub falla con una tabla (to_en_table) como reemplazo,-- si se accede a la tabla a través de mw.loadData.fuente local = traducción.to_enSi la fuente entoncespara_en_tabla = {}para k, v en pares(fuente) hacera_en_tabla[k] = vfinfindemásto_en_table = traducción.to_enfinsi traducción.lang == 'en default' entoncesen_default = true -- para hiwikifinomitsep = traducción.omitsep -- para zhwikifinnumdot = config.numdot o numdot o '.' -- marca decimal antes de dígitos fraccionariosnumsep = config.numsep o numsep o ',' -- separador de grupo para números-- numsep debe ser "," o "." o "" o " " o un carácter Unicode.-- numsep_remove debe funcionar en una expresión regular para identificar los separadores que se eliminarán.si numsep ~= '' entoncesnumsep_remove = (numsep == '.') y '%.' o numsepfinsi numsep ~= ',' y numdot ~= ',' entoncesnumsep_remove2 = ',' -- por lo que los números copiados de enwiki funcionaránfinfincolección de funciones locales()-- Devuelve una tabla para guardar elementos.devolver {n = 0,añadir = función (yo, elemento)yo mismo.n = yo mismo.n + 1self[self.n] = elementofin,}finfunción local dividir(numerador, denominador)-- Devuelve el cociente de números enteros, resto resultante de dividir los dos-- números dados, que deben ser enteros sin signo.cociente local, resto = suelo(numerador / denominador), numerador % denominadorsi no (0 <= resto y resto < denominador) entonces-- Los límites de punto flotante pueden necesitar esto, como en {{convert|160.02|Ym|ydftin}}.resto = 0findevolver cociente, restofinfunción local split(texto, delimitador)-- Devuelve una tabla numerada con campos de texto dividido.-- El delimitador se utiliza en una expresión regular sin escape (por ejemplo, '.' fallaría).-- A cada campo se le eliminan los espacios iniciales y finales.local t = {}texto = texto .. delimitador -- para obtener el último elementopara el elemento en el texto:gmatch('%s*(.-)%s*' .. delimitador) hacertabla.insert(t, elemento)finvolver tfintira de función local (texto)-- Si el texto es una cadena, devuelve su contenido sin caracteres iniciales ni finales.-- espacio en blanco. De lo contrario, devuelve nulo (un argumento nulo da como resultado nulo).si tipo(texto) == 'cadena' entoncesdevolver texto:match("^%s*(.-)%s*$")finfinfunción local table_len(t)-- Devuelve la longitud (<100) de una tabla numerada para reemplazar #t que es-- documentado para no funcionar si se accede a t mediante mw.loadData().para i = 1, 100 hacer