Plantilla discusión:Lang

Contenido de la página no disponible en otros idiomas.
De Wikipedia, la enciclopedia libre

Función[editar]

Esta plantilla se puede reemplazar por su código:

<span lang="{{{1}}}" xml:lang="{{{1}}}">{{{2}}}</span>

Si responderás que todas las plantillas son reemplazables y que es mejor usar la plantilla para abreviar el código anterior, te respondería que se pueden crear plantillas con cualquier contenido, pero también que para crear tablas se deberían usar plantillas, como {{Encabezado}}, {{Leyenda}} o {{Celda}}, por ejemplo, ya que una tabla útil es más que este código:

La mínima tabla útil:
{| class="wikitable"
|-
| Celda 1
|-
| Celda 2
|-
| Celda 3
|-
|}
en comparación con esta plantilla:
<span lang="es" xml:lang="es">Texto</span>
La tabla tiene: 57
Esta plantilla tiene: aproximadamente 42 caracteres

Compará de nuevo: ¿la plantilla es más corta que la tabla, o acaso la tabla más corta que la plantilla?
Iggoul2/Si quieres responderme, ¡¡¡¡¡¡¡haz clic aquí!!!!!!! 00:25 12 jun 2013 (UTC)[responder]

Conversión a Lua[editar]

Hola, no sé si alguien tiene esto en seguimiento y me leerá, así que también lo publicaré en el café.
Llevo un tiempo trabajando en la traducción del Módulo:Lang a partir de en:Module:Lang para su uso en esta wikipedia. Es una tarea compleja por lo difícil que es encontrar los nombres correctos de TODOS los idiomas en español pero ya está casi listo.
Este módulo implementa las siguientes plantillas:

Y ya está en uso en las siguientes zonas de pruebas:

  • {{transl/zona de pruebas}}
  • {{lang/zona de pruebas}}
  • {{lang-ru/zona de pruebas}}

Además he incluido en esta página varios ejemplos para cada una de las plantillas y una tabla con la comparación completa de la implementación actual de todas las plantillas 'lang-xx' y su nueva implementación. Algunas dan error pero por lo general no hay problemas, además la migración no tendría por qué ser de todas a la vez.

Sobre los nombres[editar]

Los nombres de los idiomas son un tema complicado, la fuente original utilizada en en:Module:Lang es el estándar del IANA pero el problema es que el IANA sólo publica el listado en inglés. Por lo tanto el listado de idiomas en español es una mezcla de:

  • Nombres de los artículos sobre dichos idiomas en nuestra wikipedia.
  • Etiquetas de los elementos de Wikidata en español para esos idiomas.
  • Nombre asignado en Wikcionario a cada idioma.
  • Como último recurso se utiliza el nombre del idioma en inglés.

Esto nos deja con que la generación de los listados para nuestro idioma es bastante compleja. La solución ha sido desarrollar scripts de python que obtienen los datos mediante queries a Wikidata y los limpian y organizan para luego generar los listados. Todavía no lo tengo del todo afinado pero mi idea es publicarlo en github para que cualquiera pueda actualizar los listados cuando sea necesario.
Este proceso seguramente se podrá simplificar de forma considerable cuando la UNE publique el listado de idiomas completo en español, a raíz de una consulta con ellos he podido saber que esto está planeado para febrero o marzo de este año.


Excepto esos pequeños errores que en la mayoría de los casos se deben al uso de códigos de idioma no estandarizados no he encontrado muchos más problemas así que espero vuestra opinión sobre si está listo para usarse o no. Un saludo, josecurioso ❯❯❯ Háblame! 17:52 20 ene 2021 (UTC)[responder]

