stringtranslate.com

Módulo:WikidataIB

-- Versión: 2023-07-10-- Módulo para implementar el uso de una lista negra y una lista blanca para los campos del cuadro de información-- Puede tomar un parámetro con nombre |qid que es el ID de Wikidata para el artículo-- si no se proporciona, se utilizará el ID de Wikidata asociado con la página actual.-- Los campos en la lista negra nunca se deben mostrar, es decir, el módulo debe devolver nil en todas las circunstancias-- Los campos en la lista blanca devuelven el valor local si existe o el valor de Wikidata en caso contrario-- El nombre del campo desde el que se llama a esta función se pasa en el parámetro nombrado |nombre-- El nombre es obligatorio cuando se utiliza una lista negra o una lista blanca.-- por lo que el módulo devuelve nil si no se proporciona.-- la lista negra se pasa en el parámetro nombrado |suppressfields (o |spf)-- la lista blanca se pasa en el parámetro nombrado |fetchwikidata (o |fwd)requerir("estricto")p local = {}cdate local: inicializar como nulo y cargar la función _complex_date solo si es necesario-- Módulo:La fecha compleja se carga de forma diferida y tiene las siguientes dependencias:-- Módulo: Calendario-- Módulo: ISOdate-- Módulo:FechaI18n-- Módulo: I18n/fecha compleja-- Módulo:Ordinal-- Módulo: I18n/ordinal-- Módulo:SíNo-- Módulo:Formatnum-- Módulo: Lingüística---- Lo siguiente, tomado de https://www.mediawiki.org/wiki/Special:Purge/Wikibase/DataModel#Dates_and_times,-- es necesario utilizar el Módulo:Fecha compleja que aparentemente requiere precisión de fecha como una cadena.-- Funcionaría mejor si sólo los autores de la página de mediawiki pudieran escribir "milenio".dp local = {[6] = "milenio",[7] = "siglo",[8] = "década",[9] = "año",[10] = "mes",[11] = "día",}i18n locales ={["errores"] ={["property-not-found"] = "Propiedad no encontrada.",["No se ha suministrado ninguna propiedad"] = "No se ha suministrado ninguna propiedad",["entity-not-found"] = "Entidad de Wikidata no encontrada.",["unknown-claim-type"] = "Tipo de reclamo desconocido.",["unknown-entity-type"] = "Tipo de entidad desconocida.",["qualifier-not-found"] = "Calificador no encontrado.",["site-not-found"] = "Proyecto Wikimedia no encontrado.",["labels-not-found"] = "No se encontraron etiquetas.",["descriptions-not-found"] = "No se encontraron descripciones.",["aliases-not-found"] = "No se encontraron alias.",["unknown-datetime-format"] = "Formato de fecha y hora desconocido.",["local-article-not-found"] = "El artículo está disponible en Wikidata, pero no en Wikipedia",["dab-page"] = " (dab)",},["meses"] ={"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio","Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"},["siglo"] = "siglo",["A.C."] = "A.C.",["AEC"] = "AEC",["ordinal"] ={[1] = "st",[2] = "nd",[3] = "rd",["predeterminado"] = "th"},["filespace"] = "Archivo",["Desconocido"] = "Desconocido",["NaN"] = "No es un número",-- Establezca lo siguiente en el nombre de una categoría de seguimiento,-- por ejemplo "[[Categoría:Artículos con información faltante de Wikidata]]", o "" para deshabilitar:["missingininfocat"] = "[[Categoría:Artículos con información faltante de Wikidata]]",["editonwikidata"] = "Editar esto en Wikidata",["latestdatequalifier"] = función (fecha) devuelve "antes de " .. fecha de finalización,-- algunos idiomas, por ejemplo el bosnio, utilizan un punto como sufijo después de cada número en una fecha["sufijonuméricofecha"] = "",["separador de lista"] = ", ",["multiplicadores"] = {[0] = "",[3] = "mil",[6] = " millón",[9] = "mil millones",[12] = " billón",}}-- Esto permite que un módulo de internacionalización anule la tabla anterior.si 'en' ~= mw.getContentLanguage():getCode() entoncesrequire("Módulo:i18n").loadI18n("Módulo:WikidataIB/i18n", i18n)fin-- Este fragmento de código HTML implementa un contenedor plegable. Compruebe que las clases existen en su wiki.colapso localdiv = '<div clase="mw-collapsible mw-collapsed" estilo="ancho:100%; desbordamiento:automático;" datos-expandtext="{{int:mostrar}}" datos-collapsetext="{{int:ocultar}}">'--Algunos elementos no deberían estar vinculados.-- Cada wiki puede crear una lista de aquellos en Módulo:WikidataIB/nolinks-- Debe devolver una tabla llamada itemsindex, que contenga el valor verdadero para cada elemento que no se vincularáenlace local no válido = {}nolinks_exists local, nolinks = pcall(mw.loadData, "Módulo:WikidataIB/nolinks")Si no hay enlaces, entoncesnolink = sin enlaces.itemsindexfin-- Para satisfacer las necesidades de Wikipedia: Manual de estilo/Títulos, ciertos tipos de elementos aparecen en cursiva y otros entre comillas.-- El submódulo [[Module:WikidataIB/titleformats]] enumera los identificadores de entidad utilizados en 'instancia de' (P31),-- que permite a este módulo identificar los valores que deben formatearse.-- WikidataIB/titleformats exporta una tabla p.formats, que está indexada por id de entidad y contiene el valor " o ''formatos locales = {}titleformats_exists local, titleformats = pcall(mw.loadData, "Módulo:WikidataIB/titleformats")Si titleformats_exists entoncesformatos = títuloformatos.formatosfin-------------------------------------------------- ------------------------- Funciones privadas-------------------------------------------------- --------------------------------------------------------------------------- -------------------------makeOrdinal debe internacionalizarse junto con lo anterior:-- toma el número cardinal como numérico y devuelve el ordinal como una cadena--Necesitamos tres excepciones en inglés para 1º, 2º, 3º, 21º, 31º, etc.-------------------------------------------------- ------------------------- Dependencias: ninguna-------------------------------------------------- -----------------------local makeOrdinal = función(cardinal)sufijo ordlocal = i18n.ordinal.defaultSi el cardinal % 10 == 1 entoncessufijoOrd = i18n.ordinal[1]De lo contrario, si el cardinal % 10 == 2 entoncessufijoOrd = i18n.ordinal[2]De lo contrario, si el cardinal % 10 == 3 entoncessufijoOrd = i18n.ordinal[3]fin-- En inglés, 1, 21, 31, etc. usan 'st', pero 11, 111, etc. usan 'th'--Lo mismo ocurre con el 12 y el 13, etc.si (cardinal % 100 == 11) o (cardinal % 100 == 12) o (cardinal % 100 == 13) entoncesordsuffix = i18n.ordinal.predeterminadofinvolver a cadena(cardinal) .. sufijo de ordenfin-------------------------------------------------- ------------------------- findLang toma un parámetro "langcode" si se proporciona y es válido-- de lo contrario, intenta crearlo a partir del idioma configurado por el usuario ({{int:lang}})- en su defecto, utiliza el lenguaje del contenido del wiki.-- Devuelve un objeto de lenguaje-------------------------------------------------- ------------------------- Dependencias: ninguna-------------------------------------------------- -----------------------local findLang = función(código de idioma)idioma localcódigo de idioma = mw.text.trim(código de idioma o "")Si mw.language.isKnownLanguageTag(código de idioma), entoncesidiomaobj = mw.idioma.nuevo (código de idioma)demáscódigo de idioma = mw.getCurrentFrame():callParserFunction('int', {'lang'})Si mw.language.isKnownLanguageTag(código de idioma), entoncesidiomaobj = mw.idioma.nuevo (código de idioma)demásidiomaobj = mw.language.getContentLanguage()finfinvolver langobjfin-------------------------------------------------- ------------------------- _getItemLangCode toma un parámetro qid (utilizando el qid de la página actual si está en blanco)-- Si el artículo para ese qid tiene propiedad país (P17), mira el primer valor preferido-- Si el país tiene un idioma oficial (P37), se mira el primer valor preferido-- Si ese idioma oficial tiene un código de idioma (P424), devuelve el primer valor preferido- De lo contrario no devuelve nada.-------------------------------------------------- ------------------------- Dependencias: ninguna-------------------------------------------------- -----------------------local _getItemLangCode = función(qid)qid = mw.text.trim(qid o ""):upper()si qid == "" entonces qid = mw.wikibase.getEntityIdForCurrentPage() finalSi no es qid entonces regresa finprop17 local = mw.wikibase.getBestStatements(qid, "P17")[1]Si no es prop17 o prop17.mainsnak.snaktype ~= "valor", entonces devuelve finqid17 local = prop17.mainsnak.valordedatos.valor.idlocal prop37 = mw.wikibase.getBestStatements(qid17, "P37")[1]Si no es prop37 o prop37.mainsnak.snaktype ~= "valor", entonces devuelve fin.qid37 local = prop37.mainsnak.valordedatos.valor.idlocal prop424 = mw.wikibase.getBestStatements(qid37, "P424")[1]Si no es prop424 o prop424.mainsnak.snaktype ~= "valor", entonces devuelve findevolver prop424.mainsnak.datavalue.valuefin-------------------------------------------------- ------------------------- roundto toma un número (x)-- y lo devuelve redondeado a (sf) cifras significativas-------------------------------------------------- ------------------------- Dependencias: ninguna-------------------------------------------------- -----------------------redondeo local = función(x, sf)si x == 0 entonces devuelve 0 finlocal s = 1Si x < 0 entoncesx = -xs = -1finsi sf < 1 entonces sf = 1 finp local = 10 ^ (matemática.floor(math.log10(x)) - sf + 1)x = matemáticas.piso(x / p + 0,5) * p * s-- si es integral, convertir a un entero:si x == math.floor(x) entonces x = math.floor(x) findevolver xfin-------------------------------------------------- ------------------------- decimalToDMS toma grados decimales (x) con precisión (p)-- y devuelve grados/minutos/segundos según la precisión-------------------------------------------------- ------------------------- Dependencias: ninguna-------------------------------------------------- -----------------------decimalToDMS local = función(x, p)-- si no se proporciona p, utilice una precisión de alrededor de 0,1 segundossi no es tonumber(p) entonces p = 1e-4 finlocal d = matemáticas.piso(x)ms locales = (x - d) * 60Si p > 0,5 entonces la precisión es > 1/2 gradosi ms > 30 entonces d = d + 1 finms = 0finlocal m = matemáticas.piso(ms)local s = (ms - m) * 60Si p > 0,008 entonces la precisión es > 1/2 minuto.si s > 30 entonces m = m +1 fins = 0De lo contrario, si p > 0,00014 entonces la precisión es > 1/2 segundos = math.floor(s + 0.5)De lo contrario, si p > 0,000014 entonces la precisión es > 1/20 de segundos = matemáticas.piso(10 * s + 0.5) / 10De lo contrario, si p > 0,0000014 entonces la precisión es > 1/200 de segundos = matemáticas.piso(100 * s + 0.5) / 100De lo contrario, limite el límite a 3 lugares dec por ahoras = matemáticas.piso(1000 * s + 0.5) / 1000findevuelve d, m, sfin-------------------------------------------------- ------------------------- decimalPrecision toma un decimal (x) con precisión (p)