@Josecurioso, tengo entendido que el sistema no usa IANA, sino una variación del IETF. Véase mw.language. Seguramente esos pequeños problemas se resuelvan fácilmente usando las propias funciones del sistema (como mw.language.fetchlanguagename) en lugar de las tablas preformadas de Módulo:Lang/data/iana languages. -- Leoncastro (discusión) 18:46 20 ene 2021 (UTC)[responder]
@Leoncastro El problema que presentan las funciones de mw.language es que la cantidad de nombres traducidos al español que ofrecen es muy poca. Entiendo que por eso y por comodidad al desarrollar el módulo se decidió utilizar un estándar "más estándar" y tiraron de los listados que publica el IANA aquí que utilizan los códigos ISO-639-1, -2 y -3.
Esos pequeños errores que menciono vienen de varios sitios, en parte porque en MediaWiki los códigos de idioma no son 100% los mismos (porque en su día no existían en el ISO) o porque cuando se creó la plantilla lang-xx de turno el código de idioma era diferente.
En resumen, mw.language solo contiene 454 idiomas mientras que en el ISO se definen unos 7985. josecurioso ❯❯❯ Háblame! 18:58 20 ene 2021 (UTC)[responder]
PD.: Un ejemplo de los códigos que han cambiado es el Armenio, que cuando se creó {{lang-arm}} era 'arm' pero ahora es 'hye'.
@Josecurioso, no rompas la cabeza: salvo contadas excepciones como esa del armenio de {{lang-arm}} —que resulta totalmente prescindible cuando ya existe {{lang-hy}}, por lo que ya es otra cuestión diferente—, el sistema de plantillas está usando el ISO 639-1, que es de dos letras, y parece más que suficiente. -- Leoncastro (discusión) 19:20 20 ene 2021 (UTC)[responder]
Por cierto, tras limpiar una docena de usos marginales de {{lang-arm}}, ya ha quedado obsoleta y sin uso. -- Leoncastro (discusión) 19:29 20 ene 2021 (UTC)[responder]
@Leoncastro pensé que te referías al sistema de MediaWiki no al de plantillas. Por aclarar, no propongo crear 7985 plantillas lang sino hacer que si transcluyes {{Lang|lzh}} el módulo sepa que tiene que poner 'Chino Literario' y así con todos los códigos de idioma ISO 639-3. El módulo tal y como está prioriza los códigos de dos letras porque, para los idiomas que tienen, son los más utilizados. josecurioso ❯❯❯ Háblame! 19:28 20 ene 2021 (UTC)[responder]
Lo que digo es que no parece necesario que el módulo sepa interpretar los siete mil códigos ISO 639-3 de tres letras, sino que basta con que interprete los —¿doscientos?— códigos ISO 639-1 de dos letras que dice que interpreta. -- Leoncastro (discusión) 19:39 20 ene 2021 (UTC)[responder]
Es cierto que no creo que se usen mucho pero la verdad es que una vez está desarrollado el módulo no supone un esfuerzo extra soportar 400 vs 7000 códigos (excepto traducirlos). Además, bastantes de los idiomas que no entran en el ISO 639-1 tienen artículo en Wikipedia. josecurioso ❯❯❯ Háblame! 20:04 20 ene 2021 (UTC)[responder]
Mi preferencia por el ISO 639-1 no está en la cantidad de idiomas (que se pueden complementar con la codificación IETF mediante sufijos regionales), sino porque representa un estándar verdaderamente asentado, mientras que el ISO 639-3 no tiene suficiente implementación y todavía parece un borrador demasiado inestable y no exento de críticas. Incluso dentro de esos siete mil idiomas hay muchísmimos idiomas, dialectos o variantes que tampoco entran en el ISO 639-3 aunque tienen artículo en Wikipedia; sin ir muy lejos, el español chileno o el inglés estadounidense. Que se pueden identificar respectivamente como es-CL y en-US en el primer estándar, pero no tienen representación propia en el ISO 639-3. -- Leoncastro (discusión) 21:19 20 ene 2021 (UTC)[responder]
He estado investigando sobre la codificación IETF, por lo que parece en la última versión del estándar (RFC5646) se incorporaron los códigos de tres dígitos ISO 639-3 al registro de sub-etiquetas de idiomas mantenido por el IANA que forman la primera parte de las etiquetas IETF.
Entiendo que en ese caso la codificación IETF no es un estándar a parte sino un superconjunto del ISO. Como el módulo ya se basa en ese listado de etiquetas para los idiomas e incluye los listados de regiones y sistemas de escritura se podría ampliar para tratar la parte de la región -ES, -GB sin mucho problema o definir los casos concretos uno por uno como se hace en en:Module:Lang/data. A lo que voy es que esta última versión del IETF que incluye los códigos de tres dígitos parece ser lo más cerca que se puede estar de la "solución perfecta" que permita representar cualquier idioma. josecurioso ❯❯❯ Háblame! 22:53 20 ene 2021 (UTC)[responder]
He modificado el tratamiento que se hace a los códigos de idioma para tener en cuenta el código de región (si se especifica) y formar los nombres de idiomas, artículos y enlaces en función de eso añadiendo la coletilla <idioma> de <país> de forma genérica. Los idiomas cuyos artículos o nombres no se ajusten a ese esquema se manejan (como con el resto de las lenguas) desde el Módulo:Lang/data utilizando las tablas override (para nombres de lenguas) y article_name (para nombres de artículos).
Con esto el módulo se comporta de la siguiente manera en estos casos de ejemplo:
{{#invoke:lang|lang_xx_inherit|code=es-ES|Prueba|italic=default}} → en español de España: Prueba
{{#invoke:lang|lang_xx_inherit|code=es-CL|Prueba|italic=default}} → en español chileno: Prueba
{{#invoke:lang|lang_xx_inherit|code=es-UY|Prueba|italic=default}} → en español uruguayo: Prueba
{{#invoke:lang|lang_xx_inherit|code=es|Prueba|italic=default}} → en español: Prueba
{{#invoke:lang|lang_xx_inherit|code=en-GB|Test|italic=default}} → en inglés británico: Test
{{#invoke:lang|lang_xx_inherit|code=en-US|Test|italic=default}} → en inglés estadounidense: Test
Un saludo, josecurioso ❯❯❯ Háblame! 16:31 22 ene 2021 (UTC)[responder]
@Josecurioso: España, Chile y Uruguay son nombres propios de países, y como tal se escriben siempre con mayúscula inicial. -- Leoncastro (discusión) 17:21 22 ene 2021 (UTC)[responder]
@Leoncastro, ✓ Arreglado josecurioso ❯❯❯ Háblame! 17:43 22 ene 2021 (UTC)[responder]
{{#invoke:lang|lang_xx_inherit|code=en-ES|Prueba|italic=default}} → en inglés: Prueba
{{#invoke:lang|lang_xx_inherit|code=es-CN|Prueba|italic=default}} → en español: Prueba
{{#invoke:lang|lang_xx_inherit|code=it-FR|Prueba|italic=default}} → en italiano: Prueba
Será necesario revisar muchas más cosas Josecurioso. -- Leoncastro (discusión) 18:28 22 ene 2021 (UTC)[responder]
@Leoncastro Los códigos IETF no son una lista cerrada, el estándar solo define el formato que tienen que seguir y por eso el código es-CN es perfectamente válido según el estándar a pesar de tener poco sentido. Eso significa que son casi infinitos por lo que para detectar errores como los que presentas habría que utilizar una lista de códigos que consideremos válidos y desconozco dónde conseguirla (si existe). josecurioso ❯❯❯ Háblame! 18:40 22 ene 2021 (UTC)[responder]
@Josecurioso, como no has visto a dónde quiero llegar, te lo voy a poner de otra manera: en-ES debería ser Espanglish; ¿o acaso funciona en-spanglis? Por lo visto no: «en spanglish: ¿spanglish?». Y es-CN o it-FR no deberían tener enlace. Otro más; observa también es-419: «en español latinoamericano: ¿latino?»; cuando debería enlazar a español de América. Si se quiere abarcar todo, debería abarcarse absolutamente todo. -- Leoncastro (discusión) 19:23 22 ene 2021 (UTC)[responder]
Un ejemplo de nota: ja-u-sd-jp47japonés okinawense. Sigo sin saber para qué hacer listas si tenemos bases de datos. -- Leoncastro (discusión) 19:38 22 ene 2021 (UTC)[responder]
Con bases de datos entiendo que te refieres a Wikidata. Tal y como estaba planteado este módulo utiliza listas porque es más cómodo cuando las puedes generar automáticamente como hacen en enwiki. Cuando estaba preparando las listas en español utilicé varias queries a wikidata y me encontré muchos que no aparecían. No defiendo una solución por encima de la otra pero este módulo no deja de ser una adaptación del inglés. Cambiar algo tan básico llevaría tiempo. josecurioso ❯❯❯ Háblame! 20:11 22 ene 2021 (UTC)[responder]
@Leoncastro El código para el español de América es el es-019 que se muestra correctamente como «en español de América: Prueba». Como quiero abarcar todo voy a ponerme a ampliar las tablas de override y article_name con todos los que se me ocurran. Si conoces algún sitio donde pueda encontrar una lista de códigos como el del Espanglish te lo agradecería. josecurioso ❯❯❯ Háblame! 20:04 22 ene 2021 (UTC)[responder]
Si enlazo a Wikidata y hablo de bases de datos... sí, me refiero a Wikidata. Una lista con los códigos de idiomas, sus nombres y los enlaces a los artículos... Véase código de idioma IETF (P305), por ejemplo así . -- Leoncastro (discusión) 20:59 22 ene 2021 (UTC)[responder]

┌─────────────────────────────┘
Varias cosas:

  • He ampliado el módulo para que sea capaz de parsear etiquetas IETF completas cubriendo casi todos los supuestos que se explican en el BCP47. Algunos ejemplos a continuación (más aquí):
pt-es-u-sd-esba → en portugués oliventino: Test
es-u-sd-escn → en español canario: Test
cel-x-proto → en protocéltico: Test
cel-x-proto → en protocéltico: Test
gem-x-proto → en protogermánico: Test
grk-x-proto → en protogriego: Test
ru-es-Latn-ES-varia-u-sd-esba-x-proto → [Test] Error: {{Lang-xx}}: variante no reconocida: varia (ayuda)
  • También he modificado los scripts de python con los que se extrae la información de wikidata para incluir también en los listados generados todas las etiquetas que faltaban y generar listados de nombres de artículos para aquellos que no siguen la fórmula Idioma <nombre de idioma>. Ahora si un idioma tiene artículo en nuestra wikipedia el enlace aparecerá 100%.
¿Por qué sigo insistiendo con los listados?: simple, cada llamada a la plantilla sería mucho más costosa si se tiene que hacer una consulta a wikidata. En ese sentido es más efectivo hacer esa consulta una sola vez para todos los idiomas y generar una/s estructura/s que puedan reutilizarse.
  • A tener en cuenta:
Si algún nombre está mal escrito se debería corregir en wikidata, no en el módulo.
Una etiqueta IETF puede ser perfectamente válida en cuanto al formato pero no existir y no estar en wikidata (ni en wikipedia). En esos casos he decidido que se utilice la etiqueta de lenguaje simple como se puede observar en los ejemplos que pusiste más arriba con es-CN o it-FR:
es-CN → en español: Prueba
it-FR → en italiano: Prueba
Este es un comportamiento que no sé si me convence del todo, otra opción sería que se construya el nombre de la lengua en base a las partes de la etiqueta (idioma, sistema de escritura, región, etc) pero se mantenga el enlace al idioma base. Esto quedaría tal que así:
es-CN → en español de China: Test
it-FR → en italiano de Francia: Test

Esperando vuestros comentarios, josecurioso ❯❯❯ Háblame! 12:57 25 ene 2021 (UTC)[responder]

@Josecurioso, «Pero que haces loco escribiendo ese código que no existe». ¡Jajaja! Sigo creyendo que no era necesario todo esto, pero igualmente es un buen trabajo. -- Leoncastro (discusión) 19:58 25 ene 2021 (UTC)[responder]
@Leoncastro Perdón que haya dejado esto aquí colgando unos días, pero estaba terminando otra serie de cosas. He añadido todas las pruebas específicas para las tres funciones secundarias y me he asegurado de que no falle ninguna de las principales. También he creado las categorías de seguimiento y la documentación centralizada para las plantillas {{lang-xx}} en Plantilla:Lang-x. He afinado bastante el proceso de sacar los datos de wikidata pero cuento con que algún nombre habrá que cambiar manualmente sí o sí según se vayan detectando errores aunque los 'principales' diría que están todos correctos. Me gustaría que opinase más gente antes de implementarlo en todas las plantillas pero por ahora lo he hecho como prueba en {{lang-so}} que se usa muy poco y no parece que haya fallado nada. josecurioso ❯❯❯ Háblame! 23:31 30 ene 2021 (UTC)[responder]