Wikcionario eswiktionary https://es.wiktionary.org/wiki/Wikcionario:Portada MediaWiki 1.46.0-wmf.24 case-sensitive Medio Especial Discusión Usuario Usuario discusión Wikcionario Wikcionario discusión Archivo Archivo discusión MediaWiki MediaWiki discusión Plantilla Plantilla discusión Ayuda Ayuda discusión Categoría Categoría discusión Apéndice Apéndice Discusión Tesauro Tesauro discusión TimedText TimedText talk Módulo Módulo discusión Evento Evento discusión Wikcionario:Café 4 1313 6110111 6109953 2026-04-27T18:06:30Z MediaWiki message delivery 53277 Sección nueva: /* Noticias técnicas: 2026-18 */ 6110111 wikitext text/x-wiki <!-- Inicio Encabezado del café, aviso, información histórica y información de archivado --> <div style="text-align: center;"> {{/Aviso}} {{/Histórico}} </div> {{atajo|WN:C}} [[Categoría:Café]] <!-- Fin del Encabezado del café --> <!-- Inicio configuración robot archivado; no tocar si no se sabe lo que se hace --> {{Usuario:MABot/config |archive = Wikcionario:Café/%(year)d %(month)02d |algo = old(30d) |counter = 1 |archiveheader = {{Archivo}} }} <h1>{{MONTHNAME|{{PREVIOUSMONTH}}}} de {{PREVIOUSMONTH.YEAR}}</h1> <div class="mw-archivedtalk"> {{/{{PREVIOUSMONTH.YEAR}} {{PREVIOUSMONTH}}}} </div> <h1>Actual</h1> == [[Wikcionario:Índice]] == Cuál será el futuro de estas páginas? Mi propuesta es la que ya dije antes, convertirlas en lemarios, migrar todos los idiomas a Apéndice:XX:Lemario y fusionar en el caso del español. Significa también que todos los aṕendices que tenemos ahora hay que prefijarlos con ES: ? En efecto. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 21:13 14 mar 2026 (UTC) :Como no obtuve respuestas, @[[Usuario:Peter Bowman|Peter Bowman]] si hago este traslado deberíamos eliminar las páginas del índice? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:48 27 mar 2026 (UTC) :Siendo honesto, creo que no debería existir un índice manual. Sería mucho mejor simplemente añadir un encabezado para filtrar por letra a "Categoría:Idioma"... Y sí, creo que los apéndices deberían tener separarse por idiomas así. Que exista "Categoría:Apéndices por idioma" en vez de "Categoría:Apéndices sobre otros idiomas". :Al igual que los índices, los apéndices de Antropónimos tampoco deberían existir, "Categoría:xx:Antropónimos xxx" los cubre perfectamente. [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 22:35 27 mar 2026 (UTC) :Nota: en ese sentido casi todos los apéndices pueden ser cubiertos por las entradas añadidas correctamente en el espacio principal más una categorización correcta. La pregunta es qué hacer mientras o hasta que se complete la migración de toda la información. Pero bueno, si un índice manual es innecesario, es razón suficiente para eliminarlo o convertirlo en lo que propuse. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 01:40 28 mar 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]]: entiendo que quieres renombrar todo lo de [[Especial:PáginasPorPrefijo/Wikcionario:Índice/]] para que empiece por Apéndice:XX:. Tampoco soy partidario de los índices manuales, pero tienen razón de ser si: 1. las entradas pertinentes aún no han sido creadas; 2. esos índices aportan algo más que una mera lista de palabras ([[Wikcionario:Índice/Por idioma/EU/A|aquí]] tenemos la traducción de cada término). Una vez hecho el traslado, ¿qué páginas querrías eliminar? [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 09:37 28 mar 2026 (UTC) :::@[[Usuario:Peter Bowman|Peter Bowman]] Por eso dije que quería convertirlos en lemarios. Trasladarlos a Apéndice:XX:Lemario con un formato similar a [[Apéndice:Lemario]] y después borrar las redirecciones ya que no tiene sentido tener "índices". [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 14:25 28 mar 2026 (UTC) ::::Vale, y si automatizas la tarea, recuerda que puedes trasladar sin crear redirecciones. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 16:36 28 mar 2026 (UTC) :::::@[[Usuario:Peter Bowman|Peter Bowman]] Pero un formato similar a [[Apéndice:Lemario]] requeriría separarlas por lotes de a 500, por lo que probablemente muchas tendrán que ser borradas (no puedo trasladar de nuevo si ya existe la página de destino). Otra es formatearlo como Apéndice:XX:Lemario/A, Apéndice:XX:Lemario/B, etc. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:45 28 mar 2026 (UTC) ::::::@[[Usuario:Tmagc|Tmagc]]: no me molestaría en cambiar el formato, simplemente renombraría p. ej. [[Wikcionario:Índice/Por idioma/EN/D]] a [[Apéndice:EN:Lemario/D]] y ya está. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 16:57 28 mar 2026 (UTC) :::::::Por eso, pero en lugar de agruparlas de a 500 (como en [[Apéndice:ES:Lemario]]), simplemente las separo por la inicial, tal y como está ahora en el índice. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:59 28 mar 2026 (UTC) :@[[Usuario:Peter Bowman|Peter Bowman]] Listo. Las páginas prefijadas con "Wikcionario:Índice" que quedan son redirecciones vacías o inservibles, podrías borrarlas? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 04:28 7 abr 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]]: hecho. Un saludo, [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 10:03 7 abr 2026 (UTC) :::@[[Usuario:Peter Bowman|Peter Bowman]] Las redirecciones como [[WN:Índice alfabético/QU/N|esta]] o [[Wikcionario:Índice_del_español_a|esta]] van a quedar? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:19 7 abr 2026 (UTC) ::::Ah, vale, seguí el enlace que había puesto más arriba y no vi esas, lo actualizo: [[Especial:PáginasPorPrefijo/Wikcionario:Índice]]. Las borraré en unas horas. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 15:33 7 abr 2026 (UTC) :::::@[[Usuario:Tmagc|Tmagc]]: ahora ya sí. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 20:46 7 abr 2026 (UTC) == Noticias técnicas: 2026-13 == <section begin="technews-2026-W13" /><div class="plainlinks"> Las últimas '''[[m:Special:MyLanguage/Tech/News|noticias técnicas]]''' desde la comunidad técnica de Wikimedia. Por favor, comenta estos cambios con otros usuarios. No todos los cambios te afectarán. [[m:Special:MyLanguage/Tech/News/2026/13|Traducciones en varios idiomas]] están disponibles. '''Lo más destacado de la semana''' * Los usuarios de los sitios de Wikimedia ya pueden iniciar sesión sin contraseña utilizando llaves de acceso (''passkeys''). Este es un método seguro que admite el uso de huella digital, reconocimiento facial o código PIN. Con este cambio, todos los usuarios que opten por el inicio de sesión sin contraseña verán que es más fácil, rápido y seguro acceder a sus cuentas desde cualquier dispositivo. Actualmente, la nueva opción de inicio de sesión con llave de acceso aparece como una sugerencia de autorrelleno en el campo del nombre de usuario. Próximamente, estará disponible un [[phab:T417120|botón «Iniciar sesión con llave de acceso»]] adicional para los usuarios que ya hayan registrado una. Esta actualización mejorará la seguridad y la experiencia de usuario. La [[c:File:Passwordless_login_screencast.webm|grabación de pantalla]] muestra el proceso de inicio de sesión sin contraseña paso a paso. * [[m:Special:MyLanguage/Tech/Server switch|Todas las wikis estarán en modo de solo lectura]] durante unos minutos el 25 de marzo de 2026 a las [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. Esto se debe a las pruebas de cambio al centro de datos de respaldo, [[wikitech:Deployments/Yearly calendar|que se realizan dos veces al año]]. Durante este proceso, todo el tráfico de los sitios de Wikimedia se desvía de un centro de datos primario al de respaldo para probar la disponibilidad y prevenir interrupciones del servicio incluso en situaciones de emergencia. '''Actualizaciones para editores''' * Los usuarios de los sitios de Wikimedia ya pueden exportar sus notificaciones con más de 5 años de antigüedad mediante una [[toolforge:echo-chamber|nueva herramienta en Toolforge]]. Esto permite que dichos usuarios conserven sus notificaciones importantes y eviten perderlas, de acuerdo con el cambio planificado que eliminará las notificaciones que superen los 5 años de antigüedad, tal como se anunció previamente. [https://phabricator.wikimedia.org/T383948] * Los editores de las Wikipedias en indonesio, tailandés, turco e inglés simple ya tienen acceso a Special:PersonalDashboard. Se trata de una [[mw:Special:MyLanguage/Moderator Tools/Dashboard|versión preliminar de una experiencia]] que introduce a los editores más nuevos en los flujos de trabajo de patrullaje, facilitándoles la transición desde la edición de contenidos hacia tareas de moderación más avanzadas en su proyecto. [https://phabricator.wikimedia.org/T402647] * La página [[Special:Block]] tiene dos cambios menores en la interfaz. Los administradores ahora pueden seleccionar un bloqueo por tiempo indefinido mediante un selector dedicado en la sección de caducidad. Además, al elegir un bloqueo infinito, se muestra una lista de motivos comunes en el menú desplegable, la cual puede personalizarse en [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823] * Los editores en entornos móviles de [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|varias wikis]] ahora verán una advertencia mejorada al realizar ediciones sin haber iniciado sesión, gracias a las actualizaciones recientes del equipo de Growth. Estos cambios, lanzados la semana pasada, forman parte de los esfuerzos y pruebas para mejorar [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|la experiencia de creación de cuentas en dispositivos móviles]] y fomentar la participación. [https://phabricator.wikimedia.org/T408484] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Revisa las {{formatnum:36}} {{PLURAL:36|tarea enviada|tareas enviadas}} por la comunidad que fueron [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resueltas la semana pasada]]. Por ejemplo, se ha solucionado el error que impedía que los usuarios de la versión web móvil vieran la información del bloqueo cuando estaban afectados por múltiples bloqueos. Ahora pueden consultar todos los bloqueos que les afectan al visitar Wikipedia. '''Actualizaciones para los colaboradores técnicos''' * Las imágenes creadas con Toolforge recibirán pronto una versión actualizada de los ''buildpacks'', que incluirá soporte para nuevas versiones de lenguajes de programación, además de otras mejoras y correcciones en el código fuente original (''upstream''). Si utiliza el servicio de construcción de Toolforge (''Toolforge Build Service''), revise el reciente [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ correo en la lista cloud-announce] y actualice su configuración de construcción si es necesario para asegurar la compatibilidad de sus herramientas. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127] * El [https://api.wikimedia.org/wiki/Main_Page Portal de documentación de la API] se cerrará en junio de 2026. Las llaves de API (''API keys'') creadas en dicho portal seguirán funcionando con normalidad. Los puntos de conexión (''endpoints'') de api.wikimedia.org se marcarán como obsoletos de forma progresiva a partir de julio de 2026. La documentación del portal de la API se trasladará a [[mw:Wikimedia APIs|mediawiki.org]]. Puede obtener más información sobre este cambio en [[wikitech:API Portal/Deprecation|la página del proyecto]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Actualizaciones detalladas de código de esta semana: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]] '''A fondo''' * Los [[m:Special:MyLanguage/WMDE Technical Wishes|deseos técnicos de WMDE]] están considerando mejoras a [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|la generación automática de nombres en las referencias del Editor Visual]]. Revisa las [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|soluciones propuestas]] y participa en esta [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|solicitud de comentarios]]. ''Las '''[[m:Special:MyLanguage/Tech/News|Noticias Técnicas]]''' son preparadas por [[m:Special:MyLanguage/Tech/News/Writers|los escritores de Noticias Técnicas]] y publicadas con un [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Colabore]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/13|traduzca]]&nbsp;• [[m:Tech|obtenga ayuda]]&nbsp;• [[m:Talk:Tech/News|denos su opinión]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|suscríbase o cancele su suscripción]].'' </div><section end="technews-2026-W13" /> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:51 23 mar 2026 (UTC) <!-- Mensaje enviado por Usuario:UOzurumba (WMF)@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305 --> == Noticias técnicas: 2026-14 == <section begin="technews-2026-W14"/><div class="plainlinks"> Las últimas '''[[m:Special:MyLanguage/Tech/News|noticias técnicas]]''' desde la comunidad técnica de Wikimedia. Por favor, comenta estos cambios con otros usuarios. No todos los cambios te afectarán. [[m:Special:MyLanguage/Tech/News/2026/14|Traducciones en varios idiomas]] están disponibles. '''Lo más destacado de la semana''' * Una versión beta de [[abstract:|Abstract Wikipedia]], un nuevo proyecto de Wikimedia independiente del idioma, se lanzó la semana pasada. El proyecto permite que las comunidades creen artículos de Wikipedia en sus idiomas nativos con el fin de que puedan ser leídos por personas que hablan otras lenguas. La wiki funciona mediante instrucciones de Wikifunciones y se basa también en el contenido estructurado de Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|Más información]]. '''Actualizaciones para editores''' * El equipo de Growth está realizando una prueba A/B para evaluar si un mensaje más claro y amigable fomenta la creación de cuentas en las wikis. Actualmente, cuando los usuarios de la versión móvil que no han iniciado sesión comienzan a editar, ven un mensaje de advertencia que puede resultar brusco y desalentador. Además, este mensaje presenta la edición con cuentas temporales como la opción predeterminada en lugar de incentivar la creación de una cuenta. La prueba se está llevando a cabo en diez Wikipedias, entre ellas las ediciones en árabe, francés, español y alemán. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|Más información]]. * El equipo de Wikimedia Apps invita a dejar comentarios sobre [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|cómo debería funcionar la edición en las aplicaciones móviles de Wikipedia]]. La discusión se centra en mejorar la forma en que los usuarios acceden a las herramientas de edición al pulsar «Editar». Esto forma parte de un esfuerzo mayor para convertir a los lectores interesados en editores, ofreciéndoles un camino más amigable para comenzar a contribuir. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Revisa las {{formatnum:45}} {{PLURAL:45|tarea enviada|tareas enviadas}} por la comunidad que fueron [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resueltas la semana pasada]]. Por ejemplo, se ha solucionado un problema que impedía la obtención de citas del archivo de prensa [https://www.newspapers.com Newspapers.com] debido a un bloqueo en las solicitudes de [[mw:Special:MyLanguage/Citoid|Citoid]]. [https://phabricator.wikimedia.org/T419903] '''Actualizaciones para los colaboradores técnicos''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Actualizaciones detalladas de código de esta semana: [[mw:MediaWiki 1.46/wmf.22|MediaWiki]] ''Las '''[[m:Special:MyLanguage/Tech/News|Noticias Técnicas]]''' son preparadas por [[m:Special:MyLanguage/Tech/News/Writers|los escritores de Noticias Técnicas]] y publicadas con un [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Colabore]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/14|traduzca]]&nbsp;• [[m:Tech|obtenga ayuda]]&nbsp;• [[m:Talk:Tech/News|denos su opinión]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|suscríbase o cancele su suscripción]].'' </div><section end="technews-2026-W14"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:25 30 mar 2026 (UTC) <!-- Mensaje enviado por Usuario:STei (WMF)@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462 --> == Request for bot flag == (Apologies for writing in English.)<br /> Hello, there are more than 68000 [[Special:LintErrors|lint errors]] on your wiki, many of which could be fixed by my bot, [[m:User:DelintBot|DelintBot]]; some of these errors have even made some entries partially unreadable in dark mode (you could see it if you tried to read the note under the conjugation tables in [[blejal]] and [[aberzhañ]], for example). The bot is currently flagged on a number of other wikis (Bengali Wiktionary, Wikidata, Croatian Wiktionary, and also Bengali Wikibooks under a [[wikibooks:bn:Special:Contributions/RedminBot|different username]]). Please let me know if you want me to make some test edits. [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 15:20 1 abr 2026 (UTC) :Hello, @[[Usuario:Redmin|Redmin]], thank you for your offer. I believe you are referring to [[Special:LintErrors/night-mode-unaware-background-color]]. I have just fixed a couple of [[Special:LintTemplateErrors/night-mode-unaware-background-color|templates]] which should cover a significant number of occurrences. Let's evaluate the scale of this in a few days, after the next update. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 16:37 1 abr 2026 (UTC) ::Thank you, that sounds good to me. For future reference, there were 42024 according to the database replicas (so this count is not cached) as of the time of writing this (which I think is already a great improvement thanks to your changes). By the way, the bot also replaces obsolete HTML tags. :-) [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 16:51 1 abr 2026 (UTC) ::@[[Usuario:Peter Bowman|Peter Bowman]] Podrías encargarte de los otros tipos de errores? Intenté corregirlos pero no tengo permiso en las pags de Mediawiki. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 17:30 1 abr 2026 (UTC) :::@[[Usuario:Tmagc|Tmagc]]: ¿te refieres a [[Especial:Errores de sintaxis/missing-end-tag]]? Ya los he corregido. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 18:56 1 abr 2026 (UTC) ::@[[Usuario:Peter Bowman|Peter Bowman]], there are now 4400+ lint errors for the "night-mode-unaware-background-color" category (down from the previous 42000+) and 31000+ errors across all non-hidden categories (down from the previous 68000+). Up to more than 8000 of these could potentially be fixed by DelintBot. What do you think? [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 08:32 9 abr 2026 (UTC) :::Not sure if we still need assistance, it seems that @[[Usuario:Tmagc|Tmagc]] has taken care of most of the dark mode-related occurrences (@[[Usuario:Tmagc|Tmagc]]: ¿cómo lo ves, necesitas ayuda en esto?). @[[Usuario:Redmin|Redmin]]: how do you get those figures, and what kind of errors are now we talking about? In [[Special:LintErrors]] there are only 4000 results unrelated to dark mode issues. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 08:56 9 abr 2026 (UTC) ::::@[[Usuario:Peter Bowman|Peter Bowman]], I am running SQL queries against Wikimedia’s database replicas because that special page is cached and inaccurate. This query gets the number of dark mode-related errors: https://quarry.wmcloud.org/query/103938. This gets the maximum number of errors the bot could potentially be able to fix: https://quarry.wmcloud.org/query/104197. This gets the total number of (non-hidden) lint errors: https://quarry.wmcloud.org/query/104199 (including dark mode-related ones). [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 09:24 9 abr 2026 (UTC) :::::@[[Usuario:Redmin|Redmin]] (@[[Usuario:Tmagc|Tmagc]], preguntabas por esto más abajo): according to [[quarry:query/104208]], over 22k lint errors belong to the [[mw:Extension:Linter/linter table#linter_cat|large-tables (Big Tables that are hard to view on mobile)]] category. It is still [[mw:Help:Lint errors/large-tables|"being developed, but currently it will trigger for any table with more than five columns"]]. Currently, there is not much we can do for those entries. @[[Usuario:Tmagc|Tmagc]] has agreed to keep fixing the remaining lint errors, therefore for now I'm more inclined to relay that work to existing local bots. We would revisit this matter again in the following days/weeks to decide on further action. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 14:32 9 abr 2026 (UTC) ::::::Sounds good. I hope you are able to get these errors fixed. :) [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 15:09 9 abr 2026 (UTC) ::::::Ah, gracias ahora entiendo a qué se refería. Claro, los 22k errores restantes son ese de "error" específico de las tablas grandes, ni siquiera sé si calificarlo como error. O sea, una tabla ocupa lo que tiene que ocupar, qué más pretenden que hagamos los desarrolladores de dicha extensión? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:46 9 abr 2026 (UTC) ::::@[[Usuario:Peter Bowman|Peter Bowman]] Por mí está bien, mi única duda es si puedo seguir corrigiendo páginas de discusión de usuario (no las PU propiamente dichas) con reemplazos simples y masivos. Por ejemplo, quitar el color de fondo en el cartel de bienvenida y mensajes sutogenerados por plantillas. Para los mensajes o firmas de usuario, por ahora no los tocaría porque volvemos al problema de cuál habría sido la intención original de dicho usuario, pero supongo que si he de tocarlos debería forzar un color en la letra para que desaparezca el "error", que tampoco veo que se consiga mucho ya que en la mayoría de los casos se ven bien. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:53 9 abr 2026 (UTC) :::::@[[Usuario:Tmagc|Tmagc]]: cambiar por cambiar, no, solo si ayuda a resolver alguno de los problemas con la sintaxis. Las firmas de usuario suelen adolecer del uso de la etiqueta obsoleta &tt;font&gt;; yo ahí francamente reemplazaría la firma personalizada por la que genera MediaWiki por defecto. Esto sería mejor anunciarlo en otro hilo y esperar un par de semanas para posibles objeciones. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 14:20 9 abr 2026 (UTC) :::@[[Usuario:Redmin|Redmin]] How do you see 31000+ errors across all non-hidden categories? Does the [[Especial:Errores de sintaxis]] extension detect this somehow. How did you do? If this is a matter of cache, just wait a few days for it to refresh. If there ''is'' a problem with the categories, the fault is of [[Módulo:auto cat]], not of the pages itself. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:56 9 abr 2026 (UTC) :::Nota adicional: qué quieren que haga con las etiquetas HTML obsoletas? A mí no me molestan pues hasta ahora solamente las vi fuera del espacio principal. Si quieren que las reemplace, digan cuáles son los equivalentes que se ayornan y puedo hacer los reemplazos con mi bot. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:58 9 abr 2026 (UTC) ::::@[[Usuario:Tmagc|Tmagc]]: las páginas como [[Especial:Errores de sintaxis/obsolete-tag]] tienen un enlace de ayuda en la esquina superior derecha. En este caso, lleva a [[mw:Help:Lint errors/obsolete-tag]], donde verás qué cambios es necesario hacer. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 14:17 9 abr 2026 (UTC) :@[[Usuario:Redmin|Redmin]] one thing you could do is to replace {{ep|marcar sin referencias}} with {{ep|cita requerida}} (which require also a change in the format). The highlighting produce a linting error. I agree with project for removing/changing all the templates that use colors, they are very hard to mantain due to the night mode. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 17:28 1 abr 2026 (UTC) ::It seems like that has the potential to be a controversial change; I have added a color declaration to “marcar sin referencias” instead so it should no longer produce any lint error. [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 17:57 2 abr 2026 (UTC) :@[[Usuario:Peter Bowman|Peter Bowman]] Qué podemos hacer para [[Módulo:flex]] y derivados? Estoy viendo que las nuevas plantillas de flexión arrojan este "error", supongo que al modificar el color de las celdas, pero no sabría como remediarlo. Quizá agregar alguna opción especial al especificar un color en las celdas podría ser? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 19:22 5 abr 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]]: es posible definir variables CSS que tomen valores distintos dependiendo de si esté activo el modo claro o el modo oscuro. Es decir, puedes hacer que una misma regla para el color de fondo o de fuente se vea distinto en función del modo. Esto está descrito en [[mw:Recommendations for night mode compatibility on Wikimedia wikis]], y tenemos un ejemplo de aplicación en [[wikt:pl:MediaWiki:Gadget-dark-styles.css]]. Estaría bien comprobar si <code>var()</code> funciona con TemplateStyles. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 19:51 5 abr 2026 (UTC) == Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226) == Hello everyone, This is a notice regarding an ongoing data migration on Wikidata that may affect your election-related templates and Lua modules (such as <code>Module:Itemgroup/list</code>). '''The Change:'''<br /> Currently, many templates pull electoral maps from Wikidata using the property [[:d:Property:P1846|P1846]], combined with the qualifier [[:d:Property:P180|P180]]: [[:d:Q19571328|Q19571328]]. We are migrating this data (across roughly 4,000 items) to a newly created, dedicated property: '''[[:d:Property:P14226|P14226]]'''. '''What You Need To Do:'''<br /> To ensure your templates and infoboxes do not break or lose their maps, please update your local code to fetch data from [[:d:Property:P14226|P14226]] instead of the old [[:d:Property:P1846|P1846]] + [[:d:Property:P180|P180]] structure. A [[m:Wikidata/Property Migration: P1846 to P14226/List|list of pages]] was generated using Wikimedia Global Search. '''Deadline:'''<br /> We are temporarily retaining the old data on [[:d:Property:P1846|P1846]] to allow for a smooth transition. However, to complete the data cleanup on Wikidata, the old [[:d:Property:P1846|P1846]] statements will be removed after '''May 1, 2026'''. Please update your modules and templates before this date to prevent any disruption to your wiki's election articles. Let us know if you have any questions or need assistance with the query logic. Thank you for your help! [[User:ZI Jony|ZI Jony]] using [[Usuario:MediaWiki message delivery|MediaWiki message delivery]] ([[Usuario discusión:MediaWiki message delivery|discusión]]) 17:11 3 abr 2026 (UTC) <!-- Mensaje enviado por Usuario:ZI Jony@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29941252 --> == Cambio en plantillas para creación de páginas == Está bien si camibiamos las plantillas de [[MediaWiki:Noexactmatch]] a "Sustantivo", "Adjetivo", "Verbo", "Adverbio", "Locución sustantiva", "Locución adjetiva", "Locución verbal", "Locución adverbial"? Las últimas tres que tenemos ahora parece que sobran. Aparte de esto, podemos quitar la sobreescritura a los colores de fondo para que se vea bien en modo oscuro y desaparezca el error de sintaxis? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 19:05 5 abr 2026 (UTC) :@[[Usuario:Tmagc|Tmagc]]: en [[Especial:Diff/6076775]] he corregido los colores, puedes ver cómo he usado la función <code>var()</code>. Modificaré el formulario, pero necesito que antes crees las plantillas correspondientes para las locuciones (como {{ep|Plantilla Sustantivo}}). [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 20:05 5 abr 2026 (UTC) ::Por cierto, el mensaje correcto es [[MediaWiki:Searchmenu-new]], el otro creo que no tiene uso. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 20:09 5 abr 2026 (UTC) ::@[[Usuario:Peter Bowman|Peter Bowman]] Gracias. Ya creé {{ep|Plantilla Locución sustantiva}}, {{ep|Plantilla Locución adjetiva}}, {{ep|Plantilla Locución verbal}}, {{ep|Plantilla Locución adverbial}}. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:23 5 abr 2026 (UTC) ::Nota adicional: actualmente el título de "Otros idiomas", que no tiene enlace, aparece en negro. Debería aparecer en blanco en el modo oscuro. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:51 5 abr 2026 (UTC) :::Gracias, lo he aplicado en [[Especial:Diff/6076815]]. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 22:23 5 abr 2026 (UTC) ::Nota adicional #2: tmb. [[MediaWiki:Newarticletext]] [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:53 5 abr 2026 (UTC) :::Hecho en [[Especial:Diff/6076820]]. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 22:33 5 abr 2026 (UTC) == Noticias técnicas: 2026-15 == <section begin="technews-2026-W15"/><div class="plainlinks"> Las últimas '''[[m:Special:MyLanguage/Tech/News|noticias técnicas]]''' desde la comunidad técnica de Wikimedia. Por favor, comenta estos cambios con otros usuarios. No todos los cambios te afectarán. [[m:Special:MyLanguage/Tech/News/2026/15|Traducciones en varios idiomas]] están disponibles. '''Actualizaciones para editores''' * La [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|extensión CampaignEvents]] incluye ahora una nueva función para establecer objetivos grupales, lo que permite a los organizadores definir y realizar un seguimiento de metas en tiempo real, como el número de artículos creados o la cantidad de colaboradores participantes. Del mismo modo, los participantes pueden trabajar para alcanzar objetivos compartidos y ver su impacto colectivo a medida que se desarrolla el evento. Esta función ya está disponible en todas las wikis de Wikimedia. Más información en [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Collaborative contributions#Goal setting|la documentación]]. * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Elemento de la Lista de Deseos de la Comunidad]] La nueva función de [[mw:Special:MyLanguage/Help:Watchlist labels|etiquetas de la lista de seguimiento]] (anunciada en las [[m:Special:MyLanguage/Tech/News/2026/07|Noticias técnicas 2026-07]]) ya está disponible a través del Editor Visual, el editor de código fuente y la «estrella de seguimiento» (o el enlace de seguimiento, en las apariencias que no tienen icono de estrella). Anteriormente, solo era posible asignar etiquetas mediante [[Special:EditWatchlist|Special:EditWatchlist]]. En los tres lugares se ha añadido un nuevo campo a continuación del campo de caducidad. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Revisa las {{formatnum:23}} {{PLURAL:23|tarea enviada|tareas enviadas}} por la comunidad que fueron [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resueltas la semana pasada]]. Por ejemplo, se solucionó el problema en el que las páginas de discusión con Parsoid se volvían inutilizables después de secciones con encabezados vacíos. [https://phabricator.wikimedia.org/T419171] '''Actualizaciones para los colaboradores técnicos''' * La [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|función de subreferencia]], que permite a los editores añadir detalles a una referencia existente sin tener que duplicarla, se habilitará gradualmente en [[phab:T414094|más wikis]] a lo largo de este año. Se recomienda a las wikis que utilicen el accesorio [[mw:Special:MyLanguage/Reference Tooltips|Reference Tooltips]] que actualicen su versión (normalmente en [[m:MediaWiki:Gadget-ReferenceTooltips.js|MediaWiki:Gadget-ReferenceTooltips.js]], como se muestra [https://en.wikipedia.org/w/index.php?diff=1344408362 aquí]) para garantizar la compatibilidad. Otros accesorios relacionados con las referencias también podrían verse afectados. [https://phabricator.wikimedia.org/T416304] * Todas las ediciones de Wikinoticias serán cerradas y puestas en modo solo lectura a partir del 4 de mayo de 2026. El contenido se mantendrá accesible, pero no se podrán añadir nuevas ediciones o artículos. El cierre fue aprobado por la Junta Directiva de la Fundación Wikimedia después de extensas discusiones. [[m:Wikimedia Foundation Board noticeboard#Board of Trustees Approves Closure of Wikinews|Lee más]]. * La [[:mw:Special:MyLanguage/API:Action API|Action API]] ha contado con diversos formatos para las respuestas de salida. Uno de ellos, <bdi lang="zxx" dir="ltr"><code><nowiki>format=php</nowiki></code></bdi>, se eliminará próximamente. Por favor, asegúrese de que sus scripts o bots utilicen el [[mw:Special:MyLanguage/API:Data formats#Output|formato JSON]]. Se espera que esta eliminación afecte a muy pocos scripts y bots. [https://phabricator.wikimedia.org/T118538] * La página [[Special:NamespaceInfo|Special:NamespaceInfo]] ahora incluye los alias de los espacios de nombres. Por ejemplo "WP" para el espacio de nombre "Proyecto" ("Wikipedia") en la Wikipedia en alemán. [https://phabricator.wikimedia.org/T381455] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Actualizaciones detalladas de código de esta semana: [[mw:MediaWiki 1.46/wmf.23|MediaWiki]] ''Las '''[[m:Special:MyLanguage/Tech/News|Noticias Técnicas]]''' son preparadas por [[m:Special:MyLanguage/Tech/News/Writers|los escritores de Noticias Técnicas]] y publicadas con un [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Colabore]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/15|traduzca]]&nbsp;• [[m:Tech|obtenga ayuda]]&nbsp;• [[m:Talk:Tech/News|denos su opinión]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|suscríbase o cancele su suscripción]].'' </div><section end="technews-2026-W15"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:19 6 abr 2026 (UTC) <!-- Mensaje enviado por Usuario:STei (WMF)@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30362761 --> == Wikcionario:Frecuencias, Wikcionario:Frecuentes == Creo que estos casos caen bajo la misma consideración que [[Especial:PermaLink/6077394#Wikcionario:Índice]]. Traslado sin redirecciones a Apéndice:XX:Frecuentes/(resto), donde XX es el código de idioma. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:16 8 abr 2026 (UTC) :Hecho. @[[Usuario:Peter Bowman|Peter Bowman]], quedaron cuatro redirecciones que comienzan con Wikcionario:Palabras más frecuentes.*, podrías eliminarlas por favor? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 02:33 16 abr 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]]: hecho. Un saludo, [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 09:43 16 abr 2026 (UTC) == Eliminación de firmas personalizadas de usuario (y otras modificaciones) == En vista de los 8k [[Especial:Errores de sintaxis|errores de sintaxis]] que quedan, y que últimamente se despertó cierto interés por parte de @[[Usuario:Redmin|Redmin]] en eliminarlos, y viendo que la mayoría de errores afectan a páginas de usuario y páginas de discusión (que incluye a los cafés), considerando además que los errores presentes son dos: [[Especial:Errores_de_sintaxis/obsolete-tag|obsolete-tag]] y [[Especial:Errores_de_sintaxis/night-mode-unaware-background-color|night-mode-unaware-background-color]]. La propuesta que surgió sería hacer las siguientes cosas sobre las 8k páginas que tengan cualquiera de estos dos errores, en el orden indicado (@[[Usuario:Peter Bowman|Peter Bowman]] corregime si dije algo mal): # Para las firmas de usuario que acarreen cualquiera de los dos problemas, reemplazarlas por la firma que trae MediaWiki por defecto. # Para mensajes automáticos o semiautomáticos que provoquen el error del color, como los generados por las [[:Categoría:Plantillas de notificaciones, intimaciones y denuncias]] o mensajes de distribución masiva, etc etc., eliminar los colores personalizados y dejar los que trae MW por defecto. # Reemplazar las etiquetas obsoletas por sus [[mw:Help:Lint errors/obsolete-tag|versiones nuevas]]. # Los mensajes propiamente dichos, se discutirán caso por caso de ser necesario, o bien se dejan como están. En las páginas y subpáginas de usuario (no las de discusión), solamente se hará 3. y no se tocará nada relacionado con los colores. En cuanto a lo de eliminarlos en las otras páginas, creo que lo apropiado es eliminar los colores de letra, si los hay, cada vez que se elimine el color de fondo porque si se fuerza un color oscuro se verá mal en el modo oscuro o también claro con claro causaría el mismo problema. No quisiera forzar el color de letra para subsanar el "error" automático generado porque es como esconder la mugre debajo de la alfombra: que una combinación de fondo + letra se vea bien en el modo claro, no significa que quedará estéticamente bien en el modo oscuro (ejemplo de lo que digo: miren cómo está ahora el [[Ayuda:Mapa de ayuda|Mapa de ayuda]] en el modo oscuro). En cambio, los colores que MW trae por defecto ya se ven bastante bien en ambos modos. Si veo alguna otra operación que sea fácil de realizar en masa la propondr por este mismo hilo. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:04 9 abr 2026 (UTC) :(Apologies for the English comment.) :Hello, I thought I would note that wikis which have developed policies about fixing lint errors tend to allow editing others’ user pages and comments to fix lint errors, encouraging them to try to preserve the appearance of those comments (see [[w:en:Wikipedia:Linter#How you can help|enwiki’s policy]] for example); this is part of the job I had in my mind for my bot that I proposed operating in the [[#Request for bot flag|discussion above]] (see [https://www.wikidata.org/w/index.php?title=Wikidata:Requests_for_deletions/Archive/2022/06/23&diff=prev&oldid=2478228416 this edit on Wikidata] for example). That would have allowed you to preserve the appearance of the signatures. [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 16:28 9 abr 2026 (UTC) ::@[[Usuario:Redmin|Redmin]] Según [[:w:en:Wikipedia:Village_pump_(proposals)/Archive_210#RfC:_applying_signature_validation_retroactively]], las firmas que no se ajusten a las políticas serán reemplazadas por la firma predeterminada de MW. Así que en.wiki parece estar más de mi lado. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 17:06 9 abr 2026 (UTC) :::That RfC was about configuring MW to prevent adding new comments if the user adding them has an invalid signature (which would not make existing lint errors go away), not about fixing existing signatures. That being said, have I misunderstood the aim of this proposal? [[Usuario:Redmin|Redmin]] ([[Usuario discusión:Redmin|discusión]]) 17:41 9 abr 2026 (UTC) ::::@[[Usuario:Redmin|Redmin]] You understood everything correctly, I misread the thread. However, my point in this is that we can't just cheat the linter just to make all errors disappear, that is not how the things work. All of the affected users are no longer part of this project but if they were still alive and they were aware of the new "night mode", probably they would have wanted to define a two-color layout, one for each mode, not just to make the night style a "cheap copy" of the day style. That's why I think replacing with the default signature is the best option. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:14 10 abr 2026 (UTC) :@[[Usuario:Peter Bowman|Peter Bowman]] 2x1: te parece que además cambiemos [[mw:Manual:$wgSignatureValidation|$wgSignatureValidation]] a 'disallow'? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:23 10 abr 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]]: me parece bien, y es algo que ya se ha hecho en enwiki ([[phab:T355462]]) y plwiki ([[phab:T364769]]). Sería necesario abrir una votación (hazlo en una sección nueva) y esperar un par de semanas. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 14:00 10 abr 2026 (UTC) :A falta de más comentarios, procedo a realizar los cambios mencionados. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 17:09 14 abr 2026 (UTC) ::Varios de los problemas vienen por el uso de <nowiki><code style:"background:yellow"></nowiki>. Reemplazo por <nowiki><code style:"background:yellow; color:black;"></nowiki> [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:41 15 abr 2026 (UTC) == VOTACIÓN: Forzar validación de firmas == En concordancia con [[Special:Diff/6091870|esta discusión]], propongo modificar [[mw:Manual:$wgSignatureValidation|$wgSignatureValidation]] para que prohíba los comentarios con firmas que tienen errores de sintaxis. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 14:18 10 abr 2026 (UTC) :{{a favor}}. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 14:45 10 abr 2026 (UTC) :{{a favor}} — <span style="background:#7EE6CB;color:#5A3696;padding:1px 2px;border-radius:2px">[[User:Genoskill|<span style="color:#5A3696;font-weight:bold">Genoskill</span>]]</span> ([[User talk:Genoskill|discusión]]) 03:47 12 abr 2026 (UTC) :{{a favor}} --[[Usuario:Cvmontuy|Cvmontuy ]] [[Usuario_Discusi%C3%B3n:Cvmontuy|<sup>(mensajes)</sup>]] 10:46 12 abr 2026 (UTC) :{{a favor}}. [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 17:12 13 abr 2026 (UTC) == Géneros en francés y español == En francés las plantillas de inflexión para los adjetivos muestran "sin género" cuando deberían mostrar ambos. Sorprende que en español pase lo mismo, ya que es sabido que los adjetivos calificativos deben concordar en género y número con el sustantivo al que acompañan. Por ejemplo, en "el joven está feliz", "feliz" es masculino; en "la joven está feliz", "feliz" es femenino. ¡Saludos cordiales! [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 23:57 11 abr 2026 (UTC) :@[[Usuario:Adelpine|Adelpine]] Aquí "sin género" debe leerse como "sin género definido", como lo muestra la categoría que se genera. La palabra no define ningún género, sino que depende de cómo se use en el discurso. No lo quise poner en el encabezado para que no quede tan largo. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 00:18 12 abr 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]] Busqué en Google "adjetivos sin género definido". Todos los resultados corresponden a Wikcionario o a copias del mismo. ¡Este concepto no se usa! Si no se desea colocar "masculino/femenino" podría colocarse "concordancia de género". Creo que lo primero es ideal pensando en los que comienzan a estudian español y francés como lengua extranjera, y lo segundo para los que ya entienden como funcionan los géneros en dichos idiomas. En ambos casos irían a la categoría "Adjetivos con concordancia de género (con el sustantivo)". [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 01:44 12 abr 2026 (UTC) :::@[[Usuario:Adelpine|Adelpine]] Mmm tenemos ya todos los términos saturados. No podemos poner masculino/femenino porque ya tenemos "sustantivos masculinos y femeninos". "Concordancia" hay siempre, es una propiedad de todos los idiomas, no depende de la palabra en sí. No veo cuál es el problema de que ningún autor use el concepto. Si a nadie se le ocurrió pensar en ello antes no es culpa mía, en mi opinión refiere tal cual a lo que dice, es lo suficientemente sintético y no entraña ningún tipo de ambigüedad, frente a otras opciones más rebuscadas. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 02:25 12 abr 2026 (UTC) ::::Parece que esa anotación en [[feliz]] simplemente se refiere a que el sufijo resaltado ("-iz") no permite distinguir entre género masculino o femenino, al contrario que, por ejemplo, en [[alto]]. Propongo cambiar "(sin género)" a "(sin marca de género)". [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 08:49 12 abr 2026 (UTC) :::::@[[Usuario:Peter Bowman|Peter Bowman]] Me gusta la denominación, sigue siendo lo suficientemente sintética. Deberíamos trasladar todas las categorías? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:10 12 abr 2026 (UTC) :::::@[[Usuario:Peter Bowman|Peter Bowman]] Desafortunadamente, hay múltiples palabras que están en esta categoría y tienen marca de género como "aaronita". Creo que en lugar de una creación original deberíamos usar algo que ya existe. Por ejemplo, la RAE usa "adjetivo invariable en género". [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 16:03 12 abr 2026 (UTC) ::::::@[[Usuario:Adelpine|Adelpine]] Cuál es la marca de género que tiene [[aaronita]]? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:41 12 abr 2026 (UTC) :::::::La letra "a" final que habitualmente indica femenino. [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 18:13 12 abr 2026 (UTC) ::::::::@[[Usuario:Adelpine|Adelpine]] En ese caso no hay ninguna marca de género. Lo mismo que en [[vietnamita]], aquí -ita no tiene valor de femenino ni lleva ninguna carga de género. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:43 12 abr 2026 (UTC) :::::::::@[[Usuario:Tmagc|Tmagc]] Tomado de la RAE: "13.5d Desde el punto de vista flexivo, los adjetivos del español se dividen en tres grupos: :::::::::A. Con flexión de género y número :::::::::B. Con flexión de número, pero no de género :::::::::C. Invariables en género y número :::::::::Corresponden al grupo A un amplísimo número de adjetivos que dan lugar a paradigmas de cuatro formas, como en oso pardo /osa parda /osos pardos /osas pardas. Estos adjetivos se denominan tradicionalmente de dos terminaciones. La flexión de género de este paradigma aparece marcada en casi todos los casos por la desinencia -a: alta, guapa, cordobesa, española". [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 19:49 12 abr 2026 (UTC) ::::::::::@[[Usuario:Adelpine|Adelpine]] En ese caso -a es marca de género, pero que una palabra termine en -a no significa que lleve marca de género. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 19:50 12 abr 2026 (UTC) :::::::::::Gracias a esta edición: https://es.wiktionary.org/w/index.php?title=eu&diff=6092819&oldid=6092818, que violó alguna misteriosa regla, se me ocurrió como zanjar esta cuestión. No se pueden crear nombres por lo siguiente: "Normas sobre la calidad :::::::::::Adicionalmente, es necesario contemplar otras tres reglas básicas indispensables para garantizar la calidad de los contenidos: :::::::::::Wikipedia no es una fuente primaria: la información nunca debe proceder en última instancia de los propios editores. :::::::::::Verificabilidad: todos los artículos deben incluir referencias a las fuentes de las que proviene la información. :::::::::::Las fuentes de las que proviene la información deben ser fuentes fiables. :::::::::::En otras palabras, es necesario prestar especial atención al contenido que se añade, que debe haber sido publicado previamente por un autor de confianza y reflejar siempre en el propio artículo la fuente de la que se obtuvo la información." https://es.wikipedia.org/wiki/Wikipedia:Gu%C3%ADa_para_profesores/Normas_b%C3%A1sicas En consecuencia, se puede optar por alguno de los dos nombres ya nombrados que tienen referencias o buscar otros nombres que las tengan. [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 21:00 12 abr 2026 (UTC) ::::::::::::"Invariable" es algo común en el análisis de lenguas flexivas. Las terminaciones -ita, -ista, -ota y algunas otras son invariables en cuanto al género, es imposible ver esa a final como marca de femenino. Saludos. [[Usuario:Lin linao|Lin linao]] [[Usuario Discusión:Lin linao|¿dime?]] 02:12 13 abr 2026 (UTC) :::::::::::::Estoy de acuerdo con @[[Usuario:Adelpine|Adelpine]], hay que apegarnos a la terminología que ya exista cuando sea posible, en este caso "invariable en género" es más común, directo y fácil de entender. Hace tiempo dejé un comentario similar en [[Categoría_discusión:Adjetivos_indeclinables|esta página de discusión]] (tal vez debí dejarlo aquí), con el objetivo de homomgeneizar los términos y usar los términos más correctos (p. ej. "adjetivos indeclinables" en lugar de "adjetivos invariantes"). [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 17:27 13 abr 2026 (UTC) ::::::::::::::Concuerdo con la propuesta de cambiarlo por "invariable en género". [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 04:56 23 abr 2026 (UTC) == General Australian == Necesito que un bot realice la siguiente corrección: Existen 582 entradas de palabras inglesas que indican "General Australian" que deben decir solo "Australia". Este error se produjo porque se copiaron entradas de Wiktionary, las que muestran "General Australian" cuando deberían decir "Australia". Por ejemplo, "|3pron1=General Australian|3fono1=" debería ser reemplazado por "|3pron1=Australia|3fono1=". También, se deben cambiar las entradas si uno o ambos números están ausentes. Si la segunda entrada no es fono o fono1 sino fone o fone1, no debe ser reemplazada porque podría estar correcta. He revisado las primeras 20 palabras y la regla anterior funciona para todas ellas. [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 18:37 12 abr 2026 (UTC) :@[[Usuario:Adelpine|Adelpine]] La primera parte la entendí, pero no entendí la segunda. "Si uno o ambos números están ausentes", cuáles números? Son los que acompañan al parámetro? Si es una omisión de <code>1</code>, mi bot lo agrega automáticamente. "Si la segunda entrada no es fono o fono1, sino fone o fone1", qué es la "segunda entrada"? Podrías poner un par de enlaces como ejemplos por favor, para que me conste aquello de lo que te estás refiriendo? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 02:45 16 abr 2026 (UTC) ::@[[Usuario:Tmagc|Tmagc]] Me refería a casos como "grass" "|4pron=General Australian, General New Zealand|4fone=ɡɹ̠äːs|4fone2=ɡɹ̠ɐːs". Asumí que si estaba la pronunciación fonética, podría estar bien. Sin embargo, revisé nuevamente y no encontré ningún caso en que así fuera. Por otra parte, en mis primeras ediciones, hacía copy/paste, pero cuando comprendí que "General Australian" estaba mal utilizado, comencé a mover las poquísimas correctas así "|3fone2=...|3fnota2=General Australian". En conclusión, si aparece "General Australian" en "pron" debe ser cambiada incluso si aparece después de "Received Pronunciation" o antes de "General New Zealand". ::Respecto a "General New Zealand", también está mal y debe ser cambiado a "Nueva Zelanda". Son solo 38 casos. [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 13:52 16 abr 2026 (UTC) :::@[[Usuario:Adelpine|Adelpine]] Ah, ya veo. En varios casos la tercera fila está vacía por lo que habría que desplazar todos los parámetros un índice hacia atrás. Me encargaré. Pero una observación: en general usamos {{parámetro|pron}} para indicar el dialecto o región, mientras que {{parámetro|fnota}} es para aclarar la etimología o la categoría gramatical, en los (pocos) casos en donde una misma entrada tiene distintas pronunciaciones según a qué refiera. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 14:19 16 abr 2026 (UTC) ::::@[[Usuario:Tmagc|Tmagc]] ¿Por "la tercera fila está vacía" quieres decir que a veces "General Australian" aparece en el primer o segundo pron y el tercer pron no existe? ::::Respecto al uso de |fnota= fue la solución más conveniente que encontré. El problema con el inglés de Australia es que ellos usan un fonema, que coloqué en |fono=, y tres pronunciaciones fonéticas, que coloqué en |fone2,3,4=. El lugar más lógico para identificar los sociolectos era |fnota2,3,4=. Mi consejo, la misma solución que usen para hnota usenla para fnota. [[Usuario:Adelpine|Adelpine]] ([[Usuario discusión:Adelpine|discusión]]) 18:24 16 abr 2026 (UTC) :::::@[[Usuario:Adelpine|Adelpine]] Nooo, me refiero a que General Australian aparece en el tercer pron y el segundo no existe. En cuanto a fnota, digo cómo pensé ese parámetro cuando lo agregué, porque estaba pensado para reemplazar a la inclusión de múltiples plantillas pron-graf cuando se invocaba varias veces en palabras cuya pronunciación cambia con la etimología. Pero no veo mal indicar los dialectos principles con pron y usar fnota para los subdialectos. Vos sos el que más usa la plantilla así que hacé lo que consideres más adecuado, pero sé consistente. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:29 16 abr 2026 (UTC) ::::::@[[Usuario:Adelpine|Adelpine]] Listo. Ya reemplacé todas las apariciones de "General Australian" por "Australia" y las de "General New Zealand" por "Nueva Zelanda". En cuanto al problema de los huecos, por lo que vi afectaba solamente a grass y a otra entrada más, pero el resto de las entradas no omitían índices. Así que fue más fácil de lo que creía. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:55 17 abr 2026 (UTC) == Noticias técnicas: 2026-16 == <section begin="technews-2026-W16" /><div class="plainlinks"> Las últimas '''[[m:Special:MyLanguage/Tech/News|noticias técnicas]]''' desde la comunidad técnica de Wikimedia. Por favor, comenta estos cambios con otros usuarios. No todos los cambios te afectarán. [[m:Special:MyLanguage/Tech/News/2026/16|Traducciones en varios idiomas]] están disponibles. '''Lo más destacado de la semana''' * Se invita a los editores con experiencia a [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Main_Page probar] la función de [[mw:Special:MyLanguage/Article guidance|guía de artículos]], diseñada para ayudar a los usuarios novatos a crear artículos bien estructurados que cumplan con las políticas de Wikipedia. Las instrucciones para la prueba están [[mw:Special:MyLanguage/Article guidance/Test feature guide|disponibles]]. Además, tras revisar [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance los esquemas], por favor deje sus comentarios en la [[mw:Talk:Article guidance|página de discusión del proyecto]]. En función de sus aportaciones, la función se perfeccionará y se trasladará a las Wikipedias piloto para su traducción y adaptación. Puede ver el [[c:File:Article Guidance workflow demo - April 2026.webm|video]] que explica esta funcionalidad. '''Actualizaciones para editores''' * En la mayoría de las wikis, todos los usuarios autoconfirmados ya pueden utilizar la página [[Special:ChangeContentModel|Special:ChangeContentModel]] para [[mw:Special:MyLanguage/Help:ChangeContentModel|crear páginas nuevas con modelos de contenido personalizados]] (como listas de mensajes masivos), lo que permite que dichas páginas sean más accesibles. Consulte [[Special:ListGroupRights|Special:ListGroupRights]] para comprobar el estado de este permiso en su wiki. [https://phabricator.wikimedia.org/T248294] * El equipo de Growth ha lanzado un [[mw:Special:MyLanguage/Contributors/Account_Creation_Experiments|experimento de creación de cuentas]] para evaluar si añadir un botón de registro en el encabezado de la versión web móvil aumenta la creación de cuentas y anima a más usuarios móviles a contribuir en las wikis. El experimento está activo actualmente en las Wikipedias en hindi, indonesio, bengalí, tailandés y hebreo, y se dirige al 10% de los usuarios de la versión web móvil que no han iniciado sesión. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Revisa las {{formatnum:30}} {{PLURAL:30|tarea enviada|tareas enviadas}} por la comunidad que fueron [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resueltas la semana pasada]]. Por ejemplo, se solucionó un error en el Editor Visual que podía causar que la pantalla de carga se detuviera en dispositivos con Windows donde las animaciones estaban desactivadas. [https://phabricator.wikimedia.org/T382856] '''Actualizaciones para los colaboradores técnicos''' * A partir de esta semana, las personas que son {{int:group-abusefilter}}, quienes tengan la función beta [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] activada, dispondrán de [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] en lugar de [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] como editor en el [[Special:AbuseFilter|Special:AbuseFilter]]. Esto forma parte de un esfuerzo integral para dotar de mayor consistencia a la experiencia de usuario en todos los editores. [https://phabricator.wikimedia.org/T399673][https://phabricator.wikimedia.org/T419332] * Las herramientas y bots que acceden a la [[mw:Special:MyLanguage/Notifications/API|API de notificaciones]] (<bdi lang="zxx" dir="ltr"><code><nowiki>action=query&meta=notifications</nowiki></code></bdi>) necesitarán actualizar sus permisos de OAuth o BootPassword para que también incluyan el acceso a notificaciones privadas. [https://phabricator.wikimedia.org/T421991] * Debido a una actualización de la biblioteca de software, es posible que las listas en las páginas de categorías se muestren desordenadas a partir del 20 de abril. Se ejecutará un script de migración para corregir este problema, el cual tardará entre unas horas y varios días en completarse, dependiendo del tamaño de la wiki (pudiendo demorar hasta una semana en la Wikipedia en inglés). [https://phabricator.wikimedia.org/T422544] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Actualizaciones detalladas de código de esta semana: [[mw:MediaWiki 1.46/wmf.24|MediaWiki]] ''Las '''[[m:Special:MyLanguage/Tech/News|Noticias Técnicas]]''' son preparadas por [[m:Special:MyLanguage/Tech/News/Writers|los escritores de Noticias Técnicas]] y publicadas con un [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Colabore]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/16|traduzca]]&nbsp;• [[m:Tech|obtenga ayuda]]&nbsp;• [[m:Talk:Tech/News|denos su opinión]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|suscríbase o cancele su suscripción]].'' </div><section end="technews-2026-W16" /> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:19 13 abr 2026 (UTC) <!-- Mensaje enviado por Usuario:STei (WMF)@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30380527 --> == trasladar los cómos al espacio de Ayuda == Está bien si traslado todas las páginas que comiencen con Wikcionario:Cómo, incluida [[Ayuda:CÓMOS]] al espacio de Ayuda? Y en caso de que así sea, debería dejar las redirecciones? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:20 17 abr 2026 (UTC) :Parece que solo serían seis páginas: [[Especial:PáginasPorPrefijo/Wikcionario:Cómo]]. Yo diría que adelante, sin redirecciones. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 21:51 17 abr 2026 (UTC) ::Listo. Solo faltaría modificar [[Mediawiki:Recentchangestext]] y agregar el alias <code>A:</code> para <code>Ayuda:</code>, así cambiamos [[WN:COMO]] por [[A:COMO]]. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:49 18 abr 2026 (UTC) :::Hecho, salvo lo del alias, que requeriría solicitar un cambio en la configuración de la wiki y no sé si merece la pena. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 18:22 18 abr 2026 (UTC) == Noticias técnicas: 2026-17 == <section begin="technews-2026-W17"/><div class="plainlinks"> Las últimas '''[[m:Special:MyLanguage/Tech/News|noticias técnicas]]''' desde la comunidad técnica de Wikimedia. Por favor, comenta estos cambios con otros usuarios. No todos los cambios te afectarán. [[m:Special:MyLanguage/Tech/News/2026/17|Traducciones en varios idiomas]] están disponibles. '''Lo más destacado de la semana''' * Después de dos años de desarrollo, [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]], también conocido como [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], dejará de ser una función beta este martes 21 de abril. Esta herramienta ofrece mejoras en la legibilidad del código fuente y la wikisintaxis, reduce los errores de escritura y aporta otros [[mw:Special:MyLanguage/Help:Extension:CodeMirror|beneficios]] para todos los usuarios del resaltador de sintaxis estándar. Un gran agradecimiento al voluntario [https://phabricator.wikimedia.org/p/Bhsd/ Bhsd], quien desarrolló muchas de las nuevas funcionalidades, incluyendo el [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Code folding|plegado de código]], el [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Autocompletion|autocompletado]] y las [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|comprobaciones]]. [https://phabricator.wikimedia.org/T259059] * Se ha lanzado una actualización mayor de la aplicación de Wikipedia para iOS, la cual ha sido rediseñada para adaptarse a los últimos estilos visuales de Apple «Liquid Glass». [https://apps.apple.com/us/app/wikipedia/id324715238 Descarga la última versión] y revisa las novedades de esta actualización. '''Actualizaciones para editores''' * [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|Listas de lectura]] es una función que permite a los lectores guardar artículos para leerlos más tarde. Esta característica ya está disponible en las Wikipedias en árabe, francés, indonesio, vietnamita y chino, y se ha habilitado de forma predeterminada para todas las cuentas nuevas en todas las ediciones de Wikipedia. * Un experimento que explora mejoras en las [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|previsualizaciones en la web móvil]] se lanzará durante la semana del 20 de abril en las Wikipedias en árabe, inglés, francés, italiano, polaco y vietnamita. Las previsualizaciones son ventanas emergentes (''pop-ups'') que muestran una miniatura, un párrafo descriptivo y un enlace para abrir el artículo al pasar sobre un enlace azul, lo que permite mejorar la navegación y el descubrimiento de contenidos. Esta función ya está disponible en las versiones de escritorio y en las aplicaciones móviles. [[m:Special:MyLanguage/List of experiments in Product and Technology#Template|Más información sobre este y otros experimentos]]. * En varias wikis, los usuarios registrados que no han [[mw:Special:MyLanguage/Help:Email confirmation|confirmado sus direcciones de correo electrónico]] comenzarán a ver un aviso que los animará a confirmar su correo. Al tener el correo confirmado, es posible restablecer el acceso a la cuenta en caso de pérdida de credenciales. [[mw:Special:MyLanguage/Help:Email confirmation|Más información sobre este cambio]]. [https://phabricator.wikimedia.org/T421366] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Revisa las {{formatnum:15}} {{PLURAL:15|tarea enviada|tareas enviadas}} por la comunidad que fueron [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resueltas la semana pasada]]. Por ejemplo, se ha solucionado un error en el editor de wikitexto de 2017 que afectaba a páginas muy extensas, provocando lentitud en la carga y la previsualización, desfase al desplazarse (''scrolling'') y fallos de rendimiento al seleccionar, cortar o pegar contenidos. [https://phabricator.wikimedia.org/T184857] '''Actualizaciones para los colaboradores técnicos''' * Como parte de la promoción de [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror]] desde una función nbeta, todos los usuarios comenzarán a usar [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] en lugar de [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] para el resaltado de sintaxis al editar códigos JavaScript, CSS, JSON, Vue o Lua. [https://phabricator.wikimedia.org/T419332] * El servicio <code>mirrors.wikimedia.org</code> para los usuarios de Debian y Ubuntu será retirado y dejará de funcionar el 15 de mayo. Los recursos de este servicio se sustituirán por opciones nuevas y mejoradas. Es posible que algunos usuarios deban cambiar a un servidor diferente, proceso que no debería tomar más de un minuto. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/LJYRIS4WB66HIRCAO4GIDTXCMDVZRBMA/ Aquí puede encontrar más información]. [https://phabricator.wikimedia.org/T416707] * Las tablas <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> y <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi> serán eliminadas en [[wikitech:Help:Wiki Replicas|wikireplicas]]. Si tu herramienta o consultas acceden a <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> o <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi> directamente, actualízalas para que utilicen las tablas <bdi lang="zxx" dir="ltr"><code><nowiki>file</nowiki></code></bdi> y <bdi lang="zxx" dir="ltr"><code><nowiki>filerevision</nowiki></code></bdi> antes del 28 de mayo. [https://phabricator.wikimedia.org/T28741] * Continuando con la reciente implementación de los límites de acceso a la API para el tráfico no identificado, la Fundación Wikimedia seguirá trabajando para asegurar un [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|uso justo de la infraestructura]] mediante la aplicación de límites globales al tráfico de la API identificado a partir de la última semana de abril. Estos límites se han configurado intencionadamente con los valores más altos posibles para minimizar el impacto en la comunidad. Los bots que se ejecutan en Toolforge/WMCS o aquellos que cuentan con el permiso de bot en cualquier wiki no deberían verse afectados por el momento. No obstante, se recomienda a todos los desarrolladores seguir las mejores prácticas actualizadas. Para más información, consulte [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]] y las [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits/FAQ|Preguntas frecuentes]]. * La [[mw:Special:MyLanguage/Attribution API|Attribution API]] ya está disponible en fase [[mw:Special:MyLanguage/Wikimedia APIs/Stability policy|beta]]. Esta API obtiene información para acreditar los artículos y archivos multimedia de Wikimedia allá donde se utilicen. La documentación de referencia se puede consultar a través de la página especial de la zona de pruebas (''sandbox'') de la API REST, disponible en todas las wikis de Wikimedia (como la [https://en.wikipedia.org/w/index.php?api=attribution.v0-beta&title=Special%3ARestSandbox zona de pruebas REST de la Wikipedia en inglés]). Puede compartir sus comentarios en la [[mw:Talk:Attribution API|página de discusión del proyecto]]. * Esta semana no hay una nueva versión de MediaWiki. ''Las '''[[m:Special:MyLanguage/Tech/News|Noticias Técnicas]]''' son preparadas por [[m:Special:MyLanguage/Tech/News/Writers|los escritores de Noticias Técnicas]] y publicadas con un [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Colabore]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/17|traduzca]]&nbsp;• [[m:Tech|obtenga ayuda]]&nbsp;• [[m:Talk:Tech/News|denos su opinión]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|suscríbase o cancele su suscripción]].'' </div><section end="technews-2026-W17"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:00 20 abr 2026 (UTC) <!-- Mensaje enviado por Usuario:STei (WMF)@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30432763 --> == Nueva plantilla para taxones == Junto con @[[Usuario:Raos10|Raos10]] (lo menciono por si quiere acotar algo), estrenamos la nueva plantilla {{ep|taxón}} para agregar los taxones a principio de la definición. Viene en reemplazo de la vieja costumbre de agregarlos con el formato manual. Ahora no es necesario especificar nada en cuanto al formato, ni agregar paréntesis ni cursivas: solo se invoca antes de escribir la definición separando todos los nombres científicos que apliquen a la definición como si fueran parámetros diferentes y especificando su apariencia alternativa ({{parámetro|altN}}), igual que como funciona con {{ep|sinónimo}}. Pronto migraré las páginas que tienen nombres científicos sin esta nueva plantilla. Quedo atento a dudas, quejas, reclamos, observaciones o sugerencias. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:04 20 abr 2026 (UTC) == Request for comment (global AI policy) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies for writing in English. {{int:Please-translate}} A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}} [[Usuario:MediaWiki message delivery|MediaWiki message delivery]] ([[Usuario discusión:MediaWiki message delivery|discusión]]) 00:58 26 abr 2026 (UTC) </bdi> <!-- Mensaje enviado por Usuario:Codename Noreste@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 --> == Noticias técnicas: 2026-18 == <section begin="technews-2026-W18"/><div class="plainlinks"> Las últimas '''[[m:Special:MyLanguage/Tech/News|noticias técnicas]]''' desde la comunidad técnica de Wikimedia. Por favor, comenta estos cambios con otros usuarios. No todos los cambios te afectarán. [[m:Special:MyLanguage/Tech/News/2026/18|Traducciones en varios idiomas]] están disponibles. '''Actualizaciones para editores''' * Se ha implementado un cambio en la forma en que se autoconfirman las cuentas nuevas para mejorar la protección contra el vandalismo. Actualmente, los usuarios que poseen una cuenta desde hace unos días y realizan algunas ediciones pasan automáticamente al grupo [[{{int:grouppage-autoconfirmed/{{CONTENTLANGUAGE}}}}|{{int:group-autoconfirmed}}]]. Esta configuración suele ser aprovechada por vándalos que crean cuentas y solo empiezan a usarlas tras dejar pasar el tiempo requerido. Para mitigar esto, a partir de la próxima semana, la antigüedad de la cuenta para fines de autoconfirmación se contará desde el momento de la primera edición en lugar de la fecha de registro. El valor numérico de la antigüedad necesaria se mantendrá sin cambios. Esta modificación se aplicará únicamente en las wikis que ya requieren al menos una edición como parte de sus requisitos de autoconfirmación. [https://phabricator.wikimedia.org/T418484] * Todos los usuarios de Wikipedia con cuentas nuevas, así como aquellos que tengan activada la opción «Habilitar automáticamente las nuevas funciones beta» en sus preferencias, tendrán acceso a la función beta [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|listas de lectura]] para guardar artículos y leerlos más tarde. Esto permite organizar los temas de interés en un solo lugar para un acceso más cómodo. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Revisa las {{formatnum:30}} {{PLURAL:30|tarea enviada|tareas enviadas}} por la comunidad que fueron [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resueltas la semana pasada]]. Por ejemplo, se resolvió un problema en el que las imágenes de la caja de infobox tenían un relleno excesivo en Firefox. [https://phabricator.wikimedia.org/T423676] '''Actualizaciones para los colaboradores técnicos''' * Como recordatorio, esta semana comenzarán a aplicarse los límites globales de la API para el tráfico identificado. Esto ayudará a asegurar un [[mw:MediaWiki Product Insights/Responsible Reuse|uso justo de la infraestructura]]. Los bots que se ejecutan en Toolforge/WMCS o aquellos con permisos de bot en cualquier wiki no deberían verse afectados por ahora. Sin embargo, se recomienda a todos los desarrolladores que sigan las mejores prácticas actualizadas. Para más información, incluyendo los límites actuales, consulte [[mw:Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]] y las [[mw:Wikimedia APIs/Rate limits/FAQ|Preguntas frecuentes]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Elemento recurrente]] Actualizaciones detalladas de código de esta semana: [[mw:MediaWiki 1.46/wmf.26|MediaWiki]] ''Las '''[[m:Special:MyLanguage/Tech/News|Noticias Técnicas]]''' son preparadas por [[m:Special:MyLanguage/Tech/News/Writers|los escritores de Noticias Técnicas]] y publicadas con un [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Colabore]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/18|traduzca]]&nbsp;• [[m:Tech|obtenga ayuda]]&nbsp;• [[m:Talk:Tech/News|denos su opinión]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|suscríbase o cancele su suscripción]].'' </div><section end="technews-2026-W18"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:06 27 abr 2026 (UTC) <!-- Mensaje enviado por Usuario:UOzurumba (WMF)@metawiki mediante la lista en https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30458046 --> bwm8d6dws5ijx0tbascffr5ilvh8k0m andar 0 1537 6110184 5907870 2026-04-28T00:51:26Z Tmagc 158167 6110184 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|1audio1=LL-Q1321 (spa)-Rodrigo5260-andar.wav|1aunota1=Perú}} === Etimología === {{etimología|la-eme|andare|alt=andāre}}, y este de [[ambulo|ambulāre]] o bien de [[ambio|ambitāre]]. ==== {{verbo intransitivo|es}} ==== [[Archivo:A poor pedestrian.jpg|thumb|Un hombre '''andando''' en una carretera de Marruecos (1).]] ;1: {{plm|ir}} de un lugar a otro dando [[paso]]s.<ref name="dle1925">{{DLE1925|80}}</ref> {{uso|utcprnl}} [[andarse]]. {{ejemplo|«{{plm|lo}} [[saber|supe]] [[a]] [[tiempo]], '''''anduve''''' [[dieciséis]] [[legua]]s, [[y]] [[les]] [[dar|di]] [[uno|un]] [[albazo]] [[este|esta]] [[mañana]], [[por]] [[aquí]] [[cerca]]…; [[los]] [[matar|he matado]] [[a]] [[casi]] [[todo]]s, [[pero]] [[tener|tengo]] [[que]] [[colgar]] [[a]] [[los]] [[capitán|capitanes]] [[en]] [[este]] [[camino]] (…)».|a={{versalita|[[w:Ignacio Manuel Altamirano|Altamirano, Ignacio Manuel]]}}|t=El Zarco: episodio de la vida mexicana en 1861-63|f=1886|c=libro}} {{sinónimo|ir|irse|dirigir|dirigirse|encaminarse}}. ;2: {{plm|ir}} de un lugar a otro [[algo]].<ref name="dle1925 /> {{uso|rara vez se emplea como pronominal}} [[andarse]]. {{sinónimo|moverse|desplazarse}}. ;3: {{plm|moverse}} un [[artefacto]] o [[máquina]] para ejecutar sus funciones.<ref name="dle1925 /> {{ejemplo|«[[echar|Echa]] [[a]] '''''andar''''' [[el]] [[coche]] [[ahora]]».|t=Ejemplo brindado por Wikcionario|c=página}} ;4: {{plm|estar}}{{subíndice|9}}.<ref name="dle1925 /> {{ejemplo|«([…] [[para]] [[quien]] [[tener|tiene]] [[poco|pocas]] [[cosa]]s [[importante]]s [[que]] [[hacer]] [[en]] [[este|esta]] [[vida]], [[como]] [[en]] [[el]] [[caso]] [[de]] [[Mari]] [[Carmen]] [[Bori]], [[invertir]][[las]] [[o]] [[hacer]][[las]] [[a]] [[destiempo]] [[poder|puede]] [[resultar]] [[fatal]]: [[no]] [[solo]] '''''anduvo''''' [[desorientado|desorientada]] [[y]] [[seriamente]] [[deprimido|deprimida]] [[durante]] [[uno|un]] [[año]], [[sino]] [[que]] [[hacer|hizo]] [[peligrar]] [[su]] [[matrimonio]])».|a={{versalita|Marsé, Juan}}|t=Últimas tardes con Teresa|f=1966|c=libro}} {{sinónimo|hallarse|encontrarse|sentirse}}. ;5: {{plm|haber}}{{subíndice|3}}.<ref name="dle1925 /> {{sinónimo|estar|existir|hallarse}}. ;6: {{plm|entender}} [[o]] [[entenderse]] [[en]] [[algo]].<ref name="dle1925 /> {{ejemplo|«{{plm|a}} [[este]] [[hombre]] [[solo]] [[le]] [[gustar|gusta]] '''''andar''''' {{versalita|[[en]]}} [[pleito]]s».|t=Ejemplo brindado por Wikcionario|c=página}} ;7: {{plm|dicho}} del [[tiempo]]: {{plm|pasar}} o [[correr]].<ref name="dle1925 /> ;8: Con las [[preposición|preposiciones]] ''con'' y ''sin'', y algunos nombres, [[tener]] o [[padecer]] lo que el nombre significa, o al contrario.<ref name="dle1925 /> {{ejemplo|→ «'''''Anda''''' {{versalita|[[con]]}} [[cuidado]]». <br>→ «'''''Anduvo''''' {{versalita|[[sin]]}} [[recelo]]».|t=Ejemplo brindado por Wikcionario|c=página}} ;9: Seguido de la [[preposición]] ''a'' y de nombres en plural, como ''[[cachete]]s'', ''cuchilladas'', ''tiros'', [[dar]][[los]], o [[reñir]] de este modo.<ref name="dle1925 /> ;10: Seguido de la [[preposición]] ''en'', [[poner]] o [[meter]] las manos o los dedos en alguna cosa.<ref name="dle1925 /> {{uso|utcprnl}} [[andarse]]. {{ejemplo|«¿[[poder|Se puede]] [[saber]] [[por qué]] '''''andabas''''' {{versalita|[[en]]}} [[mi]] [[cajón]], [[hermana|hermanita]]?».|t=Ejemplo brindado por Wikcionario|c=página}} {{sinónimo|hurgar|tocar}}. ;11: Seguido de un número que indique años, [[estar]] [[por]] [[cumplir]] estos.<ref name="dle1925 /> {{ejemplo|→ «¿¡{{plm|cómo}} [[que]] [[viejo|vieja]]!? {{plm|apenas}} '''''ando''''' {{versalita|[[en]]}} [[mis]] [[treinta]] [[como]] [[para]] [[que]] [[me]] [[venir|vengas]] [[a]] [[decir]] [[eso]]». <br>→ «{{plm|ya}} '''''ando''''' [[rondar|rondando]] [[los]] [[cincuenta]] [[año]]s».|t=Ejemplo brindado por Wikcionario|c=página}} ;12: Seguido de la [[preposición]] ''con'', [[manejar]]{{subíndice|1}}.<ref name="dle1925 /> {{ejemplo|«{{plm|oye}}. ¿{{plm|y}} [[tú]] [[por qué]] '''''andas''''' {{versalita|[[con]]}} [[aguja]]s? ¡[[traer|Trae]] [[acá]]! [[poder|Puede]] [[ser]] [[peligroso]]».|t=Ejemplo brindado por Wikcionario|c=página}} ;13: {{plm|ir}}{{subíndice|1}}.<ref name="dle1925 /> {{uso|coloquial}}. {{ejemplo|«'''''Ándate''''' [[a]] [[la]] [[farmacia]] [[y]] [[comprar|cómprame]] [[uno|unas]] [[pastilla]]s».|t=Ejemplo brindado por Wikcionario|c=página}} ;14 {{csem|náutica}}: {{plm|arribar}}{{subíndice|7}}.<ref name="dle1925 /> ;15: {{plm|recorrer}}.<ref name="dle1925 /> {{ejemplo|«{{plm|miércoles}} [[amainar|amainamos]] [[la]] [[noche]] [[desde]] [[pasado|pasadas]] [[cinco]] [[ampolleta]]s [[hasta]] [[el]] [[día]]: [[este]] [[mismo]] [[día]] '''''anduve''''' [[catorce]] [[legua]]s».|a={{versalita|Anónimo}}|t=Relacion del viaje que hizo Álvaro de Saavedra (…)|f=1529|c=libro|p=467}} {{sinónimo|avanzar|caminar|marchar}}. ;16: Seguido de la preposición ''a'' y otro verbo, ocuparse en, ponerse a, ejecutar la acción de dicho verbo.<ref name="dle1925 /> ;17: Con las preposiciones ''con'' y ''en'', [[usar]] o [[emplear]].<ref name="dle1925 /> ;18: {{plm|marchar}}, funcionar. {{ejemplo|Las cosas ''andan'' bien.}} ;19: Mantener una [[relación]] [[amorosa]] con pocas [[formalidad]]es o [[compromiso]]s. {{ámbito|Chile}}. {{uso|coloquial}}. ==== {{verbo auxiliar|es}} ==== ;19: Con [[gerundio]]s (andar&nbsp;+&nbsp;gerundio), denota la acción que expresan estos.<ref name="dle1925 /> {{ejemplo|→ «¿{{plm|Matías}}? {{plm|pues}} [[no]] [[saber|sé]] [[qué]] '''''andará''''' {{versalita|[[hacer|haciendo]]}} [[ese]] [[muchacho]] [[con]] [[su]] [[vida]]».|t=Ejemplo brindado por Wikcionario|c=página}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;20: {{plm|andadura}}.<ref name="dle1925 /> {{ejemplo|«{{plm|su}} '''''andar''''' [[ser|es]] [[uno|un]] [[poco]] [[raro]]».|t=Ejemplo brindado por Wikcionario|c=página}} {{sinónimo|andada|caminar}}. ;21: {{plm|suelo}}, [[pavimento]].<ref name="dle1925 /> {{uso|obsoleto}}. ==== Locuciones ==== * [[andar a tira vaca, tira buey]] * [[andar con santos tapados]] * [[andarse por las ramas]] ==== Refranes ==== * [[ande yo caliente y ríase la gente]] * [[dime con quién andas y te diré quién eres]] * [[dime con quién andas y si está buena me la mandas]] * [[quien anda entre miel, algo se le pega]] ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{t|de|a1=1|t1=gehen|t2=laufen}} {{t|sai-all|a1=1|t1=huyllpanen}} {{t|az|a1=1|t1=getmək|t2=yerimək}} {{t|br|a1=1|t1=kerzhat|t2=kerzhet|t3=kerzhiñ|t4=kerzhout}} {{t|sl|i1=s|t1=iti|t2=hoditi}} {{t|fr|a1=1|t1=marcher|t2=aller à pied}} {{t|gl|a1=1|t1=andar}} {{t|en|a1=1|t1=walk|t2=go}} {{t|it|a1=1|t1=camminare|t2=andare a piedi}} {{t|arn|a1=1,3|a2=1|t1=miawün|t2=trekan}} {{t|nl|a1=1|t1=gaan|t2=lopen|t3=te voet gaan}} {{trad-abajo}} == {{lengua|ast}} == {{pron-graf|leng=ast}} === Etimología === {{etimología|leng=ast}}. ==== {{verbo intransitivo|ast}} ==== ;1: {{plm}}. ==== Conjugación ==== {{ast.v}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología 1 === {{etimología|leng=gl}}. ==== {{verbo|gl}} ==== ;1: {{plm|andar}}. == Referencias y notas == <references /> l1l77xzzx585y1q3dvp0m3tk7oufkh5 6110189 6110184 2026-04-28T01:28:57Z Tmagc 158167 6110189 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|1audio1=LL-Q1321 (spa)-Rodrigo5260-andar.wav|1aunota1=Perú}} === Etimología === {{etimología|la-eme|andare|alt=andāre}}, y este de [[ambulo|ambulāre]] o bien de [[ambio|*ambitāre]]. ==== {{verbo intransitivo|es}} ==== [[Archivo:A poor pedestrian.jpg|thumb|Un hombre '''andando''' en una carretera de Marruecos (1).]] ;1: {{plm|ir}} de un lugar a otro dando [[paso]]s.<ref name="dle1925">{{DLE1925|80}}</ref> {{uso|utcprnl}} [[andarse]]. {{ejemplo|«{{plm|lo}} [[saber|supe]] [[a]] [[tiempo]], '''''anduve''''' [[dieciséis]] [[legua]]s, [[y]] [[les]] [[dar|di]] [[uno|un]] [[albazo]] [[este|esta]] [[mañana]], [[por]] [[aquí]] [[cerca]]…; [[los]] [[matar|he matado]] [[a]] [[casi]] [[todo]]s, [[pero]] [[tener|tengo]] [[que]] [[colgar]] [[a]] [[los]] [[capitán|capitanes]] [[en]] [[este]] [[camino]] (…)».|a={{versalita|[[w:Ignacio Manuel Altamirano|Altamirano, Ignacio Manuel]]}}|t=El Zarco: episodio de la vida mexicana en 1861-63|f=1886|c=libro}} {{sinónimo|ir|irse|dirigir|dirigirse|encaminarse}}. ;2: {{plm|ir}} de un lugar a otro [[algo]].<ref name="dle1925 /> {{uso|rara vez se emplea como pronominal}} [[andarse]]. {{sinónimo|moverse|desplazarse}}. ;3: {{plm|moverse}} un [[artefacto]] o [[máquina]] para ejecutar sus funciones.<ref name="dle1925 /> {{ejemplo|«[[echar|Echa]] [[a]] '''''andar''''' [[el]] [[coche]] [[ahora]]».|t=Ejemplo brindado por Wikcionario|c=página}} ;4: {{plm|estar}}{{subíndice|9}}.<ref name="dle1925 /> {{ejemplo|«([…] [[para]] [[quien]] [[tener|tiene]] [[poco|pocas]] [[cosa]]s [[importante]]s [[que]] [[hacer]] [[en]] [[este|esta]] [[vida]], [[como]] [[en]] [[el]] [[caso]] [[de]] [[Mari]] [[Carmen]] [[Bori]], [[invertir]][[las]] [[o]] [[hacer]][[las]] [[a]] [[destiempo]] [[poder|puede]] [[resultar]] [[fatal]]: [[no]] [[solo]] '''''anduvo''''' [[desorientado|desorientada]] [[y]] [[seriamente]] [[deprimido|deprimida]] [[durante]] [[uno|un]] [[año]], [[sino]] [[que]] [[hacer|hizo]] [[peligrar]] [[su]] [[matrimonio]])».|a={{versalita|Marsé, Juan}}|t=Últimas tardes con Teresa|f=1966|c=libro}} {{sinónimo|hallarse|encontrarse|sentirse}}. ;5: {{plm|haber}}{{subíndice|3}}.<ref name="dle1925 /> {{sinónimo|estar|existir|hallarse}}. ;6: {{plm|entender}} [[o]] [[entenderse]] [[en]] [[algo]].<ref name="dle1925 /> {{ejemplo|«{{plm|a}} [[este]] [[hombre]] [[solo]] [[le]] [[gustar|gusta]] '''''andar''''' {{versalita|[[en]]}} [[pleito]]s».|t=Ejemplo brindado por Wikcionario|c=página}} ;7: {{plm|dicho}} del [[tiempo]]: {{plm|pasar}} o [[correr]].<ref name="dle1925 /> ;8: Con las [[preposición|preposiciones]] ''con'' y ''sin'', y algunos nombres, [[tener]] o [[padecer]] lo que el nombre significa, o al contrario.<ref name="dle1925 /> {{ejemplo|→ «'''''Anda''''' {{versalita|[[con]]}} [[cuidado]]». <br>→ «'''''Anduvo''''' {{versalita|[[sin]]}} [[recelo]]».|t=Ejemplo brindado por Wikcionario|c=página}} ;9: Seguido de la [[preposición]] ''a'' y de nombres en plural, como ''[[cachete]]s'', ''cuchilladas'', ''tiros'', [[dar]][[los]], o [[reñir]] de este modo.<ref name="dle1925 /> ;10: Seguido de la [[preposición]] ''en'', [[poner]] o [[meter]] las manos o los dedos en alguna cosa.<ref name="dle1925 /> {{uso|utcprnl}} [[andarse]]. {{ejemplo|«¿[[poder|Se puede]] [[saber]] [[por qué]] '''''andabas''''' {{versalita|[[en]]}} [[mi]] [[cajón]], [[hermana|hermanita]]?».|t=Ejemplo brindado por Wikcionario|c=página}} {{sinónimo|hurgar|tocar}}. ;11: Seguido de un número que indique años, [[estar]] [[por]] [[cumplir]] estos.<ref name="dle1925 /> {{ejemplo|→ «¿¡{{plm|cómo}} [[que]] [[viejo|vieja]]!? {{plm|apenas}} '''''ando''''' {{versalita|[[en]]}} [[mis]] [[treinta]] [[como]] [[para]] [[que]] [[me]] [[venir|vengas]] [[a]] [[decir]] [[eso]]». <br>→ «{{plm|ya}} '''''ando''''' [[rondar|rondando]] [[los]] [[cincuenta]] [[año]]s».|t=Ejemplo brindado por Wikcionario|c=página}} ;12: Seguido de la [[preposición]] ''con'', [[manejar]]{{subíndice|1}}.<ref name="dle1925 /> {{ejemplo|«{{plm|oye}}. ¿{{plm|y}} [[tú]] [[por qué]] '''''andas''''' {{versalita|[[con]]}} [[aguja]]s? ¡[[traer|Trae]] [[acá]]! [[poder|Puede]] [[ser]] [[peligroso]]».|t=Ejemplo brindado por Wikcionario|c=página}} ;13: {{plm|ir}}{{subíndice|1}}.<ref name="dle1925 /> {{uso|coloquial}}. {{ejemplo|«'''''Ándate''''' [[a]] [[la]] [[farmacia]] [[y]] [[comprar|cómprame]] [[uno|unas]] [[pastilla]]s».|t=Ejemplo brindado por Wikcionario|c=página}} ;14 {{csem|náutica}}: {{plm|arribar}}{{subíndice|7}}.<ref name="dle1925 /> ;15: {{plm|recorrer}}.<ref name="dle1925 /> {{ejemplo|«{{plm|miércoles}} [[amainar|amainamos]] [[la]] [[noche]] [[desde]] [[pasado|pasadas]] [[cinco]] [[ampolleta]]s [[hasta]] [[el]] [[día]]: [[este]] [[mismo]] [[día]] '''''anduve''''' [[catorce]] [[legua]]s».|a={{versalita|Anónimo}}|t=Relacion del viaje que hizo Álvaro de Saavedra (…)|f=1529|c=libro|p=467}} {{sinónimo|avanzar|caminar|marchar}}. ;16: Seguido de la preposición ''a'' y otro verbo, ocuparse en, ponerse a, ejecutar la acción de dicho verbo.<ref name="dle1925 /> ;17: Con las preposiciones ''con'' y ''en'', [[usar]] o [[emplear]].<ref name="dle1925 /> ;18: {{plm|marchar}}, funcionar. {{ejemplo|Las cosas ''andan'' bien.}} ;19: Mantener una [[relación]] [[amorosa]] con pocas [[formalidad]]es o [[compromiso]]s. {{ámbito|Chile}}. {{uso|coloquial}}. ==== {{verbo auxiliar|es}} ==== ;19: Con [[gerundio]]s (andar&nbsp;+&nbsp;gerundio), denota la acción que expresan estos.<ref name="dle1925 /> {{ejemplo|→ «¿{{plm|Matías}}? {{plm|pues}} [[no]] [[saber|sé]] [[qué]] '''''andará''''' {{versalita|[[hacer|haciendo]]}} [[ese]] [[muchacho]] [[con]] [[su]] [[vida]]».|t=Ejemplo brindado por Wikcionario|c=página}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;20: {{plm|andadura}}.<ref name="dle1925 /> {{ejemplo|«{{plm|su}} '''''andar''''' [[ser|es]] [[uno|un]] [[poco]] [[raro]]».|t=Ejemplo brindado por Wikcionario|c=página}} {{sinónimo|andada|caminar}}. ;21: {{plm|suelo}}, [[pavimento]].<ref name="dle1925 /> {{uso|obsoleto}}. ==== Locuciones ==== * [[andar a tira vaca, tira buey]] * [[andar con santos tapados]] * [[andarse por las ramas]] ==== Refranes ==== * [[ande yo caliente y ríase la gente]] * [[dime con quién andas y te diré quién eres]] * [[dime con quién andas y si está buena me la mandas]] * [[quien anda entre miel, algo se le pega]] ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{t|de|a1=1|t1=gehen|t2=laufen}} {{t|sai-all|a1=1|t1=huyllpanen}} {{t|az|a1=1|t1=getmək|t2=yerimək}} {{t|br|a1=1|t1=kerzhat|t2=kerzhet|t3=kerzhiñ|t4=kerzhout}} {{t|sl|i1=s|t1=iti|t2=hoditi}} {{t|fr|a1=1|t1=marcher|t2=aller à pied}} {{t|gl|a1=1|t1=andar}} {{t|en|a1=1|t1=walk|t2=go}} {{t|it|a1=1|t1=camminare|t2=andare a piedi}} {{t|arn|a1=1,3|a2=1|t1=miawün|t2=trekan}} {{t|nl|a1=1|t1=gaan|t2=lopen|t3=te voet gaan}} {{trad-abajo}} == {{lengua|ast}} == {{pron-graf|leng=ast}} === Etimología === {{etimología|leng=ast}}. ==== {{verbo intransitivo|ast}} ==== ;1: {{plm}}. ==== Conjugación ==== {{ast.v}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología 1 === {{etimología|leng=gl}}. ==== {{verbo|gl}} ==== ;1: {{plm|andar}}. == Referencias y notas == <references /> s499mnuaw4z8exnwhgbhmf48jh51j5g arañar 0 2583 6110180 5935381 2026-04-27T23:45:01Z Tmagc 158167 6110180 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=aruñar|audio=LL-Q1321 (spa)-Rodelar-arañar.wav}} === Etimología === {{etimología|incierta}}. La explicación clásica se encuentra en el Diccionario de Autoridades, según la cual vendría de [[arar]] y de [[uña]]: [[aruñar]]. Sin embargo, la aparición de la variante con -u- aparece escrita casi un siglo después. Corominas la deriva de [[roña]], quien alega la posibilidad de un origen metonímico basado en la picazón.<ref>{{DCECH}}</ref> Otras teorías la derivan del francés antiguo [[hergner]] (dejó el moderno [[hargneux]]), y este del fráncico [[*harmēn]]. La vinculación con [[araña]] se ve muy forzada e improbable, mientras que el gallego [[rañar]] es una aféresis de este mismo vocablo. === {{verbo transitivo|es}} === ;1: {{plm|raspar}}, [[rasgar]] o [[cortar]] utilizando las [[uña]]s. ;2: Hacer [[raya]]s superficiales en cosas lisas como la pared, el vidrio, el metal, etc.<ref name="drae1925" /> ;3: Recoger con mucho [[afán]], de varias partes y en pequeñas porciones, lo necesario para algún fin.<ref name="drae1925">{{DLE1925}}</ref> {{uso|coloquial}} === Conjugación === {{es.v}} === Información adicional === {{cognados|arranhar|arrañar}} === Traducciones === {{trad-arriba}} <!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} --> {{trad-abajo}} == Referencias y notas == <references /> njc717juooltd2yte3v5tgxmhrygsoi 6110181 6110180 2026-04-27T23:47:04Z Tmagc 158167 /* Etimología */ 6110181 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=aruñar|audio=LL-Q1321 (spa)-Rodelar-arañar.wav}} === Etimología === {{año de documentación|1513}}. {{etimología|incierta}}. La explicación clásica se encuentra en el Diccionario de Autoridades, según la cual vendría de [[arar]] y de [[uña]]: [[aruñar]]. Sin embargo, la variante con -u- aparece escrita casi un siglo después. Corominas la deriva de [[roña]], quien alega la posibilidad de un origen metonímico basado en la picazón.<ref>{{DCECH}}</ref> Otras teorías la derivan del francés antiguo [[hergner]] (dejó el moderno [[hargneux]]), y este del fráncico [[*harmēn]]. La vinculación con [[araña]] se ve muy forzada e improbable, mientras que el gallego [[rañar]] es una aféresis de este mismo vocablo. === {{verbo transitivo|es}} === ;1: {{plm|raspar}}, [[rasgar]] o [[cortar]] utilizando las [[uña]]s. ;2: Hacer [[raya]]s superficiales en cosas lisas como la pared, el vidrio, el metal, etc.<ref name="drae1925" /> ;3: Recoger con mucho [[afán]], de varias partes y en pequeñas porciones, lo necesario para algún fin.<ref name="drae1925">{{DLE1925}}</ref> {{uso|coloquial}} === Conjugación === {{es.v}} === Información adicional === {{cognados|arranhar|arrañar}} === Traducciones === {{trad-arriba}} <!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} --> {{trad-abajo}} == Referencias y notas == <references /> kmzw946src2uaqlzcrlfnhaf3p1brxs perro 0 3878 6110191 6099514 2026-04-28T02:25:25Z Adryx9999 176354 6110191 wikitext text/x-wiki {{desambiguación|pero|Pero|péro|peró|Peró|però|Perõ}} == {{lengua|es}} == {{swadesh|es}} {{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-perro.wav}} === Etimología 1 === {{año de documentación|1141}}.<ref>{{CNDHE}}</ref> {{etimología|incierta}}. Coromines<ref>{{referencia|p=453|f=2008|c=libro|a=Coromines, Joan|t=Breve diccionario etimológico de la lengua castellana|l=Madrid|editorial=Gredos}}</ref> sugiere un origen expresivo en la interjección usada para llamar al animal, u onomatopéyica de su gruñido. Compárese con el gallego {{l+|gl|apurrar}}. Viejas teorías que lo relacionaban con el latín {{l+|la|petra}} o, como en la entrada del Diccionario de Autoridades de 1737, con el griego antiguo {{l+|grc|πῦρ}} (''pỹr''), carecen por entero de fundamento. [[Archivo:GermanShep1 wb.jpg|thumb|[1]]] [[Archivo:NCI Visuals Food Hot Dog.jpg|thumb|[2]]] [[Archivo:Clothespin-2459e.jpg|thumb|[3]]] [[Archivo:Booster_cables.jpg|thumb|right|[4]]] ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust|mf}} ;1 {{csem|mamíferos|perros}}: (''[[species:Canis lupus familiaris|Canis lupus familiaris]]'') Variedad doméstica del [[lobo]] de muchas y diversas [[raza]]s, compañero del hombre desde tiempos prehistóricos. {{sinónimos|chucho|can|tuso}}. {{hipónimo|perra|cachorro|quiltro|chucho|dogo|mastín|moloso|alano|terrier|sabueso|cobrador|perdiguero|lebrel|galgo|basset|perro de pastor|perro de aguas|perro faldero|perro de presa|perro policial|perro de caza|perro guardián|perro de guerra|perro camillero|perro de trineo|perro paria|perro de muestra|perro de salvamento|perro de salvamento en el mar|perro de avalancha|perro trufero|perro lobo|perro de compañía|perro de criadero|perro de seguimiento}}. {{hiperónimo|cánido}}. {{relacionado|jauría|canino|rehala}}. {{ejemplo|Un ''perro'' grande, de erizada pelambre, había atravesado la casa, a todo correr, llevándose un pernil de venado.|a=Alejo Carpentier|c=libro|f=1949|isbn=8432216534|p=40-41|t=El reino de este mundo}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;2: {{plm|sándwich}} de [[salchicha de Viena]] en un [[pan]] [[largo]] y [[delgado]], a la medida de ésta, aderezado con [[ketchup]], [[mayonesa]], [[mostaza]] u otras [[salsa]]s. {{ámbito|Venezuela}} {{uso|coloquial|por extensión}} {{sinónimos|chévere}} (El Salvador, Guatemala), [[completo]] (Chile), [[frankfurt]] (España, Uruguay), ''[[hot dog]]'', [[pancho]] (Argentina, Paraguay, Uruguay), [[perrito caliente]], [[perro caliente]] (México, Perú, Venezuela), [[shuco]] (Guatemala). ;3: {{plm|pinza}} de diversos materiales que sirve para fijar la [[ropa]] que se [[colgar|cuelga]] en un [[tendedero]]. {{ámbito|Chile}}. {{uso|coloquial}}. {{sinónimos|broche}} (Argentina), [[gancho]], [[perro de ropa]], [[pinza de ropa]]. ;4: Por analogía con un perro{{-sub|5}}, cada una de las pinzas que se [[conectar|conectan]] a los [[polo]]s de una [[batería]] para obtener [[electricidad]]. {{ámbito|Chile}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;5: {{plm|desdichado}}, [[indigno]], muy malo. {{uso|coloquial}} {{sinónimo|aciago|nefasto|nota=más formal}} ;6: {{plm|persona}} malvada o [[despreciable]]. {{uso|despectivo|utcs}}. ;7: Persona vaga y holgazana. {{uso|despectivo|utcs}}. {{sinónimos|flojo}}. ;8: {{plm|inhábil}}. {{uso|despectivo|utcs}} {{ámbito|Argentina}} {{wikisauro|inhábil}} ==== Compuestos ==== * {{l|es|Despeñaperros}} * {{l|es|lavaperros}} ==== Locuciones ==== {{trad-arriba|Locuciones con «perro»}} * [[perro bravo]]: perro de carácter agresivo. * [[perro caliente]] o [[perrito caliente]]: sándwich de salchicha de Viena * [[perro camillero]] * [[perro de aguas]] * [[perro de avalancha]] * [[perro de caza]] * [[perro de guarda]] * [[perro de guerra]] * [[perro de lanas]] * [[perro de las praderas]] * [[perro del mal]]: Perro rabioso (México) * [[perro de muestra]] * [[perro de pastor]] * [[perro de presa]] * [[perro de raza]]: El que pertenece a una raza reconocida. * [[perro de salvamento]]: Perro adiestrado para recuperar personas de derrumbes y desastres. * [[perro de ropa]] * [[perro de trineo]] * [[perro faldero]] o [[perrito faldero]] * [[perro gozque]] * [[perro guardián]] * [[perro mudo]]: Mapache. * [[perro paria]] * [[perro policía]]: El adiestrado para ayudar a la [[policía]] en sus tareas. * [[perro policial]] * [[perro salchicha]] [[Dachshund]] * [[perro salvaje]] * [[perro trufero]] * [[perro viejo]] * [[a cara de perro]] * [[a otro perro con ese hueso]]: expresión de rechazo. * [[atar los perros con longanizas]] * [[comer a cara de perro]]: comer con fruición y sin compartir (Bolivia) * [[como el perro de las dos tortas]] * [[costar más el collar que el perro]]: intentar resolver un problema de una manera que provoca más daño que beneficio * [[de perros]]: muy desagradable * [[echar los perros]]: amenazar o regañar a alguien; galantear (Argentina, México) * [[estar como los perros en misa]]: estar fuera de lugar (España) * [[estar meado de perro]] * [[hacer perro muerto]]: irse sin pagar (Chile, Perú) * [[llevarse como el perro y el gato]] * [[morir como un perro]] * [[ser el mismo perro con diferente collar]]: * [[ser carne de perro]]: ser durable o resistente (Chile) * [[sin padre ni madre, ni perro que le ladre]] * [[solo como el perro]] * [[tener más hambre que el perro de un ciego]] * [[tiempo de perros]] * [[tratar como perro]] {{trad-abajo}} {{trad-arriba|Refranes con «perro»}} * [[a perro flaco todo son pulgas]] * [[a quien Dios quiere bien, la perra le pare lechones]] * [[al perro nadar y a la mujer bailar, el diablo se lo debió enseñar]] * [[amigos verdaderos, un palo y un perro]] * [[aunque mi suegro sea bueno, no quiero perro con cencerro]] * [[como el perro de Olías]] * [[como los perros de Zorita]] * [[como perro por Carnestolendas]] * [[con dinero baila el perro]] * [[echa fuera el perro, que corta mi yerno]] * [[el perro del hortelano: no come ni deja comer]] * [[el perro ladra donde come]] * [[El perro, mi amigo. Mi mujer, mi enemigo. El hijo, mi señor]] * [[en cojera de perro y lágrimas de mujer, no hay que creer]] * [[gatos y mujeres, en la casa; hombres y perros, en la plaza]] * [[hidalgo que tiene un galgo, ya tiene algo]] * {{l|es|ir a casa sin perro, es notable yerro}} * {{l|es|la necesidad tiene cara de perro}} * {{l|es|mientras más conozco a la gente, más quiero a mi perro}} * [[no fíes en perro que cojea, ni en amor de gallega]] * [[no te fíes de mujer que no hable, ni de perro que no ladre]] * [[nunca más perro al molino]] * [[perro que ladra, no muerde]] * [[perro que mucho ladra, bien guarda]] * [[perros y ríos, no son temibles los que hacen ruido]] * {{l|es|por un perro que maté, mataperros me llamaron}} * [[¿Quieres que te siga el can? Dale pan]] * [[ser más raro que un perro verde]] {{trad-abajo}} ==== Información adicional ==== {{derivad|aperrar|aperrear|emperrarse|perrada|perraje|perrear|perrera|perrería|perrero|perruno}}. ==== Véase también ==== {{Commons|Category:Dog}} {{Wikipedia}} {{Wikiquote}} * [[perra]] * [[lobo]] * [[dingo]] * [[cinofilatelia]] * [[cinofilia]] * [[gozque]] * [[canil]] * [[can Cerbero]] ==== Traducciones ==== {{trad-arriba}} {{t|af|a1=1|t1=hond}} {{t|agu|a1=1|t1=tx’i’}} {{t|ain|a1=1|a2=1|a3=1|nota1=reep|nota2=seta|nota3=shita|t1=レエㇷ゚|t2=セタ|t3=シタ}} {{t|ay|a1=1|t1=anu}} {{t|ain|a1=1|t1=シタ}} {{t|sh|a1=1|g1=f|t1=pas cuko kučka пас|tl1=pas}} {{t|sq|a1=1|g1=m|t1=qen}} {{t|de|a1=1|g1=m|t1=Hund}} {{t|sai-all|a1=1|t1=guaza}} {{t|hsb|a1=1|a2=2|t1=pos|t2=psyk}} {{t|am|a1=1|a2=1|t1=ውሻ|t2=ከልብ|tl1=wəša|tl2=kälb}} {{t|ar|a1=1|t1=كلب|tl1=kalb}} {{t|an|a1=1|a2=1|t1=can|t2=cocho}} {{t|hy|a1=1|t1=շուն}} {{t|ast|a1=1|a2=1|t1=perru|t2=can}} {{t|az|a1=1|t1=it}} {{t|nds-de|a1=1|t1=hond}} {{t|dsb|a1=1|t1=pjas}} {{t|bm|a1=1|t1=wùlù}} {{t|be|a1=1|t1=сабака}} {{t|ml|a1=1|t1=നായ|tl1=nāya}} {{t|my|a1=1|t1=ခွေး}} {{t|br|a1=1|g1=m|g3=f|n2=p|t1=ki|t2=chas|t3=kiez}} {{t|bg|t1=куче}} {{t|bg|t1=пес}} {{t|pcc|a1=1|t1=mal}} {{t|cak|a1=1|t1=tzʼiʼ}} {{t|yue|a1=1|t1=狗}} {{t|cbs|a1=1|t1=kaman}} {{t|ca|a1=1|g2=m|t1=gos|t2=ca}} {{t|chr|a1=1|a2=1|t1=ꭹꮯ|t2=ꭹꮅ}} {{t|cs|a1=1|g1=m|t1=pes}} {{t|cap|a1=1|t1=paku}} {{t|ko|a1=1|t1=개|tl1=gae}} {{t|kw|a1=1|t1=ki}} {{t|cr|a1=1|t1=ᐊᑎᒻ}} {{t|da|a1=1|g1=m|t1=hund}} {{t|sco|a1=1|t1=cu}} {{t|sk|a1=1|g1=m|g2=f|t1=pes|t2=suka}} {{t|sl|a1=1|g1=m|g2=f|t1=pes|t2=psica}} {{t|eo|a1=1|t1=hundo}} {{t|et|a1=1|t1=koer}} {{t|eu|a1=1|t1=txakur|t2=etxe-txakur}} {{t|fo|a1=1|t1=hundur}} {{t|fi|a1=1|t1=koira}} {{t|fr|a1=1|g1=m|t1=chien}} {{t|fy|a1=1|t1=hûn}} {{t|fur|a1=1|t1=cjan}} {{t|gd|a1=1|a2=1|t1=cù|t2=madadh}} {{t|cy|g1=m|t1=ci}} {{t|gl|a1=1|t1=can}} {{t|ka|a1=1|t1=ძაღლი}} {{t|got|a1=1|g1=m|t1=𐌷𐌿𐌽𐌳𐍃|tl1=hunds}} {{t|grc|a1=1|g1=m|t1=κύων|tl1=cyōn}} {{t|el|a1=1|g1=m|t1=σκύλος|tl1=skilos}} {{t|gn|a1=1|t1=jagua}} {{t|haw|a1=1|t1=ʻilio}} {{t|he|a1=1|g1=m|t1=כלב|tl1=kelev}} {{t|hi|a1=1|t1=कुत्ता|tl1=kutta}} {{t|hus|a1=1|t1=pikʼoʼ}} {{t|hu|a1=1|t1=kutya}} {{t|io|a1=1|t1=hundo}} {{t|ig|t1=nkita}} {{t|id|a1=1|t1=anjing}} {{t|inz|a1=1|t1=huču}} {{t|en|a1=1|a2=6|t1=dog|t2=aligator clip}} {{t|ia|a1=1|t1=can}} {{t|iu|a1=1|t1=qimmiq}} {{t|ga|a1=1|g1=m|t1=madra|t2=gadhar|t3=cú}} {{t|is|a1=1|t1=hundur}} {{t|zza|a1=1|t1=kutık}} {{t|it|a1=1|g1=m|t1=cane}} {{t|zza|a1=1|t1=kutık}} {{t|ja|a1=1|t1=犬}} {{t|jv|a1=1|t1=asu}} {{t|lad|a1=1|t1=pero}} {{t|alc|a1=1|a2=1|t1=kiúrro|t2=sálxi}} {{t|kic|a1=1|t1=anemwa}} {{t|kuz|a1=1|t1=lockma}} {{t|lld|a1=1|t1=cian}} {{t|lkt|a1=1|t1=šúŋka}} {{t|la|a1=1|g1=m|t1=canis}} {{t|lv|a1=1|t1=suns}} {{t|lij|a1=1|t1=can}} {{t|lt|a1=1|g1=m|g2=m|t1=šuo|t2=šuva}} {{t|jbo|a1=1|t1=gerku}} {{t|lb|a1=1|g1=m|t1=Hond}} {{t|mk|a1=1|t1=пес|tl1=pes}} {{t|mt|a1=1|a2=1|t1=dib|t2=kelb}} {{t|ml|a1=1|t1=നായ|tl1=nāya}} {{t|cmn|a1=1|a2=1|t1=犬|t2=狗|tl1=quǎn|tl2=gǒu}} {{t|ms|a1=1|t1=anjing}} {{t|mnc|a1=1|t1=indahūn}} {{t|gv|a1=1|a2=1|t1=coo|t2=moddey}} {{t|mi|a1=1|t1=kurī}} {{t|arn|a1=1|t1=trewa}} {{t|mat|a1=1|t1=sini}} {{t|yua|t1=peekʼ}} {{t|maz|t1=dyoʼo}} {{t|nan|a1=1|t1=káu}} {{t|mit|a1=1|t1=tsi'ína}} {{t|mn|a1=1|t1=нохой|tl1=nokhoi}} {{t|nhn|a1=1|t1=izcuintli chichi}} {{t|nci|a1=1|t1=itzcuintli chichi}} {{t|azd|a1=1|t1=chichi}} {{t|ngu|a1=1|t1=chichi}} {{t|nch|a1=1|t1=chichi}} {{t|nhw|a1=1|t1=chichi}} {{t|nhe|a1=1|t1=chichi}} {{t|azn|a1=1|t1=pelo}} {{t|nlv|a1=1|t1=chichi}} {{t|nhv|a1=1|t1=itskuintli}} {{t|nv|a1=1|t1=łééchąąʼí}} {{t|nl|a1=1|g1=m|t1=hond}} {{t|nrm|a1=1|t1=tchian}} {{t|nn|a1=1|t1=hund}} {{t|nb|a1=1|t1=hund}} {{t|oc|a1=1|t1=ca|t2=gos|t3=can}} {{t|ote|a1=1|t1=tsat’yo}} {{t|fa|a1=1|t1=سگ|tl1=sæg}} {{t|pl|a1=1|g1=m|t1=pies}} {{t|pt|a1=1|a2=1|a3=2|g1=m|g2=m|t1=cão|t2=cachorro|t3=perro}} {{t|ine-pro|a1=1|t1=*ḱu̯ṓ}} {{t|pue|a1=1|t1=dāshü}} {{t|quz|a1=1|t1=allqu}} {{t|qwh|a1=1|t1=allqu}} {{t|quc|a1=1|t1=tzʼiʼ}} {{t|rap|a1=1|t1=paihenga}} {{t|rm|a1=1|t1=chaun}} {{t|rom|a1=1|g1=m|g2=f|t1=zhukel|t2=zhukli}} {{t|rw|a1=1|t1=imbwa}} {{t|ro|a1=1|t1=câine}} {{t|ru|a1=1|g1=f|g2=m|t1=собака|t2=пёс|tl1=sobaka|tl2=pòs}} {{t|se|a1=1|t1=beana}} {{t|sc|a1=1|t1=cani|t2=cane|t3=perru|t4=catteddu}} {{t|sh|a1=1|t1=pas}} {{t|scn|a1=1|t1=cani|t10=airatu|t11=mirindoni|t12=muturru|t2=cane|t3=perru|t4=catteddu|t5=calleddu|t6=calledda|t7=tetè|t8=ghjàcaru|t9=bubù}} {{t|sv|a1=1|t1=hund}} {{t|ty|a1=1|t1=ʻuri}} {{t|th|a1=1|t1=สนข}} {{t|ta|a1=1|t1=நய}} {{t|bo|a1=1|t1=ཁྱི|tl1=khyi}} {{t|ti|a1=1|t1=ከልቢ|tl1=kälbi}} {{t|tpi|a1=1|t1=dok}} {{t|tzh|a1=1|t1=ts'i'}} {{t|tzo|a1=1|t1=ts'i'}} {{t|tpn|a1=1|t1=îagûara}} {{t|tr|a1=1|t1=köpek}} {{t|uk|a1=1|t1=собака|t2=пес|tl1=sobaka|tl2=pes}} {{t|ug|a1=1|t1=ئىت}} {{t|vi|a1=1|t1=chó}} {{t|yag|a1=1|a2=1|t1=jašala|t2=jašæla}} {{t|yi|a1=1|t1=הונט|tl1=hoont}} {{t|yo|a1=1|t1=ajá}} {{t|zza|a1=1|t1=kutık}} {{t|zad|a1=1|t1=bikwʼ}} {{t|zat|a1=1|t1=bekoʼ}} {{t|zai|a1=1|t1=biʼcuʼ}} {{trad-abajo}} == Referencias y notas == <references /> d5qa7wev2sk67akc0mxqhf9c18jnn1u 6110192 6110191 2026-04-28T02:27:33Z Adryx9999 176354 6110192 wikitext text/x-wiki {{desambiguación|pero|Pero|péro|peró|Peró|però|Perõ}} == {{lengua|es}} == {{swadesh|es}} {{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-perro.wav}} === Etimología 1 === {{año de documentación|1141}}.<ref>{{CNDHE}}</ref> {{etimología|incierta}}. Coromines<ref>{{referencia|p=453|f=2008|c=libro|a=Coromines, Joan|t=Breve diccionario etimológico de la lengua castellana|l=Madrid|editorial=Gredos}}</ref> sugiere un origen expresivo en la interjección usada para llamar al animal, u onomatopéyica de su gruñido. Viejas teorías que lo relacionaban con el latín {{l+|la|petra}} o, como en la entrada del Diccionario de Autoridades de 1737, con el griego antiguo {{l+|grc|πῦρ}} (''pỹr''), carecen por entero de fundamento. [[Archivo:GermanShep1 wb.jpg|thumb|[1]]] [[Archivo:NCI Visuals Food Hot Dog.jpg|thumb|[2]]] [[Archivo:Clothespin-2459e.jpg|thumb|[3]]] [[Archivo:Booster_cables.jpg|thumb|right|[4]]] ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust|mf}} ;1 {{csem|mamíferos|perros}}: (''[[species:Canis lupus familiaris|Canis lupus familiaris]]'') Variedad doméstica del [[lobo]] de muchas y diversas [[raza]]s, compañero del hombre desde tiempos prehistóricos. {{sinónimos|chucho|can|tuso}}. {{hipónimo|perra|cachorro|quiltro|chucho|dogo|mastín|moloso|alano|terrier|sabueso|cobrador|perdiguero|lebrel|galgo|basset|perro de pastor|perro de aguas|perro faldero|perro de presa|perro policial|perro de caza|perro guardián|perro de guerra|perro camillero|perro de trineo|perro paria|perro de muestra|perro de salvamento|perro de salvamento en el mar|perro de avalancha|perro trufero|perro lobo|perro de compañía|perro de criadero|perro de seguimiento}}. {{hiperónimo|cánido}}. {{relacionado|jauría|canino|rehala}}. {{ejemplo|Un ''perro'' grande, de erizada pelambre, había atravesado la casa, a todo correr, llevándose un pernil de venado.|a=Alejo Carpentier|c=libro|f=1949|isbn=8432216534|p=40-41|t=El reino de este mundo}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;2: {{plm|sándwich}} de [[salchicha de Viena]] en un [[pan]] [[largo]] y [[delgado]], a la medida de ésta, aderezado con [[ketchup]], [[mayonesa]], [[mostaza]] u otras [[salsa]]s. {{ámbito|Venezuela}} {{uso|coloquial|por extensión}} {{sinónimos|chévere}} (El Salvador, Guatemala), [[completo]] (Chile), [[frankfurt]] (España, Uruguay), ''[[hot dog]]'', [[pancho]] (Argentina, Paraguay, Uruguay), [[perrito caliente]], [[perro caliente]] (México, Perú, Venezuela), [[shuco]] (Guatemala). ;3: {{plm|pinza}} de diversos materiales que sirve para fijar la [[ropa]] que se [[colgar|cuelga]] en un [[tendedero]]. {{ámbito|Chile}}. {{uso|coloquial}}. {{sinónimos|broche}} (Argentina), [[gancho]], [[perro de ropa]], [[pinza de ropa]]. ;4: Por analogía con un perro{{-sub|5}}, cada una de las pinzas que se [[conectar|conectan]] a los [[polo]]s de una [[batería]] para obtener [[electricidad]]. {{ámbito|Chile}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;5: {{plm|desdichado}}, [[indigno]], muy malo. {{uso|coloquial}} {{sinónimo|aciago|nefasto|nota=más formal}} ;6: {{plm|persona}} malvada o [[despreciable]]. {{uso|despectivo|utcs}}. ;7: Persona vaga y holgazana. {{uso|despectivo|utcs}}. {{sinónimos|flojo}}. ;8: {{plm|inhábil}}. {{uso|despectivo|utcs}} {{ámbito|Argentina}} {{wikisauro|inhábil}} ==== Compuestos ==== * {{l|es|Despeñaperros}} * {{l|es|lavaperros}} ==== Locuciones ==== {{trad-arriba|Locuciones con «perro»}} * [[perro bravo]]: perro de carácter agresivo. * [[perro caliente]] o [[perrito caliente]]: sándwich de salchicha de Viena * [[perro camillero]] * [[perro de aguas]] * [[perro de avalancha]] * [[perro de caza]] * [[perro de guarda]] * [[perro de guerra]] * [[perro de lanas]] * [[perro de las praderas]] * [[perro del mal]]: Perro rabioso (México) * [[perro de muestra]] * [[perro de pastor]] * [[perro de presa]] * [[perro de raza]]: El que pertenece a una raza reconocida. * [[perro de salvamento]]: Perro adiestrado para recuperar personas de derrumbes y desastres. * [[perro de ropa]] * [[perro de trineo]] * [[perro faldero]] o [[perrito faldero]] * [[perro gozque]] * [[perro guardián]] * [[perro mudo]]: Mapache. * [[perro paria]] * [[perro policía]]: El adiestrado para ayudar a la [[policía]] en sus tareas. * [[perro policial]] * [[perro salchicha]] [[Dachshund]] * [[perro salvaje]] * [[perro trufero]] * [[perro viejo]] * [[a cara de perro]] * [[a otro perro con ese hueso]]: expresión de rechazo. * [[atar los perros con longanizas]] * [[comer a cara de perro]]: comer con fruición y sin compartir (Bolivia) * [[como el perro de las dos tortas]] * [[costar más el collar que el perro]]: intentar resolver un problema de una manera que provoca más daño que beneficio * [[de perros]]: muy desagradable * [[echar los perros]]: amenazar o regañar a alguien; galantear (Argentina, México) * [[estar como los perros en misa]]: estar fuera de lugar (España) * [[estar meado de perro]] * [[hacer perro muerto]]: irse sin pagar (Chile, Perú) * [[llevarse como el perro y el gato]] * [[morir como un perro]] * [[ser el mismo perro con diferente collar]]: * [[ser carne de perro]]: ser durable o resistente (Chile) * [[sin padre ni madre, ni perro que le ladre]] * [[solo como el perro]] * [[tener más hambre que el perro de un ciego]] * [[tiempo de perros]] * [[tratar como perro]] {{trad-abajo}} {{trad-arriba|Refranes con «perro»}} * [[a perro flaco todo son pulgas]] * [[a quien Dios quiere bien, la perra le pare lechones]] * [[al perro nadar y a la mujer bailar, el diablo se lo debió enseñar]] * [[amigos verdaderos, un palo y un perro]] * [[aunque mi suegro sea bueno, no quiero perro con cencerro]] * [[como el perro de Olías]] * [[como los perros de Zorita]] * [[como perro por Carnestolendas]] * [[con dinero baila el perro]] * [[echa fuera el perro, que corta mi yerno]] * [[el perro del hortelano: no come ni deja comer]] * [[el perro ladra donde come]] * [[El perro, mi amigo. Mi mujer, mi enemigo. El hijo, mi señor]] * [[en cojera de perro y lágrimas de mujer, no hay que creer]] * [[gatos y mujeres, en la casa; hombres y perros, en la plaza]] * [[hidalgo que tiene un galgo, ya tiene algo]] * {{l|es|ir a casa sin perro, es notable yerro}} * {{l|es|la necesidad tiene cara de perro}} * {{l|es|mientras más conozco a la gente, más quiero a mi perro}} * [[no fíes en perro que cojea, ni en amor de gallega]] * [[no te fíes de mujer que no hable, ni de perro que no ladre]] * [[nunca más perro al molino]] * [[perro que ladra, no muerde]] * [[perro que mucho ladra, bien guarda]] * [[perros y ríos, no son temibles los que hacen ruido]] * {{l|es|por un perro que maté, mataperros me llamaron}} * [[¿Quieres que te siga el can? Dale pan]] * [[ser más raro que un perro verde]] {{trad-abajo}} ==== Información adicional ==== {{derivad|aperrar|aperrear|emperrarse|perrada|perraje|perrear|perrera|perrería|perrero|perruno}}. ==== Véase también ==== {{Commons|Category:Dog}} {{Wikipedia}} {{Wikiquote}} * [[perra]] * [[lobo]] * [[dingo]] * [[cinofilatelia]] * [[cinofilia]] * [[gozque]] * [[canil]] * [[can Cerbero]] ==== Traducciones ==== {{trad-arriba}} {{t|af|a1=1|t1=hond}} {{t|agu|a1=1|t1=tx’i’}} {{t|ain|a1=1|a2=1|a3=1|nota1=reep|nota2=seta|nota3=shita|t1=レエㇷ゚|t2=セタ|t3=シタ}} {{t|ay|a1=1|t1=anu}} {{t|ain|a1=1|t1=シタ}} {{t|sh|a1=1|g1=f|t1=pas cuko kučka пас|tl1=pas}} {{t|sq|a1=1|g1=m|t1=qen}} {{t|de|a1=1|g1=m|t1=Hund}} {{t|sai-all|a1=1|t1=guaza}} {{t|hsb|a1=1|a2=2|t1=pos|t2=psyk}} {{t|am|a1=1|a2=1|t1=ውሻ|t2=ከልብ|tl1=wəša|tl2=kälb}} {{t|ar|a1=1|t1=كلب|tl1=kalb}} {{t|an|a1=1|a2=1|t1=can|t2=cocho}} {{t|hy|a1=1|t1=շուն}} {{t|ast|a1=1|a2=1|t1=perru|t2=can}} {{t|az|a1=1|t1=it}} {{t|nds-de|a1=1|t1=hond}} {{t|dsb|a1=1|t1=pjas}} {{t|bm|a1=1|t1=wùlù}} {{t|be|a1=1|t1=сабака}} {{t|ml|a1=1|t1=നായ|tl1=nāya}} {{t|my|a1=1|t1=ခွေး}} {{t|br|a1=1|g1=m|g3=f|n2=p|t1=ki|t2=chas|t3=kiez}} {{t|bg|t1=куче}} {{t|bg|t1=пес}} {{t|pcc|a1=1|t1=mal}} {{t|cak|a1=1|t1=tzʼiʼ}} {{t|yue|a1=1|t1=狗}} {{t|cbs|a1=1|t1=kaman}} {{t|ca|a1=1|g2=m|t1=gos|t2=ca}} {{t|chr|a1=1|a2=1|t1=ꭹꮯ|t2=ꭹꮅ}} {{t|cs|a1=1|g1=m|t1=pes}} {{t|cap|a1=1|t1=paku}} {{t|ko|a1=1|t1=개|tl1=gae}} {{t|kw|a1=1|t1=ki}} {{t|cr|a1=1|t1=ᐊᑎᒻ}} {{t|da|a1=1|g1=m|t1=hund}} {{t|sco|a1=1|t1=cu}} {{t|sk|a1=1|g1=m|g2=f|t1=pes|t2=suka}} {{t|sl|a1=1|g1=m|g2=f|t1=pes|t2=psica}} {{t|eo|a1=1|t1=hundo}} {{t|et|a1=1|t1=koer}} {{t|eu|a1=1|t1=txakur|t2=etxe-txakur}} {{t|fo|a1=1|t1=hundur}} {{t|fi|a1=1|t1=koira}} {{t|fr|a1=1|g1=m|t1=chien}} {{t|fy|a1=1|t1=hûn}} {{t|fur|a1=1|t1=cjan}} {{t|gd|a1=1|a2=1|t1=cù|t2=madadh}} {{t|cy|g1=m|t1=ci}} {{t|gl|a1=1|t1=can}} {{t|ka|a1=1|t1=ძაღლი}} {{t|got|a1=1|g1=m|t1=𐌷𐌿𐌽𐌳𐍃|tl1=hunds}} {{t|grc|a1=1|g1=m|t1=κύων|tl1=cyōn}} {{t|el|a1=1|g1=m|t1=σκύλος|tl1=skilos}} {{t|gn|a1=1|t1=jagua}} {{t|haw|a1=1|t1=ʻilio}} {{t|he|a1=1|g1=m|t1=כלב|tl1=kelev}} {{t|hi|a1=1|t1=कुत्ता|tl1=kutta}} {{t|hus|a1=1|t1=pikʼoʼ}} {{t|hu|a1=1|t1=kutya}} {{t|io|a1=1|t1=hundo}} {{t|ig|t1=nkita}} {{t|id|a1=1|t1=anjing}} {{t|inz|a1=1|t1=huču}} {{t|en|a1=1|a2=6|t1=dog|t2=aligator clip}} {{t|ia|a1=1|t1=can}} {{t|iu|a1=1|t1=qimmiq}} {{t|ga|a1=1|g1=m|t1=madra|t2=gadhar|t3=cú}} {{t|is|a1=1|t1=hundur}} {{t|zza|a1=1|t1=kutık}} {{t|it|a1=1|g1=m|t1=cane}} {{t|zza|a1=1|t1=kutık}} {{t|ja|a1=1|t1=犬}} {{t|jv|a1=1|t1=asu}} {{t|lad|a1=1|t1=pero}} {{t|alc|a1=1|a2=1|t1=kiúrro|t2=sálxi}} {{t|kic|a1=1|t1=anemwa}} {{t|kuz|a1=1|t1=lockma}} {{t|lld|a1=1|t1=cian}} {{t|lkt|a1=1|t1=šúŋka}} {{t|la|a1=1|g1=m|t1=canis}} {{t|lv|a1=1|t1=suns}} {{t|lij|a1=1|t1=can}} {{t|lt|a1=1|g1=m|g2=m|t1=šuo|t2=šuva}} {{t|jbo|a1=1|t1=gerku}} {{t|lb|a1=1|g1=m|t1=Hond}} {{t|mk|a1=1|t1=пес|tl1=pes}} {{t|mt|a1=1|a2=1|t1=dib|t2=kelb}} {{t|ml|a1=1|t1=നായ|tl1=nāya}} {{t|cmn|a1=1|a2=1|t1=犬|t2=狗|tl1=quǎn|tl2=gǒu}} {{t|ms|a1=1|t1=anjing}} {{t|mnc|a1=1|t1=indahūn}} {{t|gv|a1=1|a2=1|t1=coo|t2=moddey}} {{t|mi|a1=1|t1=kurī}} {{t|arn|a1=1|t1=trewa}} {{t|mat|a1=1|t1=sini}} {{t|yua|t1=peekʼ}} {{t|maz|t1=dyoʼo}} {{t|nan|a1=1|t1=káu}} {{t|mit|a1=1|t1=tsi'ína}} {{t|mn|a1=1|t1=нохой|tl1=nokhoi}} {{t|nhn|a1=1|t1=izcuintli chichi}} {{t|nci|a1=1|t1=itzcuintli chichi}} {{t|azd|a1=1|t1=chichi}} {{t|ngu|a1=1|t1=chichi}} {{t|nch|a1=1|t1=chichi}} {{t|nhw|a1=1|t1=chichi}} {{t|nhe|a1=1|t1=chichi}} {{t|azn|a1=1|t1=pelo}} {{t|nlv|a1=1|t1=chichi}} {{t|nhv|a1=1|t1=itskuintli}} {{t|nv|a1=1|t1=łééchąąʼí}} {{t|nl|a1=1|g1=m|t1=hond}} {{t|nrm|a1=1|t1=tchian}} {{t|nn|a1=1|t1=hund}} {{t|nb|a1=1|t1=hund}} {{t|oc|a1=1|t1=ca|t2=gos|t3=can}} {{t|ote|a1=1|t1=tsat’yo}} {{t|fa|a1=1|t1=سگ|tl1=sæg}} {{t|pl|a1=1|g1=m|t1=pies}} {{t|pt|a1=1|a2=1|a3=2|g1=m|g2=m|t1=cão|t2=cachorro|t3=perro}} {{t|ine-pro|a1=1|t1=*ḱu̯ṓ}} {{t|pue|a1=1|t1=dāshü}} {{t|quz|a1=1|t1=allqu}} {{t|qwh|a1=1|t1=allqu}} {{t|quc|a1=1|t1=tzʼiʼ}} {{t|rap|a1=1|t1=paihenga}} {{t|rm|a1=1|t1=chaun}} {{t|rom|a1=1|g1=m|g2=f|t1=zhukel|t2=zhukli}} {{t|rw|a1=1|t1=imbwa}} {{t|ro|a1=1|t1=câine}} {{t|ru|a1=1|g1=f|g2=m|t1=собака|t2=пёс|tl1=sobaka|tl2=pòs}} {{t|se|a1=1|t1=beana}} {{t|sc|a1=1|t1=cani|t2=cane|t3=perru|t4=catteddu}} {{t|sh|a1=1|t1=pas}} {{t|scn|a1=1|t1=cani|t10=airatu|t11=mirindoni|t12=muturru|t2=cane|t3=perru|t4=catteddu|t5=calleddu|t6=calledda|t7=tetè|t8=ghjàcaru|t9=bubù}} {{t|sv|a1=1|t1=hund}} {{t|ty|a1=1|t1=ʻuri}} {{t|th|a1=1|t1=สนข}} {{t|ta|a1=1|t1=நய}} {{t|bo|a1=1|t1=ཁྱི|tl1=khyi}} {{t|ti|a1=1|t1=ከልቢ|tl1=kälbi}} {{t|tpi|a1=1|t1=dok}} {{t|tzh|a1=1|t1=ts'i'}} {{t|tzo|a1=1|t1=ts'i'}} {{t|tpn|a1=1|t1=îagûara}} {{t|tr|a1=1|t1=köpek}} {{t|uk|a1=1|t1=собака|t2=пес|tl1=sobaka|tl2=pes}} {{t|ug|a1=1|t1=ئىت}} {{t|vi|a1=1|t1=chó}} {{t|yag|a1=1|a2=1|t1=jašala|t2=jašæla}} {{t|yi|a1=1|t1=הונט|tl1=hoont}} {{t|yo|a1=1|t1=ajá}} {{t|zza|a1=1|t1=kutık}} {{t|zad|a1=1|t1=bikwʼ}} {{t|zat|a1=1|t1=bekoʼ}} {{t|zai|a1=1|t1=biʼcuʼ}} {{trad-abajo}} == Referencias y notas == <references /> 94munsnaankrvo60jtu32pt8ppj98we 6110193 6110192 2026-04-28T02:44:43Z Tmagc 158167 Revertidos los cambios de [[Special:Contributions/Adryx9999|Adryx9999]] ([[User talk:Adryx9999|disc.]]) a la última edición de [[User:TMCbot|TMCbot]] 5925263 wikitext text/x-wiki {{desambiguación|pero|Pero|péro|peró|Peró|però|Perõ}} == {{lengua|es}} == {{swadesh|es}} {{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-perro.wav}} === Etimología 1 === {{año de documentación|1141}}.<ref>{{CNDHE}}</ref> {{etimología|incierta}}. La completa carencia de cognados en otras lenguas, así como su tardía aparición hacia mediados del siglo XII, hacen improbable un étimo prerromano; Joan Corominas apunta como más plausible un origen expresivo en la interjección usada para llamar al animal, u onomatopéyica de su gruñido. Viejas teorías que lo relacionaban con el latín {{l+|la|petra}} o, como en la entrada del Diccionario de Autoridades de 1737, con el griego antiguo {{l+|grc|πῦρ}} (''pỹr''), carecen por entero de fundamento. Más verosímil es la teoría de que la palabra es de origen gitano, como la palabra inglesa ''pal'' que significa ''amigo''. La primera aparición de la palabra escrita no es anterior a la primera migración de los gitanos a España.{{cita requerida}} [[Archivo:GermanShep1 wb.jpg|thumb|[1]]] [[Archivo:NCI Visuals Food Hot Dog.jpg|thumb|[2]]] [[Archivo:Clothespin-2459e.jpg|thumb|[3]]] [[Archivo:Booster_cables.jpg|thumb|right|[4]]] ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust|mf}} ;1 {{csem|mamíferos|perros}}: (''[[species:Canis lupus familiaris|Canis lupus familiaris]]'') Variedad doméstica del [[lobo]] de muchas y diversas [[raza]]s, compañero del hombre desde tiempos prehistóricos. {{sinónimos|chucho|can|tuso}}. {{hipónimo|perra|cachorro|quiltro|chucho|dogo|mastín|moloso|alano|terrier|sabueso|cobrador|perdiguero|lebrel|galgo|basset|perro de pastor|perro de aguas|perro faldero|perro de presa|perro policial|perro de caza|perro guardián|perro de guerra|perro camillero|perro de trineo|perro paria|perro de muestra|perro de salvamento|perro de salvamento en el mar|perro de avalancha|perro trufero|perro lobo|perro de compañía|perro de criadero|perro de seguimiento}}. {{hiperónimo|cánido}}. {{relacionado|jauría|canino|rehala}}. {{ejemplo|Un ''perro'' grande, de erizada pelambre, había atravesado la casa, a todo correr, llevándose un pernil de venado.|a=Alejo Carpentier|c=libro|f=1949|isbn=8432216534|p=40-41|t=El reino de este mundo}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;2: {{plm|sándwich}} de [[salchicha de Viena]] en un [[pan]] [[largo]] y [[delgado]], a la medida de ésta, aderezado con [[ketchup]], [[mayonesa]], [[mostaza]] u otras [[salsa]]s. {{ámbito|Venezuela}} {{uso|coloquial|por extensión}} {{sinónimos|chévere}} (El Salvador, Guatemala), [[completo]] (Chile), [[frankfurt]] (España, Uruguay), ''[[hot dog]]'', [[pancho]] (Argentina, Paraguay, Uruguay), [[perrito caliente]], [[perro caliente]] (México, Perú, Venezuela), [[shuco]] (Guatemala). ;3: {{plm|pinza}} de diversos materiales que sirve para fijar la [[ropa]] que se [[colgar|cuelga]] en un [[tendedero]]. {{ámbito|Chile}}. {{uso|coloquial}}. {{sinónimos|broche}} (Argentina), [[gancho]], [[perro de ropa]], [[pinza de ropa]]. ;4: Por analogía con un perro{{-sub|5}}, cada una de las pinzas que se [[conectar|conectan]] a los [[polo]]s de una [[batería]] para obtener [[electricidad]]. {{ámbito|Chile}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;5: {{plm|desdichado}}, [[indigno]], muy malo. {{uso|coloquial}} {{sinónimo|aciago|nefasto|nota=más formal}} ;6: {{plm|persona}} malvada o [[despreciable]]. {{uso|despectivo|utcs}}. ;7: Persona vaga y holgazana. {{uso|despectivo|utcs}}. {{sinónimos|flojo}}. ;8: {{plm|inhábil}}. {{uso|despectivo|utcs}} {{ámbito|Argentina}} {{wikisauro|inhábil}} ==== Compuestos ==== * {{l|es|Despeñaperros}} * {{l|es|lavaperros}} ==== Locuciones ==== {{trad-arriba|Locuciones con «perro»}} * [[perro bravo]]: perro de carácter agresivo. * [[perro caliente]] o [[perrito caliente]]: sándwich de salchicha de Viena * [[perro camillero]] * [[perro de aguas]] * [[perro de avalancha]] * [[perro de caza]] * [[perro de guarda]] * [[perro de guerra]] * [[perro de lanas]] * [[perro de las praderas]] * [[perro del mal]]: Perro rabioso (México) * [[perro de muestra]] * [[perro de pastor]] * [[perro de presa]] * [[perro de raza]]: El que pertenece a una raza reconocida. * [[perro de salvamento]]: Perro adiestrado para recuperar personas de derrumbes y desastres. * [[perro de ropa]] * [[perro de trineo]] * [[perro faldero]] o [[perrito faldero]] * [[perro gozque]] * [[perro guardián]] * [[perro mudo]]: Mapache. * [[perro paria]] * [[perro policía]]: El adiestrado para ayudar a la [[policía]] en sus tareas. * [[perro policial]] * [[perro salchicha]] [[Dachshund]] * [[perro salvaje]] * [[perro trufero]] * [[perro viejo]] * [[a cara de perro]] * [[a otro perro con ese hueso]]: expresión de rechazo. * [[atar los perros con longanizas]] * [[comer a cara de perro]]: comer con fruición y sin compartir (Bolivia) * [[como el perro de las dos tortas]] * [[costar más el collar que el perro]]: intentar resolver un problema de una manera que provoca más daño que beneficio * [[de perros]]: muy desagradable * [[echar los perros]]: amenazar o regañar a alguien; galantear (Argentina, México) * [[estar como los perros en misa]]: estar fuera de lugar (España) * [[estar meado de perro]] * [[hacer perro muerto]]: irse sin pagar (Chile, Perú) * [[llevarse como el perro y el gato]] * [[morir como un perro]] * [[ser el mismo perro con diferente collar]]: * [[ser carne de perro]]: ser durable o resistente (Chile) * [[sin padre ni madre, ni perro que le ladre]] * [[solo como el perro]] * [[tener más hambre que el perro de un ciego]] * [[tiempo de perros]] * [[tratar como perro]] {{trad-abajo}} {{trad-arriba|Refranes con «perro»}} * [[a perro flaco todo son pulgas]] * [[a quien Dios quiere bien, la perra le pare lechones]] * [[al perro nadar y a la mujer bailar, el diablo se lo debió enseñar]] * [[amigos verdaderos, un palo y un perro]] * [[aunque mi suegro sea bueno, no quiero perro con cencerro]] * [[como el perro de Olías]] * [[como los perros de Zorita]] * [[como perro por Carnestolendas]] * [[con dinero baila el perro]] * [[echa fuera el perro, que corta mi yerno]] * [[el perro del hortelano: no come ni deja comer]] * [[el perro ladra donde come]] * [[El perro, mi amigo. Mi mujer, mi enemigo. El hijo, mi señor]] * [[en cojera de perro y lágrimas de mujer, no hay que creer]] * [[gatos y mujeres, en la casa; hombres y perros, en la plaza]] * [[hidalgo que tiene un galgo, ya tiene algo]] * {{l|es|ir a casa sin perro, es notable yerro}} * {{l|es|la necesidad tiene cara de perro}} * {{l|es|mientras más conozco a la gente, más quiero a mi perro}} * [[no fíes en perro que cojea, ni en amor de gallega]] * [[no te fíes de mujer que no hable, ni de perro que no ladre]] * [[nunca más perro al molino]] * [[perro que ladra, no muerde]] * [[perro que mucho ladra, bien guarda]] * [[perros y ríos, no son temibles los que hacen ruido]] * {{l|es|por un perro que maté, mataperros me llamaron}} * [[¿Quieres que te siga el can? Dale pan]] * [[ser más raro que un perro verde]] {{trad-abajo}} ==== Información adicional ==== {{derivad|aperrar|aperrear|emperrarse|perrada|perraje|perrear|perrera|perrería|perrero|perruno}}. ==== Véase también ==== {{Commons|Category:Dog}} {{Wikipedia}} {{Wikiquote}} * [[perra]] * [[lobo]] * [[dingo]] * [[cinofilatelia]] * [[cinofilia]] * [[gozque]] * [[canil]] * [[can Cerbero]] ==== Traducciones ==== {{trad-arriba}} {{t|af|a1=1|t1=hond}} {{t|agu|a1=1|t1=tx’i’}} {{t|ain|a1=1|a2=1|a3=1|nota1=reep|nota2=seta|nota3=shita|t1=レエㇷ゚|t2=セタ|t3=シタ}} {{t|ay|a1=1|t1=anu}} {{t|ain|a1=1|t1=シタ}} {{t|sh|a1=1|g1=f|t1=pas cuko kučka пас|tl1=pas}} {{t|sq|a1=1|g1=m|t1=qen}} {{t|de|a1=1|g1=m|t1=Hund}} {{t|sai-all|a1=1|t1=guaza}} {{t|hsb|a1=1|a2=2|t1=pos|t2=psyk}} {{t|am|a1=1|a2=1|t1=ውሻ|t2=ከልብ|tl1=wəša|tl2=kälb}} {{t|ar|a1=1|t1=كلب|tl1=kalb}} {{t|an|a1=1|a2=1|t1=can|t2=cocho}} {{t|hy|a1=1|t1=շուն}} {{t|ast|a1=1|a2=1|t1=perru|t2=can}} {{t|az|a1=1|t1=it}} {{t|nds-de|a1=1|t1=hond}} {{t|dsb|a1=1|t1=pjas}} {{t|bm|a1=1|t1=wùlù}} {{t|be|a1=1|t1=сабака}} {{t|ml|a1=1|t1=നായ|tl1=nāya}} {{t|my|a1=1|t1=ခွေး}} {{t|br|a1=1|g1=m|g3=f|n2=p|t1=ki|t2=chas|t3=kiez}} {{t|bg|t1=куче}} {{t|bg|t1=пес}} {{t|pcc|a1=1|t1=mal}} {{t|cak|a1=1|t1=tzʼiʼ}} {{t|yue|a1=1|t1=狗}} {{t|cbs|a1=1|t1=kaman}} {{t|ca|a1=1|g2=m|t1=gos|t2=ca}} {{t|chr|a1=1|a2=1|t1=ꭹꮯ|t2=ꭹꮅ}} {{t|cs|a1=1|g1=m|t1=pes}} {{t|cap|a1=1|t1=paku}} {{t|ko|a1=1|t1=개|tl1=gae}} {{t|kw|a1=1|t1=ki}} {{t|cr|a1=1|t1=ᐊᑎᒻ}} {{t|da|a1=1|g1=m|t1=hund}} {{t|sco|a1=1|t1=cu}} {{t|sk|a1=1|g1=m|g2=f|t1=pes|t2=suka}} {{t|sl|a1=1|g1=m|g2=f|t1=pes|t2=psica}} {{t|eo|a1=1|t1=hundo}} {{t|et|a1=1|t1=koer}} {{t|eu|a1=1|t1=txakur|t2=etxe-txakur}} {{t|fo|a1=1|t1=hundur}} {{t|fi|a1=1|t1=koira}} {{t|fr|a1=1|g1=m|t1=chien}} {{t|fy|a1=1|t1=hûn}} {{t|fur|a1=1|t1=cjan}} {{t|gd|a1=1|a2=1|t1=cù|t2=madadh}} {{t|cy|g1=m|t1=ci}} {{t|gl|a1=1|t1=can}} {{t|ka|a1=1|t1=ძაღლი}} {{t|got|a1=1|g1=m|t1=𐌷𐌿𐌽𐌳𐍃|tl1=hunds}} {{t|grc|a1=1|g1=m|t1=κύων|tl1=cyōn}} {{t|el|a1=1|g1=m|t1=σκύλος|tl1=skilos}} {{t|gn|a1=1|t1=jagua}} {{t|haw|a1=1|t1=ʻilio}} {{t|he|a1=1|g1=m|t1=כלב|tl1=kelev}} {{t|hi|a1=1|t1=कुत्ता|tl1=kutta}} {{t|hus|a1=1|t1=pikʼoʼ}} {{t|hu|a1=1|t1=kutya}} {{t|io|a1=1|t1=hundo}} {{t|ig|t1=nkita}} {{t|id|a1=1|t1=anjing}} {{t|inz|a1=1|t1=huču}} {{t|en|a1=1|a2=6|t1=dog|t2=aligator clip}} {{t|ia|a1=1|t1=can}} {{t|iu|a1=1|t1=qimmiq}} {{t|ga|a1=1|g1=m|t1=madra|t2=gadhar|t3=cú}} {{t|is|a1=1|t1=hundur}} {{t|zza|a1=1|t1=kutık}} {{t|it|a1=1|g1=m|t1=cane}} {{t|zza|a1=1|t1=kutık}} {{t|ja|a1=1|t1=犬}} {{t|jv|a1=1|t1=asu}} {{t|lad|a1=1|t1=pero}} {{t|alc|a1=1|a2=1|t1=kiúrro|t2=sálxi}} {{t|kic|a1=1|t1=anemwa}} {{t|kuz|a1=1|t1=lockma}} {{t|lld|a1=1|t1=cian}} {{t|lkt|a1=1|t1=šúŋka}} {{t|la|a1=1|g1=m|t1=canis}} {{t|lv|a1=1|t1=suns}} {{t|lij|a1=1|t1=can}} {{t|lt|a1=1|g1=m|g2=m|t1=šuo|t2=šuva}} {{t|jbo|a1=1|t1=gerku}} {{t|lb|a1=1|g1=m|t1=Hond}} {{t|mk|a1=1|t1=пес|tl1=pes}} {{t|mt|a1=1|a2=1|t1=dib|t2=kelb}} {{t|ml|a1=1|t1=നായ|tl1=nāya}} {{t|cmn|a1=1|a2=1|t1=犬|t2=狗|tl1=quǎn|tl2=gǒu}} {{t|ms|a1=1|t1=anjing}} {{t|mnc|a1=1|t1=indahūn}} {{t|gv|a1=1|a2=1|t1=coo|t2=moddey}} {{t|mi|a1=1|t1=kurī}} {{t|arn|a1=1|t1=trewa}} {{t|mat|a1=1|t1=sini}} {{t|yua|t1=peekʼ}} {{t|maz|t1=dyoʼo}} {{t|nan|a1=1|t1=káu}} {{t|mit|a1=1|t1=tsi'ína}} {{t|mn|a1=1|t1=нохой|tl1=nokhoi}} {{t|nhn|a1=1|t1=izcuintli chichi}} {{t|nci|a1=1|t1=itzcuintli chichi}} {{t|azd|a1=1|t1=chichi}} {{t|ngu|a1=1|t1=chichi}} {{t|nch|a1=1|t1=chichi}} {{t|nhw|a1=1|t1=chichi}} {{t|nhe|a1=1|t1=chichi}} {{t|azn|a1=1|t1=pelo}} {{t|nlv|a1=1|t1=chichi}} {{t|nhv|a1=1|t1=itskuintli}} {{t|nv|a1=1|t1=łééchąąʼí}} {{t|nl|a1=1|g1=m|t1=hond}} {{t|nrm|a1=1|t1=tchian}} {{t|nn|a1=1|t1=hund}} {{t|nb|a1=1|t1=hund}} {{t|oc|a1=1|t1=ca|t2=gos|t3=can}} {{t|ote|a1=1|t1=tsat’yo}} {{t|fa|a1=1|t1=سگ|tl1=sæg}} {{t|pl|a1=1|g1=m|t1=pies}} {{t|pt|a1=1|a2=1|a3=2|g1=m|g2=m|t1=cão|t2=cachorro|t3=perro}} {{t|ine-pro|a1=1|t1=*ḱu̯ṓ}} {{t|pue|a1=1|t1=dāshü}} {{t|quz|a1=1|t1=allqu}} {{t|qwh|a1=1|t1=allqu}} {{t|quc|a1=1|t1=tzʼiʼ}} {{t|rap|a1=1|t1=paihenga}} {{t|rm|a1=1|t1=chaun}} {{t|rom|a1=1|g1=m|g2=f|t1=zhukel|t2=zhukli}} {{t|rw|a1=1|t1=imbwa}} {{t|ro|a1=1|t1=câine}} {{t|ru|a1=1|g1=f|g2=m|t1=собака|t2=пёс|tl1=sobaka|tl2=pòs}} {{t|se|a1=1|t1=beana}} {{t|sc|a1=1|t1=cani|t2=cane|t3=perru|t4=catteddu}} {{t|sh|a1=1|t1=pas}} {{t|scn|a1=1|t1=cani|t10=airatu|t11=mirindoni|t12=muturru|t2=cane|t3=perru|t4=catteddu|t5=calleddu|t6=calledda|t7=tetè|t8=ghjàcaru|t9=bubù}} {{t|sv|a1=1|t1=hund}} {{t|ty|a1=1|t1=ʻuri}} {{t|th|a1=1|t1=สนข}} {{t|ta|a1=1|t1=நய}} {{t|bo|a1=1|t1=ཁྱི|tl1=khyi}} {{t|ti|a1=1|t1=ከልቢ|tl1=kälbi}} {{t|tpi|a1=1|t1=dok}} {{t|tzh|a1=1|t1=ts'i'}} {{t|tzo|a1=1|t1=ts'i'}} {{t|tpn|a1=1|t1=îagûara}} {{t|tr|a1=1|t1=köpek}} {{t|uk|a1=1|t1=собака|t2=пес|tl1=sobaka|tl2=pes}} {{t|ug|a1=1|t1=ئىت}} {{t|vi|a1=1|t1=chó}} {{t|yag|a1=1|a2=1|t1=jašala|t2=jašæla}} {{t|yi|a1=1|t1=הונט|tl1=hoont}} {{t|yo|a1=1|t1=ajá}} {{t|zza|a1=1|t1=kutık}} {{t|zad|a1=1|t1=bikwʼ}} {{t|zat|a1=1|t1=bekoʼ}} {{t|zai|a1=1|t1=biʼcuʼ}} {{trad-abajo}} == Referencias y notas == <references /> cxikg6do14w7uan451bo7z672kzugbk amargo 0 11193 6110114 5945723 2026-04-27T18:29:29Z Raos10 93688 Acepción 6 sinónimo amarguillo 6110114 wikitext text/x-wiki {{desambiguación|amargó}} == {{lengua|es}} == {{pron-graf|audio=LL-Q1321 (spa)-AdrianAbdulBaha-amargo.wav|aunota=Colombia}} === Etimología === {{año de documentación|1062}}.<ref>{{referencia|a=[[w:Joan Corominas|Joan Corominas]]|t=Breve diccionario etimológico de la lengua castellana|f=1973|editorial=Madrid: Gredos|c=libro}}</ref> {{etimología|la|amarus}}, y este del protoindoeuropeo {{l+|ine-pro|*h₂em-ro-}}, de la raíz {{l+|ine-pro|*h₂em-}}, "[[crudo]]"<ref>{{Mallory}}</ref>. Compárese el catalán {{l+|ca|amarg}}, el francés {{l+|fr|amer}}, el italiano {{l+|it|amaro}} o el rumano {{l+|ro|amaru}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: Que muestra uno de los [[sabor]]es [[elemental]]es, propio de los [[alcaloide]]s y en general [[desagradable]], producido por la [[proteína]] [[gustducina]]. ;2: Figurativamente, que provoca [[desagrado]], [[tristeza]] o [[aflicción]]. ;3: Dicho de una persona, que provoca una [[reacción]] tal en su [[trato]]. {{sinónimo|acre|agrio|mordaz}} ;4: Que manifiesta una reacción tal. {{sinónimo|afligido|alicaído|triste}} ;5: Por extensión, que no tiene [[valor]] para [[enfrentar|enfrentarse]] a las [[dificultad|dificultades]] o para [[defender]] sus ideas. {{ámbito|Argentina}} {{uso|coloquial}} {{sinónimo|pusilánime}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;6: {{plm|dulce}} seco compuesto con almendras amargas{{-sub|1}}.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|amarguillo}} ;7: En especial, [[licor]] [[medicinal]] de sabor amargo{{-sub|1}}, a base de una [[decocción]] de [[hierba]]s maceradas. {{sinónimo|bíter}} ;8: [[mate|Mate]] bebido sin otro sabor que el de la [[yerba mate]], de pronunciado sabor amargo{{-sub|1}}. {{ámbito|Río de la Plata}} {{sinónimo|cimarrón}} ==== Locuciones ==== {{trad-arriba|Locuciones con «amargo»}} * [[amargo de Angostura]] * [[amargo serrano]] * [[almendra amarga]] * [[almendro amargo]] * [[caña amarga]] * [[cedro amargo]] * [[cohombrillo amargo]] * [[escoba amarga]] * [[escobilla amarga]] * [[lechera amarga]] * [[mate amargo]] {{trad-abajo}} ==== Véase también ==== {{W}} * [[amargado]] * [[amargar]] * [[amargura]] ==== Traducciones ==== {{trad-arriba}} {{t|de|a1=1|t1=bitter}} {{t|ast|a1=1|t1=amargu}} {{t|bg|a1=1|t1=горчив}} {{t|ca|a1=1|t1=amarg}} {{t|da|a1=1|t1=bitter}} {{t|sk|a1=1|t1=horký}} {{t|fi|a1=1|t1=kitkerä}} {{t|fi|a1=1|t1=karvas}} {{t|fr|a1=1|t1=amer}} {{t|gl|a1=1|t1=amargo}} {{t|gn|a1=1|t1=ro}} {{t|io|a1=1|t1=bitra}} {{t|en|a1=1–4, 7|t1=bitter}} {{t|it|a1=1|t1=amaro}} {{t|la|a1=1|t1=amarus}} {{t|nl|a1=1|t1=bitter}} {{t|nb|a1=1|t1=bitter}} {{t|oc|t1=amar}} {{t|pap|a1=1|t1=marga}} {{t|pl|a1=1|t1=gorzki}} {{t|pt|a1=1|t1=amargo}} {{t|ro|a1=1|t1=amar}} {{t|ru|a1=1|t1=горький}} {{t|scn|a1=1|t1=amaru}} {{t|sc|a1=1|t1=ràntzigu}} {{t|sv|a1=1|t1=bitter}} {{trad-abajo}} === Forma flexiva === ==== Forma verbal ==== ;1: {{forma verbo|amargar|p=1s|t=presente|m=indicativo}}. == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología === {{etimología|la|amarus|leng=gl}}, y este del protoindoeuropeo {{l+|ine-pro|*h₂em-ro-}}, de la raíz {{l+|ine-pro|*h₂em-}}, "[[crudo]]". === {{adjetivo|gl}} === {{gl.adj}} ;1: {{plm}}. == {{lengua|pt}} == {{pron-graf|leng=pt}} === Etimología === {{etimología|la|amarus|leng=pt}}, y este del protoindoeuropeo {{l+|ine-pro|*h₂em-ro-}}, de la raíz {{l+|ine-pro|*h₂em-}}, "[[crudo]]". === {{adjetivo|pt}} === {{pt.adj}} ;1: {{plm}}. == Referencias y notas == <references /> b6mn3hwogezsdcc7rwc1e3ocych4kw5 6110159 6110114 2026-04-27T22:05:59Z Raos10 93688 variantes 6110159 wikitext text/x-wiki {{desambiguación|amargó}} == {{lengua|es}} == {{pron-graf|audio=LL-Q1321 (spa)-AdrianAbdulBaha-amargo.wav|aunota=Colombia|v=amargoso|v2=amarroso|v3=agarroso}} === Etimología === {{año de documentación|1062}}.<ref>{{referencia|a=[[w:Joan Corominas|Joan Corominas]]|t=Breve diccionario etimológico de la lengua castellana|f=1973|editorial=Madrid: Gredos|c=libro}}</ref> {{etimología|la|amarus}}, y este del protoindoeuropeo {{l+|ine-pro|*h₂em-ro-}}, de la raíz {{l+|ine-pro|*h₂em-}}, "[[crudo]]"<ref>{{Mallory}}</ref>. Compárese el catalán {{l+|ca|amarg}}, el francés {{l+|fr|amer}}, el italiano {{l+|it|amaro}} o el rumano {{l+|ro|amaru}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: Que muestra uno de los [[sabor]]es [[elemental]]es, propio de los [[alcaloide]]s y en general [[desagradable]], producido por la [[proteína]] [[gustducina]]. ;2: Figurativamente, que provoca [[desagrado]], [[tristeza]] o [[aflicción]]. ;3: Dicho de una persona, que provoca una [[reacción]] tal en su [[trato]]. {{sinónimo|acre|agrio|mordaz}} ;4: Que manifiesta una reacción tal. {{sinónimo|afligido|alicaído|triste}} ;5: Por extensión, que no tiene [[valor]] para [[enfrentar|enfrentarse]] a las [[dificultad|dificultades]] o para [[defender]] sus ideas. {{ámbito|Argentina}} {{uso|coloquial}} {{sinónimo|pusilánime}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;6: {{plm|dulce}} seco compuesto con almendras amargas{{-sub|1}}.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|amarguillo}} ;7: En especial, [[licor]] [[medicinal]] de sabor amargo{{-sub|1}}, a base de una [[decocción]] de [[hierba]]s maceradas. {{sinónimo|bíter}} ;8: [[mate|Mate]] bebido sin otro sabor que el de la [[yerba mate]], de pronunciado sabor amargo{{-sub|1}}. {{ámbito|Río de la Plata}} {{sinónimo|cimarrón}} ==== Locuciones ==== {{trad-arriba|Locuciones con «amargo»}} * [[amargo de Angostura]] * [[amargo serrano]] * [[almendra amarga]] * [[almendro amargo]] * [[caña amarga]] * [[cedro amargo]] * [[cohombrillo amargo]] * [[escoba amarga]] * [[escobilla amarga]] * [[lechera amarga]] * [[mate amargo]] {{trad-abajo}} ==== Véase también ==== {{W}} * [[amargado]] * [[amargar]] * [[amargura]] ==== Traducciones ==== {{trad-arriba}} {{t|de|a1=1|t1=bitter}} {{t|ast|a1=1|t1=amargu}} {{t|bg|a1=1|t1=горчив}} {{t|ca|a1=1|t1=amarg}} {{t|da|a1=1|t1=bitter}} {{t|sk|a1=1|t1=horký}} {{t|fi|a1=1|t1=kitkerä}} {{t|fi|a1=1|t1=karvas}} {{t|fr|a1=1|t1=amer}} {{t|gl|a1=1|t1=amargo}} {{t|gn|a1=1|t1=ro}} {{t|io|a1=1|t1=bitra}} {{t|en|a1=1–4, 7|t1=bitter}} {{t|it|a1=1|t1=amaro}} {{t|la|a1=1|t1=amarus}} {{t|nl|a1=1|t1=bitter}} {{t|nb|a1=1|t1=bitter}} {{t|oc|t1=amar}} {{t|pap|a1=1|t1=marga}} {{t|pl|a1=1|t1=gorzki}} {{t|pt|a1=1|t1=amargo}} {{t|ro|a1=1|t1=amar}} {{t|ru|a1=1|t1=горький}} {{t|scn|a1=1|t1=amaru}} {{t|sc|a1=1|t1=ràntzigu}} {{t|sv|a1=1|t1=bitter}} {{trad-abajo}} === Forma flexiva === ==== Forma verbal ==== ;1: {{forma verbo|amargar|p=1s|t=presente|m=indicativo}}. == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología === {{etimología|la|amarus|leng=gl}}, y este del protoindoeuropeo {{l+|ine-pro|*h₂em-ro-}}, de la raíz {{l+|ine-pro|*h₂em-}}, "[[crudo]]". === {{adjetivo|gl}} === {{gl.adj}} ;1: {{plm}}. == {{lengua|pt}} == {{pron-graf|leng=pt}} === Etimología === {{etimología|la|amarus|leng=pt}}, y este del protoindoeuropeo {{l+|ine-pro|*h₂em-ro-}}, de la raíz {{l+|ine-pro|*h₂em-}}, "[[crudo]]". === {{adjetivo|pt}} === {{pt.adj}} ;1: {{plm}}. == Referencias y notas == <references /> p4jhpg00b2knpmj2oo7k908qtit0m2h gradilla 0 12323 6110126 6056002 2026-04-27T19:43:24Z Tmagc 158167 6110126 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{etimología|diminutivo|grada}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: Material de [[laboratorio]] que se usa como [[soporte]] para los [[tubo de ensayo|tubos de ensayo]]. ;2: {{plm|escalón}} de [[entrada]] a una [[casa]]. {{ámbito|Córdoba (España)}} ==== Véase también ==== {{wikipedia}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> tidmelruleq3dh2408ryvu0qf5uql5f ambientar 0 17066 6110187 6089101 2026-04-28T01:07:55Z Tmagc 158167 6110187 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|ayuda=am-bientar}} === Etimología === {{etimología|sufijo|ambiente|ar}}. ==== {{verbo transitivo|es}} ==== ;1 {{csem|cine}}: Dotar de un ambiente adecuado a una escena. {{sinónimo|situar|enmarcar|contextuar|ambitar}} {{ejemplo|También en Ferrara, se le ha dado su nombre a la [[w:Biblioteca|Biblioteca]] municipal del Barco, y en [[w:Codigoro|Codigoro]] - en donde Bassani '''ambientó''' ''Airone'' - se encuentra la Biblioteca municipal ''Giorgio Bassani'' y la ''Fundación Giorgio Bassani''.|c=pagina|t=Giorgio Bassani|u=w:Giorgio_Bassani|editorial=Wikipedia}} ;2: Acondicionar el ambiente de un lugar. {{ejemplo|Se '''ambientó''' la [[w:Calleja de las Flores|Calleja de las Flores]], se recuperaron y restauraron edificios como el Alcázar y sus jardines.|c=pagina|t=Antonio Cruz-Conde|u=w:Antonio_Cruz-Conde|editorial=Wikipedia}} ;3: {{plm|frecuentar}}, [[concurrir]]. {{ejemplo|El [[w:25 de julio|25 de julio]] de [[w:1897|1897]], London y su cuñado James Shepard zarparon para unirse al [[w:Klondike Gold Rush|Klondike Gold Rush]] donde '''ambientaría''' sus primeras historias importantes.|c=pagina|t=Jack London|u=w:Jack_London|editorial=Wikipedia}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> m4pz0c9jxr7686nci66ewjm7e7vtcp0 6110188 6110187 2026-04-28T01:08:26Z Tmagc 158167 6110188 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|ayuda=am-bientar}} === Etimología === {{etimología|sufijo|ambiente|ar}}. ==== {{verbo transitivo|es}} ==== ;1 {{csem|cine}}: Dotar de un ambiente adecuado a una escena. {{sinónimo|situar|enmarcar|contextuar|ambitar}} {{ejemplo|También en Ferrara, se le ha dado su nombre a la [[w:Biblioteca|Biblioteca]] municipal del Barco, y en [[w:Codigoro|Codigoro]] —en donde Bassani '''ambientó''' ''Airone''— se encuentra la Biblioteca municipal ''Giorgio Bassani'' y la ''Fundación Giorgio Bassani''.|c=pagina|t=Giorgio Bassani|u=w:Giorgio_Bassani|editorial=Wikipedia}} ;2: Acondicionar el ambiente de un lugar. {{ejemplo|Se '''ambientó''' la [[w:Calleja de las Flores|Calleja de las Flores]], se recuperaron y restauraron edificios como el Alcázar y sus jardines.|c=pagina|t=Antonio Cruz-Conde|u=w:Antonio_Cruz-Conde|editorial=Wikipedia}} ;3: {{plm|frecuentar}}, [[concurrir]]. {{ejemplo|El [[w:25 de julio|25 de julio]] de [[w:1897|1897]], London y su cuñado James Shepard zarparon para unirse al [[w:Klondike Gold Rush|Klondike Gold Rush]] donde '''ambientaría''' sus primeras historias importantes.|c=pagina|t=Jack London|u=w:Jack_London|editorial=Wikipedia}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> bd1sdjfc4s2e6l2k4306owltja41ch8 Tokio 0 19286 6110080 6026775 2026-04-27T13:48:11Z Swam pl 132928 /* Traducciones */ traducciones al inglés y polaco 6110080 wikitext text/x-wiki {{desambiguación|Tokío}} == {{lengua|es}} == {{pron-graf|g1=Toquio|gnota1=poco usada|v1=Tokío|vnota1=obsoleta}} === Etimología === {{topónimo|capital1=ja|capital2=東京}} === {{sustantivo propio|es}} === ;1 {{csem|ciudades}}: Ciudad capital de [[Japón]]. {{topónimo|gentilicio1=tokiota}} === Véase también === {{Wikipedia}} === Traducciones === {{trad-arriba}} {{t|ast|t1=Toquio|t2=Tokiu}} {{t|en|t1=Tokyo}} {{t|pl|t1=Tokio}} {{trad-abajo}} == {{lengua|nch}} == {{pron-graf|leng=nch}} === Etimología === {{etimología|leng=nch}}. === {{sustantivo propio|nch}} === ;1 {{csem|leng=nch|ciudades}}: {{plm}}. == {{lengua|nhw}} == {{pron-graf|leng=nhw}} === Etimología === {{etimología|leng=nhw}}. === {{sustantivo propio|nhw}} === ;1 {{csem|leng=nhw|ciudades}}: {{plm}}. == {{lengua|ro}} == {{pron-graf|leng=ro}} === Etimología === {{etimología|leng=ro}}. === {{sustantivo propio|ro}} === ;1 {{csem|leng=ro|ciudades}}: {{plm}}. == Referencias y notas == <references /> i84wkr0m9woupqqfhvho4qgb91s617p 6110083 6110080 2026-04-27T14:46:49Z TMCbot 164594 . 6110083 wikitext text/x-wiki {{desambiguación|Tokío}} == {{lengua|es}} == {{pron-graf|g1=Toquio|gnota1=poco usada|v1=Tokío|vnota1=obsoleta}} === Etimología === {{etimología|ja|東京}} === {{sustantivo propio|es}} === ;1 {{csem|ciudades}}: Ciudad capital de [[Japón]]. {{topónimo|gentilicio1=tokiota}} === Véase también === {{Wikipedia}} === Traducciones === {{trad-arriba}} {{t|ast|t1=Toquio|t2=Tokiu}} {{t|en|t1=Tokyo}} {{t|pl|t1=Tokio}} {{trad-abajo}} == {{lengua|nch}} == {{pron-graf|leng=nch}} === Etimología === {{etimología|leng=nch}}. === {{sustantivo propio|nch}} === ;1 {{csem|leng=nch|ciudades}}: {{plm}}. == {{lengua|nhw}} == {{pron-graf|leng=nhw}} === Etimología === {{etimología|leng=nhw}}. === {{sustantivo propio|nhw}} === ;1 {{csem|leng=nhw|ciudades}}: {{plm}}. == {{lengua|ro}} == {{pron-graf|leng=ro}} === Etimología === {{etimología|leng=ro}}. === {{sustantivo propio|ro}} === ;1 {{csem|leng=ro|ciudades}}: {{plm}}. == Referencias y notas == <references /> 0krurw1h6pspxnqxqkjgl5shhnp6dwg cuello 0 23613 6110169 5915658 2026-04-27T22:57:47Z Tmagc 158167 /* Traducciones */ 6110169 wikitext text/x-wiki {{desambiguación|Cuello}} == {{lengua|es}} == {{pron-graf|1audio=LL-Q1321 (spa)-Rodelar-cuello.wav}} [[Archivo:Female neck.jpg|thumb|[1]]] [[Archivo:Sir Christopher Hatton from NPG (2) cropped.jpg|thumb|[2] cuello y [[boina]]]] === Etimología === {{etimología|la|collum}}, y este del protoindoeuropeo ''[[*kwol-o-]]'', en última instancia de la raíz ''[[*kwel-]]'', "[[girar]]". Compárese ''[[ciclo]]'' === {{sustantivo masculino|es}} === {{es.sust}} ;1 {{csem|anatomía}}: Parte más estrecha del cuerpo que une la [[cabeza]] con el [[tronco]] en la mayoría de los [[animal]]es [[vertebrado]]s. {{sinónimo|cogote|nota1=Argentina, Chile|gollete|nota2=desusado|pescuezo|nota3=raramente del humano}}. ;2 {{csem|vestimenta}}: Parte de la [[ropa]] que cubre esta parte del cuerpo {{sinónimo|collar|nota1=obsoleto}}. ;3: En especial, la tira rígida que rodea al cuello<sub>1</sub> en la [[vestimenta]] de los [[sacerdote]]s [[católico]]s {{sinónimo|alzacuello}}. ;4: Parte superior [[angosto|angosta]] de una [[vasija]] u otro [[recipiente]] {{sinónimo|gollete}}. ;5: Parte más [[estrecha]] y [[alargada]] de un objeto, especialmente si este es [[redondeado]] ;6 {{csem|anatomía}}: Zona donde se une el [[pie]] con la [[pierna]] {{uso|obsoleto}} {{sinónimo|tobillo}}. ;7 {{csem|botánica}}: {{plm|tallo}} que echan al [[brotar]] las [[cabeza]]s de las [[aliácea]]s. === Información adicional === {{derivad|alzacuello|alzacuellos|cuellicorto|cuellidegollado|cuellierguido|cuellilargo|cuellirrojo}} === Locuciones === {{trad-arriba|Locuciones con «cuello»}} * [[cuello acanalado]], [[cuello alechugado|alechugado]] o [[cuello escarolado|escarolado]] * [[cuello alto]], [[cuello cisne|cisne]] o [[cuello vuelto|vuelto]]: el que se dobla sobre sí mismo, cubriendo todo el cuello con dos capas de tela superpuestas * [[cuello blando]]: el que va sin [[almidonar]] * [[cuello de botella]]: zona estrecha de un sitio donde se suelen producir atascos * [[cuello de foque]] o [[cuello duro|duro]]: el que va almidonado * [[cuello de pajarita]] * [[cuello del útero]] o [[cuello uterino|uterino]]: cerviz * [[a voz en cuello]]: con gran volumen * [[bofetada de cuello vuelto]]: gran bofetada * [[con la soga al cuello]]: en grave peligro * [[dar cuello]]: matar (México) * [[de cuello azul]]: de clase obrera * [[de cuello blanco]]: de clase profesional o alta * [[escaparse por el cuello de la camisa|escaparse]] o [[salirse por el cuello de la camisa]]: estar muy flaco * [[hablar para el cuello de la camisa]]: hablar en voz muy baja * [[hasta el cuello]]: por completo * [[levantar el cuello]]: superar una adversidad * [[pararse el cuello]]: atribuirse crédito por algo que no debería * [[saltar al cuello]]: agredir violentamente * [[tener cogido por el cuello]]: tener bajo control {{trad-abajo}} === Véase también === {{w}} * [[cerviz]] * [[cogote]] * [[collar]] * [[nuca]] * [[pescuezo]] * [[testuz]] === Traducciones === {{trad-arriba}} {{t|arn|a1=1|t1=topeḻ}} {{t|sq|a1=1|t1=qafë}} {{t|de|a1=1|t1=Hals|g1=m|a2=2|t2=Kragen|g2=m|a3=3|t3=Kollar|g3=n}} {{t|ast|a1=1|t1=pescuezu}} {{t|az|a1=1|t1=boyun}} {{t|br|a1=1|t1=goûg|t2=gouzoug|g2=m}} {{t|bg|a1=1|t1=врат}} {{t|cs|a1=1|t1=krk|g1=m}} {{t|da|a1=1|t1=hals}} {{t|eo|a1=1|t1=kolo}} {{t|eu|a1=1|t1=lepo}} {{t|fi|a1=1|t1=kaula}} {{t|fr|a1=1|t1=cou}} {{t|et|a1=2|t1=kael}} {{t|el|a1=1|t1=λαιμός}} {{t|gd|a1=1|t1=amhach}} {{t|he|a1=1|t1=צואר|g1=m}} {{t|en|a1=1|t1=neck}} {{t|it|a1=1|t1=collo}} {{t|la|a1=2|t1=collum}} {{t|avk|a1=1|t1=berga}} {{t|mg|a1=1|t1=vozona}} {{t|nn|a1=1|t1=hals}} {{t|nci|a1=1|t1=cuechtli}} {{t|nl|a1=1|t1=nek}} {{t|pl|a1=1|t1=szyja}} {{t|pt|a1=1|t1=pescoço}} {{t|ru|a1=1|t1=шея|g1=f|a2=2|t2=воротник|g2=m}} {{t|sv|a1=1|t1=hals}} {{t|tr|a1=1|t1=boğaz}} {{t|yo|a1=1|t1=ọrùn}} {{trad-abajo}} == Referencias y notas == <references /> gx6h60y4fgf2ztwg4qk71vqwtxzbji9 malo 0 24713 6110108 6068045 2026-04-27T17:54:59Z Tmagc 158167 /* Etimología 1 */ 6110108 wikitext text/x-wiki {{desambiguación|Malo|málo|mało}} == {{lengua|es}} == {{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-malo.wav|v=mal}} {{ampliable}} === Etimología 1 === {{etimología|la|malus}}. ==== {{adjetivo|es}} ==== {{es.adj|sup=pésimo|sup2=malísimo|comp=peor}} ;1: Se dice de lo que no está bien hecho. {{antónimo|bueno}} {{hipónimo|deficiente}} {{ejemplo|Ese fue un ''mal'' trabajo.}} ;2: Se dice de lo que tiene connotaciones desagradables y negativas. {{antónimo|bueno}}. {{ejemplo|He pasado una ''mala'' noche.}} ;3: Se dice de la persona con maldad. {{uso|se usa también como sustantivo}} {{sinónimo|bellaco|cruel|granuja|malvado|ruin|vil}} {{antónimo|bueno}} {{ejemplo|Quien mató a Bambi era muy ''malo''.}} ;4: Se dice de lo que no tiene gracia y no gusta. {{sinónimo|desabrido|desagradable}} {{antónimo|bueno}} {{ejemplo|Una ''mala'' película.}} ;5: Se dice de lo que entraña un peligro. {{sinónimo|peligroso|avieso|riesgoso}}. {{ejemplo|Hoy las ''malas'' lecturas no pervierten a los jóvenes, ya que, afortunadamente, no leen.}} ;6: Que causa deterioro o daño. {{sinónimo|nocivo|dañino|pernicioso}} {{ejemplo|El cigarrillo es ''malo'' para la salud.}} ;7: Que no tiene mala conducta y comete travesuras. {{sinónimo|travieso|desobediente}}. {{ejemplo|Es un niño muy ''malo''.}} ;8: Deteriorado. {{sinónimo|averiado}}. {{ejemplo|El reloj está ''malo'', no da la hora.}} ;9: Con la salud alterada. {{sinónimo|enfermo}}. {{ejemplo|El paciente está ''malo''.}} ;10: Se dice de quien carece de habilidad o talento en una disciplina o arte. {{antónimo|bueno}} {{ejemplo|Yo pinto, pero soy un pintor muy ''malo''.}} ;11: Comida o bebida pasada o podrida. {{ejemplo|El pescado se puso ''malo'' por dejarlo fuera de la nevera.}} {{ámbito|Venezuela}} {{sinónimo|descompuesto|manido|piche|nota3=Venezuela}} ;12: Errado, incorrecto. {{ejemplo|Esa respuesta está ''mala''.}} {{ámbito|Venezuela}} ;13: Contrario a la buena educación, la ética y los buenos principios. {{antónimo|bueno}} {{ejemplo|Eso de aparecerse en una fiesta sin que a uno lo inviten es ''malo''.}} ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;14: {{plm|entidad}} [[sobrenatural]] que, según algunas religiones, [[tentar|tienta]] a los [[humano]]s a cometer el [[mal]]. {{wikisauro|diablo}} ;15: Personaje que representa la maldad por antonomasia en el cine y la literatura. {{ejemplo|Esto corre más lento que el caballo del ''malo''.}} {{antónimo|bueno}}. ==== Locuciones ==== * [[a la mala]]: ;16: De forma traicionera, por la espalda. ;17: A la fuerza. * [[colesterol malo]]: lipoproteínas de baja densidad que se acumulan en los vasos sanguíneos ocasionando arterioesclerosis y placas de ateroma y pueden conllevar el riesgo de sufrir infartos y ACV. * [[de malas]]: ;18: Sin suerte. ;19: De mal humor. {{ejemplo|Evita al jefe hoy, mira que anda ''de malas''.}} * [[en las buenas y en las malas]]: en todo momento, pase lo que pase. {{ejemplo|La amistad debe perdurar en las buenas y en ''las malas''.}} * [[lo malo]]: Dificultad, inconveniente o defecto. {{ejemplo|Tiene cáncer, ''lo malo'' es que no sabemos cómo decírselo.}} * [[por las malas]]: coaccionado, a la fuerza, bajo amenaza {{sinónimo|a juro|nota1=Venezuela}}. ==== Información adicional ==== * Cuando la forma masculina singular precede a un sustantivo, toma la forma apocopada ''mal''. ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{t|af|t1=kwaai|t2=sleg|t3=beroerd}} {{t|ain|i1=s|t1=ウェン|t2=ウェㇴ|t3=ヱン|t4=ヱㇴ}} {{t|sq|t1=keq}} {{t|de|a1=3,13|a2=3|a3=1,2|t1=verdorben|t2=böse|t3=schlecht|t4=übel|t5=schlimm}} {{t|sai-all|a1=2|t1=xenec}} {{t|bg|t1=зъл|t2=лош}} {{t|cs|t1=špatný}} {{t|da|t1=dårlig|t2=ilde|t3=ond|t4=slet}} {{t|eu|t1=gaizto|t2=txar}} {{t|fr|t1=mauvais|t2=méchant|t3=mal}} {{t|eo|t1=mava|t2=malbona}} {{t|fo|t1=ringur}} {{t|gd|t1=droch|t2=olc|t3=dona}} {{t|el|t1=κακός|t2=άσχημος}} {{t|hi|t1=ख़राब}} {{t|hu|t1=rossz}} {{t|hbo|g2=m|g4=f|t1=רָשָׁע|t2=רשע|t3=רָע|t4=רע}} {{t|io|t1=mala}} {{t|en|t1=bad|t2=nasty|t3=evil|t4=wrong}} {{t|ang|t1=yfel}} {{t|is|t1=illur|t2=slæmur|t3=vondur}} {{t|it|t1=brutto|t2=cattivo|t3=male}} {{t|ja|t1=悪い}} {{t|clm|t1=sx̣áʔəs}} {{t|kuz|t1=baltchar}} {{t|la|t1=malus|t2=phaulius}} {{t|ln|t1=-bé}} {{t|arn|a1=2|t1=weda}} {{t|yua|t1=kʼaas}} {{t|nci|t1=ahmo cualli}} {{t|nhw|t1=amo kuali}} {{t|nb|t1=dårlig}} {{t|nl|t1=slecht}} {{t|pap|t1=malo|t2=malu}} {{t|pl|t1=zły}} {{t|pt|t1=mau|t2=ruim}} {{t|ro|t1=rău}} {{t|ru|t1=плохой}} {{t|srn|t1=kway|t2=ogri}} {{t|sv|t1=arg|t2=dålig|t3=ful|t4=illa|t5=ond|t6=slätt|t7=stygg}} {{t|sw|t1=-baya}} {{t|tl|t1=masamâ}} {{t|tr|t1=fena|t2=kötü}} {{t|zu|t1=-bi|t2=-bolile}} {{trad-abajo}} == {{lengua|bm}} == {{pron-graf|leng=bm}} === Etimología 1 === {{etimología|leng=bm}}. ==== {{sustantivo|bm}} ==== ;1 {{csem|leng=bm|botánica|alimentos}}: {{plm|arroz}} (grano). ==== Véase también ==== {{w|idioma=bm}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología 1 === {{etimología|leng=gl}}. ==== {{adjetivo|gl}} ==== ;1: {{plm|malo}}. == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología 1 === {{etimología|leng=la|compuesto|magis|volo}}. ==== {{verbo transitivo|la}} ==== ;1: {{plm|querer}} [[más]], [[preferir]]. ==== {{verbo intransitivo|la}} ==== ;2: {{plm|inclinar}}se por, [[estar]] a [[favor]]. ==== Conjugación ==== {{la.v|irreg|mālō}} == {{lengua|sh}} == {{pron-graf|leng=sh}} === Etimología 1 === {{etimología|leng=sh}}. ==== {{adverbio|sh}} ==== ;1: {{plm|poco}}. {{ámbito|leng=sh|croata}} == Referencias y notas == <references /> nuy9l4jrwa6caafqoo61yijrjjyn4jf mosquito 0 29077 6110203 6101220 2026-04-28T08:05:31Z Limotecariu 6752 /* Traducciones */ 6110203 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} [[Archivo:Aedes_aegypti_biting_human.jpg|thumb|right|''Aedes aegypti'' picando a un humano.]] === Etimología === {{etimología|sufijo|mosca|ito}} === {{sustantivo masculino|es}} === {{es.sust}} ;1 {{csem|insectos}}: Insecto [[díptero]] volador pequeño de la familia Culicidae, conocido por su picadura con la que extrae sangre, sin embargo solo la hembra pica a animales y al hombre. Los mosquitos trasmiten enfermedades como: la [[malaria]], la [[fiebre amarilla]] y el [[dengue]].<ref name=dle1925>{{DLE1925}}</ref> {{sinónimo|zancudo|nota=América Latina, especialmente Venezuela}} ;2 {{csem|insectos}}: (''Drosophila'') Mosca muy pequeña de color marronáceo llamada también ''mosca del vinagre'' o ''mosca de la fruta'', que suele alimentarse de frutas muy maduras o substancias en fermentación ricas en fructosa. Es inofensiva. {{ámbito|Venezuela}} ;3 {{csem|insectos}}: Cualquiera de los insectos dípteros parecidos al mosquito, que suelen vivir formando enjambres en lugares húmedos, como las charcas y las bodegas.<ref name=dle1925 /> ;4: Larva de la langosta.<ref name=dle1925 /> ;5: Hombre que acude frecuentemente a la taberna.<ref name=dle1925 /> {{uso|coloquial}} ;6 {{csem|vehículos}}: Tractor de ruedas grandes y cabina pequeña que se usa para remolcar jaulas o carretones.<ref>{{Damer}}</ref> {{ámbito|Puerto Rico|Uruguay}} {{sinónimo|mosco}} === Véase también === {{W}} === Traducciones === {{trad-arriba}} {{t|de|t1=Mücke|g1=f|t2=Stechmücke|g2=f|t3=Moskito|g3=m}} {{t|ast|a1=1|t1=mosquitu}} {{t|bm|t1=soso}} {{t|cak|t1=üs}} {{t|ca|t1=mosquit|t2=cúlex}} {{t|da|t1=myg}} {{t|eo|t1=moskito|t2=kulo}} {{t|eu|t1=eltxo|t2=ulitxa}} {{t|fo|t1=mýggjabiti}} {{t|fr|t1=moustique|g1=m}} {{t|fy|t1=muskyt|t2=neef}} {{t|gl|t1=mosquito|g1=m}} {{t|ha|t1=sauro|g1=m}} {{t|he|t1=יתוש}} {{t|hu|t1=szúnyog}} {{t|id|t1=nyamuk}} {{t|en|t1=mosquito|t2=gnat}} {{t|ang|t1=gnætt}} {{t|is|t1=mý}} {{t|it|t1=zanzara}} {{t|ja|t1=蚊}} (ka) {{t|ms|t1=nyamuk}} {{t|zh|t1=蚊子}} {{t|yua|t1=k’oxol|t2=us}} {{t|nci|t1=moyotl}} {{t|nl|t1=mug|t2=muskiet|t3=steekmug}} {{t|nb|t1=mygg}} {{t|oc|t1=moissau}} {{t|xpo|t1=moyút}} {{t|pt|t1=mosquito|t2=mosquito}} {{t|frp|t1=mouissalino}} {{t|ru|t1=комар}} {{t|sv|t1=mygga}} {{t|sw|t1=mbu}} {{t|tl|t1=lamók}} {{t|tr|t1=sivrisinek}} {{trad-abajo}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología === {{etimología|leng=gl}}. === {{sustantivo masculino|gl}} === {{gl.sust}} ;1: {{plm}}. == {{lengua|pt}} == {{pron-graf|leng=pt}} === Etimología === {{etimología|leng=pt}}. === {{sustantivo|pt}} === ;1: {{plm}}. == Referencias y notas == <references /> bxvq5dzjxgp8mgssgwxf3iqjn81l4sz Chicago 0 29842 6110082 5959924 2026-04-27T14:46:44Z TMCbot 164594 . 6110082 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|fr|Chécagou}}, {{etim|mia|šikaakwa}}, {{etim|alg-pro|*šeka·kwa}}. === {{sustantivo propio|es}} === ;1 {{csem|ciudades|p=los Estados Unidos}}: es una ciudad del Estado de Illinois [[Estados Unidos]] === Véase también === {{wikipedia}} === Traducciones === {{trad-arriba}} <!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} --> {{trad-abajo}} == {{lengua|en}} == {{pron-graf|leng=en}} === Etimología === {{etimología|leng=en}}. === {{sustantivo propio|en}} === ;1 {{csem|ciudades|leng=en|p=los Estados Unidos}}: {{plm|Chicago}}. {{topónimo|gentilicio1=Chicagoan}} === Véase también === {{Wikipedia|leng=en}} == Referencias y notas == <references /> 39t1k50xgmj2dnbm268fcnbcwa3cyjw pescuezo 0 30006 6110170 5727520 2026-04-27T22:59:46Z Tmagc 158167 6110170 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{etimología|osp|pescueço}}, {{etim|fone|*poscoço}}, y este {{etimología|prefijo|pos-|coço}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|anatomía}}: {{plm|cuello}}, [[cogote]]. {{uso|coloquial}} {{sinónimo|cogote|cuello}} {{derivad|pescozón|pescuecera}} {{ejemplo|Tengo un dolor en el pescuezo.}} ;2: {{plm|vanidad}}, [[soberbia]], [[altanería]]. {{uso|coloquial}} ==== Locuciones ==== * [[andar al pescuezo]]: tener mala relación con alguno * [[retorcer el pescuezo]]: [[ahorcar]] == Referencias y notas == <references /> jlzp5tpklbpwxo4dygibmcl2l6e3qcv 6110171 6110170 2026-04-27T23:07:19Z Tmagc 158167 6110171 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{etimología|osp|pescueço}}, {{etim|fone|*poscoço}}, y este {{etim|prefijo|pos-|coço}}, hoy [[cuezo]].<ref>{{DCECH}}</ref> ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|anatomía}}: {{plm|cuello}}, [[cogote]]. {{uso|coloquial}} {{sinónimo|cogote|cuello}} {{derivad|pescozón|pescuecera}} {{ejemplo|Tengo un dolor en el pescuezo.}} ;2: {{plm|vanidad}}, [[soberbia]], [[altanería]]. {{uso|coloquial}} ==== Locuciones ==== * [[andar al pescuezo]]: tener mala relación con alguno * [[retorcer el pescuezo]]: [[ahorcar]] == Referencias y notas == <references /> oajzdptcndxnma85qwlpxl84bde9w4p andare 0 30387 6110190 5905954 2026-04-28T01:29:45Z Tmagc 158167 /* Etimología 1 */ 6110190 wikitext text/x-wiki {{desambiguación|andaré|anduviere}} == {{lengua|es}} == {{pron-graf}} === Forma flexiva === ==== Forma verbal ==== ;1: {{forma verbo|andar|m=subjuntivo|p=yo|t=futuro}}. {{uso|anticuado}} ;2: {{forma verbo|andar|m=subjuntivo|p=3s|t=futuro}}. {{uso|anticuado}} == {{lengua|it}} == {{pron-graf|leng=it|1audio1=It-andare.ogg}} === Etimología 1 === {{etimología|leng=it|la-eme|andare|alt=andāre}}, y este de [[ambulo|ambulāre]] o bien de [[ambio|*ambitāre]]. ==== {{verbo intransitivo|it}} ==== ;1: {{plm|andar}}. ==== Conjugación ==== {{it.v|e}} == Referencias y notas == <references /> mvn0sonbtv7of4738jtvgdusrwjnk8r producir 0 44082 6110137 5687581 2026-04-27T21:25:59Z 26agcp 138617 /* Español */Ordeno secciones 6110137 wikitext text/x-wiki {{definición}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{etimología|la|producere}}, y este formado con ''[[pro#Latín|pro]]'', "[[delante]]" y "''[[ducere#Latín|ducere]]''", "[[sacar]]". ==== {{verbo transitivo|es}} ==== ;1: {{plm|originar}}, causar un efecto. {{ejemplo|Algunos medicamentos producen somnolencia.}} ;2: {{plm|fabricar}} un objeto. {{ejemplo|En esta empresa se producen zapatillas.}} ;3: {{plm|crear}} una obra intelectual. {{ejemplo|Es un escritor muy prolífico; produce varias novelas cada año.}} ;4: Dar [[dinero]] para que pueda realizarse una obra de arte. {{ejemplo|Está buscando a alguien que le produzca la película.}} ;5 {{csem|derecho}}: <ref name="drae">{{DRAE2001}}</ref> ;6 {{csem|economía}}: Emplear medios o recursos para obtener un resultado.<ref name="drae" /> {{uso|utci}} {{sinónimo|trabajar}} ==== Relacionados ==== * [[acarrear]], [[beneficiar]], [[causar]], [[crear]], [[dar lugar a]], [[dejar]], [[fabricar]], [[inferir]], [[instigar]], [[maquinar]], [[ocasionar]], [[originar]], [[reportar]] ==== Conjugación ==== {{es.v}} ==== Información adicional ==== {{derivad|producente|contraproducente}} ==== Véase también ==== * [[producirse]] ==== Traducciones ==== {{trad-arriba}} {{t|de|a1=2|t1=produzieren|a2=2|t2=herstellen}} {{t|ext|t=prouzil}} {{t|fr|a1=2|t1=produire}} {{t|en|a1=2|t1=produce}} {{t|ia|a1=2|t1=producer}} {{t|it|a1=2|t1=produrre}} {{t|nl|a1=2|t1=produceren|a2=2|t2=maken|i2=s|t3=aandoen|t4=aanmaken|t5=aanrichten|t6=afwerpen|t7=berokkenen|t8=bezorgen|t9=opbrengen|t10=opleveren|t11=stichten|t12=teweegbrengen|t13=veroorzaken|t14=voortbrengen}} {{t|pl|a1=2|t1=wytwarzać|a2=2|t2=produkować}} {{t|pt|t1=produzir|a1=2}} {{t|ru|a1=2|t1=производить}} {{t|sv|a1=2|t1=producera}} {{trad-abajo}} == Referencias y notas == <references /> fo8xph4pqn1gt1a2w8t2lhc7nnji7sb pulgón 0 59724 6110204 6073865 2026-04-28T10:04:44Z Limotecariu 6752 /* Traducciones */ 6110204 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|texto-sufijo=sufijo augmentativo|pulga|ón}} === {{sustantivo masculino|es}} === {{es.sust}} ;1 {{csem|insectos}}: (familia Aphididae) Cualquiera de unas 5000 especies de insectos [[hemíptero]]s, de [[cuerpo]] [[piriforme]] de unos pocos milímetros de largo, largas patas, antenas articuladas de varios segmentos, y mandíbula modificada en [[estilete]], que emplean para [[alimentar]]se de [[savia]]. Son una de las principales [[plaga]]s de las plantas cultivadas en las regione templadas {{sinónimo|áfido}} ;2 {{csem|zoología}}: Crustáceo pequeño que construye madrigueras en la arena. Vive a lo largo de las costas templadas occidentales de América, en playas arenosas expuestas a la resaca de la zona intermareal. {{ámbito|Chile}} {{sinónimo|muimuy|chiquiliqui|chiquilique|tiquiliche|chirino de mar|michugo|catapacita de mar|chanchito de mar|limañe|pulga de mar|reculambay}} === Véase también === {{W}} * [[melado]] === Traducciones === {{trad-arriba}} {{t|de|a1=1|t1=Blattlaus|g1=f}} {{t|ast|a1=1|t1=pulgón|g1=m}} {{t|ca|a1=1|t1=pugó|g1=m}} {{t|eo|a1=1|t1=afido}} {{t|fi|a1=1|t1=kirva}} {{t|fr|a1=1|t1=puceron|g1=m}} {{t|el|a1=1|t1=αφίδα}} {{t|hu|a1=1|t1=levéltetű}} {{t|io|a1=1|t1=afidio}} {{t|en|a1=1|t1=aphid|t2=plant louse|t3=greenfly}} {{t|it|a1=1|t1=afide|g1=m|t2=pidocchio delle piante|g2=m}} {{t|ja|a1=1|t1=油虫|tl1=アブラムシ, aburamushi}} {{t|nv|a1=1|t1=nahachagii biyázhí}} {{t|nl|a1=1|t1=bladluis|g1=c}} {{t|pl|a1=1|t1=mszyca|g1=f}} {{t|pt|a1=1|t1=pulgão|g1=m}} {{trad-abajo}} == Referencias y notas == <references /> mfhibwqczivquovrpz7x2du2zo6doks ensalmado 0 70914 6110127 5751392 2026-04-27T19:44:07Z Tmagc 158167 6110127 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{etimología}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: Dicho de una persona, que está desustanciada o ausente. {{ámbito|Córdoba (España)}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Forma flexiva === ==== Forma verbal ==== ;1: ''Participio de'' [[ensalmar]]. == Referencias y notas == <references /> lg9jvohy2ucn3uilud4v1lurjt8bkjw diente de león 0 77234 6110088 6093067 2026-04-27T15:38:43Z Raos10 93688 Etimología, imagen, taxón (plantilla), sinónimos 6110088 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|calco|la|dens leonis|alt=dēns leōnis}}. [[File:Two_stages_in_the_life_cycle_of_a_dandelion_(Taraxacum_officinale)_–_flower_head_and_seed_head.jpg|thumb|[1]]] ==== {{locución sustantiva|es|masculino}} ==== {{es.sust|cop=n}} ;1: {{taxón|Taraxacum officinale}} [[planta|Planta]] [[herbáceo|herbácea]], de la familia de las [[asterácea]]s, de característica [[flor]] [[amarillo|amarilla]], que se transforma en una característica [[esfera]] [[blanquecino|blanquecina]] formada por los largos [[vilano]]s unidos a los [[fruto]]s para su [[dispersión]] por [[anemocoria]] {{sinónimo|amargón|almirón|achicoria amarga|áster|chicoria|panadero|pasto de clavo}} ==== Véase también ==== {{W|leng=es}} ==== Traducciones ==== {{trad-arriba}} {{t|de|a1=1|t1=Löwenzahn|a2=1|t2=ketteplöck}} {{t|hsb|a1=1|t1=mlóč}} {{t|az|t1=zəncirotu}} {{t|br|a1=1|t1=c'hwervizonenn|g1=f}} {{t|csb|a1=1|t1=mlécz}} {{t|ca|a1=1|t1=dent de lleó}} {{t|cs|a1=1|t1=pampeliška}} {{t|ko|a1=1|t1=서양민들레}} {{t|da|a1=1|t1=mælkebøtte}} {{t|sco|a1=1|t1=dentylion}} {{t|sk|a1=1|t1=púpava}} {{t|sl|a1=1|t1=regrat}} {{t|et|a1=1|t1=võilill}} {{t|fi|a1=1|t1=voikukka}} {{t|fr|a1=1|t1=pissenlit}} {{t|gl|a1=1|t1=mexacán|t2=carrelo|t3=leitarega|t4=leitaruga|t5=leituga|t6=tarrelo}} {{t|he|a1=1|t1=שינן רפואי}} {{t|hu|a1=1|t1=gyermekláncfű}} {{t|id|a1=1|t1=jombang}} {{t|en|a1=1|t1=dandelion}} {{t|is|a1=1|t1=túnfífill}} {{t|it|a1=1|t1=dente di leone}} {{t|ja|a1=1|t1=セイヨウタンポポ}} {{t|lv|a1=1|t1=ārstniecības pienene}} {{t|li|a1=1|t1=pisblóm}} {{t|lt|a1=1|t1=kiaulpienė}} {{t|lb|a1=1|t1=bettseechesch}} {{t|zh|a1=1|t1=西洋蒲公英}} {{t|nl|a1=1|t1=paardenbloem}} {{t|nb|a1=1|g1=mf|t1=løvetann}} {{t|nn|a1=1|t1=løvetann|g1=f}} {{t|pl|a1=1|t1=mniszek}} {{t|quz|a1=1|t1=saqasaqa}} {{t|ro|a1=1|t1=păpădie}} {{t|ru|a1=1|t1=одуванчик лекарственный}} {{t|sgs|a1=1|t1=pėinė}} {{t|tr|a1=1|t1=karahindiba}} {{t|uk|a1=1|t1=кульбаба лікарська}} {{t|wa|a1=1|t1=såvaedje cécoreye}} {{t|vec|a1=1|t1=pisacan}} {{t|sah|a1=1|t1=ньээм от}} {{trad-abajo}} == Referencias y notas == <references /> qb7f8h6eirgw2bg0tnzwp518f7vul7r cuezo 0 102447 6110163 5737810 2026-04-27T22:26:40Z Raos10 93688 Formato, sinónimo, uso, etimología incierta 6110163 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|incierta}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: Artesa de madera, en que amasan el yeso los albañiles.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|amasadera}} ;2: {{plm|cesto}} semejante al [[cuévano]] pero algo más pequeño.<ref name='dle1925'/> {{uso|anticuado}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 1xifd66sq7mq0v5us532twauwy4ubmz 6110164 6110163 2026-04-27T22:28:05Z Raos10 93688 Adición de forma flexiva 6110164 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|incierta}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: Artesa de madera, en que amasan el yeso los albañiles.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|amasadera}} ;2: {{plm|cesto}} semejante al [[cuévano]] pero algo más pequeño.<ref name='dle1925'/> {{uso|anticuado}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Forma flexiva === ==== Forma verbal ==== ;1: {{forma verbo|cocer|p=1s|t=presente|m=indicativo}}. == Referencias y notas == <references /> 9sdzczr6s595pphezrv4hc5nrc688da 6110172 6110164 2026-04-27T23:11:34Z Tmagc 158167 etimo 6110172 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|osp|coço}}, [[cueço]], probablemente {{etim|la-vul|*cauceus}}, {{etim|la-lat|caucus}}, {{etim|grc|καῦκος}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: Artesa de madera, en que amasan el yeso los albañiles.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|amasadera}} ;2: {{plm|cesto}} semejante al [[cuévano]] pero algo más pequeño.<ref name='dle1925'/> {{uso|anticuado}} ==== Información adicional ==== {{cognados|cossi|nota1=catalán|cueza|nota2=aragonés|còça|nota3=occitano}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Forma flexiva === ==== Forma verbal ==== ;1: {{forma verbo|cocer|p=1s|t=presente|m=indicativo}}. == Referencias y notas == <references /> lsj3nlycchrru4ybqt37tt1e0pjvh2d amarillez 0 125676 6110145 5711373 2026-04-27T21:49:10Z Raos10 93688 variante, formato 6110145 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amarillor}} === Etimología === {{etimología|sufijo|amarillo|ez}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{sustantivo de adjetivo|amarillo}} ==== Traducciones ==== {{trad-arriba}} {{t|ca|t1=grogor|g1=f}} {{t|en|t1=yellowness}} {{trad-abajo}} == Referencias y notas == <references /> 97ac22qx4vi2ok6sjvbizrzwawu1jwl 6110147 6110145 2026-04-27T21:50:27Z Raos10 93688 variante 6110147 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amarillor|v=amarillura}} === Etimología === {{etimología|sufijo|amarillo|ez}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{sustantivo de adjetivo|amarillo}} ==== Traducciones ==== {{trad-arriba}} {{t|ca|t1=grogor|g1=f}} {{t|en|t1=yellowness}} {{trad-abajo}} == Referencias y notas == <references /> ib3um4gdl7ju3dykq3hc87nh50k8ujp 6110148 6110147 2026-04-27T21:50:36Z Raos10 93688 6110148 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amarillor|v2=amarillura}} === Etimología === {{etimología|sufijo|amarillo|ez}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{sustantivo de adjetivo|amarillo}} ==== Traducciones ==== {{trad-arriba}} {{t|ca|t1=grogor|g1=f}} {{t|en|t1=yellowness}} {{trad-abajo}} == Referencias y notas == <references /> s420z6s5t26i1mehebr8g7ku9tqpire amarillento 0 125687 6110143 5822742 2026-04-27T21:47:35Z Raos10 93688 variante, formato 6110143 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amarilloso|v2=amarillejo}} === Etimología === {{etimología|sufijo|amarillo|ento}} ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|colores}}: Se dice del [[color]] o de lo que tiene un color [[similar]] al [[amarillo]]. ==== Traducciones ==== {{trad-arriba}} {{t|fr|a1=1|t1=jaunâtre}} {{t|el|a1=1|t1=κιτρινωπός}} {{t|en|t1=yellowish}} {{t|pl|a1=1|t1=żółtawy|a2=1|t2=pożółkły}} {{t|ru|a1=1|t1=желтоватый}} {{trad-abajo}} == Referencias y notas == <references /> g0vjp9teqdwmc79eegcmonoqip1lped peinilla 0 134755 6110124 5729758 2026-04-27T19:41:20Z Tmagc 158167 6110124 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} [[Archivo:Comb.png|thumb|[1]]] === Etimología === {{etimología|sufijo|peine|illa}} === {{sustantivo femenino|es}} === {{es.sust}} ;1: {{plm|peine}} de bolsillo. {{ámbito|Colombia|Ecuador|Panamá|Puerto Rico|Uruguay|Venezuela}} ;2: {{plm|peine}} corto con varias [[hilera]]s de [[púa]]s. {{ámbito|Córdoba (España)|Jaén}} {{sinónimo|lendrera}} ;3: {{plm|machete}} de poco tamaño. {{ámbito|Colombia|Cuba|Ecuador|Venezuela}} === Véase también === {{w|peine}} === Traducciones === {{trad-arriba}} <!--{{t+|de|}}--> <!--{{t+|ar|}}--> <!--{{t+|bg|}}--> <!--{{t+|ca|}}--> <!--{{t+|eo|}}--> <!--{{t+|fr|}}--> <!--{{t+|en|}}--> <!--{{t+|it|}}--> <!--{{t+|ja|}}--> <!--{{t+|nl|}}--> <!--{{t+|pl|}}--> <!--{{t+|pt|}}--> {{trad-abajo}} == Referencias y notas == <references /> ac4g5ch7uwpmmkrexfe32z0bwa2jkq1 amargor 0 150965 6110151 6110023 2026-04-27T21:54:02Z Raos10 93688 6110151 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amargura|v2=amargazón|v3=amaritud}} === Etimología === {{etimología|sufijo|amargo|or}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: {{plm|sabor}} o gusto [[amargo]].<ref name='dle1925'>{{DLE1925}}</ref> {{relacionado|amargo|amargar|amargante|amargado}} ;2: {{plm|angustia}} o [[pena]].<ref name='dlc17'>{{DLC1817}}</ref> ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba|[1] amargo}} {{trad-abajo}} {{trad-arriba|[2] angustia}} {{t|fr|t1=amertume}} {{t|en|t1=bitterness}} {{t|it|t1=amarezza|g1=f}} {{t|oc|t1=amargor}} {{t|pt|t1=amargura|g1=f}} {{trad-abajo}} == Referencias y notas == <references /> n3r210nhruwputuxut9le3nur3n7g2h invernal 0 161279 6110079 6026752 2026-04-27T13:21:53Z Tmagc 158167 6110079 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|p1=invernar|v=hibernal}} === Etimología === {{etimología|sufijo|invierno|al}}. === {{adjetivo|es}} === {{es.adj|ng}} ;1: {{adjetivo de sustantivo|[[invierno]]|al}}. {{sinónimo|hiemal}} === {{sustantivo masculino|es}} === {{es.sust}} ;2: Lugar cubierto en los [[invernadero]]s destinado para descansar, proteger y alimentar al [[ganado]]. === Traducciones === {{trad-arriba}} {{t|de|t1=winterlich}} {{t|fr|t1=hivernal|g1=m|t2=hivernale|g2=f|t3=hivernaux|n3=p}} {{t|fr|t1=hibernal|g1=m|t2=hibernale|g2=f|t3=hibernaux|n3=p}} {{t|en|t1=hibernal|t2=wintry|t3=wintery|t4=winterlike}} {{trad-abajo}} == Referencias y notas == <references /> h5v8li34iujw1gv4xcxh2xl4gf5p8l2 sufra 0 225829 6110128 5698435 2026-04-27T20:01:11Z Tmagc 158167 6110128 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v2=zofra|v3=zofra|v1=azofra|vnota2=etim. 2|vnota3=etim. 2|vnota1=etim. 1 y 2}} === Etimología 1 === {{etimología|xaa|أسهر|desvelar}}, {{etim|ar|سهر|trasnochar}}.<ref>{{DLE}}</ref> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|prestación personal}}. {{ámbito|Córdoba (España)|Palencia}} {{sinónimo|prestación personal|azofra|adra|vereda}} === Etimología 2 === {{etimología|fr|surfaix}}.<ref>{{DLC1914}}</ref> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: Correón que sostiene las varas, apoyado en el sillín de la caballería de tiro. {{sinónimo|zafra|azofra|zofra|cejadero|zambarco|sajador|francalete}} === Forma flexiva === ==== Forma verbal ==== ;1: {{forma verbo|sufrir|1s|t=presente|m=subjuntivo}}. ;2: {{forma verbo|sufrir|3s|presente|subjuntivo}}. ;3: {{forma verbo|sufrir|p=usted|m=imperativo}}. == Referencias y notas == <references /> 84ikv5ah7p6i5j7sypl4cq6m51pn5sl roña 0 399557 6110174 5855169 2026-04-27T23:27:44Z Tmagc 158167 6110174 wikitext text/x-wiki {{desambiguación|oñá}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1464}}. {{etimología|la-vul|*aerūgna}}, {{etim|la|aerūginem}}, acusativo de {{etim|la|aerugo|alt=aerūgo, -inis}}. Corominas propone una derivación {{etimología|la-vul|*rōnea}}, {{etim|la|aranea|araña}}, a partir de una resignificación metonímica, sin embargo es menos probable la mutación de la a en o. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|agricultura}}: Enfermedad de las plantas causada por un hongo.<ref name=dhle>{{DHLE}}</ref> {{sinónimo|sarna}} ;2 {{csem|veterinaria|enfermedades}}: {{plm|sarna}} (enfermedad de la piel causada por un [[ácaro]]) del [[ganado]] de los animales con [[lana]].<ref name=dhle /> {{sinónimo|sarna}} ;3: {{plm|suciedad}} y [[porquería]] pegada fuertemente, que [[afear|afea]] el aspecto de algo.<ref name="drae1925">{{DLE1925}}</ref> {{relacionado|mierda|nota=España|mugre|porquería}}. ;4: {{plm|orín}} de los metales.<ref name=dhle /> ;5: Daño [[moral]] que se comunica o puede comunicarse de unos en otros.<ref name="drae1925" /> ;6: {{plm|roñería}}, [[picardía]].<ref name="drae1925" /> {{uso|anticuado}} ;7: Persona mezquina.<ref name=dhle /> {{uso|coloquial|despectivo}} ;8: {{plm|farsa}}, [[treta]], [[maula]].<ref name="drae1925" /> ;9: Corteza del pino.<ref name=dhle /> {{uso|rural}} {{ámbito|España}} ;10: {{plm|pericarpio}}.<ref name=dhle /> {{ámbito|Cantabria}} ;11: {{plm|aspereza}}, [[rugosidad]].<ref name=dhle /> {{ámbito|Colombia}} ;12: Musgo de las cortezas de los árboles.<ref name=dhle /> {{ámbito|España}} ;13: Pimiento de [[redrojo]].<ref name=dhle /> {{ámbito|Murcia}} ;14 {{csem|juegos}}: {{plm|tiña}} (juego infantil).<ref name=dhle /> {{ámbito|México}} ;15: Simulación o actuación de una enfermedad con el fin de no trabajar.<ref name=dhle /> {{ámbito|Colombia}} ;16: Conjunto de monedas que el padrino de un bautizo les arroja a los muchachos a la rebatiña.<ref name=dhle /> {{ámbito|Andalucía}} ;17: {{plm|viruela}}.<ref name=dhle /> {{ámbito|Extremadura}} ;18: Pereza, lentitud o flojera para hacer cosas.<ref name=dhle /> {{ámbito|Venezuela}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|acort|irroña}}, a su vez quizá de (idea) errónea.<ref name=dhle /> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|tirria}}, [[ojeriza]].<ref name=dhle /> ;2: {{plm|rencor}}.<ref name=dhle /> === Forma flexiva === ==== Forma verbal ==== ;1: {{f.v|roñar|3s|presente|indicativo}}. ;2: {{f.v|roñar|2s|imperativo|afirmativo=s}}. == Referencias y notas == <references /> 18wcfi4ehk21qcvaequcm53jydrkdl7 6110175 6110174 2026-04-27T23:28:00Z Tmagc 158167 6110175 wikitext text/x-wiki {{desambiguación|oñá}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1464}}. {{etimología|la-vul|*aerūgna}}, {{etim|la|aerūginem}}, acusativo de {{etim|la|aerugo|alt=aerūgo, -inis}}. Corominas propone una derivación a partir {{etim|la-vul|*rōnea}}, {{etim|la|aranea|araña}}, a partir de una resignificación metonímica, sin embargo es menos probable la mutación de la a en o. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|agricultura}}: Enfermedad de las plantas causada por un hongo.<ref name=dhle>{{DHLE}}</ref> {{sinónimo|sarna}} ;2 {{csem|veterinaria|enfermedades}}: {{plm|sarna}} (enfermedad de la piel causada por un [[ácaro]]) del [[ganado]] de los animales con [[lana]].<ref name=dhle /> {{sinónimo|sarna}} ;3: {{plm|suciedad}} y [[porquería]] pegada fuertemente, que [[afear|afea]] el aspecto de algo.<ref name="drae1925">{{DLE1925}}</ref> {{relacionado|mierda|nota=España|mugre|porquería}}. ;4: {{plm|orín}} de los metales.<ref name=dhle /> ;5: Daño [[moral]] que se comunica o puede comunicarse de unos en otros.<ref name="drae1925" /> ;6: {{plm|roñería}}, [[picardía]].<ref name="drae1925" /> {{uso|anticuado}} ;7: Persona mezquina.<ref name=dhle /> {{uso|coloquial|despectivo}} ;8: {{plm|farsa}}, [[treta]], [[maula]].<ref name="drae1925" /> ;9: Corteza del pino.<ref name=dhle /> {{uso|rural}} {{ámbito|España}} ;10: {{plm|pericarpio}}.<ref name=dhle /> {{ámbito|Cantabria}} ;11: {{plm|aspereza}}, [[rugosidad]].<ref name=dhle /> {{ámbito|Colombia}} ;12: Musgo de las cortezas de los árboles.<ref name=dhle /> {{ámbito|España}} ;13: Pimiento de [[redrojo]].<ref name=dhle /> {{ámbito|Murcia}} ;14 {{csem|juegos}}: {{plm|tiña}} (juego infantil).<ref name=dhle /> {{ámbito|México}} ;15: Simulación o actuación de una enfermedad con el fin de no trabajar.<ref name=dhle /> {{ámbito|Colombia}} ;16: Conjunto de monedas que el padrino de un bautizo les arroja a los muchachos a la rebatiña.<ref name=dhle /> {{ámbito|Andalucía}} ;17: {{plm|viruela}}.<ref name=dhle /> {{ámbito|Extremadura}} ;18: Pereza, lentitud o flojera para hacer cosas.<ref name=dhle /> {{ámbito|Venezuela}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|acort|irroña}}, a su vez quizá de (idea) errónea.<ref name=dhle /> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|tirria}}, [[ojeriza]].<ref name=dhle /> ;2: {{plm|rencor}}.<ref name=dhle /> === Forma flexiva === ==== Forma verbal ==== ;1: {{f.v|roñar|3s|presente|indicativo}}. ;2: {{f.v|roñar|2s|imperativo|afirmativo=s}}. == Referencias y notas == <references /> 3l3deygf2laxe5puu6fv0hahzwrj19a 6110176 6110175 2026-04-27T23:28:32Z Tmagc 158167 6110176 wikitext text/x-wiki {{desambiguación|oñá}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1464}}. {{etimología|la-vul|*aerūgna}}, {{etim|la|aerūginem}}, acusativo de {{etim|la|aerugo|alt=aerūgo, -inis}}. Corominas propone una derivación a partir {{etim|la-vul|*rōnea}}, {{etim|la|aranea|araña}}, a partir de una resignificación metonímica; sin embargo es menos probable la mutación de la a hacia una o. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|agricultura}}: Enfermedad de las plantas causada por un hongo.<ref name=dhle>{{DHLE}}</ref> {{sinónimo|sarna}} ;2 {{csem|veterinaria|enfermedades}}: {{plm|sarna}} (enfermedad de la piel causada por un [[ácaro]]) del [[ganado]] de los animales con [[lana]].<ref name=dhle /> {{sinónimo|sarna}} ;3: {{plm|suciedad}} y [[porquería]] pegada fuertemente, que [[afear|afea]] el aspecto de algo.<ref name="drae1925">{{DLE1925}}</ref> {{relacionado|mierda|nota=España|mugre|porquería}}. ;4: {{plm|orín}} de los metales.<ref name=dhle /> ;5: Daño [[moral]] que se comunica o puede comunicarse de unos en otros.<ref name="drae1925" /> ;6: {{plm|roñería}}, [[picardía]].<ref name="drae1925" /> {{uso|anticuado}} ;7: Persona mezquina.<ref name=dhle /> {{uso|coloquial|despectivo}} ;8: {{plm|farsa}}, [[treta]], [[maula]].<ref name="drae1925" /> ;9: Corteza del pino.<ref name=dhle /> {{uso|rural}} {{ámbito|España}} ;10: {{plm|pericarpio}}.<ref name=dhle /> {{ámbito|Cantabria}} ;11: {{plm|aspereza}}, [[rugosidad]].<ref name=dhle /> {{ámbito|Colombia}} ;12: Musgo de las cortezas de los árboles.<ref name=dhle /> {{ámbito|España}} ;13: Pimiento de [[redrojo]].<ref name=dhle /> {{ámbito|Murcia}} ;14 {{csem|juegos}}: {{plm|tiña}} (juego infantil).<ref name=dhle /> {{ámbito|México}} ;15: Simulación o actuación de una enfermedad con el fin de no trabajar.<ref name=dhle /> {{ámbito|Colombia}} ;16: Conjunto de monedas que el padrino de un bautizo les arroja a los muchachos a la rebatiña.<ref name=dhle /> {{ámbito|Andalucía}} ;17: {{plm|viruela}}.<ref name=dhle /> {{ámbito|Extremadura}} ;18: Pereza, lentitud o flojera para hacer cosas.<ref name=dhle /> {{ámbito|Venezuela}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|acort|irroña}}, a su vez quizá de (idea) errónea.<ref name=dhle /> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|tirria}}, [[ojeriza]].<ref name=dhle /> ;2: {{plm|rencor}}.<ref name=dhle /> === Forma flexiva === ==== Forma verbal ==== ;1: {{f.v|roñar|3s|presente|indicativo}}. ;2: {{f.v|roñar|2s|imperativo|afirmativo=s}}. == Referencias y notas == <references /> rvsg419qpdbi3w0yyoaoy28exs9w76y 6110177 6110176 2026-04-27T23:29:25Z Tmagc 158167 /* Etimología 1 */ 6110177 wikitext text/x-wiki {{desambiguación|oñá}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1464}}. {{etimología|la-vul|*aerūgna}}, {{etim|la|aerugo|aerūginem}}, acusativo de {{etim|la|aerugo|alt=aerūgo, -inis}}. Corominas propone una derivación a partir {{etim|la-vul|*rōnea}}, {{etim|la|aranea|araña}}, a partir de una resignificación metonímica; sin embargo es menos probable la mutación de la a hacia una o. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|agricultura}}: Enfermedad de las plantas causada por un hongo.<ref name=dhle>{{DHLE}}</ref> {{sinónimo|sarna}} ;2 {{csem|veterinaria|enfermedades}}: {{plm|sarna}} (enfermedad de la piel causada por un [[ácaro]]) del [[ganado]] de los animales con [[lana]].<ref name=dhle /> {{sinónimo|sarna}} ;3: {{plm|suciedad}} y [[porquería]] pegada fuertemente, que [[afear|afea]] el aspecto de algo.<ref name="drae1925">{{DLE1925}}</ref> {{relacionado|mierda|nota=España|mugre|porquería}}. ;4: {{plm|orín}} de los metales.<ref name=dhle /> ;5: Daño [[moral]] que se comunica o puede comunicarse de unos en otros.<ref name="drae1925" /> ;6: {{plm|roñería}}, [[picardía]].<ref name="drae1925" /> {{uso|anticuado}} ;7: Persona mezquina.<ref name=dhle /> {{uso|coloquial|despectivo}} ;8: {{plm|farsa}}, [[treta]], [[maula]].<ref name="drae1925" /> ;9: Corteza del pino.<ref name=dhle /> {{uso|rural}} {{ámbito|España}} ;10: {{plm|pericarpio}}.<ref name=dhle /> {{ámbito|Cantabria}} ;11: {{plm|aspereza}}, [[rugosidad]].<ref name=dhle /> {{ámbito|Colombia}} ;12: Musgo de las cortezas de los árboles.<ref name=dhle /> {{ámbito|España}} ;13: Pimiento de [[redrojo]].<ref name=dhle /> {{ámbito|Murcia}} ;14 {{csem|juegos}}: {{plm|tiña}} (juego infantil).<ref name=dhle /> {{ámbito|México}} ;15: Simulación o actuación de una enfermedad con el fin de no trabajar.<ref name=dhle /> {{ámbito|Colombia}} ;16: Conjunto de monedas que el padrino de un bautizo les arroja a los muchachos a la rebatiña.<ref name=dhle /> {{ámbito|Andalucía}} ;17: {{plm|viruela}}.<ref name=dhle /> {{ámbito|Extremadura}} ;18: Pereza, lentitud o flojera para hacer cosas.<ref name=dhle /> {{ámbito|Venezuela}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|acort|irroña}}, a su vez quizá de (idea) errónea.<ref name=dhle /> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|tirria}}, [[ojeriza]].<ref name=dhle /> ;2: {{plm|rencor}}.<ref name=dhle /> === Forma flexiva === ==== Forma verbal ==== ;1: {{f.v|roñar|3s|presente|indicativo}}. ;2: {{f.v|roñar|2s|imperativo|afirmativo=s}}. == Referencias y notas == <references /> i8wdu1f05gpwztunnf6xf52hk1waz69 6110178 6110177 2026-04-27T23:29:50Z Tmagc 158167 /* Etimología 1 */ 6110178 wikitext text/x-wiki {{desambiguación|oñá}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1464}}. {{etimología|la-vul|*aerūgna}}, {{etim|la|aerugo|aerūginem}}, acusativo de {{l+|la|aerūgo}}. Corominas propone una derivación a partir {{etim|la-vul|*rōnea}}, {{etim|la|aranea|araña}}, a partir de una resignificación metonímica; sin embargo es menos probable la mutación de la a hacia una o. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|agricultura}}: Enfermedad de las plantas causada por un hongo.<ref name=dhle>{{DHLE}}</ref> {{sinónimo|sarna}} ;2 {{csem|veterinaria|enfermedades}}: {{plm|sarna}} (enfermedad de la piel causada por un [[ácaro]]) del [[ganado]] de los animales con [[lana]].<ref name=dhle /> {{sinónimo|sarna}} ;3: {{plm|suciedad}} y [[porquería]] pegada fuertemente, que [[afear|afea]] el aspecto de algo.<ref name="drae1925">{{DLE1925}}</ref> {{relacionado|mierda|nota=España|mugre|porquería}}. ;4: {{plm|orín}} de los metales.<ref name=dhle /> ;5: Daño [[moral]] que se comunica o puede comunicarse de unos en otros.<ref name="drae1925" /> ;6: {{plm|roñería}}, [[picardía]].<ref name="drae1925" /> {{uso|anticuado}} ;7: Persona mezquina.<ref name=dhle /> {{uso|coloquial|despectivo}} ;8: {{plm|farsa}}, [[treta]], [[maula]].<ref name="drae1925" /> ;9: Corteza del pino.<ref name=dhle /> {{uso|rural}} {{ámbito|España}} ;10: {{plm|pericarpio}}.<ref name=dhle /> {{ámbito|Cantabria}} ;11: {{plm|aspereza}}, [[rugosidad]].<ref name=dhle /> {{ámbito|Colombia}} ;12: Musgo de las cortezas de los árboles.<ref name=dhle /> {{ámbito|España}} ;13: Pimiento de [[redrojo]].<ref name=dhle /> {{ámbito|Murcia}} ;14 {{csem|juegos}}: {{plm|tiña}} (juego infantil).<ref name=dhle /> {{ámbito|México}} ;15: Simulación o actuación de una enfermedad con el fin de no trabajar.<ref name=dhle /> {{ámbito|Colombia}} ;16: Conjunto de monedas que el padrino de un bautizo les arroja a los muchachos a la rebatiña.<ref name=dhle /> {{ámbito|Andalucía}} ;17: {{plm|viruela}}.<ref name=dhle /> {{ámbito|Extremadura}} ;18: Pereza, lentitud o flojera para hacer cosas.<ref name=dhle /> {{ámbito|Venezuela}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|acort|irroña}}, a su vez quizá de (idea) errónea.<ref name=dhle /> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|tirria}}, [[ojeriza]].<ref name=dhle /> ;2: {{plm|rencor}}.<ref name=dhle /> === Forma flexiva === ==== Forma verbal ==== ;1: {{f.v|roñar|3s|presente|indicativo}}. ;2: {{f.v|roñar|2s|imperativo|afirmativo=s}}. == Referencias y notas == <references /> ss752tempuxe2aya71ilpqeae7n75n0 6110179 6110178 2026-04-27T23:31:09Z Tmagc 158167 /* Etimología 1 */ 6110179 wikitext text/x-wiki {{desambiguación|oñá}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1464}}. {{etimología|la-vul|*aerūgna}}, {{etim|la|aerugo|alt=aerūginem}}, acusativo de {{l+|la|aerūgo}}. Corominas propone una derivación a partir {{etim|la-vul|*rōnea}}, {{etim|la|aranea|araña}}, a partir de una resignificación metonímica; sin embargo es menos probable la mutación de la a hacia una o. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|agricultura}}: Enfermedad de las plantas causada por un hongo.<ref name=dhle>{{DHLE}}</ref> {{sinónimo|sarna}} ;2 {{csem|veterinaria|enfermedades}}: {{plm|sarna}} (enfermedad de la piel causada por un [[ácaro]]) del [[ganado]] de los animales con [[lana]].<ref name=dhle /> {{sinónimo|sarna}} ;3: {{plm|suciedad}} y [[porquería]] pegada fuertemente, que [[afear|afea]] el aspecto de algo.<ref name="drae1925">{{DLE1925}}</ref> {{relacionado|mierda|nota=España|mugre|porquería}}. ;4: {{plm|orín}} de los metales.<ref name=dhle /> ;5: Daño [[moral]] que se comunica o puede comunicarse de unos en otros.<ref name="drae1925" /> ;6: {{plm|roñería}}, [[picardía]].<ref name="drae1925" /> {{uso|anticuado}} ;7: Persona mezquina.<ref name=dhle /> {{uso|coloquial|despectivo}} ;8: {{plm|farsa}}, [[treta]], [[maula]].<ref name="drae1925" /> ;9: Corteza del pino.<ref name=dhle /> {{uso|rural}} {{ámbito|España}} ;10: {{plm|pericarpio}}.<ref name=dhle /> {{ámbito|Cantabria}} ;11: {{plm|aspereza}}, [[rugosidad]].<ref name=dhle /> {{ámbito|Colombia}} ;12: Musgo de las cortezas de los árboles.<ref name=dhle /> {{ámbito|España}} ;13: Pimiento de [[redrojo]].<ref name=dhle /> {{ámbito|Murcia}} ;14 {{csem|juegos}}: {{plm|tiña}} (juego infantil).<ref name=dhle /> {{ámbito|México}} ;15: Simulación o actuación de una enfermedad con el fin de no trabajar.<ref name=dhle /> {{ámbito|Colombia}} ;16: Conjunto de monedas que el padrino de un bautizo les arroja a los muchachos a la rebatiña.<ref name=dhle /> {{ámbito|Andalucía}} ;17: {{plm|viruela}}.<ref name=dhle /> {{ámbito|Extremadura}} ;18: Pereza, lentitud o flojera para hacer cosas.<ref name=dhle /> {{ámbito|Venezuela}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|acort|irroña}}, a su vez quizá de (idea) errónea.<ref name=dhle /> ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|tirria}}, [[ojeriza]].<ref name=dhle /> ;2: {{plm|rencor}}.<ref name=dhle /> === Forma flexiva === ==== Forma verbal ==== ;1: {{f.v|roñar|3s|presente|indicativo}}. ;2: {{f.v|roñar|2s|imperativo|afirmativo=s}}. == Referencias y notas == <references /> lf3vgkowj6laa8a84dlnjisg3209wo6 maak 0 499391 6110139 5302029 2026-04-27T21:35:04Z 26agcp 138617 /* Maya yucateco */ 6110139 wikitext text/x-wiki {{desambiguación|máak}} == {{lengua|yua}} == {{pron-graf|leng=yua}} === Etimología === {{etimología|leng=yua}}. ==== {{sustantivo|yua}} ==== {{yua.sust}} ;1: {{plm|tapa}}. ==== {{verbo|yua|intransitivo}} ==== ;2 : {{plm|tapar}}. ==== Conjugación ==== {{yua.v|a}} ==== Véase también ==== * {{l|yua|mak}} * {{l|yua|máakal}} == Referencias y notas == <references /> g4ujekpx1e2cllo341n3ehm13uaz7e0 oleaje 0 862323 6110135 5959338 2026-04-27T21:21:40Z ~2026-25795-34 182206 /* Traducciones */ 6110135 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. === {{sustantivo masculino|es}} === {{es.sust}} ;1: {{plm|movimiento}} [[prolongado]] de las [[olas]] en el [[agua]]. === Véase también === {{w}} === Traducciones === {{trad-arriba}} {{t|ca|t1=onatge}} {{t|fr|t1=houle}} {{t|en|t1=surf|t2=swell}} {{trad-abajo}} == Referencias y notas == <references /> pjvbj20jhvq5ts5p0456sr5llrl1o8w desbandarse 0 874556 6110129 5800603 2026-04-27T20:13:04Z Tmagc 158167 6110129 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|pronominal|desbandar}}. === {{verbo pronominal|es}} === ;1 {{csem|milicia}}: {{plm|desertar}}, [[desmovilizarse]] o retirarse de la formación.<ref name="drae">{{DRAE2001}}</ref> {{relacionado|dispersar|desmovilizar}} ;2: Apartarse de la compañía de otros.<ref name="drae" /> ;3: {{plm|descomedirse}}, [[desmandarse]].<ref name="drae" /> {{ámbito|Argentina}} {{uso|coloquial}} === Conjugación === {{es.v}} === Traducciones === {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> qm3ya9e7x7r2zzx0qp1n6emn2hb7p7o desmoronar 0 874896 6110202 5808361 2026-04-28T04:11:17Z Tmagc 158167 6110202 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|osp|desboronar}}, de [[borona]]. === {{verbo transitivo|es}} === ;1: Deshacer y arruinar poco a poco los edificios, y también las aglomeraciones de substancias de más o menos cohesión.<ref name="drae">{{DLE1925}}</ref> {{uso|umcp}} {{sinónimo|derribar|destruir|demoler}} === Conjugación === {{es.v}} === Véase también === * [[desmoronarse]] === Traducciones === {{trad-arriba}} {{t|nl|i1=s|t1=doen instorten|t2=neerhalen}} {{trad-abajo}} == Referencias y notas == <references /> owox9cka40z34aa64wjb1hqdg1dyllz licenciar 0 876428 6110131 5812695 2026-04-27T20:21:04Z Tmagc 158167 6110131 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|licencia|ar}} === {{verbo transitivo|es}} === ;1: Dar (a un soldado) la licencia.<ref name="fbbva">{{FBBVA}}</ref> ;2: Dar (a un estudiante) su título o certificado de finalización de carrera.<ref name="fbbva" /> ;3 {{csem|derecho}}: Otorgar la licencia que autorice el uso o la gestión de bienes o información protegidos.<ref name="fbbva" /> ;4 {{csem|milicia}}: Librar (a un soldado) de su rol de combatiente.<ref name="fbbva" /> ;5: Retirar a una persona definitivamente de una actividad por edad.<ref name="fbbva" /> ;6: Dar permiso a alguien para que abandone su puesto de trabajo.<ref name="fbbva" /> {{uso|raro}} ;7 {{csem|derecho}}: {{plm|excarcelar}}.<ref name="fbbva" /> === Conjugación === {{es.v|paradigma=anunciar}} === Véase también === * [[licenciarse]] === Traducciones === {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> tixwdsaxyini1ohymx2dvo8mup55999 6110132 6110131 2026-04-27T20:21:54Z Tmagc 158167 6110132 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|licencia|ar}} === {{verbo transitivo|es}} === ;1: Dar (a un soldado) la licencia.<ref name="fbbva">{{FBBVA}}</ref> ;2: Dar (a un estudiante) su título o certificado de finalización de carrera.<ref name="fbbva" /> ;3 {{csem|derecho}}: Otorgar la licencia que autorice el uso o la gestión de bienes o información protegidos.<ref name="fbbva" /> ;4 {{csem|milicia}}: Librar (a un soldado) de su rol de combatiente.<ref name="fbbva" /> {{sinónimo|desmovilizar}} ;5: Retirar a una persona definitivamente de una actividad por edad.<ref name="fbbva" /> ;6: Dar permiso a alguien para que abandone su puesto de trabajo.<ref name="fbbva" /> {{uso|raro}} ;7 {{csem|derecho}}: {{plm|excarcelar}}.<ref name="fbbva" /> === Conjugación === {{es.v|paradigma=anunciar}} === Véase también === * [[licenciarse]] === Traducciones === {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> ldze701cx6c8oetnavnj5kw3snhe1vx oxigenar 0 876713 6110090 5800010 2026-04-27T16:23:07Z Tmagc 158167 6110090 wikitext text/x-wiki {{desambiguación}} {{esbozo}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|oxígeno|ar}} === {{verbo transitivo|es}} === ;1 {{csem|química}}: Dicho del [[oxígeno]]: combinarse con otros elementos para formar óxidos.<ref name="drae">{{DRAE2001}}</ref> {{uso|utcp}} ;2: Introducir ideas frescas en un ámbito para revitalizarlo.<ref name="drae" /> {{ámbito|Argentina|Venezuela}} {{ejemplo|Como un rayo, como una lluvia<br>Una luna<br>Oxigenarás mi vida hasta estallar<br>Es que siempre estarás<br>Siempre estarás en mí|c=canción|t=Las cosas tienen movimiento|a=Juan Carlos Baglietto|a2=Fito Páez|f=1985}} === Conjugación === {{es.v}} === Véase también === * [[oxigenarse]] === Traducciones === {{trad-arriba}} <!--{{t+|de|?|}}--> <!--{{t+|ar|?|}}--> <!--{{t+|bg|?|}}--> <!--{{t+|ca|?|}}--> <!--{{t+|eo|?|}}--> <!--{{t+|fr|?|}}--> <!--{{t+|en|?|}}--> <!--{{t+|it|?|}}--> <!--{{t+|ja|?|}}--> <!--{{t+|nl|?|}}--> <!--{{t+|pl|?|}}--> <!--{{t+|pt|?|}}--> {{trad-abajo}} == Referencias y notas == <references /> sjhlmm76ipcsrdi2ulyvdk7uqvow8xg 6110091 6110090 2026-04-27T16:23:24Z Tmagc 158167 6110091 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|oxígeno|ar}} === {{verbo transitivo|es}} === ;1 {{csem|química}}: Dicho del [[oxígeno]]: combinarse con otros elementos para formar óxidos.<ref name="drae">{{DRAE2001}}</ref> {{uso|utcp}} ;2: Introducir ideas frescas en un ámbito para revitalizarlo.<ref name="drae" /> {{ámbito|Argentina|Venezuela}} {{ejemplo|Como un rayo, como una lluvia<br>Una luna<br>Oxigenarás mi vida hasta estallar<br>Es que siempre estarás<br>Siempre estarás en mí|c=canción|t=Las cosas tienen movimiento|a=Juan Carlos Baglietto|a2=Fito Páez|f=1985}} === Conjugación === {{es.v}} === Véase también === * [[oxigenarse]] === Traducciones === {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 3kzrogp1wjphfma67n5syfs6opjcmh4 desmoronarse 0 877976 6110201 5809514 2026-04-28T04:09:28Z Tmagc 158167 6110201 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|pronominal|desmoronar}}. === {{verbo pronominal|es}} === ;1: Venir (algo) a menos, irse destruyendo.<ref name="drae">{{DLE1925||desmoronar}}</ref> {{sinónimo|derribarse|destruirse|arruinarse}} === Conjugación === {{es.v}} === Véase también === * [[desmoronar]] === Traducciones === {{trad-arriba}} {{t|nl|i1=s|t1=afbrokkelen|t2=gruizelen|t3=ineenstorten|t4=neerzakken}} {{trad-abajo}} == Referencias y notas == <references /> 18mijpahqusv677dou1k3tsaprl257z fiarse 0 878993 6110077 6110072 2026-04-27T12:41:16Z Tmagc 158167 Revertido el cambio de [[Special:Contributions/ArzhPleuzal|ArzhPleuzal]] ([[User talk:ArzhPleuzal|disc.]]) a la última edición de [[User:TMCbot|TMCbot]] 5797162 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}} === {{verbo pronominal|es}} === ;1: {{plm|fiar}} (uso pronominal de ...) === Conjugación === {{es.v|paradigma=enviar}} === Traducciones === {{trad-arriba}} {{t|nl|i1=s|t1=in vertrouwen mededelen}} {{trad-abajo}} == Referencias y notas == <references /> ptp9h21b0a3rzp6p91q83xmgoclt2qm desmovilizar 0 879636 6110130 5806956 2026-04-27T20:14:16Z Tmagc 158167 6110130 wikitext text/x-wiki {{desambiguación}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|prefijo|des|movilizar}} === {{verbo transitivo|es}} === ;1 {{csem|milicia}}: {{plm|licenciar}} a las tropas movilizadas.<ref name="drae">{{DRAE2001}}</ref> === Conjugación === {{es.v}} === Traducciones === {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> pq3waq6n57ub9o71st4mqdpby0pj1sl mak 0 933101 6110141 5899647 2026-04-27T21:40:05Z 26agcp 138617 /* Conjugación */ 6110141 wikitext text/x-wiki == {{lengua|yua}} == {{pron-graf|leng=yua}} === Etimología === {{etimología|leng=yua}}. ==== {{verbo|yua|transitivo}} ==== ;1: {{plm|tapar}}. {{sinónimos|leng=yua|bal|pix}} ;2: {{plm|cerrar}}.<ref>{{Yoshida 2009|p=49}}</ref> ==== Locuciones ==== * {{l|yua|mak a chiʼ}} ==== Conjugación ==== {{yua.v|t2}} ==== Véase también ==== * {{l|yua|maak}} * {{l|yua|máakal}} == {{lengua|pl}} == {{pron-graf|leng=pl}} === Etimología === {{etimología|leng=pl|sla-pro|*makъ}}, {{etim|leng=pl|ine-pro|*meh₂kos}}. === {{sustantivo masculino|pl}} === ;1 {{csem|leng=pl|plantas|lengua=pl}}: {{plm|amapola}}; === Información adicional === {{derivad|maczek}} === Véase también === {{w|leng=pl}} === Declinación === {{pl.sust|m-in|ma|k|u}} == Referencias y notas == <references /> e8tmyrvxpja0qpifenmuf1uv2b5m5zq infiernillo 0 1011701 6110101 6109988 2026-04-27T17:09:36Z ~2026-16686-32 181366 /* {{sustantivo masculino|es}} */ imagen 6110101 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf|v=infernillo}} === Etimología === {{etimología}}. === {{sustantivo masculino|es}} === {{es.sust}} [[File:IWATANI PORTABLE GAS STOVE (2).jpg|thumb|[1]]] ;1: Aparato [[portátil]] para realizar [[cocción|cocciones]], comúnmente llevado a [[camping]]. {{ámbito|España}} {{relacionado|anafe|anafre|hornillo|cocinilla|hornalla}} === Traducciones === {{trad-arriba}} <!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} --> <!--{{t+|de|}}--> <!--{{t+|ar|}}--> <!--{{t+|bg|}}--> <!--{{t+|ca|}}--> <!--{{t+|eo|}}--> <!--{{t+|fr|}}--> <!--{{t+|en|}}--> <!--{{t+|it|}}--> <!--{{t+|ja|}}--> <!--{{t+|nl|}}--> <!--{{t+|pl|}}--> <!--{{t+|pt|}}--> {{trad-abajo}} == Referencias y notas == <references /> 1ydnbynnewg5z17d473r2rjtm4dh4lp Módulo:generar-pron/es 828 1027433 6110196 6093533 2026-04-28T03:37:55Z Tmagc 158167 6110196 Scribunto text/plain -- Transcripciones fonéticas en castellano -- Autor: Tmagc local export = {} local insert = table.insert local concat = table.concat local m_table = require("Módulo:tabla") local list_to_set = m_table.listToSet local keys_to_list = m_table.keysToList local m_str = require("Módulo:string") local u = m_str.char local find = m_str.find local gsub = m_str.gsub local gsub1 = m_str.gsub1 local gsubb = m_str.gsubb local gsubrep = m_str.gsubrep local split = m_str.split local sub = m_str.sub local encodehtml = m_str.encodehtml local m_pron = require("Módulo:generar-pron") local normalizar = m_pron.normalizar local longitud_silabica = m_pron.longitud_silabica local acentuacion = m_pron.acentuacion local rima = m_pron.rima local sombra = m_pron.sombra local trazar = require("Módulo:traza") local DOBLE_SEPARACION = "Cuando ciertos prefijos están presentes, la agrupación natural de sílabas (fonética) puede cambiar. Algunos ejemplos son: ''transatlántico'' (trans-at-lán-ti-co en lugar de tran-sa-tlán-ti-co), ''subrayar'' (sub-ra-yar en lugar de su-bra-yar), ''abrogar'' (ab-ro-gar en lugar de a-bro-gar). Para estos casos en el lenguaje escrito se recomienda dividir la palabra separando los prefijos que influyan en la silabación." local HIATOS_Y_DIPTONGOS = "Para más información sobre las convenciones de hiatos y diptongos, véase [[Wikcionario:Referencia/ES/Pronunciación#Hiatos_y_diptongos|esta sección]]." local NO_PS = "Las palabras que comienzan por ps-, pt-, pn-, gn- o mn- admiten dos grafías: con la primera consonante (''psicología'', ''gnoseología'') o sin ella (''sicología'', ''noseología''), con preferencia en la primera opción." local FITOVARIANTES = "Casi todas los términos científicos con el sufijo -fito admiten dos variantes, una llana y la otra esdrújula. Excepciones se pueden encontrar por ejemplo en sínfito, que es un término que ya estaba asentado en griego y en latín y en donde sólo la forma esdrújula es válida. [https://www.rae.es/dpd/-fito Más información]" local IACO = "Las palabras terminadas con el sufijo -iaco admiten dos variantes: una esdrújula con hiato (-íaco, 'i.a.ko) y otra llana con diptongo (-iaco, 'ia.ko). La primera es la preferida en América, mientras que la segunda es más usual en España." local ORDINALES_COMPUESTOS = "De los ordinales compuestos, los correspondientes a la primera y a la segunda decena se pueden escribir en una o en dos palabras. Si es en una palabra, no puede llevar tilde y el primer compuesto se mantiene invariante (vigesimoprimero, vigesimoprimera, vigésimo primero, o vigésima primera, pero no *vigésimoprimero ni *vigesimaprimera ni *vigésimo primera). A partir de la tarcera decena, sí o sí deberán ser dos palabras. [https://https://www.rae.es/dpd/ordinales Más información]." -- sin uso -- local MAYUSCULA_TAXONES = "“Se escriben con mayúscula los nombres de los grupos taxonómicos zoológicos y botánicos superiores al género, cuando se usan en aposición: orden Roedores, familia Leguminosas; pero estos mismos términos se escriben con minúscula cuando se usan como adjetivos o como nombres comunes: El castor es un mamífero roedor; Hemos tenido una buena cosecha de leguminosas.” [https://www.rae.es/dpd/may%C3%BAsculas Más información]" -- local PREFIJO_TRANS = "Generalmente, las palabras admiten combinarse con los prefijos trans- o tras-. Algunas excepciones a esto son: 1. Palabras en donde el significado del prefijo es “detrás”, en donde sólo suele admitirse -tras (trastienda) 2. Palabras en donde el segundo elemento empieza con s, en donde sólo suele admitirse -trans (transexual). [https://www.rae.es/dpd/tras- Más información]" -- local MAYUSCULA_PUNTOS_CARDINALES = "Los puntos cardinales se escriben con minúscula. Sólo se escriben con mayúscula cuando forman parte de un nombre propio." -- local MAYUSCULA_DISCIPLINAS = "En general, los nombres de las disciplinas van en minúscula (“La medicina ha experimentado grandes avances en los últimos años”). Se usa mayúscula en ciertos contextos académicos y en especial cuando están referidas a asignaturas particulares que ofrece una determinada institución (“El profesor de Cálculo Numérico es extraordinario”). [https://www.rae.es/dpd/may%C3%BAsculas Más información]" -- --[=[ En total consideramos que (a grandes rasgos) hay 6 pron posibles: 1. seseante + yeísta (General) 2. seseante + lleísta (Litoral) 3. seseante + sheísta (CABA) 4. seseante + zheísta (Interior) 5. no seseante + yeísta (España) 6. no seseante + lleísta (España) ]=] -- Lista completa de prefijos a analizar: -- a-/an, ad, ana, cata, dia, dis, e, epi, es, peri, res, ab, al, ambi, apo, bati, cachi, circa, cis, citra, eu, exo, ob, pen, per, preter, yuxta, za- -- uni, op, poli, centro, audio, para, infra, co, ultra, re, aero, deci, paleo, micro, xero, pro, atl, neo, hidro, auto, narco, ecto, di, meso, sobre, su, baro -- bio, hispano, enea, tran, arqui, multi, foto, hepta, socio, vice, mini, maxi, cardio, afro, mal, im, supra, hemi, entre, magneto, italo, fito, nano, giga, acro -- extra, mega, mili, geo, psico, anglo, super, archi, sota, omni, ante, tri, crio, retro, cuasi, cuarto, euro, intra, quimio, pre, meta, in, hexa, soto, requete, peta -- inter, termo, cromo, medio, electro, anfi, aniso, hetero, crono, filo, pluri, homo, pseudo, circum, germano, tardo, centi, contra, agro, proto, de, iso -- tetra, sin, megalo, turbo, hipo, equi, cito, etno, cuadri, hiper, eco, bi, franco, biem, video, mono, poli, anisó, radio, endo, guarda, recontra, circun, tera -- arque, seudo, porta, deca, plus, penta, con, tecno, cuatri, ciber, macro, xeno, info, kilo, ciclo, porno, em, tele, social, hecto, anti, neuro, cun, moto, pos -- alter, semi, bien, cir, andro, ex -- La lista había sido tomada de "Automatic syllabification for Spanish using lemmatization and derivation to solve the prefix's prominence issue" (10.1016/j.eswa.2013.06.056) local PREFIJOS_BT = { "ab", "sub", "post", --"ob" no aplica, no es más productivo } local PREFIJOS_AEO = { "aero", "auto", "bio", "co", "contra", "eco", "electro", "endo", "exo", "etno", "filo", "foto", "hexa", "hecto", "hidro", "hipo", "homo", "hetero", "geo", "iso", "intra", "kilo", "macro", "micro", "neo", "neuro", "pre", "pro", "proto", "pseudo", "psico", "re", "retro", "sobre", "supra", "tecno", "xero", } local PREFIJOS_I = { "ambi", "archi", "arqui", "anti", "bi", "centi", "cuadri", "cuatri", "deci", "di", "equi", "hemi", "maxi", "mini", "multi", "omni", "peri", "pluri", "poli", "semi", "tri", } local PREFIJOS_NS = { "an", "cis", "des", -- pero no dis "en", "in", "pan", "tras", "trans", } local PREFIJOS_R = { "inter", "hiper", "super", "alter", "ciber" } --CONVENCION: mayúscula para patrones encerrados entre corchetes, minúscula para todo lo demás local ag = u(0x0301) -- acute = ́ local gr = u(0x0300) -- grave = ̀ local circunflejo = u(0x0302) -- circumflex = ̂ local virgulilla = u(0x0303) -- tilde = ̃ local dieresis = u(0x0308) -- diaeresis = ̈ local TEMP_GU = u(0xFFFA) local TEMP_QU = u(0xFFFB) local ac_primario = u(0x02C8) local ac_secundario = u(0x02CC) local acentos_ipa = ac_primario..ac_secundario local divsil = "-" local sepsil = "%."..acentos_ipa.."%"..divsil local separador = "%s"..sepsil local ACENTOS_IPA = "[" .. acentos_ipa .. "]" local SEPSIL = "[" .. sepsil .. "]" local SEPARADOR = "[" .. separador .. "]" local FIN_PALABRA = "%f[%s%z]" local INICIO_PALABRA = "%f[^%s%z]" local FIN_SILABA = "%f[%s%z"..separador.."]" local INICIO_SILABA = "%f[^%s%z"..separador.."]" -- NOTA: y considerada una vocal a efectos prácticos local vocales_no_tildadas = "aeiouyüAEIOUYÜ" local VOCAL_NO_TILDADA = "[" .. vocales_no_tildadas .. "]" local vocales_tildadas = "áéíóúýàèìòùỳÁÉÍÓÚÝÀÈÌÒÙỲ" local VOCAL_TILDADA = "[" .. vocales_tildadas .. "]" local vocales = vocales_no_tildadas .. vocales_tildadas local VOCAL = "[" .. vocales .. "]" local CONS = "[^" .. vocales .. separador .. "]" local CONS_SALVO_H = "[^" .. vocales .. separador .. "hH]" local CONS_SALVO_R = "[^" .. vocales .. separador .. "rR]" local LETRA = "[^" .. separador .. "]" local LETRA_SALVO_N = "[^" .. separador .. "nN]" local no_acentuado = list_to_set({ "el", "la", "los", "las", "un", -- artículos "me", "te", "se", "lo", "le", "nos", "os", "les", -- pron. objeto "mi", "mis", "tu", "tus", "su", "sus", -- posesivos "que", "quien", "cuan", "cual", -- pron. relativos "y", "e", "o", "u", "ni", -- conjunciones "de", "del", "a", "al", -- preposiciones y articulos "por", "en", "con", "sin", "tras", -- más preposiciones "mas", --pero "so", --de so pretexto "si", }) local tildar = { ["a"] = "á", ["e"] = "é", ["i"] = "í", ["o"] = "ó", ["u"] = "ú", ["y"] = "ý", ["A"] = "Á", ["E"] = "É", ["I"] = "Í", ["O"] = "Ó", ["U"] = "Ú", ["Y"] = "Ý" } local quitar_tilde = { ["á"] = "a", ["é"] = "e", ["í"] = "i", ["ó"] = "o", ["ú"] = "u", ["ý"] = "y", ["Á"] = "A", ["É"] = "E", ["Í"] = "I", ["Ó"] = "O", ["Ú"] = "U", ["Ý"] = "Y", ["À"] = "A", ["È"] = "E", ["Ì"] = "I", ["Ò"] = "O", ["Ù"] = "U", ["Ỳ"] = "Y" } local pron_abc = {{"a"},{"be","be larga"},{"ce"},{"de"},{"e"},{"efe"},{"ge"},{"hache"},{"i","i latina"}, {"jota"},{"ka"},{"ele"},{"eme"},{"ene"},{"o"},{"pe"},{"cu"},{"erre"},{"ese"},{"te"},{"u"}, {"ve","ve corta","uve"},{"doble ve","doble u","uve doble"},{"equis"},{"i","i griega","ye"},{"zeta"},{"eñe"}} local function silabear(p) -- chilotismos p = gsubrep(p, "("..LETRA_SALVO_N..")([nN]?g̲[nN]?"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "("..LETRA_SALVO_N..")([nN]?G̲[nN]?"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "("..LETRA..")([ṯṮ][hH]?[rR]?"..VOCAL..")", "%1"..divsil.."%2") -- separo grupos dobles y triples, salvo diptongos -- Juntar consonantes fricativas y oclusivas con l y con r. A ecepción de dl. p = gsubrep(p, "("..LETRA..")([pbfvkctgPBFVKCTG][hH]?[lrLR]"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "("..LETRA..")([d][hH]?[rR]"..VOCAL..")", "%1"..divsil.."%2") -- swing, switch, etc. p = gsubrep(p, "("..LETRA..")([sS][wW]"..VOCAL..")", "%1"..divsil.."%2") -- separo desh (des-hielo, des-huesar, des-honra), y por si acaso tras (tras-humar), pos p = gsub(p, "(d[ei]s)([hH]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "(tran?s)([hH]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "(post?)([hH]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "(plus)([hH]"..VOCAL..")", "%1"..divsil.."%2") -- Juntar ch, sh, zh, ph, th, dh, fh, kh or gh. NO Juntar bh (subhumano, subhúmedo) p = gsubrep(p, "("..LETRA..")([cszptdfkgCSZPTDFKG][hH]"..VOCAL..")", "%1"..divsil.."%2") -- Juntar las ll y rr p = gsubrep(p, "("..LETRA..")([lL][lL]"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "("..LETRA..")([rR][rR]"..VOCAL..")", "%1"..divsil.."%2") -- Juntar gue, gui, que, qui p = gsubrep(p, "("..LETRA..")([gGqQ][uUüÜ][eEiIéÉíÍ])", "%1"..divsil.."%2") -- Junto ck (no junto kc) p = gsubrep(p, "("..LETRA..")([cC][kK]"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, INICIO_PALABRA.."([cC])"..divsil.."([kK][lLrR])", "%1%2") p = gsubrep(p, "([cC])"..divsil.."([kK][lLrR])", divsil.."%1%2") -- tackle -- cc, como en [[occitano]], [[acceso]] p = gsubrep(p, "("..LETRA.."[cC])([cC][eEiIéÉíÍ])", "%1"..divsil.."%2") -- Junto consonantes dobles, salvo nn y bb, ej A-ddis Abeba pero sub-branquial, en-noblecer p = gsubrep(p, "("..LETRA..")("..CONS..")%2("..VOCAL..")", function (x, c, v) return (c == "n" or c == "b") and x..c..divsil..c..v or x..divsil..c..c..v end) -- juntar pt, ct, cn, ps, mn, gn, ft, pn, cz, dz, ds, tz, ts cuando están precedidos por otra consonante p = gsub(p, "("..CONS..")([pPcCfF][tT]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "("..CONS..")([cCmMgGpP][nN]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "("..CONS..")([dDpPtT][sS]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "("..CONS..")([cCdDtT][zZ]"..VOCAL..")", "%1"..divsil.."%2") p = gsub(p, "("..CONS..")([mMnN]"..CONS..VOCAL..")", "%1"..divsil.."%2") -- separo V-CV, VC-CV -- empiezo con la y, puesto que fue definida como vocal pero no lo es en estos casos particulares p = gsubrep(p, "(" .. VOCAL .. "y*)(y" .. VOCAL .. ")", "%1"..divsil.."%2") p = gsubrep(p, "(" .. VOCAL .. CONS .. "+)(y" .. VOCAL .. ")", "%1"..divsil.."%2") -- ahora con el resto de consonantes p = gsubrep(p, "(" .. VOCAL .. ")(" .. CONS_SALVO_H .. VOCAL .. ")", "%1"..divsil.."%2") p = gsubrep(p, "([aeoAEO])(" .. CONS .. VOCAL_TILDADA .. ")", "%1"..divsil.."%2") p = gsubrep(p, "([iuIU])(" .. CONS .. "[íúÍÚ])", "%1"..divsil.."%2") p = gsubrep(p, "(" .. VOCAL .. CONS .. "+)(" .. CONS .. VOCAL .. ")", "%1"..divsil.."%2") p = gsub(p, "[gG][uU]([eEiIéÉíÍ])", TEMP_GU.."%1") p = gsub(p, "[qQ][uU]([eEiIéÉíÍ])", TEMP_QU.."%1") -- separo hiatos p = gsubrep(p, "([aeoAEOáéóÁÉÓ])([hH]?[aeoAEOáéóÁÉÓ])", "%1"..divsil.."%2") p = gsubrep(p, "([aeoAEO])([hH]?"..VOCAL_TILDADA..")", "%1"..divsil.."%2") p = gsubrep(p, "([íúÍÚ])([hH]?"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "([iIíÍ])([hH]?[iIíÍ])", "%1"..divsil.."%2") p = gsubrep(p, "([uUúÚ])([hH]?[uUúÚ])", "%1"..divsil.."%2") -- separo diptongos o triptongos consecutivos (en los raros casos en donde haya) p = gsubrep(p, "([iuIUíúÍÚ]?"..VOCAL.."[iuIUíúÍÚ]?)(h?[iuIUíúÍÚ]h?"..VOCAL..")", "%1"..divsil.."%2") -- junto sílabas con consonantes solamente p = gsubrep(p, INICIO_PALABRA.."("..CONS.."+)"..SEPSIL.."("..LETRA..")", "%1%2") p = gsubrep(p, "("..LETRA..")"..SEPSIL.."("..CONS.."+)"..FIN_PALABRA, "%1%2") p = gsub(p, TEMP_GU, "gu") p = gsub(p, TEMP_QU, "qu") return p end --Convierte los diacríticos a notación IPA local function reemplazar_tildes(str) local function agregar_acentuacion_tilde(silabas, secundario) local sustituido = false local sust = false for j = 1, #silabas do silabas[j], sust = gsubb(silabas[j], "^(.*)(" .. VOCAL_TILDADA .. ")(.*)$", function(pre, diacr, post) return (secundario and ac_secundario or ac_primario) .. pre .. quitar_tilde[diacr] .. post end) sustituido = sustituido or sust end return sustituido end local function agregar_acentuacion_sin_tilde(silabas, secundario) local L = #silabas if L > 1 then if find(silabas[L], "[^" .. vocales .. "ns]$") or find(silabas[L], "[aeiou]y$") -- diptongo decreciente final (necesitamos este paso puesto que consideramos la y como vocal) or find(silabas[L], CONS..CONS.."$") then -- las palabras que terminan en doble consonante son agudas a menos que lleven tilde https://www.rae.es/espanol-al-dia/por-que-biceps-se-escribe-con-tilde-si-es-una-palabra-llana-terminada-en-s silabas[L] = (secundario and ac_secundario or ac_primario) .. silabas[L] --aguda return true elseif find(silabas[L], "[" .. vocales .. "ns]$") then silabas[L - 1] = (secundario and ac_secundario or ac_primario) .. silabas[L - 1] --grave return true end else --Si L==1, entonces el monosilabo será tónico si no está en la lista de monosílabos átonos if not no_acentuado[silabas[1]] then silabas[1] = (secundario and ac_secundario or ac_primario) .. silabas[1] end return true end return false end local palabras = split(str, "%s+") for i = 1, #palabras do local silabas = split(palabras[i], SEPSIL) local L = #silabas local p if palabras[i] == "|" then -- es un delimitador de fragmento, lo ignoro p = palabras[i] elseif L >= 4 and silabas[L-1] == "men" and silabas[L] == "te" then silabas[L-1] = nil silabas[L] = nil local sustituido = agregar_acentuacion_tilde(silabas, true) if not sustituido then sustituido = agregar_acentuacion_sin_tilde(silabas, true) end assert(sustituido) p = concat(silabas, ".")..ac_primario.."men.te" else local sustituido = agregar_acentuacion_tilde(silabas) if not sustituido then sustituido = agregar_acentuacion_sin_tilde(silabas) end assert(sustituido) p = concat(silabas, ".") end assert(p) p = gsub(p, "%."..ac_primario, ac_primario) p = gsub(p, "%."..ac_secundario, ac_secundario) palabras[i] = p end return concat(palabras, " ") end local function obtener_segunda_silabacion(s1) local s2, sust1, sust2, sust3 s2 = s1 s2 = gsub(s2, "[gG][uU]([eEiIéÉíÍ])", TEMP_GU.."%1") s2 = gsub(s2, "[qQ][uU]([eEiIéÉíÍ])", TEMP_QU.."%1") s2, sust1 = gsubb(s2, "("..ACENTOS_IPA..")("..CONS.."*[iu])(h?[aeo])", ".%2%1%3") s2, sust2 = gsubb(s2, "("..ACENTOS_IPA..")("..CONS.."*[u])(h?[i])", ".%2%1%3") s2, sust3 = gsubb(s2, "("..ACENTOS_IPA..")("..CONS.."*[i])(h?[u])", ".%2%1%3") s2 = gsub(s2, INICIO_PALABRA.."%.", "") s2 = gsub(s2, TEMP_GU, "gu") s2 = gsub(s2, TEMP_QU, "qu") if sust1 or sust2 or sust3 then return s2 end return nil end local function generar_fono(text) -- chilotismos local hay_chiloe_ng, hay_chiloe_thr text, hay_chiloe_ng = gsubb(text, "n?g̲n?", "ŋ") text, hay_chiloe_thr = gsubb(text, "ṯh?r?", "ʈ͡ʂ") local hay_chilotismo = hay_chiloe_ng or hay_chiloe_thr -- convierto extranjerismos text = gsub(text, "tch", "ch") text = gsub(text, "ti?[sc]k", "k͡ǀ") text = gsub(text, "ll"..FIN_SILABA, "l") -- krill text = gsub(text, INICIO_SILABA.."p([stn])", "%1") -- Saco la p inicial de psicología o pterodáctilo text = gsub(text, INICIO_SILABA.."[cmg](n)", "%1") -- Saco la g inicial de gnoseología y la m de mnemónico text = gsub(text, INICIO_SILABA.."[ctd]([sz])", "%1") text = gsub(text, INICIO_SILABA.."[cf](t)", "%1") text = gsub(text, INICIO_SILABA.."[mn]("..CONS_SALVO_H..")", "%1") text = gsub(text, "ph", "f") text = gsub(text, "kh", "j") -- será convertida en /x/ text = gsub(text, "ck", "k") text = gsub(text, "tl"..FIN_SILABA, "t") -- y con valor de vocal (y fuera de un diptongo) text = gsub(text, "("..CONS..")y", "%1i") -- préstamos como [[slinky]] text = gsub(text, INICIO_SILABA.."y("..SEPSIL.."?"..CONS..")", "i%1") -- [[Yrigoyen]], pero no puede ir [[Mayra]]. text = gsub(text, INICIO_PALABRA.."y"..FIN_PALABRA, "i") -- conjunción -- resto de transformaciones -- ch, sh, zh text = gsub(text, "ch", "ʧ") text = gsub(text, "sh", "ʃ") text = gsub(text, "zh", "ʒ") -- ll text = gsub(text, "ll", "ʎ") -- r, rr text = gsubrep(text, "("..VOCAL..SEPSIL.."?)r("..SEPSIL.."?"..VOCAL..")", "%1ɾ%2") -- [[oro]] text = gsub(text, "("..CONS_SALVO_R..")r", "%1ɾ") -- [[dragón]] text = gsub(text, "r("..CONS_SALVO_R..")", "ɾ%1") -- [[lord]] text = gsub(text, "r"..FIN_SILABA, "ɾ") -- [[amor]], [[arco]] text = gsub(text, "rr", "r") -- elimino consonantes dobles text = gsub(text, "("..CONS..")%1", "%1") -- x text = gsub(text, INICIO_PALABRA.."("..ACENTOS_IPA.."?)x", "%1s") text = gsub(text, "x("..SEPSIL..")("..VOCAL..")", "k%1s%2") text = gsub(text, "("..SEPSIL..")x("..VOCAL..")", "k%1s%2") text = gsub(text, "x", "ks") -- c, g, q text = gsub(text, "c([iey])", "θ%1") text = gsub(text, "g([iey])", "x%1") text = gsub(text, "gu([ie])", "g%1") text = gsub(text, "gü", "gu") text = gsub(text, "qu([ie])", "k%1") text = gsub(text, "ü", "u") -- [[Düsseldorf]], [[hübnerita]], obsolete [[freqüentemente]], etc. text = gsub(text, "[cq]", "k") -- [[quark]], [[Qatar]], [[burqa]], [[Iraq]], etc. -- h (necesito procesarla recién acá para que detecte la secuencia gh-) text = gsub(text, "h", "") -- j, ñ, v, z text = gsub(text, "[jñvz]", {["j"]="x", ["ñ"]="ɲ", ["v"]="b", ["z"]="θ"}) -- evita duplicaciones idénticas entre sílabas (s+s, θ+θ), pero conserva s+θ text = gsub(text, "s("..SEPSIL.."s)", "%1") text = gsub(text, "θ("..SEPSIL.."θ)", "%1") -- diptongos text = gsub(text, "i([aeou])", "j%1") text = gsub(text, "u([aeio])", "w%1") text = gsub(text, "([aeou])[iy]", "%1j") text = gsub(text, "([aeo])u", "%1w") -- y consonántica text = gsub(text, "y", "ʝ") -- n.b, n.p, n.m text = gsub(text, "n("..SEPARADOR.."[bmp])", "m%1") -- conversiones finales local seseante, hay_seseo = gsubb(text, "θ", "s") seseante = gsub(seseante, "s("..SEPSIL.."s)", "%1") local yeista, hay_yeismo = gsubb(text, "ʎ", "ʝ") local sheista, hay_sheismo = gsubb(text, "[ʎʝ]", "ʃ") local zheista, hay_zheismo = gsubb(text, "[ʎʝ]", "ʒ") local pron, fono = {}, {} if hay_chilotismo then pron[1] = {} fono[1] = {} pron[1][1], fono[1][1] = "Chiloé", gsub(seseante, "ʎ", "ʝ") elseif hay_seseo then if hay_yeismo then for i=1,6 do pron[i] = {} fono[i] = {} end pron[1][1], fono[1][1] = "seseante, yeísta", gsub(seseante, "ʎ", "ʝ") pron[2][1], fono[2][1] = "seseante, no yeísta", seseante pron[3][1], fono[3][1] = "seseante, sheísta", gsub(seseante, "[ʎʝ]", "ʃ") pron[4][1], fono[4][1] = "seseante, zheísta", gsub(seseante, "[ʎʝ]", "ʒ") pron[5][1], fono[5][1] = "no seseante, yeísta", yeista pron[6][1], fono[6][1] = "no seseante, no yeísta", text elseif hay_sheismo then for i=1,4 do pron[i] = {} fono[i] = {} end pron[1][1], fono[1][1] = "seseante, no sheísta", seseante pron[2][1], fono[2][1] = "seseante, sheísta", gsub(seseante, "[ʎʝ]", "ʃ") pron[3][1], fono[3][1] = "seseante, zheísta", gsub(seseante, "[ʎʝ]", "ʒ") pron[4][1], fono[4][1] = "no seseante", text else for i=1,2 do pron[i] = {} fono[i] = {} end pron[1][1], fono[1][1] = "seseante", seseante pron[2][1], fono[2][1] = "no seseante", text end else if hay_yeismo then for i=1,4 do pron[i] = {} fono[i] = {} end pron[1][1], fono[1][1] = "yeísta", yeista pron[2][1], fono[2][1] = "no yeísta", text pron[3][1], fono[3][1] = "sheísta", sheista pron[4][1], fono[4][1] = "zheísta", zheista elseif hay_sheismo then for i=1,3 do pron[i] = {} fono[i] = {} end pron[1][1], fono[1][1] = "no sheísta", text pron[2][1], fono[2][1] = "sheísta", sheista pron[3][1], fono[3][1] = "zheísta", zheista else pron[1] = {} fono[1] = {} pron[1][1], fono[1][1] = "pronunciación", text end end return pron, fono end local function normalizar_fono(fono) fono = gsub(fono, "ʧ", "t͡ʃ") return fono end local function generar_fone(fono) fono = gsub(fono, "θ(" .. SEPARADOR .. "*[mnɲbdgʝʎwɾr])", "θ̬%1") fono = gsub(fono, "(" .. VOCAL .. ")([jw]?[mnɲ])", "%1" .. virgulilla .. "%2") -- nasalización de vocales antes de n, m, ñ -- aproximantes fricativos: salvo ante m,n,ng (tb l en d) y a comienzo de la oración local stop_to_fricative = {["b"] = "β", ["d"] = "ð", ["g"] = "ɣ"} local fricative_to_stop = {["β"] = "b", ["ð"] = "d", ["ɣ"] = "g"} fono = gsub(fono, "([^mnɲ"..separador.."]"..SEPARADOR.."*)([bg])", function(a, b) return a..stop_to_fricative[b] end) fono = gsub(fono, "([^lʎmnɲ"..separador.."]"..SEPARADOR.."*)([d])", function(a, b) return a..stop_to_fricative[b] end) -- Convierto de nuevo las que queden a principio de fragmento fono = gsub(fono, "^([βðɣ])", function(a) return fricative_to_stop[a] end) fono = gsub(fono, "| ([βðɣ])", function(a) return "| "..fricative_to_stop[a] end) fono = gsub(fono, "[td]", {["t"] = "t̪", ["d"] = "d̪"}) --dentalización -- nasal assimilation before consonants local labiodental, dentialveolar, dental, alveolopalatal, palatal, velar = "ɱ", "n̪", "n̟", "nʲ", "ɲ", "ŋ" local nasal_assimilation = { ["f"] = labiodental, ["t"] = dentialveolar, ["d"] = dentialveolar, ["θ"] = dental, ["ʧ"] = alveolopalatal, ["ʃ"] = alveolopalatal, ["ʒ"] = alveolopalatal, ["ʝ"] = palatal, ["ʎ"] = palatal, ["k"] = velar, ["x"] = velar, ["g"] = velar, } fono = gsub(fono, "n(" .. SEPARADOR .. "*)(.)", function(stress, following) return (nasal_assimilation[following] or "n") .. stress .. following end) -- fono = gsub(fono, "n(s?)"..FIN_SILABA, "ŋ%1") desactivado, supuestamente solo se da en ciertos dialectos de España y Centroamérica pero no es lo general -- lateral assimilation before consonants fono = gsub(fono, "l(" .. SEPARADOR .. "*)(.)", function(stress, following) local l = "l" if following == "t" or following == "d" then -- dentialveolar l = "l̪" elseif following == "θ" then -- dental l = "l̟" elseif following == "ʧ" or following == "ʃ" then -- alveolopalatal l = "lʲ" end return l .. stress .. following end) fono = gsub(fono, "ŋg", "ŋ") -- w fono = gsub(fono, "("..ACENTOS_IPA..")w", "%1(ɣ)w̝") -- voiced fricatives are actually approximants fono = gsub(fono, "([βðɣ])", "%1̞") -- conversiones finales fono = gsub(fono, "ʧ", "t͡ʃ") fono = gsub(fono, "%.", "") fono = encodehtml(fono) return fono end -- Punto de entrada externo, recibe el título de página y los argumentos de plantilla function export.procesar_pron_args(tit, args) local vino_ayuda if #args["ayuda"] < 1 then args["ayuda"][1] = tit else vino_ayuda = true end for i = 1,9 do args["fone"][i] = {} args["fono"][i] = {} args["pron"][i] = {} end args["rima"] = {} args["tl"] = {} args["d"] = {} args["ls"] = {} args["ac"] = {} -- necesito hacer tablas aparte para eliminar duplicados local rimas = {} local ls = {} local ss = {} local ac = {} if #tit == 1 then if tit >= "a" and tit <= "z" then args["ayuda"] = pron_abc[string.byte(tit) - 96] args["tl"] = args["ayuda"] elseif tit >= "A" and tit <= "Z" then args["ayuda"] = pron_abc[string.byte(tit) - 64] args["tl"] = args["ayuda"] end elseif tit == "ñ" or tit == "Ñ" then args["ayuda"] = pron_abc[27] args["tl"] = args["ayuda"] end local nota_hiato local A = #args["ayuda"] local j = 1 -- indice de la ayuda local k = 1 -- cantidad de pronunciaciones insertadas (máximo 9) while k <= 9 and j <= A do local norm = normalizar(tit, args["ayuda"][j], true, true) local s1 = silabear(norm) local s1b = reemplazar_tildes(s1) local pron, fono = generar_fono(s1b) local s2b = obtener_segunda_silabacion(s1b) if s2b then local pron2, fono2 = generar_fono(s2b) nota_hiato = true for i,a in ipairs(fono) do a[2] = fono2[i][1] end end if not find(s1, "%s") then local lsib = longitud_silabica(s1) ls[lsib] = true ac[acentuacion(s1b, lsib)] = true if not vino_ayuda then ss[s1] = true else ss[sombra(tit, s1, {})] = true end end for _,f in ipairs(fono) do rimas[rima(normalizar_fono(f[1]))] = true end for i,_ in ipairs(pron) do args["pron"][k] = pron[i] local fone = {} for _,p in ipairs(fono[i]) do insert(fone, generar_fone(p)) end args["fone"][k] = fone k = k + 1 if k > 9 then break end end if args["ayudanota"][j] then args["fnota"][j] = {args["ayudanota"][j]} end j = j + 1 end if not find(args["ayuda"][1], VOCAL) then return end if #tit <= 1 then return end args["d"] = keys_to_list(ss) args["ls"] = keys_to_list(ls) args["ac"] = keys_to_list(ac) args["rima"] = keys_to_list(rimas) if vino_ayuda then return end -- prefijos for _,pref in ipairs(PREFIJOS_BT) do if args["dnota"][1] then break end if find(tit, "^"..pref.."[lr]") then trazar("es-prefijos") end end for _,pref in ipairs(PREFIJOS_AEO) do if args["dnota"][1] then break end if find(tit, "^"..pref.."h?[iu]") then trazar("es-prefijos") end end for _,pref in ipairs(PREFIJOS_I) do if args["dnota"][1] then break end if find(tit, "^"..pref.."h?[aeouáéóú]") then trazar("es-prefijos") end end for _,pref in ipairs(PREFIJOS_NS) do if args["dnota"][1] then break end if find(tit, "^"..pref.."h?[aeiouáéíóú]") then trazar("es-prefijos") end end for _,pref in ipairs(PREFIJOS_R) do if args["dnota"][1] then break end if find(tit, "^"..pref.."h?[aeiouáéíóúr]") then -- en la r importa si hay otra r delante trazar("es-prefijos") end end -- hiatos if nota_hiato and not args["dnota"][1] then args["dnota"][1] = HIATOS_Y_DIPTONGOS end -- grafías if find(args["ayuda"][1], "^p[stn]") or find(args["ayuda"][1], "^[mg]n") then if #args["g"] == 0 then local no_ps = args["ayuda"][1]:sub(2) insert(args["g"], no_ps) insert(args["gnota"], NO_PS) end elseif args["ayudaextra"][1] == "ocespacio" then if not args["g"][1] then if find(args["ayuda"][1], "^([%S]+[cs]im)[oa][%S]+$") then --decimoprimero, decimosegundo, etc. pero también decimaprimera (subestándar pero existe) args["g"][1] = gsub(args["ayuda"][1], "^([%S]+[cs]im)[oa]([%S]+)([oa]s?)$", function(a, b, c) return gsub(a,"e([sc]im)","é%1")..c.." "..(b == "ctav" and "o"..b or b)..c end) else args["g"][1] = gsub(args["ayuda"][1], "^([%S]+[cs]im)[oa]s?%s+([%S]+)([oa]s?)$", function(a, b, c) return gsub(a, "[áéíóú]", quitar_tilde).."o"..b..c end) end args["gnota"][1] = ORDINALES_COMPUESTOS end elseif args["ayudaextra"][1] == "ocgénero" then if not args["g"][1] then args["g"][1] = gsub(args["ayuda"][1], "^(.-[eé][sc]im)([oa])(.-)$", function(a, b, c) return b == "o" and a.."a"..c or a.."o"..c end) args["gnota"][1] = ORDINALES_COMPUESTOS end end -- variantes if args["d"][1] then if find(args["d"][1], VOCAL_NO_TILDADA..SEPSIL.."fi"..SEPSIL.."to".."$") then if not args["v"][1] then args["v"][1] = gsub(args["ayuda"][1], "("..VOCAL_NO_TILDADA..")".."fito$", function(v) return tildar[v].."fito" end) args["vnota"][1] = FITOVARIANTES end elseif find(args["d"][1], VOCAL_TILDADA..SEPSIL.."fi"..SEPSIL.."to".."$") then if not args["v"][1] then args["v"][1] = gsub(args["ayuda"][1], "("..VOCAL_TILDADA..")".."fito$", function(v) return quitar_tilde[v].."fito" end) args["vnota"][1] = FITOVARIANTES end elseif find(args["d"][1], "[ií]"..SEPSIL.."?".."a"..SEPSIL.."co".."$") then if not args["v"][1] then args["v"][1] = gsub(args["ayuda"][1], "([ií]aco)$", function(v) return v == "iaco" and "íaco" or "iaco" end) args["vnota"][1] = IACO end end end return end return export 4oyajsc1utllahsr3e8u0uotv548gff amargoso 0 1028579 6110160 5927273 2026-04-27T22:12:10Z Raos10 93688 transformado a variante, traducciones pasadas a amargo, formato, adición de: referencias, etimología 6110160 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amarroso|v2=agarroso}} === Etimología === {{etimología|sufijo|amargo|oso}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{variante|amargo}}, {{impropia|usada especialmente al hablar del sabor}}.<ref>{{DLC1884}}</ref><ref name='dle'>{{DLE}}</ref> ==== Locuciones ==== *[[escoba amargosa]] ==== Traducciones ==== {{trad-véase|1|amargo}} == Referencias y notas == <references /> h82gm05nrkq3sugs2mfp891r325em5q gradualismo 0 1029032 6110133 5748060 2026-04-27T21:06:34Z Tmagc 158167 6110133 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|gradual|ismo}}. === {{sustantivo masculino|es}} === {{es.sust}} ;1 {{csem|biología}}: Doctrina que sostiene que la evolución es un proceso lento y paulatino sin mutaciones repentinas en la especie entre una generación y la otra. ;2 {{csem|política|economía}}: Doctrina que promueve cambios graduales por sobre las reformas abruptas. {{antónimo|shock económico}} === Véase también === {{w}} === Traducciones === {{trad-arriba}} <!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} --> {{trad-abajo}} == Referencias y notas == <references /> bf8ymjvfwx63vdn59mb3j20ut3vaji8 Módulo:generar-pron/la 828 1031371 6110116 5924243 2026-04-27T18:37:42Z Tmagc 158167 6110116 Scribunto text/plain -- PRONUNCIACIÓN DEL LATÍN -- Reelaborado desde cero por Tmagc local export = {} local insert = table.insert local concat = table.concat local m_table = require("Módulo:tabla") local keys_to_list = m_table.keysToList local m_str = require("Módulo:string") local u = m_str.char local find = m_str.find local sub = m_str.sub local gsub = m_str.gsub local gsubb = m_str.gsubb local gmatch = m_str.gmatch local gsubrep = m_str.gsubrep local encodehtml = m_str.encodehtml local m_str_avanzado = require("Módulo:string/avanzado") local toNFD = m_str_avanzado.toNFD local m_pron = require("Módulo:generar-pron") local normalizar = m_pron.normalizar local longitud_silabica = m_pron.longitud_silabica local acentuacion = m_pron.acentuacion local rima = m_pron.rima local ac_primario = u(0x02C8) local ac_secundario = u(0x02CC) local acentos_ipa = ac_primario..ac_secundario local divsil = "-" local sepsil = "%."..acentos_ipa.."%"..divsil local separador = "%s"..sepsil local ACENTOS_IPA = "[" .. acentos_ipa .. "]" local SEPSIL = "[" .. sepsil .. "]" local SEPARADOR = "[" .. separador .. "]" local FIN_PALABRA = "%f[%s%z]" local INICIO_PALABRA = "%f[^%s%z]" local FIN_SILABA = "%f[%s%z"..separador.."]" local INICIO_SILABA = "%f[^%s%z"..separador.."]" local macron = u(0x304) -- ̄ local breve = u(0x306) -- ̆ local dieresis = u(0x308) -- ̈ local NUC = "0" local ATAQUE = "1" local CODA = "2" local fronteras = NUC..ATAQUE..CODA local vocales = "aeiouyAEIOUYāēīōūȳĀĒĪŌŪȲáéíóúýàèìòùỳÁÉÍÓÚÝÀÈÌÒÙỲ" local vocales_cortas = "aeiouyAEIOUYáéíóúýàèìòùỳÁÉÍÓÚÝÀÈÌÒÙỲäëïöüÿÄËÏÖÜŸ" local vocales_tildadas = "áéíóúýàèìòùỳÁÉÍÓÚÝÀÈÌÒÙỲ" local vocales_largas = "āēīōūȳĀĒĪŌŪȲ" local vocales_con_dieresis = "äëïöüÿÄËÏÖÜŸ" local VOCAL = "["..vocales.."]" local VOCAL_CORTA = "["..vocales_cortas.."]" local VOCAL_TILDADA = "["..vocales_tildadas.."]" local VOCAL_LARGA = "["..vocales_largas.."]" local VOCAL_CON_DIERESIS = "["..vocales_con_dieresis.."]" local CONS = "[^"..vocales..separador..fronteras.."]" local LETRA = "[^"..separador..fronteras.."]" local quitar_tilde = { ["á"] = "a", ["é"] = "e", ["í"] = "i", ["ó"] = "o", ["ú"] = "u", ["ý"] = "y", ["Á"] = "A", ["É"] = "E", ["Í"] = "I", ["Ó"] = "O", ["Ú"] = "U", ["Ý"] = "Y", ["À"] = "A", ["È"] = "E", ["Ì"] = "I", ["Ò"] = "O", ["Ù"] = "U", ["Ỳ"] = "Y" } local dig_ipa = {["ae"] = "aɪ", ["au"] = "aw", ["ei"] = "ej", ["eu"] = "ew", ["oe"] = "oɪ", ["ou"] = "uː", ["ph"] = "pʰ", ["th"] = "tʰ", ["ch"] = "kʰ", ["rh"] = "rʰ", ["qw"] = "kʷ", ["gw"] = "ɡʷ", ["sw"] = "sʷ",} local pron_abc = {"ā","bē","cē","dē","ē","ef","gē","hā","ī","kā","el","em","en","ō","pē","qū","er","es","tē","ū","ix","ī graeca","zēta"} local cons_ending_prefixes = { "a[bd]", "circum", "con", "dis", "ex", "inter", "in", "ob", "per", "subter", "sub", "super", "tr[aā]ns" } local function silabear(s) -- Some contracted ps end in apostrophes, which shouldn't be mistaken for stress placement. s = gsub(s, "'", "") local p = s -- Separo los prefijos ab-, ad-, ob-, sub-, post- ante l y r p = gsub(p, INICIO_PALABRA.."[Aa][bdBD]([lrLR])", NUC..CODA.."%1") p = gsub(p, INICIO_PALABRA.."[oO][bB]([lrLR])", NUC..CODA.."%1") p = gsub(p, INICIO_PALABRA.."[sS][uU][bB]([lrLR])", ATAQUE..NUC..CODA.."%1") p = gsub(p, INICIO_PALABRA.."[pP][oO][sS][tT]([lrLR])", ATAQUE..NUC..CODA..CODA.."%1") -- Separo prefijos que terminen en consonante con la i for _, pref in ipairs(cons_ending_prefixes) do p = gsub(p, INICIO_PALABRA.."(" .. pref .. ")i"..VOCAL, "%1"..ATAQUE..NUC) end -- sp-, st-, sl-, sm-, sn- p = gsub(p, "s[lmnLMN]", function(x) return x:gsub(".", ATAQUE) end) p = gsub(p, "s[cpt][lrLR]?", function(x) return x:gsub(".", ATAQUE) end) -- Marco cons + h? + l/r? como ataque p = gsub(p, "([bcdfgkptBCDFGKPT][hH]?[lrLR]?)("..VOCAL..")", function(x,y) return x:gsub(".",ATAQUE)..y end) -- Marco cgkq + /w/ como ataque, tmb. S?? REVISAR p = gsub(p, "[cgkqsCGKQS][uUvVwW]("..VOCAL..")", ATAQUE..ATAQUE.."%1") -- Marco el resto de consonantes antes de vocal como ataque p = gsub(p, CONS.."[hH]("..VOCAL..")", ATAQUE..ATAQUE.."%1") p = gsub(p, CONS.."("..VOCAL..")", ATAQUE.."%1") -- Marco V con valor de vocal cuando corresponda p = gsubrep(p, "([bcdfgkptBCDFGKPT][hH]?[lrLR]?)[vV]("..CONS..")", function(x,y) return x:gsub(".",ATAQUE)..NUC..y end) p = gsub(p, CONS.."[vV][iI]", ATAQUE..ATAQUE..NUC) p = gsub(p, CONS.."[vV]", ATAQUE..NUC) -- Marco I y U con valor de consonante cuando corresponda p = gsubrep(p, "("..VOCAL..")[iIuU]("..VOCAL..")", "%1"..ATAQUE.."%2") p = gsub(p, INICIO_PALABRA.."[iIuU]("..VOCAL..")", ATAQUE.."%1") -- Marco todos los codas posibles p = gsub(p, "("..VOCAL..")([lmnrLMNR][bcdfgkptBCDFGKPT][hH]?[sS]?)", function(x,y) return x..y:gsub(".",CODA) end) p = gsub(p, "("..VOCAL..")([sS][kptKPT]?[hH]?[sS]?)", function(x,y) return x..y:gsub(".",CODA) end) p = gsub(p, "("..VOCAL..")([klmnrpKLMNRP][sS]?)", function(x,y) return x..y:gsub(".",CODA) end) p = gsub(p, "("..VOCAL..")([lL][mM]?)", function(x,y) return x..y:gsub(".",CODA) end) p = gsub(p, "("..VOCAL..")([rR][lLmMnN]?)", function(x,y) return x..y:gsub(".",CODA) end) -- Las s que queden van al ataque p = gsub(p, "[sS]", ATAQUE) -- Las consonantes que queden las pongo en el coda p = gsub(p, CONS, CODA) -- Hiatos explícitos p = gsub(p, VOCAL..VOCAL_CON_DIERESIS, NUC..NUC) -- Diptongos p = gsub(p, "[ao]e", NUC..CODA) p = gsub(p, "[ae]u", NUC..CODA) p = gsub(p, "ei", NUC..CODA) p = gsub(p, VOCAL, NUC) local out = {} local i = 1 local j = 1 local cprev = " " for c in gmatch(p, ".") do if (c == NUC or c == ATAQUE) and (cprev == CODA or cprev == NUC) then out[i] = divsil i = i + 1 end out[i] = sub(s, j, j) j = j + 1 i = i + 1 cprev = c end return concat(out) end local function acentuar(txt) local palabras = {} for p in gmatch(txt, "%S+") do if p ~= "|" then p = gsub(p, SEPSIL, ".") local sust p, sust = gsubb(p, INICIO_SILABA.."("..LETRA.."-)("..VOCAL_TILDADA..")", function (x,y) return ac_primario..x..quitar_tilde[y] end) if not sust then p, sust = gsubb(p, INICIO_SILABA..LETRA.."-"..VOCAL_LARGA..LETRA.."-"..SEPSIL..LETRA.."-"..FIN_PALABRA, ac_primario.."%0") end if not sust then p, sust = gsubb(p, INICIO_SILABA..LETRA.."-"..SEPSIL..LETRA.."-"..SEPSIL..LETRA.."-"..FIN_PALABRA, ac_primario.."%0") end if not sust then p = ac_primario..p end p = gsub(p, "%."..ac_primario, ac_primario) insert(palabras, p) end end return concat(palabras, " ") end local function generar_fono(p) p = toNFD(p) p = gsub(p, "["..dieresis..breve.."]", "") -- v con valor de vocal p = gsub(p, "[vw]"..FIN_SILABA, "u") p = gsub(p, INICIO_SILABA.."v("..SEPSIL.."?"..CONS..")", "u%1") p = gsub(p, "("..CONS..")v", "%1u") -- quV, guV p = gsub(p, "[ckq][wu](" .. VOCAL .. ")", "qw%1") p = gsub(p, "gu("..VOCAL..")", "gw%1") -- nguV or initial guV -- diptongos ascendentes p = gsub(p, "i(" .. VOCAL .. ")", "j%1") p = gsub(p, "u(" .. VOCAL .. ")", "w%1") -- peius p = gsub(p, "(" .. VOCAL .. ")("..SEPSIL.."j"..VOCAL..")", "%1j%2") -- x p = gsub(p, INICIO_PALABRA.."("..ACENTOS_IPA.."?)x", "%1s") p = gsub(p, "x("..SEPSIL..")("..VOCAL..")", "k%1s%2") p = gsub(p, "("..SEPSIL..")x("..VOCAL..")", "k%1s%2") p = gsub(p, "x", "ks") for x,y in pairs(dig_ipa) do p = gsub(p, x, y) end p = gsub(p, macron, "ː") -- Vowel length before nasal + fricative is allophonic p = gsub(p, "([aeiouy])ː([mn]"..SEPSIL.."*[fs])", "%1%2") p = gsub(p, "("..CONS..")h", "%1") local cls = p local ecl = p cls = gsub(cls, "v", "w") cls = gsub(cls, "[cq]", "k") cls = gsub(cls, "[b]("..SEPSIL.."?[st])", "p%1") -- [[urbs]], [[obtingere]] ecl = gsub(ecl, "[ao]ɪ", "e") ecl = gsub(ecl, "g([ei])", "d͡ʒ%1") ecl = gsub(ecl, "sc([ei])", "ʃ%1") ecl = gsub(ecl, "s("..SEPSIL..")c([ei])", "ʃ%1ʃ%2") ecl = gsub(ecl, "c([ei])", "t͡ʃ%1") ecl = gsub(ecl, "[cq]", "k") ecl = gsub(ecl, "ː", "") ecl = gsub(ecl, "h", "") ecl = gsub(ecl, "j("..SEPSIL.."j)", "%1") ecl = gsub(ecl, "g("..SEPSIL..")d͡ʒ", "d%1d͡ʒ") ecl = gsub(ecl, "("..VOCAL..")("..SEPSIL..")t(i"..VOCAL..")", "%1t%2t͡s%3") ecl = gsub(ecl, "g("..SEPSIL..")n", "ɲ%1ɲ") ecl = gsub(ecl, "ʰ", "") ecl = gsub(ecl, "ʷ", "w") return {{"clásico"}, {"eclesiástico"}}, {{encodehtml(cls)}, {encodehtml(ecl)}} end function export.procesar_pron_args(tit, args) if #args["ayuda"] < 1 then args["ayuda"][1] = tit end if #args["fone"][1] >= 1 or #args["fono"][1] >= 1 then return end -- necesito hacer tablas aparte para eliminar duplicados local rimas = {} local ls = {} local ss = {} local ac = {} if #tit == 1 then if tit >= "a" and tit <= "z" then args["ayuda"] = pron_abc[string.byte(tit) - 96] args["tl"] = args["ayuda"] elseif tit >= "A" and tit <= "Z" then args["ayuda"] = pron_abc[string.byte(tit) - 64] args["tl"] = args["ayuda"] end end local A = #args["ayuda"] local j = 1 -- indice de la ayuda local k = 1 -- cantidad de pronunciaciones insertadas (máximo 9) while k <= 9 and j <= A do local norm = normalizar(tit, args["ayuda"][j], true, true) local s1 = silabear(norm) local s1b = acentuar(s1) local pron, fono = generar_fono(s1b) if not find(tit, "%s") then ss[s1] = true local lsib = longitud_silabica(s1) ls[lsib] = true ac[acentuacion(s1b, lsib)] = true end for i,_ in ipairs(pron) do args["pron"][k] = pron[i] args["fono"][k] = fono[i] rimas[rima(fono[i][1])] = true k = k + 1 if k > 9 then break end end if args["ayudanota"][j] then args["fnota"][j] = {args["ayudanota"][j]} end j = j + 1 end args["d"] = keys_to_list(ss) args["ls"] = keys_to_list(ls) args["ac"] = keys_to_list(ac) args["rima"] = keys_to_list(rimas) return args end return export 932hfq3lycf3pe0kbsv121wxvoyezi5 orín 0 1041077 6110173 5855171 2026-04-27T23:15:24Z Tmagc 158167 6110173 wikitext text/x-wiki {{desambiguación|orin}} == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{etimología|la-vul|*aurīginis}}, {{etim|la|aerugo|alt=aerūginis}}.<ref>{{DCECH}}</ref> ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: {{plm|óxido}} rojizo que se forma en la superficie del [[hierro]] por la acción del aire húmedo.<ref name="drae1925">{{DLE1925}}</ref> {{ejemplo|Azules los comisarios<br>Los dientes de los moriscos<br>La aleta de las sirenas<br>Y el '''orín''' de San Francisco|c=canción|t=Azules|a=Juan Carlos Baglietto|f=2006}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} === Etimología 2 === {{etimología|masculino|orina|ín}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: {{variante rara|orina}}.<ref name="drae1925" /> {{uso|umep}} {{wikisauro|orina}} ==== Traducciones ==== {{trad-véase|1|orina}} == Referencias y notas == <references /> 05b6lgly66w21me8g6uhnkdsh09r6kn Usuario discusión:ArzhPleuzal 3 1042562 6110097 6106387 2026-04-27T16:42:30Z Tmagc 158167 Sección nueva: /* Pruebas de edición */ 6110097 wikitext text/x-wiki <div style="padding:10px; font-size:101%; background:var(--background-color-success-subtle); color:var(--color-base); border: 1px dotted var(--border-color-notice);" > Hola, ArzhPleuzal. Te damos la [[Wikcionario:Bienvenido, nuevo visitante|bienvenida a ''Wikcionario'']]. <small style="padding-left:150px">[[Wikcionario:Embajada|If you don't speak Spanish, please visit our Embassy]]</small> Gracias por participar en el proyecto. Puedes encontrar algunas guías útiles aquí: :<small>&#x25B6;</small> El '''[[Ayuda:Tutorial|tutorial del Wikcionario]]''' te ofrece una introducción básica sobre la manera de editar con el lenguaje "wiki"; si ya has editado en ''Wikipedia'', mira '''[[Wikcionario:Para editores de Wikipedia|para editores de Wikipedia]]''' en cambio. :<small>&#x25B6;</small> La '''[[Wikcionario:Ayuda|página de ayuda]]''' explica la filosofía básica del proyecto, cómo explorarlo y cómo colaborar; hay muchos otros recursos en el '''[[Ayuda:Mapa de ayuda|Mapa de ayuda]]'''. :<small>&#x25B6;</small> Las '''[[Ayuda:Cómo se edita una página|instrucciones para editar una página]]''' explican cómo hacer ediciones; :<small>&#x25B6;</small> La '''[[Wikcionario:Guía de estilo|guía de estilo]]''' es esencial para orientar la redacción; :<small>&#x25B6;</small> Recuerda también que casi siempre las entradas se crean con [[minúscula]]s. Mira '''[[Wikcionario:Convenciones para nombrar entradas|cómo nombrar entradas]]''' para más detalles. Si quieres saber algo más, puedes dirigirte a la comunidad en el '''[[Wikcionario:Café|Café]]'''. No temas preguntar, estamos aquí para ayudarte. Puedes también conectarte con otros editores en el '''{{IRC|wiktionary-es|canal IRC}}''' o en el {{IRC|wikimedia-ayuda|canal de ayuda}}. {| | Esta es tu página de discusión, donde otros wikcionaristas pueden contactarte. Debes responder a un mensaje de otro usuario en '''su''' página de discusión, porque así le saldrá el aviso de «mensajes nuevos» y podrá enterarse de tu respuesta. No olvides '''[[Ayuda:Cómo se edita una página#Firmar un comentario|firmar tu mensaje]]''' con cuatro tildes <nowiki>(&#126;&#126;&#126;&#126;)</nowiki>, con la combinación de teclas {{tecla|Alt Gr|4}}, o usando el botón correspondiente que hay en la parte superior de la caja de edición. || [[Archivo:Signature button.png|right|Para firmar usa el botón indicado|link=]] |} Esperamos que pases buenos momentos por aquí y que la colaboración te resulte agradable.<br /> Saludos muy cordiales, [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 13:36 28 sep 2024 (UTC).</div> == Pruebas de edición == <templatestyles src="metaplantilla de avisos/styles.css" /><table style="{{#if:s|border:2px solid #{{#switch:aviso|protección=bba|serio=b22222|borrar=b22222|borrado=b22222|rechazado=b22222|contenido=f28500|advertencia=f28500|estilo=f4c430|fusionar=9932cc|aviso=1e90ff|desarrollo=228b22|aceptado=228b22|#default=000000}};padding:0.5em; margin:0.5em auto;|}}" class="plainlinks ambox {{#switch:aviso | protección = ambox-protection | serio = ambox-serious | borrar = ambox-serious | borrado = ambox-serious | rechazado = ambox-serious | contenido = ambox-content | advertencia = ambox-content | estilo = ambox-style | fusionar = ambox-merge | aviso = ambox-notice | desarrollo = ambox-growth | aceptado = ambox-growth | #default = ambox-notice }}"> <tr> <td class="ambox-image"> {{#ifeq:{{{imagen}}}|ninguna | <!-- no hay celda con imagen; celda vacía necesaria para que la celda de texto tenga anchura 100% --> | <div style="width:52px;"> {{#switch:aviso | protección = [[Imagen:OOjs UI icon lock.svg|40px|class=skin-invert-image]] | serio = [[Imagen:OOjs UI icon error-destructive.svg|40px]] | borrar = [[Imagen:OOUI icon-like to delete 2.svg|40px]] | borrado = [[Imagen:OOUI icon-like to delete 2.svg|40px]] | rechazado = [[Imagen:OOjs UI icon close-ltr-darkred.svg|40px]] | contenido = [[Imagen:OOjs UI icon alert-warning.svg|40px]] | advertencia = [[Imagen:OOjs UI icon alert-warning.svg|40px]] | estilo = [[Imagen:OOjs UI icon broom.svg|40px]] | fusionar = [[Imagen:Merge-short arrows.svg]] | aviso = [[Imagen:OOjs UI icon information-progressive.svg|40px]] | desarrollo = [[Imagen:OOjs UI icon puzzle-ltr-green.svg|40px]] | aceptado = [[Imagen:OOjs UI icon check-green.svg|40px]] | vacío = [[Imagen:No image.svg]] | #default = [[Archivo:OOjs UI icon information-progressive.svg|40px]] }}</div> }}</td> <td class="ambox-text">Hola, {{PAGENAME}}. Estamos encantados de que ''[[Wikcionario:Bienvenido, nuevo visitante|Wikcionario]]'' haya atraído tu atención, y de que te hayas interesado en aprender a editar en él. La prueba de edición que has hecho {{ #if: fiarse | en [[fiarse]] | }} funcionó; sin embargo, deberías tener en cuenta que el objetivo de este proyecto es desarrollar un diccionario fiable y completo que todos puedan consultar. Tu edición afectaba {{ #if: fiarse | al contenido | a una entrada }}, por lo que ha sido retirada. Si quieres aprender a editar, la [[Wikcionario:Zona de pruebas|zona de pruebas]] está a tu disposición. Estaríamos encantados de contar con tu colaboración constructiva en el proyecto; consulta el artículo sobre ''[[Wikcionario:Acerca de|Wikcionario]]'' y nuestra [[Ayuda:Cómo se edita una página|ayuda en línea]] para más información. Gracias.</td> {{#if:| <td class="ambox-imageright"><div style="width:52px"> {{{imagen derecha}}} </div></td> }} </tr> </table> [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:42 27 abr 2026 (UTC) 6kydtu06kxl0lfovz8z03i72twtp7n7 Módulo:generar-pron/ro 828 1042608 6110081 5893826 2026-04-27T13:52:04Z Tmagc 158167 6110081 Scribunto text/plain -- RUMANO -- Hecho por Tmagc, con algunos fragmentos de código extraídos de en.wikt local export = {} local unpack = unpack or table.unpack local insert = table.insert local concat = table.concat local m_table = require("Módulo:tabla") local keys_to_list = m_table.keysToList local m_str = require("Módulo:string") local u = m_str.char local sub = m_str.sub local gsub = m_str.gsub local gsubrep = m_str.gsubrep local find = m_str.find local encodehtml = m_str.encodehtml local m_str_avanzado = require("Módulo:string/avanzado") local toNFD = m_str_avanzado.toNFD local m_pron = require("Módulo:generar-pron") local normalizar = m_pron.normalizar local longitud_silabica = m_pron.longitud_silabica local acentuacion = m_pron.acentuacion local rima = m_pron.rima --CONVENCION: mayúscula para patrones encerrados entre corchetes, minúscula para todo lo demás local ac_primario = u(0x02C8) local ac_secundario = u(0x02CC) local acentos_ipa = ac_primario..ac_secundario local divsil = "-" local sepsil = "%."..acentos_ipa..divsil local separador = "%s"..sepsil local ACENTOS_IPA = "[" .. acentos_ipa .. "]" local SEPSIL = "[" .. sepsil .. "]" local SEPARADOR = "[" .. separador .. "]" local FIN_PALABRA = "%f[%s%z]" local INICIO_PALABRA = "%f[^%s%z]" local ag = u(0x0301) -- acute = ́ local gr = u(0x0300) -- grave = ̀ local circ = u(0x0302) local breve = u(0x306) local coma = u(0x326) local TILDE = "[" .. ag .. gr .. "]" local DIACR_NO_TILDE = "[" .. breve .. coma .. circ .. "]" local vocales = "aăâeiîouyAĂÂEIÎOUYəɨ" local consonantes = "bcdfghjklmnpqrsștțvwxzBCDFGHJKLMNPQRSȘTȚVWXZ" local vocales_salvo_i = "aăâeîouyAĂÂEÎOUY" local VOCAL = "["..vocales.."]" local VOCAL_SALVO_I = "["..vocales_salvo_i.."]" local CONS = "[^"..vocales..separador.."]" local LETRA = "[^"..separador.."]" local permitido = vocales..consonantes..ag..gr..separador.."·|%s" --asumo que limpié la puntuación local function aislar_diacriticos(texto) texto = toNFD(texto) texto = gsubrep(texto, "("..TILDE..")("..DIACR_NO_TILDE..")", "%2%1") texto = gsub(texto, "."..DIACR_NO_TILDE, { ["a" .. circ] = "â", ["A" .. circ] = "Â", ["i" .. circ] = "î", ["I" .. circ] = "Î", ["e" .. circ] = "î", -- forma vieja de escribir la i circ ["E" .. circ] = "Î", -- idem ["o" .. circ] = "î", -- idem ["O" .. circ] = "Î", -- idem ["u" .. circ] = "î", -- idem ["U" .. circ] = "Î", -- idem ["a" .. breve] = "ă", ["A" .. breve] = "Ă", ["e" .. breve] = "ă", -- versión antigua de la a con la breve ["E" .. breve] = "Ă", -- idem ["i" .. breve] = "i", -- variante antigua de la i, la reemplazo por una i común ["I" .. breve] = "I", -- idem ["u" .. breve] = "u", -- idem ["U" .. breve] = "U", -- idem ["s" .. coma] = "ș", ["S" .. coma] = "Ș", ["t" .. coma] = "ț", ["T" .. coma] = "Ț", ["d" .. coma] = "z", ["D" .. coma] = "Z", ["o" .. ag] = "oa", -- grafía vieja ["O" .. ag] = "OA" }) return texto end local function silabear(p) -- Juntar consonantes fricativas y oclusivas con l y con r. A ecepción de dl. p = gsubrep(p, "("..LETRA..")([pbfvkctgPBFVKCTG][hH]?[lrLR]"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "("..LETRA..")([d][hH]?[rR]"..VOCAL..")", "%1"..divsil.."%2") -- swing, switch, etc. p = gsubrep(p, "("..LETRA..")([sS][wW]"..VOCAL..")", "%1"..divsil.."%2") -- Juntar las ll y rr p = gsubrep(p, "("..LETRA..")([lL][lL]"..VOCAL..")", "%1"..divsil.."%2") p = gsubrep(p, "("..LETRA..")([rR][rR]"..VOCAL..")", "%1"..divsil.."%2") -- Juntar ch y gh si predecen a una e o i p = gsubrep(p, "("..LETRA..")([cCgG][hH][eEiI])", "%1"..divsil.."%2") -- hiatos p = gsub(p, "(" .. VOCAL .. ")(" .. TILDE .. ")(" .. VOCAL .. "+)", function(a,b,c) return a == c and a..b..c or a..b..divsil..c end) p = gsub(p, "(" .. VOCAL_SALVO_I .. ")([iI]" .. VOCAL_SALVO_I .. "+)", "%1"..divsil.."%2") p = gsub(p, "([aeoAEO])%1", "%1"..divsil.."%1") p = gsub(p, "([aoAO])([eE])", "%1"..divsil.."%2") -- resto de sílabas p = gsubrep(p, "(" .. VOCAL .. TILDE .. "*" .. CONS .. "+)(" .. CONS .. VOCAL .. ")", "%1"..divsil.."%2") p = gsubrep(p, "(" .. VOCAL .. TILDE .. "*" .. ")(" .. CONS .. VOCAL .. ")", "%1"..divsil.."%2") -- lupi (unica sílaba cuando i final precedida de consonante) p = gsub(p, divsil.."("..CONS.."+)i"..FIN_PALABRA, "%1i") -- junto sílabas con consonantes solamente p = gsubrep(p, INICIO_PALABRA.."("..CONS.."+)"..SEPSIL.."("..LETRA..")", "%1%2") p = gsubrep(p, "("..LETRA..")"..SEPSIL.."("..CONS.."+)"..FIN_PALABRA, "%1%2") return p end --Convierte los diacríticos a notación IPA local function reemplazar_tildes(p) p = " "..gsub(p, SEPSIL, ".").." " p = gsub(p, "("..SEPARADOR..")("..LETRA.."-)"..TILDE, "%1"..ac_primario.."%2") p = gsub(p, "%."..ac_primario, ac_primario) return sub(p, 2, -2) end local mapeo_vocales = { ["a"]="a", ["e"]="e", ["i"]="i", ["o"]="o", ["u"]="u", ["ă"]="ə", ["â"]="ɨ", ["î"]="ɨ", } local mapeo_1 = { ["b"]="b", ["c"]="k", ["d"]="d", ["f"]="f", ["g"]="ɡ", ["h"]="h", ["j"]="ʒ", ["k"]="k", ["l"]="l", ["m"]="m", ["n"]="n", ["p"]="p", ["q"]="k", ["r"]="r", ["s"]="s", ["t"]="t", ["v"]="v", ["x"]="ks", ["ș"]="ʃ", ["ț"]="t͡s", } local mapeo_1b = { ["y"]="j", ["w"]="v" } local mapeo_2 = { ["ce"] = "t͡ʃe", ["ci"] = "t͡ʃi", ["che"] = "ke", ["chi"] = "ki", ["ge"] = "d͡ʒe", ["gi"] = "d͡ʒi", ["ghe"] = "ɡe", ["ghi"] = "ɡi", } local diptongos = { ["ai"] = "aj", ["au"] = "aw", ["ei"] = "ej", ["eu"] = "ew", ["ii"] = "ij", ["oi"] = "oj", ["ou"] = "ow", ["ui"] = "uj", ["uu"] = "uw", ["ăi"] = "əj", ["ău"] = "əw", ["âi"] = "ɨj", ["âu"] = "ɨw", ["ia"] = "ja", ["ie"] = "je", ["io"] = "jo", ["iu"] = "ju", ["ue"] = "we", ["ua"] = "wa", ["uă"] = "wə", ["uâ"] = "wɨ", } local triptongos = { ["eai"] = "eaj", ["eau"] = "eaw", ["eoa"] = "eoa", ["iai"] = "jaj", ["iau"] = "jaw", ["iei"] = "jej", ["eu"] = "jew", ["ioi"] = "joj", ["iou"] = "jow", ["oai"] = "oaj", ["uai"] = "waj", ["uau"] = "waw", ["uăi"] = "wəj", ["ioa"] = "joa" } local function generar_pron(texto) for a,b in pairs(mapeo_2) do texto = gsub(texto, a, b) end for a,b in pairs(mapeo_1) do texto = gsub(texto, a, b) end for a,b in pairs(mapeo_1b) do texto = gsub(texto, a, b) end for a,b in pairs(triptongos) do texto = gsub(texto, a, b) end for a,b in pairs(diptongos) do texto = gsub(texto, a, b) end for a,b in pairs(mapeo_vocales) do texto = gsub(texto, a, b) end texto = gsub(texto, "("..SEPSIL..")ks", "k%1s") -- restos de la x texto = gsub(texto, "k("..SEPSIL..")ss", "k%1s") texto = gsub(texto, INICIO_PALABRA.."ks", "s") texto = gsub(texto, "("..SEPSIL..")ij", "%1ji") texto = gsub(texto, "([bkdfɡhʒlmnprstvzʃw])[ij]"..FIN_PALABRA, "%1ʲ") -- [[lupi]] local fono = texto return {encodehtml(fono)} end function export.procesar_pron_args(tit, args) local vino_ayuda = true if not args["ayuda"][1] then vino_ayuda = false args["ayuda"][1] = tit end if #args["fone"][1] >= 1 or #args["fono"][1] >= 1 then return end local rimas, ls, ac, ss = {}, {}, {}, {} local A = #args["ayuda"] local j = 1 -- indice de la ayuda local k = 1 -- cantidad de pronunciaciones insertadas (máximo 9) while k <= 9 and j <= A do local norm = normalizar(tit, args["ayuda"][j], true, true) norm = aislar_diacriticos(norm) local s1 = silabear(norm) local s1b = reemplazar_tildes(s1) local fono = generar_pron(s1b) args["fono"][k] = fono if vino_ayuda and args["ayuda"][j] then args["fgraf"][k] = {args["ayuda"][j]} end if not find(tit, "%s") then ss[s1] = true local lsib = longitud_silabica(s1) ls[lsib] = true if find(fono[1], ACENTOS_IPA) then ac[acentuacion(fono[1], lsib)] = true rimas[rima(fono[1])] = true end end k = k + 1 j = j + 1 end args["d"] = keys_to_list(ss) args["ls"] = keys_to_list(ls) args["ac"] = keys_to_list(ac) args["rima"] = keys_to_list(rimas) return end return export os7gpyh31ae12evxly3cpr75u48h7rx probation 0 1044161 6110085 5855537 2026-04-27T15:18:50Z Tmagc 158167 6110085 wikitext text/x-wiki {{desambiguación|}}<!-- si hay términos que se diferencian de este solo en una tilde o diacrítico --> == {{lengua|es}} == {{pron-graf|ayuda=probeishon}} === Etimología === {{etimología|en|probation}}. ==== {{sustantivo femenino|es}} ==== {{es.sust|s=s}} ;1 {{csem|derecho}}: {{plm|suspensión del juicio a prueba}}. {{uso|coloquial}} {{ámbito|Argentina}} ==== Traducciones ==== {{trad-arriba}} <!-- formato: {{t|idioma|t1=(traducción1)|t2=(traducción2|...(hay más opciones))}} p. ej. {{t|fr|t1=chose|a1=1|g1=f}} (ver más ejemplos en Plantilla:t/doc) --> {{trad-abajo}} == {{lengua|en}} == {{pron-graf|leng=en |fono=ˌpɹoʊˈbeɪʃən|audio=LL-Q1860 (eng)-Vininn126-probation.wav|pron=Estados Unidos |2fono=ˌpɹə(ʊ)ˈbeɪʃən|2audio=|2pron=Reino Unido }} === Etimología === {{etimología|leng=en|enm|probacioun}}, y este {{etim|frm|leng=en|probation}} y este {{etim|fro|leng=en|probacion}} y este {{etim|la|leng=en|probatio}}. ==== {{sustantivo|en}} ==== {{en.sust|ci}} ;1: {{plm|período}} de prueba. ;2 {{csem|derecho|leng=en}}: {{plm|suspensión del juicio a prueba}}. ==== Véase también ==== {{w|leng=en}} <!-- si va a insertar una nueva sección de etimología o de idioma, por favor, hágalo ↑ arriba ↑ de esta línea. NO BORRE LO QUE ESTÁ DEBAJO, GRACIAS. --> == Referencias y notas == <references /> e1e0t6ftq2tck5ueo26362r43l7wq0q meter el pecho 0 1052012 6110125 5707907 2026-04-27T19:42:00Z Tmagc 158167 6110125 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución verbal|es|transitiva}} ==== ;1: {{plm|intimidar}}.<ref>{{referencia|c=pagina|t=Mini guía para entender el raro español de los argentinos desde la Puna hasta la Patagonia|sitio=Matador Network|u=https://matadornetwork.com/es/mini-guia-para-raro-espanol-de-argentinos-puna-hasta-patagonia/|a=Silvana Spinelli|f=2016-7-20}}</ref> {{uso|coloquial}} {{ámbito|Mendoza|Córdoba}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> obgm6x50zp480nya7r17kjdn7ji21i7 Módulo:flex/la 828 1059810 6110099 6076998 2026-04-27T16:51:33Z Tmagc 158167 6110099 Scribunto text/plain -- FLEXIÓN DEL LATÍN -- Adaptado desde en.wikt por Tmagc local export = {} local unpack = unpack or table.unpack local insert = table.insert local concat = table.concat local m_table = require("Módulo:tabla") local list_to_set = m_table.listToSet local keys_to_list = m_table.keysToList local insert_if_not = m_table.insertIfNot local deep_copy = m_table.deepCopy local contains = m_table.contains local append = m_table.append local merge = m_table.merge local m_str = require("Módulo:string") local u = m_str.char local match = m_str.match local sub = m_str.sub local gsub = m_str.gsub local gsubb = m_str.gsubb local split = m_str.split local gsplit = m_str.gsplit local find = m_str.find local m_str_avanzado = require("Módulo:string/avanzado") local toNFD = m_str_avanzado.toNFD local toNFC = m_str_avanzado.toNFC local m_flex = require("Módulo:flex") local f = m_flex.f local f_links = m_flex.f_links local parsear_arreglo = m_flex.parsear_arreglo local separar_palabras = m_flex.separar_palabras local combinar_copulativa = m_flex.combinar_copulativa local sobreescribir_formas = m_flex.sobreescribir_formas local desactivar_formas = m_flex.desactivar_formas local agregar_enlaces = m_flex.agregar_enlaces local formatear_formas = m_flex.formatear_formas local comprobar_defectivo = m_flex.comprobar_defectivo local renderizar_tabla = m_flex.renderizar_tabla local renderizar_encabezado = m_flex.renderizar_encabezado local COLOR_H = m_flex.COLOR_H local COLOR_NP = m_flex.COLOR_NP local COLOR_IND = m_flex.COLOR_IND local COLOR_COND = m_flex.COLOR_COND local COLOR_SUBJ = m_flex.COLOR_SUBJ local COLOR_IMPER = m_flex.COLOR_IMPER local MACRON = u(0x304) local BREVE = u(0x306) local DIAER = u(0x308) local DBREVE = u(0x361) local ACCENT = "[" .. MACRON .. BREVE .. DIAER .. DBREVE .. "]" local VOWEL = "[aæeioœuyAÆEIOŒUY]" local cons_to_vowel = { ["j"] = "i", ["J"] = "I", ["v"] = "u", ["V"] = "U", } local function normalizar_enlace(x) x = toNFD(x) x = gsub(x, ACCENT, "") return toNFC(x) end local function join(a, b) a, b = toNFD(a), toNFD(b) -- If the first part ends in "j" or "v", convert it to "i" or "u" unless -- the second part begins with a vowel. if not match(b, "^" .. VOWEL) then a = gsub(a, "[jvJV]$", cons_to_vowel) end return toNFC(a..b) end local function add_form(decl, slot, stem, suf) if type(slot) == "string" then slot = {slot} end for _,slt in ipairs(slot) do if type(decl[slt]) == "nil" or decl[slt] == "" then decl[slt] = {} elseif type(decl[slt]) == "string" then decl[slt] = {decl[slt]} end insert_if_not(decl[slt], join(stem, suf)) end end local function remove_forms(decl, forms) for form,_ in pairs(decl) do for _,rx in ipairs(forms) do if form:find(rx) then forms[form] = {} break end end end end local function merge_forms(forms, forms2, keys) keys = keys or forms2 for key,arr in pairs(keys) do if not forms[key] then forms[key] = {} end if type(forms2[key]) == "string" then insert_if_not(forms[key], forms2[key]) elseif type(forms2[key]) == "table" then for _,a in ipairs(forms2[key]) do insert_if_not(forms[key], a) end end end end local noun_decl = {} noun_decl["0"] = function(data, args) local forms = data.forms local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem forms["gen_sg"] = stem forms["dat_sg"] = stem forms["acc_sg"] = stem forms["abl_sg"] = stem forms["voc_sg"] = stem forms["nom_pl"] = stem forms["gen_pl"] = stem forms["dat_pl"] = stem forms["acc_pl"] = stem forms["abl_pl"] = stem forms["voc_pl"] = stem -- with locative if data.loc then forms["loc_sg"] = stem forms["loc_pl"] = stem end end local function alt_gen_pl_in_um(stem, forms, types, subtitles, i_stem) if types.genplum then add_form(forms, "gen_pl", stem, (i_stem and "i" or "") .. "um") elseif types.not_genplum then -- FIXME: not a contraction. -- insert_if_not(subtitles, "uncontracted genitive plural") end end noun_decl["1"] = function(data, args) local forms, types, loc, subtitles = data.forms, data.types, data.loc, data.subtitles local stem = args[1] -- normal 1st local nom_sg = "a" local gen_loc_sg = "ae" local dat_sg = "ae" local acc_sg = "am" local abl_sg = "ā" local voc_sg = "a" local nom_voc_pl = "ae" local gen_pl = "ārum" local dat_abl_loc_pl = "īs" local acc_pl = "ās" insert_if_not(data.title, "primera declinación") insert_if_not(data.categories, "LA:Sustantivos de la primera declinación") -- ām if types.am then nom_sg = "ām" acc_sg = "ām" abl_sg = {"ām", "ā"} voc_sg = "ām" -- all Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") --Greek Ma if types.Ma then nom_sg = "ās" acc_sg = "ān" voc_sg = "ā" -- Greek Me elseif types.Me then nom_sg = "ēs" acc_sg = "ēn" abl_sg = "ē" voc_sg = "ē" -- Greek else nom_sg = "ē" gen_loc_sg = "ēs" acc_sg = "ēn" abl_sg = "ē" voc_sg = "ē" end end -- ābus if types.abus then dat_abl_loc_pl = "ābus" end add_form(forms, "nom_sg", stem, nom_sg) add_form(forms, "gen_sg", stem, gen_loc_sg) add_form(forms, "dat_sg", stem, dat_sg) add_form(forms, "acc_sg", stem, acc_sg) add_form(forms, "abl_sg", stem, abl_sg) add_form(forms, "voc_sg", stem, voc_sg) add_form(forms, {"nom_pl", "voc_pl"}, stem, nom_voc_pl) add_form(forms, "gen_pl", stem, gen_pl) add_form(forms, {"dat_pl", "abl_pl"}, stem, dat_abl_loc_pl) add_form(forms, "acc_pl", stem, acc_pl) -- with locative if loc then add_form(forms, "loc_sg", stem, gen_loc_sg) add_form(forms, "loc_pl", stem, dat_abl_loc_pl) end end noun_decl["2"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem1, stem2 = args[1], args[2] insert_if_not(data.title, "segunda declinación") insert_if_not(data.categories, "LA:Sustantivos de la segunda declinación") -- normal 2nd forms["nom_sg"] = stem1 .. "us" forms["gen_sg"] = stem1 .. "ī" forms["dat_sg"] = stem1 .. "ō" forms["acc_sg"] = stem1 .. "um" forms["abl_sg"] = stem1 .. "ō" forms["voc_sg"] = stem1 .. "e" forms["nom_pl"] = stem1 .. "ī" forms["gen_pl"] = stem1 .. "ōrum" forms["dat_pl"] = stem1 .. "īs" forms["acc_pl"] = stem1 .. "ōs" forms["abl_pl"] = stem1 .. "īs" forms["voc_pl"] = stem1 .. "ī" -- all neuter if types.N then forms["nom_sg"] = stem1 .. "um" forms["voc_sg"] = stem1 .. "um" forms["nom_pl"] = stem1 .. "a" forms["acc_pl"] = stem1 .. "a" forms["voc_pl"] = stem1 .. "a" -- neuter ium if types.ium then forms["nom_sg"] = stem1 .. "ium" forms["gen_sg"] = {stem1 .. "iī", stem1 .. "ī{†}"} forms["dat_sg"] = stem1 .. "iō" forms["acc_sg"] = stem1 .. "ium" forms["abl_sg"] = stem1 .. "iō" forms["voc_sg"] = stem1 .. "ium" forms["nom_pl"] = stem1 .. "ia" forms["gen_pl"] = stem1 .. "iōrum" forms["dat_pl"] = stem1 .. "iīs" forms["acc_pl"] = stem1 .. "ia" forms["abl_pl"] = stem1 .. "iīs" forms["voc_pl"] = stem1 .. "ia" -- neuter us, plural a elseif types.a then forms["nom_sg"] = stem1 .. "us" forms["acc_sg"] = stem1 .. "us" forms["voc_sg"] = stem1 .. "us" forms["nom_pl"] = stem1 .. "a" forms["acc_pl"] = stem1 .. "a" forms["voc_pl"] = stem1 .. "a" -- -vom (aevom, etc.) elseif types.vom then forms["nom_sg"] = stem1 .. "om" forms["acc_sg"] = stem1 .. "om" forms["voc_sg"] = stem1 .. "om" -- neuter Greek in -os (cētos) elseif types.Greek and types.us then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "os" forms["voc_sg"] = stem1 .. "os" forms["nom_pl"] = stem1 .. "ē" forms["gen_pl"] = stem1 .. "ōn" forms["acc_pl"] = stem1 .. "ē" forms["voc_pl"] = stem1 .. "ē" -- neuter Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "on" forms["acc_sg"] = stem1 .. "on" forms["voc_sg"] = stem1 .. "on" -- neuter us elseif types.us then forms["nom_sg"] = stem1 .. "us" forms["acc_sg"] = stem1 .. "us" forms["voc_sg"] = stem1 .. "us" forms["nom_pl"] = stem1 .. "ī" forms["acc_pl"] = stem1 .. "ōs" forms["voc_pl"] = stem1 .. "ī" end -- er elseif types.er then forms["nom_sg"] = stem1 forms["gen_sg"] = stem2 .. "ī" forms["dat_sg"] = stem2 .. "ō" forms["acc_sg"] = stem2 .. "um" forms["abl_sg"] = stem2 .. "ō" forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 .. "ī" forms["gen_pl"] = stem2 .. "ōrum" forms["dat_pl"] = stem2 .. "īs" forms["acc_pl"] = stem2 .. "ōs" forms["abl_pl"] = stem2 .. "īs" forms["voc_pl"] = stem2 .. "ī" -- ius elseif types.ius then forms["nom_sg"] = stem1 .. "ius" forms["gen_sg"] = {stem1 .. "iī", stem1 .. "ī{†}"} forms["dat_sg"] = stem1 .. "iō" forms["acc_sg"] = stem1 .. "ium" forms["abl_sg"] = stem1 .. "iō" if types.voci then -- Only for proper names and fīlius, genius forms["voc_sg"] = stem1 .. "ī" else forms["voc_sg"] = stem1 .. "ie" end forms["nom_pl"] = stem1 .. "iī" forms["gen_pl"] = stem1 .. "iōrum" forms["dat_pl"] = stem1 .. "iīs" forms["acc_pl"] = stem1 .. "iōs" forms["abl_pl"] = stem1 .. "iīs" forms["voc_pl"] = stem1 .. "iī" -- -vos (servos, etc.) elseif types.vos then forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "om" -- Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "on" if data.num == "pl" then forms["nom_pl"] = stem1 .. "oe" forms["voc_pl"] = stem1 .. "oe" else forms["nom_pl"] = {stem1 .. "ī", stem1 .. "oe"} forms["voc_pl"] = {stem1 .. "ī", stem1 .. "oe"} end elseif types.not_Greek then insert_if_not(data.title, "no griego") end -- with -um genitive plural alt_gen_pl_in_um(stem2, forms, types, subtitles, types.ius or types.ium) -- with locative if data.loc then if types.ius or types.ium then forms["loc_sg"] = stem2 .. "iī" forms["loc_pl"] = stem2 .. "iīs" else forms["loc_sg"] = stem2 .. "ī" forms["loc_pl"] = stem2 .. "īs" end end end local acc_sg_i_stem_subtypes = { acc_im = { -- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) [abl -ī]; -- cannabis, senapis, sinapis [abl -e, -ī] acc_sg = {"im"}, title = {"accusative singular in ''-im''"}, }, acc_im_in = { -- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris [abl -ī]; -- Baetis, Tigris [acc -e, -ī] acc_sg = {"im", "in"}, title = {"accusative singular in ''-im'' or ''-in''"}, }, acc_im_in_em = { -- e.g. tigris, river Līris acc_sg = {"im", "in", "em"}, title = {"accusative singular in ''-im'', ''-in'' or ''-em''"}, }, acc_im_em = { acc_sg = {"im", "em"}, title = {"accusative singular in ''-im'' or ''-em''"}, }, acc_im_occ_em = { -- febris, pelvis, puppis, restis, securis, turris [abl -ī, -e] acc_sg = {"im", "em"}, title = {"accusative singular in ''-im'' or occasionally ''-em''"}, }, acc_em_im = { -- aqualis, clavis, lens, navis [abl -e, -ī]; -- cutis, restis [abl -e] acc_sg = {"em", "im"}, title = {"accusative singular in ''-em'' or ''-im''"}, }, } local abl_sg_i_stem_subtypes = { abl_i = { -- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) [acc -im]; -- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris [acc -im or -in]; -- canalis "water pipe", months in -is or -er, nouns originally i-stem adjectives such as aedilis, affinis, bipennis, familiaris, sodalis, volucris, etc. [acc -em] abl_sg = {"ī"}, title = {"ablative singular in ''-ī''"}, }, abl_i_e = { -- febris, pelvis, puppis, restis, securis, turris [acc -im, -em] abl_sg = {"ī", "e"}, title = {"ablative singular in ''-ī'' or ''-e''"}, }, abl_e_i = { -- cannabis, senapis, sinapis [acc -im]; -- Baetis, Tigris [acc -im, -in]; -- aqualis, clavis, lens, navis [acc -em, -im]; -- finis, mugilis, occiput, pugil, rus, supellex, vectis [acc -em] abl_sg = {"e", "ī"}, title = {"ablative singular in ''-e'' or ''-ī''"}, }, abl_e_occ_i = { -- amnis, anguis, avis, civis, classis, fustis, ignis, imber, orbis, pars, postis, sors, unguis, vesper [acc -em] abl_sg = {"e", "ī"}, title = {"ablative singular in ''-e'' or occasionally ''-ī''"}, }, } local function extract_stem(form, ending) local base = match(form, "^(.*)" .. ending .. "$") if not base then error("Form " .. form .. " should end in -" .. ending) end return base end local function count_vowels(stem) return select(2, toNFD(stem):gsub("[aeiouyAEIOUY]", "")) end noun_decl["3"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem1, stem2 = args[1], args[2] -- local function non_i_stem_type() -- return (count_vowels(stem1) > count_vowels(stem2) and "parisyllabic" or "imparisyllabic") .. " non-i-stem" -- end insert_if_not(data.title, "tercera declinación") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación") --normal 3rd forms["nom_sg"] = stem1 forms["gen_sg"] = stem2 .. "is" forms["dat_sg"] = stem2 .. "ī" forms["acc_sg"] = stem2 .. "em" forms["abl_sg"] = stem2 .. "e" forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 .. "ēs" forms["gen_pl"] = stem2 .. "um" forms["dat_pl"] = stem2 .. "ibus" forms["acc_pl"] = stem2 .. "ēs" forms["abl_pl"] = stem2 .. "ibus" forms["voc_pl"] = stem2 .. "ēs" local acc_sg_i_stem_subtype = false local not_acc_sg_i_stem_subtype = false for subtype, _ in pairs(types) do if acc_sg_i_stem_subtypes[subtype] then acc_sg_i_stem_subtype = true break end end for acc_sg_subtype, _ in pairs(acc_sg_i_stem_subtypes) do if types["not_" .. acc_sg_subtype] then not_acc_sg_i_stem_subtype = true break end end local abl_sg_i_stem_subtype = false local not_abl_sg_i_stem_subtype = false for subtype, _ in pairs(types) do if abl_sg_i_stem_subtypes[subtype] then abl_sg_i_stem_subtype = true break end end for abl_sg_subtype, _ in pairs(abl_sg_i_stem_subtypes) do if types["not_" .. abl_sg_subtype] then not_abl_sg_i_stem_subtype = true break end end -- all Greek if types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") -- Greek er if types.er then stem1 = extract_stem(stem1, "ēr") forms["nom_sg"] = stem1 .. "ēr" forms["gen_sg"] = stem1 .. "eris" forms["dat_sg"] = stem1 .. "erī" forms["acc_sg"] = {stem1 .. "era", stem1 .. "erem"} forms["abl_sg"] = stem1 .. "ere" forms["voc_sg"] = stem1 .. "ēr" forms["nom_pl"] = stem1 .. "erēs" forms["gen_pl"] = stem1 .. "erum" forms["dat_pl"] = stem1 .. "eribus" forms["acc_pl"] = stem1 .. "erēs" forms["abl_pl"] = stem1 .. "eribus" forms["voc_pl"] = stem1 .. "erēs" -- Greek on elseif types.on then stem1 = extract_stem(stem1, "ōn") forms["nom_sg"] = stem1 .. "ōn" forms["gen_sg"] = {stem1 .. "ontis", stem1 .. "ontos"} forms["dat_sg"] = stem1 .. "ontī" forms["acc_sg"] = stem1 .. "onta" forms["abl_sg"] = stem1 .. "onte" forms["voc_sg"] = stem1 .. "ōn" forms["nom_pl"] = stem1 .. "ontēs" forms["gen_pl"] = {stem1 .. "ontum", stem1 .. "ontium"} forms["dat_pl"] = stem1 .. "ontibus" forms["acc_pl"] = {stem1 .. "ontēs", stem1 .. "ontās"} forms["abl_pl"] = stem1 .. "ontibus" forms["voc_pl"] = stem1 .. "ontēs" -- Greek i-stem elseif types.I then forms["gen_sg"] = {stem2 .. "is", stem2 .. "eōs", stem2 .. "ios"} forms["acc_sg"] = {stem2 .. "im", stem2 .. "in", stem2 .. "em{MED}"} forms["abl_sg"] = {stem2 .. "ī", stem2 .. "e{MED}"} forms["voc_sg"] = {stem2 .. "is", stem2 .. "i"} forms["nom_pl"] = {stem2 .. "ēs", stem2 .. "eis"} forms["gen_pl"] = {stem2 .. "ium", stem2 .. "eōn"} forms["acc_pl"] = {stem2 .. "ēs", stem2 .. "eis"} forms["voc_pl"] = {stem2 .. "ēs", stem2 .. "eis"} if types.poetic_esi then forms["dat_pl"] = {stem2 .. "ibus", stem2 .. "esi{L}"} forms["abl_pl"] = {stem2 .. "ibus", stem2 .. "esi{L}"} end -- normal Greek else forms["gen_sg"] = stem2 .. "os" if match(toNFD(stem2), "[yY]" .. ACCENT .. "*$") then forms["acc_sg"] = stem2 .. "n" else forms["acc_sg"] = stem2 .. "a" end forms["nom_pl"] = stem2 .. "es" forms["acc_pl"] = stem2 .. "as" forms["voc_pl"] = stem2 .. "es" if match(toNFD(stem1), "[iyIY]" .. ACCENT .. "*s$") then -- Per Hiley, words in -is and -ys have a poetic vocative -- without the -s, but otherwise the vocative is the same -- as the nominative. forms["voc_sg"] = {stem1, (stem1:gsub("s$", "")).."{L}"} end end elseif types.not_Greek then insert_if_not(data.title, "no griego") end -- polis if types.polis then stem1 = extract_stem(stem1, "polis") insert_if_not(data.title, "parcialmente griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "polis" forms["gen_sg"] = stem1 .. "polis" forms["dat_sg"] = stem1 .. "polī" forms["acc_sg"] = {stem1 .. "polim", stem1 .. "polin"} forms["abl_sg"] = stem1 .. "polī" forms["voc_sg"] = {stem1 .. "polis", stem1 .. "polī"} end -- all neuter if types.N then forms["acc_sg"] = stem1 -- neuter I stem if types.I then -- pure variety if types.pure then forms["abl_sg"] = stem2 .. "ī" forms["nom_pl"] = stem2 .. "ia" forms["gen_pl"] = stem2 .. "ium" forms["acc_pl"] = stem2 .. "ia" forms["voc_pl"] = stem2 .. "ia" -- non-pure variety (rare) else forms["nom_pl"] = stem2 .. "a" forms["gen_pl"] = {stem2 .. "ium", stem2 .. "um"} forms["acc_pl"] = stem2 .. "a" forms["voc_pl"] = stem2 .. "a" end -- normal neuter else forms["nom_pl"] = stem2 .. "a" forms["acc_pl"] = stem2 .. "a" forms["voc_pl"] = stem2 .. "a" end -- I stem elseif types.I or acc_sg_i_stem_subtype or abl_sg_i_stem_subtype then forms["gen_pl"] = stem2 .. "ium" -- Per Allen and Greenough, Hiley and others, the acc_pl in -īs -- applied originally to all i-stem nouns, and was current as an -- alternative form up through Caesar. forms["acc_pl"] = {stem2 .. "ēs", stem2 .. "īs"} -- pure variety if types.pure then forms["acc_sg"] = stem2 .. "im" forms["abl_sg"] = stem2 .. "ī" forms["nom_pl"] = stem2 .. "īs" forms["acc_pl"] = stem2 .. "īs" forms["voc_pl"] = stem2 .. "īs" end local num = data.num for subtype, _ in pairs(types) do local acc_sg_i_stem_props = acc_sg_i_stem_subtypes[subtype] if acc_sg_i_stem_props then forms["acc_sg"] = {} for _, ending in ipairs(acc_sg_i_stem_props.acc_sg) do insert_if_not(forms["acc_sg"], stem2 .. ending) end -- if num ~= "pl" then -- for _, t in ipairs(acc_sg_i_stem_props.title) do -- insert_if_not(subtitles, t) -- end -- end break end end -- FIXME: needs to be done for neuter nouns as well. for subtype, _ in pairs(types) do local abl_sg_i_stem_props = abl_sg_i_stem_subtypes[subtype] if abl_sg_i_stem_props then forms["abl_sg"] = {} for _, ending in ipairs(abl_sg_i_stem_props.abl_sg) do insert_if_not(forms["abl_sg"], stem2 .. ending) end -- if num ~= "pl" then -- for _, t in ipairs(abl_sg_i_stem_props.title) do -- insert_if_not(subtitles, t) -- end -- end break end end end -- with locative if data.loc then -- As far as I can tell, in general both dative singular and -- ablative singular could be used for the third-declension locative, -- with different time periods preferring different forms. -- http://dcc.dickinson.edu/grammar/latin/3rd-declension-locative-case -- mentions rūrī along with either Carthāginī or Carthāgine. -- Wikipedia in https://en.wikipedia.org/wiki/Locative_case#Latin -- says this: -- -- In archaic times, the locative singular of third declension nouns -- was still interchangeable between ablative and dative forms, but in -- the Augustan Period the use of the ablative form became fixed. -- Therefore, both forms "rūrī" and "rūre" may be encountered. -- -- Lewis and Short confirm this. local loc_sg = forms["dat_sg"] if type(loc_sg) == "table" then loc_sg = deep_copy(loc_sg) else loc_sg = {loc_sg} end local abl_sg = forms["abl_sg"] if type(abl_sg) == "table" then for _, form in ipairs(abl_sg) do insert_if_not(loc_sg, deep_copy(form)) end else insert_if_not(loc_sg, abl_sg) end forms["loc_sg"] = loc_sg forms["loc_pl"] = deep_copy(forms["abl_pl"]) --The following is what we used to have, but I simply cannot believe it. --if types.Greek and not types.s then -- forms["loc_pl"] = stem2 .. "ēs" --end end end noun_decl["4"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem = args[1] insert_if_not(data.title, "cuarta declinación") insert_if_not(data.categories, "LA:Sustantivos de la cuarta declinación") -- normal 4th forms["nom_sg"] = stem .. "us" forms["gen_sg"] = stem .. "ūs" forms["dat_sg"] = stem .. "uī" forms["acc_sg"] = stem .. "um" forms["abl_sg"] = stem .. "ū" forms["voc_sg"] = stem .. "us" forms["nom_pl"] = stem .. "ūs" forms["gen_pl"] = stem .. "uum" forms["dat_pl"] = stem .. "ibus" forms["acc_pl"] = stem .. "ūs" forms["abl_pl"] = stem .. "ibus" forms["voc_pl"] = stem .. "ūs" if types.echo then for slot in pairs(forms) do if slot ~= "gen_sg" then forms[slot] = stem .. "ō" end end add_form(forms, "acc_sg", stem, "ōn") elseif types.Callisto then for slot in pairs(forms) do if slot ~= "gen_sg" then forms[slot] = stem .. "ō" end end end -- neuter if types.N then forms["nom_sg"] = stem .. "ū̆{?}" forms["gen_sg"] = {stem .. "ūs{C}", stem .. "ū{S}"} forms["dat_sg"] = {stem .. "uī{C}", stem .. "ū{S}"} forms["acc_sg"] = stem .. "ū̆{?}" forms["voc_sg"] = stem .. "ū̆{?}" forms["nom_pl"] = stem .. "ua" forms["acc_pl"] = stem .. "ua" forms["voc_pl"] = stem .. "ua" end -- ubus if types.ubus then forms["dat_pl"] = stem .. "ubus" forms["abl_pl"] = stem .. "ubus" end -- with locative if data.loc then forms["loc_sg"] = forms["abl_sg"] forms["loc_pl"] = forms["abl_pl"] end end noun_decl["5"] = function(data, args) local forms, types = data.forms, data.types local stem = args[1] insert_if_not(data.title, "quinta declinación") insert_if_not(data.categories, "LA:Sustantivos de la quinta declinación") -- ies if types.i then stem = stem .. "i" end forms["nom_sg"] = stem .. "ēs" forms["gen_sg"] = stem .. "eī" forms["dat_sg"] = stem .. "eī" forms["acc_sg"] = stem .. "em" forms["abl_sg"] = stem .. "ē" forms["voc_sg"] = stem .. "ēs" forms["nom_pl"] = stem .. "ēs" forms["gen_pl"] = stem .. "ērum" forms["dat_pl"] = stem .. "ēbus" forms["acc_pl"] = stem .. "ēs" forms["abl_pl"] = stem .. "ēbus" forms["voc_pl"] = stem .. "ēs" -- ies if types.i then forms["gen_sg"] = stem .. "ēī" forms["dat_sg"] = stem .. "ēī" end --with locative if data.loc then forms["loc_sg"] = stem .. "ē" forms["loc_pl"] = stem .. "ēbus" end end noun_decl["sgpl"] = function(data, args) local forms = data.forms local stem1, stem2 = args[1], args[2] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem1 forms["gen_sg"] = stem1 forms["dat_sg"] = stem1 forms["acc_sg"] = stem1 forms["abl_sg"] = stem1 forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 forms["gen_pl"] = stem2 forms["dat_pl"] = stem2 forms["acc_pl"] = stem2 forms["abl_pl"] = stem2 forms["voc_pl"] = stem2 -- with locative if data.loc then forms["loc_sg"] = stem1 forms["loc_pl"] = stem2 end end noun_decl["indecl"] = function(data, args) local forms = data.forms local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem forms["gen_sg"] = {} forms["dat_sg"] = {} forms["acc_sg"] = stem forms["abl_sg"] = {} forms["voc_sg"] = {} forms["nom_pl"] = {} forms["gen_pl"] = {} forms["dat_pl"] = {} forms["acc_pl"] = {} forms["abl_pl"] = {} forms["voc_pl"] = {} -- with locative (for multiword terms) if data.loc then forms["loc_sg"] = {} forms["loc_pl"] = {} end data.num = "sg" end noun_decl["irreg"] = function(data, args) local forms, subtitles, notes = data.forms, data.subtitles, data.notes local stem = args[1] insert_if_not(data.title, "irregular") insert_if_not(data.categories, "LA:Sustantivos irregulares") forms["nom_sg"] = {} forms["gen_sg"] = {} forms["dat_sg"] = {} forms["acc_sg"] = {} forms["abl_sg"] = {} forms["voc_sg"] = {} forms["nom_pl"] = {} forms["gen_pl"] = {} forms["dat_pl"] = {} forms["acc_pl"] = {} forms["abl_pl"] = {} forms["voc_pl"] = {} if stem == "bōs" then data.decl = "3" local stem1, stem2 = "bōs", "bov" noun_decl["3"](data, {stem1, stem2}) add_form(forms, "abl_sg", stem2, "īd{†}") add_form(forms, "gen_pl", "bo", "um") add_form(forms, "gen_pl", stem2, "erum") add_form(forms, "dat_pl", "", "bōbus") add_form(forms, "dat_pl", "", "būbus") add_form(forms, "abl_pl", "", "bōbus") add_form(forms, "abl_pl", "", "būbus") elseif stem:match("^[dD]eus$") then data.decl = "2" local dD = stem:sub(1, 1) forms["nom_sg"] = dD .. "eus" forms["gen_sg"] = dD .. "eī" forms["dat_sg"] = dD .. "eō" forms["acc_sg"] = dD .. "eum" forms["abl_sg"] = dD .. "eō" forms["voc_sg"] = {dD .. "eus", dD .. "ee"} if stem == "deus" then forms["nom_pl"] = {"dī", "diī", "deī"} forms["gen_pl"] = {"deōrum", "deum"} forms["dat_pl"] = {"dīs", "diīs", "deīs"} forms["acc_pl"] = "deōs" forms["abl_pl"] = {"dīs", "diīs", "deīs"} forms["voc_pl"] = {"dī", "diī", "deī"} end elseif stem == "domus" then data.decl = "4,2" insert_if_not(data.title, "cuarta/segunda declinación") forms["nom_sg"] = "domus" forms["gen_sg"] = {"domūs", "domī"} forms["dat_sg"] = {"domuī", "domō", "domū"} forms["acc_sg"] = "domum" forms["abl_sg"] = {"domū", "domō"} forms["voc_sg"] = "domus" forms["loc_sg"] = "domī" forms["nom_pl"] = "domūs" forms["gen_pl"] = {"domuum", "domōrum"} forms["dat_pl"] = "domibus" forms["acc_pl"] = {"domūs", "domōs"} forms["abl_pl"] = "domibus" forms["voc_pl"] = "domūs" forms["loc_pl"] = {} data.loc = true elseif match(stem, "^[IÏJ]ēs[uū]" .. BREVE .. "?s$") then local ij = sub(stem, 1, 1) local uu = match(stem, "[uū]" .. BREVE .. "?") forms["nom_sg"] = stem forms["gen_sg"] = ij .. "ēsū" forms["dat_sg"] = ij .. "ēsū" forms["acc_sg"] = ij .. "ēs" .. uu .. "m" forms["abl_sg"] = ij .. "ēsū" forms["voc_sg"] = ij .. "ēsū" data.num = "sg" elseif stem == "Mōsēs" or stem == "Moesēs" or match(stem, "^M[oō]" .. BREVE .. "?[īȳ]sēs$") then local mos = sub(stem, 1, -3) forms["nom_sg"] = stem forms["gen_sg"] = {mos .. "ī", mos .. "ēī", mos .. "is", mos .. "ēn", mos .. "eōs"} forms["dat_sg"] = mos .. "ī" forms["acc_sg"] = {mos .. "ēn", mos .. "em"} forms["abl_sg"] = {mos .. "e", mos .. "ēn", mos .. "ī"} forms["voc_sg"] = {mos .. "ēs", mos .. "ē"} data.num = "sg" elseif stem:match("^[ij]ūgerum$") then data.decl = "2,3" local ij = stem:sub(1, 1) insert_if_not(data.title, "segunda/tercera declinación híbrido") forms["nom_sg"] = ij .. "ūgerum" forms["gen_sg"] = ij .. "ūgerī" forms["dat_sg"] = ij .. "ūgerō" forms["acc_sg"] = ij .. "ūgerum" forms["abl_sg"] = ij .. "ūgerō" forms["voc_sg"] = ij .. "ūgerum" forms["nom_pl"] = ij .. "ūgera" forms["gen_pl"] = ij .. "ūgerum" forms["dat_pl"] = ij .. "ūgeribus" forms["acc_pl"] = ij .. "ūgera" forms["abl_pl"] = {ij .. "ūgeribus", ij .. "ūgerīs{†}"} forms["voc_pl"] = ij .. "ūgera" elseif stem == "sūs" then data.decl = "3" forms["nom_sg"] = "sūs" forms["gen_sg"] = "suis" forms["dat_sg"] = "suī" forms["acc_sg"] = "suem" forms["abl_sg"] = "sue" forms["voc_sg"] = "sūs" forms["nom_pl"] = "suēs" forms["gen_pl"] = "suum" forms["dat_pl"] = {"suibus", "sūbus", "subus"} forms["acc_pl"] = "suēs" forms["abl_pl"] = {"suibus", "sūbus", "subus"} forms["voc_pl"] = "suēs" elseif stem == "ēthos" then data.decl = "3" insert_if_not(data.title, "tercera declinación, griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = "ēthos" forms["gen_sg"] = "ētheos" forms["acc_sg"] = "ēthos" forms["voc_sg"] = "ēthos" forms["nom_pl"] = {"ēthea", "ēthē"} forms["dat_pl"] = {"ēthesi", "ēthesin"} forms["acc_pl"] = {"ēthea", "ēthē"} forms["abl_pl"] = {"ēthesi", "ēthesin"} forms["voc_pl"] = {"ēthea", "ēthē"} elseif stem == "Athōs" then data.decl = "2" insert_if_not(data.title, "segunda declinación, griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = "Athōs" forms["gen_sg"] = "Athō" forms["dat_sg"] = "Athō" forms["acc_sg"] = {"Athō", "Athōn"} forms["abl_sg"] = "Athō" forms["voc_sg"] = "Athōs" data.num = "sg" elseif stem:match("^[uv]ēnum$") then data.decl = "4,2" local uv = stem:sub(1, 1) insert_if_not(data.title, "cuarta/segunda declinación, defectivo") forms["dat_sg"] = {uv .. "ēnuī", uv .. "ēnō"} forms["acc_sg"] = uv .. "ēnum" data.num = "sg" elseif stem:match("^[uv]īs$") then data.decl = "3" local uv = stem:sub(1, 1) insert_if_not(data.title, "defectivo") forms["nom_sg"] = uv .. "īs" forms["gen_sg"] = uv .. "īs" forms["dat_sg"] = uv .. "ī" forms["acc_sg"] = uv .. "im" forms["abl_sg"] = uv .. "ī" forms["voc_sg"] = uv .. "īs" forms["nom_pl"] = uv .. "īrēs" forms["gen_pl"] = uv .. "īrium" forms["dat_pl"] = uv .. "īribus" forms["acc_pl"] = {uv .. "īrēs", uv .. "īrīs"} forms["abl_pl"] = uv .. "īribus" forms["voc_pl"] = uv .. "īrēs" else error("Stem " .. stem .. " not recognized.") end end local adj_decl = {} adj_decl["0+"] = function(data, args) local forms, categories = data.forms, data.categories local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(categories, "LA:Adjetivos indeclinables") forms["nom_sg_m"] = stem forms["nom_pl_m"] = stem forms["gen_sg_m"] = stem forms["gen_pl_m"] = stem forms["dat_sg_m"] = stem forms["dat_pl_m"] = stem forms["acc_sg_m"] = stem forms["acc_pl_m"] = stem forms["abl_sg_m"] = stem forms["abl_pl_m"] = stem forms["voc_sg_m"] = stem forms["voc_pl_m"] = stem forms["loc_sg_m"] = stem forms["loc_pl_m"] = stem end adj_decl["1&2+"] = function(data, args) local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "primera y segunda declinación") insert_if_not(categories, "LA:Adjetivos de la primera declinación") insert_if_not(categories, "LA:Adjetivos de la segunda declinación") local original if types.er then local final2 = stem:sub(-2) if final2 == "er" then -- insert_if_not(categories, "LA:Sustantivos de la primera declinación") -- insert_if_not(categories, "LA:Sustantivos de la segunda declinación") elseif final2 == "ur" then -- insert_if_not(categories, "LA:Sustantivos de la primera declinación") -- insert_if_not(categories, "LA:Sustantivos de la segunda declinación") else error("Unrecognized ''-r'' stem (doesn't end in ''-er'' or ''-ur''): " .. stem) end stem, original = args[2], stem end local us = "us" local a_sf = "a" local um = "um" local ae_gsf = "ae" local am = "am" local a_macron = "ā" local i_pl = stem .. "ī" if types.greekA or types.greekE then insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Sustantivos griegos") if types.greekA then us = "os" um = "on" am = "ān" else us = "os" a_sf = "ē" um = "on" ae_gsf = "ēs" am = "ēn" a_macron = "ē" end i_pl = {i_pl, stem .. "oe"} end forms["nom_sg_m"] = original or (stem .. us) forms["nom_sg_f"] = stem .. a_sf forms["nom_sg_n"] = stem .. um forms["nom_pl_m"] = i_pl forms["nom_pl_f"] = stem .. "ae" forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ī" forms["gen_sg_f"] = stem .. ae_gsf forms["gen_sg_n"] = stem .. "ī" forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_f"] = stem .. "ārum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_sg_m"] = stem .. "ō" forms["dat_sg_f"] = stem .. "ae" forms["dat_sg_n"] = stem .. "ō" forms["dat_pl_m"] = stem .. "īs" forms["dat_pl_f"] = stem .. "īs" forms["dat_pl_n"] = stem .. "īs" forms["acc_sg_m"] = stem .. um forms["acc_sg_f"] = stem .. am forms["acc_sg_n"] = stem .. um forms["acc_pl_m"] = stem .. "ōs" forms["acc_pl_f"] = stem .. "ās" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ō" forms["abl_sg_f"] = stem .. a_macron forms["abl_sg_n"] = stem .. "ō" forms["abl_pl_m"] = stem .. "īs" forms["abl_pl_f"] = stem .. "īs" forms["abl_pl_n"] = stem .. "īs" forms["voc_sg_m"] = original or (stem .. "e") forms["voc_sg_f"] = stem .. a_sf forms["voc_sg_n"] = stem .. um forms["voc_pl_m"] = i_pl forms["voc_pl_f"] = stem .. "ae" forms["voc_pl_n"] = stem .. "a" if types.ius then insert_if_not(data.title, "pronominal") --insert_if_not(subtitles, "with genitive singular in ''-ī̆us'' and dative singular in ''-ī''") forms["gen_sg_m"] = stem .. "ī̆us" forms["gen_sg_f"] = stem .. "ī̆us" forms["gen_sg_n"] = stem .. "ī̆us" forms["dat_sg_m"] = stem .. "ī" forms["dat_sg_f"] = stem .. "ī" forms["dat_sg_n"] = stem .. "ī" elseif types.not_ius then insert_if_not(data.title, "no pronominal") --insert_if_not(subtitles, "with normal genitive and dative singular") end if stem == "me" then forms["voc_sg_m"] = "mī" end if types.ic then --insert_if_not(subtitles, "with genitive singular ending in ''-ius'' and dative singular ending in ''-ic''") local oc = "oc" local oc_macron = "ōc" if stem == "ill" then oc = "uc" oc_macron = "ūc" end forms["nom_sg_m"] = stem .. "ic" forms["nom_sg_f"] = stem .. "aec" forms["nom_sg_n"] = stem .. oc forms["nom_pl_n"] = stem .. "aec" forms["gen_sg_m"] = stem .. "uius" forms["gen_sg_f"] = stem .. "uius" forms["gen_sg_n"] = stem .. "uius" forms["dat_sg_m"] = stem .. "uic" forms["dat_sg_f"] = stem .. "uic" forms["dat_sg_n"] = stem .. "uic" forms["acc_sg_m"] = stem .. "unc" forms["acc_sg_f"] = stem .. "anc" forms["acc_sg_n"] = stem .. oc forms["acc_pl_n"] = stem .. "aec" forms["abl_sg_m"] = stem .. "ōc" forms["abl_sg_f"] = stem .. "āc" forms["abl_sg_n"] = stem .. oc_macron forms["voc_sg_m"] = {} forms["voc_sg_f"] = {} forms["voc_sg_n"] = {} forms["voc_pl_m"] = {} forms["voc_pl_f"] = {} forms["voc_pl_n"] = {} end if types.distr then if stem:sub(-1) == "n" then forms["gen_pl_m"] = {stem .. "um", stem .. "ōrum{R}"} forms["gen_pl_f"] = {stem .. "um", stem .. "ārum{R}"} forms["gen_pl_n"] = {stem .. "um", stem .. "ōrum{R}"} else error("Unrecognized distributive numeral stem (doesn't end in ''n''): " .. stem) end original = stem stem = args[2] end forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["1-1+"] = function(data, args) local forms, subtitles, categories = data.forms, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "primera declinación") insert_if_not(categories, "LA:Adjetivos de la primera declinación") forms["nom_sg_m"] = stem .. "a" forms["nom_pl_m"] = stem .. "ae" forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ae" forms["gen_pl_m"] = stem .. "ārum" forms["dat_sg_m"] = stem .. "ae" forms["dat_pl_m"] = stem .. "īs" forms["acc_sg_m"] = stem .. "am" forms["acc_sg_n"] = stem .. "a" forms["acc_pl_m"] = stem .. "ās" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ā" forms["abl_pl_m"] = stem .. "īs" forms["voc_sg_m"] = stem .. "a" forms["voc_pl_m"] = stem .. "ae" forms["voc_pl_n"] = stem .. "a" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) end adj_decl["2-2+"] = function(data, args) local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "segunda declinación") insert_if_not(categories, "LA:Adjetivos de la segunda declinación") local us = "us" local um = "um" local i_pl = stem .. "ī" if types.greek then insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Sustantivos griegos") us = "os" um = "on" i_pl = {i_pl, stem .. "oe"} end forms["nom_sg_m"] = stem .. us forms["nom_sg_n"] = stem .. um forms["nom_pl_m"] = i_pl forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ī" forms["gen_sg_n"] = stem .. "ī" forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_sg_m"] = stem .. "ō" forms["dat_sg_n"] = stem .. "ō" forms["dat_pl_m"] = stem .. "īs" forms["dat_pl_n"] = stem .. "īs" forms["acc_sg_m"] = stem .. um forms["acc_sg_n"] = stem .. um forms["acc_pl_m"] = stem .. "ōs" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ō" forms["abl_sg_n"] = stem .. "ō" forms["abl_pl_m"] = stem .. "īs" forms["abl_pl_n"] = stem .. "īs" forms["voc_sg_m"] = stem .. "e" forms["voc_sg_n"] = stem .. um forms["voc_pl_m"] = i_pl forms["voc_pl_n"] = stem .. "a" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end local function abl_i_e(...) local function update_slot(forms, slot, f, do_copy) if not forms[slot] then return do_copy elseif do_copy then f = deep_copy(f) end forms[slot] = f return true end function abl_i_e(stem, forms, types) local f, do_copy if types["abl_e_i"] then f = {stem .. "e", stem .. "ī"} elseif types["abl_i_e"] then f = {stem .. "ī", stem .. "e"} else return end do_copy = update_slot(forms, "abl_sg_m", f, do_copy) do_copy = update_slot(forms, "abl_sg_f", f, do_copy) -- Neuter doesn't take -e with i-stems. if not types.I then update_slot(forms, "abl_sg_n", f, do_copy) end end return abl_i_e(...) end adj_decl["3-1+"] = function(data, args) local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, dos terminaciones") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con dos terminaciones") forms["nom_sg_m"] = stem1 forms["nom_sg_n"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" abl_i_e(stem2, forms, types) forms["voc_sg_m"] = stem1 forms["voc_sg_n"] = stem1 forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) if types.par then forms["nom_pl_n"] = stem2 .. "a" forms["gen_pl_m"] = stem2 .. "um" forms["gen_pl_n"] = stem2 .. "um" forms["abl_sg_m"] = stem2 .. "e" forms["abl_sg_n"] = stem2 .. "e" forms["loc_sg_m"] = {stem2 .. "ī", stem2 .. "e"} -- Really? forms["loc_sg_n"] = {stem2 .. "ī", stem2 .. "e"} -- Why does this happen? forms["acc_pl_n"] = stem2 .. "a" forms["voc_pl_n"] = stem2 .. "a" end local es_base = stem1:match("^(.-)ēs$") if es_base and es_base == stem2 then if types.greek then forms["nom_sg_n"] = {stem2 .. "ē̆s{?}"} forms["acc_sg_n"] = {stem2 .. "ē̆s{?}"} forms["voc_sg_m"] = {stem2 .. "ē̆s{?}"} forms["voc_sg_n"] = {stem2 .. "ē̆s{?}"} forms["nom_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["acc_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["voc_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["abl_sg_m"] = {stem2 .. "e{?}", stem2 .. "ī{?}"} forms["abl_sg_n"] = {stem2 .. "e{?}", stem2 .. "ī{?}"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["gen_pl_m"] = {stem2 .. "um{?}", stem2 .. "ium{?}"} forms["gen_pl_n"] = {stem2 .. "um{?}", stem2 .. "ium{?}"} insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Adjetivos griegos") elseif types.not_greek then insert_if_not(data.title, "no griego") end end end adj_decl["3-def+"] = function(data, args) local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, defectivo") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") forms["nom_sg_m"] = stem1 forms["nom_sg_n"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 forms["acc_pl_m"] = stem2 .. "ēs" forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" forms["voc_sg_m"] = stem1 forms["voc_sg_n"] = stem1 forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" if types.tor then insert_if_not(data.title, "tercera declinación, solo en masculino") insert_if_not(categories, "LA:Adjetivos solo en masculino") remove_forms(forms, {"_f$", "_n$"}) forms["nom_sg_m"] = stem1 forms["gen_sg_m"] = stem2 .. "is" forms["dat_sg_m"] = stem2 .. "ī" forms["acc_sg_m"] = stem2 .. "em" forms["abl_sg_m"] = stem2 .. "e" forms["voc_sg_m"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["gen_pl_m"] = stem2 .. "um" forms["dat_pl_m"] = stem2 .. "ibus" forms["acc_pl_m"] = stem2 .. "ēs" forms["abl_pl_m"] = stem2 .. "ibus" forms["voc_pl_m"] = stem2 .. "ēs" end if types.trix then insert_if_not(data.title, "tercera declinación, solo en femenino o en neutro plural") insert_if_not(categories, "LA:Adjetivos solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en neutro") remove_forms(forms, {"_m$", "sg_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = stem2 .. "is" forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = stem2 .. "em" forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"} forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = stem2 .. "ēs" forms["gen_pl_f"] = stem2 .. "ium" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = stem2 .. "ēs" forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = stem2 .. "ēs" end if types.trixf then insert_if_not(data.title, "tercera declinación, solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en femenino") remove_forms(forms, {"_m$","_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = stem2 .. "is" forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = stem2 .. "em" forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"} forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = stem2 .. "ēs" forms["gen_pl_f"] = stem2 .. "ium" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = stem2 .. "ēs" forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = stem2 .. "ēs" end if types.idis then insert_if_not(data.title, "tercera declinación, solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en femenino") remove_forms(forms, {"_m$","_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = {stem2 .. "is", stem2 .. "os"} forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = {stem2 .. "em", stem2 .. "a"} forms["abl_sg_f"] = stem2 .. "e" forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = {stem2 .. "ēs", stem2 .. "es"} forms["gen_pl_f"] = stem2 .. "um" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = {stem2 .. "ēs", stem2 .. "as"} forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = {stem2 .. "ēs", stem2 .. "es"} end forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-C+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem1 = args[1] local stem2 = stem1 .. "ōr" insert_if_not(data.title, "tercera declinación, comparativo") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos comparativos") forms["nom_sg_m"] = stem1 .. "or" forms["nom_sg_n"] = stem1 .. "us" forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "a" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "um" forms["gen_pl_n"] = stem2 .. "um" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 .. "us" forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"} forms["acc_pl_n"] = stem2 .. "a" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" abl_i_e(stem2, forms, types) forms["voc_sg_m"] = stem1 .. "or" forms["voc_sg_n"] = stem1 .. "us" forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "a" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-P+"] = function(data, args) local forms, notes = data.forms, data.notes local stem2 = args[2] adj_decl["3-1+"](data, args) insert_if_not(data.title, "tercera declinación, participio") insert_if_not(data.categories, "LA:Adjetivos de la tercera declinación") forms["abl_sg_m"] = {stem2 .. "e{PART}", stem2 .. "ī{ADJ}"} forms["abl_sg_n"] = {stem2 .. "e{PART}", stem2 .. "ī{ADJ}"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"} end adj_decl["3-2+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem = args[1] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, dos terminaciones") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con dos terminaciones") forms["nom_sg_m"] = stem .. "is" forms["nom_sg_n"] = stem .. "e" forms["nom_pl_m"] = stem .. "ēs" forms["nom_pl_n"] = stem .. "ia" forms["gen_sg_m"] = stem .. "is" forms["gen_sg_n"] = stem .. "is" forms["gen_pl_m"] = stem .. "ium" forms["gen_pl_n"] = stem .. "ium" forms["dat_sg_m"] = stem .. "ī" forms["dat_sg_n"] = stem .. "ī" forms["dat_pl_m"] = stem .. "ibus" forms["dat_pl_n"] = stem .. "ibus" forms["acc_sg_m"] = stem .. "em" forms["acc_sg_n"] = stem .. "e" forms["acc_pl_m"] = {stem .. "īs", stem .. "ēs"} forms["acc_pl_n"] = stem .. "ia" forms["abl_sg_m"] = stem .. "ī" forms["abl_sg_n"] = stem .. "ī" forms["abl_pl_m"] = stem .. "ibus" forms["abl_pl_n"] = stem .. "ibus" -- abl_i_e(stem, forms, types) -- enable once [[Module:la-nominal]] has ben updated forms["voc_sg_m"] = stem .. "is" forms["voc_sg_n"] = stem .. "e" forms["voc_pl_m"] = stem .. "ēs" forms["voc_pl_n"] = stem .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-3+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con tres terminaciones") forms["nom_sg_m"] = stem1 forms["nom_sg_f"] = stem2 .. "is" forms["nom_sg_n"] = stem2 .. "e" forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_f"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_f"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_f"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_f"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_f"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_f"] = stem2 .. "em" forms["acc_sg_n"] = stem2 .. "e" forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_f"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_f"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_f"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" -- abl_i_e(stem2, forms, types) -- enable once [[Module:la-nominal]] has ben updated forms["voc_sg_m"] = stem1 forms["voc_sg_f"] = stem2 .. "is" forms["voc_sg_n"] = stem2 .. "e" forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_f"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["indecl+"] = function(data, args) local forms, subtitles, categories = data.forms, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(categories, "LA:Adjetivos indeclinables") forms["nom_sg_m"] = stem forms["nom_pl_m"] = {} forms["gen_sg_m"] = {} forms["gen_pl_m"] = {} forms["dat_sg_m"] = {} forms["dat_pl_m"] = {} forms["acc_sg_m"] = stem forms["acc_pl_m"] = {} forms["abl_sg_m"] = {} forms["abl_pl_m"] = {} forms["voc_sg_m"] = {} forms["voc_pl_m"] = {} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) end adj_decl["irreg+"] = function(data,args) local forms, types, pos, notes, categories = data.forms, data.types, data.pos, data.notes, data.categories local arg1 = args[1] insert_if_not(data.title, "irregular") insert_if_not(categories, "LA:Adjetivos irregulares") if arg1 == "duo" or arg1 == "ambō" then local stem = sub(arg1, 1, -2) -- data.title = stem == "amb" and "irregular adjective" or "numeral" data.num = "pl" local stem_with_o = stem .. (stem == "amb" and "ō" or "o") forms["nom_pl_m"] = stem_with_o forms["nom_pl_f"] = stem .. "ae" forms["nom_pl_n"] = stem_with_o forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_f"] = stem .. "ārum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_pl_m"] = stem .. "ōbus" forms["dat_pl_f"] = stem .. "ābus" forms["dat_pl_n"] = stem .. "ōbus" forms["acc_pl_m"] = {stem .. "ōs", stem_with_o} forms["acc_pl_f"] = stem .. "ās" forms["acc_pl_n"] = stem_with_o forms["abl_pl_m"] = stem .. "ōbus" forms["abl_pl_f"] = stem .. "ābus" forms["abl_pl_n"] = stem .. "ōbus" forms["voc_pl_m"] = stem_with_o forms["voc_pl_f"] = stem .. "ae" forms["voc_pl_n"] = stem_with_o if stem == "du" then forms["gen_pl_m"] = {forms["gen_pl_m"], "duum", "duom{†}"} forms["gen_pl_n"] = {forms["gen_pl_n"], "duum", "duom{†}"} end elseif arg1:sub(-6) == "mīlle" then insert_if_not(data.title, "numeral semiindeclinable") local stem = arg1:sub(1, -3) forms["nom_sg_m"] = stem .. "le" forms["nom_pl_m"] = {stem .. "ia", stem .. "lia"} forms["gen_sg_m"] = stem .. "le" forms["gen_pl_m"] = {stem .. "ium", stem .. "lium"} forms["dat_sg_m"] = stem .. "le" forms["dat_pl_m"] = {stem .. "ibus", stem .. "libus"} forms["acc_sg_m"] = stem .. "le" forms["acc_pl_m"] = {stem .. "ia", stem .. "lia"} forms["abl_sg_m"] = stem .. "le" forms["abl_pl_m"] = {stem .. "ibus", stem .. "libus"} forms["voc_sg_m"] = stem .. "le" forms["voc_pl_m"] = {stem .. "ia", stem .. "lia"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) elseif arg1 == "ille" or arg1 == "iste" or arg1 == "ipse" or arg1 == "olle" then local stem = arg1:sub(1, -2) types.ius = true adj_decl["1&2+"](data, {stem}) insert_if_not(data.title, "demostrativo") -- .. " " .. singularize(data.pos) forms["nom_sg_m"] = arg1 if arg1 == "ipse" then add_form(forms, "nom_sg_n", stem, "ud{MED}") add_form(forms, "acc_sg_n", stem, "ud{MED}") else forms["nom_sg_n"] = stem .. "ud" forms["acc_sg_n"] = stem .. "ud" end forms["voc_sg_m"] = {} forms["voc_sg_f"] = {} forms["voc_sg_n"] = {} forms["voc_pl_m"] = {} forms["voc_pl_f"] = {} forms["voc_pl_n"] = {} elseif arg1 == "illic" or arg1 == "istic" or arg1 == "isthic" then insert_if_not(data.title, "demostrativo") -- .. " " .. singularize(data.pos) local stem = arg1:sub(1, -3) forms["nom_sg_m"] = stem .. "ic" forms["nom_sg_f"] = stem .. "aec" forms["nom_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"} forms["gen_sg_m"] = stem .. "ī̆usce" forms["gen_sg_f"] = stem .. "ī̆usce" forms["gen_sg_n"] = stem .. "ī̆usce" forms["dat_sg_m"] = stem .. "īc" forms["dat_sg_f"] = stem .. "īc" forms["dat_sg_n"] = stem .. "īc" forms["acc_sg_m"] = stem .. "unc" forms["acc_sg_f"] = stem .. "anc" forms["acc_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"} forms["abl_sg_m"] = stem .. "ōc" forms["abl_sg_f"] = stem .. "āc" forms["abl_sg_n"] = stem .. "ōc" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["nom_pl_m"] = stem .. "īsce" forms["nom_pl_f"] = stem .. "aec" forms["nom_pl_n"] = stem .. "aec" forms["gen_pl_m"] = stem .. "ōrunc{?}" forms["gen_pl_f"] = stem .. "ārunc{?}" forms["gen_ok_n"] = stem .. "ōrunc{?}" forms["dat_pl_m"] = stem .. "īsce" forms["dat_pl_f"] = stem .. "īsce" forms["dat_pl_n"] = stem .. "īsce" forms["acc_pl_m"] = stem .. "ōsce" forms["acc_pl_f"] = stem .. "āsce" forms["acc_pl_n"] = stem .. "aec" forms["abl_pl_m"] = stem .. "īsce" forms["abl_pl_f"] = stem .. "īsce" forms["abl_pl_n"] = stem .. "īsce" forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif arg1 == "hice" then insert_if_not(data.title, "demostrativo") -- .. " pronoun" forms["nom_sg_m"] = "hice" forms["nom_sg_f"] = "haece" forms["nom_sg_n"] = "hoce" forms["nom_pl_m"] = "hīce" forms["nom_pl_f"] = "haece" forms["nom_pl_n"] = "haece" forms["gen_sg_m"] = "huiusce" forms["gen_sg_f"] = "huiusce" forms["gen_sg_n"] = "huiusce" forms["gen_pl_m"] = {"hōrunce", "hōrumce"} forms["gen_pl_f"] = {"hārunce", "hārumce"} forms["gen_pl_n"] = {"hōrunce", "hōrumce"} forms["dat_sg_m"] = "huīce" forms["dat_sg_f"] = "huīce" forms["dat_sg_n"] = "huīce" forms["dat_pl_m"] = "hīsce" forms["dat_pl_f"] = "hīsce" forms["dat_pl_n"] = "hīsce" forms["acc_sg_m"] = "hunce" forms["acc_sg_f"] = "hance" forms["acc_sg_n"] = "hoce" forms["acc_pl_m"] = "hōsce" forms["acc_pl_f"] = "hāsce" forms["acc_pl_n"] = "haece" forms["abl_sg_m"] = "hōce" forms["abl_sg_f"] = "hāce" forms["abl_sg_n"] = "hōce" forms["abl_pl_m"] = "hīsce" forms["abl_pl_f"] = "hīsce" forms["abl_pl_n"] = "hīsce" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif arg1 == "plūs" then insert_if_not(data.title, "comparativo") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación con una terminación") data.note = "Ninguna de las formas en singular se usaron en latín clásico" forms["nom_sg_n"] = "plūs" forms["nom_pl_m"] = "plūrēs" forms["nom_pl_n"] = "plūra" forms["gen_sg_m"] = "plūris" forms["gen_sg_n"] = "plūris" forms["gen_pl_m"] = "plūrium" forms["gen_pl_n"] = "plūrium" forms["dat_sg_m"] = "plūrī" forms["dat_sg_n"] = "plūrī" forms["dat_pl_m"] = "plūribus" forms["dat_pl_n"] = "plūribus" forms["acc_sg_m"] = "plūrem" forms["acc_sg_f"] = "plūrem" forms["acc_sg_n"] = "plūs" forms["acc_pl_m"] = {"plūrēs", "plūrīs"} forms["acc_pl_n"] = "plūra" forms["abl_sg_m"] = {"plūrī", "plūre"} forms["abl_sg_f"] = {"plūrī", "plūre"} forms["abl_sg_n"] = {"plūrī", "plūre"} forms["abl_pl_m"] = "plūribus" forms["abl_pl_n"] = "plūribus" forms["voc_sg_n"] = "plūs" forms["voc_pl_m"] = "plūrēs" forms["voc_pl_n"] = "plūra" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif match(arg1, "^egō̆?$") or arg1 == "nōs" then insert_if_not(data.title, "pronombre nominativo") forms["nom_sg_m"] = arg1 forms["nom_pl_m"] = "nōs" forms["gen_sg_m"] = "meī" forms["gen_pl_m"] = {"nostrī", "nostrum"} forms["dat_sg_m"] = "mihī̆" forms["dat_pl_m"] = "nōbīs" forms["acc_sg_m"] = {"mē", "mēmē"} forms["acc_pl_m"] = "nōs" forms["abl_sg_m"] = {"mē", "mēmē"} forms["abl_pl_m"] = "nōbīs" forms["voc_sg_m"] = arg1 forms["voc_pl_m"] = "nōs" elseif arg1 == "tū" or arg1 == "vōs" then insert_if_not(data.title, "pronombre nominativo") forms["nom_sg_m"] = arg1 forms["nom_pl_m"] = "vōs" forms["gen_sg_m"] = "tuī" forms["gen_pl_m"] = {"vestrī", "vestrum"} forms["dat_sg_m"] = "tibī̆" forms["dat_pl_m"] = "vōbīs" forms["acc_sg_m"] = {"tē", "tētē"} forms["acc_pl_m"] = "vōs" forms["abl_sg_m"] = {"tē", "tētē"} forms["abl_pl_m"] = "vōbīs" forms["voc_sg_m"] = arg1 forms["voc_pl_m"] = "vōs" elseif arg1 == "suī" then insert_if_not(data.title, "pronombre reflexivo") forms["nom_sg_m"] = {} forms["nom_pl_m"] = {} forms["gen_sg_m"] = arg1 forms["gen_pl_m"] = forms["gen_sg_m"] forms["dat_sg_m"] = "sibī̆" forms["dat_pl_m"] = forms["dat_sg_m"] forms["acc_sg_m"] = {"sē", "sēsē"} forms["acc_pl_m"] = {"sē", "sēsē"} forms["abl_sg_m"] = {"sē", "sēsē"} forms["abl_pl_m"] = {"sē", "sēsē"} forms["voc_sg_m"] = {} forms["voc_pl_m"] = {} elseif arg1 == "is" or arg1 == "īdem" then insert_if_not(data.title, "pronombre demostrativo") forms["nom_sg_m"] = "is" forms["nom_sg_f"] = "ea" forms["nom_sg_n"] = "id" forms["nom_pl_m"] = {"iī", "eī", "ī"} forms["nom_pl_f"] = "eae" forms["nom_pl_n"] = "ea" forms["gen_sg_m"] = {"eius", "ejus"} forms["gen_sg_f"] = {"eius", "ejus"} forms["gen_sg_n"] = {"eius", "ejus"} forms["gen_pl_m"] = {"eōrum", "eum"} forms["gen_pl_f"] = "eārum" forms["gen_pl_n"] = {"eōrum", "eum"} forms["dat_sg_m"] = {"eī", "e͡i", "ēī"} forms["dat_sg_f"] = {"eī", "e͡i", "ēī", "eae"} forms["dat_sg_n"] = {"eī", "e͡i", "ēī"} forms["dat_pl_m"] = {"iīs", "eīs", "īs"} forms["dat_pl_f"] = {"iīs", "eīs", "īs", "eābus"} forms["dat_pl_n"] = {"iīs", "eīs", "īs"} forms["acc_sg_m"] = "eum" forms["acc_sg_f"] = "eam" forms["acc_sg_n"] = "id" forms["acc_pl_m"] = "eōs" forms["acc_pl_f"] = "eās" forms["acc_pl_n"] = "ea" forms["abl_sg_m"] = "eō" forms["abl_sg_f"] = "eā" forms["abl_sg_n"] = "eō" forms["abl_pl_m"] = {"iīs", "eīs", "īs"} forms["abl_pl_f"] = {"iīs", "eīs", "īs"} forms["abl_pl_n"] = {"iīs", "eīs", "īs"} if arg1 == "īdem" then forms["nom_sg_m"] = "ī" forms["nom_sg_n"] = "i" forms["acc_sg_n"] = "i" end elseif arg1 == "quis" or arg1 == "quī" then data.note = "La forma ''qua'' es preferida frente a ''quae'' cuando se usa como indefinido" local id = "id" if arg1 == "quī" then insert_if_not(data.title, "determinante relativo/interrogativo") id = "od" forms["nom_sg_m"] = {"quī", "quis", "quei{†}"} forms["nom_sg_f"] = {"quae", "qua"} forms["acc_sg_f"] = "quam" forms["abl_sg_m"] = "quō" forms["abl_sg_f"] = "quā" forms["abl_sg_n"] = "quō" else insert_if_not(data.title, "pronombre relativo/interrogativo") forms["nom_sg_m"] = {"quis", "quī"} forms["nom_sg_f"] = {"quae", "qua", "quis{†}"} forms["acc_sg_f"] = {"quam", "quem{†}"} forms["abl_sg_m"] = {"quō", "quī"} forms["abl_sg_f"] = {"quā", "quī"} forms["abl_sg_n"] = {"quō", "quī"} end forms["nom_sg_n"] = "qu"..id forms["nom_pl_m"] = {"quī", "quei{†}"} forms["nom_pl_f"] = "quae" forms["nom_pl_n"] = {"quae", "qua"} forms["gen_sg_m"] = {"cuius", "quoius{†}"} forms["gen_sg_f"] = {"cuius", "quoius{†}"} forms["gen_sg_n"] = {"cuius", "quoius{†}"} forms["gen_pl_m"] = "quōrum" forms["gen_pl_f"] = "quārum" forms["gen_pl_n"] = "quōrum" forms["dat_sg_m"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_sg_f"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_sg_n"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_pl_m"] = {"quibus", "quīs", "queis{†}"} forms["dat_pl_f"] = {"quibus", "quīs", "queis{†}"} forms["dat_pl_n"] = {"quibus", "quīs", "queis{†}"} forms["acc_sg_m"] = "quem" forms["acc_sg_n"] = "qu"..id forms["acc_pl_m"] = "quōs" forms["acc_pl_f"] = "quās" forms["acc_pl_n"] = {"quae", "qua"} forms["abl_pl_m"] = {"quibus", "quīs", "queis{†}"} forms["abl_pl_f"] = {"quibus", "quīs", "queis{†}"} forms["abl_pl_n"] = {"quibus", "quīs", "queis{†}"} elseif arg1 == "aliquī" then insert_if_not(data.title, "determinante indefinido") forms["nom_sg_m"] = {"aliquī{DET/ADJ}", "aliquis{PRON/SUST}"} forms["nom_sg_f"] = {"aliqua", "aliquae{R}"} forms["nom_sg_n"] = "aliquod" forms["nom_pl_m"] = "aliquī" forms["nom_pl_f"] = "aliquae" forms["nom_pl_n"] = "aliqua" forms["gen_sg_m"] = {"alicuius", "aliquoius{†}"} forms["gen_sg_f"] = {"alicuius", "aliquoius{†}"} forms["gen_sg_n"] = {"alicuius", "aliquoius{†}"} forms["gen_pl_m"] = "aliquōrum" forms["gen_pl_f"] = "aliquārum" forms["gen_pl_n"] = "aliquōrum" forms["dat_sg_m"] = {"alicui", "aliquoi{†}"} forms["dat_sg_f"] = {"alicui", "aliquoi{†}"} forms["dat_sg_n"] = {"alicui", "aliquoi{†}"} forms["dat_pl_m"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["dat_pl_f"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["dat_pl_n"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["acc_sg_m"] = "aliquem" forms["acc_sg_f"] = "aliquam" forms["acc_sg_n"] = "aliquod" forms["acc_pl_m"] = "aliquōs" forms["acc_pl_f"] = "aliquās" forms["acc_pl_n"] = "aliqua" forms["abl_sg_m"] = "aliquō" forms["abl_sg_f"] = "aliquā" forms["abl_sg_n"] = "aliquō" forms["abl_pl_m"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["abl_pl_f"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["abl_pl_n"] = {"aliquīs", "aliquibus", "aliqueis{†}"} elseif arg1 == "quisquam" then insert_if_not(data.title, "determinante indefinido, concordancia en negativo") data.note = "En latín clásico, era preferidas las formas de ''ūllus'' en lugar de las esta voz para el femenino y el neutro." forms["nom_sg_m"] = "quisquam" forms["nom_sg_f"] = {"quaequam", "quisquam{†}"} forms["nom_sg_n"] = "quodquam" forms["nom_pl_m"] = "quīquam" forms["nom_pl_f"] = "quaequam" forms["nom_pl_n"] = "quaequam" forms["gen_sg_m"] = "cuiusquam" forms["gen_sg_f"] = "cuiusquam" forms["gen_sg_n"] = "cuiusquam" forms["gen_pl_m"] = "quōrumquam" forms["gen_pl_f"] = "quārumquam" forms["gen_pl_n"] = "quōrumquam" forms["dat_sg_m"] = "cuiquam" forms["dat_sg_f"] = "cuiquam" forms["dat_sg_n"] = "cuiquam" forms["dat_pl_m"] = "quibusquam" forms["dat_pl_f"] = "quibusquam" forms["dat_pl_n"] = "quibusquam" forms["acc_sg_m"] = "quemquam" forms["acc_sg_f"] = {"quamquam", "quemquam{†}"} forms["acc_sg_n"] = "quodquam" forms["acc_pl_m"] = "quōsquam" forms["acc_pl_f"] = "quāsquam" forms["acc_pl_n"] = "quaequam" forms["abl_sg_m"] = {"quōquam", "quīquam{†}"} forms["abl_sg_f"] = "quāquam" forms["abl_sg_n"] = "quōquam" forms["abl_pl_m"] = "quibusquam" forms["abl_pl_f"] = "quibusquam" forms["abl_pl_n"] = "quibusquam" forms["voc_sg_m"] = "quisquam" forms["voc_sg_f"] = "quaequam" forms["voc_sg_n"] = "quodquam" forms["voc_pl_m"] = "quīquam" forms["voc_pl_f"] = "quaequam" forms["voc_pl_n"] = "quaequam" elseif arg1 == "quisquis" then insert_if_not(data.title, "pronombre relativo/interrogativo") forms["nom_sg_m"] = "quisquis" forms["nom_sg_f"] = "quisquis" forms["nom_sg_n"] = {"quidquid", "quicquid"} forms["nom_pl_m"] = "quīquī" forms["nom_pl_f"] = "quaequae" forms["nom_pl_n"] = "quaequae" forms["gen_sg_m"] = "cuiuscuius" forms["gen_sg_f"] = "cuiuscuius" forms["gen_sg_n"] = "cuiuscuius" forms["gen_pl_m"] = "quōrumquōrum" forms["gen_pl_f"] = "quārumquārum" forms["gen_pl_n"] = "quōrumquōrum" forms["dat_sg_m"] = "cuicui" forms["dat_sg_f"] = "cuicui" forms["dat_sg_n"] = "cuicui" forms["dat_pl_m"] = {"quibusquibus", "quīsquīs"} forms["dat_pl_f"] = {"quibusquibus", "quīsquīs"} forms["dat_pl_n"] = {"quibusquibus", "quīsquīs"} forms["acc_sg_m"] = "quemquem" forms["acc_sg_f"] = "quamquam" forms["acc_sg_n"] = {"quidquid", "quicquid"} forms["acc_pl_m"] = "quōsquōs" forms["acc_pl_f"] = "quāsquās" forms["acc_pl_n"] = "quaequae" forms["abl_sg_m"] = "quōquō" forms["abl_sg_f"] = "quāquā" forms["abl_sg_n"] = "quōquō" forms["abl_pl_m"] = {"quibusquibus", "quīsquīs"} forms["abl_pl_f"] = {"quibusquibus", "quīsquīs"} forms["abl_pl_n"] = {"quibusquibus", "quīsquīs"} forms["voc_sg_m"] = "quisquis" forms["voc_sg_f"] = "quisquis" forms["voc_sg_n"] = {"quidquid", "quicquid"} forms["voc_pl_m"] = "quīquī" forms["voc_pl_f"] = "quaequae" forms["voc_pl_n"] = "quaequae" elseif arg1 == "ecquis" then insert_if_not(data.title, "pronombre interrogativo") forms["nom_sg_m"] = {"ecquis", "ecquī"} forms["nom_sg_f"] = {"ecqua", "ecquae"} forms["nom_sg_n"] = "ecquid" forms["nom_pl_m"] = "ecquī" forms["nom_pl_f"] = "ecquae" forms["nom_pl_n"] = {"ecqua", "ecquae"} forms["gen_sg_m"] = "eccuius" forms["gen_sg_f"] = "eccuius" forms["gen_sg_n"] = "eccuius" forms["dat_sg_m"] = "eccui" forms["dat_sg_f"] = "eccui" forms["dat_sg_n"] = "eccui" forms["acc_sg_m"] = "ecquem" forms["acc_sg_f"] = "ecquam" forms["acc_sg_n"] = "ecquod" forms["acc_pl_m"] = "ecquōs" forms["acc_pl_f"] = "ecquās" forms["acc_pl_n"] = {"ecqua", "ecquae"} forms["abl_sg_m"] = {"ecquō", "ecquī"} forms["abl_sg_f"] = {"ecquā", "ecquī"} forms["abl_sg_n"] = {"ecquō", "ecquī"} elseif arg1 == "quīdam" then insert_if_not(data.title, "pronombre indefinido") forms["nom_sg_m"] = "quīdam" forms["nom_sg_f"] = "quaedam" forms["nom_sg_n"] = "quiddam" forms["nom_pl_m"] = {"quīdam", "quēsdam{†}"} forms["nom_pl_f"] = "quaedam" forms["nom_pl_n"] = "quaedam" forms["gen_sg_m"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_sg_f"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_sg_n"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_pl_m"] = {"quōrundam", "quōrumdam"} forms["gen_pl_f"] = {"quārundam", "quārumdam"} forms["gen_pl_n"] = {"quōrundam", "quōrumdam"} forms["dat_sg_m"] = {"cuidam", "quoidam{†}"} forms["dat_sg_f"] = {"cuidam", "quoidam{†}"} forms["dat_sg_n"] = {"cuidam", "quoidam{†}"} forms["dat_pl_m"] = {"quibusdam", "quīsdam{†}"} forms["dat_pl_f"] = {"quibusdam", "quīsdam{†}"} forms["dat_pl_n"] = {"quibusdam", "quīsdam{†}"} forms["acc_sg_m"] = {"quendam", "quemdam"} forms["acc_sg_f"] = {"quandam", "quamdam"} forms["acc_sg_n"] = "quiddam" forms["acc_pl_m"] = {"quōsdam", "quēsdam{†}"} forms["acc_pl_f"] = "quāsdam" forms["acc_pl_n"] = "quaedam" forms["abl_sg_m"] = "quōdam" forms["abl_sg_f"] = "quādam" forms["abl_sg_n"] = "quōdam" forms["abl_pl_m"] = {"quibusdam", "quīsdam{†}"} forms["abl_pl_f"] = {"quibusdam", "quīsdam{†}"} forms["abl_pl_n"] = {"quibusdam", "quīsdam{†}"} elseif arg1 == "nēmō" then insert_if_not(data.title, "Determinante y pronombre, concordancia en negativo") forms["nom_sg_m"] = "nēmō" forms["nom_sg_f"] = "nēmō" forms["gen_sg_m"] = {"nūllī̆us", "nēminis{R}"} forms["gen_sg_f"] = {"nūllī̆us", "nēminis{R}"} forms["dat_sg_m"] = "nēminī" forms["dat_sg_f"] = "nēminī" forms["acc_sg_m"] = "nēminem" forms["acc_sg_f"] = "nēminem" forms["abl_sg_m"] = {"nūllō", "nēmine{R}"} forms["abl_sg_f"] = {"nūllā", "nēmine{R}"} else error('adjective ' .. arg1 .. ' not recognized') end end local function extract_base(lemma, ending) if ending:find("(", nil, true) then return match(lemma, ending) end return match(lemma, "^(.*)" .. ending .. "$") end local function get_noun_subtype_by_ending(lemma, stem2, decltype, specified_subtypes, endings_and_subtypes) for _, ending_and_subtypes in ipairs(endings_and_subtypes) do local ending = ending_and_subtypes[1] local subtypes = ending_and_subtypes[2] local not_this_subtype = false if ( specified_subtypes.pl and not contains(subtypes, "pl") or contains(subtypes, "both") and not specified_subtypes.both ) then -- We now require that plurale tantum terms specify a plural-form lemma. -- The autodetected subtypes will include 'pl' for such lemmas; if not, -- we fail this entry. Additionally, if the rule contains 'both', it -- must be explicitly specified to match. not_this_subtype = true else for _, subtype in ipairs(subtypes) do -- A subtype is directly canceled by specifying -SUBTYPE. -- In addition, M or F as a subtype is canceled by N, and -- vice-versa, but M doesn't cancel F or vice-versa; instead, -- we simply ignore the conflicting gender specification when -- constructing the combination of specified and inferred subtypes. -- The reason for this is that neuters have distinct declensions -- from masculines and feminines, but masculines and feminines have -- the same declension, and various nouns in Latin that are -- normally masculine are exceptionally feminine and vice-versa -- (nauta, agricola, fraxinus, malus "apple tree", manus, rēs, -- etc.). -- -- In addition, sg as a subtype is canceled by pl and vice-versa. -- It's also possible to specify both, which will override sg but -- not cancel it (in the sense that it won't prevent the relevant -- rule from matching). For example, there's a rule specifying that -- lemmas beginning with a capital letter and ending in -ius take -- the ius.voci.sg subtypes. Specifying such a lemma with the -- subtype both will result in the ius.voci.both subtypes, whereas -- specifying such a lemma with the subtype pl will cause this rule -- not to match, and it will fall through to a less specific rule -- that returns just the ius subtype, which will be combined with -- the explicitly specified pl subtype to produce ius.pl. if specified_subtypes["-" .. subtype] or subtype == "N" and (specified_subtypes.M or specified_subtypes.F) or (subtype == "M" or subtype == "F") and specified_subtypes.N or subtype == "sg" and specified_subtypes.pl or subtype == "pl" and specified_subtypes.sg then not_this_subtype = true break end end end if not not_this_subtype then if type(ending) == "table" then local lemma_ending = ending[1] local stem2_ending = ending[2] local base = extract_base(lemma, lemma_ending) if base and base .. stem2_ending == stem2 then return base, stem2, subtypes end else local base = extract_base(lemma, ending) if base then return base, stem2, subtypes end end end end if decltype then error("Unrecognized ending for declension-" .. decltype .. " noun: " .. lemma) end return lemma, stem2, keys_to_list(specified_subtypes) end local patterns = { {"[mM]a", "%0t"}, {"e", ""}, {"([aoAO])([lr])", "%1" .. MACRON .. "%2"}, {"[eE]l", "%0l"}, {"([mM])en", "%1in"}, {"([tT]ūd)ō", "%1in"}, {"([gG])ō", "%1in"}, {"[ōŌ]", "%1n"}, {"er", "r"}, {"[ēi]s", ""}, {"([āēīōūȳĀĒĪŌŪȲ]n)s", function(v) return (gsub(toNFD(v), MACRON, "") .. "t") end}, {"([cC])eps", "%1ipit"}, {"([bp])s", "%1"}, {"us", "or"}, {"s", "t"}, {"ex", "ic"}, {"x", "c"}, } local function make_stem2(stem) local n for _, pattern in ipairs(patterns) do local key = pattern[1] stem, n = gsub(stem, key .. "$", pattern[2]) if n > 0 then -- debug_track("la-utilities/" .. key) REVISAR return toNFC(stem) end end -- debug_track("la-utilities") REVISAR return stem end local function detect_noun_subtype(lemma, stem2, typ, subtypes) local base, _ if typ == "1" then return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"ām", {"F", "am"}}, {"ās", {"M", "Greek", "Ma"}}, {"ēs", {"M", "Greek", "Me"}}, {"ē", {"F", "Greek"}}, {"ae", {"F", "pl"}}, {"a", {"F"}}, }) elseif typ == "2" then local detected_subtypes lemma, stem2, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"^(.*r)$", {"M", "er"}}, {"^(.*v)os$", {"M", "vos"}}, {"^(.*v)om$", {"N", "vom"}}, -- If the lemma ends in -os and the user said N or -M, then the -- following won't apply, and the second (neuter) -os will applly. {"os", {"M", "Greek"}}, {"os", {"N", "Greek", "us"}}, {"on", {"N", "Greek"}}, -- -ius beginning with a capital letter is assumed a proper name, -- and takes the voci subtype (vocative in -ī) along with the ius -- subtype and sg-only. Other nouns in -ius just take the ius -- subtype. Explicitly specify "sg" so that if .pl is given, -- this rule won't apply. {"^(%u.*)ius$", {"M", "ius", "voci", "sg"}}, {"ius", {"M", "ius"}}, {"ium", {"N", "ium"}}, -- If the lemma ends in -us and the user said N or -M, then the -- following won't apply, and the second (neuter) -us will applly. {"us", {"M"}}, {"us", {"N", "us"}}, {"um", {"N"}}, {"iī", {"M", "ius", "pl"}}, {"ia", {"N", "ium", "pl"}}, -- If the lemma ends in -ī and the user said N or -M, then the -- following won't apply, and the second (neuter) -ī will applly. {"ī", {"M", "pl"}}, {"ī", {"N", "us", "pl"}}, {"oe", {"M", "Greek", "pl"}}, {"a", {"N", "pl"}}, }) stem2 = stem2 or lemma return lemma, stem2, detected_subtypes elseif typ == "3" then if subtypes.pl then if subtypes.Greek then base = lemma:match("^(.*)erēs$") if base then return base .. "ēr", base .. "er", {"er"} end base = lemma:match("^(.*)ontēs$") if base then return base .. "ōn", base .. "ont", {"on"} end base = lemma:match("^(.*)es$") if base then return base, stem2 or base, {} end error("Unrecognized ending for declension-3 plural Greek noun: " .. lemma) end base = lemma:match("^(.*)ia$") if base then return base, stem2 or base, {"N", "I", "pure"} end base = lemma:match("^(.*)a$") if base then return base, stem2 or base, {"N"} end base = lemma:match("^(.*)ēs$") if base then return base, stem2 or base, {} end error("Unrecognized ending for declension-3 plural noun: " .. lemma) end stem2 = stem2 or make_stem2(lemma) local detected_subtypes if subtypes.Greek then base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"is", ""}, {"I"}}, {"ēr", {"er"}}, {"ōn", {"on"}}, }) if base then return lemma, stem2, detected_subtypes end return lemma, stem2, {} end if not subtypes.N then base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"^(%u.*pol)is$", ""}, {"F", "polis", "sg", "loc"}}, {{"tūdō", "tūdin"}, {"F"}}, {{"tās", "tāt"}, {"F"}}, {{"tūs", "tūt"}, {"F"}}, {{"tiō", "tiōn"}, {"F"}}, {{"siō", "siōn"}, {"F"}}, {{"xiō", "xiōn"}, {"F"}}, {{"gō", "gin"}, {"F"}}, {{"or", "ōr"}, {"M"}}, {{"tr[iī]x", "trīc"}, {"F"}}, {{"is", ""}, {"I"}}, {{"^(%l.*)ēs$", ""}, {"I"}}, }) if base then return lemma, stem2, detected_subtypes end end base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"us", "or"}, {"N"}}, {{"us", "er"}, {"N"}}, {{"ma", "mat"}, {"N"}}, {{"men", "min"}, {"N"}}, {{"^(%u.*)e$", ""}, {"N", "sg"}}, {{"e", ""}, {"N", "I", "pure"}}, {{"al", "āl"}, {"N", "I", "pure"}}, {{"ar", "ār"}, {"N", "I", "pure"}}, }) if base then return lemma, stem2, detected_subtypes end return lemma, stem2, {} elseif typ == "4" then if subtypes.echo or subtypes.Callisto then base = lemma:match("^(.*)ō$") if not base then error("Declension-4 noun of subtype .echo or .Callisto should end in -ō: " .. lemma) end if subtypes.Callisto then return base, nil, {"F", "sg"} else return base, nil, {"F"} end end return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"us", {"M"}}, {"ū̆", {"N"}}, {"ūs", {"M", "pl"}}, {"ua", {"N", "pl"}}, }) elseif typ == "5" then return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"iēs", {"F", "i"}}, {"iēs", {"F", "i", "pl"}}, {"ēs", {"F"}}, {"ēs", {"F", "pl"}}, }) elseif typ == "sgpl" then return lemma, stem2, {} elseif typ == "irreg" and lemma == "domus" then -- [[domus]] auto-sets data.loc = true, but we need to know this -- before declining the noun so we can propagate it to other segments. return lemma, nil, {"loc"} elseif typ == "indecl" or typ == "irreg" and ( lemma == "Deus" or match(lemma, "^[IJ]ēs[uū]s$") or lemma == "Athōs" or lemma == "vēnum" ) then -- Indeclinable nouns, and certain irregular nouns, set data.num = "sg", -- but we need to know this before declining the noun so we can -- propagate it to other segments. return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"", {"both"}}, {"", {"sg"}}, {"", {"pl"}}, }) elseif typ == "indecl" or typ == "irreg" then return lemma, nil, {} else return nil, nil, {} end end -- Given ENDINGS_AND_SUBTYPES (a list of four-tuples of ENDING, RETTYPE, -- SUBTYPES, PROCESS_RETVAL), check each ENDING in turn against LEMMA and -- STEM2. If it matches, return a four-tuple BASE, STEM2, RETTYPE, NEW_SUBTYPES -- where BASE is normally the remainder of LEMMA minus the ending, STEM2 is -- as passed in, RETTYPE is as passed in, and NEW_SUBTYPES is the same as -- SUBTYPES minus any subtypes beginning with a hyphen. If no endings match, -- throw an error if DECLTYPPE is non-nil, mentioning the DECLTYPE -- (user-specified declension); but if DECLTYPE is nil, just return the tuple -- nil, nil, nil, nil. -- -- In order for a given entry to match, ENDING must match and also the subtypes -- in SUBTYPES (a list) must not be incompatible with the passed-in -- user-specified subtypes SPECIFIED_SUBTYPES (a set, i.e. a table where the -- keys are strings and the value is always true). "Incompatible" means that -- a given SUBTYPE is specified in either one and -SUBTYPE in the other, or -- that "pl" is found in SPECIFIED_SUBTYPES and not in SUBTYPES. -- -- The ending spec in ENDINGS_AND_SUBTYPES is one of the following: -- -- 1. A simple string, e.g. "tūdō", specifying an ending. -- 2. A regex that should match the entire lemma (it should be anchored at -- the beginning with ^ and at the end with $), and contains a single -- capturing group to match the base. -- 3. A pair {SIMPLE_STRING_OR_REGEX, STEM2_ENDING} where -- SIMPLE_STRING_OR_REGEX is one of the previous two possibilities and -- STEM2_ENDING is a string specifying the corresponding ending that must -- be present in STEM2. If this form is used, the combination of -- base + STEM2_ENDING must exactly match STEM2 in order for this entry -- to be considered a match. An example is {"is", ""}, which will match -- lemma == "follis", stem2 == "foll", but not lemma == "lapis", -- stem2 == "lapid". -- -- If PROCESS_STEM2 is given and the returned STEM2 would be nil, call -- process_stem2(BASE) to get the STEM2 to return. local function get_adj_type_and_subtype_by_ending(lemma, stem2, decltype, specified_subtypes, endings_and_subtypes, process_stem2) for _, ending_and_subtypes in ipairs(endings_and_subtypes) do local ending = ending_and_subtypes[1] local rettype = ending_and_subtypes[2] local subtypes = ending_and_subtypes[3] local process_retval = ending_and_subtypes[4] local not_this_subtype = false if ( specified_subtypes.pl and not contains(subtypes, "pl") or contains(subtypes, "both") and not specified_subtypes.both ) then -- We now require that plurale tantum terms specify a plural-form lemma. -- The autodetected subtypes will include 'pl' for such lemmas; if not, -- we fail this entry. Additionally, if the rule contains 'both', it -- must be explicitly specified to match. not_this_subtype = true else for _, subtype in ipairs(subtypes) do -- A subtype is directly canceled by specifying -SUBTYPE. if specified_subtypes["-" .. subtype] then not_this_subtype = true break end -- A subtype is canceled if the user specified SUBTYPE and -- -SUBTYPE is given in the to-be-returned subtypes. local must_not_be_present = subtype:match("^%-(.*)$") if must_not_be_present and specified_subtypes[must_not_be_present] then not_this_subtype = true break end end end if not not_this_subtype then local base if type(ending) == "table" then local lemma_ending = ending[1] local stem2_ending = ending[2] base = extract_base(lemma, lemma_ending) if base and base .. stem2_ending ~= stem2 then base = nil end else base = extract_base(lemma, ending) end if base then -- Remove subtypes of the form -SUBTYPE from the subtypes -- to be returned. local new_subtypes = {} for _, subtype in ipairs(subtypes) do if subtype:sub(1, 1) ~= "-" then insert(new_subtypes, subtype) end end if process_retval then base, stem2 = process_retval(base, stem2) end if process_stem2 then stem2 = stem2 or process_stem2(base) end return base, stem2, rettype, new_subtypes end end end if not decltype then return lemma, stem2, nil, keys_to_list(specified_subtypes) elseif decltype == "" then error("Unrecognized ending for adjective: " .. lemma) else error("Unrecognized ending for declension-" .. decltype .. " adjective: " .. lemma) end end -- Autodetect the type and subtype of an adjective given all the information -- specified by the user: lemma, stem2, declension type and specified subtypes. -- Four values are returned: the lemma base (i.e. the stem of the lemma, as -- required by the declension functions), the value of stem2 to pass to the -- declension function, the declension type and the autodetected subtypes. -- Note that this will not detect a given subtype if -SUBTYPE is specified for -- any subtype that would be returned, or if SUBTYPE is specified and -SUBTYPE -- is among the subtypes that would be returned (such subtypes are filtered out -- of the returned subtypes). local function detect_adj_type_and_subtype(lemma, stem2, typ, subtypes) local function base_as_stem2(base, stem2) return base, base end local function constant_base(baseval) return function(base, stem2) return baseval, nil end end local function decl12_stem2(base) return base end local function decl3_stem2(base) return make_stem2(base) end local decl12_entries = { {"us", "1&2+", {}}, {"a", "1&2+", {}}, {"um", "1&2+", {}}, {"ī", "1&2+", {"pl"}}, {"ae", "1&2+", {"pl"}}, {"a", "1&2+", {"pl"}}, -- Nearly all -os adjectives are greekA {"os", "1&2+", {"greekA", "-greekE"}}, {"os", "1&2+", {"greekE", "-greekA"}}, {"ē", "1&2+", {"greekE", "-greekA"}}, {"on", "1&2+", {"greekA", "-greekE"}}, {"on", "1&2+", {"greekE", "-greekA"}}, {"^(.*er)$", "1&2+", {"er"}}, {"^(.*ur)$", "1&2+", {"er"}}, {"^(h)ic$", "1&2+", {"ic"}}, } local decl3_entries = { {"^(.*er)$", "3-3+", {"I"}}, {"^(.*er)$", "3-3+", {}}, {"is", "3-2+", {"I"}}, {"is", "3-2+", {}}, {"e", "3-2+", {"I"}}, {"e", "3-2+", {}}, {"^(.*[ij])or$", "3-C+", {"abl_e_i", "-abl_i_e"}}, {"^(.*[ij])or$", "3-C+", {}}, {"^(min)or$", "3-C+", {"abl_e_i", "-abl_i_e"}}, {"^(min)or$", "3-C+", {}}, {"^(.*trīx)$", "3-def+", {"trix", "abl_i_e", "-abl_e_i"}}, {"^(.*trīx)$", "3-def+", {"trix"}}, {"^(.*tor)$", "3-def+", {"tor", "abl_i_e", "-abl_e_i"}}, {"^(.*tor)$", "3-def+", {"tor"}}, -- Detect -ēs as 3-1 without auto-inferring .pl if .pl -- not specified. If we don't do this, the later entry for -- -ēs will auto-infer .pl whenever -ēs is specified (which -- won't work for adjectives like quadripēs, volucripēs). -- Essentially, for declension-3 adjectives, we require that -- .pl is given if the lemma is plural. -- -- Most 3-1 adjectives are i-stem (e.g. audāx) so we require -I -- to be given with non-i-stem adjectives. The first entry below -- will apply when -I isn't given, the second when it is given. {"^(.*ēs)$", "3-1+", {"I", "abl_i_e", "-abl_e_i"}}, {"^(.*ēs)$", "3-1+", {"I"}}, {"^(.*ēs)$", "3-1+", {"par", "abl_i_e", "-abl_e_i"}}, {"^(.*ēs)$", "3-1+", {"par"}}, {"^(.*[ij])ōrēs$", "3-C+", {"pl"}}, {"^(min)ōrēs$", "3-C+", {"pl"}}, -- If .pl with -ēs, we don't know if the adjective is 3-1, 3-2 -- or 3-3. Since 3-2 is probably the most common, we infer it -- (as well as the fact that these adjectives *are* in a sense -- 3-2 since they have a distinct neuter in -(i)a. Note that -- we have two entries here; the first one will apply unless -- -I is given, and will infer an i-stem adjective; the second -- one will apply otherwise (and infer a non-i-stem 3-1 adjective). {"ēs", "3-2+", {"pl", "I"}, base_as_stem2}, {"ēs", "3-1+", {"pl", "par"}, base_as_stem2}, -- Same for neuters. {"ia", "3-2+", {"pl", "I"}, base_as_stem2}, {"a", "3-1+", {"pl", "par"}, base_as_stem2}, -- As above for -ēs but for miscellaneous singulars. {"", "3-1+", {"I", "abl_i_e", "-abl_e_i"}}, {"", "3-1+", {"I"}}, {"", "3-1+", {"par", "abl_i_e", "-abl_e_i"}}, {"", "3-1+", {"par"}}, } local function get_subtypes_and_endings(typ, f) local subtypes_and_endings = {} for _, v in ipairs(decl3_entries) do if f(v) then v = deep_copy(v) v[2] = typ insert(subtypes_and_endings, v) end end return subtypes_and_endings end local function compare(spec) return spec[2] == typ end if typ == "+" then local base, new_stem2, rettype, new_subtypes = get_adj_type_and_subtype_by_ending(lemma, stem2, nil, subtypes, decl12_entries, decl12_stem2) if rettype then return base, new_stem2, rettype, new_subtypes else return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl3_entries, decl3_stem2) end elseif typ == "3+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl3_entries, decl3_stem2) elseif typ == "1&2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl12_entries, decl12_stem2) elseif typ == "1-1+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"a", typ, {}}, {"ae", typ, {"pl"}}, }) elseif typ == "2-2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"us", typ, {}}, {"um", typ, {}}, {"ī", typ, {"pl"}}, {"a", typ, {"pl"}}, {"os", typ, {"greek"}}, {"on", typ, {"greek"}}, {"oe", typ, {"greek", "pl"}}, }) elseif typ == "3-1+" then -- Use the specs from `decl3_entries`, but add the two i-stem 3-2+ specs when plural-only, as they're the same when 3-1+. local subtypes_and_endings = get_subtypes_and_endings(typ, function(spec) local spec1, spec2 = spec[1], spec[2] return spec2 == typ or (spec2 == "3-2+" and spec1 == "ēs" or spec1 == "ia") end) return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, subtypes_and_endings, decl3_stem2) elseif typ == "3-def+" then -- Like 3-1+ but defective in gender local subtypes_and_endings = get_subtypes_and_endings(typ, compare) insert(subtypes_and_endings, {"", typ, {"I"}}) insert(subtypes_and_endings, {"", typ, {"par"}}) return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, subtypes_and_endings, decl3_stem2) elseif typ == "3-2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"is", typ, {}}, {"e", typ, {}}, -- Detect -ēs as 3-2 without auto-inferring .pl if .pl -- not specified. If we don't do this, the later entry for -- -ēs will auto-infer .pl whenever -ēs is specified (which -- won't work for adjectives like isoscelēs). Essentially, -- for declension-3 adjectives, we require that .pl is given -- if the lemma is plural. {"ēs", typ, {}}, {"ēs", typ, {"pl"}}, {"ia", typ, {"pl"}}, }, decl3_stem2) elseif typ == "3-3+" or typ == "3-P+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"ēs", typ, {"pl"}, base_as_stem2}, {"ia", typ, {"pl"}, base_as_stem2}, {"", typ, {}}, }, decl3_stem2) elseif typ == "3-C+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, get_subtypes_and_endings(typ, compare), decl3_stem2) elseif typ == "irreg+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"^(duo)$", typ, {"pl"}}, {"^(ambō)$", typ, {"pl"}}, {"^(mīll?ia)$", typ, {"N", "pl"}, constant_base("mīlle")}, -- match ea {"^(ea)$", typ, {}, constant_base("is")}, -- match id {"^(id)$", typ, {}, constant_base("is")}, -- match plural eī, iī {"^([ei]ī)$", typ, {"pl"}, constant_base("is")}, -- match plural ea, eae {"^(eae?)$", typ, {"pl"}, constant_base("is")}, -- match eadem {"^(eadem)$", typ, {}, constant_base("īdem")}, -- match īdem, idem {"^([īi]dem)$", typ, {}, constant_base("īdem")}, -- match plural īdem {"^(īdem)$", typ, {"pl"}}, -- match plural eadem, eaedem {"^(eae?dem)$", typ, {"pl"}, constant_base("īdem")}, -- match illa, ipsa, ista; it doesn't matter if we overmatch because -- we'll get an error as we use the stem itself in the returned base {"^(i[lps][lst])a$", typ, {}, function(base, stem2) return base .. "e", nil end}, -- match illud, istud; as above, it doesn't matter if we overmatch {"^(i[ls][lt])ud$", typ, {}, function(base, stem2) return base .. "e", nil end}, -- match ipsum {"^(ipsum)$", typ, {}, constant_base("ipse")}, -- match plural illī, ipsī, istī; as above, it doesn't matter if we -- overmatch {"^(i[lps][lst])ī$", typ, {"pl"}, function(base, stem2) return base .. "e", nil end}, -- match plural illa, illae, ipsa, ipsae, ista, istae; as above, it -- doesn't matter if we overmatch {"^(i[lps][lst])ae?$", typ, {"pl"}, function(base, stem2) return base .. "e", nil end}, -- Detect quī as non-plural unless .pl specified. {"^(quī)$", typ, {}}, -- Otherwise detect quī as plural. {"^(quī)$", typ, {"pl"}}, -- Same for quae. {"^(quae)$", typ, {}, constant_base("quī")}, {"^(quae)$", typ, {"pl"}, constant_base("quī")}, {"^(quid)$", typ, {}, constant_base("quis")}, {"^(quod)$", typ, {}, constant_base("quī")}, {"^(qui[cd]quid)$", typ, {}, constant_base("quisquis")}, {"^(quīquī)$", typ, {"pl"}, constant_base("quisquis")}, {"^(quaequae)$", typ, {"pl"}, constant_base("quisquis")}, -- match all remaining lemmas in lemma form {"", typ, {}}, }) elseif typ == "indecl+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"", typ, {"both"}}, {"", typ, {"sg"}}, {"", typ, {"pl"}}, }) else -- 0+ return lemma, nil, typ, {} end end local noun_lb = { nom_sg = "sg.", gen_sg = "sg.", dat_sg = "sg.", acc_sg = "sg.", abl_sg = "sg.", voc_sg = "sg.", loc_sg = "sg.", nom_pl = "pl.", gen_pl = "pl.", dat_pl = "pl.", acc_pl = "pl.", abl_pl = "pl.", voc_pl = "pl.", loc_pl = "pl." } function export.sust(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {requerido=true}, ["alt"] = {}, ["num"] = {por_defecto = ""}, ["núm"] = {alias_de = "num"}, ["nota"] = {}, } for form,_ in pairs(noun_lb) do params[form] = {lista=true} end local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) local tpalabras = {} for _,p in ipairs(args) do p = match(p, "^(.-);") or p local a, b = match(p, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local r1 = match(a, "^([^/]+)/") if not r1 then r1 = a end if r1 == "idem" or r1 == "īdem" then -- REVISAR: parche para idem que internamente lo declina como si fuera "i" insert(tpalabras, "ī") else insert(tpalabras, r1) end end local palabras, separadores = separar_palabras(title, concat(tpalabras, "-")) local L = #palabras local M = 1 local declinfo local titles = {} local cats = {} local genero local nosg, nopl = true, true for _,arg in ipairs(args) do local formas = {} for subarg in gsplit(arg, ";") do local types = {} local a, b = match(subarg, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local c, d = match(b, "^(.-)%.(.*)$") if d then for spec in gsplit(d, "%.") do spec = gsub(spec, "(.)%-", "%1_") types[spec] = true end end c = c or b local r = split(a, "/") local r1, r2, detected_subtypes = detect_noun_subtype(r[1], r[2], c, types) for _, subtype in ipairs(detected_subtypes) do if types["-" .. subtype] then -- if a "cancel subtype" spec is given, remove the cancel spec -- and don't apply the subtype types["-" .. subtype] = nil elseif (subtype == "M" or subtype == "F" or subtype == "N") and (types.M or types.F or types.N) then -- if gender already specified, don't create conflicting gender spec elseif (subtype == "sg" or subtype == "pl" or subtype == "both") and (types.sg or types.pl or types.both) then -- if number restriction already specified, don't create conflicting -- number restriction spec else types[subtype] = true end end if not genero then if types.M then genero = "m" end if types.N then genero = "n" end if types.F then genero = "f" end end local es_adj if not r1 and genero then local typ r1, r2, typ, detected_subtypes = detect_adj_type_and_subtype(r[1], r[2], c, types) if r1 then c = typ es_adj = true end end assert(r1, "forma no reconocida: "..r[1]) local cb = es_adj and adj_decl[c] or noun_decl[c] assert(cb, "Especifique el tipo de sustantivo correcto en el primer parámetro") local data = {forms={}, types=types, pos="", subtitles="", notes="", categories=cats, title=titles, loc=types.loc, num=args.num} cb(data, {r1, r2}) if es_adj then local forms_ = {} for form,arr in pairs(data.forms) do local f1, f2 = form:match("^(.*)(_"..genero..")$") if f1 then forms_[f1] = arr end end data.forms = forms_ end if not types.sg then nopl = false end if not types.pl then nosg = false end if types.sg then for key,_ in pairs(data.forms) do if key:find("_pl") then data.forms[key] = {} end end end if types.pl then for key,_ in pairs(data.forms) do if key:find("_sg") then data.forms[key] = {} end end end merge_forms(formas, data.forms, noun_lb) end if not declinfo then declinfo = formas else declinfo = combinar_copulativa(declinfo, formas, separadores[M]) M = M + 1 end end if declinfo["loc_sg"] and #declinfo["loc_sg"] == 0 then declinfo["loc_sg"] = nil end if declinfo["loc_pl"] and #declinfo["loc_pl"] == 0 then declinfo["loc_pl"] = nil end if nosg == false then nosg = find(args["num"], "p") end if nopl == false then nopl = find(args["num"], "s") end local forms = sobreescribir_formas(declinfo, args, false, {}) comprobar_defectivo(forms, {}) forms = desactivar_formas(forms, function (form) return (form:find("pl$") and nopl) or (form:find("sg$") and nosg) end ) local raiz_nom = f(forms["nom_sg"][1] or forms["nom_pl"][1] or "?") local raiz_gen = f(forms["gen_sg"][1] or forms["gen_pl"][1] or "?") forms = agregar_enlaces(forms, title, normalizar_enlace) forms = formatear_formas(forms, noun_lb) local t = {} insert(t, {{""}, {"Singular"}, {"Plural"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_sg"], forms["nom_pl"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_sg"], forms["gen_pl"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_sg"], forms["dat_pl"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_sg"], forms["acc_pl"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_sg"], forms["abl_pl"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_sg"], forms["voc_pl"]}) if (forms["loc_sg"] and forms["loc_sg"][1]) or (forms["loc_pl"] and forms["loc_pl"][1]) then insert(t, {{"Locativo", header=true, color=COLOR_H}, forms["loc_sg"], forms["loc_pl"]}) end insert(t, {{args["nota"] or "", colspan=3}}) return renderizar_tabla( frame, "'''Declinación de ''"..raiz_nom..", "..raiz_gen.."'''''&emsp;&emsp;tipo: "..concat(titles, ", "), t, ns == 0 and cats or {} ) end local adj_lb = { nom_sg_m = "m.", nom_sg_n = "n.", nom_sg_f = "f.", nom_pl_m = "m.", nom_pl_n = "n.", nom_pl_f = "f.", gen_sg_m = "m.", gen_sg_n = "n.", gen_sg_f = "f.", gen_pl_m = "m.", gen_pl_n = "n.", gen_pl_f = "f.", dat_sg_m = "m.", dat_sg_n = "n.", dat_sg_f = "f.", dat_pl_m = "m.", dat_pl_n = "n.", dat_pl_f = "f.", acc_sg_m = "m.", acc_sg_n = "n.", acc_sg_f = "f.", acc_pl_m = "m.", acc_pl_n = "n.", acc_pl_f = "f.", abl_sg_m = "m.", abl_sg_n = "n.", abl_sg_f = "f.", abl_pl_m = "m.", abl_pl_n = "n.", abl_pl_f = "f.", voc_sg_m = "m.", voc_sg_n = "n.", voc_sg_f = "f.", voc_pl_m = "m.", voc_pl_n = "n.", voc_pl_f = "f.", } function export.adj(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {requerido=true}, ["alt"] = {}, ["num"] = {por_defecto = ""}, ["núm"] = {alias_de="num"}, ["gen"] = {por_defecto="mfn"}, ["nota"] = {}, } for form,_ in pairs(adj_lb) do params[form] = {lista=true} end params["dat_pl"] = {lista=true} params["abl_pl"] = {lista=true} params["loc_pl"] = {lista=true} local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) if args["dat_pl"][1] then args["dat_pl_m"] = deep_copy(args["dat_pl"]) args["dat_pl_n"] = deep_copy(args["dat_pl"]) args["dat_pl_f"] = deep_copy(args["dat_pl"]) end if args["abl_pl"][1] then args["abl_pl_m"] = deep_copy(args["abl_pl"]) args["abl_pl_n"] = deep_copy(args["abl_pl"]) args["abl_pl_f"] = deep_copy(args["abl_pl"]) end if args["loc_pl"][1] then args["loc_pl_m"] = deep_copy(args["loc_pl"]) args["loc_pl_n"] = deep_copy(args["loc_pl"]) args["loc_pl_f"] = deep_copy(args["loc_pl"]) end args["dat_pl"] = nil args["abl_pl"] = nil args["loc_pl"] = nil assert(not find(title, " "), "locuciones no soportadas aún") -- REVISAR local tpalabras = {} for _,p in ipairs(args) do p = match(p, "^(.-);") or p local a, b = match(p, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local r1 = match(a, "^([^/]+)/") if not r1 then r1 = a end if r1 == "idem" or r1 == "īdem" then -- REVISAR: parche para idem que internamente lo declina como si fuera "i" insert(tpalabras, "ī") else insert(tpalabras, r1) end end local palabras, separadores = separar_palabras(title, concat(tpalabras, "-")) local L = #palabras local M = 1 local declinfo local titles = {} local cats = {} local nosg, nopl = true, true for _,arg in ipairs(args) do local formas = {} for subarg in gsplit(arg, ";") do local types = {} local a, b = match(subarg, "^(.-)%.(.*)$") a = a or subarg b = b or "+" local c, d = match(b, "^(.-)%.(.*)$") if d then for spec in gsplit(d, "%.") do spec = gsub(spec, "(.)%-", "%1_") types[spec] = true end end c = c or b local r = split(a, "/") local r1, r2, typ, detected_subtypes = detect_adj_type_and_subtype(r[1], r[2], c, types) for _, subtype in ipairs(detected_subtypes) do if types["-" .. subtype] then -- if a "cancel subtype" spec is given, remove the cancel spec -- and don't apply the subtype types["-" .. subtype] = nil elseif (subtype == "M" or subtype == "F" or subtype == "N") and (types.M or types.F or types.N) then -- if gender already specified, don't create conflicting gender spec elseif (subtype == "sg" or subtype == "pl" or subtype == "both") and (types.sg or types.pl or types.both) then -- if number restriction already specified, don't create conflicting -- number restriction spec else types[subtype] = true end end local cb = adj_decl[typ] assert(cb, "Especifique el tipo de sustantivo correcto en el primer parámetro") local data = {forms={}, types=types, pos="", subtitles="", notes="", categories=cats, title=titles, loc=types.loc, num=args.num} cb(data, {r1, r2}) local formas_ = {} -- necesario crear otro arreglo para no modificar las claves durante la iteración for form,arr in pairs(data.forms) do local pref = match(form, "^(.*)_m$") if pref and not data.forms[pref.."_f"] then formas_[pref.."_f"] = deep_copy(arr) end if pref and not data.forms[pref.."_n"] then formas_[pref.."_n"] = deep_copy(arr) end formas_[form] = arr end data.forms = formas_ if not types.sg then nopl = false end if not types.pl then nosg = false end if types.sg then for key,_ in pairs(data.forms) do if key:find("_pl") then data.forms[key] = {} end end end if types.pl then for key,_ in pairs(data.forms) do if key:find("_sg") then data.forms[key] = {} end end end merge_forms(formas, data.forms, adj_lb) end if not declinfo then declinfo = formas else declinfo = combinar_copulativa(declinfo, formas, separadores[M]) M = M + 1 end end if nosg == false then nosg = find(args["num"], "p") end if nopl == false then nopl = find(args["num"], "s") end local m = find(args["gen"], "m") local fem = find(args["gen"], "f") local n = find(args["gen"], "n") local forms = sobreescribir_formas(declinfo, args, false, {}, adj_lb) comprobar_defectivo(forms) forms = desactivar_formas(forms, function (form) return (form:find("pl") and nopl) or (form:find("sg") and nosg) or (form:find("m$") and not m) or (form:find("f$") and not fem) or (form:find("n$") and not n) end ) local raiz_m = f(forms["nom_sg_m"][1] or forms["nom_pl_m"][1] or "?") local raiz_f = f(forms["nom_sg_f"][1] or forms["nom_pl_f"][1] or "?") local raiz_n = f(forms["nom_sg_n"][1] or forms["nom_pl_n"][1] or "?") forms = agregar_enlaces(forms, title, normalizar_enlace) forms = formatear_formas(forms, adj_lb) local t = {} insert(t, {{"Singular", colspan=4}, header=true, color=COLOR_H}) insert(t, {{""}, {"Masculino"}, {"Femenino"}, {"Neutro"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_sg_m"], forms["nom_sg_f"], forms["nom_sg_n"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_sg_m"], forms["gen_sg_f"], forms["gen_sg_n"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_sg_m"], forms["dat_sg_f"], forms["dat_sg_n"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_sg_m"], forms["acc_sg_f"], forms["acc_sg_n"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_sg_m"], forms["abl_sg_f"], forms["abl_sg_n"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_sg_m"], forms["voc_sg_f"], forms["voc_sg_n"]}) insert(t, {{"Plural", colspan=4, header=true, color=COLOR_H}}) insert(t, {{""}, {"Masculino"}, {"Femenino"}, {"Neutro"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_pl_m"], forms["nom_pl_f"], forms["nom_pl_n"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_pl_m"], forms["gen_pl_f"], forms["gen_pl_n"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_pl_m"], forms["dat_pl_f"], forms["dat_pl_n"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_pl_m"], forms["acc_pl_f"], forms["acc_pl_n"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_pl_m"], forms["abl_pl_f"], forms["abl_pl_n"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_pl_m"], forms["voc_pl_f"], forms["voc_pl_n"]}) insert(t, {{args["nota"] or "", colspan=4}}) return renderizar_tabla( frame, "'''Declinación de ''"..raiz_m..", "..raiz_f..", "..raiz_n.."'''''&emsp;&emsp;tipo: "..concat(titles, ", "), t, ns == 0 and cats or {} ) end local EGO, TU, IS, NOS, VOS, EI = 1, 2, 3, 4, 5, 6 local tostr = {"1", "2", "3", "4", "5", "6"} local PRONOMBRES = {"ego", "tū", "is, ea, id", "nōs", "vōs", "eī, eae, ea"} local PRONOMBRES_SUBJ = {"ut ego", "ut tū", "ut is, ut ea, ut id", "ut nōs", "ut vōs", "ut eī, ut eae, ut ea"} local PRONOMBRES_IMP = {"―", "(tū)", "(is, ea, id)", "―", "(vōs)", "(eī, eae, ea)"} local IMPERSONALES = {"", "", "(id)", "", "", ""} local function obtener_pronombre(forma, impers) local conj, p = match(forma, "^(.*)(%d)$") if not p then return nil end p = tonumber(p) if impers then return IMPERSONALES[p] else if find(conj, "^subj") then return PRONOMBRES_SUBJ[p] end if find(conj, "^imper") then return PRONOMBRES_IMP[p] end return PRONOMBRES[p] end end local sufijos = { ["1"] = { inf_act = {"āre","isse"}, inf_pas = {"ārī"}, part_act = {"āns","ūrus"}, part_pas = {"andus","us"}, ger = {"andī","andō","andum"}, sup = {"um","ū"}, ind_pres = {"ō","ās","at","āmus","ātis","ant"}, ind_imp = {"ābam","ābās","ābat","ābāmus","ābātis","ābant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"ābō","ābis","ābit","ābimus","ābitis","ābunt"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","āris","ātur","āmur","āminī","antur", nil,"āre"}, ind_imp_pas = {"ābar","ābāris","ābātur","ābāmur","ābāminī","ābantur", nil,"ābāre"}, ind_fut_pas = {"ābor","āberis","ābitur","ābimur","ābiminī","ābuntur", nil,"ābere"}, subj_pres = {"em","ēs","et","ēmus","ētis","ent"}, subj_imp = {"ārem","ārēs","āret","ārēmus","ārētis","ārent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"er","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, subj_imp_pas = {"ārer","ārēris","ārētur","ārēmur","ārēminī","ārentur", nil,"ārēre"}, imper_pres = {nil,"ā",nil,nil,"āte",nil}, imper_fut = {nil,"ātō","ātō",nil,"ātōte","antō"}, imper_pres_pas = {nil,"āre",nil,nil,"āminī",nil}, imper_fut_pas = {nil,"ātor","ātor",nil,nil,"antor"}, }, ["2"] = { inf_act = {"ēre","isse"}, inf_pas = {"ērī"}, part_act = {"ēns","ūrus"}, part_pas = {"endus","us"}, ger = {"endī","endō","endum"}, sup = {"um","ū"}, ind_pres = {"eō","ēs","et","ēmus","ētis","ent"}, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"ēbō","ēbis","ēbit","ēbimus","ēbitis","ēbunt"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"eor","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", nil,"ēbāre"}, ind_fut_pas = {"ēbor","ēberis","ēbitur","ēbimur","ēbiminī","ēbuntur", nil,"ēbere"}, subj_pres = {"eam","eās","eat","eāmus","eātis","eant"}, subj_imp = {"ērem","ērēs","ēret","ērēmus","ērētis","ērent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ear","eāris","eātur","eāmur","eāminī","eantur", nil,"eāre"}, subj_imp_pas = {"ērer","ērēris","ērētur","ērēmur","ērēminī","ērentur", nil,"ērēre"}, imper_pres = {nil,"ē",nil,nil,"ēte",nil}, imper_fut = {nil,"ētō","ētō",nil,"ētōte","entō"}, imper_pres_pas = {nil,"ēre",nil,nil,"ēminī",nil}, imper_fut_pas = {nil,"ētor","ētor",nil,nil,"entor"}, }, ["3"] = { -- 3 (comparar [[capio]] con [[lego]], las raíces con capi- y leg- pero hay que eliminar la doble ii) inf_act = {"ere","isse"}, inf_pas = {"ī"}, part_act = {"ēns","ūrus"}, part_pas = {"endus","us"}, ger = {"endī","endō","endum"}, sup = {"um","ū"}, ind_pres = {"ō","is","it","imus","itis","unt"}, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"am","ēs","ēt","ēmus","ētis","ent"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","eris","itur","imur","iminī","untur", nil,"ere"}, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", nil,"ēbāre"}, ind_fut_pas = {"ar","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, subj_pres = {"am","ās","at","āmus","ātis","ant"}, subj_imp = {"erem","erēs","eret","erēmus","erētis","erent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ar","āris","ātur","āmur","āminī","antur", nil,"āre"}, subj_imp_pas = {"erer","erēris","erētur","erēmur","erēminī","erentur", nil,"erēre"}, imper_pres = {nil,"e",nil,nil,"ite",nil}, imper_fut = {nil,"itō","itō",nil,"itōte","untō"}, imper_pres_pas = {nil,"ere",nil,nil,"iminī",nil}, imper_fut_pas = {nil,"itor","itor",nil,nil,"untor"}, }, ["3/4"] = { inf_act = {"ere","isse","īre","isse"}, inf_pas = {"ī","īrī"}, part_act = {"ēns","iēns","ūrus"}, part_pas = {"endus","iendus","us"}, ger = {"endī","endō","endum","iendī","iendō","iendum"}, sup = {"um","ū"}, ind_pres = {"ō","is","it","imus","itis","unt", "iō","īs",nil,"īmus","ītis","iunt" }, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant", "iēbam","iēbās","iēbat","iēbāmus","iēbātis","iēbant" }, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"am","ēs","ēt","ēmus","ētis","ent", "iam","iēs","iet","iēmus","iētis","ient" }, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","eris","itur","imur","iminī","untur", "ior","ere","ītur","īmur","īminī","iuntur", nil,"īris",nil,nil,nil,nil, nil,"īre" }, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", "iēbar","ēbāre","iēbātur","iēbāmur","iēbāminī","iēbantur", nil,"iēbāris",nil,nil,nil,nil, nil,"iēbāre" }, ind_fut_pas = {"ar","ēris","ētur","ēmur","ēminī","entur", "iar","ēre","iētur","iēmur","iēminī","ientur", nil,"iēris",nil,nil,nil,nil, nil,"iēre" }, subj_pres = {"am","ās","at","āmus","ātis","ant", "iam","iās","iat","iāmus","iātis","iant", }, subj_imp = {"erem","erēs","eret","erēmus","erētis","erent", "īrem","īrēs","īret","īrēmus","īrētis","īrent" }, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ar","āris","ātur","āmur","āminī","antur", "iar","āre","iātur","iāmur","iāminī","iantur", nil,"iāris",nil,nil,nil,nil, nil,"iāre" }, subj_imp_pas = {"erer","erēris","erētur","erēmur","erēminī","erentur", "īrer","erēre","īrētur","īrēmur","īrēminī","īrentur", nil,"īrēris",nil,nil,nil,nil, nil,"īrēre" }, imper_pres = {nil,"e",nil,nil,"ite",nil, nil,"ī",nil,nil,"īte",nil }, imper_fut = {nil,"itō","itō",nil,"itōte","untō", nil,"ītō","ītō",nil,"ītōte","iuntō" }, imper_pres_pas = {nil,"ere",nil,nil,"iminī",nil, nil,"īre",nil,nil,"īminī",nil }, imper_fut_pas = {nil,"itor","itor",nil,nil,"untor", nil,"ītor","ītor",nil,nil,"iuntor" }, }, ["4"] = { inf_act = {"īre","isse"}, inf_pas = {"īrī"}, part_act = {"iēns","ūrus"}, part_pas = {"iendus","us"}, ger = {"iendī","iendō","iendum"}, sup = {"um","ū"}, ind_pres = {"iō","īs","it","īmus","ītis","iunt"}, ind_imp = {"iēbam","iēbās","iēbat","iēbāmus","iēbātis","iēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"iam","iēs","iet","iēmus","iētis","ient"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"ior","īris","ītur","īmur","īminī","iuntur", nil,"īre"}, ind_imp_pas = {"iēbar","iēbāris","iēbātur","iēbāmur","iēbāminī","iēbantur", nil,"iēbāre"}, ind_fut_pas = {"iar","iēris","iētur","iēmur","iēminī","ientur", nil,"iēre"}, subj_pres = {"iam","iās","iat","iāmus","iātis","iant"}, subj_imp = {"īrem","īrēs","īret","īrēmus","īrētis","īrent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"iar","iāris","iātur","iāmur","iāminī","iantur", nil,"iāre"}, subj_imp_pas = {"īrer","īrēris","īrētur","īrēmur","īrēminī","īrentur", nil,"īrēre"}, imper_pres = {nil,"ī",nil,nil,"īte",nil}, imper_fut = {nil,"ītō","ītō",nil,"ītōte","iuntō"}, imper_pres_pas = {nil,"īre",nil,nil,"īminī",nil}, imper_fut_pas = {nil,"ītor","ītor",nil,nil,"iuntor"}, } } local formas_no_personales = { inf_act = true, inf_pas = true, part_act = true, part_pas = true, ger = true, sup = true, } local formas_personales = { ind_pres = true, ind_imp = true, ind_perf = true, ind_pluperf = true, ind_fut = true, ind_fut_perf = true, ind_fut_sig = true, ind_pres_pas = true, ind_imp_pas = true, ind_fut_pas = true, subj_pres = true, subj_imp = true, subj_perf = true, subj_pluperf = true, subj_aor_sig = true, subj_pres_pas = true, subj_imp_pas = true, imper_pres = true, imper_fut = true, imper_pres_pas = true, imper_fut_pas = true, } local formas = merge(formas_no_personales, formas_personales) local verbos_irregulares = { {"aiō", {"aiō", "aiiō", "aijō", "ajō"}, { desactivar = {"inf_pas","part_pas","ger","sup","ind_pluperf","ind_fut","ind_fut_perf", "ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_perf","subj_pluperf","subj_pres_pas", "subj_imp_pas","imper_fut","imper_pres_pas","imper_fut_pas" }, conj = "3", nucleopres = {"ai"}, nucleoperf = {"a"}, nucleosup = {}, nucleosigm = {}, inf_act = {"aiere"}, ind_pres = {nil,nil,nil,{}}, ind_perf = {{},nil,nil,{},{}}, subj_pres = {nil,nil,nil,{},{}}, subj_imp = {{},{},nil,{},{},{}}, imper_pres = {{},{"ai"},{},{},{},{}}, }}, {"cedo", {"cedo"}, { desactivar = {"inf_act","inf_pas","part_act","part_pas","ger","sup","ind_pluperf","ind_pres","ind_imp","ind_perf", "ind_fut","ind_fut_perf","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres","subj_imp","subj_perf", "subj_pluperf","subj_pres_pas","subj_imp_pas","imper_fut","imper_pres_pas","imper_fut_pas" }, conj = "3", nucleopres = {}, nucleoperf = {}, nucleosup = {}, nucleosigm = {}, imper_pres = {nil,{"cedo"},nil,nil,{"cette","cedile"},nil}, }}, {"dīcō", {"dīcō"}, { conj = "3", nucleopres = {"dīc"}, nucleoperf = {"dīx"}, nucleosup = {"dict"}, nucleosigm = {"dīx"}, desactivar = {}, imper_pres = {nil, {"dīc", "dīce"}}, inf_pas = {"dīcī", "dīcier{L}"}, }}, {"dō", {"dō"}, { conj = "1", nucleopres = {"d"}, nucleoperf = {"ded"}, nucleosup = {"dat"}, nucleosigm = {}, desactivar = {}, inf_act = {"dare","dedisse"}, inf_pas = {"darī"}, ind_pres = {nil,nil,nil,{"damus"},{"datis"},nil}, ind_imp = {{"dabam"},{"dabās"},{"dabat"},{"dabāmus"},{"dabātis"},{"dabant"}}, ind_fut = {{"dabō"},{"dabis"},{"dabit"},{"dabimus"},{"dabitis"},{"dabunt"}}, ind_imp_pas = {{"dabar"},{"dabāris","dabāre"},{"dabātur"},{"dabāmur"},{"dabāminī"},{"dabantur"}}, ind_fut_pas = {{"dabor"},{"daberis","dabere"},{"dabitur"},{"dabimur"},{"dabiminī"},{"dabuntur"}}, subj_imp = {{"darem"},{"darēs"},{"daret"},{"darēmus"},{"darētis"},{"darent"}}, subj_imp_pas = {{"darer"},{"darēris","darēre"},{"darētur"},{"darēmur"},{"darēminī"},{"darentur"}}, imper_pres = {nil,nil,nil,nil,{"date"},nil}, imper_fut = {nil,{"datō"},{"datō"},nil,{"datōte"},{"dantō"}}, imper_pres_pas = {nil,{"dare"},nil,nil,{"daminī"},nil}, imper_fut_pas = {nil,{"dator"},{"dator"},nil,nil,{"dator"}}, }}, {"dūcō", {"dūcō"}, { conj = "3", nucleopres = {"dūc"}, nucleoperf = {"dūx"}, nucleosup = {"duct"}, nucleosigm = {}, desactivar = {}, imper_pres = {nil, {"dūc", "dūce"}}, }}, {"edō", {"edō", "ëdō"}, { conj = "3", nucleopres = {"ed"}, nucleoperf = {"ed"}, nucleosup = {""}, nucleosigm = {}, desactivar = {}, inf_act = {"edere","ēsse"}, part_act = {"edēns","ēsūrus","ēssūrus","ēstūrus"}, part_pas = {"edendus","edundus","ēsus","ēssus","ēstus"}, sup = {"ēsum","ēssum","ēstum","ēsū","ēssū","ēstū"}, ind_pres = {nil,{"edis","ēs"},{"edit","ēst"},nil,{"editis","ēstis"},nil}, ind_pres_pas = {nil,{"ederis","edere","ēssis","ēsse"},{"editur","ēstur"}}, subj_pres = {{"edam","edim"},{"edās","edīs"},{"edat","edit","ēst"},{"edāmus","edīmus"},{"edātis","edītis"},{"edant","edint"}}, subj_imp = {{"ederem","ēssem"},{"ederēs","ēssēs"},{"ederet","ēsset"},{"ederēmus","ēssēmus"},{"ederētis","ēssētis"},{"ederent","ēssent"}}, subj_imp_pas = {{"ederer","ēsser"},{"ederēris","ederēre","ēssēris","ēssēre"},{"ederetur","ēssetur"},{"ederēmur","ēssēmur"},{"ederēminī","ēssēminī"},{"ederentur","ēssentur"}}, imper_pres = {nil,{"ede","ēs"},nil,nil,{"edite","ēste"},nil}, imper_fut = {nil,{"editō","ēstō"},{"editō","ēstō"},nil,{"editōte","ēstōte"},{"eduntō"}}, imper_pres_pas = {nil,{"edere","ēsse"},nil,nil,{"ediminī"},nil}, imper_fut_pas = {nil,{"editor","ēstor"},{"editor","ēstor"},nil,nil,{"eduntor"}}, }}, {"eō", {"eō", "ëō"}, { conj = "4", nucleopres = {""}, nucleoperf = {""}, nucleosup = {""}, nucleosigm = {}, desactivar = {"imper_pres_pas"}, inf_act = {"īre","īsse","iisse","īvisse"}, inf_pas = {"īrī","īrier"}, part_act = {"iēns","itūrus"}, part_pas = {"eundum","itum"}, ger = {"eundī","eundō","eundum"}, sup = {"itum","itū"}, ind_pres = {{"eō"},{"īs"},{"it"},{"īmus"},{"ītis"},{"eunt"}}, ind_imp = {{"ībam"},{"ībās"},{"ībat"},{"ībāmus"},{"ībātis"},{"ībant"}}, ind_perf = {{"iī","īvī"},{"īstī","iistī","īvistī"},{"iit","īvit"},{"iimus","īvimus"},{"īstis","iistis","īvistis"},{"iērunt","iēre","īvērunt","īvēre"}}, ind_pluperf = {{"ieram","īveram"},{"ierās","īverās"},{"ierat","īverat"},{"ierāmus","īverāmus"},{"ierātis","īverātis"},{"ierant","īverant"}}, ind_fut = {{"ībō"},{"ībis"},{"ībit"},{"ībimus"},{"ībitis"},{"ībunt"}}, ind_fut_perf = {{"ierō","īverō"},{"ieris","īveris"},{"ierit","īverit"},{"ierimus","īverimus"},{"ieritis","īveritis"},{"ierint","īverint"}}, ind_fut_sig = {nil,nil,nil,nil,nil,nil}, ind_pres_pas = {{},{},{"ītur"},{},{},{}}, ind_imp_pas = {{},{},{"ībātur"},{},{},{}}, ind_fut_pas = {{},{},{"ībitur"},{},{},{}}, subj_pres = {{"eam"},{"eās"},{"eat"},{"eāmus"},{"eātis"},{"eant"}}, subj_imp = {{"īrem"},{"īrēs"},{"īret"},{"īrēmus"},{"īrētis"},{"īrent"}}, subj_perf = {{"ierim","īverim"},{"ierīs","īverīs"},{"ierit","īverit"},{"ierīmus","īverīmus"},{"ierītis","īverītis"},{"ierint","īverint"}}, subj_pluperf = {{"īssem","iissem","īvissem"},{"īssēs","iissēs","īvissēs"},{"īsset","iisset","īvisset"},{"īssēmus","iissēmus","īvissēmus"},{"īssētis","iissētis","īvissētis"},{"īssent","iissent","īvissent"}}, subj_aor_sig = {nil,nil,nil,nil,nil,nil}, subj_pres_pas = {{},{},{"eātur"},{},{},{}}, subj_imp_pas = {{},{},{"īrētur"},{},{},{}}, imper_pres = {nil,nil,nil,nil,nil,nil}, imper_fut = {nil,nil,nil,nil,nil,{"euntō"}}, imper_fut_pas = {nil,{},nil,nil,nil,{}}, }}, {"faciō", {"faciō"}, { conj = "3", nucleopres = {"faci"}, nucleoperf = {"fax"}, nucleosup = {"fact"}, nucleosigm = {"fax","faxs","facs"}, desactivar = {}, ind_pres_pas = {{"fīō"},{"fīs"},{"fit"},{"fīmus"},{"fītis"},{"fīunt"}}, ind_imp_pas = {{"fīēbam"},{"fīēbās"},{"fīēbat"},{"fīēbāmus"},{"fīēbātis"},{"fīēbant"}}, ind_fut_pas = {{"fīam"},{"fīēs"},{"fīet"},{"fīēmus"},{"fīētis"},{"fīent"}}, subj_pres_pas = {{"fīam"},{"fīās"},{"fīat"},{"fīāmus"},{"fīātis"},{"fīant"}}, subj_imp_pas = {{"fierem"},{"fierēs"},{"fieret"},{"fierēmus"},{"fierētis"},{"fierent"}}, imper_pres = {nil,{"fac","face"},nil,nil,nil,nil}, imper_pres_pas = {nil,{"fī"},nil,nil,{"fīte"},nil}, imper_fut_pas = {nil,{"fītō"},{"fītō"},nil,{"fītōte"},{"fīuntō"}}, }}, {"ferō", {"ferō"}, { conj = "3", nucleopres = {"fer"}, nucleoperf = {"tul"}, nucleosup = {"lāt"}, nucleosigm = {}, desactivar = {}, inf_pas = {"ferrī"}, ind_pres = {nil,{"fers"},{"fert"},nil,{"fertis"}}, ind_pres_pas = {nil,{"ferris","ferre"}}, subj_imp = {{"ferrem"},{"ferrēs"},{"ferret"},{"ferrēmus"},{"ferrētis"},{"ferrent"}}, subj_imp_pas = {{"ferrer"},{"ferrēris","ferrēre"},{"ferrētur"},{"ferrēmur"},{"ferrēminī"},{"ferrentur"}}, imper_pres = {nil,{"fer"},nil,nil,{"ferte"},nil}, imper_pres_pas = {nil,{"ferre"},nil,nil,nil,nil}, imper_fut = {nil,{"fertō"},{"fertō"},nil,{"fertōte"},{"feruntō"}}, imper_fut_pas = {nil,{"fertor"},{"fertor"},nil,nil,nil}, }}, {"fīō", {"fīō"}, { conj = "3", nucleopres = {"fī"}, nucleoperf = {}, nucleosup = {"fact"}, nucleosigm = {}, semidep = true, desactivar = {}, ind_pres = {{"fīō"},{"fīs"},{"fit"},{"fīmus"},{"fītis"},{"fīunt"}}, imper_pres = {nil,{"fī"},nil,nil,{"fīte"},nil}, imper_fut = {nil,{"fītō"},{"fītō"},nil,{"fītōte"},{"feruntō"}}, }}, {"possum", {"possum"}, { conj = "3", nucleopres = {"pot"}, nucleoperf = {"pot"}, nucleosup = {}, nucleosigm = {}, pres = "possō", desactivar = {"inf_pas","part_pas","ger","sup","ind_pres_pas","ind_imp_pas","ind_fut_pas", "subj_pres_pas","subj_imp_pas","imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"posse","potesse{†}"}, part_act = {"potēns"}, ind_pres = {{"possum"},{"potes"},{"potest"},{"possumus"},{"potestis"},{"possunt"}}, ind_imp = {{"poteram"},{"poterās"},{"poterat"},{"poterāmus"},{"poterātis"},{"poterant"}}, ind_fut = {{"poterō"},{"poteris","potere"},{"poterit"},{"poterimus"},{"poteritis"},{"poterunt"}}, ind_perf = {{"potuī"},{"potuistī"},{"potuit"},{"potuimus"},{"potuistis"},{"potuērunt","potuēre"}}, ind_pluperf = {{"potueram"},{"potuerās"},{"potuerat"},{"potuerāmus"},{"potuerātis"},{"potuerant"}}, ind_fut_perf = {{"potuerō"},{"potueris"},{"potuerit"},{"potuerimus"},{"potueritis"},{"potuerunt"}}, subj_pres = {{"possem"},{"possēs"},{"possēt"},{"possēmus"},{"possētis"},{"possent"}}, subj_imp = {{"possim"},{"possīs"},{"possit"},{"possīmus"},{"possītis"},{"possint"}}, subj_perf = {{"potuerim"},{"potuerīs"},{"potuerit"},{"potuerīmus"},{"potuerītis"},{"potuerint"}}, subj_pluperf = {{"potuissem"},{"potuissēs"},{"potuisset"},{"potuissēmus"},{"potuissētis"},{"potuissent"}}, }}, {"sum", {"sum"}, { conj = "3", nucleopres = {"s"}, nucleoperf = {"fu"}, nucleosup = {}, nucleosigm = {}, pres = "sō", desactivar = {"inf_pas","part_pas","ger","sup","ind_pres_pas","ind_imp_pas","ind_fut_pas", "subj_pres_pas","subj_imp_pas","imper_pres_pas","imper_fut_pas"}, inf_act = {"esse"}, part_act = {"futūrus"}, ind_pres = {{"sum"},{"es"},{"est"},{"sumus"},{"estis"},{"sunt"}}, ind_imp = {{"eram"},{"erās"},{"erat"},{"erāmus"},{"erātis"},{"erant"}}, ind_fut = {{"erō"},{"eris","ere"},{"erit"},{"erimus"},{"eritis"},{"erunt"}}, subj_pres = {{"sim","siem","fuam{†}"},{"sīs","siēs","fuās{†}"},{"sit","siet","fuat{†}"},{"sīmus","siēmus","fuāmus{†}"},{"sītis","siētis","fuātis{†}"},{"sint","sient","fuant{†}"}}, subj_imp = {{"essem","forem"},{"essēs","forēs"},{"esset","foret"},{"essēmus","forēmus"},{"essētis","forētis"},{"essent","forent"}}, imper_pres = {nil,{"es"},nil,nil,{"este"},nil}, imper_fut = {nil,{"estō"},{"estō"},nil,{"estōte"},nil}, }}, {"mālō", {"mālō"}, { conj = "3", nucleopres = {"māl"}, nucleoperf = {"mālu"}, nucleosup = {}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"mālle","māluisse"}, ind_pres = {{"mālō"},{"māvīs"},{"māvult"},{"mālumus"},{"māvultis"},{"mālunt"}}, subj_pres = {{"mālim"},{"mālīs"},{"mālit"},{"mālīmus"},{"mālītis"},{"mālint"}}, subj_imp = {{"māllem"},{"māllēs"},{"māllet"},{"māllēmus"},{"māllētis"},{"māllent"}}, }}, {"nōlō", {"nōlō"}, { conj = "3", nucleopres = {"nōl"}, nucleoperf = {"nōlu"}, nucleosup = {}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"nōlle","nōluisse"}, ind_pres = {{"nōlō"},{"nōn vīs","nevīs{†}"},{"nōn vult","nōn volt","nevolt{†}"},{"nōlumus"},{"nōn vultis","nōn voltis","nōltis{†}"},{"nōlunt"}}, subj_pres = {{"nōlim"},{"nōlīs"},{"nōlit"},{"nōlīmus"},{"nōlītis"},{"nōlint"}}, subj_imp = {{"nōllem"},{"nōllēs"},{"nōllet"},{"nōllēmus"},{"nōllētis"},{"nōllent"}}, }}, {"volō", {"volō"}, { conj = "3", nucleopres = {"vol"}, nucleoperf = {"volu"}, nucleosup = {"volit"}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"velle","voluisse"}, ind_pres = {{"volō"},{"vīs"},{"vult","volt{†}"},{"volumus"},{"vultis","voltis{†}"},{"volunt"}}, subj_pres = {{"velim","volim{†}"},{"velīs","volīs{†}"},{"velit","volit{†}"},{"velīmus","volīmus{†}"},{"velītis","volītis{†}"},{"velint","volint{†}"}}, subj_imp = {{"vellem"},{"vellēs"},{"vellet"},{"vellēmus"},{"vellētis"},{"vellent"}}, }}, } local function combinar_prefijo_nucleosufijo(prefijo, nucleosufijo) return prefijo..nucleosufijo end local function combinar_nucleo_sufijo(nucleo, sufijo, agregar_i) if agregar_i and (not find(sufijo, "^[iī]")) and (sufijo ~= "e") and (not find(sufijo, "^er")) then return nucleo.."~i~"..sufijo end return nucleo..sufijo end local function agregar_forma(conjugado, conjinfo, forma) conjinfo[forma] = conjinfo[forma] or {} local sufijos_ = sufijos[conjinfo.conj][forma] local nucleos local prefijo if forma == "sup" then nucleos = conjinfo.nucleosup prefijo = conjinfo.prefijosup or conjinfo.prefijo elseif find(forma, "sig") then nucleos = conjinfo.nucleosigm prefijo = conjinfo.prefijosigm or conjinfo.prefijo elseif find(forma, "perf") then nucleos = conjinfo.nucleoperf prefijo = conjinfo.prefijoperf or conjinfo.prefijo else nucleos = conjinfo.nucleopres prefijo = conjinfo.prefijo end if formas_no_personales[forma] then if conjinfo[forma][1] then if nucleos and #nucleos > 0 then for _, fm in ipairs(conjinfo[forma]) do insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleosufijo(prefijo, fm).."#") end end else for _, sufijo in ipairs(sufijos_) do local nucleos_ = nucleos if forma == "inf_act" and sufijo == "isse" then nucleos_ = conjinfo.nucleoperf elseif forma == "part_act" and sufijo == "ūrus" then nucleos_ = conjinfo.nucleosup elseif forma == "part_pas" and sufijo == "us" then nucleos_ = conjinfo.nucleosup end local agregar_i = conjinfo.I and nucleos_ == conjinfo.nucleopres for _,nucleo in ipairs(nucleos_) do insert_if_not(conjugado[forma], combinar_prefijo_nucleosufijo(prefijo, combinar_nucleo_sufijo(nucleo, sufijo, agregar_i))) end end end return end for i = EGO, EI do local p = tostr[i] if conjinfo[forma][i] then if nucleos and #nucleos > 0 then for _, fm in ipairs(conjinfo[forma][i]) do insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleosufijo(prefijo, fm).."#") end end else local k = i while sufijos_[k] do local agregar_i = conjinfo.I and nucleos == conjinfo.nucleopres for j, n in ipairs(nucleos) do local x = combinar_prefijo_nucleosufijo(prefijo, combinar_nucleo_sufijo(n, sufijos_[k], agregar_i)) if conjinfo.always_sync_perf and (forma == "ind_perf" or forma == "ind_pluperf" or forma == "ind_fut_perf" or forma == "subj_perf" or forma == "subj_pluperf") then x = x:gsub("īvī", "iī") x = x:gsub("īvi", "ī") x = x:gsub("īve", "ī") x = x:gsub("īvē", "ē") end insert_if_not(conjugado[forma..p], x) end k = k + 6 end end end end local function get_subtype_by_ending(pres, conjinfo, specs) for _, spec in ipairs(specs) do local base = extract_base(pres, spec[1]) if base then for _,s in ipairs(spec[2]) do if conjinfo[s] == nil then conjinfo[s] = true end end return base end end error("Unrecognized ending for conjugation " .. conjinfo["conj"]) end local function detect_v_type_and_subtypes(conjinfo) local pres = conjinfo["v"] local conj_arg = conjinfo["conj"] pres = toNFC(pres) local base_conj_arg, auto_perf_supine = conj_arg:match("^([124]/?4?)(%+%+?)$") if base_conj_arg then if auto_perf_supine == "++" and base_conj_arg ~= "4" then error("Conjugation types 1++ and 2++ not allowed") end conj_arg = base_conj_arg end conjinfo.conj = conj_arg if conj_arg == "1" then local base = get_subtype_by_ending(pres, conjinfo, { {"ō", {}}, {"or", {"dep"}}, {"at", {"impers"}}, {"ātur", {"dep", "impers"}}, {"ī", {"nopres"}}, {"it", {"nopres", "impers"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if auto_perf_supine then if not conjinfo["nucleoperf"][1] then conjinfo["nucleoperf"][1] = base .. "āv" end if not conjinfo["nucleosup"][1] then conjinfo["nucleosup"][1] = base .. "āt" end end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "āss" end end elseif conj_arg == "2" then local base = get_subtype_by_ending(pres, conjinfo, { {"eō", {}}, {"eor", {"dep"}}, {"et", {"impers"}}, {"ētur", {"dep", "impers"}}, {"ī", {"nopres"}}, {"it", {"nopres", "impers"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if auto_perf_supine then if not conjinfo["nucleoperf"][1] then conjinfo["nucleoperf"][1] = base .. "u" end if not conjinfo["nucleosup"][1] then conjinfo["nucleosup"][1] = base .. "it" end end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "ēss" end end elseif conj_arg == "3" then local base if conjinfo.I == false then -- si explícitamente se indicó que no es del tipo -io, hay que excluir sufijos base = get_subtype_by_ending(pres, conjinfo, { {"ō", {}}, {"or", {"dep"}}, {"it", {"impers"}}, {"itur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) else base = get_subtype_by_ending(pres, conjinfo, { {"iō", {"I"}}, {"ior", {"dep", "I"}}, {"ō", {}}, {"or", {"dep"}}, {"it", {"impers"}}, {"itur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) end if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end assert(conjinfo["nucleoperf"][1], "especifique todos los núcleos para verbos de la tercera conjugación") assert(conjinfo["nucleosup"][1], "especifique todos los núcleos para verbos de la tercera conjugación") if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "ēss" end end elseif conj_arg == "3/4" then local base base = get_subtype_by_ending(pres, conjinfo, { {"iō", {"I"}}, {"ior", {"dep", "I"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "++" then conjinfo["nucleoperf"][1] = base .. "īv" conjinfo["nucleoperf"][2] = base .. "i" end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "+" then conjinfo["nucleoperf"][1] = base .. "īv" end if not conjinfo["nucleosup"][1] and auto_perf_supine then conjinfo["nucleosup"][1] = base .. "īt" end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "īss" end end elseif conj_arg == "4" then local base = get_subtype_by_ending(pres, conjinfo, { {"iō", {}}, {"ior", {"dep"}}, {"it", {"impers"}}, {"ītur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "++" then conjinfo["nucleoperf"][1] = base .. "īv" conjinfo["nucleoperf"][2] = base .. "i" end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "+" then conjinfo["nucleoperf"][1] = base .. "īv" end if not conjinfo["nucleosup"][1] and auto_perf_supine then conjinfo["nucleosup"][1] = base .. "īt" end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "īss" end end elseif conj_arg == "irreg" then for _,p in ipairs(verbos_irregulares) do for _,rx in ipairs(p[2]) do local pref, verb = match(conjinfo.v, "^(.*)("..rx..")$") if verb then conjinfo.v = verb conjinfo.prefijo = pref if conjinfo.nucleoperf[1] and conjinfo.nucleoperf[1] ~= "-" then -- [[ecfero]] conjinfo.prefijoperf = conjinfo.nucleoperf[1] conjinfo.nucleoperf = {} end if conjinfo.nucleosup[1] and conjinfo.nucleosup[1] ~= "-" then conjinfo.prefijosup = conjinfo.nucleosup[1] conjinfo.nucleosup = {} end if conjinfo.nucleosigm[1] and conjinfo.nucleosigm[1] ~= "-" then conjinfo.prefijosigm = conjinfo.nucleosigm[1] conjinfo.nucleosigm = {} end conjinfo.irreg = true conjinfo.conj = p[3].conj for k,val in pairs(p[3]) do if not conjinfo[k] or (type(conjinfo[k]) == "table" and not conjinfo[k][1]) then conjinfo[k] = deep_copy(val) end end return conjinfo end end end error("Unrecognized conjugation '" .. conj_arg .. "'") else error("Unrecognized conjugation '" .. conj_arg .. "'") end return conjinfo end function export.v(frame) local title_ = mw.title.getCurrentTitle() local tit = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {alias_de = "conj"}, [2] = {alias_de = "pres"}, [3] = {alias_de = "nucleoperf"}, [4] = {alias_de = "nucleosup"}, [5] = {alias_de = "nucleosigm"}, ["impers"] = {}, -- pas para formas pasivas solamente ["impersonal"] = {alias_de = "impers"}, ["dep"] = {tipo="bool"}, ["depon"] = {alias_de="dep"}, ["deponente"] = {alias_de="dep"}, ["semidep"] = {tipo="bool"}, ["semidepon"] = {alias_de="semidep"}, ["semideponente"] = {alias_de="semidep"}, ["sigm"] = {tipo="bool"}, ["nopasivo"] = {tipo="bool"}, ["soloperf"] = {tipo="bool"}, ["I"] = {tipo="bool"}, ["p3inf"] = {tipo="bool"}, -- sin uso ["poet_sync_perf"] = {tipo="bool"}, -- sin uso ["always_sync_perf"] = {tipo="bool"}, -- solo en [[saevio]] ["conj"] = {requerido=true}, ["pres"] = {requerido=true}, ["nucleopres"] = {lista = true}, ["nucleoperf"] = {lista = true}, ["nucleosup"] = {lista = true}, ["nucleosigm"] = {lista = true}, ["núcleopres"] = {alias_de="nucleopres"}, ["núcleoperf"] = {alias_de="nucleoperf"}, ["núcleosup"] = {alias_de="nucleosup"}, ["paradigma"] = {lista = true}, ["desactivarnucleos"] = {tipo="bool", por_defecto=true}, -- para [[-o]] ["nota"] = {}, } local conjugado = {} for forma,_ in pairs(formas_no_personales) do params[forma] = {tipo=parsear_arreglo, por_defecto={}} conjugado[forma] = {} end for forma,_ in pairs(formas_personales) do for i,s in ipairs(tostr) do params[forma..s] = {tipo=parsear_arreglo, por_defecto={}} conjugado[forma..s] = {} if i == 1 then params[forma] = {alias_de=forma..s} end end end local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) assert(not find(tit, " "), "locuciones no soportadas aún") assert(not (args["dep"] and args["semidep"]), "un verbo no puede ser deponente y semideponente a la vez") local conjinfo = { conj = args.conj, prefijo="", v=args.pres, desactivar = {}, dep=args.dep, semidep=args.semidep, sigm=args.sigm, impers=args.impers, nopasivo=args.nopasivo, soloperf=args.soloperf, I=args.I, p3inf=args.p3inf, poet_sync_perf=args.poet_sync_perf, -- sin uso always_sync_perf=args.always_sync_perf, nucleopres = deep_copy(args.nucleopres), nucleoperf = deep_copy(args.nucleoperf), nucleosup = deep_copy(args.nucleosup), nucleosigm = deep_copy(args.nucleosigm) } conjinfo = detect_v_type_and_subtypes(conjinfo) conjinfo.conj = conjinfo.conj if conjinfo.impers == true then conjinfo.impers = "3" end -- no puede ir conjinfo acá abajo porque si es un sufijo va a quedar "-" en la raíz, lo que anularía todas las formas conjugadas, tiene que venir directo de args if args.desactivarnucleos then if args.nucleopres[1] == "-" then conjinfo.nucleopres = {} end if args.nucleoperf[1] == "-" then conjinfo.nucleoperf = {} end if args.nucleosup[1] == "-" then conjinfo.nucleosup = {} end if args.nucleosigm[1] == "-" then conjinfo.nucleosigm = {} end end local es_irregular = conjinfo.irreg for _,d in ipairs(conjinfo.desactivar) do if formas_no_personales[d] then args[d] = {"no"} else args[d.."2"] = {"no"} end end for forma,_ in pairs(formas) do agregar_forma(conjugado, conjinfo, forma) end local resultante = sobreescribir_formas(conjugado, args) local mostrar_fut_sig = #resultante["ind_fut_sig1"] > 0 local mostrar_aor_sig = #resultante["subj_aor_sig1"] > 0 local defectivo = comprobar_defectivo(resultante, {"^imper", "_sig"}, tostr) local defect2 resultante, defect2 = desactivar_formas(resultante, function (form) return (conjinfo.nopasivo and form:find("_pas")) or (conjinfo.soloperf and not form:find("perf")) or (conjinfo.impers == "pas" and form:find("_pas[^3]")) or (conjinfo.impers == "pas3" and form:find("_pas[^3]")) or (conjinfo.impers == "pas36" and form:find("_pas[^36]")) end ) if defect2 then defectivo = true end -- por ahora innecesario -- local part_no_adj = {} -- for _,e in ipairs(resultante.part) do -- if (find(e, 'PART') or not find(e, 'ADJ')) and not find(e, "†") then -- insert(part_no_adj, gsub1(e, '%b{}', '')) -- end -- end local tit_pres = f(resultante["ind_pres1"][1] or "―") local tit_inf = f(resultante["inf_act"][1] or "―") local tit_perf = f(resultante["ind_perf1"][1] or "―") local tit_sup = f(resultante["sup"][1] or "―") resultante = agregar_enlaces(resultante, tit, normalizar_enlace) local es_impersonal = conjinfo.impers resultante = formatear_formas(resultante, function (x) return obtener_pronombre(x, es_impersonal) end) local impers = conjinfo.impers local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_imper, mostrar_imper if impers == "3" then fila_pronombres_ind = {"", "(id)", color=COLOR_IND, header=true, class="pc"} fila_pronombres_subj = {"", "(quod id)", color=COLOR_SUBJ, header=true, class="pc"} fila_pronombres_imper = {"", "(id)", color=COLOR_IMPER, header=true, class="pc"} cs = 2 elseif impers == "36" then error("no soportado actualmente") cs = 3 else fila_pronombres_ind = {"", PRONOMBRES[1], PRONOMBRES[2], PRONOMBRES[3], PRONOMBRES[4], PRONOMBRES[5], PRONOMBRES[6], color=COLOR_IND, header=true, class="pc"} fila_pronombres_subj = {"", PRONOMBRES_SUBJ[1], PRONOMBRES_SUBJ[2], PRONOMBRES_SUBJ[3], PRONOMBRES_SUBJ[4], PRONOMBRES_SUBJ[5], PRONOMBRES_SUBJ[6], color=COLOR_SUBJ, header=true, class="pc"} fila_pronombres_imper = {"", PRONOMBRES_IMP[1], PRONOMBRES_IMP[2], PRONOMBRES_IMP[3], PRONOMBRES_IMP[4], PRONOMBRES_IMP[5], PRONOMBRES_IMP[6], color=COLOR_IMPER, header=true, class="pc"} cs = 7 mostrar_imper = true end cs1 = cs -- math.floor(cs / 2) -- cs2 = cs - cs1 local t = {} insert(t, {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}) if impers == "3" then insert(t, {{"Infinitivo activo", header=true, color=COLOR_NP}, resultante.inf_act}) insert(t, {{"Infinitivo pasivo", header=true, color=COLOR_NP}, resultante.inf_pas}) insert(t, {{"Participio activo", header=true, color=COLOR_NP}, resultante.part_act}) insert(t, {{"Participio pasivo", header=true, color=COLOR_NP}, resultante.part_pas}) insert(t, {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}) insert(t, {{"Supino", header=true, color=COLOR_NP}, resultante.sup}) else resultante.inf_act.colspan = cs1-1 resultante.inf_pas.colspan = cs1-1 resultante.part_act.colspan = cs1-1 resultante.part_pas.colspan = cs1-1 resultante.ger.colspan = cs1-1 resultante.sup.colspan = cs1-1 if not conjinfo.dep then insert(t, {{"Infinitivo activo", header=true, color=COLOR_NP}, resultante.inf_act}) end if not conjinfo.semidep then insert(t, {{"Infinitivo pasivo", header=true, color=COLOR_NP}, resultante.inf_pas}) end if not conjinfo.dep then insert(t, {{"Participio activo", header=true, color=COLOR_NP}, resultante.part_act}) end if not conjinfo.semidep then insert(t, {{"Participio pasivo", header=true, color=COLOR_NP}, resultante.part_pas}) end insert(t, {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}) insert(t, {{"Supino", header=true, color=COLOR_NP}, resultante.sup}) end local function ic(tiempo) if impers == "3" then return resultante[tiempo.."3"] elseif impers == "36" then return resultante[tiempo.."3"], resultante[tiempo.."6"] end return resultante[tiempo.."1"], resultante[tiempo.."2"], resultante[tiempo.."3"], resultante[tiempo.."4"], resultante[tiempo.."5"], resultante[tiempo.."6"] end insert(t, {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}) insert(t, {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}) insert(t, fila_pronombres_ind) if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}) insert(t, {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}) insert(t, {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}) end if not conjinfo.dep and not conjinfo.semidep then insert(t, {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}) insert(t, {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}) insert(t, {{"Futuro perfecto", color=COLOR_IND, header=true}, ic("ind_fut_perf")}) end if mostrar_fut_sig then insert(t, {{f("Futuro sigmático{†}"), color=COLOR_IND, header=true}, ic("ind_fut_sig")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_IND, header=true}, ic("ind_pres_pas")}) insert(t, {{"Pretérito imperfecto pasivo", color=COLOR_IND, header=true}, ic("ind_imp_pas")}) insert(t, {{"Futuro pasivo", color=COLOR_IND, header=true}, ic("ind_fut_pas")}) end insert(t, {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}) insert(t, fila_pronombres_subj) if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}) insert(t, {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}) end if not conjinfo.dep and not conjinfo.semidep then insert(t, {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}) insert(t, {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}) end if mostrar_aor_sig then insert(t, {{f("Aorista sigmático{†}"), color=COLOR_SUBJ, header=true}, ic("subj_aor_sig")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_SUBJ, header=true}, ic("subj_pres_pas")}) insert(t, {{"Pretérito imperfecto pasivo", color=COLOR_SUBJ, header=true}, ic("subj_imp_pas")}) end insert(t, {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}) insert(t, fila_pronombres_imper) if mostrar_imper then if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_IMPER, header=true}, ic("imper_pres")}) insert(t, {{"Futuro", color=COLOR_IMPER, header=true}, ic("imper_fut")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_IMPER, header=true}, ic("imper_pres_pas")}) insert(t, {{"Futuro pasivo", color=COLOR_IMPER, header=true}, ic("imper_fut_pas")}) end else insert(t, {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}) end insert(t, {{f("Leyenda: † arcaico, x no normativo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}) args["nota"] = args["nota"] or "" if conjinfo.impers == "utc3" then args["nota"] = args["nota"].." NOTA: se usa también como impersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular." end if conjinfo.impers == "umc3" then args["nota"] = args["nota"].." NOTA: se usa más como impersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular." end if conjinfo.impers == "utc36" then args["nota"] = args["nota"].." NOTA: se usa también como terciopersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular y plural." end if conjinfo.impers == "umc36" then args["nota"] = args["nota"].." NOTA: se usa más como terciopersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular y plural." end if conjinfo.impers == "pas" or conjinfo.imeprs == "pas3" then args["nota"] = args["nota"].." NOTA: impersonal para las formas pasivas" end if conjinfo.impers == "pas36" then args["nota"] = args["nota"].." NOTA: formas pasivas terciopersonales (solamente tercera persona singular y plural)" end if conjinfo.soloperf then args["nota"] = args["nota"].. " NOTA: solo se emplean las formas del perfecto y pluscuamperfecto con valor de presente, imperfecto o futuro" end if conjinfo.nopasivo then args["nota"] = args["nota"].. " NOTA: solo se emplean las formas activas" end insert(t, {{args["nota"] and args["nota"] or "", colspan=cs}}) local cats = {} local subtits = {} local conj_str if conjinfo.conj == "1" then conj_str = "primera conjugación" elseif conjinfo.conj == "2" then conj_str = "segunda conjugación" elseif conjinfo.conj == "3" then conj_str = "tercera conjugación" elseif conjinfo.conj == "3/4" then conj_str = "tercera/cuarta conjugación" else conj_str = "cuarta conjugación" end insert(cats, "LA:Verbos de la "..conj_str) insert(subtits, conj_str) impers = impers or "" if impers == "3" or find(impers, "^u[tm]c3$") then insert(subtits, "impersonal") insert(cats, "LA:Verbos impersonales") end if defectivo then insert(subtits, "defectivo") insert(cats, "LA:Verbos defectivos") end if conjinfo.dep then insert(subtits, "deponente") insert(cats, "LA:Verbos deponentes") end if conjinfo.semidep then insert(subtits, "semideponente") insert(cats, "LA:Verbos semideponentes") end if es_irregular then insert(subtits, "irregular") insert(cats, "LA:Verbos irregulares") else insert(subtits, "regular") insert(cats, "LA:Verbos regulares") end return renderizar_tabla( frame, "'''Conjugación de ''"..tit_pres..", "..tit_inf..", "..tit_perf..", "..tit_sup.."'''''&emsp;&emsp;("..concat(subtits, ", ")..")", t, ns == 0 and cats or {}) end function export.adv(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { ["n"] = {}, ["nota"] = {alias_de = "n"}, ["comp"] = {lista = true}, ["comparativo"] = {alias_de = "comp"}, ["compnota"] = {lista = true}, ["sup"] = {lista = true}, ["superlativo"] = {alias_de = "sup"}, ["supnota"] = {lista = true}, } local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) local head = args[1] local modo = args[2] local enc local cats = {} local cat_pref = "LA:Adverbios" if modo == "-" then enc = "sin comparativo ni superlativo" insert(cats, cat_pref.." incomparables") return renderizar_encabezado( frame, head, enc, args["n"], {}, ns == 0 and cats or {}, normalizar_enlace ) end local flex = {comp={},sup={}} local stem for _, suff in ipairs{"iter", "nter", "ter", "er", "iē", "ē", "rā", "im", "ō"} do stem = match(head, "^(.*)" .. suff .. "$") if stem ~= nil then local comp_suff, sup_suff = "ius", "issimē" if suff == "nter" then stem = stem .. "nt" end if suff == "rā" then comp_suff = "er" .. comp_suff sup_suff = "imē" end insert(flex.comp, stem .. comp_suff) insert(flex.sup, stem .. sup_suff) break end end if not stem and not args.comp[1] and not args.sup[1] then error("Unrecognized adverb type, recognized types are “-ē”, “-er”, “-ter”, “-iter”, “-im”, or “-ō”, “-ra” or specify irregular forms or “-” if incomparable.") end local formas, irr = sobreescribir_formas(flex, args) if args["comp"][1] == "no" then enc = "sin comparativo" insert(cats, cat_pref.." sin comparativo") return renderizar_encabezado( frame, head, enc, args["n"], {{"superlativo", formas.sup, args["supnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) elseif args["sup"][1] == "no" then enc = "sin superlativo" insert(cats, cat_pref.." sin superlativo") return renderizar_encabezado( frame, head, enc, args["n"], {{"comparativo", formas.comp, args["compnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) end if irr then enc = f("#irregular#") insert(cats, cat_pref.." irregulares") end return renderizar_encabezado( frame, head, enc, args["n"], {{"comparativo", formas.comp, args["compnota"]}, {"superlativo", formas.sup, args["supnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) end return export 74pt1lutrb3x7vl6ctsaec9thi5mglp 6110110 6110099 2026-04-27T18:03:42Z Tmagc 158167 6110110 Scribunto text/plain -- FLEXIÓN DEL LATÍN -- Adaptado desde en.wikt por Tmagc local export = {} local unpack = unpack or table.unpack local insert = table.insert local concat = table.concat local m_table = require("Módulo:tabla") local list_to_set = m_table.listToSet local keys_to_list = m_table.keysToList local insert_if_not = m_table.insertIfNot local deep_copy = m_table.deepCopy local contains = m_table.contains local append = m_table.append local merge = m_table.merge local m_str = require("Módulo:string") local u = m_str.char local match = m_str.match local sub = m_str.sub local gsub = m_str.gsub local gsubb = m_str.gsubb local split = m_str.split local gsplit = m_str.gsplit local find = m_str.find local m_str_avanzado = require("Módulo:string/avanzado") local toNFD = m_str_avanzado.toNFD local toNFC = m_str_avanzado.toNFC local m_flex = require("Módulo:flex") local f = m_flex.f local f_links = m_flex.f_links local parsear_arreglo = m_flex.parsear_arreglo local separar_palabras = m_flex.separar_palabras local combinar_copulativa = m_flex.combinar_copulativa local sobreescribir_formas = m_flex.sobreescribir_formas local desactivar_formas = m_flex.desactivar_formas local agregar_enlaces = m_flex.agregar_enlaces local formatear_formas = m_flex.formatear_formas local comprobar_defectivo = m_flex.comprobar_defectivo local renderizar_tabla = m_flex.renderizar_tabla local renderizar_encabezado = m_flex.renderizar_encabezado local COLOR_H = m_flex.COLOR_H local COLOR_NP = m_flex.COLOR_NP local COLOR_IND = m_flex.COLOR_IND local COLOR_COND = m_flex.COLOR_COND local COLOR_SUBJ = m_flex.COLOR_SUBJ local COLOR_IMPER = m_flex.COLOR_IMPER local MACRON = u(0x304) local BREVE = u(0x306) local DIAER = u(0x308) local DBREVE = u(0x361) local ACCENT = "[" .. MACRON .. BREVE .. DIAER .. DBREVE .. "]" local VOWEL = "[aæeioœuyAÆEIOŒUY]" local cons_to_vowel = { ["j"] = "i", ["J"] = "I", ["v"] = "u", ["V"] = "U", } local function normalizar_enlace(x) x = toNFD(x) x = gsub(x, ACCENT, "") return toNFC(x) end local function join(a, b) a, b = toNFD(a), toNFD(b) -- If the first part ends in "j" or "v", convert it to "i" or "u" unless -- the second part begins with a vowel. if not match(b, "^" .. VOWEL) then a = gsub(a, "[jvJV]$", cons_to_vowel) end return toNFC(a..b) end local function add_form(decl, slot, stem, suf) if type(slot) == "string" then slot = {slot} end for _,slt in ipairs(slot) do if type(decl[slt]) == "nil" or decl[slt] == "" then decl[slt] = {} elseif type(decl[slt]) == "string" then decl[slt] = {decl[slt]} end insert_if_not(decl[slt], join(stem, suf)) end end local function remove_forms(decl, forms) for form,_ in pairs(decl) do for _,rx in ipairs(forms) do if form:find(rx) then forms[form] = {} break end end end end local function merge_forms(forms, forms2, keys) keys = keys or forms2 for key,arr in pairs(keys) do if not forms[key] then forms[key] = {} end if type(forms2[key]) == "string" then insert_if_not(forms[key], forms2[key]) elseif type(forms2[key]) == "table" then for _,a in ipairs(forms2[key]) do insert_if_not(forms[key], a) end end end end local noun_decl = {} noun_decl["0"] = function(data, args) local forms = data.forms local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem forms["gen_sg"] = stem forms["dat_sg"] = stem forms["acc_sg"] = stem forms["abl_sg"] = stem forms["voc_sg"] = stem forms["nom_pl"] = stem forms["gen_pl"] = stem forms["dat_pl"] = stem forms["acc_pl"] = stem forms["abl_pl"] = stem forms["voc_pl"] = stem -- with locative if data.loc then forms["loc_sg"] = stem forms["loc_pl"] = stem end end local function alt_gen_pl_in_um(stem, forms, types, subtitles, i_stem) if types.genplum then add_form(forms, "gen_pl", stem, (i_stem and "i" or "") .. "um") elseif types.not_genplum then -- FIXME: not a contraction. -- insert_if_not(subtitles, "uncontracted genitive plural") end end noun_decl["1"] = function(data, args) local forms, types, loc, subtitles = data.forms, data.types, data.loc, data.subtitles local stem = args[1] -- normal 1st local nom_sg = "a" local gen_loc_sg = "ae" local dat_sg = "ae" local acc_sg = "am" local abl_sg = "ā" local voc_sg = "a" local nom_voc_pl = "ae" local gen_pl = "ārum" local dat_abl_loc_pl = "īs" local acc_pl = "ās" insert_if_not(data.title, "primera declinación") insert_if_not(data.categories, "LA:Sustantivos de la primera declinación") -- ām if types.am then nom_sg = "ām" acc_sg = "ām" abl_sg = {"ām", "ā"} voc_sg = "ām" -- all Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") --Greek Ma if types.Ma then nom_sg = "ās" acc_sg = "ān" voc_sg = "ā" -- Greek Me elseif types.Me then nom_sg = "ēs" acc_sg = "ēn" abl_sg = "ē" voc_sg = "ē" -- Greek else nom_sg = "ē" gen_loc_sg = "ēs" acc_sg = "ēn" abl_sg = "ē" voc_sg = "ē" end end -- ābus if types.abus then dat_abl_loc_pl = "ābus" end add_form(forms, "nom_sg", stem, nom_sg) add_form(forms, "gen_sg", stem, gen_loc_sg) add_form(forms, "dat_sg", stem, dat_sg) add_form(forms, "acc_sg", stem, acc_sg) add_form(forms, "abl_sg", stem, abl_sg) add_form(forms, "voc_sg", stem, voc_sg) add_form(forms, {"nom_pl", "voc_pl"}, stem, nom_voc_pl) add_form(forms, "gen_pl", stem, gen_pl) add_form(forms, {"dat_pl", "abl_pl"}, stem, dat_abl_loc_pl) add_form(forms, "acc_pl", stem, acc_pl) -- with locative if loc then add_form(forms, "loc_sg", stem, gen_loc_sg) add_form(forms, "loc_pl", stem, dat_abl_loc_pl) end end noun_decl["2"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem1, stem2 = args[1], args[2] insert_if_not(data.title, "segunda declinación") insert_if_not(data.categories, "LA:Sustantivos de la segunda declinación") -- normal 2nd forms["nom_sg"] = stem1 .. "us" forms["gen_sg"] = stem1 .. "ī" forms["dat_sg"] = stem1 .. "ō" forms["acc_sg"] = stem1 .. "um" forms["abl_sg"] = stem1 .. "ō" forms["voc_sg"] = stem1 .. "e" forms["nom_pl"] = stem1 .. "ī" forms["gen_pl"] = stem1 .. "ōrum" forms["dat_pl"] = stem1 .. "īs" forms["acc_pl"] = stem1 .. "ōs" forms["abl_pl"] = stem1 .. "īs" forms["voc_pl"] = stem1 .. "ī" -- all neuter if types.N then forms["nom_sg"] = stem1 .. "um" forms["voc_sg"] = stem1 .. "um" forms["nom_pl"] = stem1 .. "a" forms["acc_pl"] = stem1 .. "a" forms["voc_pl"] = stem1 .. "a" -- neuter ium if types.ium then forms["nom_sg"] = stem1 .. "ium" forms["gen_sg"] = {stem1 .. "iī", stem1 .. "ī{†}"} forms["dat_sg"] = stem1 .. "iō" forms["acc_sg"] = stem1 .. "ium" forms["abl_sg"] = stem1 .. "iō" forms["voc_sg"] = stem1 .. "ium" forms["nom_pl"] = stem1 .. "ia" forms["gen_pl"] = stem1 .. "iōrum" forms["dat_pl"] = stem1 .. "iīs" forms["acc_pl"] = stem1 .. "ia" forms["abl_pl"] = stem1 .. "iīs" forms["voc_pl"] = stem1 .. "ia" -- neuter us, plural a elseif types.a then forms["nom_sg"] = stem1 .. "us" forms["acc_sg"] = stem1 .. "us" forms["voc_sg"] = stem1 .. "us" forms["nom_pl"] = stem1 .. "a" forms["acc_pl"] = stem1 .. "a" forms["voc_pl"] = stem1 .. "a" -- -vom (aevom, etc.) elseif types.vom then forms["nom_sg"] = stem1 .. "om" forms["acc_sg"] = stem1 .. "om" forms["voc_sg"] = stem1 .. "om" -- neuter Greek in -os (cētos) elseif types.Greek and types.us then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "os" forms["voc_sg"] = stem1 .. "os" forms["nom_pl"] = stem1 .. "ē" forms["gen_pl"] = stem1 .. "ōn" forms["acc_pl"] = stem1 .. "ē" forms["voc_pl"] = stem1 .. "ē" -- neuter Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "on" forms["acc_sg"] = stem1 .. "on" forms["voc_sg"] = stem1 .. "on" -- neuter us elseif types.us then forms["nom_sg"] = stem1 .. "us" forms["acc_sg"] = stem1 .. "us" forms["voc_sg"] = stem1 .. "us" forms["nom_pl"] = stem1 .. "ī" forms["acc_pl"] = stem1 .. "ōs" forms["voc_pl"] = stem1 .. "ī" end -- er elseif types.er then forms["nom_sg"] = stem1 forms["gen_sg"] = stem2 .. "ī" forms["dat_sg"] = stem2 .. "ō" forms["acc_sg"] = stem2 .. "um" forms["abl_sg"] = stem2 .. "ō" forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 .. "ī" forms["gen_pl"] = stem2 .. "ōrum" forms["dat_pl"] = stem2 .. "īs" forms["acc_pl"] = stem2 .. "ōs" forms["abl_pl"] = stem2 .. "īs" forms["voc_pl"] = stem2 .. "ī" -- ius elseif types.ius then forms["nom_sg"] = stem1 .. "ius" forms["gen_sg"] = {stem1 .. "iī", stem1 .. "ī{†}"} forms["dat_sg"] = stem1 .. "iō" forms["acc_sg"] = stem1 .. "ium" forms["abl_sg"] = stem1 .. "iō" if types.voci then -- Only for proper names and fīlius, genius forms["voc_sg"] = stem1 .. "ī" else forms["voc_sg"] = stem1 .. "ie" end forms["nom_pl"] = stem1 .. "iī" forms["gen_pl"] = stem1 .. "iōrum" forms["dat_pl"] = stem1 .. "iīs" forms["acc_pl"] = stem1 .. "iōs" forms["abl_pl"] = stem1 .. "iīs" forms["voc_pl"] = stem1 .. "iī" -- -vos (servos, etc.) elseif types.vos then forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "om" -- Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "on" if data.num == "pl" then forms["nom_pl"] = stem1 .. "oe" forms["voc_pl"] = stem1 .. "oe" else forms["nom_pl"] = {stem1 .. "ī", stem1 .. "oe"} forms["voc_pl"] = {stem1 .. "ī", stem1 .. "oe"} end elseif types.not_Greek then insert_if_not(data.title, "no griego") end -- with -um genitive plural alt_gen_pl_in_um(stem2, forms, types, subtitles, types.ius or types.ium) -- with locative if data.loc then if types.ius or types.ium then forms["loc_sg"] = stem2 .. "iī" forms["loc_pl"] = stem2 .. "iīs" else forms["loc_sg"] = stem2 .. "ī" forms["loc_pl"] = stem2 .. "īs" end end end local acc_sg_i_stem_subtypes = { acc_im = { -- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) [abl -ī]; -- cannabis, senapis, sinapis [abl -e, -ī] acc_sg = {"im"}, title = {"accusative singular in ''-im''"}, }, acc_im_in = { -- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris [abl -ī]; -- Baetis, Tigris [acc -e, -ī] acc_sg = {"im", "in"}, title = {"accusative singular in ''-im'' or ''-in''"}, }, acc_im_in_em = { -- e.g. tigris, river Līris acc_sg = {"im", "in", "em"}, title = {"accusative singular in ''-im'', ''-in'' or ''-em''"}, }, acc_im_em = { acc_sg = {"im", "em"}, title = {"accusative singular in ''-im'' or ''-em''"}, }, acc_im_occ_em = { -- febris, pelvis, puppis, restis, securis, turris [abl -ī, -e] acc_sg = {"im", "em"}, title = {"accusative singular in ''-im'' or occasionally ''-em''"}, }, acc_em_im = { -- aqualis, clavis, lens, navis [abl -e, -ī]; -- cutis, restis [abl -e] acc_sg = {"em", "im"}, title = {"accusative singular in ''-em'' or ''-im''"}, }, } local abl_sg_i_stem_subtypes = { abl_i = { -- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) [acc -im]; -- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris [acc -im or -in]; -- canalis "water pipe", months in -is or -er, nouns originally i-stem adjectives such as aedilis, affinis, bipennis, familiaris, sodalis, volucris, etc. [acc -em] abl_sg = {"ī"}, title = {"ablative singular in ''-ī''"}, }, abl_i_e = { -- febris, pelvis, puppis, restis, securis, turris [acc -im, -em] abl_sg = {"ī", "e"}, title = {"ablative singular in ''-ī'' or ''-e''"}, }, abl_e_i = { -- cannabis, senapis, sinapis [acc -im]; -- Baetis, Tigris [acc -im, -in]; -- aqualis, clavis, lens, navis [acc -em, -im]; -- finis, mugilis, occiput, pugil, rus, supellex, vectis [acc -em] abl_sg = {"e", "ī"}, title = {"ablative singular in ''-e'' or ''-ī''"}, }, abl_e_occ_i = { -- amnis, anguis, avis, civis, classis, fustis, ignis, imber, orbis, pars, postis, sors, unguis, vesper [acc -em] abl_sg = {"e", "ī"}, title = {"ablative singular in ''-e'' or occasionally ''-ī''"}, }, } local function extract_stem(form, ending) local base = match(form, "^(.*)" .. ending .. "$") if not base then error("Form " .. form .. " should end in -" .. ending) end return base end local function count_vowels(stem) return select(2, toNFD(stem):gsub("[aeiouyAEIOUY]", "")) end noun_decl["3"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem1, stem2 = args[1], args[2] -- local function non_i_stem_type() -- return (count_vowels(stem1) > count_vowels(stem2) and "parisyllabic" or "imparisyllabic") .. " non-i-stem" -- end insert_if_not(data.title, "tercera declinación") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación") --normal 3rd forms["nom_sg"] = stem1 forms["gen_sg"] = stem2 .. "is" forms["dat_sg"] = stem2 .. "ī" forms["acc_sg"] = stem2 .. "em" forms["abl_sg"] = stem2 .. "e" forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 .. "ēs" forms["gen_pl"] = stem2 .. "um" forms["dat_pl"] = stem2 .. "ibus" forms["acc_pl"] = stem2 .. "ēs" forms["abl_pl"] = stem2 .. "ibus" forms["voc_pl"] = stem2 .. "ēs" local acc_sg_i_stem_subtype = false local not_acc_sg_i_stem_subtype = false for subtype, _ in pairs(types) do if acc_sg_i_stem_subtypes[subtype] then acc_sg_i_stem_subtype = true break end end for acc_sg_subtype, _ in pairs(acc_sg_i_stem_subtypes) do if types["not_" .. acc_sg_subtype] then not_acc_sg_i_stem_subtype = true break end end local abl_sg_i_stem_subtype = false local not_abl_sg_i_stem_subtype = false for subtype, _ in pairs(types) do if abl_sg_i_stem_subtypes[subtype] then abl_sg_i_stem_subtype = true break end end for abl_sg_subtype, _ in pairs(abl_sg_i_stem_subtypes) do if types["not_" .. abl_sg_subtype] then not_abl_sg_i_stem_subtype = true break end end -- all Greek if types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") -- Greek er if types.er then stem1 = extract_stem(stem1, "ēr") forms["nom_sg"] = stem1 .. "ēr" forms["gen_sg"] = stem1 .. "eris" forms["dat_sg"] = stem1 .. "erī" forms["acc_sg"] = {stem1 .. "era", stem1 .. "erem"} forms["abl_sg"] = stem1 .. "ere" forms["voc_sg"] = stem1 .. "ēr" forms["nom_pl"] = stem1 .. "erēs" forms["gen_pl"] = stem1 .. "erum" forms["dat_pl"] = stem1 .. "eribus" forms["acc_pl"] = stem1 .. "erēs" forms["abl_pl"] = stem1 .. "eribus" forms["voc_pl"] = stem1 .. "erēs" -- Greek on elseif types.on then stem1 = extract_stem(stem1, "ōn") forms["nom_sg"] = stem1 .. "ōn" forms["gen_sg"] = {stem1 .. "ontis", stem1 .. "ontos"} forms["dat_sg"] = stem1 .. "ontī" forms["acc_sg"] = stem1 .. "onta" forms["abl_sg"] = stem1 .. "onte" forms["voc_sg"] = stem1 .. "ōn" forms["nom_pl"] = stem1 .. "ontēs" forms["gen_pl"] = {stem1 .. "ontum", stem1 .. "ontium"} forms["dat_pl"] = stem1 .. "ontibus" forms["acc_pl"] = {stem1 .. "ontēs", stem1 .. "ontās"} forms["abl_pl"] = stem1 .. "ontibus" forms["voc_pl"] = stem1 .. "ontēs" -- Greek i-stem elseif types.I then forms["gen_sg"] = {stem2 .. "is", stem2 .. "eōs", stem2 .. "ios"} forms["acc_sg"] = {stem2 .. "im", stem2 .. "in", stem2 .. "em{MED}"} forms["abl_sg"] = {stem2 .. "ī", stem2 .. "e{MED}"} forms["voc_sg"] = {stem2 .. "is", stem2 .. "i"} forms["nom_pl"] = {stem2 .. "ēs", stem2 .. "eis"} forms["gen_pl"] = {stem2 .. "ium", stem2 .. "eōn"} forms["acc_pl"] = {stem2 .. "ēs", stem2 .. "eis"} forms["voc_pl"] = {stem2 .. "ēs", stem2 .. "eis"} if types.poetic_esi then forms["dat_pl"] = {stem2 .. "ibus", stem2 .. "esi{L}"} forms["abl_pl"] = {stem2 .. "ibus", stem2 .. "esi{L}"} end -- normal Greek else forms["gen_sg"] = stem2 .. "os" if match(toNFD(stem2), "[yY]" .. ACCENT .. "*$") then forms["acc_sg"] = stem2 .. "n" else forms["acc_sg"] = stem2 .. "a" end forms["nom_pl"] = stem2 .. "es" forms["acc_pl"] = stem2 .. "as" forms["voc_pl"] = stem2 .. "es" if match(toNFD(stem1), "[iyIY]" .. ACCENT .. "*s$") then -- Per Hiley, words in -is and -ys have a poetic vocative -- without the -s, but otherwise the vocative is the same -- as the nominative. forms["voc_sg"] = {stem1, (stem1:gsub("s$", "")).."{L}"} end end elseif types.not_Greek then insert_if_not(data.title, "no griego") end -- polis if types.polis then stem1 = extract_stem(stem1, "polis") insert_if_not(data.title, "parcialmente griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "polis" forms["gen_sg"] = stem1 .. "polis" forms["dat_sg"] = stem1 .. "polī" forms["acc_sg"] = {stem1 .. "polim", stem1 .. "polin"} forms["abl_sg"] = stem1 .. "polī" forms["voc_sg"] = {stem1 .. "polis", stem1 .. "polī"} end -- all neuter if types.N then forms["acc_sg"] = stem1 -- neuter I stem if types.I then -- pure variety if types.pure then forms["abl_sg"] = stem2 .. "ī" forms["nom_pl"] = stem2 .. "ia" forms["gen_pl"] = stem2 .. "ium" forms["acc_pl"] = stem2 .. "ia" forms["voc_pl"] = stem2 .. "ia" -- non-pure variety (rare) else forms["nom_pl"] = stem2 .. "a" forms["gen_pl"] = {stem2 .. "ium", stem2 .. "um"} forms["acc_pl"] = stem2 .. "a" forms["voc_pl"] = stem2 .. "a" end -- normal neuter else forms["nom_pl"] = stem2 .. "a" forms["acc_pl"] = stem2 .. "a" forms["voc_pl"] = stem2 .. "a" end -- I stem elseif types.I or acc_sg_i_stem_subtype or abl_sg_i_stem_subtype then forms["gen_pl"] = stem2 .. "ium" -- Per Allen and Greenough, Hiley and others, the acc_pl in -īs -- applied originally to all i-stem nouns, and was current as an -- alternative form up through Caesar. forms["acc_pl"] = {stem2 .. "ēs", stem2 .. "īs"} -- pure variety if types.pure then forms["acc_sg"] = stem2 .. "im" forms["abl_sg"] = stem2 .. "ī" forms["nom_pl"] = stem2 .. "īs" forms["acc_pl"] = stem2 .. "īs" forms["voc_pl"] = stem2 .. "īs" end local num = data.num for subtype, _ in pairs(types) do local acc_sg_i_stem_props = acc_sg_i_stem_subtypes[subtype] if acc_sg_i_stem_props then forms["acc_sg"] = {} for _, ending in ipairs(acc_sg_i_stem_props.acc_sg) do insert_if_not(forms["acc_sg"], stem2 .. ending) end -- if num ~= "pl" then -- for _, t in ipairs(acc_sg_i_stem_props.title) do -- insert_if_not(subtitles, t) -- end -- end break end end -- FIXME: needs to be done for neuter nouns as well. for subtype, _ in pairs(types) do local abl_sg_i_stem_props = abl_sg_i_stem_subtypes[subtype] if abl_sg_i_stem_props then forms["abl_sg"] = {} for _, ending in ipairs(abl_sg_i_stem_props.abl_sg) do insert_if_not(forms["abl_sg"], stem2 .. ending) end -- if num ~= "pl" then -- for _, t in ipairs(abl_sg_i_stem_props.title) do -- insert_if_not(subtitles, t) -- end -- end break end end end -- with locative if data.loc then -- As far as I can tell, in general both dative singular and -- ablative singular could be used for the third-declension locative, -- with different time periods preferring different forms. -- http://dcc.dickinson.edu/grammar/latin/3rd-declension-locative-case -- mentions rūrī along with either Carthāginī or Carthāgine. -- Wikipedia in https://en.wikipedia.org/wiki/Locative_case#Latin -- says this: -- -- In archaic times, the locative singular of third declension nouns -- was still interchangeable between ablative and dative forms, but in -- the Augustan Period the use of the ablative form became fixed. -- Therefore, both forms "rūrī" and "rūre" may be encountered. -- -- Lewis and Short confirm this. local loc_sg = forms["dat_sg"] if type(loc_sg) == "table" then loc_sg = deep_copy(loc_sg) else loc_sg = {loc_sg} end local abl_sg = forms["abl_sg"] if type(abl_sg) == "table" then for _, form in ipairs(abl_sg) do insert_if_not(loc_sg, deep_copy(form)) end else insert_if_not(loc_sg, abl_sg) end forms["loc_sg"] = loc_sg forms["loc_pl"] = deep_copy(forms["abl_pl"]) --The following is what we used to have, but I simply cannot believe it. --if types.Greek and not types.s then -- forms["loc_pl"] = stem2 .. "ēs" --end end end noun_decl["4"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem = args[1] insert_if_not(data.title, "cuarta declinación") insert_if_not(data.categories, "LA:Sustantivos de la cuarta declinación") -- normal 4th forms["nom_sg"] = stem .. "us" forms["gen_sg"] = stem .. "ūs" forms["dat_sg"] = stem .. "uī" forms["acc_sg"] = stem .. "um" forms["abl_sg"] = stem .. "ū" forms["voc_sg"] = stem .. "us" forms["nom_pl"] = stem .. "ūs" forms["gen_pl"] = stem .. "uum" forms["dat_pl"] = stem .. "ibus" forms["acc_pl"] = stem .. "ūs" forms["abl_pl"] = stem .. "ibus" forms["voc_pl"] = stem .. "ūs" if types.echo then for slot in pairs(forms) do if slot ~= "gen_sg" then forms[slot] = stem .. "ō" end end add_form(forms, "acc_sg", stem, "ōn") elseif types.Callisto then for slot in pairs(forms) do if slot ~= "gen_sg" then forms[slot] = stem .. "ō" end end end -- neuter if types.N then forms["nom_sg"] = stem .. "ū̆{?}" forms["gen_sg"] = {stem .. "ūs{C}", stem .. "ū{S}"} forms["dat_sg"] = {stem .. "uī{C}", stem .. "ū{S}"} forms["acc_sg"] = stem .. "ū̆{?}" forms["voc_sg"] = stem .. "ū̆{?}" forms["nom_pl"] = stem .. "ua" forms["acc_pl"] = stem .. "ua" forms["voc_pl"] = stem .. "ua" end -- ubus if types.ubus then forms["dat_pl"] = stem .. "ubus" forms["abl_pl"] = stem .. "ubus" end -- with locative if data.loc then forms["loc_sg"] = forms["abl_sg"] forms["loc_pl"] = forms["abl_pl"] end end noun_decl["5"] = function(data, args) local forms, types = data.forms, data.types local stem = args[1] insert_if_not(data.title, "quinta declinación") insert_if_not(data.categories, "LA:Sustantivos de la quinta declinación") -- ies if types.i then stem = stem .. "i" end forms["nom_sg"] = stem .. "ēs" forms["gen_sg"] = stem .. "eī" forms["dat_sg"] = stem .. "eī" forms["acc_sg"] = stem .. "em" forms["abl_sg"] = stem .. "ē" forms["voc_sg"] = stem .. "ēs" forms["nom_pl"] = stem .. "ēs" forms["gen_pl"] = stem .. "ērum" forms["dat_pl"] = stem .. "ēbus" forms["acc_pl"] = stem .. "ēs" forms["abl_pl"] = stem .. "ēbus" forms["voc_pl"] = stem .. "ēs" -- ies if types.i then forms["gen_sg"] = stem .. "ēī" forms["dat_sg"] = stem .. "ēī" end --with locative if data.loc then forms["loc_sg"] = stem .. "ē" forms["loc_pl"] = stem .. "ēbus" end end noun_decl["sgpl"] = function(data, args) local forms = data.forms local stem1, stem2 = args[1], args[2] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem1 forms["gen_sg"] = stem1 forms["dat_sg"] = stem1 forms["acc_sg"] = stem1 forms["abl_sg"] = stem1 forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 forms["gen_pl"] = stem2 forms["dat_pl"] = stem2 forms["acc_pl"] = stem2 forms["abl_pl"] = stem2 forms["voc_pl"] = stem2 -- with locative if data.loc then forms["loc_sg"] = stem1 forms["loc_pl"] = stem2 end end noun_decl["indecl"] = function(data, args) local forms = data.forms local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem forms["gen_sg"] = {} forms["dat_sg"] = {} forms["acc_sg"] = stem forms["abl_sg"] = {} forms["voc_sg"] = {} forms["nom_pl"] = {} forms["gen_pl"] = {} forms["dat_pl"] = {} forms["acc_pl"] = {} forms["abl_pl"] = {} forms["voc_pl"] = {} -- with locative (for multiword terms) if data.loc then forms["loc_sg"] = {} forms["loc_pl"] = {} end data.num = "sg" end noun_decl["irreg"] = function(data, args) local forms, subtitles, notes = data.forms, data.subtitles, data.notes local stem = args[1] insert_if_not(data.title, "irregular") insert_if_not(data.categories, "LA:Sustantivos irregulares") forms["nom_sg"] = {} forms["gen_sg"] = {} forms["dat_sg"] = {} forms["acc_sg"] = {} forms["abl_sg"] = {} forms["voc_sg"] = {} forms["nom_pl"] = {} forms["gen_pl"] = {} forms["dat_pl"] = {} forms["acc_pl"] = {} forms["abl_pl"] = {} forms["voc_pl"] = {} if stem == "bōs" then data.decl = "3" local stem1, stem2 = "bōs", "bov" noun_decl["3"](data, {stem1, stem2}) add_form(forms, "abl_sg", stem2, "īd{†}") add_form(forms, "gen_pl", "bo", "um") add_form(forms, "gen_pl", stem2, "erum") add_form(forms, "dat_pl", "", "bōbus") add_form(forms, "dat_pl", "", "būbus") add_form(forms, "abl_pl", "", "bōbus") add_form(forms, "abl_pl", "", "būbus") elseif stem:match("^[dD]eus$") then data.decl = "2" local dD = stem:sub(1, 1) forms["nom_sg"] = dD .. "eus" forms["gen_sg"] = dD .. "eī" forms["dat_sg"] = dD .. "eō" forms["acc_sg"] = dD .. "eum" forms["abl_sg"] = dD .. "eō" forms["voc_sg"] = {dD .. "eus", dD .. "ee"} if stem == "deus" then forms["nom_pl"] = {"dī", "diī", "deī"} forms["gen_pl"] = {"deōrum", "deum"} forms["dat_pl"] = {"dīs", "diīs", "deīs"} forms["acc_pl"] = "deōs" forms["abl_pl"] = {"dīs", "diīs", "deīs"} forms["voc_pl"] = {"dī", "diī", "deī"} end elseif stem == "domus" then data.decl = "4,2" insert_if_not(data.title, "cuarta/segunda declinación") forms["nom_sg"] = "domus" forms["gen_sg"] = {"domūs", "domī"} forms["dat_sg"] = {"domuī", "domō", "domū"} forms["acc_sg"] = "domum" forms["abl_sg"] = {"domū", "domō"} forms["voc_sg"] = "domus" forms["loc_sg"] = "domī" forms["nom_pl"] = "domūs" forms["gen_pl"] = {"domuum", "domōrum"} forms["dat_pl"] = "domibus" forms["acc_pl"] = {"domūs", "domōs"} forms["abl_pl"] = "domibus" forms["voc_pl"] = "domūs" forms["loc_pl"] = {} data.loc = true elseif match(stem, "^[IÏJ]ēs[uū]" .. BREVE .. "?s$") then local ij = sub(stem, 1, 1) local uu = match(stem, "[uū]" .. BREVE .. "?") forms["nom_sg"] = stem forms["gen_sg"] = ij .. "ēsū" forms["dat_sg"] = ij .. "ēsū" forms["acc_sg"] = ij .. "ēs" .. uu .. "m" forms["abl_sg"] = ij .. "ēsū" forms["voc_sg"] = ij .. "ēsū" data.num = "sg" elseif stem == "Mōsēs" or stem == "Moesēs" or match(stem, "^M[oō]" .. BREVE .. "?[īȳ]sēs$") then local mos = sub(stem, 1, -3) forms["nom_sg"] = stem forms["gen_sg"] = {mos .. "ī", mos .. "ēī", mos .. "is", mos .. "ēn", mos .. "eōs"} forms["dat_sg"] = mos .. "ī" forms["acc_sg"] = {mos .. "ēn", mos .. "em"} forms["abl_sg"] = {mos .. "e", mos .. "ēn", mos .. "ī"} forms["voc_sg"] = {mos .. "ēs", mos .. "ē"} data.num = "sg" elseif stem:match("^[ij]ūgerum$") then data.decl = "2,3" local ij = stem:sub(1, 1) insert_if_not(data.title, "segunda/tercera declinación híbrido") forms["nom_sg"] = ij .. "ūgerum" forms["gen_sg"] = ij .. "ūgerī" forms["dat_sg"] = ij .. "ūgerō" forms["acc_sg"] = ij .. "ūgerum" forms["abl_sg"] = ij .. "ūgerō" forms["voc_sg"] = ij .. "ūgerum" forms["nom_pl"] = ij .. "ūgera" forms["gen_pl"] = ij .. "ūgerum" forms["dat_pl"] = ij .. "ūgeribus" forms["acc_pl"] = ij .. "ūgera" forms["abl_pl"] = {ij .. "ūgeribus", ij .. "ūgerīs{†}"} forms["voc_pl"] = ij .. "ūgera" elseif stem == "sūs" then data.decl = "3" forms["nom_sg"] = "sūs" forms["gen_sg"] = "suis" forms["dat_sg"] = "suī" forms["acc_sg"] = "suem" forms["abl_sg"] = "sue" forms["voc_sg"] = "sūs" forms["nom_pl"] = "suēs" forms["gen_pl"] = "suum" forms["dat_pl"] = {"suibus", "sūbus", "subus"} forms["acc_pl"] = "suēs" forms["abl_pl"] = {"suibus", "sūbus", "subus"} forms["voc_pl"] = "suēs" elseif stem == "ēthos" then data.decl = "3" insert_if_not(data.title, "tercera declinación, griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = "ēthos" forms["gen_sg"] = "ētheos" forms["acc_sg"] = "ēthos" forms["voc_sg"] = "ēthos" forms["nom_pl"] = {"ēthea", "ēthē"} forms["dat_pl"] = {"ēthesi", "ēthesin"} forms["acc_pl"] = {"ēthea", "ēthē"} forms["abl_pl"] = {"ēthesi", "ēthesin"} forms["voc_pl"] = {"ēthea", "ēthē"} elseif stem == "Athōs" then data.decl = "2" insert_if_not(data.title, "segunda declinación, griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = "Athōs" forms["gen_sg"] = "Athō" forms["dat_sg"] = "Athō" forms["acc_sg"] = {"Athō", "Athōn"} forms["abl_sg"] = "Athō" forms["voc_sg"] = "Athōs" data.num = "sg" elseif stem:match("^[uv]ēnum$") then data.decl = "4,2" local uv = stem:sub(1, 1) insert_if_not(data.title, "cuarta/segunda declinación, defectivo") forms["dat_sg"] = {uv .. "ēnuī", uv .. "ēnō"} forms["acc_sg"] = uv .. "ēnum" data.num = "sg" elseif stem:match("^[uv]īs$") then data.decl = "3" local uv = stem:sub(1, 1) insert_if_not(data.title, "defectivo") forms["nom_sg"] = uv .. "īs" forms["gen_sg"] = uv .. "īs" forms["dat_sg"] = uv .. "ī" forms["acc_sg"] = uv .. "im" forms["abl_sg"] = uv .. "ī" forms["voc_sg"] = uv .. "īs" forms["nom_pl"] = uv .. "īrēs" forms["gen_pl"] = uv .. "īrium" forms["dat_pl"] = uv .. "īribus" forms["acc_pl"] = {uv .. "īrēs", uv .. "īrīs"} forms["abl_pl"] = uv .. "īribus" forms["voc_pl"] = uv .. "īrēs" else error("Stem " .. stem .. " not recognized.") end end local adj_decl = {} adj_decl["0+"] = function(data, args) local forms, categories = data.forms, data.categories local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(categories, "LA:Adjetivos indeclinables") forms["nom_sg_m"] = stem forms["nom_pl_m"] = stem forms["gen_sg_m"] = stem forms["gen_pl_m"] = stem forms["dat_sg_m"] = stem forms["dat_pl_m"] = stem forms["acc_sg_m"] = stem forms["acc_pl_m"] = stem forms["abl_sg_m"] = stem forms["abl_pl_m"] = stem forms["voc_sg_m"] = stem forms["voc_pl_m"] = stem forms["loc_sg_m"] = stem forms["loc_pl_m"] = stem end adj_decl["1&2+"] = function(data, args) local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "primera y segunda declinación") insert_if_not(categories, "LA:Adjetivos de la primera declinación") insert_if_not(categories, "LA:Adjetivos de la segunda declinación") local original if types.er then local final2 = stem:sub(-2) if final2 == "er" then -- insert_if_not(categories, "LA:Sustantivos de la primera declinación") -- insert_if_not(categories, "LA:Sustantivos de la segunda declinación") elseif final2 == "ur" then -- insert_if_not(categories, "LA:Sustantivos de la primera declinación") -- insert_if_not(categories, "LA:Sustantivos de la segunda declinación") else error("Unrecognized ''-r'' stem (doesn't end in ''-er'' or ''-ur''): " .. stem) end stem, original = args[2], stem end local us = "us" local a_sf = "a" local um = "um" local ae_gsf = "ae" local am = "am" local a_macron = "ā" local i_pl = stem .. "ī" if types.greekA or types.greekE then insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Sustantivos griegos") if types.greekA then us = "os" um = "on" am = "ān" else us = "os" a_sf = "ē" um = "on" ae_gsf = "ēs" am = "ēn" a_macron = "ē" end i_pl = {i_pl, stem .. "oe"} end forms["nom_sg_m"] = original or (stem .. us) forms["nom_sg_f"] = stem .. a_sf forms["nom_sg_n"] = stem .. um forms["nom_pl_m"] = i_pl forms["nom_pl_f"] = stem .. "ae" forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ī" forms["gen_sg_f"] = stem .. ae_gsf forms["gen_sg_n"] = stem .. "ī" forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_f"] = stem .. "ārum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_sg_m"] = stem .. "ō" forms["dat_sg_f"] = stem .. "ae" forms["dat_sg_n"] = stem .. "ō" forms["dat_pl_m"] = stem .. "īs" forms["dat_pl_f"] = stem .. "īs" forms["dat_pl_n"] = stem .. "īs" forms["acc_sg_m"] = stem .. um forms["acc_sg_f"] = stem .. am forms["acc_sg_n"] = stem .. um forms["acc_pl_m"] = stem .. "ōs" forms["acc_pl_f"] = stem .. "ās" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ō" forms["abl_sg_f"] = stem .. a_macron forms["abl_sg_n"] = stem .. "ō" forms["abl_pl_m"] = stem .. "īs" forms["abl_pl_f"] = stem .. "īs" forms["abl_pl_n"] = stem .. "īs" forms["voc_sg_m"] = original or (stem .. "e") forms["voc_sg_f"] = stem .. a_sf forms["voc_sg_n"] = stem .. um forms["voc_pl_m"] = i_pl forms["voc_pl_f"] = stem .. "ae" forms["voc_pl_n"] = stem .. "a" if types.ius then insert_if_not(data.title, "pronominal") --insert_if_not(subtitles, "with genitive singular in ''-ī̆us'' and dative singular in ''-ī''") forms["gen_sg_m"] = stem .. "ī̆us" forms["gen_sg_f"] = stem .. "ī̆us" forms["gen_sg_n"] = stem .. "ī̆us" forms["dat_sg_m"] = stem .. "ī" forms["dat_sg_f"] = stem .. "ī" forms["dat_sg_n"] = stem .. "ī" elseif types.not_ius then insert_if_not(data.title, "no pronominal") --insert_if_not(subtitles, "with normal genitive and dative singular") end if stem == "me" then forms["voc_sg_m"] = "mī" end if types.ic then --insert_if_not(subtitles, "with genitive singular ending in ''-ius'' and dative singular ending in ''-ic''") local oc = "oc" local oc_macron = "ōc" if stem == "ill" then oc = "uc" oc_macron = "ūc" end forms["nom_sg_m"] = stem .. "ic" forms["nom_sg_f"] = stem .. "aec" forms["nom_sg_n"] = stem .. oc forms["nom_pl_n"] = stem .. "aec" forms["gen_sg_m"] = stem .. "uius" forms["gen_sg_f"] = stem .. "uius" forms["gen_sg_n"] = stem .. "uius" forms["dat_sg_m"] = stem .. "uic" forms["dat_sg_f"] = stem .. "uic" forms["dat_sg_n"] = stem .. "uic" forms["acc_sg_m"] = stem .. "unc" forms["acc_sg_f"] = stem .. "anc" forms["acc_sg_n"] = stem .. oc forms["acc_pl_n"] = stem .. "aec" forms["abl_sg_m"] = stem .. "ōc" forms["abl_sg_f"] = stem .. "āc" forms["abl_sg_n"] = stem .. oc_macron forms["voc_sg_m"] = {} forms["voc_sg_f"] = {} forms["voc_sg_n"] = {} forms["voc_pl_m"] = {} forms["voc_pl_f"] = {} forms["voc_pl_n"] = {} end if types.distr then if stem:sub(-1) == "n" then forms["gen_pl_m"] = {stem .. "um", stem .. "ōrum{R}"} forms["gen_pl_f"] = {stem .. "um", stem .. "ārum{R}"} forms["gen_pl_n"] = {stem .. "um", stem .. "ōrum{R}"} else error("Unrecognized distributive numeral stem (doesn't end in ''n''): " .. stem) end original = stem stem = args[2] end forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["1-1+"] = function(data, args) local forms, subtitles, categories = data.forms, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "primera declinación") insert_if_not(categories, "LA:Adjetivos de la primera declinación") forms["nom_sg_m"] = stem .. "a" forms["nom_pl_m"] = stem .. "ae" forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ae" forms["gen_pl_m"] = stem .. "ārum" forms["dat_sg_m"] = stem .. "ae" forms["dat_pl_m"] = stem .. "īs" forms["acc_sg_m"] = stem .. "am" forms["acc_sg_n"] = stem .. "a" forms["acc_pl_m"] = stem .. "ās" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ā" forms["abl_pl_m"] = stem .. "īs" forms["voc_sg_m"] = stem .. "a" forms["voc_pl_m"] = stem .. "ae" forms["voc_pl_n"] = stem .. "a" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) end adj_decl["2-2+"] = function(data, args) local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "segunda declinación") insert_if_not(categories, "LA:Adjetivos de la segunda declinación") local us = "us" local um = "um" local i_pl = stem .. "ī" if types.greek then insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Sustantivos griegos") us = "os" um = "on" i_pl = {i_pl, stem .. "oe"} end forms["nom_sg_m"] = stem .. us forms["nom_sg_n"] = stem .. um forms["nom_pl_m"] = i_pl forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ī" forms["gen_sg_n"] = stem .. "ī" forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_sg_m"] = stem .. "ō" forms["dat_sg_n"] = stem .. "ō" forms["dat_pl_m"] = stem .. "īs" forms["dat_pl_n"] = stem .. "īs" forms["acc_sg_m"] = stem .. um forms["acc_sg_n"] = stem .. um forms["acc_pl_m"] = stem .. "ōs" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ō" forms["abl_sg_n"] = stem .. "ō" forms["abl_pl_m"] = stem .. "īs" forms["abl_pl_n"] = stem .. "īs" forms["voc_sg_m"] = stem .. "e" forms["voc_sg_n"] = stem .. um forms["voc_pl_m"] = i_pl forms["voc_pl_n"] = stem .. "a" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end local function abl_i_e(...) local function update_slot(forms, slot, f, do_copy) if not forms[slot] then return do_copy elseif do_copy then f = deep_copy(f) end forms[slot] = f return true end function abl_i_e(stem, forms, types) local f, do_copy if types["abl_e_i"] then f = {stem .. "e", stem .. "ī"} elseif types["abl_i_e"] then f = {stem .. "ī", stem .. "e"} else return end do_copy = update_slot(forms, "abl_sg_m", f, do_copy) do_copy = update_slot(forms, "abl_sg_f", f, do_copy) -- Neuter doesn't take -e with i-stems. if not types.I then update_slot(forms, "abl_sg_n", f, do_copy) end end return abl_i_e(...) end adj_decl["3-1+"] = function(data, args) local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, dos terminaciones") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con dos terminaciones") forms["nom_sg_m"] = stem1 forms["nom_sg_n"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" abl_i_e(stem2, forms, types) forms["voc_sg_m"] = stem1 forms["voc_sg_n"] = stem1 forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) if types.par then forms["nom_pl_n"] = stem2 .. "a" forms["gen_pl_m"] = stem2 .. "um" forms["gen_pl_n"] = stem2 .. "um" forms["abl_sg_m"] = stem2 .. "e" forms["abl_sg_n"] = stem2 .. "e" forms["loc_sg_m"] = {stem2 .. "ī", stem2 .. "e"} -- Really? forms["loc_sg_n"] = {stem2 .. "ī", stem2 .. "e"} -- Why does this happen? forms["acc_pl_n"] = stem2 .. "a" forms["voc_pl_n"] = stem2 .. "a" end local es_base = stem1:match("^(.-)ēs$") if es_base and es_base == stem2 then if types.greek then forms["nom_sg_n"] = {stem2 .. "ē̆s{?}"} forms["acc_sg_n"] = {stem2 .. "ē̆s{?}"} forms["voc_sg_m"] = {stem2 .. "ē̆s{?}"} forms["voc_sg_n"] = {stem2 .. "ē̆s{?}"} forms["nom_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["acc_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["voc_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["abl_sg_m"] = {stem2 .. "e{?}", stem2 .. "ī{?}"} forms["abl_sg_n"] = {stem2 .. "e{?}", stem2 .. "ī{?}"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["gen_pl_m"] = {stem2 .. "um{?}", stem2 .. "ium{?}"} forms["gen_pl_n"] = {stem2 .. "um{?}", stem2 .. "ium{?}"} insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Adjetivos griegos") elseif types.not_greek then insert_if_not(data.title, "no griego") end end end adj_decl["3-def+"] = function(data, args) local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, defectivo") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") forms["nom_sg_m"] = stem1 forms["nom_sg_n"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 forms["acc_pl_m"] = stem2 .. "ēs" forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" forms["voc_sg_m"] = stem1 forms["voc_sg_n"] = stem1 forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" if types.tor then insert_if_not(data.title, "tercera declinación, solo en masculino") insert_if_not(categories, "LA:Adjetivos solo en masculino") remove_forms(forms, {"_f$", "_n$"}) forms["nom_sg_m"] = stem1 forms["gen_sg_m"] = stem2 .. "is" forms["dat_sg_m"] = stem2 .. "ī" forms["acc_sg_m"] = stem2 .. "em" forms["abl_sg_m"] = stem2 .. "e" forms["voc_sg_m"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["gen_pl_m"] = stem2 .. "um" forms["dat_pl_m"] = stem2 .. "ibus" forms["acc_pl_m"] = stem2 .. "ēs" forms["abl_pl_m"] = stem2 .. "ibus" forms["voc_pl_m"] = stem2 .. "ēs" end if types.trix then insert_if_not(data.title, "tercera declinación, solo en femenino o en neutro plural") insert_if_not(categories, "LA:Adjetivos solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en neutro") remove_forms(forms, {"_m$", "sg_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = stem2 .. "is" forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = stem2 .. "em" forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"} forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = stem2 .. "ēs" forms["gen_pl_f"] = stem2 .. "ium" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = stem2 .. "ēs" forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = stem2 .. "ēs" end if types.trixf then insert_if_not(data.title, "tercera declinación, solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en femenino") remove_forms(forms, {"_m$","_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = stem2 .. "is" forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = stem2 .. "em" forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"} forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = stem2 .. "ēs" forms["gen_pl_f"] = stem2 .. "ium" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = stem2 .. "ēs" forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = stem2 .. "ēs" end if types.idis then insert_if_not(data.title, "tercera declinación, solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en femenino") remove_forms(forms, {"_m$","_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = {stem2 .. "is", stem2 .. "os"} forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = {stem2 .. "em", stem2 .. "a"} forms["abl_sg_f"] = stem2 .. "e" forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = {stem2 .. "ēs", stem2 .. "es"} forms["gen_pl_f"] = stem2 .. "um" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = {stem2 .. "ēs", stem2 .. "as"} forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = {stem2 .. "ēs", stem2 .. "es"} end forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-C+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem1 = args[1] local stem2 = stem1 .. "ōr" insert_if_not(data.title, "tercera declinación, comparativo") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos comparativos") forms["nom_sg_m"] = stem1 .. "or" forms["nom_sg_n"] = stem1 .. "us" forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "a" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "um" forms["gen_pl_n"] = stem2 .. "um" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 .. "us" forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"} forms["acc_pl_n"] = stem2 .. "a" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" abl_i_e(stem2, forms, types) forms["voc_sg_m"] = stem1 .. "or" forms["voc_sg_n"] = stem1 .. "us" forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "a" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-P+"] = function(data, args) local forms, notes = data.forms, data.notes local stem2 = args[2] adj_decl["3-1+"](data, args) insert_if_not(data.title, "tercera declinación, participio") insert_if_not(data.categories, "LA:Adjetivos de la tercera declinación") forms["abl_sg_m"] = {stem2 .. "e{PART}", stem2 .. "ī{ADJ}"} forms["abl_sg_n"] = {stem2 .. "e{PART}", stem2 .. "ī{ADJ}"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"} end adj_decl["3-2+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem = args[1] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, dos terminaciones") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con dos terminaciones") forms["nom_sg_m"] = stem .. "is" forms["nom_sg_n"] = stem .. "e" forms["nom_pl_m"] = stem .. "ēs" forms["nom_pl_n"] = stem .. "ia" forms["gen_sg_m"] = stem .. "is" forms["gen_sg_n"] = stem .. "is" forms["gen_pl_m"] = stem .. "ium" forms["gen_pl_n"] = stem .. "ium" forms["dat_sg_m"] = stem .. "ī" forms["dat_sg_n"] = stem .. "ī" forms["dat_pl_m"] = stem .. "ibus" forms["dat_pl_n"] = stem .. "ibus" forms["acc_sg_m"] = stem .. "em" forms["acc_sg_n"] = stem .. "e" forms["acc_pl_m"] = {stem .. "īs", stem .. "ēs"} forms["acc_pl_n"] = stem .. "ia" forms["abl_sg_m"] = stem .. "ī" forms["abl_sg_n"] = stem .. "ī" forms["abl_pl_m"] = stem .. "ibus" forms["abl_pl_n"] = stem .. "ibus" -- abl_i_e(stem, forms, types) -- enable once [[Module:la-nominal]] has ben updated forms["voc_sg_m"] = stem .. "is" forms["voc_sg_n"] = stem .. "e" forms["voc_pl_m"] = stem .. "ēs" forms["voc_pl_n"] = stem .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-3+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con tres terminaciones") forms["nom_sg_m"] = stem1 forms["nom_sg_f"] = stem2 .. "is" forms["nom_sg_n"] = stem2 .. "e" forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_f"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_f"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_f"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_f"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_f"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_f"] = stem2 .. "em" forms["acc_sg_n"] = stem2 .. "e" forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_f"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_f"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_f"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" -- abl_i_e(stem2, forms, types) -- enable once [[Module:la-nominal]] has ben updated forms["voc_sg_m"] = stem1 forms["voc_sg_f"] = stem2 .. "is" forms["voc_sg_n"] = stem2 .. "e" forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_f"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["indecl+"] = function(data, args) local forms, subtitles, categories = data.forms, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(categories, "LA:Adjetivos indeclinables") forms["nom_sg_m"] = stem forms["nom_pl_m"] = {} forms["gen_sg_m"] = {} forms["gen_pl_m"] = {} forms["dat_sg_m"] = {} forms["dat_pl_m"] = {} forms["acc_sg_m"] = stem forms["acc_pl_m"] = {} forms["abl_sg_m"] = {} forms["abl_pl_m"] = {} forms["voc_sg_m"] = {} forms["voc_pl_m"] = {} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) end adj_decl["irreg+"] = function(data,args) local forms, types, pos, notes, categories = data.forms, data.types, data.pos, data.notes, data.categories local arg1 = args[1] insert_if_not(data.title, "irregular") insert_if_not(categories, "LA:Adjetivos irregulares") if arg1 == "duo" or arg1 == "ambō" then local stem = sub(arg1, 1, -2) -- data.title = stem == "amb" and "irregular adjective" or "numeral" data.num = "pl" local stem_with_o = stem .. (stem == "amb" and "ō" or "o") forms["nom_pl_m"] = stem_with_o forms["nom_pl_f"] = stem .. "ae" forms["nom_pl_n"] = stem_with_o forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_f"] = stem .. "ārum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_pl_m"] = stem .. "ōbus" forms["dat_pl_f"] = stem .. "ābus" forms["dat_pl_n"] = stem .. "ōbus" forms["acc_pl_m"] = {stem .. "ōs", stem_with_o} forms["acc_pl_f"] = stem .. "ās" forms["acc_pl_n"] = stem_with_o forms["abl_pl_m"] = stem .. "ōbus" forms["abl_pl_f"] = stem .. "ābus" forms["abl_pl_n"] = stem .. "ōbus" forms["voc_pl_m"] = stem_with_o forms["voc_pl_f"] = stem .. "ae" forms["voc_pl_n"] = stem_with_o if stem == "du" then forms["gen_pl_m"] = {forms["gen_pl_m"], "duum", "duom{†}"} forms["gen_pl_n"] = {forms["gen_pl_n"], "duum", "duom{†}"} end elseif arg1:sub(-6) == "mīlle" then insert_if_not(data.title, "numeral semiindeclinable") local stem = arg1:sub(1, -3) forms["nom_sg_m"] = stem .. "le" forms["nom_pl_m"] = {stem .. "ia", stem .. "lia"} forms["gen_sg_m"] = stem .. "le" forms["gen_pl_m"] = {stem .. "ium", stem .. "lium"} forms["dat_sg_m"] = stem .. "le" forms["dat_pl_m"] = {stem .. "ibus", stem .. "libus"} forms["acc_sg_m"] = stem .. "le" forms["acc_pl_m"] = {stem .. "ia", stem .. "lia"} forms["abl_sg_m"] = stem .. "le" forms["abl_pl_m"] = {stem .. "ibus", stem .. "libus"} forms["voc_sg_m"] = stem .. "le" forms["voc_pl_m"] = {stem .. "ia", stem .. "lia"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) elseif arg1 == "ille" or arg1 == "iste" or arg1 == "ipse" or arg1 == "olle" then local stem = arg1:sub(1, -2) types.ius = true adj_decl["1&2+"](data, {stem}) insert_if_not(data.title, "demostrativo") -- .. " " .. singularize(data.pos) forms["nom_sg_m"] = arg1 if arg1 == "ipse" then add_form(forms, "nom_sg_n", stem, "ud{MED}") add_form(forms, "acc_sg_n", stem, "ud{MED}") else forms["nom_sg_n"] = stem .. "ud" forms["acc_sg_n"] = stem .. "ud" end forms["voc_sg_m"] = {} forms["voc_sg_f"] = {} forms["voc_sg_n"] = {} forms["voc_pl_m"] = {} forms["voc_pl_f"] = {} forms["voc_pl_n"] = {} elseif arg1 == "illic" or arg1 == "istic" or arg1 == "isthic" then insert_if_not(data.title, "demostrativo") -- .. " " .. singularize(data.pos) local stem = arg1:sub(1, -3) forms["nom_sg_m"] = stem .. "ic" forms["nom_sg_f"] = stem .. "aec" forms["nom_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"} forms["gen_sg_m"] = stem .. "ī̆usce" forms["gen_sg_f"] = stem .. "ī̆usce" forms["gen_sg_n"] = stem .. "ī̆usce" forms["dat_sg_m"] = stem .. "īc" forms["dat_sg_f"] = stem .. "īc" forms["dat_sg_n"] = stem .. "īc" forms["acc_sg_m"] = stem .. "unc" forms["acc_sg_f"] = stem .. "anc" forms["acc_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"} forms["abl_sg_m"] = stem .. "ōc" forms["abl_sg_f"] = stem .. "āc" forms["abl_sg_n"] = stem .. "ōc" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["nom_pl_m"] = stem .. "īsce" forms["nom_pl_f"] = stem .. "aec" forms["nom_pl_n"] = stem .. "aec" forms["gen_pl_m"] = stem .. "ōrunc{?}" forms["gen_pl_f"] = stem .. "ārunc{?}" forms["gen_ok_n"] = stem .. "ōrunc{?}" forms["dat_pl_m"] = stem .. "īsce" forms["dat_pl_f"] = stem .. "īsce" forms["dat_pl_n"] = stem .. "īsce" forms["acc_pl_m"] = stem .. "ōsce" forms["acc_pl_f"] = stem .. "āsce" forms["acc_pl_n"] = stem .. "aec" forms["abl_pl_m"] = stem .. "īsce" forms["abl_pl_f"] = stem .. "īsce" forms["abl_pl_n"] = stem .. "īsce" forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif arg1 == "hice" then insert_if_not(data.title, "demostrativo") -- .. " pronoun" forms["nom_sg_m"] = "hice" forms["nom_sg_f"] = "haece" forms["nom_sg_n"] = "hoce" forms["nom_pl_m"] = "hīce" forms["nom_pl_f"] = "haece" forms["nom_pl_n"] = "haece" forms["gen_sg_m"] = "huiusce" forms["gen_sg_f"] = "huiusce" forms["gen_sg_n"] = "huiusce" forms["gen_pl_m"] = {"hōrunce", "hōrumce"} forms["gen_pl_f"] = {"hārunce", "hārumce"} forms["gen_pl_n"] = {"hōrunce", "hōrumce"} forms["dat_sg_m"] = "huīce" forms["dat_sg_f"] = "huīce" forms["dat_sg_n"] = "huīce" forms["dat_pl_m"] = "hīsce" forms["dat_pl_f"] = "hīsce" forms["dat_pl_n"] = "hīsce" forms["acc_sg_m"] = "hunce" forms["acc_sg_f"] = "hance" forms["acc_sg_n"] = "hoce" forms["acc_pl_m"] = "hōsce" forms["acc_pl_f"] = "hāsce" forms["acc_pl_n"] = "haece" forms["abl_sg_m"] = "hōce" forms["abl_sg_f"] = "hāce" forms["abl_sg_n"] = "hōce" forms["abl_pl_m"] = "hīsce" forms["abl_pl_f"] = "hīsce" forms["abl_pl_n"] = "hīsce" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif arg1 == "plūs" then insert_if_not(data.title, "comparativo") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación con una terminación") data.note = "Ninguna de las formas en singular se usaron en latín clásico" forms["nom_sg_n"] = "plūs" forms["nom_pl_m"] = "plūrēs" forms["nom_pl_n"] = "plūra" forms["gen_sg_m"] = "plūris" forms["gen_sg_n"] = "plūris" forms["gen_pl_m"] = "plūrium" forms["gen_pl_n"] = "plūrium" forms["dat_sg_m"] = "plūrī" forms["dat_sg_n"] = "plūrī" forms["dat_pl_m"] = "plūribus" forms["dat_pl_n"] = "plūribus" forms["acc_sg_m"] = "plūrem" forms["acc_sg_f"] = "plūrem" forms["acc_sg_n"] = "plūs" forms["acc_pl_m"] = {"plūrēs", "plūrīs"} forms["acc_pl_n"] = "plūra" forms["abl_sg_m"] = {"plūrī", "plūre"} forms["abl_sg_f"] = {"plūrī", "plūre"} forms["abl_sg_n"] = {"plūrī", "plūre"} forms["abl_pl_m"] = "plūribus" forms["abl_pl_n"] = "plūribus" forms["voc_sg_n"] = "plūs" forms["voc_pl_m"] = "plūrēs" forms["voc_pl_n"] = "plūra" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif match(arg1, "^egō̆?$") or arg1 == "nōs" then insert_if_not(data.title, "pronombre nominativo") forms["nom_sg_m"] = arg1 forms["nom_pl_m"] = "nōs" forms["gen_sg_m"] = "meī" forms["gen_pl_m"] = {"nostrī", "nostrum"} forms["dat_sg_m"] = "mihī̆" forms["dat_pl_m"] = "nōbīs" forms["acc_sg_m"] = {"mē", "mēmē"} forms["acc_pl_m"] = "nōs" forms["abl_sg_m"] = {"mē", "mēmē"} forms["abl_pl_m"] = "nōbīs" forms["voc_sg_m"] = arg1 forms["voc_pl_m"] = "nōs" elseif arg1 == "tū" or arg1 == "vōs" then insert_if_not(data.title, "pronombre nominativo") forms["nom_sg_m"] = arg1 forms["nom_pl_m"] = "vōs" forms["gen_sg_m"] = "tuī" forms["gen_pl_m"] = {"vestrī", "vestrum"} forms["dat_sg_m"] = "tibī̆" forms["dat_pl_m"] = "vōbīs" forms["acc_sg_m"] = {"tē", "tētē"} forms["acc_pl_m"] = "vōs" forms["abl_sg_m"] = {"tē", "tētē"} forms["abl_pl_m"] = "vōbīs" forms["voc_sg_m"] = arg1 forms["voc_pl_m"] = "vōs" elseif arg1 == "suī" then insert_if_not(data.title, "pronombre reflexivo") forms["nom_sg_m"] = {} forms["nom_pl_m"] = {} forms["gen_sg_m"] = arg1 forms["gen_pl_m"] = forms["gen_sg_m"] forms["dat_sg_m"] = "sibī̆" forms["dat_pl_m"] = forms["dat_sg_m"] forms["acc_sg_m"] = {"sē", "sēsē"} forms["acc_pl_m"] = {"sē", "sēsē"} forms["abl_sg_m"] = {"sē", "sēsē"} forms["abl_pl_m"] = {"sē", "sēsē"} forms["voc_sg_m"] = {} forms["voc_pl_m"] = {} elseif arg1 == "is" or arg1 == "īdem" then insert_if_not(data.title, "pronombre demostrativo") forms["nom_sg_m"] = "is" forms["nom_sg_f"] = "ea" forms["nom_sg_n"] = "id" forms["nom_pl_m"] = {"iī", "eī", "ī"} forms["nom_pl_f"] = "eae" forms["nom_pl_n"] = "ea" forms["gen_sg_m"] = {"eius", "ejus"} forms["gen_sg_f"] = {"eius", "ejus"} forms["gen_sg_n"] = {"eius", "ejus"} forms["gen_pl_m"] = {"eōrum", "eum"} forms["gen_pl_f"] = "eārum" forms["gen_pl_n"] = {"eōrum", "eum"} forms["dat_sg_m"] = {"eī", "e͡i", "ēī"} forms["dat_sg_f"] = {"eī", "e͡i", "ēī", "eae"} forms["dat_sg_n"] = {"eī", "e͡i", "ēī"} forms["dat_pl_m"] = {"iīs", "eīs", "īs"} forms["dat_pl_f"] = {"iīs", "eīs", "īs", "eābus"} forms["dat_pl_n"] = {"iīs", "eīs", "īs"} forms["acc_sg_m"] = "eum" forms["acc_sg_f"] = "eam" forms["acc_sg_n"] = "id" forms["acc_pl_m"] = "eōs" forms["acc_pl_f"] = "eās" forms["acc_pl_n"] = "ea" forms["abl_sg_m"] = "eō" forms["abl_sg_f"] = "eā" forms["abl_sg_n"] = "eō" forms["abl_pl_m"] = {"iīs", "eīs", "īs"} forms["abl_pl_f"] = {"iīs", "eīs", "īs"} forms["abl_pl_n"] = {"iīs", "eīs", "īs"} if arg1 == "īdem" then forms["nom_sg_m"] = "ī" forms["nom_sg_n"] = "i" forms["acc_sg_n"] = "i" end elseif arg1 == "quis" or arg1 == "quī" then data.note = "La forma ''qua'' es preferida frente a ''quae'' cuando se usa como indefinido" local id = "id" if arg1 == "quī" then insert_if_not(data.title, "determinante relativo/interrogativo") id = "od" forms["nom_sg_m"] = {"quī", "quis", "quei{†}"} forms["nom_sg_f"] = {"quae", "qua"} forms["acc_sg_f"] = "quam" forms["abl_sg_m"] = "quō" forms["abl_sg_f"] = "quā" forms["abl_sg_n"] = "quō" else insert_if_not(data.title, "pronombre relativo/interrogativo") forms["nom_sg_m"] = {"quis", "quī"} forms["nom_sg_f"] = {"quae", "qua", "quis{†}"} forms["acc_sg_f"] = {"quam", "quem{†}"} forms["abl_sg_m"] = {"quō", "quī"} forms["abl_sg_f"] = {"quā", "quī"} forms["abl_sg_n"] = {"quō", "quī"} end forms["nom_sg_n"] = "qu"..id forms["nom_pl_m"] = {"quī", "quei{†}"} forms["nom_pl_f"] = "quae" forms["nom_pl_n"] = {"quae", "qua"} forms["gen_sg_m"] = {"cuius", "quoius{†}"} forms["gen_sg_f"] = {"cuius", "quoius{†}"} forms["gen_sg_n"] = {"cuius", "quoius{†}"} forms["gen_pl_m"] = "quōrum" forms["gen_pl_f"] = "quārum" forms["gen_pl_n"] = "quōrum" forms["dat_sg_m"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_sg_f"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_sg_n"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_pl_m"] = {"quibus", "quīs", "queis{†}"} forms["dat_pl_f"] = {"quibus", "quīs", "queis{†}"} forms["dat_pl_n"] = {"quibus", "quīs", "queis{†}"} forms["acc_sg_m"] = "quem" forms["acc_sg_n"] = "qu"..id forms["acc_pl_m"] = "quōs" forms["acc_pl_f"] = "quās" forms["acc_pl_n"] = {"quae", "qua"} forms["abl_pl_m"] = {"quibus", "quīs", "queis{†}"} forms["abl_pl_f"] = {"quibus", "quīs", "queis{†}"} forms["abl_pl_n"] = {"quibus", "quīs", "queis{†}"} elseif arg1 == "aliquī" then insert_if_not(data.title, "determinante indefinido") forms["nom_sg_m"] = {"aliquī{DET/ADJ}", "aliquis{PRON/SUST}"} forms["nom_sg_f"] = {"aliqua", "aliquae{R}"} forms["nom_sg_n"] = "aliquod" forms["nom_pl_m"] = "aliquī" forms["nom_pl_f"] = "aliquae" forms["nom_pl_n"] = "aliqua" forms["gen_sg_m"] = {"alicuius", "aliquoius{†}"} forms["gen_sg_f"] = {"alicuius", "aliquoius{†}"} forms["gen_sg_n"] = {"alicuius", "aliquoius{†}"} forms["gen_pl_m"] = "aliquōrum" forms["gen_pl_f"] = "aliquārum" forms["gen_pl_n"] = "aliquōrum" forms["dat_sg_m"] = {"alicui", "aliquoi{†}"} forms["dat_sg_f"] = {"alicui", "aliquoi{†}"} forms["dat_sg_n"] = {"alicui", "aliquoi{†}"} forms["dat_pl_m"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["dat_pl_f"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["dat_pl_n"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["acc_sg_m"] = "aliquem" forms["acc_sg_f"] = "aliquam" forms["acc_sg_n"] = "aliquod" forms["acc_pl_m"] = "aliquōs" forms["acc_pl_f"] = "aliquās" forms["acc_pl_n"] = "aliqua" forms["abl_sg_m"] = "aliquō" forms["abl_sg_f"] = "aliquā" forms["abl_sg_n"] = "aliquō" forms["abl_pl_m"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["abl_pl_f"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["abl_pl_n"] = {"aliquīs", "aliquibus", "aliqueis{†}"} elseif arg1 == "quisquam" then insert_if_not(data.title, "determinante indefinido, concordancia en negativo") data.note = "En latín clásico, era preferidas las formas de ''ūllus'' en lugar de las esta voz para el femenino y el neutro." forms["nom_sg_m"] = "quisquam" forms["nom_sg_f"] = {"quaequam", "quisquam{†}"} forms["nom_sg_n"] = "quodquam" forms["nom_pl_m"] = "quīquam" forms["nom_pl_f"] = "quaequam" forms["nom_pl_n"] = "quaequam" forms["gen_sg_m"] = "cuiusquam" forms["gen_sg_f"] = "cuiusquam" forms["gen_sg_n"] = "cuiusquam" forms["gen_pl_m"] = "quōrumquam" forms["gen_pl_f"] = "quārumquam" forms["gen_pl_n"] = "quōrumquam" forms["dat_sg_m"] = "cuiquam" forms["dat_sg_f"] = "cuiquam" forms["dat_sg_n"] = "cuiquam" forms["dat_pl_m"] = "quibusquam" forms["dat_pl_f"] = "quibusquam" forms["dat_pl_n"] = "quibusquam" forms["acc_sg_m"] = "quemquam" forms["acc_sg_f"] = {"quamquam", "quemquam{†}"} forms["acc_sg_n"] = "quodquam" forms["acc_pl_m"] = "quōsquam" forms["acc_pl_f"] = "quāsquam" forms["acc_pl_n"] = "quaequam" forms["abl_sg_m"] = {"quōquam", "quīquam{†}"} forms["abl_sg_f"] = "quāquam" forms["abl_sg_n"] = "quōquam" forms["abl_pl_m"] = "quibusquam" forms["abl_pl_f"] = "quibusquam" forms["abl_pl_n"] = "quibusquam" forms["voc_sg_m"] = "quisquam" forms["voc_sg_f"] = "quaequam" forms["voc_sg_n"] = "quodquam" forms["voc_pl_m"] = "quīquam" forms["voc_pl_f"] = "quaequam" forms["voc_pl_n"] = "quaequam" elseif arg1 == "quisquis" then insert_if_not(data.title, "pronombre relativo/interrogativo") forms["nom_sg_m"] = "quisquis" forms["nom_sg_f"] = "quisquis" forms["nom_sg_n"] = {"quidquid", "quicquid"} forms["nom_pl_m"] = "quīquī" forms["nom_pl_f"] = "quaequae" forms["nom_pl_n"] = "quaequae" forms["gen_sg_m"] = "cuiuscuius" forms["gen_sg_f"] = "cuiuscuius" forms["gen_sg_n"] = "cuiuscuius" forms["gen_pl_m"] = "quōrumquōrum" forms["gen_pl_f"] = "quārumquārum" forms["gen_pl_n"] = "quōrumquōrum" forms["dat_sg_m"] = "cuicui" forms["dat_sg_f"] = "cuicui" forms["dat_sg_n"] = "cuicui" forms["dat_pl_m"] = {"quibusquibus", "quīsquīs"} forms["dat_pl_f"] = {"quibusquibus", "quīsquīs"} forms["dat_pl_n"] = {"quibusquibus", "quīsquīs"} forms["acc_sg_m"] = "quemquem" forms["acc_sg_f"] = "quamquam" forms["acc_sg_n"] = {"quidquid", "quicquid"} forms["acc_pl_m"] = "quōsquōs" forms["acc_pl_f"] = "quāsquās" forms["acc_pl_n"] = "quaequae" forms["abl_sg_m"] = "quōquō" forms["abl_sg_f"] = "quāquā" forms["abl_sg_n"] = "quōquō" forms["abl_pl_m"] = {"quibusquibus", "quīsquīs"} forms["abl_pl_f"] = {"quibusquibus", "quīsquīs"} forms["abl_pl_n"] = {"quibusquibus", "quīsquīs"} forms["voc_sg_m"] = "quisquis" forms["voc_sg_f"] = "quisquis" forms["voc_sg_n"] = {"quidquid", "quicquid"} forms["voc_pl_m"] = "quīquī" forms["voc_pl_f"] = "quaequae" forms["voc_pl_n"] = "quaequae" elseif arg1 == "ecquis" then insert_if_not(data.title, "pronombre interrogativo") forms["nom_sg_m"] = {"ecquis", "ecquī"} forms["nom_sg_f"] = {"ecqua", "ecquae"} forms["nom_sg_n"] = "ecquid" forms["nom_pl_m"] = "ecquī" forms["nom_pl_f"] = "ecquae" forms["nom_pl_n"] = {"ecqua", "ecquae"} forms["gen_sg_m"] = "eccuius" forms["gen_sg_f"] = "eccuius" forms["gen_sg_n"] = "eccuius" forms["dat_sg_m"] = "eccui" forms["dat_sg_f"] = "eccui" forms["dat_sg_n"] = "eccui" forms["acc_sg_m"] = "ecquem" forms["acc_sg_f"] = "ecquam" forms["acc_sg_n"] = "ecquod" forms["acc_pl_m"] = "ecquōs" forms["acc_pl_f"] = "ecquās" forms["acc_pl_n"] = {"ecqua", "ecquae"} forms["abl_sg_m"] = {"ecquō", "ecquī"} forms["abl_sg_f"] = {"ecquā", "ecquī"} forms["abl_sg_n"] = {"ecquō", "ecquī"} elseif arg1 == "quīdam" then insert_if_not(data.title, "pronombre indefinido") forms["nom_sg_m"] = "quīdam" forms["nom_sg_f"] = "quaedam" forms["nom_sg_n"] = "quiddam" forms["nom_pl_m"] = {"quīdam", "quēsdam{†}"} forms["nom_pl_f"] = "quaedam" forms["nom_pl_n"] = "quaedam" forms["gen_sg_m"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_sg_f"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_sg_n"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_pl_m"] = {"quōrundam", "quōrumdam"} forms["gen_pl_f"] = {"quārundam", "quārumdam"} forms["gen_pl_n"] = {"quōrundam", "quōrumdam"} forms["dat_sg_m"] = {"cuidam", "quoidam{†}"} forms["dat_sg_f"] = {"cuidam", "quoidam{†}"} forms["dat_sg_n"] = {"cuidam", "quoidam{†}"} forms["dat_pl_m"] = {"quibusdam", "quīsdam{†}"} forms["dat_pl_f"] = {"quibusdam", "quīsdam{†}"} forms["dat_pl_n"] = {"quibusdam", "quīsdam{†}"} forms["acc_sg_m"] = {"quendam", "quemdam"} forms["acc_sg_f"] = {"quandam", "quamdam"} forms["acc_sg_n"] = "quiddam" forms["acc_pl_m"] = {"quōsdam", "quēsdam{†}"} forms["acc_pl_f"] = "quāsdam" forms["acc_pl_n"] = "quaedam" forms["abl_sg_m"] = "quōdam" forms["abl_sg_f"] = "quādam" forms["abl_sg_n"] = "quōdam" forms["abl_pl_m"] = {"quibusdam", "quīsdam{†}"} forms["abl_pl_f"] = {"quibusdam", "quīsdam{†}"} forms["abl_pl_n"] = {"quibusdam", "quīsdam{†}"} elseif arg1 == "nēmō" then insert_if_not(data.title, "Determinante y pronombre, concordancia en negativo") forms["nom_sg_m"] = "nēmō" forms["nom_sg_f"] = "nēmō" forms["gen_sg_m"] = {"nūllī̆us", "nēminis{R}"} forms["gen_sg_f"] = {"nūllī̆us", "nēminis{R}"} forms["dat_sg_m"] = "nēminī" forms["dat_sg_f"] = "nēminī" forms["acc_sg_m"] = "nēminem" forms["acc_sg_f"] = "nēminem" forms["abl_sg_m"] = {"nūllō", "nēmine{R}"} forms["abl_sg_f"] = {"nūllā", "nēmine{R}"} else error('adjective ' .. arg1 .. ' not recognized') end end local function extract_base(lemma, ending) if ending:find("(", nil, true) then return match(lemma, ending) end return match(lemma, "^(.*)" .. ending .. "$") end local function get_noun_subtype_by_ending(lemma, stem2, decltype, specified_subtypes, endings_and_subtypes) for _, ending_and_subtypes in ipairs(endings_and_subtypes) do local ending = ending_and_subtypes[1] local subtypes = ending_and_subtypes[2] local not_this_subtype = false if ( specified_subtypes.pl and not contains(subtypes, "pl") or contains(subtypes, "both") and not specified_subtypes.both ) then -- We now require that plurale tantum terms specify a plural-form lemma. -- The autodetected subtypes will include 'pl' for such lemmas; if not, -- we fail this entry. Additionally, if the rule contains 'both', it -- must be explicitly specified to match. not_this_subtype = true else for _, subtype in ipairs(subtypes) do -- A subtype is directly canceled by specifying -SUBTYPE. -- In addition, M or F as a subtype is canceled by N, and -- vice-versa, but M doesn't cancel F or vice-versa; instead, -- we simply ignore the conflicting gender specification when -- constructing the combination of specified and inferred subtypes. -- The reason for this is that neuters have distinct declensions -- from masculines and feminines, but masculines and feminines have -- the same declension, and various nouns in Latin that are -- normally masculine are exceptionally feminine and vice-versa -- (nauta, agricola, fraxinus, malus "apple tree", manus, rēs, -- etc.). -- -- In addition, sg as a subtype is canceled by pl and vice-versa. -- It's also possible to specify both, which will override sg but -- not cancel it (in the sense that it won't prevent the relevant -- rule from matching). For example, there's a rule specifying that -- lemmas beginning with a capital letter and ending in -ius take -- the ius.voci.sg subtypes. Specifying such a lemma with the -- subtype both will result in the ius.voci.both subtypes, whereas -- specifying such a lemma with the subtype pl will cause this rule -- not to match, and it will fall through to a less specific rule -- that returns just the ius subtype, which will be combined with -- the explicitly specified pl subtype to produce ius.pl. if specified_subtypes["-" .. subtype] or subtype == "N" and (specified_subtypes.M or specified_subtypes.F) or (subtype == "M" or subtype == "F") and specified_subtypes.N or subtype == "sg" and specified_subtypes.pl or subtype == "pl" and specified_subtypes.sg then not_this_subtype = true break end end end if not not_this_subtype then if type(ending) == "table" then local lemma_ending = ending[1] local stem2_ending = ending[2] local base = extract_base(lemma, lemma_ending) if base and base .. stem2_ending == stem2 then return base, stem2, subtypes end else local base = extract_base(lemma, ending) if base then return base, stem2, subtypes end end end end if decltype then error("Unrecognized ending for declension-" .. decltype .. " noun: " .. lemma) end return lemma, stem2, keys_to_list(specified_subtypes) end local patterns = { {"[mM]a", "%0t"}, {"e", ""}, {"([aoAO])([lr])", "%1" .. MACRON .. "%2"}, {"[eE]l", "%0l"}, {"([mM])en", "%1in"}, {"([tT]ūd)ō", "%1in"}, {"([gG])ō", "%1in"}, {"[ōŌ]", "%1n"}, {"er", "r"}, {"[ēi]s", ""}, {"([āēīōūȳĀĒĪŌŪȲ]n)s", function(v) return (gsub(toNFD(v), MACRON, "") .. "t") end}, {"([cC])eps", "%1ipit"}, {"([bp])s", "%1"}, {"us", "or"}, {"s", "t"}, {"ex", "ic"}, {"x", "c"}, } local function make_stem2(stem) local n for _, pattern in ipairs(patterns) do local key = pattern[1] stem, n = gsub(stem, key .. "$", pattern[2]) if n > 0 then -- debug_track("la-utilities/" .. key) REVISAR return toNFC(stem) end end -- debug_track("la-utilities") REVISAR return stem end local function detect_noun_subtype(lemma, stem2, typ, subtypes) local base, _ if typ == "1" then return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"ām", {"F", "am"}}, {"ās", {"M", "Greek", "Ma"}}, {"ēs", {"M", "Greek", "Me"}}, {"ē", {"F", "Greek"}}, {"ae", {"F", "pl"}}, {"a", {"F"}}, }) elseif typ == "2" then local detected_subtypes lemma, stem2, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"^(.*r)$", {"M", "er"}}, {"^(.*v)os$", {"M", "vos"}}, {"^(.*v)om$", {"N", "vom"}}, -- If the lemma ends in -os and the user said N or -M, then the -- following won't apply, and the second (neuter) -os will applly. {"os", {"M", "Greek"}}, {"os", {"N", "Greek", "us"}}, {"on", {"N", "Greek"}}, -- -ius beginning with a capital letter is assumed a proper name, -- and takes the voci subtype (vocative in -ī) along with the ius -- subtype and sg-only. Other nouns in -ius just take the ius -- subtype. Explicitly specify "sg" so that if .pl is given, -- this rule won't apply. {"^(%u.*)ius$", {"M", "ius", "voci", "sg"}}, {"ius", {"M", "ius"}}, {"ium", {"N", "ium"}}, -- If the lemma ends in -us and the user said N or -M, then the -- following won't apply, and the second (neuter) -us will applly. {"us", {"M"}}, {"us", {"N", "us"}}, {"um", {"N"}}, {"iī", {"M", "ius", "pl"}}, {"ia", {"N", "ium", "pl"}}, -- If the lemma ends in -ī and the user said N or -M, then the -- following won't apply, and the second (neuter) -ī will applly. {"ī", {"M", "pl"}}, {"ī", {"N", "us", "pl"}}, {"oe", {"M", "Greek", "pl"}}, {"a", {"N", "pl"}}, }) stem2 = stem2 or lemma return lemma, stem2, detected_subtypes elseif typ == "3" then if subtypes.pl then if subtypes.Greek then base = lemma:match("^(.*)erēs$") if base then return base .. "ēr", base .. "er", {"er"} end base = lemma:match("^(.*)ontēs$") if base then return base .. "ōn", base .. "ont", {"on"} end base = lemma:match("^(.*)es$") if base then return base, stem2 or base, {} end error("Unrecognized ending for declension-3 plural Greek noun: " .. lemma) end base = lemma:match("^(.*)ia$") if base then return base, stem2 or base, {"N", "I", "pure"} end base = lemma:match("^(.*)a$") if base then return base, stem2 or base, {"N"} end base = lemma:match("^(.*)ēs$") if base then return base, stem2 or base, {} end error("Unrecognized ending for declension-3 plural noun: " .. lemma) end stem2 = stem2 or make_stem2(lemma) local detected_subtypes if subtypes.Greek then base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"is", ""}, {"I"}}, {"ēr", {"er"}}, {"ōn", {"on"}}, }) if base then return lemma, stem2, detected_subtypes end return lemma, stem2, {} end if not subtypes.N then base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"^(%u.*pol)is$", ""}, {"F", "polis", "sg", "loc"}}, {{"tūdō", "tūdin"}, {"F"}}, {{"tās", "tāt"}, {"F"}}, {{"tūs", "tūt"}, {"F"}}, {{"tiō", "tiōn"}, {"F"}}, {{"siō", "siōn"}, {"F"}}, {{"xiō", "xiōn"}, {"F"}}, {{"gō", "gin"}, {"F"}}, {{"or", "ōr"}, {"M"}}, {{"tr[iī]x", "trīc"}, {"F"}}, {{"is", ""}, {"I"}}, {{"^(%l.*)ēs$", ""}, {"I"}}, }) if base then return lemma, stem2, detected_subtypes end end base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"us", "or"}, {"N"}}, {{"us", "er"}, {"N"}}, {{"ma", "mat"}, {"N"}}, {{"men", "min"}, {"N"}}, {{"^(%u.*)e$", ""}, {"N", "sg"}}, {{"e", ""}, {"N", "I", "pure"}}, {{"al", "āl"}, {"N", "I", "pure"}}, {{"ar", "ār"}, {"N", "I", "pure"}}, }) if base then return lemma, stem2, detected_subtypes end return lemma, stem2, {} elseif typ == "4" then if subtypes.echo or subtypes.Callisto then base = lemma:match("^(.*)ō$") if not base then error("Declension-4 noun of subtype .echo or .Callisto should end in -ō: " .. lemma) end if subtypes.Callisto then return base, nil, {"F", "sg"} else return base, nil, {"F"} end end return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"us", {"M"}}, {"ū̆", {"N"}}, {"ūs", {"M", "pl"}}, {"ua", {"N", "pl"}}, }) elseif typ == "5" then return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"iēs", {"F", "i"}}, {"iēs", {"F", "i", "pl"}}, {"ēs", {"F"}}, {"ēs", {"F", "pl"}}, }) elseif typ == "sgpl" then return lemma, stem2, {} elseif typ == "irreg" and lemma == "domus" then -- [[domus]] auto-sets data.loc = true, but we need to know this -- before declining the noun so we can propagate it to other segments. return lemma, nil, {"loc"} elseif typ == "indecl" or typ == "irreg" and ( lemma == "Deus" or match(lemma, "^[IJ]ēs[uū]s$") or lemma == "Athōs" or lemma == "vēnum" ) then -- Indeclinable nouns, and certain irregular nouns, set data.num = "sg", -- but we need to know this before declining the noun so we can -- propagate it to other segments. return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"", {"both"}}, {"", {"sg"}}, {"", {"pl"}}, }) elseif typ == "indecl" or typ == "irreg" then return lemma, nil, {} else return nil, nil, {} end end -- Given ENDINGS_AND_SUBTYPES (a list of four-tuples of ENDING, RETTYPE, -- SUBTYPES, PROCESS_RETVAL), check each ENDING in turn against LEMMA and -- STEM2. If it matches, return a four-tuple BASE, STEM2, RETTYPE, NEW_SUBTYPES -- where BASE is normally the remainder of LEMMA minus the ending, STEM2 is -- as passed in, RETTYPE is as passed in, and NEW_SUBTYPES is the same as -- SUBTYPES minus any subtypes beginning with a hyphen. If no endings match, -- throw an error if DECLTYPPE is non-nil, mentioning the DECLTYPE -- (user-specified declension); but if DECLTYPE is nil, just return the tuple -- nil, nil, nil, nil. -- -- In order for a given entry to match, ENDING must match and also the subtypes -- in SUBTYPES (a list) must not be incompatible with the passed-in -- user-specified subtypes SPECIFIED_SUBTYPES (a set, i.e. a table where the -- keys are strings and the value is always true). "Incompatible" means that -- a given SUBTYPE is specified in either one and -SUBTYPE in the other, or -- that "pl" is found in SPECIFIED_SUBTYPES and not in SUBTYPES. -- -- The ending spec in ENDINGS_AND_SUBTYPES is one of the following: -- -- 1. A simple string, e.g. "tūdō", specifying an ending. -- 2. A regex that should match the entire lemma (it should be anchored at -- the beginning with ^ and at the end with $), and contains a single -- capturing group to match the base. -- 3. A pair {SIMPLE_STRING_OR_REGEX, STEM2_ENDING} where -- SIMPLE_STRING_OR_REGEX is one of the previous two possibilities and -- STEM2_ENDING is a string specifying the corresponding ending that must -- be present in STEM2. If this form is used, the combination of -- base + STEM2_ENDING must exactly match STEM2 in order for this entry -- to be considered a match. An example is {"is", ""}, which will match -- lemma == "follis", stem2 == "foll", but not lemma == "lapis", -- stem2 == "lapid". -- -- If PROCESS_STEM2 is given and the returned STEM2 would be nil, call -- process_stem2(BASE) to get the STEM2 to return. local function get_adj_type_and_subtype_by_ending(lemma, stem2, decltype, specified_subtypes, endings_and_subtypes, process_stem2) for _, ending_and_subtypes in ipairs(endings_and_subtypes) do local ending = ending_and_subtypes[1] local rettype = ending_and_subtypes[2] local subtypes = ending_and_subtypes[3] local process_retval = ending_and_subtypes[4] local not_this_subtype = false if ( specified_subtypes.pl and not contains(subtypes, "pl") or contains(subtypes, "both") and not specified_subtypes.both ) then -- We now require that plurale tantum terms specify a plural-form lemma. -- The autodetected subtypes will include 'pl' for such lemmas; if not, -- we fail this entry. Additionally, if the rule contains 'both', it -- must be explicitly specified to match. not_this_subtype = true else for _, subtype in ipairs(subtypes) do -- A subtype is directly canceled by specifying -SUBTYPE. if specified_subtypes["-" .. subtype] then not_this_subtype = true break end -- A subtype is canceled if the user specified SUBTYPE and -- -SUBTYPE is given in the to-be-returned subtypes. local must_not_be_present = subtype:match("^%-(.*)$") if must_not_be_present and specified_subtypes[must_not_be_present] then not_this_subtype = true break end end end if not not_this_subtype then local base if type(ending) == "table" then local lemma_ending = ending[1] local stem2_ending = ending[2] base = extract_base(lemma, lemma_ending) if base and base .. stem2_ending ~= stem2 then base = nil end else base = extract_base(lemma, ending) end if base then -- Remove subtypes of the form -SUBTYPE from the subtypes -- to be returned. local new_subtypes = {} for _, subtype in ipairs(subtypes) do if subtype:sub(1, 1) ~= "-" then insert(new_subtypes, subtype) end end if process_retval then base, stem2 = process_retval(base, stem2) end if process_stem2 then stem2 = stem2 or process_stem2(base) end return base, stem2, rettype, new_subtypes end end end if not decltype then return lemma, stem2, nil, keys_to_list(specified_subtypes) elseif decltype == "" then error("Unrecognized ending for adjective: " .. lemma) else error("Unrecognized ending for declension-" .. decltype .. " adjective: " .. lemma) end end -- Autodetect the type and subtype of an adjective given all the information -- specified by the user: lemma, stem2, declension type and specified subtypes. -- Four values are returned: the lemma base (i.e. the stem of the lemma, as -- required by the declension functions), the value of stem2 to pass to the -- declension function, the declension type and the autodetected subtypes. -- Note that this will not detect a given subtype if -SUBTYPE is specified for -- any subtype that would be returned, or if SUBTYPE is specified and -SUBTYPE -- is among the subtypes that would be returned (such subtypes are filtered out -- of the returned subtypes). local function detect_adj_type_and_subtype(lemma, stem2, typ, subtypes) local function base_as_stem2(base, stem2) return base, base end local function constant_base(baseval) return function(base, stem2) return baseval, nil end end local function decl12_stem2(base) return base end local function decl3_stem2(base) return make_stem2(base) end local decl12_entries = { {"us", "1&2+", {}}, {"a", "1&2+", {}}, {"um", "1&2+", {}}, {"ī", "1&2+", {"pl"}}, {"ae", "1&2+", {"pl"}}, {"a", "1&2+", {"pl"}}, -- Nearly all -os adjectives are greekA {"os", "1&2+", {"greekA", "-greekE"}}, {"os", "1&2+", {"greekE", "-greekA"}}, {"ē", "1&2+", {"greekE", "-greekA"}}, {"on", "1&2+", {"greekA", "-greekE"}}, {"on", "1&2+", {"greekE", "-greekA"}}, {"^(.*er)$", "1&2+", {"er"}}, {"^(.*ur)$", "1&2+", {"er"}}, {"^(h)ic$", "1&2+", {"ic"}}, } local decl3_entries = { {"^(.*er)$", "3-3+", {"I"}}, {"^(.*er)$", "3-3+", {}}, {"is", "3-2+", {"I"}}, {"is", "3-2+", {}}, {"e", "3-2+", {"I"}}, {"e", "3-2+", {}}, {"^(.*[ij])or$", "3-C+", {"abl_e_i", "-abl_i_e"}}, {"^(.*[ij])or$", "3-C+", {}}, {"^(min)or$", "3-C+", {"abl_e_i", "-abl_i_e"}}, {"^(min)or$", "3-C+", {}}, {"^(.*trīx)$", "3-def+", {"trix", "abl_i_e", "-abl_e_i"}}, {"^(.*trīx)$", "3-def+", {"trix"}}, {"^(.*tor)$", "3-def+", {"tor", "abl_i_e", "-abl_e_i"}}, {"^(.*tor)$", "3-def+", {"tor"}}, -- Detect -ēs as 3-1 without auto-inferring .pl if .pl -- not specified. If we don't do this, the later entry for -- -ēs will auto-infer .pl whenever -ēs is specified (which -- won't work for adjectives like quadripēs, volucripēs). -- Essentially, for declension-3 adjectives, we require that -- .pl is given if the lemma is plural. -- -- Most 3-1 adjectives are i-stem (e.g. audāx) so we require -I -- to be given with non-i-stem adjectives. The first entry below -- will apply when -I isn't given, the second when it is given. {"^(.*ēs)$", "3-1+", {"I", "abl_i_e", "-abl_e_i"}}, {"^(.*ēs)$", "3-1+", {"I"}}, {"^(.*ēs)$", "3-1+", {"par", "abl_i_e", "-abl_e_i"}}, {"^(.*ēs)$", "3-1+", {"par"}}, {"^(.*[ij])ōrēs$", "3-C+", {"pl"}}, {"^(min)ōrēs$", "3-C+", {"pl"}}, -- If .pl with -ēs, we don't know if the adjective is 3-1, 3-2 -- or 3-3. Since 3-2 is probably the most common, we infer it -- (as well as the fact that these adjectives *are* in a sense -- 3-2 since they have a distinct neuter in -(i)a. Note that -- we have two entries here; the first one will apply unless -- -I is given, and will infer an i-stem adjective; the second -- one will apply otherwise (and infer a non-i-stem 3-1 adjective). {"ēs", "3-2+", {"pl", "I"}, base_as_stem2}, {"ēs", "3-1+", {"pl", "par"}, base_as_stem2}, -- Same for neuters. {"ia", "3-2+", {"pl", "I"}, base_as_stem2}, {"a", "3-1+", {"pl", "par"}, base_as_stem2}, -- As above for -ēs but for miscellaneous singulars. {"", "3-1+", {"I", "abl_i_e", "-abl_e_i"}}, {"", "3-1+", {"I"}}, {"", "3-1+", {"par", "abl_i_e", "-abl_e_i"}}, {"", "3-1+", {"par"}}, } local function get_subtypes_and_endings(typ, f) local subtypes_and_endings = {} for _, v in ipairs(decl3_entries) do if f(v) then v = deep_copy(v) v[2] = typ insert(subtypes_and_endings, v) end end return subtypes_and_endings end local function compare(spec) return spec[2] == typ end if typ == "+" then local base, new_stem2, rettype, new_subtypes = get_adj_type_and_subtype_by_ending(lemma, stem2, nil, subtypes, decl12_entries, decl12_stem2) if rettype then return base, new_stem2, rettype, new_subtypes else return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl3_entries, decl3_stem2) end elseif typ == "3+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl3_entries, decl3_stem2) elseif typ == "1&2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl12_entries, decl12_stem2) elseif typ == "1-1+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"a", typ, {}}, {"ae", typ, {"pl"}}, }) elseif typ == "2-2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"us", typ, {}}, {"um", typ, {}}, {"ī", typ, {"pl"}}, {"a", typ, {"pl"}}, {"os", typ, {"greek"}}, {"on", typ, {"greek"}}, {"oe", typ, {"greek", "pl"}}, }) elseif typ == "3-1+" then -- Use the specs from `decl3_entries`, but add the two i-stem 3-2+ specs when plural-only, as they're the same when 3-1+. local subtypes_and_endings = get_subtypes_and_endings(typ, function(spec) local spec1, spec2 = spec[1], spec[2] return spec2 == typ or (spec2 == "3-2+" and spec1 == "ēs" or spec1 == "ia") end) return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, subtypes_and_endings, decl3_stem2) elseif typ == "3-def+" then -- Like 3-1+ but defective in gender local subtypes_and_endings = get_subtypes_and_endings(typ, compare) insert(subtypes_and_endings, {"", typ, {"I"}}) insert(subtypes_and_endings, {"", typ, {"par"}}) return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, subtypes_and_endings, decl3_stem2) elseif typ == "3-2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"is", typ, {}}, {"e", typ, {}}, -- Detect -ēs as 3-2 without auto-inferring .pl if .pl -- not specified. If we don't do this, the later entry for -- -ēs will auto-infer .pl whenever -ēs is specified (which -- won't work for adjectives like isoscelēs). Essentially, -- for declension-3 adjectives, we require that .pl is given -- if the lemma is plural. {"ēs", typ, {}}, {"ēs", typ, {"pl"}}, {"ia", typ, {"pl"}}, }, decl3_stem2) elseif typ == "3-3+" or typ == "3-P+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"ēs", typ, {"pl"}, base_as_stem2}, {"ia", typ, {"pl"}, base_as_stem2}, {"", typ, {}}, }, decl3_stem2) elseif typ == "3-C+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, get_subtypes_and_endings(typ, compare), decl3_stem2) elseif typ == "irreg+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"^(duo)$", typ, {"pl"}}, {"^(ambō)$", typ, {"pl"}}, {"^(mīll?ia)$", typ, {"N", "pl"}, constant_base("mīlle")}, -- match ea {"^(ea)$", typ, {}, constant_base("is")}, -- match id {"^(id)$", typ, {}, constant_base("is")}, -- match plural eī, iī {"^([ei]ī)$", typ, {"pl"}, constant_base("is")}, -- match plural ea, eae {"^(eae?)$", typ, {"pl"}, constant_base("is")}, -- match eadem {"^(eadem)$", typ, {}, constant_base("īdem")}, -- match īdem, idem {"^([īi]dem)$", typ, {}, constant_base("īdem")}, -- match plural īdem {"^(īdem)$", typ, {"pl"}}, -- match plural eadem, eaedem {"^(eae?dem)$", typ, {"pl"}, constant_base("īdem")}, -- match illa, ipsa, ista; it doesn't matter if we overmatch because -- we'll get an error as we use the stem itself in the returned base {"^(i[lps][lst])a$", typ, {}, function(base, stem2) return base .. "e", nil end}, -- match illud, istud; as above, it doesn't matter if we overmatch {"^(i[ls][lt])ud$", typ, {}, function(base, stem2) return base .. "e", nil end}, -- match ipsum {"^(ipsum)$", typ, {}, constant_base("ipse")}, -- match plural illī, ipsī, istī; as above, it doesn't matter if we -- overmatch {"^(i[lps][lst])ī$", typ, {"pl"}, function(base, stem2) return base .. "e", nil end}, -- match plural illa, illae, ipsa, ipsae, ista, istae; as above, it -- doesn't matter if we overmatch {"^(i[lps][lst])ae?$", typ, {"pl"}, function(base, stem2) return base .. "e", nil end}, -- Detect quī as non-plural unless .pl specified. {"^(quī)$", typ, {}}, -- Otherwise detect quī as plural. {"^(quī)$", typ, {"pl"}}, -- Same for quae. {"^(quae)$", typ, {}, constant_base("quī")}, {"^(quae)$", typ, {"pl"}, constant_base("quī")}, {"^(quid)$", typ, {}, constant_base("quis")}, {"^(quod)$", typ, {}, constant_base("quī")}, {"^(qui[cd]quid)$", typ, {}, constant_base("quisquis")}, {"^(quīquī)$", typ, {"pl"}, constant_base("quisquis")}, {"^(quaequae)$", typ, {"pl"}, constant_base("quisquis")}, -- match all remaining lemmas in lemma form {"", typ, {}}, }) elseif typ == "indecl+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"", typ, {"both"}}, {"", typ, {"sg"}}, {"", typ, {"pl"}}, }) else -- 0+ return lemma, nil, typ, {} end end local noun_lb = { nom_sg = "sg.", gen_sg = "sg.", dat_sg = "sg.", acc_sg = "sg.", abl_sg = "sg.", voc_sg = "sg.", loc_sg = "sg.", nom_pl = "pl.", gen_pl = "pl.", dat_pl = "pl.", acc_pl = "pl.", abl_pl = "pl.", voc_pl = "pl.", loc_pl = "pl." } function export.sust(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {requerido=true}, ["alt"] = {}, ["num"] = {por_defecto = ""}, ["núm"] = {alias_de = "num"}, ["nota"] = {}, } for form,_ in pairs(noun_lb) do params[form] = {lista=true} end local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) local tpalabras = {} for _,p in ipairs(args) do p = match(p, "^(.-);") or p local a, b = match(p, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local r1 = match(a, "^([^/]+)/") if not r1 then r1 = a end if r1 == "idem" or r1 == "īdem" then -- REVISAR: parche para idem que internamente lo declina como si fuera "i" insert(tpalabras, "ī") else insert(tpalabras, r1) end end local palabras, separadores = separar_palabras(title, concat(tpalabras, "-")) local L = #palabras local M = 1 local declinfo local titles = {} local cats = {} local genero local nosg, nopl = true, true for _,arg in ipairs(args) do local formas = {} for subarg in gsplit(arg, ";") do local types = {} local a, b = match(subarg, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local c, d = match(b, "^(.-)%.(.*)$") if d then for spec in gsplit(d, "%.") do spec = gsub(spec, "(.)%-", "%1_") types[spec] = true end end c = c or b local r = split(a, "/") local r1, r2, detected_subtypes = detect_noun_subtype(r[1], r[2], c, types) for _, subtype in ipairs(detected_subtypes) do if types["-" .. subtype] then -- if a "cancel subtype" spec is given, remove the cancel spec -- and don't apply the subtype types["-" .. subtype] = nil elseif (subtype == "M" or subtype == "F" or subtype == "N") and (types.M or types.F or types.N) then -- if gender already specified, don't create conflicting gender spec elseif (subtype == "sg" or subtype == "pl" or subtype == "both") and (types.sg or types.pl or types.both) then -- if number restriction already specified, don't create conflicting -- number restriction spec else types[subtype] = true end end if not genero then if types.M then genero = "m" end if types.N then genero = "n" end if types.F then genero = "f" end end local es_adj if not r1 and genero then local typ r1, r2, typ, detected_subtypes = detect_adj_type_and_subtype(r[1], r[2], c, types) if r1 then c = typ es_adj = true end end assert(r1, "forma no reconocida: "..r[1]) local cb = es_adj and adj_decl[c] or noun_decl[c] assert(cb, "Especifique el tipo de sustantivo correcto en el primer parámetro") local data = {forms={}, types=types, pos="", subtitles="", notes="", categories=cats, title=titles, loc=types.loc, num=args.num} cb(data, {r1, r2}) if es_adj then local forms_ = {} for form,arr in pairs(data.forms) do local f1, f2 = form:match("^(.*)(_"..genero..")$") if f1 then forms_[f1] = arr end end data.forms = forms_ end if not types.sg then nopl = false end if not types.pl then nosg = false end if types.sg then for key,_ in pairs(data.forms) do if key:find("_pl") then data.forms[key] = {} end end end if types.pl then for key,_ in pairs(data.forms) do if key:find("_sg") then data.forms[key] = {} end end end merge_forms(formas, data.forms, noun_lb) end if not declinfo then declinfo = formas else declinfo = combinar_copulativa(declinfo, formas, separadores[M]) M = M + 1 end end if declinfo["loc_sg"] and #declinfo["loc_sg"] == 0 then declinfo["loc_sg"] = nil end if declinfo["loc_pl"] and #declinfo["loc_pl"] == 0 then declinfo["loc_pl"] = nil end if nosg == false then nosg = find(args["num"], "p") end if nopl == false then nopl = find(args["num"], "s") end local forms = sobreescribir_formas(declinfo, args, false, {}) comprobar_defectivo(forms, {}) forms = desactivar_formas(forms, function (form) return (form:find("pl$") and nopl) or (form:find("sg$") and nosg) end ) local raiz_nom = f(forms["nom_sg"][1] or forms["nom_pl"][1] or "?") local raiz_gen = f(forms["gen_sg"][1] or forms["gen_pl"][1] or "?") forms = agregar_enlaces(forms, title, normalizar_enlace) forms = formatear_formas(forms, noun_lb) local t = {} insert(t, {{""}, {"Singular"}, {"Plural"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_sg"], forms["nom_pl"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_sg"], forms["gen_pl"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_sg"], forms["dat_pl"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_sg"], forms["acc_pl"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_sg"], forms["abl_pl"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_sg"], forms["voc_pl"]}) if (forms["loc_sg"] and forms["loc_sg"][1]) or (forms["loc_pl"] and forms["loc_pl"][1]) then insert(t, {{"Locativo", header=true, color=COLOR_H}, forms["loc_sg"], forms["loc_pl"]}) end insert(t, {{args["nota"] or "", colspan=3}}) return renderizar_tabla( frame, "'''Declinación de ''"..raiz_nom..", "..raiz_gen.."'''''&emsp;&emsp;tipo: "..concat(titles, ", "), t, ns == 0 and cats or {} ) end local adj_lb = { nom_sg_m = "m.", nom_sg_n = "n.", nom_sg_f = "f.", nom_pl_m = "m.", nom_pl_n = "n.", nom_pl_f = "f.", gen_sg_m = "m.", gen_sg_n = "n.", gen_sg_f = "f.", gen_pl_m = "m.", gen_pl_n = "n.", gen_pl_f = "f.", dat_sg_m = "m.", dat_sg_n = "n.", dat_sg_f = "f.", dat_pl_m = "m.", dat_pl_n = "n.", dat_pl_f = "f.", acc_sg_m = "m.", acc_sg_n = "n.", acc_sg_f = "f.", acc_pl_m = "m.", acc_pl_n = "n.", acc_pl_f = "f.", abl_sg_m = "m.", abl_sg_n = "n.", abl_sg_f = "f.", abl_pl_m = "m.", abl_pl_n = "n.", abl_pl_f = "f.", voc_sg_m = "m.", voc_sg_n = "n.", voc_sg_f = "f.", voc_pl_m = "m.", voc_pl_n = "n.", voc_pl_f = "f.", } function export.adj(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {requerido=true}, ["alt"] = {}, ["num"] = {por_defecto = ""}, ["núm"] = {alias_de="num"}, ["gen"] = {por_defecto="mfn"}, ["nota"] = {}, } for form,_ in pairs(adj_lb) do params[form] = {lista=true} end params["dat_pl"] = {lista=true} params["abl_pl"] = {lista=true} params["loc_pl"] = {lista=true} local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) if args["dat_pl"][1] then args["dat_pl_m"] = deep_copy(args["dat_pl"]) args["dat_pl_n"] = deep_copy(args["dat_pl"]) args["dat_pl_f"] = deep_copy(args["dat_pl"]) end if args["abl_pl"][1] then args["abl_pl_m"] = deep_copy(args["abl_pl"]) args["abl_pl_n"] = deep_copy(args["abl_pl"]) args["abl_pl_f"] = deep_copy(args["abl_pl"]) end if args["loc_pl"][1] then args["loc_pl_m"] = deep_copy(args["loc_pl"]) args["loc_pl_n"] = deep_copy(args["loc_pl"]) args["loc_pl_f"] = deep_copy(args["loc_pl"]) end args["dat_pl"] = nil args["abl_pl"] = nil args["loc_pl"] = nil assert(not find(title, " "), "locuciones no soportadas aún") -- REVISAR local tpalabras = {} for _,p in ipairs(args) do p = match(p, "^(.-);") or p local a, b = match(p, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local r1 = match(a, "^([^/]+)/") if not r1 then r1 = a end if r1 == "idem" or r1 == "īdem" then -- REVISAR: parche para idem que internamente lo declina como si fuera "i" insert(tpalabras, "ī") else insert(tpalabras, r1) end end local palabras, separadores = separar_palabras(title, concat(tpalabras, "-")) local L = #palabras local M = 1 local declinfo local titles = {} local cats = {} local nosg, nopl = true, true for _,arg in ipairs(args) do local formas = {} for subarg in gsplit(arg, ";") do local types = {} local a, b = match(subarg, "^(.-)%.(.*)$") a = a or subarg b = b or "+" local c, d = match(b, "^(.-)%.(.*)$") if d then for spec in gsplit(d, "%.") do spec = gsub(spec, "(.)%-", "%1_") types[spec] = true end end c = c or b local r = split(a, "/") local r1, r2, typ, detected_subtypes = detect_adj_type_and_subtype(r[1], r[2], c, types) for _, subtype in ipairs(detected_subtypes) do if types["-" .. subtype] then -- if a "cancel subtype" spec is given, remove the cancel spec -- and don't apply the subtype types["-" .. subtype] = nil elseif (subtype == "M" or subtype == "F" or subtype == "N") and (types.M or types.F or types.N) then -- if gender already specified, don't create conflicting gender spec elseif (subtype == "sg" or subtype == "pl" or subtype == "both") and (types.sg or types.pl or types.both) then -- if number restriction already specified, don't create conflicting -- number restriction spec else types[subtype] = true end end local cb = adj_decl[typ] assert(cb, "Especifique el tipo de sustantivo correcto en el primer parámetro") local data = {forms={}, types=types, pos="", subtitles="", notes="", categories=cats, title=titles, loc=types.loc, num=args.num} cb(data, {r1, r2}) local formas_ = {} -- necesario crear otro arreglo para no modificar las claves durante la iteración for form,arr in pairs(data.forms) do local pref = match(form, "^(.*)_m$") if pref and not data.forms[pref.."_f"] then formas_[pref.."_f"] = deep_copy(arr) end if pref and not data.forms[pref.."_n"] then formas_[pref.."_n"] = deep_copy(arr) end formas_[form] = arr end data.forms = formas_ if not types.sg then nopl = false end if not types.pl then nosg = false end if types.sg then for key,_ in pairs(data.forms) do if key:find("_pl") then data.forms[key] = {} end end end if types.pl then for key,_ in pairs(data.forms) do if key:find("_sg") then data.forms[key] = {} end end end merge_forms(formas, data.forms, adj_lb) end if not declinfo then declinfo = formas else declinfo = combinar_copulativa(declinfo, formas, separadores[M]) M = M + 1 end end if nosg == false then nosg = find(args["num"], "p") end if nopl == false then nopl = find(args["num"], "s") end local m = find(args["gen"], "m") local fem = find(args["gen"], "f") local n = find(args["gen"], "n") local forms = sobreescribir_formas(declinfo, args, false, {}, adj_lb) comprobar_defectivo(forms) forms = desactivar_formas(forms, function (form) return (form:find("pl") and nopl) or (form:find("sg") and nosg) or (form:find("m$") and not m) or (form:find("f$") and not fem) or (form:find("n$") and not n) end ) local raiz_m = f(forms["nom_sg_m"][1] or forms["nom_pl_m"][1] or "?") local raiz_f = f(forms["nom_sg_f"][1] or forms["nom_pl_f"][1] or "?") local raiz_n = f(forms["nom_sg_n"][1] or forms["nom_pl_n"][1] or "?") forms = agregar_enlaces(forms, title, normalizar_enlace) forms = formatear_formas(forms, adj_lb) local t = {} insert(t, {{"Singular", colspan=4}, header=true, color=COLOR_H}) insert(t, {{""}, {"Masculino"}, {"Femenino"}, {"Neutro"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_sg_m"], forms["nom_sg_f"], forms["nom_sg_n"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_sg_m"], forms["gen_sg_f"], forms["gen_sg_n"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_sg_m"], forms["dat_sg_f"], forms["dat_sg_n"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_sg_m"], forms["acc_sg_f"], forms["acc_sg_n"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_sg_m"], forms["abl_sg_f"], forms["abl_sg_n"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_sg_m"], forms["voc_sg_f"], forms["voc_sg_n"]}) insert(t, {{"Plural", colspan=4, header=true, color=COLOR_H}}) insert(t, {{""}, {"Masculino"}, {"Femenino"}, {"Neutro"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_pl_m"], forms["nom_pl_f"], forms["nom_pl_n"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_pl_m"], forms["gen_pl_f"], forms["gen_pl_n"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_pl_m"], forms["dat_pl_f"], forms["dat_pl_n"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_pl_m"], forms["acc_pl_f"], forms["acc_pl_n"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_pl_m"], forms["abl_pl_f"], forms["abl_pl_n"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_pl_m"], forms["voc_pl_f"], forms["voc_pl_n"]}) insert(t, {{args["nota"] or "", colspan=4}}) return renderizar_tabla( frame, "'''Declinación de ''"..raiz_m..", "..raiz_f..", "..raiz_n.."'''''&emsp;&emsp;tipo: "..concat(titles, ", "), t, ns == 0 and cats or {} ) end local EGO, TU, IS, NOS, VOS, EI = 1, 2, 3, 4, 5, 6 local tostr = {"1", "2", "3", "4", "5", "6"} local PRONOMBRES = {"ego", "tū", "is, ea, id", "nōs", "vōs", "eī, eae, ea"} local PRONOMBRES_SUBJ = {"ut ego", "ut tū", "ut is, ut ea, ut id", "ut nōs", "ut vōs", "ut eī, ut eae, ut ea"} local PRONOMBRES_IMP = {"―", "(tū)", "(is, ea, id)", "―", "(vōs)", "(eī, eae, ea)"} local IMPERSONALES = {"", "", "(id)", "", "", ""} local function obtener_pronombre(forma, impers) local conj, p = match(forma, "^(.*)(%d)$") if not p then return nil end p = tonumber(p) if impers then return IMPERSONALES[p] else if find(conj, "^subj") then return PRONOMBRES_SUBJ[p] end if find(conj, "^imper") then return PRONOMBRES_IMP[p] end return PRONOMBRES[p] end end local sufijos = { ["1"] = { inf_act = {"āre","isse"}, inf_pas = {"ārī"}, part_act = {"āns","ūrus"}, part_pas = {"andus","us"}, ger = {"andī","andō","andum"}, sup = {"um","ū"}, ind_pres = {"ō","ās","at","āmus","ātis","ant"}, ind_imp = {"ābam","ābās","ābat","ābāmus","ābātis","ābant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"ābō","ābis","ābit","ābimus","ābitis","ābunt"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","āris","ātur","āmur","āminī","antur", nil,"āre"}, ind_imp_pas = {"ābar","ābāris","ābātur","ābāmur","ābāminī","ābantur", nil,"ābāre"}, ind_fut_pas = {"ābor","āberis","ābitur","ābimur","ābiminī","ābuntur", nil,"ābere"}, subj_pres = {"em","ēs","et","ēmus","ētis","ent"}, subj_imp = {"ārem","ārēs","āret","ārēmus","ārētis","ārent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"er","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, subj_imp_pas = {"ārer","ārēris","ārētur","ārēmur","ārēminī","ārentur", nil,"ārēre"}, imper_pres = {nil,"ā",nil,nil,"āte",nil}, imper_fut = {nil,"ātō","ātō",nil,"ātōte","antō"}, imper_pres_pas = {nil,"āre",nil,nil,"āminī",nil}, imper_fut_pas = {nil,"ātor","ātor",nil,nil,"antor"}, }, ["2"] = { inf_act = {"ēre","isse"}, inf_pas = {"ērī"}, part_act = {"ēns","ūrus"}, part_pas = {"endus","us"}, ger = {"endī","endō","endum"}, sup = {"um","ū"}, ind_pres = {"eō","ēs","et","ēmus","ētis","ent"}, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"ēbō","ēbis","ēbit","ēbimus","ēbitis","ēbunt"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"eor","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", nil,"ēbāre"}, ind_fut_pas = {"ēbor","ēberis","ēbitur","ēbimur","ēbiminī","ēbuntur", nil,"ēbere"}, subj_pres = {"eam","eās","eat","eāmus","eātis","eant"}, subj_imp = {"ērem","ērēs","ēret","ērēmus","ērētis","ērent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ear","eāris","eātur","eāmur","eāminī","eantur", nil,"eāre"}, subj_imp_pas = {"ērer","ērēris","ērētur","ērēmur","ērēminī","ērentur", nil,"ērēre"}, imper_pres = {nil,"ē",nil,nil,"ēte",nil}, imper_fut = {nil,"ētō","ētō",nil,"ētōte","entō"}, imper_pres_pas = {nil,"ēre",nil,nil,"ēminī",nil}, imper_fut_pas = {nil,"ētor","ētor",nil,nil,"entor"}, }, ["3"] = { -- 3 (comparar [[capio]] con [[lego]], las raíces con capi- y leg- pero hay que eliminar la doble ii) inf_act = {"ere","isse"}, inf_pas = {"ī"}, part_act = {"ēns","ūrus"}, part_pas = {"endus","us"}, ger = {"endī","endō","endum"}, sup = {"um","ū"}, ind_pres = {"ō","is","it","imus","itis","unt"}, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"am","ēs","ēt","ēmus","ētis","ent"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","eris","itur","imur","iminī","untur", nil,"ere"}, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", nil,"ēbāre"}, ind_fut_pas = {"ar","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, subj_pres = {"am","ās","at","āmus","ātis","ant"}, subj_imp = {"erem","erēs","eret","erēmus","erētis","erent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ar","āris","ātur","āmur","āminī","antur", nil,"āre"}, subj_imp_pas = {"erer","erēris","erētur","erēmur","erēminī","erentur", nil,"erēre"}, imper_pres = {nil,"e",nil,nil,"ite",nil}, imper_fut = {nil,"itō","itō",nil,"itōte","untō"}, imper_pres_pas = {nil,"ere",nil,nil,"iminī",nil}, imper_fut_pas = {nil,"itor","itor",nil,nil,"untor"}, }, ["3/4"] = { inf_act = {"ere","isse","īre","isse"}, inf_pas = {"ī","īrī"}, part_act = {"ēns","iēns","ūrus"}, part_pas = {"endus","iendus","us"}, ger = {"endī","endō","endum","iendī","iendō","iendum"}, sup = {"um","ū"}, ind_pres = {"ō","is","it","imus","itis","unt", "iō","īs",nil,"īmus","ītis","iunt" }, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant", "iēbam","iēbās","iēbat","iēbāmus","iēbātis","iēbant" }, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"am","ēs","ēt","ēmus","ētis","ent", "iam","iēs","iet","iēmus","iētis","ient" }, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","eris","itur","imur","iminī","untur", "ior","ere","ītur","īmur","īminī","iuntur", nil,"īris",nil,nil,nil,nil, nil,"īre" }, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", "iēbar","ēbāre","iēbātur","iēbāmur","iēbāminī","iēbantur", nil,"iēbāris",nil,nil,nil,nil, nil,"iēbāre" }, ind_fut_pas = {"ar","ēris","ētur","ēmur","ēminī","entur", "iar","ēre","iētur","iēmur","iēminī","ientur", nil,"iēris",nil,nil,nil,nil, nil,"iēre" }, subj_pres = {"am","ās","at","āmus","ātis","ant", "iam","iās","iat","iāmus","iātis","iant", }, subj_imp = {"erem","erēs","eret","erēmus","erētis","erent", "īrem","īrēs","īret","īrēmus","īrētis","īrent" }, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ar","āris","ātur","āmur","āminī","antur", "iar","āre","iātur","iāmur","iāminī","iantur", nil,"iāris",nil,nil,nil,nil, nil,"iāre" }, subj_imp_pas = {"erer","erēris","erētur","erēmur","erēminī","erentur", "īrer","erēre","īrētur","īrēmur","īrēminī","īrentur", nil,"īrēris",nil,nil,nil,nil, nil,"īrēre" }, imper_pres = {nil,"e",nil,nil,"ite",nil, nil,"ī",nil,nil,"īte",nil }, imper_fut = {nil,"itō","itō",nil,"itōte","untō", nil,"ītō","ītō",nil,"ītōte","iuntō" }, imper_pres_pas = {nil,"ere",nil,nil,"iminī",nil, nil,"īre",nil,nil,"īminī",nil }, imper_fut_pas = {nil,"itor","itor",nil,nil,"untor", nil,"ītor","ītor",nil,nil,"iuntor" }, }, ["4"] = { inf_act = {"īre","isse"}, inf_pas = {"īrī"}, part_act = {"iēns","ūrus"}, part_pas = {"iendus","us"}, ger = {"iendī","iendō","iendum"}, sup = {"um","ū"}, ind_pres = {"iō","īs","it","īmus","ītis","iunt"}, ind_imp = {"iēbam","iēbās","iēbat","iēbāmus","iēbātis","iēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"iam","iēs","iet","iēmus","iētis","ient"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"ior","īris","ītur","īmur","īminī","iuntur", nil,"īre"}, ind_imp_pas = {"iēbar","iēbāris","iēbātur","iēbāmur","iēbāminī","iēbantur", nil,"iēbāre"}, ind_fut_pas = {"iar","iēris","iētur","iēmur","iēminī","ientur", nil,"iēre"}, subj_pres = {"iam","iās","iat","iāmus","iātis","iant"}, subj_imp = {"īrem","īrēs","īret","īrēmus","īrētis","īrent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"iar","iāris","iātur","iāmur","iāminī","iantur", nil,"iāre"}, subj_imp_pas = {"īrer","īrēris","īrētur","īrēmur","īrēminī","īrentur", nil,"īrēre"}, imper_pres = {nil,"ī",nil,nil,"īte",nil}, imper_fut = {nil,"ītō","ītō",nil,"ītōte","iuntō"}, imper_pres_pas = {nil,"īre",nil,nil,"īminī",nil}, imper_fut_pas = {nil,"ītor","ītor",nil,nil,"iuntor"}, } } local formas_no_personales = { inf_act = true, inf_pas = true, part_act = true, part_pas = true, ger = true, sup = true, } local formas_personales = { ind_pres = true, ind_imp = true, ind_perf = true, ind_pluperf = true, ind_fut = true, ind_fut_perf = true, ind_fut_sig = true, ind_pres_pas = true, ind_imp_pas = true, ind_fut_pas = true, subj_pres = true, subj_imp = true, subj_perf = true, subj_pluperf = true, subj_aor_sig = true, subj_pres_pas = true, subj_imp_pas = true, imper_pres = true, imper_fut = true, imper_pres_pas = true, imper_fut_pas = true, } local formas = merge(formas_no_personales, formas_personales) local verbos_irregulares = { {"aiō", {"aiō", "aiiō", "aijō", "ajō"}, { desactivar = {"inf_pas","part_pas","ger","sup","ind_pluperf","ind_fut","ind_fut_perf", "ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_perf","subj_pluperf","subj_pres_pas", "subj_imp_pas","imper_fut","imper_pres_pas","imper_fut_pas" }, conj = "3", nucleopres = {"ai"}, nucleoperf = {"a"}, nucleosup = {}, nucleosigm = {}, inf_act = {"aiere"}, ind_pres = {nil,nil,nil,{}}, ind_perf = {{},nil,nil,{},{}}, subj_pres = {nil,nil,nil,{},{}}, subj_imp = {{},{},nil,{},{},{}}, imper_pres = {{},{"ai"},{},{},{},{}}, }}, {"cedo", {"cedo"}, { desactivar = {"inf_act","inf_pas","part_act","part_pas","ger","sup","ind_pluperf","ind_pres","ind_imp","ind_perf", "ind_fut","ind_fut_perf","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres","subj_imp","subj_perf", "subj_pluperf","subj_pres_pas","subj_imp_pas","imper_fut","imper_pres_pas","imper_fut_pas" }, conj = "3", nucleopres = {}, nucleoperf = {}, nucleosup = {}, nucleosigm = {}, imper_pres = {nil,{"cedo"},nil,nil,{"cette","cedile"},nil}, }}, {"dīcō", {"dīcō"}, { conj = "3", nucleopres = {"dīc"}, nucleoperf = {"dīx"}, nucleosup = {"dict"}, nucleosigm = {"dīx"}, desactivar = {}, imper_pres = {nil, {"dīc", "dīce"}}, inf_pas = {"dīcī", "dīcier{L}"}, }}, {"dō", {"dō"}, { conj = "1", nucleopres = {"d"}, nucleoperf = {"ded"}, nucleosup = {"dat"}, nucleosigm = {}, desactivar = {}, inf_act = {"dare","dedisse"}, inf_pas = {"darī"}, ind_pres = {nil,nil,nil,{"damus"},{"datis"},nil}, ind_imp = {{"dabam"},{"dabās"},{"dabat"},{"dabāmus"},{"dabātis"},{"dabant"}}, ind_fut = {{"dabō"},{"dabis"},{"dabit"},{"dabimus"},{"dabitis"},{"dabunt"}}, ind_imp_pas = {{"dabar"},{"dabāris","dabāre"},{"dabātur"},{"dabāmur"},{"dabāminī"},{"dabantur"}}, ind_fut_pas = {{"dabor"},{"daberis","dabere"},{"dabitur"},{"dabimur"},{"dabiminī"},{"dabuntur"}}, subj_imp = {{"darem"},{"darēs"},{"daret"},{"darēmus"},{"darētis"},{"darent"}}, subj_imp_pas = {{"darer"},{"darēris","darēre"},{"darētur"},{"darēmur"},{"darēminī"},{"darentur"}}, imper_pres = {nil,nil,nil,nil,{"date"},nil}, imper_fut = {nil,{"datō"},{"datō"},nil,{"datōte"},{"dantō"}}, imper_pres_pas = {nil,{"dare"},nil,nil,{"daminī"},nil}, imper_fut_pas = {nil,{"dator"},{"dator"},nil,nil,{"dator"}}, }}, {"dūcō", {"dūcō"}, { conj = "3", nucleopres = {"dūc"}, nucleoperf = {"dūx"}, nucleosup = {"duct"}, nucleosigm = {}, desactivar = {}, imper_pres = {nil, {"dūc", "dūce"}}, }}, {"edō", {"edō", "ëdō"}, { conj = "3", nucleopres = {"ed"}, nucleoperf = {"ed"}, nucleosup = {""}, nucleosigm = {}, desactivar = {}, inf_act = {"edere","ēsse"}, part_act = {"edēns","ēsūrus","ēssūrus","ēstūrus"}, part_pas = {"edendus","edundus","ēsus","ēssus","ēstus"}, sup = {"ēsum","ēssum","ēstum","ēsū","ēssū","ēstū"}, ind_pres = {nil,{"edis","ēs"},{"edit","ēst"},nil,{"editis","ēstis"},nil}, ind_pres_pas = {nil,{"ederis","edere","ēssis","ēsse"},{"editur","ēstur"}}, subj_pres = {{"edam","edim"},{"edās","edīs"},{"edat","edit","ēst"},{"edāmus","edīmus"},{"edātis","edītis"},{"edant","edint"}}, subj_imp = {{"ederem","ēssem"},{"ederēs","ēssēs"},{"ederet","ēsset"},{"ederēmus","ēssēmus"},{"ederētis","ēssētis"},{"ederent","ēssent"}}, subj_imp_pas = {{"ederer","ēsser"},{"ederēris","ederēre","ēssēris","ēssēre"},{"ederetur","ēssetur"},{"ederēmur","ēssēmur"},{"ederēminī","ēssēminī"},{"ederentur","ēssentur"}}, imper_pres = {nil,{"ede","ēs"},nil,nil,{"edite","ēste"},nil}, imper_fut = {nil,{"editō","ēstō"},{"editō","ēstō"},nil,{"editōte","ēstōte"},{"eduntō"}}, imper_pres_pas = {nil,{"edere","ēsse"},nil,nil,{"ediminī"},nil}, imper_fut_pas = {nil,{"editor","ēstor"},{"editor","ēstor"},nil,nil,{"eduntor"}}, }}, {"eō", {"eō", "ëō"}, { conj = "4", nucleopres = {""}, nucleoperf = {""}, nucleosup = {""}, nucleosigm = {}, desactivar = {"imper_pres_pas"}, inf_act = {"īre","īsse","iisse","īvisse"}, inf_pas = {"īrī","īrier"}, part_act = {"iēns","itūrus"}, part_pas = {"eundum","itum"}, ger = {"eundī","eundō","eundum"}, sup = {"itum","itū"}, ind_pres = {{"eō"},{"īs"},{"it"},{"īmus"},{"ītis"},{"eunt"}}, ind_imp = {{"ībam"},{"ībās"},{"ībat"},{"ībāmus"},{"ībātis"},{"ībant"}}, ind_perf = {{"iī","īvī"},{"īstī","iistī","īvistī"},{"iit","īvit"},{"iimus","īvimus"},{"īstis","iistis","īvistis"},{"iērunt","iēre","īvērunt","īvēre"}}, ind_pluperf = {{"ieram","īveram"},{"ierās","īverās"},{"ierat","īverat"},{"ierāmus","īverāmus"},{"ierātis","īverātis"},{"ierant","īverant"}}, ind_fut = {{"ībō"},{"ībis"},{"ībit"},{"ībimus"},{"ībitis"},{"ībunt"}}, ind_fut_perf = {{"ierō","īverō"},{"ieris","īveris"},{"ierit","īverit"},{"ierimus","īverimus"},{"ieritis","īveritis"},{"ierint","īverint"}}, ind_fut_sig = {nil,nil,nil,nil,nil,nil}, ind_pres_pas = {{},{},{"ītur"},{},{},{}}, ind_imp_pas = {{},{},{"ībātur"},{},{},{}}, ind_fut_pas = {{},{},{"ībitur"},{},{},{}}, subj_pres = {{"eam"},{"eās"},{"eat"},{"eāmus"},{"eātis"},{"eant"}}, subj_imp = {{"īrem"},{"īrēs"},{"īret"},{"īrēmus"},{"īrētis"},{"īrent"}}, subj_perf = {{"ierim","īverim"},{"ierīs","īverīs"},{"ierit","īverit"},{"ierīmus","īverīmus"},{"ierītis","īverītis"},{"ierint","īverint"}}, subj_pluperf = {{"īssem","iissem","īvissem"},{"īssēs","iissēs","īvissēs"},{"īsset","iisset","īvisset"},{"īssēmus","iissēmus","īvissēmus"},{"īssētis","iissētis","īvissētis"},{"īssent","iissent","īvissent"}}, subj_aor_sig = {nil,nil,nil,nil,nil,nil}, subj_pres_pas = {{},{},{"eātur"},{},{},{}}, subj_imp_pas = {{},{},{"īrētur"},{},{},{}}, imper_pres = {nil,nil,nil,nil,nil,nil}, imper_fut = {nil,nil,nil,nil,nil,{"euntō"}}, imper_fut_pas = {nil,{},nil,nil,nil,{}}, }}, {"faciō", {"faciō"}, { conj = "3", nucleopres = {"faci"}, nucleoperf = {"fax"}, nucleosup = {"fact"}, nucleosigm = {"fax","faxs","facs"}, desactivar = {}, ind_pres_pas = {{"fīō"},{"fīs"},{"fit"},{"fīmus"},{"fītis"},{"fīunt"}}, ind_imp_pas = {{"fīēbam"},{"fīēbās"},{"fīēbat"},{"fīēbāmus"},{"fīēbātis"},{"fīēbant"}}, ind_fut_pas = {{"fīam"},{"fīēs"},{"fīet"},{"fīēmus"},{"fīētis"},{"fīent"}}, subj_pres_pas = {{"fīam"},{"fīās"},{"fīat"},{"fīāmus"},{"fīātis"},{"fīant"}}, subj_imp_pas = {{"fierem"},{"fierēs"},{"fieret"},{"fierēmus"},{"fierētis"},{"fierent"}}, imper_pres = {nil,{"fac","face"},nil,nil,nil,nil}, imper_pres_pas = {nil,{"fī"},nil,nil,{"fīte"},nil}, imper_fut_pas = {nil,{"fītō"},{"fītō"},nil,{"fītōte"},{"fīuntō"}}, }}, {"ferō", {"ferō"}, { conj = "3", nucleopres = {"fer"}, nucleoperf = {"tul"}, nucleosup = {"lāt"}, nucleosigm = {}, desactivar = {}, inf_pas = {"ferrī"}, ind_pres = {nil,{"fers"},{"fert"},nil,{"fertis"}}, ind_pres_pas = {nil,{"ferris","ferre"}}, subj_imp = {{"ferrem"},{"ferrēs"},{"ferret"},{"ferrēmus"},{"ferrētis"},{"ferrent"}}, subj_imp_pas = {{"ferrer"},{"ferrēris","ferrēre"},{"ferrētur"},{"ferrēmur"},{"ferrēminī"},{"ferrentur"}}, imper_pres = {nil,{"fer"},nil,nil,{"ferte"},nil}, imper_pres_pas = {nil,{"ferre"},nil,nil,nil,nil}, imper_fut = {nil,{"fertō"},{"fertō"},nil,{"fertōte"},{"feruntō"}}, imper_fut_pas = {nil,{"fertor"},{"fertor"},nil,nil,nil}, }}, {"fīō", {"fīō"}, { conj = "3", nucleopres = {"fī"}, nucleoperf = {}, nucleosup = {"fact"}, nucleosigm = {}, semidep = true, desactivar = {}, ind_pres = {{"fīō"},{"fīs"},{"fit"},{"fīmus"},{"fītis"},{"fīunt"}}, imper_pres = {nil,{"fī"},nil,nil,{"fīte"},nil}, imper_fut = {nil,{"fītō"},{"fītō"},nil,{"fītōte"},{"feruntō"}}, }}, {"inquam", {"inquam"}, { conj = "3", nucleopres = {"inqui"}, nucleoperf = {}, nucleosup = {}, nucleosigm = {}, nopasivo = true, desactivar = {"inf_act","inf_pas","part_pas","ger"}, }}, {"possum", {"possum"}, { conj = "3", nucleopres = {"pot"}, nucleoperf = {"pot"}, nucleosup = {}, nucleosigm = {}, pres = "possō", desactivar = {"inf_pas","part_pas","ger","sup","ind_pres_pas","ind_imp_pas","ind_fut_pas", "subj_pres_pas","subj_imp_pas","imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"posse","potesse{†}"}, part_act = {"potēns"}, ind_pres = {{"possum"},{"potes"},{"potest"},{"possumus"},{"potestis"},{"possunt"}}, ind_imp = {{"poteram"},{"poterās"},{"poterat"},{"poterāmus"},{"poterātis"},{"poterant"}}, ind_fut = {{"poterō"},{"poteris","potere"},{"poterit"},{"poterimus"},{"poteritis"},{"poterunt"}}, ind_perf = {{"potuī"},{"potuistī"},{"potuit"},{"potuimus"},{"potuistis"},{"potuērunt","potuēre"}}, ind_pluperf = {{"potueram"},{"potuerās"},{"potuerat"},{"potuerāmus"},{"potuerātis"},{"potuerant"}}, ind_fut_perf = {{"potuerō"},{"potueris"},{"potuerit"},{"potuerimus"},{"potueritis"},{"potuerunt"}}, subj_pres = {{"possem"},{"possēs"},{"possēt"},{"possēmus"},{"possētis"},{"possent"}}, subj_imp = {{"possim"},{"possīs"},{"possit"},{"possīmus"},{"possītis"},{"possint"}}, subj_perf = {{"potuerim"},{"potuerīs"},{"potuerit"},{"potuerīmus"},{"potuerītis"},{"potuerint"}}, subj_pluperf = {{"potuissem"},{"potuissēs"},{"potuisset"},{"potuissēmus"},{"potuissētis"},{"potuissent"}}, }}, {"sum", {"sum"}, { conj = "3", nucleopres = {"s"}, nucleoperf = {"fu"}, nucleosup = {}, nucleosigm = {}, pres = "sō", desactivar = {"inf_pas","part_pas","ger","sup","ind_pres_pas","ind_imp_pas","ind_fut_pas", "subj_pres_pas","subj_imp_pas","imper_pres_pas","imper_fut_pas"}, inf_act = {"esse"}, part_act = {"futūrus"}, ind_pres = {{"sum"},{"es"},{"est"},{"sumus"},{"estis"},{"sunt"}}, ind_imp = {{"eram"},{"erās"},{"erat"},{"erāmus"},{"erātis"},{"erant"}}, ind_fut = {{"erō"},{"eris","ere"},{"erit"},{"erimus"},{"eritis"},{"erunt"}}, subj_pres = {{"sim","siem","fuam{†}"},{"sīs","siēs","fuās{†}"},{"sit","siet","fuat{†}"},{"sīmus","siēmus","fuāmus{†}"},{"sītis","siētis","fuātis{†}"},{"sint","sient","fuant{†}"}}, subj_imp = {{"essem","forem"},{"essēs","forēs"},{"esset","foret"},{"essēmus","forēmus"},{"essētis","forētis"},{"essent","forent"}}, imper_pres = {nil,{"es"},nil,nil,{"este"},nil}, imper_fut = {nil,{"estō"},{"estō"},nil,{"estōte"},nil}, }}, {"mālō", {"mālō"}, { conj = "3", nucleopres = {"māl"}, nucleoperf = {"mālu"}, nucleosup = {}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"mālle","māluisse"}, ind_pres = {{"mālō"},{"māvīs"},{"māvult"},{"mālumus"},{"māvultis"},{"mālunt"}}, subj_pres = {{"mālim"},{"mālīs"},{"mālit"},{"mālīmus"},{"mālītis"},{"mālint"}}, subj_imp = {{"māllem"},{"māllēs"},{"māllet"},{"māllēmus"},{"māllētis"},{"māllent"}}, }}, {"nōlō", {"nōlō"}, { conj = "3", nucleopres = {"nōl"}, nucleoperf = {"nōlu"}, nucleosup = {}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"nōlle","nōluisse"}, ind_pres = {{"nōlō"},{"nōn vīs","nevīs{†}"},{"nōn vult","nōn volt","nevolt{†}"},{"nōlumus"},{"nōn vultis","nōn voltis","nōltis{†}"},{"nōlunt"}}, subj_pres = {{"nōlim"},{"nōlīs"},{"nōlit"},{"nōlīmus"},{"nōlītis"},{"nōlint"}}, subj_imp = {{"nōllem"},{"nōllēs"},{"nōllet"},{"nōllēmus"},{"nōllētis"},{"nōllent"}}, }}, {"volō", {"volō"}, { conj = "3", nucleopres = {"vol"}, nucleoperf = {"volu"}, nucleosup = {"volit"}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"velle","voluisse"}, ind_pres = {{"volō"},{"vīs"},{"vult","volt{†}"},{"volumus"},{"vultis","voltis{†}"},{"volunt"}}, subj_pres = {{"velim","volim{†}"},{"velīs","volīs{†}"},{"velit","volit{†}"},{"velīmus","volīmus{†}"},{"velītis","volītis{†}"},{"velint","volint{†}"}}, subj_imp = {{"vellem"},{"vellēs"},{"vellet"},{"vellēmus"},{"vellētis"},{"vellent"}}, }}, } local function combinar_prefijo_nucleosufijo(prefijo, nucleosufijo) return prefijo..nucleosufijo end local function combinar_nucleo_sufijo(nucleo, sufijo, agregar_i) if agregar_i and (not find(sufijo, "^[iī]")) and (sufijo ~= "e") and (not find(sufijo, "^er")) then return nucleo.."~i~"..sufijo end return nucleo..sufijo end local function agregar_forma(conjugado, conjinfo, forma) conjinfo[forma] = conjinfo[forma] or {} local sufijos_ = sufijos[conjinfo.conj][forma] local nucleos local prefijo if forma == "sup" then nucleos = conjinfo.nucleosup prefijo = conjinfo.prefijosup or conjinfo.prefijo elseif find(forma, "sig") then nucleos = conjinfo.nucleosigm prefijo = conjinfo.prefijosigm or conjinfo.prefijo elseif find(forma, "perf") then nucleos = conjinfo.nucleoperf prefijo = conjinfo.prefijoperf or conjinfo.prefijo else nucleos = conjinfo.nucleopres prefijo = conjinfo.prefijo end if formas_no_personales[forma] then if conjinfo[forma][1] then if nucleos and #nucleos > 0 then for _, fm in ipairs(conjinfo[forma]) do insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleosufijo(prefijo, fm).."#") end end else for _, sufijo in ipairs(sufijos_) do local nucleos_ = nucleos if forma == "inf_act" and sufijo == "isse" then nucleos_ = conjinfo.nucleoperf elseif forma == "part_act" and sufijo == "ūrus" then nucleos_ = conjinfo.nucleosup elseif forma == "part_pas" and sufijo == "us" then nucleos_ = conjinfo.nucleosup end local agregar_i = conjinfo.I and nucleos_ == conjinfo.nucleopres for _,nucleo in ipairs(nucleos_) do insert_if_not(conjugado[forma], combinar_prefijo_nucleosufijo(prefijo, combinar_nucleo_sufijo(nucleo, sufijo, agregar_i))) end end end return end for i = EGO, EI do local p = tostr[i] if conjinfo[forma][i] then if nucleos and #nucleos > 0 then for _, fm in ipairs(conjinfo[forma][i]) do insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleosufijo(prefijo, fm).."#") end end else local k = i while sufijos_[k] do local agregar_i = conjinfo.I and nucleos == conjinfo.nucleopres for j, n in ipairs(nucleos) do local x = combinar_prefijo_nucleosufijo(prefijo, combinar_nucleo_sufijo(n, sufijos_[k], agregar_i)) if conjinfo.always_sync_perf and (forma == "ind_perf" or forma == "ind_pluperf" or forma == "ind_fut_perf" or forma == "subj_perf" or forma == "subj_pluperf") then x = x:gsub("īvī", "iī") x = x:gsub("īvi", "ī") x = x:gsub("īve", "ī") x = x:gsub("īvē", "ē") end insert_if_not(conjugado[forma..p], x) end k = k + 6 end end end end local function get_subtype_by_ending(pres, conjinfo, specs) for _, spec in ipairs(specs) do local base = extract_base(pres, spec[1]) if base then for _,s in ipairs(spec[2]) do if conjinfo[s] == nil then conjinfo[s] = true end end return base end end error("Unrecognized ending for conjugation " .. conjinfo["conj"]) end local function detect_v_type_and_subtypes(conjinfo) local pres = conjinfo["v"] local conj_arg = conjinfo["conj"] pres = toNFC(pres) local base_conj_arg, auto_perf_supine = conj_arg:match("^([124]/?4?)(%+%+?)$") if base_conj_arg then if auto_perf_supine == "++" and base_conj_arg ~= "4" then error("Conjugation types 1++ and 2++ not allowed") end conj_arg = base_conj_arg end conjinfo.conj = conj_arg if conj_arg == "1" then local base = get_subtype_by_ending(pres, conjinfo, { {"ō", {}}, {"or", {"dep"}}, {"at", {"impers"}}, {"ātur", {"dep", "impers"}}, {"ī", {"nopres"}}, {"it", {"nopres", "impers"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if auto_perf_supine then if not conjinfo["nucleoperf"][1] then conjinfo["nucleoperf"][1] = base .. "āv" end if not conjinfo["nucleosup"][1] then conjinfo["nucleosup"][1] = base .. "āt" end end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "āss" end end elseif conj_arg == "2" then local base = get_subtype_by_ending(pres, conjinfo, { {"eō", {}}, {"eor", {"dep"}}, {"et", {"impers"}}, {"ētur", {"dep", "impers"}}, {"ī", {"nopres"}}, {"it", {"nopres", "impers"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if auto_perf_supine then if not conjinfo["nucleoperf"][1] then conjinfo["nucleoperf"][1] = base .. "u" end if not conjinfo["nucleosup"][1] then conjinfo["nucleosup"][1] = base .. "it" end end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "ēss" end end elseif conj_arg == "3" then local base if conjinfo.I == false then -- si explícitamente se indicó que no es del tipo -io, hay que excluir sufijos base = get_subtype_by_ending(pres, conjinfo, { {"ō", {}}, {"or", {"dep"}}, {"it", {"impers"}}, {"itur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) else base = get_subtype_by_ending(pres, conjinfo, { {"iō", {"I"}}, {"ior", {"dep", "I"}}, {"ō", {}}, {"or", {"dep"}}, {"it", {"impers"}}, {"itur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) end if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end assert(conjinfo["nucleoperf"][1], "especifique todos los núcleos para verbos de la tercera conjugación") assert(conjinfo["nucleosup"][1], "especifique todos los núcleos para verbos de la tercera conjugación") if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "ēss" end end elseif conj_arg == "3/4" then local base base = get_subtype_by_ending(pres, conjinfo, { {"iō", {"I"}}, {"ior", {"dep", "I"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "++" then conjinfo["nucleoperf"][1] = base .. "īv" conjinfo["nucleoperf"][2] = base .. "i" end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "+" then conjinfo["nucleoperf"][1] = base .. "īv" end if not conjinfo["nucleosup"][1] and auto_perf_supine then conjinfo["nucleosup"][1] = base .. "īt" end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "īss" end end elseif conj_arg == "4" then local base = get_subtype_by_ending(pres, conjinfo, { {"iō", {}}, {"ior", {"dep"}}, {"it", {"impers"}}, {"ītur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "++" then conjinfo["nucleoperf"][1] = base .. "īv" conjinfo["nucleoperf"][2] = base .. "i" end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "+" then conjinfo["nucleoperf"][1] = base .. "īv" end if not conjinfo["nucleosup"][1] and auto_perf_supine then conjinfo["nucleosup"][1] = base .. "īt" end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "īss" end end elseif conj_arg == "irreg" then for _,p in ipairs(verbos_irregulares) do for _,rx in ipairs(p[2]) do local pref, verb = match(conjinfo.v, "^(.*)("..rx..")$") if verb then conjinfo.v = verb conjinfo.prefijo = pref if conjinfo.nucleoperf[1] and conjinfo.nucleoperf[1] ~= "-" then -- [[ecfero]] conjinfo.prefijoperf = conjinfo.nucleoperf[1] conjinfo.nucleoperf = {} end if conjinfo.nucleosup[1] and conjinfo.nucleosup[1] ~= "-" then conjinfo.prefijosup = conjinfo.nucleosup[1] conjinfo.nucleosup = {} end if conjinfo.nucleosigm[1] and conjinfo.nucleosigm[1] ~= "-" then conjinfo.prefijosigm = conjinfo.nucleosigm[1] conjinfo.nucleosigm = {} end conjinfo.irreg = true conjinfo.conj = p[3].conj for k,val in pairs(p[3]) do if not conjinfo[k] or (type(conjinfo[k]) == "table" and not conjinfo[k][1]) then conjinfo[k] = deep_copy(val) end end return conjinfo end end end error("Unrecognized conjugation '" .. conj_arg .. "'") else error("Unrecognized conjugation '" .. conj_arg .. "'") end return conjinfo end function export.v(frame) local title_ = mw.title.getCurrentTitle() local tit = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {alias_de = "conj"}, [2] = {alias_de = "pres"}, [3] = {alias_de = "nucleoperf"}, [4] = {alias_de = "nucleosup"}, [5] = {alias_de = "nucleosigm"}, ["impers"] = {}, -- pas para formas pasivas solamente ["impersonal"] = {alias_de = "impers"}, ["dep"] = {tipo="bool"}, ["depon"] = {alias_de="dep"}, ["deponente"] = {alias_de="dep"}, ["semidep"] = {tipo="bool"}, ["semidepon"] = {alias_de="semidep"}, ["semideponente"] = {alias_de="semidep"}, ["sigm"] = {tipo="bool"}, ["nopasivo"] = {tipo="bool"}, ["soloperf"] = {tipo="bool"}, ["I"] = {tipo="bool"}, ["p3inf"] = {tipo="bool"}, -- sin uso ["poet_sync_perf"] = {tipo="bool"}, -- sin uso ["always_sync_perf"] = {tipo="bool"}, -- solo en [[saevio]] ["conj"] = {requerido=true}, ["pres"] = {requerido=true}, ["nucleopres"] = {lista = true}, ["nucleoperf"] = {lista = true}, ["nucleosup"] = {lista = true}, ["nucleosigm"] = {lista = true}, ["núcleopres"] = {alias_de="nucleopres"}, ["núcleoperf"] = {alias_de="nucleoperf"}, ["núcleosup"] = {alias_de="nucleosup"}, ["paradigma"] = {lista = true}, ["desactivarnucleos"] = {tipo="bool", por_defecto=true}, -- para [[-o]] ["nota"] = {}, } local conjugado = {} for forma,_ in pairs(formas_no_personales) do params[forma] = {tipo=parsear_arreglo, por_defecto={}} conjugado[forma] = {} end for forma,_ in pairs(formas_personales) do for i,s in ipairs(tostr) do params[forma..s] = {tipo=parsear_arreglo, por_defecto={}} conjugado[forma..s] = {} if i == 1 then params[forma] = {alias_de=forma..s} end end end local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) assert(not find(tit, " "), "locuciones no soportadas aún") assert(not (args["dep"] and args["semidep"]), "un verbo no puede ser deponente y semideponente a la vez") local conjinfo = { conj = args.conj, prefijo="", v=args.pres, desactivar = {}, dep=args.dep, semidep=args.semidep, sigm=args.sigm, impers=args.impers, nopasivo=args.nopasivo, soloperf=args.soloperf, I=args.I, p3inf=args.p3inf, poet_sync_perf=args.poet_sync_perf, -- sin uso always_sync_perf=args.always_sync_perf, nucleopres = deep_copy(args.nucleopres), nucleoperf = deep_copy(args.nucleoperf), nucleosup = deep_copy(args.nucleosup), nucleosigm = deep_copy(args.nucleosigm) } conjinfo = detect_v_type_and_subtypes(conjinfo) conjinfo.conj = conjinfo.conj if conjinfo.impers == true then conjinfo.impers = "3" end -- no puede ir conjinfo acá abajo porque si es un sufijo va a quedar "-" en la raíz, lo que anularía todas las formas conjugadas, tiene que venir directo de args if args.desactivarnucleos then if args.nucleopres[1] == "-" then conjinfo.nucleopres = {} end if args.nucleoperf[1] == "-" then conjinfo.nucleoperf = {} end if args.nucleosup[1] == "-" then conjinfo.nucleosup = {} end if args.nucleosigm[1] == "-" then conjinfo.nucleosigm = {} end end local es_irregular = conjinfo.irreg for _,d in ipairs(conjinfo.desactivar) do if formas_no_personales[d] then args[d] = {"no"} else args[d.."2"] = {"no"} end end for forma,_ in pairs(formas) do agregar_forma(conjugado, conjinfo, forma) end local resultante = sobreescribir_formas(conjugado, args) local mostrar_fut_sig = #resultante["ind_fut_sig1"] > 0 local mostrar_aor_sig = #resultante["subj_aor_sig1"] > 0 local defectivo = comprobar_defectivo(resultante, {"^imper", "_sig"}, tostr) local defect2 resultante, defect2 = desactivar_formas(resultante, function (form) return (conjinfo.nopasivo and form:find("_pas")) or (conjinfo.soloperf and not form:find("perf")) or (conjinfo.impers == "pas" and form:find("_pas[^3]")) or (conjinfo.impers == "pas3" and form:find("_pas[^3]")) or (conjinfo.impers == "pas36" and form:find("_pas[^36]")) end ) if defect2 then defectivo = true end -- por ahora innecesario -- local part_no_adj = {} -- for _,e in ipairs(resultante.part) do -- if (find(e, 'PART') or not find(e, 'ADJ')) and not find(e, "†") then -- insert(part_no_adj, gsub1(e, '%b{}', '')) -- end -- end local tit_pres = f(resultante["ind_pres1"][1] or "―") local tit_inf = f(resultante["inf_act"][1] or "―") local tit_perf = f(resultante["ind_perf1"][1] or "―") local tit_sup = f(resultante["sup"][1] or "―") resultante = agregar_enlaces(resultante, tit, normalizar_enlace) local es_impersonal = conjinfo.impers resultante = formatear_formas(resultante, function (x) return obtener_pronombre(x, es_impersonal) end) local impers = conjinfo.impers local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_imper, mostrar_imper if impers == "3" then fila_pronombres_ind = {"", "(id)", color=COLOR_IND, header=true, class="pc"} fila_pronombres_subj = {"", "(quod id)", color=COLOR_SUBJ, header=true, class="pc"} fila_pronombres_imper = {"", "(id)", color=COLOR_IMPER, header=true, class="pc"} cs = 2 elseif impers == "36" then error("no soportado actualmente") cs = 3 else fila_pronombres_ind = {"", PRONOMBRES[1], PRONOMBRES[2], PRONOMBRES[3], PRONOMBRES[4], PRONOMBRES[5], PRONOMBRES[6], color=COLOR_IND, header=true, class="pc"} fila_pronombres_subj = {"", PRONOMBRES_SUBJ[1], PRONOMBRES_SUBJ[2], PRONOMBRES_SUBJ[3], PRONOMBRES_SUBJ[4], PRONOMBRES_SUBJ[5], PRONOMBRES_SUBJ[6], color=COLOR_SUBJ, header=true, class="pc"} fila_pronombres_imper = {"", PRONOMBRES_IMP[1], PRONOMBRES_IMP[2], PRONOMBRES_IMP[3], PRONOMBRES_IMP[4], PRONOMBRES_IMP[5], PRONOMBRES_IMP[6], color=COLOR_IMPER, header=true, class="pc"} cs = 7 mostrar_imper = true end cs1 = cs -- math.floor(cs / 2) -- cs2 = cs - cs1 local t = {} insert(t, {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}) if impers == "3" then insert(t, {{"Infinitivo activo", header=true, color=COLOR_NP}, resultante.inf_act}) insert(t, {{"Infinitivo pasivo", header=true, color=COLOR_NP}, resultante.inf_pas}) insert(t, {{"Participio activo", header=true, color=COLOR_NP}, resultante.part_act}) insert(t, {{"Participio pasivo", header=true, color=COLOR_NP}, resultante.part_pas}) insert(t, {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}) insert(t, {{"Supino", header=true, color=COLOR_NP}, resultante.sup}) else resultante.inf_act.colspan = cs1-1 resultante.inf_pas.colspan = cs1-1 resultante.part_act.colspan = cs1-1 resultante.part_pas.colspan = cs1-1 resultante.ger.colspan = cs1-1 resultante.sup.colspan = cs1-1 if not conjinfo.dep then insert(t, {{"Infinitivo activo", header=true, color=COLOR_NP}, resultante.inf_act}) end if not conjinfo.semidep then insert(t, {{"Infinitivo pasivo", header=true, color=COLOR_NP}, resultante.inf_pas}) end if not conjinfo.dep then insert(t, {{"Participio activo", header=true, color=COLOR_NP}, resultante.part_act}) end if not conjinfo.semidep then insert(t, {{"Participio pasivo", header=true, color=COLOR_NP}, resultante.part_pas}) end insert(t, {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}) insert(t, {{"Supino", header=true, color=COLOR_NP}, resultante.sup}) end local function ic(tiempo) if impers == "3" then return resultante[tiempo.."3"] elseif impers == "36" then return resultante[tiempo.."3"], resultante[tiempo.."6"] end return resultante[tiempo.."1"], resultante[tiempo.."2"], resultante[tiempo.."3"], resultante[tiempo.."4"], resultante[tiempo.."5"], resultante[tiempo.."6"] end insert(t, {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}) insert(t, {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}) insert(t, fila_pronombres_ind) if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}) insert(t, {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}) insert(t, {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}) end if not conjinfo.dep and not conjinfo.semidep then insert(t, {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}) insert(t, {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}) insert(t, {{"Futuro perfecto", color=COLOR_IND, header=true}, ic("ind_fut_perf")}) end if mostrar_fut_sig then insert(t, {{f("Futuro sigmático{†}"), color=COLOR_IND, header=true}, ic("ind_fut_sig")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_IND, header=true}, ic("ind_pres_pas")}) insert(t, {{"Pretérito imperfecto pasivo", color=COLOR_IND, header=true}, ic("ind_imp_pas")}) insert(t, {{"Futuro pasivo", color=COLOR_IND, header=true}, ic("ind_fut_pas")}) end insert(t, {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}) insert(t, fila_pronombres_subj) if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}) insert(t, {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}) end if not conjinfo.dep and not conjinfo.semidep then insert(t, {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}) insert(t, {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}) end if mostrar_aor_sig then insert(t, {{f("Aorista sigmático{†}"), color=COLOR_SUBJ, header=true}, ic("subj_aor_sig")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_SUBJ, header=true}, ic("subj_pres_pas")}) insert(t, {{"Pretérito imperfecto pasivo", color=COLOR_SUBJ, header=true}, ic("subj_imp_pas")}) end insert(t, {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}) insert(t, fila_pronombres_imper) if mostrar_imper then if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_IMPER, header=true}, ic("imper_pres")}) insert(t, {{"Futuro", color=COLOR_IMPER, header=true}, ic("imper_fut")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_IMPER, header=true}, ic("imper_pres_pas")}) insert(t, {{"Futuro pasivo", color=COLOR_IMPER, header=true}, ic("imper_fut_pas")}) end else insert(t, {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}) end insert(t, {{f("Leyenda: † arcaico, x no normativo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}) args["nota"] = args["nota"] or "" if conjinfo.impers == "utc3" then args["nota"] = args["nota"].." NOTA: se usa también como impersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular." end if conjinfo.impers == "umc3" then args["nota"] = args["nota"].." NOTA: se usa más como impersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular." end if conjinfo.impers == "utc36" then args["nota"] = args["nota"].." NOTA: se usa también como terciopersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular y plural." end if conjinfo.impers == "umc36" then args["nota"] = args["nota"].." NOTA: se usa más como terciopersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular y plural." end if conjinfo.impers == "pas" or conjinfo.imeprs == "pas3" then args["nota"] = args["nota"].." NOTA: impersonal para las formas pasivas" end if conjinfo.impers == "pas36" then args["nota"] = args["nota"].." NOTA: formas pasivas terciopersonales (solamente tercera persona singular y plural)" end if conjinfo.soloperf then args["nota"] = args["nota"].. " NOTA: solo se emplean las formas del perfecto y pluscuamperfecto con valor de presente, imperfecto o futuro" end if conjinfo.nopasivo then args["nota"] = args["nota"].. " NOTA: solo se emplean las formas activas" end insert(t, {{args["nota"] and args["nota"] or "", colspan=cs}}) local cats = {} local subtits = {} local conj_str if conjinfo.conj == "1" then conj_str = "primera conjugación" elseif conjinfo.conj == "2" then conj_str = "segunda conjugación" elseif conjinfo.conj == "3" then conj_str = "tercera conjugación" elseif conjinfo.conj == "3/4" then conj_str = "tercera/cuarta conjugación" else conj_str = "cuarta conjugación" end insert(cats, "LA:Verbos de la "..conj_str) insert(subtits, conj_str) impers = impers or "" if impers == "3" or find(impers, "^u[tm]c3$") then insert(subtits, "impersonal") insert(cats, "LA:Verbos impersonales") end if defectivo then insert(subtits, "defectivo") insert(cats, "LA:Verbos defectivos") end if conjinfo.dep then insert(subtits, "deponente") insert(cats, "LA:Verbos deponentes") end if conjinfo.semidep then insert(subtits, "semideponente") insert(cats, "LA:Verbos semideponentes") end if es_irregular then insert(subtits, "irregular") insert(cats, "LA:Verbos irregulares") else insert(subtits, "regular") insert(cats, "LA:Verbos regulares") end return renderizar_tabla( frame, "'''Conjugación de ''"..tit_pres..", "..tit_inf..", "..tit_perf..", "..tit_sup.."'''''&emsp;&emsp;("..concat(subtits, ", ")..")", t, ns == 0 and cats or {}) end function export.adv(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { ["n"] = {}, ["nota"] = {alias_de = "n"}, ["comp"] = {lista = true}, ["comparativo"] = {alias_de = "comp"}, ["compnota"] = {lista = true}, ["sup"] = {lista = true}, ["superlativo"] = {alias_de = "sup"}, ["supnota"] = {lista = true}, } local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) local head = args[1] local modo = args[2] local enc local cats = {} local cat_pref = "LA:Adverbios" if modo == "-" then enc = "sin comparativo ni superlativo" insert(cats, cat_pref.." incomparables") return renderizar_encabezado( frame, head, enc, args["n"], {}, ns == 0 and cats or {}, normalizar_enlace ) end local flex = {comp={},sup={}} local stem for _, suff in ipairs{"iter", "nter", "ter", "er", "iē", "ē", "rā", "im", "ō"} do stem = match(head, "^(.*)" .. suff .. "$") if stem ~= nil then local comp_suff, sup_suff = "ius", "issimē" if suff == "nter" then stem = stem .. "nt" end if suff == "rā" then comp_suff = "er" .. comp_suff sup_suff = "imē" end insert(flex.comp, stem .. comp_suff) insert(flex.sup, stem .. sup_suff) break end end if not stem and not args.comp[1] and not args.sup[1] then error("Unrecognized adverb type, recognized types are “-ē”, “-er”, “-ter”, “-iter”, “-im”, or “-ō”, “-ra” or specify irregular forms or “-” if incomparable.") end local formas, irr = sobreescribir_formas(flex, args) if args["comp"][1] == "no" then enc = "sin comparativo" insert(cats, cat_pref.." sin comparativo") return renderizar_encabezado( frame, head, enc, args["n"], {{"superlativo", formas.sup, args["supnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) elseif args["sup"][1] == "no" then enc = "sin superlativo" insert(cats, cat_pref.." sin superlativo") return renderizar_encabezado( frame, head, enc, args["n"], {{"comparativo", formas.comp, args["compnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) end if irr then enc = f("#irregular#") insert(cats, cat_pref.." irregulares") end return renderizar_encabezado( frame, head, enc, args["n"], {{"comparativo", formas.comp, args["compnota"]}, {"superlativo", formas.sup, args["supnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) end return export hioxv6g9i4lr3j8beclvqrxm4i83i85 6110113 6110110 2026-04-27T18:14:38Z Tmagc 158167 6110113 Scribunto text/plain -- FLEXIÓN DEL LATÍN -- Adaptado desde en.wikt por Tmagc local export = {} local unpack = unpack or table.unpack local insert = table.insert local concat = table.concat local m_table = require("Módulo:tabla") local list_to_set = m_table.listToSet local keys_to_list = m_table.keysToList local insert_if_not = m_table.insertIfNot local deep_copy = m_table.deepCopy local contains = m_table.contains local append = m_table.append local merge = m_table.merge local m_str = require("Módulo:string") local u = m_str.char local match = m_str.match local sub = m_str.sub local gsub = m_str.gsub local gsubb = m_str.gsubb local split = m_str.split local gsplit = m_str.gsplit local find = m_str.find local m_str_avanzado = require("Módulo:string/avanzado") local toNFD = m_str_avanzado.toNFD local toNFC = m_str_avanzado.toNFC local m_flex = require("Módulo:flex") local f = m_flex.f local f_links = m_flex.f_links local parsear_arreglo = m_flex.parsear_arreglo local separar_palabras = m_flex.separar_palabras local combinar_copulativa = m_flex.combinar_copulativa local sobreescribir_formas = m_flex.sobreescribir_formas local desactivar_formas = m_flex.desactivar_formas local agregar_enlaces = m_flex.agregar_enlaces local formatear_formas = m_flex.formatear_formas local comprobar_defectivo = m_flex.comprobar_defectivo local renderizar_tabla = m_flex.renderizar_tabla local renderizar_encabezado = m_flex.renderizar_encabezado local COLOR_H = m_flex.COLOR_H local COLOR_NP = m_flex.COLOR_NP local COLOR_IND = m_flex.COLOR_IND local COLOR_COND = m_flex.COLOR_COND local COLOR_SUBJ = m_flex.COLOR_SUBJ local COLOR_IMPER = m_flex.COLOR_IMPER local MACRON = u(0x304) local BREVE = u(0x306) local DIAER = u(0x308) local DBREVE = u(0x361) local ACCENT = "[" .. MACRON .. BREVE .. DIAER .. DBREVE .. "]" local VOWEL = "[aæeioœuyAÆEIOŒUY]" local cons_to_vowel = { ["j"] = "i", ["J"] = "I", ["v"] = "u", ["V"] = "U", } local function normalizar_enlace(x) x = toNFD(x) x = gsub(x, ACCENT, "") return toNFC(x) end local function join(a, b) a, b = toNFD(a), toNFD(b) -- If the first part ends in "j" or "v", convert it to "i" or "u" unless -- the second part begins with a vowel. if not match(b, "^" .. VOWEL) then a = gsub(a, "[jvJV]$", cons_to_vowel) end return toNFC(a..b) end local function add_form(decl, slot, stem, suf) if type(slot) == "string" then slot = {slot} end for _,slt in ipairs(slot) do if type(decl[slt]) == "nil" or decl[slt] == "" then decl[slt] = {} elseif type(decl[slt]) == "string" then decl[slt] = {decl[slt]} end insert_if_not(decl[slt], join(stem, suf)) end end local function remove_forms(decl, forms) for form,_ in pairs(decl) do for _,rx in ipairs(forms) do if form:find(rx) then forms[form] = {} break end end end end local function merge_forms(forms, forms2, keys) keys = keys or forms2 for key,arr in pairs(keys) do if not forms[key] then forms[key] = {} end if type(forms2[key]) == "string" then insert_if_not(forms[key], forms2[key]) elseif type(forms2[key]) == "table" then for _,a in ipairs(forms2[key]) do insert_if_not(forms[key], a) end end end end local noun_decl = {} noun_decl["0"] = function(data, args) local forms = data.forms local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem forms["gen_sg"] = stem forms["dat_sg"] = stem forms["acc_sg"] = stem forms["abl_sg"] = stem forms["voc_sg"] = stem forms["nom_pl"] = stem forms["gen_pl"] = stem forms["dat_pl"] = stem forms["acc_pl"] = stem forms["abl_pl"] = stem forms["voc_pl"] = stem -- with locative if data.loc then forms["loc_sg"] = stem forms["loc_pl"] = stem end end local function alt_gen_pl_in_um(stem, forms, types, subtitles, i_stem) if types.genplum then add_form(forms, "gen_pl", stem, (i_stem and "i" or "") .. "um") elseif types.not_genplum then -- FIXME: not a contraction. -- insert_if_not(subtitles, "uncontracted genitive plural") end end noun_decl["1"] = function(data, args) local forms, types, loc, subtitles = data.forms, data.types, data.loc, data.subtitles local stem = args[1] -- normal 1st local nom_sg = "a" local gen_loc_sg = "ae" local dat_sg = "ae" local acc_sg = "am" local abl_sg = "ā" local voc_sg = "a" local nom_voc_pl = "ae" local gen_pl = "ārum" local dat_abl_loc_pl = "īs" local acc_pl = "ās" insert_if_not(data.title, "primera declinación") insert_if_not(data.categories, "LA:Sustantivos de la primera declinación") -- ām if types.am then nom_sg = "ām" acc_sg = "ām" abl_sg = {"ām", "ā"} voc_sg = "ām" -- all Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") --Greek Ma if types.Ma then nom_sg = "ās" acc_sg = "ān" voc_sg = "ā" -- Greek Me elseif types.Me then nom_sg = "ēs" acc_sg = "ēn" abl_sg = "ē" voc_sg = "ē" -- Greek else nom_sg = "ē" gen_loc_sg = "ēs" acc_sg = "ēn" abl_sg = "ē" voc_sg = "ē" end end -- ābus if types.abus then dat_abl_loc_pl = "ābus" end add_form(forms, "nom_sg", stem, nom_sg) add_form(forms, "gen_sg", stem, gen_loc_sg) add_form(forms, "dat_sg", stem, dat_sg) add_form(forms, "acc_sg", stem, acc_sg) add_form(forms, "abl_sg", stem, abl_sg) add_form(forms, "voc_sg", stem, voc_sg) add_form(forms, {"nom_pl", "voc_pl"}, stem, nom_voc_pl) add_form(forms, "gen_pl", stem, gen_pl) add_form(forms, {"dat_pl", "abl_pl"}, stem, dat_abl_loc_pl) add_form(forms, "acc_pl", stem, acc_pl) -- with locative if loc then add_form(forms, "loc_sg", stem, gen_loc_sg) add_form(forms, "loc_pl", stem, dat_abl_loc_pl) end end noun_decl["2"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem1, stem2 = args[1], args[2] insert_if_not(data.title, "segunda declinación") insert_if_not(data.categories, "LA:Sustantivos de la segunda declinación") -- normal 2nd forms["nom_sg"] = stem1 .. "us" forms["gen_sg"] = stem1 .. "ī" forms["dat_sg"] = stem1 .. "ō" forms["acc_sg"] = stem1 .. "um" forms["abl_sg"] = stem1 .. "ō" forms["voc_sg"] = stem1 .. "e" forms["nom_pl"] = stem1 .. "ī" forms["gen_pl"] = stem1 .. "ōrum" forms["dat_pl"] = stem1 .. "īs" forms["acc_pl"] = stem1 .. "ōs" forms["abl_pl"] = stem1 .. "īs" forms["voc_pl"] = stem1 .. "ī" -- all neuter if types.N then forms["nom_sg"] = stem1 .. "um" forms["voc_sg"] = stem1 .. "um" forms["nom_pl"] = stem1 .. "a" forms["acc_pl"] = stem1 .. "a" forms["voc_pl"] = stem1 .. "a" -- neuter ium if types.ium then forms["nom_sg"] = stem1 .. "ium" forms["gen_sg"] = {stem1 .. "iī", stem1 .. "ī{†}"} forms["dat_sg"] = stem1 .. "iō" forms["acc_sg"] = stem1 .. "ium" forms["abl_sg"] = stem1 .. "iō" forms["voc_sg"] = stem1 .. "ium" forms["nom_pl"] = stem1 .. "ia" forms["gen_pl"] = stem1 .. "iōrum" forms["dat_pl"] = stem1 .. "iīs" forms["acc_pl"] = stem1 .. "ia" forms["abl_pl"] = stem1 .. "iīs" forms["voc_pl"] = stem1 .. "ia" -- neuter us, plural a elseif types.a then forms["nom_sg"] = stem1 .. "us" forms["acc_sg"] = stem1 .. "us" forms["voc_sg"] = stem1 .. "us" forms["nom_pl"] = stem1 .. "a" forms["acc_pl"] = stem1 .. "a" forms["voc_pl"] = stem1 .. "a" -- -vom (aevom, etc.) elseif types.vom then forms["nom_sg"] = stem1 .. "om" forms["acc_sg"] = stem1 .. "om" forms["voc_sg"] = stem1 .. "om" -- neuter Greek in -os (cētos) elseif types.Greek and types.us then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "os" forms["voc_sg"] = stem1 .. "os" forms["nom_pl"] = stem1 .. "ē" forms["gen_pl"] = stem1 .. "ōn" forms["acc_pl"] = stem1 .. "ē" forms["voc_pl"] = stem1 .. "ē" -- neuter Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "on" forms["acc_sg"] = stem1 .. "on" forms["voc_sg"] = stem1 .. "on" -- neuter us elseif types.us then forms["nom_sg"] = stem1 .. "us" forms["acc_sg"] = stem1 .. "us" forms["voc_sg"] = stem1 .. "us" forms["nom_pl"] = stem1 .. "ī" forms["acc_pl"] = stem1 .. "ōs" forms["voc_pl"] = stem1 .. "ī" end -- er elseif types.er then forms["nom_sg"] = stem1 forms["gen_sg"] = stem2 .. "ī" forms["dat_sg"] = stem2 .. "ō" forms["acc_sg"] = stem2 .. "um" forms["abl_sg"] = stem2 .. "ō" forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 .. "ī" forms["gen_pl"] = stem2 .. "ōrum" forms["dat_pl"] = stem2 .. "īs" forms["acc_pl"] = stem2 .. "ōs" forms["abl_pl"] = stem2 .. "īs" forms["voc_pl"] = stem2 .. "ī" -- ius elseif types.ius then forms["nom_sg"] = stem1 .. "ius" forms["gen_sg"] = {stem1 .. "iī", stem1 .. "ī{†}"} forms["dat_sg"] = stem1 .. "iō" forms["acc_sg"] = stem1 .. "ium" forms["abl_sg"] = stem1 .. "iō" if types.voci then -- Only for proper names and fīlius, genius forms["voc_sg"] = stem1 .. "ī" else forms["voc_sg"] = stem1 .. "ie" end forms["nom_pl"] = stem1 .. "iī" forms["gen_pl"] = stem1 .. "iōrum" forms["dat_pl"] = stem1 .. "iīs" forms["acc_pl"] = stem1 .. "iōs" forms["abl_pl"] = stem1 .. "iīs" forms["voc_pl"] = stem1 .. "iī" -- -vos (servos, etc.) elseif types.vos then forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "om" -- Greek elseif types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "os" forms["acc_sg"] = stem1 .. "on" if data.num == "pl" then forms["nom_pl"] = stem1 .. "oe" forms["voc_pl"] = stem1 .. "oe" else forms["nom_pl"] = {stem1 .. "ī", stem1 .. "oe"} forms["voc_pl"] = {stem1 .. "ī", stem1 .. "oe"} end elseif types.not_Greek then insert_if_not(data.title, "no griego") end -- with -um genitive plural alt_gen_pl_in_um(stem2, forms, types, subtitles, types.ius or types.ium) -- with locative if data.loc then if types.ius or types.ium then forms["loc_sg"] = stem2 .. "iī" forms["loc_pl"] = stem2 .. "iīs" else forms["loc_sg"] = stem2 .. "ī" forms["loc_pl"] = stem2 .. "īs" end end end local acc_sg_i_stem_subtypes = { acc_im = { -- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) [abl -ī]; -- cannabis, senapis, sinapis [abl -e, -ī] acc_sg = {"im"}, title = {"accusative singular in ''-im''"}, }, acc_im_in = { -- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris [abl -ī]; -- Baetis, Tigris [acc -e, -ī] acc_sg = {"im", "in"}, title = {"accusative singular in ''-im'' or ''-in''"}, }, acc_im_in_em = { -- e.g. tigris, river Līris acc_sg = {"im", "in", "em"}, title = {"accusative singular in ''-im'', ''-in'' or ''-em''"}, }, acc_im_em = { acc_sg = {"im", "em"}, title = {"accusative singular in ''-im'' or ''-em''"}, }, acc_im_occ_em = { -- febris, pelvis, puppis, restis, securis, turris [abl -ī, -e] acc_sg = {"im", "em"}, title = {"accusative singular in ''-im'' or occasionally ''-em''"}, }, acc_em_im = { -- aqualis, clavis, lens, navis [abl -e, -ī]; -- cutis, restis [abl -e] acc_sg = {"em", "im"}, title = {"accusative singular in ''-em'' or ''-im''"}, }, } local abl_sg_i_stem_subtypes = { abl_i = { -- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) [acc -im]; -- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris [acc -im or -in]; -- canalis "water pipe", months in -is or -er, nouns originally i-stem adjectives such as aedilis, affinis, bipennis, familiaris, sodalis, volucris, etc. [acc -em] abl_sg = {"ī"}, title = {"ablative singular in ''-ī''"}, }, abl_i_e = { -- febris, pelvis, puppis, restis, securis, turris [acc -im, -em] abl_sg = {"ī", "e"}, title = {"ablative singular in ''-ī'' or ''-e''"}, }, abl_e_i = { -- cannabis, senapis, sinapis [acc -im]; -- Baetis, Tigris [acc -im, -in]; -- aqualis, clavis, lens, navis [acc -em, -im]; -- finis, mugilis, occiput, pugil, rus, supellex, vectis [acc -em] abl_sg = {"e", "ī"}, title = {"ablative singular in ''-e'' or ''-ī''"}, }, abl_e_occ_i = { -- amnis, anguis, avis, civis, classis, fustis, ignis, imber, orbis, pars, postis, sors, unguis, vesper [acc -em] abl_sg = {"e", "ī"}, title = {"ablative singular in ''-e'' or occasionally ''-ī''"}, }, } local function extract_stem(form, ending) local base = match(form, "^(.*)" .. ending .. "$") if not base then error("Form " .. form .. " should end in -" .. ending) end return base end local function count_vowels(stem) return select(2, toNFD(stem):gsub("[aeiouyAEIOUY]", "")) end noun_decl["3"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem1, stem2 = args[1], args[2] -- local function non_i_stem_type() -- return (count_vowels(stem1) > count_vowels(stem2) and "parisyllabic" or "imparisyllabic") .. " non-i-stem" -- end insert_if_not(data.title, "tercera declinación") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación") --normal 3rd forms["nom_sg"] = stem1 forms["gen_sg"] = stem2 .. "is" forms["dat_sg"] = stem2 .. "ī" forms["acc_sg"] = stem2 .. "em" forms["abl_sg"] = stem2 .. "e" forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 .. "ēs" forms["gen_pl"] = stem2 .. "um" forms["dat_pl"] = stem2 .. "ibus" forms["acc_pl"] = stem2 .. "ēs" forms["abl_pl"] = stem2 .. "ibus" forms["voc_pl"] = stem2 .. "ēs" local acc_sg_i_stem_subtype = false local not_acc_sg_i_stem_subtype = false for subtype, _ in pairs(types) do if acc_sg_i_stem_subtypes[subtype] then acc_sg_i_stem_subtype = true break end end for acc_sg_subtype, _ in pairs(acc_sg_i_stem_subtypes) do if types["not_" .. acc_sg_subtype] then not_acc_sg_i_stem_subtype = true break end end local abl_sg_i_stem_subtype = false local not_abl_sg_i_stem_subtype = false for subtype, _ in pairs(types) do if abl_sg_i_stem_subtypes[subtype] then abl_sg_i_stem_subtype = true break end end for abl_sg_subtype, _ in pairs(abl_sg_i_stem_subtypes) do if types["not_" .. abl_sg_subtype] then not_abl_sg_i_stem_subtype = true break end end -- all Greek if types.Greek then insert_if_not(data.title, "griego") insert_if_not(data.categories, "LA:Sustantivos griegos") -- Greek er if types.er then stem1 = extract_stem(stem1, "ēr") forms["nom_sg"] = stem1 .. "ēr" forms["gen_sg"] = stem1 .. "eris" forms["dat_sg"] = stem1 .. "erī" forms["acc_sg"] = {stem1 .. "era", stem1 .. "erem"} forms["abl_sg"] = stem1 .. "ere" forms["voc_sg"] = stem1 .. "ēr" forms["nom_pl"] = stem1 .. "erēs" forms["gen_pl"] = stem1 .. "erum" forms["dat_pl"] = stem1 .. "eribus" forms["acc_pl"] = stem1 .. "erēs" forms["abl_pl"] = stem1 .. "eribus" forms["voc_pl"] = stem1 .. "erēs" -- Greek on elseif types.on then stem1 = extract_stem(stem1, "ōn") forms["nom_sg"] = stem1 .. "ōn" forms["gen_sg"] = {stem1 .. "ontis", stem1 .. "ontos"} forms["dat_sg"] = stem1 .. "ontī" forms["acc_sg"] = stem1 .. "onta" forms["abl_sg"] = stem1 .. "onte" forms["voc_sg"] = stem1 .. "ōn" forms["nom_pl"] = stem1 .. "ontēs" forms["gen_pl"] = {stem1 .. "ontum", stem1 .. "ontium"} forms["dat_pl"] = stem1 .. "ontibus" forms["acc_pl"] = {stem1 .. "ontēs", stem1 .. "ontās"} forms["abl_pl"] = stem1 .. "ontibus" forms["voc_pl"] = stem1 .. "ontēs" -- Greek i-stem elseif types.I then forms["gen_sg"] = {stem2 .. "is", stem2 .. "eōs", stem2 .. "ios"} forms["acc_sg"] = {stem2 .. "im", stem2 .. "in", stem2 .. "em{MED}"} forms["abl_sg"] = {stem2 .. "ī", stem2 .. "e{MED}"} forms["voc_sg"] = {stem2 .. "is", stem2 .. "i"} forms["nom_pl"] = {stem2 .. "ēs", stem2 .. "eis"} forms["gen_pl"] = {stem2 .. "ium", stem2 .. "eōn"} forms["acc_pl"] = {stem2 .. "ēs", stem2 .. "eis"} forms["voc_pl"] = {stem2 .. "ēs", stem2 .. "eis"} if types.poetic_esi then forms["dat_pl"] = {stem2 .. "ibus", stem2 .. "esi{L}"} forms["abl_pl"] = {stem2 .. "ibus", stem2 .. "esi{L}"} end -- normal Greek else forms["gen_sg"] = stem2 .. "os" if match(toNFD(stem2), "[yY]" .. ACCENT .. "*$") then forms["acc_sg"] = stem2 .. "n" else forms["acc_sg"] = stem2 .. "a" end forms["nom_pl"] = stem2 .. "es" forms["acc_pl"] = stem2 .. "as" forms["voc_pl"] = stem2 .. "es" if match(toNFD(stem1), "[iyIY]" .. ACCENT .. "*s$") then -- Per Hiley, words in -is and -ys have a poetic vocative -- without the -s, but otherwise the vocative is the same -- as the nominative. forms["voc_sg"] = {stem1, (stem1:gsub("s$", "")).."{L}"} end end elseif types.not_Greek then insert_if_not(data.title, "no griego") end -- polis if types.polis then stem1 = extract_stem(stem1, "polis") insert_if_not(data.title, "parcialmente griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = stem1 .. "polis" forms["gen_sg"] = stem1 .. "polis" forms["dat_sg"] = stem1 .. "polī" forms["acc_sg"] = {stem1 .. "polim", stem1 .. "polin"} forms["abl_sg"] = stem1 .. "polī" forms["voc_sg"] = {stem1 .. "polis", stem1 .. "polī"} end -- all neuter if types.N then forms["acc_sg"] = stem1 -- neuter I stem if types.I then -- pure variety if types.pure then forms["abl_sg"] = stem2 .. "ī" forms["nom_pl"] = stem2 .. "ia" forms["gen_pl"] = stem2 .. "ium" forms["acc_pl"] = stem2 .. "ia" forms["voc_pl"] = stem2 .. "ia" -- non-pure variety (rare) else forms["nom_pl"] = stem2 .. "a" forms["gen_pl"] = {stem2 .. "ium", stem2 .. "um"} forms["acc_pl"] = stem2 .. "a" forms["voc_pl"] = stem2 .. "a" end -- normal neuter else forms["nom_pl"] = stem2 .. "a" forms["acc_pl"] = stem2 .. "a" forms["voc_pl"] = stem2 .. "a" end -- I stem elseif types.I or acc_sg_i_stem_subtype or abl_sg_i_stem_subtype then forms["gen_pl"] = stem2 .. "ium" -- Per Allen and Greenough, Hiley and others, the acc_pl in -īs -- applied originally to all i-stem nouns, and was current as an -- alternative form up through Caesar. forms["acc_pl"] = {stem2 .. "ēs", stem2 .. "īs"} -- pure variety if types.pure then forms["acc_sg"] = stem2 .. "im" forms["abl_sg"] = stem2 .. "ī" forms["nom_pl"] = stem2 .. "īs" forms["acc_pl"] = stem2 .. "īs" forms["voc_pl"] = stem2 .. "īs" end local num = data.num for subtype, _ in pairs(types) do local acc_sg_i_stem_props = acc_sg_i_stem_subtypes[subtype] if acc_sg_i_stem_props then forms["acc_sg"] = {} for _, ending in ipairs(acc_sg_i_stem_props.acc_sg) do insert_if_not(forms["acc_sg"], stem2 .. ending) end -- if num ~= "pl" then -- for _, t in ipairs(acc_sg_i_stem_props.title) do -- insert_if_not(subtitles, t) -- end -- end break end end -- FIXME: needs to be done for neuter nouns as well. for subtype, _ in pairs(types) do local abl_sg_i_stem_props = abl_sg_i_stem_subtypes[subtype] if abl_sg_i_stem_props then forms["abl_sg"] = {} for _, ending in ipairs(abl_sg_i_stem_props.abl_sg) do insert_if_not(forms["abl_sg"], stem2 .. ending) end -- if num ~= "pl" then -- for _, t in ipairs(abl_sg_i_stem_props.title) do -- insert_if_not(subtitles, t) -- end -- end break end end end -- with locative if data.loc then -- As far as I can tell, in general both dative singular and -- ablative singular could be used for the third-declension locative, -- with different time periods preferring different forms. -- http://dcc.dickinson.edu/grammar/latin/3rd-declension-locative-case -- mentions rūrī along with either Carthāginī or Carthāgine. -- Wikipedia in https://en.wikipedia.org/wiki/Locative_case#Latin -- says this: -- -- In archaic times, the locative singular of third declension nouns -- was still interchangeable between ablative and dative forms, but in -- the Augustan Period the use of the ablative form became fixed. -- Therefore, both forms "rūrī" and "rūre" may be encountered. -- -- Lewis and Short confirm this. local loc_sg = forms["dat_sg"] if type(loc_sg) == "table" then loc_sg = deep_copy(loc_sg) else loc_sg = {loc_sg} end local abl_sg = forms["abl_sg"] if type(abl_sg) == "table" then for _, form in ipairs(abl_sg) do insert_if_not(loc_sg, deep_copy(form)) end else insert_if_not(loc_sg, abl_sg) end forms["loc_sg"] = loc_sg forms["loc_pl"] = deep_copy(forms["abl_pl"]) --The following is what we used to have, but I simply cannot believe it. --if types.Greek and not types.s then -- forms["loc_pl"] = stem2 .. "ēs" --end end end noun_decl["4"] = function(data, args) local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes local stem = args[1] insert_if_not(data.title, "cuarta declinación") insert_if_not(data.categories, "LA:Sustantivos de la cuarta declinación") -- normal 4th forms["nom_sg"] = stem .. "us" forms["gen_sg"] = stem .. "ūs" forms["dat_sg"] = stem .. "uī" forms["acc_sg"] = stem .. "um" forms["abl_sg"] = stem .. "ū" forms["voc_sg"] = stem .. "us" forms["nom_pl"] = stem .. "ūs" forms["gen_pl"] = stem .. "uum" forms["dat_pl"] = stem .. "ibus" forms["acc_pl"] = stem .. "ūs" forms["abl_pl"] = stem .. "ibus" forms["voc_pl"] = stem .. "ūs" if types.echo then for slot in pairs(forms) do if slot ~= "gen_sg" then forms[slot] = stem .. "ō" end end add_form(forms, "acc_sg", stem, "ōn") elseif types.Callisto then for slot in pairs(forms) do if slot ~= "gen_sg" then forms[slot] = stem .. "ō" end end end -- neuter if types.N then forms["nom_sg"] = stem .. "ū̆{?}" forms["gen_sg"] = {stem .. "ūs{C}", stem .. "ū{S}"} forms["dat_sg"] = {stem .. "uī{C}", stem .. "ū{S}"} forms["acc_sg"] = stem .. "ū̆{?}" forms["voc_sg"] = stem .. "ū̆{?}" forms["nom_pl"] = stem .. "ua" forms["acc_pl"] = stem .. "ua" forms["voc_pl"] = stem .. "ua" end -- ubus if types.ubus then forms["dat_pl"] = stem .. "ubus" forms["abl_pl"] = stem .. "ubus" end -- with locative if data.loc then forms["loc_sg"] = forms["abl_sg"] forms["loc_pl"] = forms["abl_pl"] end end noun_decl["5"] = function(data, args) local forms, types = data.forms, data.types local stem = args[1] insert_if_not(data.title, "quinta declinación") insert_if_not(data.categories, "LA:Sustantivos de la quinta declinación") -- ies if types.i then stem = stem .. "i" end forms["nom_sg"] = stem .. "ēs" forms["gen_sg"] = stem .. "eī" forms["dat_sg"] = stem .. "eī" forms["acc_sg"] = stem .. "em" forms["abl_sg"] = stem .. "ē" forms["voc_sg"] = stem .. "ēs" forms["nom_pl"] = stem .. "ēs" forms["gen_pl"] = stem .. "ērum" forms["dat_pl"] = stem .. "ēbus" forms["acc_pl"] = stem .. "ēs" forms["abl_pl"] = stem .. "ēbus" forms["voc_pl"] = stem .. "ēs" -- ies if types.i then forms["gen_sg"] = stem .. "ēī" forms["dat_sg"] = stem .. "ēī" end --with locative if data.loc then forms["loc_sg"] = stem .. "ē" forms["loc_pl"] = stem .. "ēbus" end end noun_decl["sgpl"] = function(data, args) local forms = data.forms local stem1, stem2 = args[1], args[2] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem1 forms["gen_sg"] = stem1 forms["dat_sg"] = stem1 forms["acc_sg"] = stem1 forms["abl_sg"] = stem1 forms["voc_sg"] = stem1 forms["nom_pl"] = stem2 forms["gen_pl"] = stem2 forms["dat_pl"] = stem2 forms["acc_pl"] = stem2 forms["abl_pl"] = stem2 forms["voc_pl"] = stem2 -- with locative if data.loc then forms["loc_sg"] = stem1 forms["loc_pl"] = stem2 end end noun_decl["indecl"] = function(data, args) local forms = data.forms local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(data.categories, "LA:Sustantivos indeclinables") forms["nom_sg"] = stem forms["gen_sg"] = {} forms["dat_sg"] = {} forms["acc_sg"] = stem forms["abl_sg"] = {} forms["voc_sg"] = {} forms["nom_pl"] = {} forms["gen_pl"] = {} forms["dat_pl"] = {} forms["acc_pl"] = {} forms["abl_pl"] = {} forms["voc_pl"] = {} -- with locative (for multiword terms) if data.loc then forms["loc_sg"] = {} forms["loc_pl"] = {} end data.num = "sg" end noun_decl["irreg"] = function(data, args) local forms, subtitles, notes = data.forms, data.subtitles, data.notes local stem = args[1] insert_if_not(data.title, "irregular") insert_if_not(data.categories, "LA:Sustantivos irregulares") forms["nom_sg"] = {} forms["gen_sg"] = {} forms["dat_sg"] = {} forms["acc_sg"] = {} forms["abl_sg"] = {} forms["voc_sg"] = {} forms["nom_pl"] = {} forms["gen_pl"] = {} forms["dat_pl"] = {} forms["acc_pl"] = {} forms["abl_pl"] = {} forms["voc_pl"] = {} if stem == "bōs" then data.decl = "3" local stem1, stem2 = "bōs", "bov" noun_decl["3"](data, {stem1, stem2}) add_form(forms, "abl_sg", stem2, "īd{†}") add_form(forms, "gen_pl", "bo", "um") add_form(forms, "gen_pl", stem2, "erum") add_form(forms, "dat_pl", "", "bōbus") add_form(forms, "dat_pl", "", "būbus") add_form(forms, "abl_pl", "", "bōbus") add_form(forms, "abl_pl", "", "būbus") elseif stem:match("^[dD]eus$") then data.decl = "2" local dD = stem:sub(1, 1) forms["nom_sg"] = dD .. "eus" forms["gen_sg"] = dD .. "eī" forms["dat_sg"] = dD .. "eō" forms["acc_sg"] = dD .. "eum" forms["abl_sg"] = dD .. "eō" forms["voc_sg"] = {dD .. "eus", dD .. "ee"} if stem == "deus" then forms["nom_pl"] = {"dī", "diī", "deī"} forms["gen_pl"] = {"deōrum", "deum"} forms["dat_pl"] = {"dīs", "diīs", "deīs"} forms["acc_pl"] = "deōs" forms["abl_pl"] = {"dīs", "diīs", "deīs"} forms["voc_pl"] = {"dī", "diī", "deī"} end elseif stem == "domus" then data.decl = "4,2" insert_if_not(data.title, "cuarta/segunda declinación") forms["nom_sg"] = "domus" forms["gen_sg"] = {"domūs", "domī"} forms["dat_sg"] = {"domuī", "domō", "domū"} forms["acc_sg"] = "domum" forms["abl_sg"] = {"domū", "domō"} forms["voc_sg"] = "domus" forms["loc_sg"] = "domī" forms["nom_pl"] = "domūs" forms["gen_pl"] = {"domuum", "domōrum"} forms["dat_pl"] = "domibus" forms["acc_pl"] = {"domūs", "domōs"} forms["abl_pl"] = "domibus" forms["voc_pl"] = "domūs" forms["loc_pl"] = {} data.loc = true elseif match(stem, "^[IÏJ]ēs[uū]" .. BREVE .. "?s$") then local ij = sub(stem, 1, 1) local uu = match(stem, "[uū]" .. BREVE .. "?") forms["nom_sg"] = stem forms["gen_sg"] = ij .. "ēsū" forms["dat_sg"] = ij .. "ēsū" forms["acc_sg"] = ij .. "ēs" .. uu .. "m" forms["abl_sg"] = ij .. "ēsū" forms["voc_sg"] = ij .. "ēsū" data.num = "sg" elseif stem == "Mōsēs" or stem == "Moesēs" or match(stem, "^M[oō]" .. BREVE .. "?[īȳ]sēs$") then local mos = sub(stem, 1, -3) forms["nom_sg"] = stem forms["gen_sg"] = {mos .. "ī", mos .. "ēī", mos .. "is", mos .. "ēn", mos .. "eōs"} forms["dat_sg"] = mos .. "ī" forms["acc_sg"] = {mos .. "ēn", mos .. "em"} forms["abl_sg"] = {mos .. "e", mos .. "ēn", mos .. "ī"} forms["voc_sg"] = {mos .. "ēs", mos .. "ē"} data.num = "sg" elseif stem:match("^[ij]ūgerum$") then data.decl = "2,3" local ij = stem:sub(1, 1) insert_if_not(data.title, "segunda/tercera declinación híbrido") forms["nom_sg"] = ij .. "ūgerum" forms["gen_sg"] = ij .. "ūgerī" forms["dat_sg"] = ij .. "ūgerō" forms["acc_sg"] = ij .. "ūgerum" forms["abl_sg"] = ij .. "ūgerō" forms["voc_sg"] = ij .. "ūgerum" forms["nom_pl"] = ij .. "ūgera" forms["gen_pl"] = ij .. "ūgerum" forms["dat_pl"] = ij .. "ūgeribus" forms["acc_pl"] = ij .. "ūgera" forms["abl_pl"] = {ij .. "ūgeribus", ij .. "ūgerīs{†}"} forms["voc_pl"] = ij .. "ūgera" elseif stem == "sūs" then data.decl = "3" forms["nom_sg"] = "sūs" forms["gen_sg"] = "suis" forms["dat_sg"] = "suī" forms["acc_sg"] = "suem" forms["abl_sg"] = "sue" forms["voc_sg"] = "sūs" forms["nom_pl"] = "suēs" forms["gen_pl"] = "suum" forms["dat_pl"] = {"suibus", "sūbus", "subus"} forms["acc_pl"] = "suēs" forms["abl_pl"] = {"suibus", "sūbus", "subus"} forms["voc_pl"] = "suēs" elseif stem == "ēthos" then data.decl = "3" insert_if_not(data.title, "tercera declinación, griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = "ēthos" forms["gen_sg"] = "ētheos" forms["acc_sg"] = "ēthos" forms["voc_sg"] = "ēthos" forms["nom_pl"] = {"ēthea", "ēthē"} forms["dat_pl"] = {"ēthesi", "ēthesin"} forms["acc_pl"] = {"ēthea", "ēthē"} forms["abl_pl"] = {"ēthesi", "ēthesin"} forms["voc_pl"] = {"ēthea", "ēthē"} elseif stem == "Athōs" then data.decl = "2" insert_if_not(data.title, "segunda declinación, griego") insert_if_not(data.categories, "LA:Sustantivos griegos") forms["nom_sg"] = "Athōs" forms["gen_sg"] = "Athō" forms["dat_sg"] = "Athō" forms["acc_sg"] = {"Athō", "Athōn"} forms["abl_sg"] = "Athō" forms["voc_sg"] = "Athōs" data.num = "sg" elseif stem:match("^[uv]ēnum$") then data.decl = "4,2" local uv = stem:sub(1, 1) insert_if_not(data.title, "cuarta/segunda declinación, defectivo") forms["dat_sg"] = {uv .. "ēnuī", uv .. "ēnō"} forms["acc_sg"] = uv .. "ēnum" data.num = "sg" elseif stem:match("^[uv]īs$") then data.decl = "3" local uv = stem:sub(1, 1) insert_if_not(data.title, "defectivo") forms["nom_sg"] = uv .. "īs" forms["gen_sg"] = uv .. "īs" forms["dat_sg"] = uv .. "ī" forms["acc_sg"] = uv .. "im" forms["abl_sg"] = uv .. "ī" forms["voc_sg"] = uv .. "īs" forms["nom_pl"] = uv .. "īrēs" forms["gen_pl"] = uv .. "īrium" forms["dat_pl"] = uv .. "īribus" forms["acc_pl"] = {uv .. "īrēs", uv .. "īrīs"} forms["abl_pl"] = uv .. "īribus" forms["voc_pl"] = uv .. "īrēs" else error("Stem " .. stem .. " not recognized.") end end local adj_decl = {} adj_decl["0+"] = function(data, args) local forms, categories = data.forms, data.categories local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(categories, "LA:Adjetivos indeclinables") forms["nom_sg_m"] = stem forms["nom_pl_m"] = stem forms["gen_sg_m"] = stem forms["gen_pl_m"] = stem forms["dat_sg_m"] = stem forms["dat_pl_m"] = stem forms["acc_sg_m"] = stem forms["acc_pl_m"] = stem forms["abl_sg_m"] = stem forms["abl_pl_m"] = stem forms["voc_sg_m"] = stem forms["voc_pl_m"] = stem forms["loc_sg_m"] = stem forms["loc_pl_m"] = stem end adj_decl["1&2+"] = function(data, args) local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "primera y segunda declinación") insert_if_not(categories, "LA:Adjetivos de la primera declinación") insert_if_not(categories, "LA:Adjetivos de la segunda declinación") local original if types.er then local final2 = stem:sub(-2) if final2 == "er" then -- insert_if_not(categories, "LA:Sustantivos de la primera declinación") -- insert_if_not(categories, "LA:Sustantivos de la segunda declinación") elseif final2 == "ur" then -- insert_if_not(categories, "LA:Sustantivos de la primera declinación") -- insert_if_not(categories, "LA:Sustantivos de la segunda declinación") else error("Unrecognized ''-r'' stem (doesn't end in ''-er'' or ''-ur''): " .. stem) end stem, original = args[2], stem end local us = "us" local a_sf = "a" local um = "um" local ae_gsf = "ae" local am = "am" local a_macron = "ā" local i_pl = stem .. "ī" if types.greekA or types.greekE then insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Sustantivos griegos") if types.greekA then us = "os" um = "on" am = "ān" else us = "os" a_sf = "ē" um = "on" ae_gsf = "ēs" am = "ēn" a_macron = "ē" end i_pl = {i_pl, stem .. "oe"} end forms["nom_sg_m"] = original or (stem .. us) forms["nom_sg_f"] = stem .. a_sf forms["nom_sg_n"] = stem .. um forms["nom_pl_m"] = i_pl forms["nom_pl_f"] = stem .. "ae" forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ī" forms["gen_sg_f"] = stem .. ae_gsf forms["gen_sg_n"] = stem .. "ī" forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_f"] = stem .. "ārum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_sg_m"] = stem .. "ō" forms["dat_sg_f"] = stem .. "ae" forms["dat_sg_n"] = stem .. "ō" forms["dat_pl_m"] = stem .. "īs" forms["dat_pl_f"] = stem .. "īs" forms["dat_pl_n"] = stem .. "īs" forms["acc_sg_m"] = stem .. um forms["acc_sg_f"] = stem .. am forms["acc_sg_n"] = stem .. um forms["acc_pl_m"] = stem .. "ōs" forms["acc_pl_f"] = stem .. "ās" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ō" forms["abl_sg_f"] = stem .. a_macron forms["abl_sg_n"] = stem .. "ō" forms["abl_pl_m"] = stem .. "īs" forms["abl_pl_f"] = stem .. "īs" forms["abl_pl_n"] = stem .. "īs" forms["voc_sg_m"] = original or (stem .. "e") forms["voc_sg_f"] = stem .. a_sf forms["voc_sg_n"] = stem .. um forms["voc_pl_m"] = i_pl forms["voc_pl_f"] = stem .. "ae" forms["voc_pl_n"] = stem .. "a" if types.ius then insert_if_not(data.title, "pronominal") --insert_if_not(subtitles, "with genitive singular in ''-ī̆us'' and dative singular in ''-ī''") forms["gen_sg_m"] = stem .. "ī̆us" forms["gen_sg_f"] = stem .. "ī̆us" forms["gen_sg_n"] = stem .. "ī̆us" forms["dat_sg_m"] = stem .. "ī" forms["dat_sg_f"] = stem .. "ī" forms["dat_sg_n"] = stem .. "ī" elseif types.not_ius then insert_if_not(data.title, "no pronominal") --insert_if_not(subtitles, "with normal genitive and dative singular") end if stem == "me" then forms["voc_sg_m"] = "mī" end if types.ic then --insert_if_not(subtitles, "with genitive singular ending in ''-ius'' and dative singular ending in ''-ic''") local oc = "oc" local oc_macron = "ōc" if stem == "ill" then oc = "uc" oc_macron = "ūc" end forms["nom_sg_m"] = stem .. "ic" forms["nom_sg_f"] = stem .. "aec" forms["nom_sg_n"] = stem .. oc forms["nom_pl_n"] = stem .. "aec" forms["gen_sg_m"] = stem .. "uius" forms["gen_sg_f"] = stem .. "uius" forms["gen_sg_n"] = stem .. "uius" forms["dat_sg_m"] = stem .. "uic" forms["dat_sg_f"] = stem .. "uic" forms["dat_sg_n"] = stem .. "uic" forms["acc_sg_m"] = stem .. "unc" forms["acc_sg_f"] = stem .. "anc" forms["acc_sg_n"] = stem .. oc forms["acc_pl_n"] = stem .. "aec" forms["abl_sg_m"] = stem .. "ōc" forms["abl_sg_f"] = stem .. "āc" forms["abl_sg_n"] = stem .. oc_macron forms["voc_sg_m"] = {} forms["voc_sg_f"] = {} forms["voc_sg_n"] = {} forms["voc_pl_m"] = {} forms["voc_pl_f"] = {} forms["voc_pl_n"] = {} end if types.distr then if stem:sub(-1) == "n" then forms["gen_pl_m"] = {stem .. "um", stem .. "ōrum{R}"} forms["gen_pl_f"] = {stem .. "um", stem .. "ārum{R}"} forms["gen_pl_n"] = {stem .. "um", stem .. "ōrum{R}"} else error("Unrecognized distributive numeral stem (doesn't end in ''n''): " .. stem) end original = stem stem = args[2] end forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["1-1+"] = function(data, args) local forms, subtitles, categories = data.forms, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "primera declinación") insert_if_not(categories, "LA:Adjetivos de la primera declinación") forms["nom_sg_m"] = stem .. "a" forms["nom_pl_m"] = stem .. "ae" forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ae" forms["gen_pl_m"] = stem .. "ārum" forms["dat_sg_m"] = stem .. "ae" forms["dat_pl_m"] = stem .. "īs" forms["acc_sg_m"] = stem .. "am" forms["acc_sg_n"] = stem .. "a" forms["acc_pl_m"] = stem .. "ās" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ā" forms["abl_pl_m"] = stem .. "īs" forms["voc_sg_m"] = stem .. "a" forms["voc_pl_m"] = stem .. "ae" forms["voc_pl_n"] = stem .. "a" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) end adj_decl["2-2+"] = function(data, args) local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "segunda declinación") insert_if_not(categories, "LA:Adjetivos de la segunda declinación") local us = "us" local um = "um" local i_pl = stem .. "ī" if types.greek then insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Sustantivos griegos") us = "os" um = "on" i_pl = {i_pl, stem .. "oe"} end forms["nom_sg_m"] = stem .. us forms["nom_sg_n"] = stem .. um forms["nom_pl_m"] = i_pl forms["nom_pl_n"] = stem .. "a" forms["gen_sg_m"] = stem .. "ī" forms["gen_sg_n"] = stem .. "ī" forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_sg_m"] = stem .. "ō" forms["dat_sg_n"] = stem .. "ō" forms["dat_pl_m"] = stem .. "īs" forms["dat_pl_n"] = stem .. "īs" forms["acc_sg_m"] = stem .. um forms["acc_sg_n"] = stem .. um forms["acc_pl_m"] = stem .. "ōs" forms["acc_pl_n"] = stem .. "a" forms["abl_sg_m"] = stem .. "ō" forms["abl_sg_n"] = stem .. "ō" forms["abl_pl_m"] = stem .. "īs" forms["abl_pl_n"] = stem .. "īs" forms["voc_sg_m"] = stem .. "e" forms["voc_sg_n"] = stem .. um forms["voc_pl_m"] = i_pl forms["voc_pl_n"] = stem .. "a" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end local function abl_i_e(...) local function update_slot(forms, slot, f, do_copy) if not forms[slot] then return do_copy elseif do_copy then f = deep_copy(f) end forms[slot] = f return true end function abl_i_e(stem, forms, types) local f, do_copy if types["abl_e_i"] then f = {stem .. "e", stem .. "ī"} elseif types["abl_i_e"] then f = {stem .. "ī", stem .. "e"} else return end do_copy = update_slot(forms, "abl_sg_m", f, do_copy) do_copy = update_slot(forms, "abl_sg_f", f, do_copy) -- Neuter doesn't take -e with i-stems. if not types.I then update_slot(forms, "abl_sg_n", f, do_copy) end end return abl_i_e(...) end adj_decl["3-1+"] = function(data, args) local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, dos terminaciones") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con dos terminaciones") forms["nom_sg_m"] = stem1 forms["nom_sg_n"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" abl_i_e(stem2, forms, types) forms["voc_sg_m"] = stem1 forms["voc_sg_n"] = stem1 forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) if types.par then forms["nom_pl_n"] = stem2 .. "a" forms["gen_pl_m"] = stem2 .. "um" forms["gen_pl_n"] = stem2 .. "um" forms["abl_sg_m"] = stem2 .. "e" forms["abl_sg_n"] = stem2 .. "e" forms["loc_sg_m"] = {stem2 .. "ī", stem2 .. "e"} -- Really? forms["loc_sg_n"] = {stem2 .. "ī", stem2 .. "e"} -- Why does this happen? forms["acc_pl_n"] = stem2 .. "a" forms["voc_pl_n"] = stem2 .. "a" end local es_base = stem1:match("^(.-)ēs$") if es_base and es_base == stem2 then if types.greek then forms["nom_sg_n"] = {stem2 .. "ē̆s{?}"} forms["acc_sg_n"] = {stem2 .. "ē̆s{?}"} forms["voc_sg_m"] = {stem2 .. "ē̆s{?}"} forms["voc_sg_n"] = {stem2 .. "ē̆s{?}"} forms["nom_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["acc_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["voc_pl_n"] = {stem2 .. "a{?}", stem2 .. "ia{?}"} forms["abl_sg_m"] = {stem2 .. "e{?}", stem2 .. "ī{?}"} forms["abl_sg_n"] = {stem2 .. "e{?}", stem2 .. "ī{?}"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["gen_pl_m"] = {stem2 .. "um{?}", stem2 .. "ium{?}"} forms["gen_pl_n"] = {stem2 .. "um{?}", stem2 .. "ium{?}"} insert_if_not(data.title, "griego") insert_if_not(categories, "LA:Adjetivos griegos") elseif types.not_greek then insert_if_not(data.title, "no griego") end end end adj_decl["3-def+"] = function(data, args) local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, defectivo") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") forms["nom_sg_m"] = stem1 forms["nom_sg_n"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 forms["acc_pl_m"] = stem2 .. "ēs" forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" forms["voc_sg_m"] = stem1 forms["voc_sg_n"] = stem1 forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" if types.tor then insert_if_not(data.title, "tercera declinación, solo en masculino") insert_if_not(categories, "LA:Adjetivos solo en masculino") remove_forms(forms, {"_f$", "_n$"}) forms["nom_sg_m"] = stem1 forms["gen_sg_m"] = stem2 .. "is" forms["dat_sg_m"] = stem2 .. "ī" forms["acc_sg_m"] = stem2 .. "em" forms["abl_sg_m"] = stem2 .. "e" forms["voc_sg_m"] = stem1 forms["nom_pl_m"] = stem2 .. "ēs" forms["gen_pl_m"] = stem2 .. "um" forms["dat_pl_m"] = stem2 .. "ibus" forms["acc_pl_m"] = stem2 .. "ēs" forms["abl_pl_m"] = stem2 .. "ibus" forms["voc_pl_m"] = stem2 .. "ēs" end if types.trix then insert_if_not(data.title, "tercera declinación, solo en femenino o en neutro plural") insert_if_not(categories, "LA:Adjetivos solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en neutro") remove_forms(forms, {"_m$", "sg_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = stem2 .. "is" forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = stem2 .. "em" forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"} forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = stem2 .. "ēs" forms["gen_pl_f"] = stem2 .. "ium" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = stem2 .. "ēs" forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = stem2 .. "ēs" end if types.trixf then insert_if_not(data.title, "tercera declinación, solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en femenino") remove_forms(forms, {"_m$","_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = stem2 .. "is" forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = stem2 .. "em" forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"} forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = stem2 .. "ēs" forms["gen_pl_f"] = stem2 .. "ium" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = stem2 .. "ēs" forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = stem2 .. "ēs" end if types.idis then insert_if_not(data.title, "tercera declinación, solo en femenino") insert_if_not(categories, "LA:Adjetivos solo en femenino") remove_forms(forms, {"_m$","_n$"}) forms["nom_sg_f"] = stem1 forms["gen_sg_f"] = {stem2 .. "is", stem2 .. "os"} forms["dat_sg_f"] = stem2 .. "ī" forms["acc_sg_f"] = {stem2 .. "em", stem2 .. "a"} forms["abl_sg_f"] = stem2 .. "e" forms["voc_sg_f"] = stem1 forms["nom_pl_f"] = {stem2 .. "ēs", stem2 .. "es"} forms["gen_pl_f"] = stem2 .. "um" forms["dat_pl_f"] = stem2 .. "ibus" forms["acc_pl_f"] = {stem2 .. "ēs", stem2 .. "as"} forms["abl_pl_f"] = stem2 .. "ibus" forms["voc_pl_f"] = {stem2 .. "ēs", stem2 .. "es"} end forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-C+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem1 = args[1] local stem2 = stem1 .. "ōr" insert_if_not(data.title, "tercera declinación, comparativo") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos comparativos") forms["nom_sg_m"] = stem1 .. "or" forms["nom_sg_n"] = stem1 .. "us" forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "a" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "um" forms["gen_pl_n"] = stem2 .. "um" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_n"] = stem1 .. "us" forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"} forms["acc_pl_n"] = stem2 .. "a" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" abl_i_e(stem2, forms, types) forms["voc_sg_m"] = stem1 .. "or" forms["voc_sg_n"] = stem1 .. "us" forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "a" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-P+"] = function(data, args) local forms, notes = data.forms, data.notes local stem2 = args[2] adj_decl["3-1+"](data, args) insert_if_not(data.title, "tercera declinación, participio") insert_if_not(data.categories, "LA:Adjetivos de la tercera declinación") forms["abl_sg_m"] = {stem2 .. "e{PART}", stem2 .. "ī{ADJ}"} forms["abl_sg_n"] = {stem2 .. "e{PART}", stem2 .. "ī{ADJ}"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"} end adj_decl["3-2+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem = args[1] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación, dos terminaciones") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con dos terminaciones") forms["nom_sg_m"] = stem .. "is" forms["nom_sg_n"] = stem .. "e" forms["nom_pl_m"] = stem .. "ēs" forms["nom_pl_n"] = stem .. "ia" forms["gen_sg_m"] = stem .. "is" forms["gen_sg_n"] = stem .. "is" forms["gen_pl_m"] = stem .. "ium" forms["gen_pl_n"] = stem .. "ium" forms["dat_sg_m"] = stem .. "ī" forms["dat_sg_n"] = stem .. "ī" forms["dat_pl_m"] = stem .. "ibus" forms["dat_pl_n"] = stem .. "ibus" forms["acc_sg_m"] = stem .. "em" forms["acc_sg_n"] = stem .. "e" forms["acc_pl_m"] = {stem .. "īs", stem .. "ēs"} forms["acc_pl_n"] = stem .. "ia" forms["abl_sg_m"] = stem .. "ī" forms["abl_sg_n"] = stem .. "ī" forms["abl_pl_m"] = stem .. "ibus" forms["abl_pl_n"] = stem .. "ibus" -- abl_i_e(stem, forms, types) -- enable once [[Module:la-nominal]] has ben updated forms["voc_sg_m"] = stem .. "is" forms["voc_sg_n"] = stem .. "e" forms["voc_pl_m"] = stem .. "ēs" forms["voc_pl_n"] = stem .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["3-3+"] = function(data, args) local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories local stem1, stem2 = args[1], args[2] -- local singpos = singularize(pos) insert_if_not(data.title, "tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación") insert_if_not(categories, "LA:Adjetivos de la tercera declinación con tres terminaciones") forms["nom_sg_m"] = stem1 forms["nom_sg_f"] = stem2 .. "is" forms["nom_sg_n"] = stem2 .. "e" forms["nom_pl_m"] = stem2 .. "ēs" forms["nom_pl_f"] = stem2 .. "ēs" forms["nom_pl_n"] = stem2 .. "ia" forms["gen_sg_m"] = stem2 .. "is" forms["gen_sg_f"] = stem2 .. "is" forms["gen_sg_n"] = stem2 .. "is" forms["gen_pl_m"] = stem2 .. "ium" forms["gen_pl_f"] = stem2 .. "ium" forms["gen_pl_n"] = stem2 .. "ium" forms["dat_sg_m"] = stem2 .. "ī" forms["dat_sg_f"] = stem2 .. "ī" forms["dat_sg_n"] = stem2 .. "ī" forms["dat_pl_m"] = stem2 .. "ibus" forms["dat_pl_f"] = stem2 .. "ibus" forms["dat_pl_n"] = stem2 .. "ibus" forms["acc_sg_m"] = stem2 .. "em" forms["acc_sg_f"] = stem2 .. "em" forms["acc_sg_n"] = stem2 .. "e" forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_f"] = {stem2 .. "īs", stem2 .. "ēs"} forms["acc_pl_n"] = stem2 .. "ia" forms["abl_sg_m"] = stem2 .. "ī" forms["abl_sg_f"] = stem2 .. "ī" forms["abl_sg_n"] = stem2 .. "ī" forms["abl_pl_m"] = stem2 .. "ibus" forms["abl_pl_f"] = stem2 .. "ibus" forms["abl_pl_n"] = stem2 .. "ibus" -- abl_i_e(stem2, forms, types) -- enable once [[Module:la-nominal]] has ben updated forms["voc_sg_m"] = stem1 forms["voc_sg_f"] = stem2 .. "is" forms["voc_sg_n"] = stem2 .. "e" forms["voc_pl_m"] = stem2 .. "ēs" forms["voc_pl_f"] = stem2 .. "ēs" forms["voc_pl_n"] = stem2 .. "ia" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) end adj_decl["indecl+"] = function(data, args) local forms, subtitles, categories = data.forms, data.subtitles, data.categories local stem = args[1] insert_if_not(data.title, "indeclinable") insert_if_not(categories, "LA:Adjetivos indeclinables") forms["nom_sg_m"] = stem forms["nom_pl_m"] = {} forms["gen_sg_m"] = {} forms["gen_pl_m"] = {} forms["dat_sg_m"] = {} forms["dat_pl_m"] = {} forms["acc_sg_m"] = stem forms["acc_pl_m"] = {} forms["abl_sg_m"] = {} forms["abl_pl_m"] = {} forms["voc_sg_m"] = {} forms["voc_pl_m"] = {} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) end adj_decl["irreg+"] = function(data,args) local forms, types, pos, notes, categories = data.forms, data.types, data.pos, data.notes, data.categories local arg1 = args[1] insert_if_not(data.title, "irregular") insert_if_not(categories, "LA:Adjetivos irregulares") if arg1 == "duo" or arg1 == "ambō" then local stem = sub(arg1, 1, -2) -- data.title = stem == "amb" and "irregular adjective" or "numeral" data.num = "pl" local stem_with_o = stem .. (stem == "amb" and "ō" or "o") forms["nom_pl_m"] = stem_with_o forms["nom_pl_f"] = stem .. "ae" forms["nom_pl_n"] = stem_with_o forms["gen_pl_m"] = stem .. "ōrum" forms["gen_pl_f"] = stem .. "ārum" forms["gen_pl_n"] = stem .. "ōrum" forms["dat_pl_m"] = stem .. "ōbus" forms["dat_pl_f"] = stem .. "ābus" forms["dat_pl_n"] = stem .. "ōbus" forms["acc_pl_m"] = {stem .. "ōs", stem_with_o} forms["acc_pl_f"] = stem .. "ās" forms["acc_pl_n"] = stem_with_o forms["abl_pl_m"] = stem .. "ōbus" forms["abl_pl_f"] = stem .. "ābus" forms["abl_pl_n"] = stem .. "ōbus" forms["voc_pl_m"] = stem_with_o forms["voc_pl_f"] = stem .. "ae" forms["voc_pl_n"] = stem_with_o if stem == "du" then forms["gen_pl_m"] = {forms["gen_pl_m"], "duum", "duom{†}"} forms["gen_pl_n"] = {forms["gen_pl_n"], "duum", "duom{†}"} end elseif arg1:sub(-6) == "mīlle" then insert_if_not(data.title, "numeral semiindeclinable") local stem = arg1:sub(1, -3) forms["nom_sg_m"] = stem .. "le" forms["nom_pl_m"] = {stem .. "ia", stem .. "lia"} forms["gen_sg_m"] = stem .. "le" forms["gen_pl_m"] = {stem .. "ium", stem .. "lium"} forms["dat_sg_m"] = stem .. "le" forms["dat_pl_m"] = {stem .. "ibus", stem .. "libus"} forms["acc_sg_m"] = stem .. "le" forms["acc_pl_m"] = {stem .. "ia", stem .. "lia"} forms["abl_sg_m"] = stem .. "le" forms["abl_pl_m"] = {stem .. "ibus", stem .. "libus"} forms["voc_sg_m"] = stem .. "le" forms["voc_pl_m"] = {stem .. "ia", stem .. "lia"} forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) elseif arg1 == "ille" or arg1 == "iste" or arg1 == "ipse" or arg1 == "olle" then local stem = arg1:sub(1, -2) types.ius = true adj_decl["1&2+"](data, {stem}) insert_if_not(data.title, "demostrativo") -- .. " " .. singularize(data.pos) forms["nom_sg_m"] = arg1 if arg1 == "ipse" then add_form(forms, "nom_sg_n", stem, "ud{MED}") add_form(forms, "acc_sg_n", stem, "ud{MED}") else forms["nom_sg_n"] = stem .. "ud" forms["acc_sg_n"] = stem .. "ud" end forms["voc_sg_m"] = {} forms["voc_sg_f"] = {} forms["voc_sg_n"] = {} forms["voc_pl_m"] = {} forms["voc_pl_f"] = {} forms["voc_pl_n"] = {} elseif arg1 == "illic" or arg1 == "istic" or arg1 == "isthic" then insert_if_not(data.title, "demostrativo") -- .. " " .. singularize(data.pos) local stem = arg1:sub(1, -3) forms["nom_sg_m"] = stem .. "ic" forms["nom_sg_f"] = stem .. "aec" forms["nom_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"} forms["gen_sg_m"] = stem .. "ī̆usce" forms["gen_sg_f"] = stem .. "ī̆usce" forms["gen_sg_n"] = stem .. "ī̆usce" forms["dat_sg_m"] = stem .. "īc" forms["dat_sg_f"] = stem .. "īc" forms["dat_sg_n"] = stem .. "īc" forms["acc_sg_m"] = stem .. "unc" forms["acc_sg_f"] = stem .. "anc" forms["acc_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"} forms["abl_sg_m"] = stem .. "ōc" forms["abl_sg_f"] = stem .. "āc" forms["abl_sg_n"] = stem .. "ōc" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["nom_pl_m"] = stem .. "īsce" forms["nom_pl_f"] = stem .. "aec" forms["nom_pl_n"] = stem .. "aec" forms["gen_pl_m"] = stem .. "ōrunc{?}" forms["gen_pl_f"] = stem .. "ārunc{?}" forms["gen_ok_n"] = stem .. "ōrunc{?}" forms["dat_pl_m"] = stem .. "īsce" forms["dat_pl_f"] = stem .. "īsce" forms["dat_pl_n"] = stem .. "īsce" forms["acc_pl_m"] = stem .. "ōsce" forms["acc_pl_f"] = stem .. "āsce" forms["acc_pl_n"] = stem .. "aec" forms["abl_pl_m"] = stem .. "īsce" forms["abl_pl_f"] = stem .. "īsce" forms["abl_pl_n"] = stem .. "īsce" forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif arg1 == "hice" then insert_if_not(data.title, "demostrativo") -- .. " pronoun" forms["nom_sg_m"] = "hice" forms["nom_sg_f"] = "haece" forms["nom_sg_n"] = "hoce" forms["nom_pl_m"] = "hīce" forms["nom_pl_f"] = "haece" forms["nom_pl_n"] = "haece" forms["gen_sg_m"] = "huiusce" forms["gen_sg_f"] = "huiusce" forms["gen_sg_n"] = "huiusce" forms["gen_pl_m"] = {"hōrunce", "hōrumce"} forms["gen_pl_f"] = {"hārunce", "hārumce"} forms["gen_pl_n"] = {"hōrunce", "hōrumce"} forms["dat_sg_m"] = "huīce" forms["dat_sg_f"] = "huīce" forms["dat_sg_n"] = "huīce" forms["dat_pl_m"] = "hīsce" forms["dat_pl_f"] = "hīsce" forms["dat_pl_n"] = "hīsce" forms["acc_sg_m"] = "hunce" forms["acc_sg_f"] = "hance" forms["acc_sg_n"] = "hoce" forms["acc_pl_m"] = "hōsce" forms["acc_pl_f"] = "hāsce" forms["acc_pl_n"] = "haece" forms["abl_sg_m"] = "hōce" forms["abl_sg_f"] = "hāce" forms["abl_sg_n"] = "hōce" forms["abl_pl_m"] = "hīsce" forms["abl_pl_f"] = "hīsce" forms["abl_pl_n"] = "hīsce" forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif arg1 == "plūs" then insert_if_not(data.title, "comparativo") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación") insert_if_not(data.categories, "LA:Sustantivos de la tercera declinación con una terminación") data.note = "Ninguna de las formas en singular se usaron en latín clásico" forms["nom_sg_n"] = "plūs" forms["nom_pl_m"] = "plūrēs" forms["nom_pl_n"] = "plūra" forms["gen_sg_m"] = "plūris" forms["gen_sg_n"] = "plūris" forms["gen_pl_m"] = "plūrium" forms["gen_pl_n"] = "plūrium" forms["dat_sg_m"] = "plūrī" forms["dat_sg_n"] = "plūrī" forms["dat_pl_m"] = "plūribus" forms["dat_pl_n"] = "plūribus" forms["acc_sg_m"] = "plūrem" forms["acc_sg_f"] = "plūrem" forms["acc_sg_n"] = "plūs" forms["acc_pl_m"] = {"plūrēs", "plūrīs"} forms["acc_pl_n"] = "plūra" forms["abl_sg_m"] = {"plūrī", "plūre"} forms["abl_sg_f"] = {"plūrī", "plūre"} forms["abl_sg_n"] = {"plūrī", "plūre"} forms["abl_pl_m"] = "plūribus" forms["abl_pl_n"] = "plūribus" forms["voc_sg_n"] = "plūs" forms["voc_pl_m"] = "plūrēs" forms["voc_pl_n"] = "plūra" forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"]) forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"]) forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"]) forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"]) forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"]) elseif match(arg1, "^egō̆?$") or arg1 == "nōs" then insert_if_not(data.title, "pronombre nominativo") forms["nom_sg_m"] = arg1 forms["nom_pl_m"] = "nōs" forms["gen_sg_m"] = "meī" forms["gen_pl_m"] = {"nostrī", "nostrum"} forms["dat_sg_m"] = "mihī̆" forms["dat_pl_m"] = "nōbīs" forms["acc_sg_m"] = {"mē", "mēmē"} forms["acc_pl_m"] = "nōs" forms["abl_sg_m"] = {"mē", "mēmē"} forms["abl_pl_m"] = "nōbīs" forms["voc_sg_m"] = arg1 forms["voc_pl_m"] = "nōs" elseif arg1 == "tū" or arg1 == "vōs" then insert_if_not(data.title, "pronombre nominativo") forms["nom_sg_m"] = arg1 forms["nom_pl_m"] = "vōs" forms["gen_sg_m"] = "tuī" forms["gen_pl_m"] = {"vestrī", "vestrum"} forms["dat_sg_m"] = "tibī̆" forms["dat_pl_m"] = "vōbīs" forms["acc_sg_m"] = {"tē", "tētē"} forms["acc_pl_m"] = "vōs" forms["abl_sg_m"] = {"tē", "tētē"} forms["abl_pl_m"] = "vōbīs" forms["voc_sg_m"] = arg1 forms["voc_pl_m"] = "vōs" elseif arg1 == "suī" then insert_if_not(data.title, "pronombre reflexivo") forms["nom_sg_m"] = {} forms["nom_pl_m"] = {} forms["gen_sg_m"] = arg1 forms["gen_pl_m"] = forms["gen_sg_m"] forms["dat_sg_m"] = "sibī̆" forms["dat_pl_m"] = forms["dat_sg_m"] forms["acc_sg_m"] = {"sē", "sēsē"} forms["acc_pl_m"] = {"sē", "sēsē"} forms["abl_sg_m"] = {"sē", "sēsē"} forms["abl_pl_m"] = {"sē", "sēsē"} forms["voc_sg_m"] = {} forms["voc_pl_m"] = {} elseif arg1 == "is" or arg1 == "īdem" then insert_if_not(data.title, "pronombre demostrativo") forms["nom_sg_m"] = "is" forms["nom_sg_f"] = "ea" forms["nom_sg_n"] = "id" forms["nom_pl_m"] = {"iī", "eī", "ī"} forms["nom_pl_f"] = "eae" forms["nom_pl_n"] = "ea" forms["gen_sg_m"] = {"eius", "ejus"} forms["gen_sg_f"] = {"eius", "ejus"} forms["gen_sg_n"] = {"eius", "ejus"} forms["gen_pl_m"] = {"eōrum", "eum"} forms["gen_pl_f"] = "eārum" forms["gen_pl_n"] = {"eōrum", "eum"} forms["dat_sg_m"] = {"eī", "e͡i", "ēī"} forms["dat_sg_f"] = {"eī", "e͡i", "ēī", "eae"} forms["dat_sg_n"] = {"eī", "e͡i", "ēī"} forms["dat_pl_m"] = {"iīs", "eīs", "īs"} forms["dat_pl_f"] = {"iīs", "eīs", "īs", "eābus"} forms["dat_pl_n"] = {"iīs", "eīs", "īs"} forms["acc_sg_m"] = "eum" forms["acc_sg_f"] = "eam" forms["acc_sg_n"] = "id" forms["acc_pl_m"] = "eōs" forms["acc_pl_f"] = "eās" forms["acc_pl_n"] = "ea" forms["abl_sg_m"] = "eō" forms["abl_sg_f"] = "eā" forms["abl_sg_n"] = "eō" forms["abl_pl_m"] = {"iīs", "eīs", "īs"} forms["abl_pl_f"] = {"iīs", "eīs", "īs"} forms["abl_pl_n"] = {"iīs", "eīs", "īs"} if arg1 == "īdem" then forms["nom_sg_m"] = "ī" forms["nom_sg_n"] = "i" forms["acc_sg_n"] = "i" end elseif arg1 == "quis" or arg1 == "quī" then data.note = "La forma ''qua'' es preferida frente a ''quae'' cuando se usa como indefinido" local id = "id" if arg1 == "quī" then insert_if_not(data.title, "determinante relativo/interrogativo") id = "od" forms["nom_sg_m"] = {"quī", "quis", "quei{†}"} forms["nom_sg_f"] = {"quae", "qua"} forms["acc_sg_f"] = "quam" forms["abl_sg_m"] = "quō" forms["abl_sg_f"] = "quā" forms["abl_sg_n"] = "quō" else insert_if_not(data.title, "pronombre relativo/interrogativo") forms["nom_sg_m"] = {"quis", "quī"} forms["nom_sg_f"] = {"quae", "qua", "quis{†}"} forms["acc_sg_f"] = {"quam", "quem{†}"} forms["abl_sg_m"] = {"quō", "quī"} forms["abl_sg_f"] = {"quā", "quī"} forms["abl_sg_n"] = {"quō", "quī"} end forms["nom_sg_n"] = "qu"..id forms["nom_pl_m"] = {"quī", "quei{†}"} forms["nom_pl_f"] = "quae" forms["nom_pl_n"] = {"quae", "qua"} forms["gen_sg_m"] = {"cuius", "quoius{†}"} forms["gen_sg_f"] = {"cuius", "quoius{†}"} forms["gen_sg_n"] = {"cuius", "quoius{†}"} forms["gen_pl_m"] = "quōrum" forms["gen_pl_f"] = "quārum" forms["gen_pl_n"] = "quōrum" forms["dat_sg_m"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_sg_f"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_sg_n"] = {"cui", "quoi{†}", "quoiei{†}"} forms["dat_pl_m"] = {"quibus", "quīs", "queis{†}"} forms["dat_pl_f"] = {"quibus", "quīs", "queis{†}"} forms["dat_pl_n"] = {"quibus", "quīs", "queis{†}"} forms["acc_sg_m"] = "quem" forms["acc_sg_n"] = "qu"..id forms["acc_pl_m"] = "quōs" forms["acc_pl_f"] = "quās" forms["acc_pl_n"] = {"quae", "qua"} forms["abl_pl_m"] = {"quibus", "quīs", "queis{†}"} forms["abl_pl_f"] = {"quibus", "quīs", "queis{†}"} forms["abl_pl_n"] = {"quibus", "quīs", "queis{†}"} elseif arg1 == "aliquī" then insert_if_not(data.title, "determinante indefinido") forms["nom_sg_m"] = {"aliquī{DET/ADJ}", "aliquis{PRON/SUST}"} forms["nom_sg_f"] = {"aliqua", "aliquae{R}"} forms["nom_sg_n"] = "aliquod" forms["nom_pl_m"] = "aliquī" forms["nom_pl_f"] = "aliquae" forms["nom_pl_n"] = "aliqua" forms["gen_sg_m"] = {"alicuius", "aliquoius{†}"} forms["gen_sg_f"] = {"alicuius", "aliquoius{†}"} forms["gen_sg_n"] = {"alicuius", "aliquoius{†}"} forms["gen_pl_m"] = "aliquōrum" forms["gen_pl_f"] = "aliquārum" forms["gen_pl_n"] = "aliquōrum" forms["dat_sg_m"] = {"alicui", "aliquoi{†}"} forms["dat_sg_f"] = {"alicui", "aliquoi{†}"} forms["dat_sg_n"] = {"alicui", "aliquoi{†}"} forms["dat_pl_m"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["dat_pl_f"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["dat_pl_n"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["acc_sg_m"] = "aliquem" forms["acc_sg_f"] = "aliquam" forms["acc_sg_n"] = "aliquod" forms["acc_pl_m"] = "aliquōs" forms["acc_pl_f"] = "aliquās" forms["acc_pl_n"] = "aliqua" forms["abl_sg_m"] = "aliquō" forms["abl_sg_f"] = "aliquā" forms["abl_sg_n"] = "aliquō" forms["abl_pl_m"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["abl_pl_f"] = {"aliquīs", "aliquibus", "aliqueis{†}"} forms["abl_pl_n"] = {"aliquīs", "aliquibus", "aliqueis{†}"} elseif arg1 == "quisquam" then insert_if_not(data.title, "determinante indefinido, concordancia en negativo") data.note = "En latín clásico, era preferidas las formas de ''ūllus'' en lugar de las esta voz para el femenino y el neutro." forms["nom_sg_m"] = "quisquam" forms["nom_sg_f"] = {"quaequam", "quisquam{†}"} forms["nom_sg_n"] = "quodquam" forms["nom_pl_m"] = "quīquam" forms["nom_pl_f"] = "quaequam" forms["nom_pl_n"] = "quaequam" forms["gen_sg_m"] = "cuiusquam" forms["gen_sg_f"] = "cuiusquam" forms["gen_sg_n"] = "cuiusquam" forms["gen_pl_m"] = "quōrumquam" forms["gen_pl_f"] = "quārumquam" forms["gen_pl_n"] = "quōrumquam" forms["dat_sg_m"] = "cuiquam" forms["dat_sg_f"] = "cuiquam" forms["dat_sg_n"] = "cuiquam" forms["dat_pl_m"] = "quibusquam" forms["dat_pl_f"] = "quibusquam" forms["dat_pl_n"] = "quibusquam" forms["acc_sg_m"] = "quemquam" forms["acc_sg_f"] = {"quamquam", "quemquam{†}"} forms["acc_sg_n"] = "quodquam" forms["acc_pl_m"] = "quōsquam" forms["acc_pl_f"] = "quāsquam" forms["acc_pl_n"] = "quaequam" forms["abl_sg_m"] = {"quōquam", "quīquam{†}"} forms["abl_sg_f"] = "quāquam" forms["abl_sg_n"] = "quōquam" forms["abl_pl_m"] = "quibusquam" forms["abl_pl_f"] = "quibusquam" forms["abl_pl_n"] = "quibusquam" forms["voc_sg_m"] = "quisquam" forms["voc_sg_f"] = "quaequam" forms["voc_sg_n"] = "quodquam" forms["voc_pl_m"] = "quīquam" forms["voc_pl_f"] = "quaequam" forms["voc_pl_n"] = "quaequam" elseif arg1 == "quisquis" then insert_if_not(data.title, "pronombre relativo/interrogativo") forms["nom_sg_m"] = "quisquis" forms["nom_sg_f"] = "quisquis" forms["nom_sg_n"] = {"quidquid", "quicquid"} forms["nom_pl_m"] = "quīquī" forms["nom_pl_f"] = "quaequae" forms["nom_pl_n"] = "quaequae" forms["gen_sg_m"] = "cuiuscuius" forms["gen_sg_f"] = "cuiuscuius" forms["gen_sg_n"] = "cuiuscuius" forms["gen_pl_m"] = "quōrumquōrum" forms["gen_pl_f"] = "quārumquārum" forms["gen_pl_n"] = "quōrumquōrum" forms["dat_sg_m"] = "cuicui" forms["dat_sg_f"] = "cuicui" forms["dat_sg_n"] = "cuicui" forms["dat_pl_m"] = {"quibusquibus", "quīsquīs"} forms["dat_pl_f"] = {"quibusquibus", "quīsquīs"} forms["dat_pl_n"] = {"quibusquibus", "quīsquīs"} forms["acc_sg_m"] = "quemquem" forms["acc_sg_f"] = "quamquam" forms["acc_sg_n"] = {"quidquid", "quicquid"} forms["acc_pl_m"] = "quōsquōs" forms["acc_pl_f"] = "quāsquās" forms["acc_pl_n"] = "quaequae" forms["abl_sg_m"] = "quōquō" forms["abl_sg_f"] = "quāquā" forms["abl_sg_n"] = "quōquō" forms["abl_pl_m"] = {"quibusquibus", "quīsquīs"} forms["abl_pl_f"] = {"quibusquibus", "quīsquīs"} forms["abl_pl_n"] = {"quibusquibus", "quīsquīs"} forms["voc_sg_m"] = "quisquis" forms["voc_sg_f"] = "quisquis" forms["voc_sg_n"] = {"quidquid", "quicquid"} forms["voc_pl_m"] = "quīquī" forms["voc_pl_f"] = "quaequae" forms["voc_pl_n"] = "quaequae" elseif arg1 == "ecquis" then insert_if_not(data.title, "pronombre interrogativo") forms["nom_sg_m"] = {"ecquis", "ecquī"} forms["nom_sg_f"] = {"ecqua", "ecquae"} forms["nom_sg_n"] = "ecquid" forms["nom_pl_m"] = "ecquī" forms["nom_pl_f"] = "ecquae" forms["nom_pl_n"] = {"ecqua", "ecquae"} forms["gen_sg_m"] = "eccuius" forms["gen_sg_f"] = "eccuius" forms["gen_sg_n"] = "eccuius" forms["dat_sg_m"] = "eccui" forms["dat_sg_f"] = "eccui" forms["dat_sg_n"] = "eccui" forms["acc_sg_m"] = "ecquem" forms["acc_sg_f"] = "ecquam" forms["acc_sg_n"] = "ecquod" forms["acc_pl_m"] = "ecquōs" forms["acc_pl_f"] = "ecquās" forms["acc_pl_n"] = {"ecqua", "ecquae"} forms["abl_sg_m"] = {"ecquō", "ecquī"} forms["abl_sg_f"] = {"ecquā", "ecquī"} forms["abl_sg_n"] = {"ecquō", "ecquī"} elseif arg1 == "quīdam" then insert_if_not(data.title, "pronombre indefinido") forms["nom_sg_m"] = "quīdam" forms["nom_sg_f"] = "quaedam" forms["nom_sg_n"] = "quiddam" forms["nom_pl_m"] = {"quīdam", "quēsdam{†}"} forms["nom_pl_f"] = "quaedam" forms["nom_pl_n"] = "quaedam" forms["gen_sg_m"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_sg_f"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_sg_n"] = {"cuiusdam", "quoiusdam{†}"} forms["gen_pl_m"] = {"quōrundam", "quōrumdam"} forms["gen_pl_f"] = {"quārundam", "quārumdam"} forms["gen_pl_n"] = {"quōrundam", "quōrumdam"} forms["dat_sg_m"] = {"cuidam", "quoidam{†}"} forms["dat_sg_f"] = {"cuidam", "quoidam{†}"} forms["dat_sg_n"] = {"cuidam", "quoidam{†}"} forms["dat_pl_m"] = {"quibusdam", "quīsdam{†}"} forms["dat_pl_f"] = {"quibusdam", "quīsdam{†}"} forms["dat_pl_n"] = {"quibusdam", "quīsdam{†}"} forms["acc_sg_m"] = {"quendam", "quemdam"} forms["acc_sg_f"] = {"quandam", "quamdam"} forms["acc_sg_n"] = "quiddam" forms["acc_pl_m"] = {"quōsdam", "quēsdam{†}"} forms["acc_pl_f"] = "quāsdam" forms["acc_pl_n"] = "quaedam" forms["abl_sg_m"] = "quōdam" forms["abl_sg_f"] = "quādam" forms["abl_sg_n"] = "quōdam" forms["abl_pl_m"] = {"quibusdam", "quīsdam{†}"} forms["abl_pl_f"] = {"quibusdam", "quīsdam{†}"} forms["abl_pl_n"] = {"quibusdam", "quīsdam{†}"} elseif arg1 == "nēmō" then insert_if_not(data.title, "Determinante y pronombre, concordancia en negativo") forms["nom_sg_m"] = "nēmō" forms["nom_sg_f"] = "nēmō" forms["gen_sg_m"] = {"nūllī̆us", "nēminis{R}"} forms["gen_sg_f"] = {"nūllī̆us", "nēminis{R}"} forms["dat_sg_m"] = "nēminī" forms["dat_sg_f"] = "nēminī" forms["acc_sg_m"] = "nēminem" forms["acc_sg_f"] = "nēminem" forms["abl_sg_m"] = {"nūllō", "nēmine{R}"} forms["abl_sg_f"] = {"nūllā", "nēmine{R}"} else error('adjective ' .. arg1 .. ' not recognized') end end local function extract_base(lemma, ending) if ending:find("(", nil, true) then return match(lemma, ending) end return match(lemma, "^(.*)" .. ending .. "$") end local function get_noun_subtype_by_ending(lemma, stem2, decltype, specified_subtypes, endings_and_subtypes) for _, ending_and_subtypes in ipairs(endings_and_subtypes) do local ending = ending_and_subtypes[1] local subtypes = ending_and_subtypes[2] local not_this_subtype = false if ( specified_subtypes.pl and not contains(subtypes, "pl") or contains(subtypes, "both") and not specified_subtypes.both ) then -- We now require that plurale tantum terms specify a plural-form lemma. -- The autodetected subtypes will include 'pl' for such lemmas; if not, -- we fail this entry. Additionally, if the rule contains 'both', it -- must be explicitly specified to match. not_this_subtype = true else for _, subtype in ipairs(subtypes) do -- A subtype is directly canceled by specifying -SUBTYPE. -- In addition, M or F as a subtype is canceled by N, and -- vice-versa, but M doesn't cancel F or vice-versa; instead, -- we simply ignore the conflicting gender specification when -- constructing the combination of specified and inferred subtypes. -- The reason for this is that neuters have distinct declensions -- from masculines and feminines, but masculines and feminines have -- the same declension, and various nouns in Latin that are -- normally masculine are exceptionally feminine and vice-versa -- (nauta, agricola, fraxinus, malus "apple tree", manus, rēs, -- etc.). -- -- In addition, sg as a subtype is canceled by pl and vice-versa. -- It's also possible to specify both, which will override sg but -- not cancel it (in the sense that it won't prevent the relevant -- rule from matching). For example, there's a rule specifying that -- lemmas beginning with a capital letter and ending in -ius take -- the ius.voci.sg subtypes. Specifying such a lemma with the -- subtype both will result in the ius.voci.both subtypes, whereas -- specifying such a lemma with the subtype pl will cause this rule -- not to match, and it will fall through to a less specific rule -- that returns just the ius subtype, which will be combined with -- the explicitly specified pl subtype to produce ius.pl. if specified_subtypes["-" .. subtype] or subtype == "N" and (specified_subtypes.M or specified_subtypes.F) or (subtype == "M" or subtype == "F") and specified_subtypes.N or subtype == "sg" and specified_subtypes.pl or subtype == "pl" and specified_subtypes.sg then not_this_subtype = true break end end end if not not_this_subtype then if type(ending) == "table" then local lemma_ending = ending[1] local stem2_ending = ending[2] local base = extract_base(lemma, lemma_ending) if base and base .. stem2_ending == stem2 then return base, stem2, subtypes end else local base = extract_base(lemma, ending) if base then return base, stem2, subtypes end end end end if decltype then error("Unrecognized ending for declension-" .. decltype .. " noun: " .. lemma) end return lemma, stem2, keys_to_list(specified_subtypes) end local patterns = { {"[mM]a", "%0t"}, {"e", ""}, {"([aoAO])([lr])", "%1" .. MACRON .. "%2"}, {"[eE]l", "%0l"}, {"([mM])en", "%1in"}, {"([tT]ūd)ō", "%1in"}, {"([gG])ō", "%1in"}, {"[ōŌ]", "%1n"}, {"er", "r"}, {"[ēi]s", ""}, {"([āēīōūȳĀĒĪŌŪȲ]n)s", function(v) return (gsub(toNFD(v), MACRON, "") .. "t") end}, {"([cC])eps", "%1ipit"}, {"([bp])s", "%1"}, {"us", "or"}, {"s", "t"}, {"ex", "ic"}, {"x", "c"}, } local function make_stem2(stem) local n for _, pattern in ipairs(patterns) do local key = pattern[1] stem, n = gsub(stem, key .. "$", pattern[2]) if n > 0 then -- debug_track("la-utilities/" .. key) REVISAR return toNFC(stem) end end -- debug_track("la-utilities") REVISAR return stem end local function detect_noun_subtype(lemma, stem2, typ, subtypes) local base, _ if typ == "1" then return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"ām", {"F", "am"}}, {"ās", {"M", "Greek", "Ma"}}, {"ēs", {"M", "Greek", "Me"}}, {"ē", {"F", "Greek"}}, {"ae", {"F", "pl"}}, {"a", {"F"}}, }) elseif typ == "2" then local detected_subtypes lemma, stem2, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"^(.*r)$", {"M", "er"}}, {"^(.*v)os$", {"M", "vos"}}, {"^(.*v)om$", {"N", "vom"}}, -- If the lemma ends in -os and the user said N or -M, then the -- following won't apply, and the second (neuter) -os will applly. {"os", {"M", "Greek"}}, {"os", {"N", "Greek", "us"}}, {"on", {"N", "Greek"}}, -- -ius beginning with a capital letter is assumed a proper name, -- and takes the voci subtype (vocative in -ī) along with the ius -- subtype and sg-only. Other nouns in -ius just take the ius -- subtype. Explicitly specify "sg" so that if .pl is given, -- this rule won't apply. {"^(%u.*)ius$", {"M", "ius", "voci", "sg"}}, {"ius", {"M", "ius"}}, {"ium", {"N", "ium"}}, -- If the lemma ends in -us and the user said N or -M, then the -- following won't apply, and the second (neuter) -us will applly. {"us", {"M"}}, {"us", {"N", "us"}}, {"um", {"N"}}, {"iī", {"M", "ius", "pl"}}, {"ia", {"N", "ium", "pl"}}, -- If the lemma ends in -ī and the user said N or -M, then the -- following won't apply, and the second (neuter) -ī will applly. {"ī", {"M", "pl"}}, {"ī", {"N", "us", "pl"}}, {"oe", {"M", "Greek", "pl"}}, {"a", {"N", "pl"}}, }) stem2 = stem2 or lemma return lemma, stem2, detected_subtypes elseif typ == "3" then if subtypes.pl then if subtypes.Greek then base = lemma:match("^(.*)erēs$") if base then return base .. "ēr", base .. "er", {"er"} end base = lemma:match("^(.*)ontēs$") if base then return base .. "ōn", base .. "ont", {"on"} end base = lemma:match("^(.*)es$") if base then return base, stem2 or base, {} end error("Unrecognized ending for declension-3 plural Greek noun: " .. lemma) end base = lemma:match("^(.*)ia$") if base then return base, stem2 or base, {"N", "I", "pure"} end base = lemma:match("^(.*)a$") if base then return base, stem2 or base, {"N"} end base = lemma:match("^(.*)ēs$") if base then return base, stem2 or base, {} end error("Unrecognized ending for declension-3 plural noun: " .. lemma) end stem2 = stem2 or make_stem2(lemma) local detected_subtypes if subtypes.Greek then base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"is", ""}, {"I"}}, {"ēr", {"er"}}, {"ōn", {"on"}}, }) if base then return lemma, stem2, detected_subtypes end return lemma, stem2, {} end if not subtypes.N then base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"^(%u.*pol)is$", ""}, {"F", "polis", "sg", "loc"}}, {{"tūdō", "tūdin"}, {"F"}}, {{"tās", "tāt"}, {"F"}}, {{"tūs", "tūt"}, {"F"}}, {{"tiō", "tiōn"}, {"F"}}, {{"siō", "siōn"}, {"F"}}, {{"xiō", "xiōn"}, {"F"}}, {{"gō", "gin"}, {"F"}}, {{"or", "ōr"}, {"M"}}, {{"tr[iī]x", "trīc"}, {"F"}}, {{"is", ""}, {"I"}}, {{"^(%l.*)ēs$", ""}, {"I"}}, }) if base then return lemma, stem2, detected_subtypes end end base, _, detected_subtypes = get_noun_subtype_by_ending(lemma, stem2, nil, subtypes, { {{"us", "or"}, {"N"}}, {{"us", "er"}, {"N"}}, {{"ma", "mat"}, {"N"}}, {{"men", "min"}, {"N"}}, {{"^(%u.*)e$", ""}, {"N", "sg"}}, {{"e", ""}, {"N", "I", "pure"}}, {{"al", "āl"}, {"N", "I", "pure"}}, {{"ar", "ār"}, {"N", "I", "pure"}}, }) if base then return lemma, stem2, detected_subtypes end return lemma, stem2, {} elseif typ == "4" then if subtypes.echo or subtypes.Callisto then base = lemma:match("^(.*)ō$") if not base then error("Declension-4 noun of subtype .echo or .Callisto should end in -ō: " .. lemma) end if subtypes.Callisto then return base, nil, {"F", "sg"} else return base, nil, {"F"} end end return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"us", {"M"}}, {"ū̆", {"N"}}, {"ūs", {"M", "pl"}}, {"ua", {"N", "pl"}}, }) elseif typ == "5" then return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"iēs", {"F", "i"}}, {"iēs", {"F", "i", "pl"}}, {"ēs", {"F"}}, {"ēs", {"F", "pl"}}, }) elseif typ == "sgpl" then return lemma, stem2, {} elseif typ == "irreg" and lemma == "domus" then -- [[domus]] auto-sets data.loc = true, but we need to know this -- before declining the noun so we can propagate it to other segments. return lemma, nil, {"loc"} elseif typ == "indecl" or typ == "irreg" and ( lemma == "Deus" or match(lemma, "^[IJ]ēs[uū]s$") or lemma == "Athōs" or lemma == "vēnum" ) then -- Indeclinable nouns, and certain irregular nouns, set data.num = "sg", -- but we need to know this before declining the noun so we can -- propagate it to other segments. return get_noun_subtype_by_ending(lemma, stem2, typ, subtypes, { {"", {"both"}}, {"", {"sg"}}, {"", {"pl"}}, }) elseif typ == "indecl" or typ == "irreg" then return lemma, nil, {} else return nil, nil, {} end end -- Given ENDINGS_AND_SUBTYPES (a list of four-tuples of ENDING, RETTYPE, -- SUBTYPES, PROCESS_RETVAL), check each ENDING in turn against LEMMA and -- STEM2. If it matches, return a four-tuple BASE, STEM2, RETTYPE, NEW_SUBTYPES -- where BASE is normally the remainder of LEMMA minus the ending, STEM2 is -- as passed in, RETTYPE is as passed in, and NEW_SUBTYPES is the same as -- SUBTYPES minus any subtypes beginning with a hyphen. If no endings match, -- throw an error if DECLTYPPE is non-nil, mentioning the DECLTYPE -- (user-specified declension); but if DECLTYPE is nil, just return the tuple -- nil, nil, nil, nil. -- -- In order for a given entry to match, ENDING must match and also the subtypes -- in SUBTYPES (a list) must not be incompatible with the passed-in -- user-specified subtypes SPECIFIED_SUBTYPES (a set, i.e. a table where the -- keys are strings and the value is always true). "Incompatible" means that -- a given SUBTYPE is specified in either one and -SUBTYPE in the other, or -- that "pl" is found in SPECIFIED_SUBTYPES and not in SUBTYPES. -- -- The ending spec in ENDINGS_AND_SUBTYPES is one of the following: -- -- 1. A simple string, e.g. "tūdō", specifying an ending. -- 2. A regex that should match the entire lemma (it should be anchored at -- the beginning with ^ and at the end with $), and contains a single -- capturing group to match the base. -- 3. A pair {SIMPLE_STRING_OR_REGEX, STEM2_ENDING} where -- SIMPLE_STRING_OR_REGEX is one of the previous two possibilities and -- STEM2_ENDING is a string specifying the corresponding ending that must -- be present in STEM2. If this form is used, the combination of -- base + STEM2_ENDING must exactly match STEM2 in order for this entry -- to be considered a match. An example is {"is", ""}, which will match -- lemma == "follis", stem2 == "foll", but not lemma == "lapis", -- stem2 == "lapid". -- -- If PROCESS_STEM2 is given and the returned STEM2 would be nil, call -- process_stem2(BASE) to get the STEM2 to return. local function get_adj_type_and_subtype_by_ending(lemma, stem2, decltype, specified_subtypes, endings_and_subtypes, process_stem2) for _, ending_and_subtypes in ipairs(endings_and_subtypes) do local ending = ending_and_subtypes[1] local rettype = ending_and_subtypes[2] local subtypes = ending_and_subtypes[3] local process_retval = ending_and_subtypes[4] local not_this_subtype = false if ( specified_subtypes.pl and not contains(subtypes, "pl") or contains(subtypes, "both") and not specified_subtypes.both ) then -- We now require that plurale tantum terms specify a plural-form lemma. -- The autodetected subtypes will include 'pl' for such lemmas; if not, -- we fail this entry. Additionally, if the rule contains 'both', it -- must be explicitly specified to match. not_this_subtype = true else for _, subtype in ipairs(subtypes) do -- A subtype is directly canceled by specifying -SUBTYPE. if specified_subtypes["-" .. subtype] then not_this_subtype = true break end -- A subtype is canceled if the user specified SUBTYPE and -- -SUBTYPE is given in the to-be-returned subtypes. local must_not_be_present = subtype:match("^%-(.*)$") if must_not_be_present and specified_subtypes[must_not_be_present] then not_this_subtype = true break end end end if not not_this_subtype then local base if type(ending) == "table" then local lemma_ending = ending[1] local stem2_ending = ending[2] base = extract_base(lemma, lemma_ending) if base and base .. stem2_ending ~= stem2 then base = nil end else base = extract_base(lemma, ending) end if base then -- Remove subtypes of the form -SUBTYPE from the subtypes -- to be returned. local new_subtypes = {} for _, subtype in ipairs(subtypes) do if subtype:sub(1, 1) ~= "-" then insert(new_subtypes, subtype) end end if process_retval then base, stem2 = process_retval(base, stem2) end if process_stem2 then stem2 = stem2 or process_stem2(base) end return base, stem2, rettype, new_subtypes end end end if not decltype then return lemma, stem2, nil, keys_to_list(specified_subtypes) elseif decltype == "" then error("Unrecognized ending for adjective: " .. lemma) else error("Unrecognized ending for declension-" .. decltype .. " adjective: " .. lemma) end end -- Autodetect the type and subtype of an adjective given all the information -- specified by the user: lemma, stem2, declension type and specified subtypes. -- Four values are returned: the lemma base (i.e. the stem of the lemma, as -- required by the declension functions), the value of stem2 to pass to the -- declension function, the declension type and the autodetected subtypes. -- Note that this will not detect a given subtype if -SUBTYPE is specified for -- any subtype that would be returned, or if SUBTYPE is specified and -SUBTYPE -- is among the subtypes that would be returned (such subtypes are filtered out -- of the returned subtypes). local function detect_adj_type_and_subtype(lemma, stem2, typ, subtypes) local function base_as_stem2(base, stem2) return base, base end local function constant_base(baseval) return function(base, stem2) return baseval, nil end end local function decl12_stem2(base) return base end local function decl3_stem2(base) return make_stem2(base) end local decl12_entries = { {"us", "1&2+", {}}, {"a", "1&2+", {}}, {"um", "1&2+", {}}, {"ī", "1&2+", {"pl"}}, {"ae", "1&2+", {"pl"}}, {"a", "1&2+", {"pl"}}, -- Nearly all -os adjectives are greekA {"os", "1&2+", {"greekA", "-greekE"}}, {"os", "1&2+", {"greekE", "-greekA"}}, {"ē", "1&2+", {"greekE", "-greekA"}}, {"on", "1&2+", {"greekA", "-greekE"}}, {"on", "1&2+", {"greekE", "-greekA"}}, {"^(.*er)$", "1&2+", {"er"}}, {"^(.*ur)$", "1&2+", {"er"}}, {"^(h)ic$", "1&2+", {"ic"}}, } local decl3_entries = { {"^(.*er)$", "3-3+", {"I"}}, {"^(.*er)$", "3-3+", {}}, {"is", "3-2+", {"I"}}, {"is", "3-2+", {}}, {"e", "3-2+", {"I"}}, {"e", "3-2+", {}}, {"^(.*[ij])or$", "3-C+", {"abl_e_i", "-abl_i_e"}}, {"^(.*[ij])or$", "3-C+", {}}, {"^(min)or$", "3-C+", {"abl_e_i", "-abl_i_e"}}, {"^(min)or$", "3-C+", {}}, {"^(.*trīx)$", "3-def+", {"trix", "abl_i_e", "-abl_e_i"}}, {"^(.*trīx)$", "3-def+", {"trix"}}, {"^(.*tor)$", "3-def+", {"tor", "abl_i_e", "-abl_e_i"}}, {"^(.*tor)$", "3-def+", {"tor"}}, -- Detect -ēs as 3-1 without auto-inferring .pl if .pl -- not specified. If we don't do this, the later entry for -- -ēs will auto-infer .pl whenever -ēs is specified (which -- won't work for adjectives like quadripēs, volucripēs). -- Essentially, for declension-3 adjectives, we require that -- .pl is given if the lemma is plural. -- -- Most 3-1 adjectives are i-stem (e.g. audāx) so we require -I -- to be given with non-i-stem adjectives. The first entry below -- will apply when -I isn't given, the second when it is given. {"^(.*ēs)$", "3-1+", {"I", "abl_i_e", "-abl_e_i"}}, {"^(.*ēs)$", "3-1+", {"I"}}, {"^(.*ēs)$", "3-1+", {"par", "abl_i_e", "-abl_e_i"}}, {"^(.*ēs)$", "3-1+", {"par"}}, {"^(.*[ij])ōrēs$", "3-C+", {"pl"}}, {"^(min)ōrēs$", "3-C+", {"pl"}}, -- If .pl with -ēs, we don't know if the adjective is 3-1, 3-2 -- or 3-3. Since 3-2 is probably the most common, we infer it -- (as well as the fact that these adjectives *are* in a sense -- 3-2 since they have a distinct neuter in -(i)a. Note that -- we have two entries here; the first one will apply unless -- -I is given, and will infer an i-stem adjective; the second -- one will apply otherwise (and infer a non-i-stem 3-1 adjective). {"ēs", "3-2+", {"pl", "I"}, base_as_stem2}, {"ēs", "3-1+", {"pl", "par"}, base_as_stem2}, -- Same for neuters. {"ia", "3-2+", {"pl", "I"}, base_as_stem2}, {"a", "3-1+", {"pl", "par"}, base_as_stem2}, -- As above for -ēs but for miscellaneous singulars. {"", "3-1+", {"I", "abl_i_e", "-abl_e_i"}}, {"", "3-1+", {"I"}}, {"", "3-1+", {"par", "abl_i_e", "-abl_e_i"}}, {"", "3-1+", {"par"}}, } local function get_subtypes_and_endings(typ, f) local subtypes_and_endings = {} for _, v in ipairs(decl3_entries) do if f(v) then v = deep_copy(v) v[2] = typ insert(subtypes_and_endings, v) end end return subtypes_and_endings end local function compare(spec) return spec[2] == typ end if typ == "+" then local base, new_stem2, rettype, new_subtypes = get_adj_type_and_subtype_by_ending(lemma, stem2, nil, subtypes, decl12_entries, decl12_stem2) if rettype then return base, new_stem2, rettype, new_subtypes else return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl3_entries, decl3_stem2) end elseif typ == "3+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl3_entries, decl3_stem2) elseif typ == "1&2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, decl12_entries, decl12_stem2) elseif typ == "1-1+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"a", typ, {}}, {"ae", typ, {"pl"}}, }) elseif typ == "2-2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"us", typ, {}}, {"um", typ, {}}, {"ī", typ, {"pl"}}, {"a", typ, {"pl"}}, {"os", typ, {"greek"}}, {"on", typ, {"greek"}}, {"oe", typ, {"greek", "pl"}}, }) elseif typ == "3-1+" then -- Use the specs from `decl3_entries`, but add the two i-stem 3-2+ specs when plural-only, as they're the same when 3-1+. local subtypes_and_endings = get_subtypes_and_endings(typ, function(spec) local spec1, spec2 = spec[1], spec[2] return spec2 == typ or (spec2 == "3-2+" and spec1 == "ēs" or spec1 == "ia") end) return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, subtypes_and_endings, decl3_stem2) elseif typ == "3-def+" then -- Like 3-1+ but defective in gender local subtypes_and_endings = get_subtypes_and_endings(typ, compare) insert(subtypes_and_endings, {"", typ, {"I"}}) insert(subtypes_and_endings, {"", typ, {"par"}}) return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, subtypes_and_endings, decl3_stem2) elseif typ == "3-2+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"is", typ, {}}, {"e", typ, {}}, -- Detect -ēs as 3-2 without auto-inferring .pl if .pl -- not specified. If we don't do this, the later entry for -- -ēs will auto-infer .pl whenever -ēs is specified (which -- won't work for adjectives like isoscelēs). Essentially, -- for declension-3 adjectives, we require that .pl is given -- if the lemma is plural. {"ēs", typ, {}}, {"ēs", typ, {"pl"}}, {"ia", typ, {"pl"}}, }, decl3_stem2) elseif typ == "3-3+" or typ == "3-P+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"ēs", typ, {"pl"}, base_as_stem2}, {"ia", typ, {"pl"}, base_as_stem2}, {"", typ, {}}, }, decl3_stem2) elseif typ == "3-C+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, get_subtypes_and_endings(typ, compare), decl3_stem2) elseif typ == "irreg+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"^(duo)$", typ, {"pl"}}, {"^(ambō)$", typ, {"pl"}}, {"^(mīll?ia)$", typ, {"N", "pl"}, constant_base("mīlle")}, -- match ea {"^(ea)$", typ, {}, constant_base("is")}, -- match id {"^(id)$", typ, {}, constant_base("is")}, -- match plural eī, iī {"^([ei]ī)$", typ, {"pl"}, constant_base("is")}, -- match plural ea, eae {"^(eae?)$", typ, {"pl"}, constant_base("is")}, -- match eadem {"^(eadem)$", typ, {}, constant_base("īdem")}, -- match īdem, idem {"^([īi]dem)$", typ, {}, constant_base("īdem")}, -- match plural īdem {"^(īdem)$", typ, {"pl"}}, -- match plural eadem, eaedem {"^(eae?dem)$", typ, {"pl"}, constant_base("īdem")}, -- match illa, ipsa, ista; it doesn't matter if we overmatch because -- we'll get an error as we use the stem itself in the returned base {"^(i[lps][lst])a$", typ, {}, function(base, stem2) return base .. "e", nil end}, -- match illud, istud; as above, it doesn't matter if we overmatch {"^(i[ls][lt])ud$", typ, {}, function(base, stem2) return base .. "e", nil end}, -- match ipsum {"^(ipsum)$", typ, {}, constant_base("ipse")}, -- match plural illī, ipsī, istī; as above, it doesn't matter if we -- overmatch {"^(i[lps][lst])ī$", typ, {"pl"}, function(base, stem2) return base .. "e", nil end}, -- match plural illa, illae, ipsa, ipsae, ista, istae; as above, it -- doesn't matter if we overmatch {"^(i[lps][lst])ae?$", typ, {"pl"}, function(base, stem2) return base .. "e", nil end}, -- Detect quī as non-plural unless .pl specified. {"^(quī)$", typ, {}}, -- Otherwise detect quī as plural. {"^(quī)$", typ, {"pl"}}, -- Same for quae. {"^(quae)$", typ, {}, constant_base("quī")}, {"^(quae)$", typ, {"pl"}, constant_base("quī")}, {"^(quid)$", typ, {}, constant_base("quis")}, {"^(quod)$", typ, {}, constant_base("quī")}, {"^(qui[cd]quid)$", typ, {}, constant_base("quisquis")}, {"^(quīquī)$", typ, {"pl"}, constant_base("quisquis")}, {"^(quaequae)$", typ, {"pl"}, constant_base("quisquis")}, -- match all remaining lemmas in lemma form {"", typ, {}}, }) elseif typ == "indecl+" then return get_adj_type_and_subtype_by_ending(lemma, stem2, typ, subtypes, { {"", typ, {"both"}}, {"", typ, {"sg"}}, {"", typ, {"pl"}}, }) else -- 0+ return lemma, nil, typ, {} end end local noun_lb = { nom_sg = "sg.", gen_sg = "sg.", dat_sg = "sg.", acc_sg = "sg.", abl_sg = "sg.", voc_sg = "sg.", loc_sg = "sg.", nom_pl = "pl.", gen_pl = "pl.", dat_pl = "pl.", acc_pl = "pl.", abl_pl = "pl.", voc_pl = "pl.", loc_pl = "pl." } function export.sust(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {requerido=true}, ["alt"] = {}, ["num"] = {por_defecto = ""}, ["núm"] = {alias_de = "num"}, ["nota"] = {}, } for form,_ in pairs(noun_lb) do params[form] = {lista=true} end local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) local tpalabras = {} for _,p in ipairs(args) do p = match(p, "^(.-);") or p local a, b = match(p, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local r1 = match(a, "^([^/]+)/") if not r1 then r1 = a end if r1 == "idem" or r1 == "īdem" then -- REVISAR: parche para idem que internamente lo declina como si fuera "i" insert(tpalabras, "ī") else insert(tpalabras, r1) end end local palabras, separadores = separar_palabras(title, concat(tpalabras, "-")) local L = #palabras local M = 1 local declinfo local titles = {} local cats = {} local genero local nosg, nopl = true, true for _,arg in ipairs(args) do local formas = {} for subarg in gsplit(arg, ";") do local types = {} local a, b = match(subarg, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local c, d = match(b, "^(.-)%.(.*)$") if d then for spec in gsplit(d, "%.") do spec = gsub(spec, "(.)%-", "%1_") types[spec] = true end end c = c or b local r = split(a, "/") local r1, r2, detected_subtypes = detect_noun_subtype(r[1], r[2], c, types) for _, subtype in ipairs(detected_subtypes) do if types["-" .. subtype] then -- if a "cancel subtype" spec is given, remove the cancel spec -- and don't apply the subtype types["-" .. subtype] = nil elseif (subtype == "M" or subtype == "F" or subtype == "N") and (types.M or types.F or types.N) then -- if gender already specified, don't create conflicting gender spec elseif (subtype == "sg" or subtype == "pl" or subtype == "both") and (types.sg or types.pl or types.both) then -- if number restriction already specified, don't create conflicting -- number restriction spec else types[subtype] = true end end if not genero then if types.M then genero = "m" end if types.N then genero = "n" end if types.F then genero = "f" end end local es_adj if not r1 and genero then local typ r1, r2, typ, detected_subtypes = detect_adj_type_and_subtype(r[1], r[2], c, types) if r1 then c = typ es_adj = true end end assert(r1, "forma no reconocida: "..r[1]) local cb = es_adj and adj_decl[c] or noun_decl[c] assert(cb, "Especifique el tipo de sustantivo correcto en el primer parámetro") local data = {forms={}, types=types, pos="", subtitles="", notes="", categories=cats, title=titles, loc=types.loc, num=args.num} cb(data, {r1, r2}) if es_adj then local forms_ = {} for form,arr in pairs(data.forms) do local f1, f2 = form:match("^(.*)(_"..genero..")$") if f1 then forms_[f1] = arr end end data.forms = forms_ end if not types.sg then nopl = false end if not types.pl then nosg = false end if types.sg then for key,_ in pairs(data.forms) do if key:find("_pl") then data.forms[key] = {} end end end if types.pl then for key,_ in pairs(data.forms) do if key:find("_sg") then data.forms[key] = {} end end end merge_forms(formas, data.forms, noun_lb) end if not declinfo then declinfo = formas else declinfo = combinar_copulativa(declinfo, formas, separadores[M]) M = M + 1 end end if declinfo["loc_sg"] and #declinfo["loc_sg"] == 0 then declinfo["loc_sg"] = nil end if declinfo["loc_pl"] and #declinfo["loc_pl"] == 0 then declinfo["loc_pl"] = nil end if nosg == false then nosg = find(args["num"], "p") end if nopl == false then nopl = find(args["num"], "s") end local forms = sobreescribir_formas(declinfo, args, false, {}) comprobar_defectivo(forms, {}) forms = desactivar_formas(forms, function (form) return (form:find("pl$") and nopl) or (form:find("sg$") and nosg) end ) local raiz_nom = f(forms["nom_sg"][1] or forms["nom_pl"][1] or "?") local raiz_gen = f(forms["gen_sg"][1] or forms["gen_pl"][1] or "?") forms = agregar_enlaces(forms, title, normalizar_enlace) forms = formatear_formas(forms, noun_lb) local t = {} insert(t, {{""}, {"Singular"}, {"Plural"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_sg"], forms["nom_pl"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_sg"], forms["gen_pl"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_sg"], forms["dat_pl"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_sg"], forms["acc_pl"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_sg"], forms["abl_pl"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_sg"], forms["voc_pl"]}) if (forms["loc_sg"] and forms["loc_sg"][1]) or (forms["loc_pl"] and forms["loc_pl"][1]) then insert(t, {{"Locativo", header=true, color=COLOR_H}, forms["loc_sg"], forms["loc_pl"]}) end insert(t, {{args["nota"] or "", colspan=3}}) return renderizar_tabla( frame, "'''Declinación de ''"..raiz_nom..", "..raiz_gen.."'''''&emsp;&emsp;tipo: "..concat(titles, ", "), t, ns == 0 and cats or {} ) end local adj_lb = { nom_sg_m = "m.", nom_sg_n = "n.", nom_sg_f = "f.", nom_pl_m = "m.", nom_pl_n = "n.", nom_pl_f = "f.", gen_sg_m = "m.", gen_sg_n = "n.", gen_sg_f = "f.", gen_pl_m = "m.", gen_pl_n = "n.", gen_pl_f = "f.", dat_sg_m = "m.", dat_sg_n = "n.", dat_sg_f = "f.", dat_pl_m = "m.", dat_pl_n = "n.", dat_pl_f = "f.", acc_sg_m = "m.", acc_sg_n = "n.", acc_sg_f = "f.", acc_pl_m = "m.", acc_pl_n = "n.", acc_pl_f = "f.", abl_sg_m = "m.", abl_sg_n = "n.", abl_sg_f = "f.", abl_pl_m = "m.", abl_pl_n = "n.", abl_pl_f = "f.", voc_sg_m = "m.", voc_sg_n = "n.", voc_sg_f = "f.", voc_pl_m = "m.", voc_pl_n = "n.", voc_pl_f = "f.", } function export.adj(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {requerido=true}, ["alt"] = {}, ["num"] = {por_defecto = ""}, ["núm"] = {alias_de="num"}, ["gen"] = {por_defecto="mfn"}, ["nota"] = {}, } for form,_ in pairs(adj_lb) do params[form] = {lista=true} end params["dat_pl"] = {lista=true} params["abl_pl"] = {lista=true} params["loc_pl"] = {lista=true} local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) if args["dat_pl"][1] then args["dat_pl_m"] = deep_copy(args["dat_pl"]) args["dat_pl_n"] = deep_copy(args["dat_pl"]) args["dat_pl_f"] = deep_copy(args["dat_pl"]) end if args["abl_pl"][1] then args["abl_pl_m"] = deep_copy(args["abl_pl"]) args["abl_pl_n"] = deep_copy(args["abl_pl"]) args["abl_pl_f"] = deep_copy(args["abl_pl"]) end if args["loc_pl"][1] then args["loc_pl_m"] = deep_copy(args["loc_pl"]) args["loc_pl_n"] = deep_copy(args["loc_pl"]) args["loc_pl_f"] = deep_copy(args["loc_pl"]) end args["dat_pl"] = nil args["abl_pl"] = nil args["loc_pl"] = nil assert(not find(title, " "), "locuciones no soportadas aún") -- REVISAR local tpalabras = {} for _,p in ipairs(args) do p = match(p, "^(.-);") or p local a, b = match(p, "^(.-)%.(.*)$") assert(b, "error en especificaciones de palabra") local r1 = match(a, "^([^/]+)/") if not r1 then r1 = a end if r1 == "idem" or r1 == "īdem" then -- REVISAR: parche para idem que internamente lo declina como si fuera "i" insert(tpalabras, "ī") else insert(tpalabras, r1) end end local palabras, separadores = separar_palabras(title, concat(tpalabras, "-")) local L = #palabras local M = 1 local declinfo local titles = {} local cats = {} local nosg, nopl = true, true for _,arg in ipairs(args) do local formas = {} for subarg in gsplit(arg, ";") do local types = {} local a, b = match(subarg, "^(.-)%.(.*)$") a = a or subarg b = b or "+" local c, d = match(b, "^(.-)%.(.*)$") if d then for spec in gsplit(d, "%.") do spec = gsub(spec, "(.)%-", "%1_") types[spec] = true end end c = c or b local r = split(a, "/") local r1, r2, typ, detected_subtypes = detect_adj_type_and_subtype(r[1], r[2], c, types) for _, subtype in ipairs(detected_subtypes) do if types["-" .. subtype] then -- if a "cancel subtype" spec is given, remove the cancel spec -- and don't apply the subtype types["-" .. subtype] = nil elseif (subtype == "M" or subtype == "F" or subtype == "N") and (types.M or types.F or types.N) then -- if gender already specified, don't create conflicting gender spec elseif (subtype == "sg" or subtype == "pl" or subtype == "both") and (types.sg or types.pl or types.both) then -- if number restriction already specified, don't create conflicting -- number restriction spec else types[subtype] = true end end local cb = adj_decl[typ] assert(cb, "Especifique el tipo de sustantivo correcto en el primer parámetro") local data = {forms={}, types=types, pos="", subtitles="", notes="", categories=cats, title=titles, loc=types.loc, num=args.num} cb(data, {r1, r2}) local formas_ = {} -- necesario crear otro arreglo para no modificar las claves durante la iteración for form,arr in pairs(data.forms) do local pref = match(form, "^(.*)_m$") if pref and not data.forms[pref.."_f"] then formas_[pref.."_f"] = deep_copy(arr) end if pref and not data.forms[pref.."_n"] then formas_[pref.."_n"] = deep_copy(arr) end formas_[form] = arr end data.forms = formas_ if not types.sg then nopl = false end if not types.pl then nosg = false end if types.sg then for key,_ in pairs(data.forms) do if key:find("_pl") then data.forms[key] = {} end end end if types.pl then for key,_ in pairs(data.forms) do if key:find("_sg") then data.forms[key] = {} end end end merge_forms(formas, data.forms, adj_lb) end if not declinfo then declinfo = formas else declinfo = combinar_copulativa(declinfo, formas, separadores[M]) M = M + 1 end end if nosg == false then nosg = find(args["num"], "p") end if nopl == false then nopl = find(args["num"], "s") end local m = find(args["gen"], "m") local fem = find(args["gen"], "f") local n = find(args["gen"], "n") local forms = sobreescribir_formas(declinfo, args, false, {}, adj_lb) comprobar_defectivo(forms) forms = desactivar_formas(forms, function (form) return (form:find("pl") and nopl) or (form:find("sg") and nosg) or (form:find("m$") and not m) or (form:find("f$") and not fem) or (form:find("n$") and not n) end ) local raiz_m = f(forms["nom_sg_m"][1] or forms["nom_pl_m"][1] or "?") local raiz_f = f(forms["nom_sg_f"][1] or forms["nom_pl_f"][1] or "?") local raiz_n = f(forms["nom_sg_n"][1] or forms["nom_pl_n"][1] or "?") forms = agregar_enlaces(forms, title, normalizar_enlace) forms = formatear_formas(forms, adj_lb) local t = {} insert(t, {{"Singular", colspan=4}, header=true, color=COLOR_H}) insert(t, {{""}, {"Masculino"}, {"Femenino"}, {"Neutro"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_sg_m"], forms["nom_sg_f"], forms["nom_sg_n"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_sg_m"], forms["gen_sg_f"], forms["gen_sg_n"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_sg_m"], forms["dat_sg_f"], forms["dat_sg_n"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_sg_m"], forms["acc_sg_f"], forms["acc_sg_n"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_sg_m"], forms["abl_sg_f"], forms["abl_sg_n"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_sg_m"], forms["voc_sg_f"], forms["voc_sg_n"]}) insert(t, {{"Plural", colspan=4, header=true, color=COLOR_H}}) insert(t, {{""}, {"Masculino"}, {"Femenino"}, {"Neutro"}, header=true, color=COLOR_H, class="pc"}) insert(t, {{"Nominativo", header=true, color=COLOR_H}, forms["nom_pl_m"], forms["nom_pl_f"], forms["nom_pl_n"]}) insert(t, {{"Genitivo", header=true, color=COLOR_H}, forms["gen_pl_m"], forms["gen_pl_f"], forms["gen_pl_n"]}) insert(t, {{"Dativo", header=true, color=COLOR_H}, forms["dat_pl_m"], forms["dat_pl_f"], forms["dat_pl_n"]}) insert(t, {{"Acusativo", header=true, color=COLOR_H}, forms["acc_pl_m"], forms["acc_pl_f"], forms["acc_pl_n"]}) insert(t, {{"Ablativo", header=true, color=COLOR_H}, forms["abl_pl_m"], forms["abl_pl_f"], forms["abl_pl_n"]}) insert(t, {{"Vocativo", header=true, color=COLOR_H}, forms["voc_pl_m"], forms["voc_pl_f"], forms["voc_pl_n"]}) insert(t, {{args["nota"] or "", colspan=4}}) return renderizar_tabla( frame, "'''Declinación de ''"..raiz_m..", "..raiz_f..", "..raiz_n.."'''''&emsp;&emsp;tipo: "..concat(titles, ", "), t, ns == 0 and cats or {} ) end local EGO, TU, IS, NOS, VOS, EI = 1, 2, 3, 4, 5, 6 local tostr = {"1", "2", "3", "4", "5", "6"} local PRONOMBRES = {"ego", "tū", "is, ea, id", "nōs", "vōs", "eī, eae, ea"} local PRONOMBRES_SUBJ = {"ut ego", "ut tū", "ut is, ut ea, ut id", "ut nōs", "ut vōs", "ut eī, ut eae, ut ea"} local PRONOMBRES_IMP = {"―", "(tū)", "(is, ea, id)", "―", "(vōs)", "(eī, eae, ea)"} local IMPERSONALES = {"", "", "(id)", "", "", ""} local function obtener_pronombre(forma, impers) local conj, p = match(forma, "^(.*)(%d)$") if not p then return nil end p = tonumber(p) if impers then return IMPERSONALES[p] else if find(conj, "^subj") then return PRONOMBRES_SUBJ[p] end if find(conj, "^imper") then return PRONOMBRES_IMP[p] end return PRONOMBRES[p] end end local sufijos = { ["1"] = { inf_act = {"āre","isse"}, inf_pas = {"ārī"}, part_act = {"āns","ūrus"}, part_pas = {"andus","us"}, ger = {"andī","andō","andum"}, sup = {"um","ū"}, ind_pres = {"ō","ās","at","āmus","ātis","ant"}, ind_imp = {"ābam","ābās","ābat","ābāmus","ābātis","ābant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"ābō","ābis","ābit","ābimus","ābitis","ābunt"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","āris","ātur","āmur","āminī","antur", nil,"āre"}, ind_imp_pas = {"ābar","ābāris","ābātur","ābāmur","ābāminī","ābantur", nil,"ābāre"}, ind_fut_pas = {"ābor","āberis","ābitur","ābimur","ābiminī","ābuntur", nil,"ābere"}, subj_pres = {"em","ēs","et","ēmus","ētis","ent"}, subj_imp = {"ārem","ārēs","āret","ārēmus","ārētis","ārent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"er","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, subj_imp_pas = {"ārer","ārēris","ārētur","ārēmur","ārēminī","ārentur", nil,"ārēre"}, imper_pres = {nil,"ā",nil,nil,"āte",nil}, imper_fut = {nil,"ātō","ātō",nil,"ātōte","antō"}, imper_pres_pas = {nil,"āre",nil,nil,"āminī",nil}, imper_fut_pas = {nil,"ātor","ātor",nil,nil,"antor"}, }, ["2"] = { inf_act = {"ēre","isse"}, inf_pas = {"ērī"}, part_act = {"ēns","ūrus"}, part_pas = {"endus","us"}, ger = {"endī","endō","endum"}, sup = {"um","ū"}, ind_pres = {"eō","ēs","et","ēmus","ētis","ent"}, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"ēbō","ēbis","ēbit","ēbimus","ēbitis","ēbunt"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"eor","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", nil,"ēbāre"}, ind_fut_pas = {"ēbor","ēberis","ēbitur","ēbimur","ēbiminī","ēbuntur", nil,"ēbere"}, subj_pres = {"eam","eās","eat","eāmus","eātis","eant"}, subj_imp = {"ērem","ērēs","ēret","ērēmus","ērētis","ērent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ear","eāris","eātur","eāmur","eāminī","eantur", nil,"eāre"}, subj_imp_pas = {"ērer","ērēris","ērētur","ērēmur","ērēminī","ērentur", nil,"ērēre"}, imper_pres = {nil,"ē",nil,nil,"ēte",nil}, imper_fut = {nil,"ētō","ētō",nil,"ētōte","entō"}, imper_pres_pas = {nil,"ēre",nil,nil,"ēminī",nil}, imper_fut_pas = {nil,"ētor","ētor",nil,nil,"entor"}, }, ["3"] = { -- 3 (comparar [[capio]] con [[lego]], las raíces con capi- y leg- pero hay que eliminar la doble ii) inf_act = {"ere","isse"}, inf_pas = {"ī"}, part_act = {"ēns","ūrus"}, part_pas = {"endus","us"}, ger = {"endī","endō","endum"}, sup = {"um","ū"}, ind_pres = {"ō","is","it","imus","itis","unt"}, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"am","ēs","ēt","ēmus","ētis","ent"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","eris","itur","imur","iminī","untur", nil,"ere"}, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", nil,"ēbāre"}, ind_fut_pas = {"ar","ēris","ētur","ēmur","ēminī","entur", nil,"ēre"}, subj_pres = {"am","ās","at","āmus","ātis","ant"}, subj_imp = {"erem","erēs","eret","erēmus","erētis","erent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ar","āris","ātur","āmur","āminī","antur", nil,"āre"}, subj_imp_pas = {"erer","erēris","erētur","erēmur","erēminī","erentur", nil,"erēre"}, imper_pres = {nil,"e",nil,nil,"ite",nil}, imper_fut = {nil,"itō","itō",nil,"itōte","untō"}, imper_pres_pas = {nil,"ere",nil,nil,"iminī",nil}, imper_fut_pas = {nil,"itor","itor",nil,nil,"untor"}, }, ["3/4"] = { inf_act = {"ere","isse","īre","isse"}, inf_pas = {"ī","īrī"}, part_act = {"ēns","iēns","ūrus"}, part_pas = {"endus","iendus","us"}, ger = {"endī","endō","endum","iendī","iendō","iendum"}, sup = {"um","ū"}, ind_pres = {"ō","is","it","imus","itis","unt", "iō","īs",nil,"īmus","ītis","iunt" }, ind_imp = {"ēbam","ēbās","ēbat","ēbāmus","ēbātis","ēbant", "iēbam","iēbās","iēbat","iēbāmus","iēbātis","iēbant" }, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"am","ēs","ēt","ēmus","ētis","ent", "iam","iēs","iet","iēmus","iētis","ient" }, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"or","eris","itur","imur","iminī","untur", "ior","ere","ītur","īmur","īminī","iuntur", nil,"īris",nil,nil,nil,nil, nil,"īre" }, ind_imp_pas = {"ēbar","ēbāris","ēbātur","ēbāmur","ēbāminī","ēbantur", "iēbar","ēbāre","iēbātur","iēbāmur","iēbāminī","iēbantur", nil,"iēbāris",nil,nil,nil,nil, nil,"iēbāre" }, ind_fut_pas = {"ar","ēris","ētur","ēmur","ēminī","entur", "iar","ēre","iētur","iēmur","iēminī","ientur", nil,"iēris",nil,nil,nil,nil, nil,"iēre" }, subj_pres = {"am","ās","at","āmus","ātis","ant", "iam","iās","iat","iāmus","iātis","iant", }, subj_imp = {"erem","erēs","eret","erēmus","erētis","erent", "īrem","īrēs","īret","īrēmus","īrētis","īrent" }, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"ar","āris","ātur","āmur","āminī","antur", "iar","āre","iātur","iāmur","iāminī","iantur", nil,"iāris",nil,nil,nil,nil, nil,"iāre" }, subj_imp_pas = {"erer","erēris","erētur","erēmur","erēminī","erentur", "īrer","erēre","īrētur","īrēmur","īrēminī","īrentur", nil,"īrēris",nil,nil,nil,nil, nil,"īrēre" }, imper_pres = {nil,"e",nil,nil,"ite",nil, nil,"ī",nil,nil,"īte",nil }, imper_fut = {nil,"itō","itō",nil,"itōte","untō", nil,"ītō","ītō",nil,"ītōte","iuntō" }, imper_pres_pas = {nil,"ere",nil,nil,"iminī",nil, nil,"īre",nil,nil,"īminī",nil }, imper_fut_pas = {nil,"itor","itor",nil,nil,"untor", nil,"ītor","ītor",nil,nil,"iuntor" }, }, ["4"] = { inf_act = {"īre","isse"}, inf_pas = {"īrī"}, part_act = {"iēns","ūrus"}, part_pas = {"iendus","us"}, ger = {"iendī","iendō","iendum"}, sup = {"um","ū"}, ind_pres = {"iō","īs","it","īmus","ītis","iunt"}, ind_imp = {"iēbam","iēbās","iēbat","iēbāmus","iēbātis","iēbant"}, ind_perf = {"ī","istī","it","imus","istis","ērunt", nil,nil,nil,nil,nil,"ēre"}, ind_pluperf = {"eram","erās","erat","erāmus","erātis","erant"}, ind_fut = {"iam","iēs","iet","iēmus","iētis","ient"}, ind_fut_perf = {"erō","eris","erit","erimus","eritis","erint"}, ind_fut_sig = {"ō","is","it","imus","itis","int"}, ind_pres_pas = {"ior","īris","ītur","īmur","īminī","iuntur", nil,"īre"}, ind_imp_pas = {"iēbar","iēbāris","iēbātur","iēbāmur","iēbāminī","iēbantur", nil,"iēbāre"}, ind_fut_pas = {"iar","iēris","iētur","iēmur","iēminī","ientur", nil,"iēre"}, subj_pres = {"iam","iās","iat","iāmus","iātis","iant"}, subj_imp = {"īrem","īrēs","īret","īrēmus","īrētis","īrent"}, subj_perf = {"erim","erīs","erit","erīmus","erītis","erint"}, subj_pluperf = {"issem","issēs","isset","issēmus","issētis","issent"}, subj_aor_sig = {"im","īs","īt","īmus","ītis","int"}, subj_pres_pas = {"iar","iāris","iātur","iāmur","iāminī","iantur", nil,"iāre"}, subj_imp_pas = {"īrer","īrēris","īrētur","īrēmur","īrēminī","īrentur", nil,"īrēre"}, imper_pres = {nil,"ī",nil,nil,"īte",nil}, imper_fut = {nil,"ītō","ītō",nil,"ītōte","iuntō"}, imper_pres_pas = {nil,"īre",nil,nil,"īminī",nil}, imper_fut_pas = {nil,"ītor","ītor",nil,nil,"iuntor"}, } } local formas_no_personales = { inf_act = true, inf_pas = true, part_act = true, part_pas = true, ger = true, sup = true, } local formas_personales = { ind_pres = true, ind_imp = true, ind_perf = true, ind_pluperf = true, ind_fut = true, ind_fut_perf = true, ind_fut_sig = true, ind_pres_pas = true, ind_imp_pas = true, ind_fut_pas = true, subj_pres = true, subj_imp = true, subj_perf = true, subj_pluperf = true, subj_aor_sig = true, subj_pres_pas = true, subj_imp_pas = true, imper_pres = true, imper_fut = true, imper_pres_pas = true, imper_fut_pas = true, } local formas = merge(formas_no_personales, formas_personales) local verbos_irregulares = { {"aiō", {"aiō", "aiiō", "aijō", "ajō"}, { desactivar = {"inf_pas","part_pas","ger","sup","ind_pluperf","ind_fut","ind_fut_perf", "ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_perf","subj_pluperf","subj_pres_pas", "subj_imp_pas","imper_fut","imper_pres_pas","imper_fut_pas" }, conj = "3", nucleopres = {"ai"}, nucleoperf = {"a"}, nucleosup = {}, nucleosigm = {}, inf_act = {"aiere"}, ind_pres = {nil,nil,nil,{}}, ind_perf = {{},nil,nil,{},{}}, subj_pres = {nil,nil,nil,{},{}}, subj_imp = {{},{},nil,{},{},{}}, imper_pres = {{},{"ai"},{},{},{},{}}, }}, {"cedo", {"cedo"}, { desactivar = {"inf_act","inf_pas","part_act","part_pas","ger","sup","ind_pluperf","ind_pres","ind_imp","ind_perf", "ind_fut","ind_fut_perf","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres","subj_imp","subj_perf", "subj_pluperf","subj_pres_pas","subj_imp_pas","imper_fut","imper_pres_pas","imper_fut_pas" }, conj = "3", nucleopres = {}, nucleoperf = {}, nucleosup = {}, nucleosigm = {}, imper_pres = {nil,{"cedo"},nil,nil,{"cette","cedile"},nil}, }}, {"dīcō", {"dīcō"}, { conj = "3", nucleopres = {"dīc"}, nucleoperf = {"dīx"}, nucleosup = {"dict"}, nucleosigm = {"dīx"}, desactivar = {}, imper_pres = {nil, {"dīc", "dīce"}}, inf_pas = {"dīcī", "dīcier{L}"}, }}, {"dō", {"dō"}, { conj = "1", nucleopres = {"d"}, nucleoperf = {"ded"}, nucleosup = {"dat"}, nucleosigm = {}, desactivar = {}, inf_act = {"dare","dedisse"}, inf_pas = {"darī"}, ind_pres = {nil,nil,nil,{"damus"},{"datis"},nil}, ind_imp = {{"dabam"},{"dabās"},{"dabat"},{"dabāmus"},{"dabātis"},{"dabant"}}, ind_fut = {{"dabō"},{"dabis"},{"dabit"},{"dabimus"},{"dabitis"},{"dabunt"}}, ind_imp_pas = {{"dabar"},{"dabāris","dabāre"},{"dabātur"},{"dabāmur"},{"dabāminī"},{"dabantur"}}, ind_fut_pas = {{"dabor"},{"daberis","dabere"},{"dabitur"},{"dabimur"},{"dabiminī"},{"dabuntur"}}, subj_imp = {{"darem"},{"darēs"},{"daret"},{"darēmus"},{"darētis"},{"darent"}}, subj_imp_pas = {{"darer"},{"darēris","darēre"},{"darētur"},{"darēmur"},{"darēminī"},{"darentur"}}, imper_pres = {nil,nil,nil,nil,{"date"},nil}, imper_fut = {nil,{"datō"},{"datō"},nil,{"datōte"},{"dantō"}}, imper_pres_pas = {nil,{"dare"},nil,nil,{"daminī"},nil}, imper_fut_pas = {nil,{"dator"},{"dator"},nil,nil,{"dator"}}, }}, {"dūcō", {"dūcō"}, { conj = "3", nucleopres = {"dūc"}, nucleoperf = {"dūx"}, nucleosup = {"duct"}, nucleosigm = {}, desactivar = {}, imper_pres = {nil, {"dūc", "dūce"}}, }}, {"edō", {"edō", "ëdō"}, { conj = "3", nucleopres = {"ed"}, nucleoperf = {"ed"}, nucleosup = {""}, nucleosigm = {}, desactivar = {}, inf_act = {"edere","ēsse"}, part_act = {"edēns","ēsūrus","ēssūrus","ēstūrus"}, part_pas = {"edendus","edundus","ēsus","ēssus","ēstus"}, sup = {"ēsum","ēssum","ēstum","ēsū","ēssū","ēstū"}, ind_pres = {nil,{"edis","ēs"},{"edit","ēst"},nil,{"editis","ēstis"},nil}, ind_pres_pas = {nil,{"ederis","edere","ēssis","ēsse"},{"editur","ēstur"}}, subj_pres = {{"edam","edim"},{"edās","edīs"},{"edat","edit","ēst"},{"edāmus","edīmus"},{"edātis","edītis"},{"edant","edint"}}, subj_imp = {{"ederem","ēssem"},{"ederēs","ēssēs"},{"ederet","ēsset"},{"ederēmus","ēssēmus"},{"ederētis","ēssētis"},{"ederent","ēssent"}}, subj_imp_pas = {{"ederer","ēsser"},{"ederēris","ederēre","ēssēris","ēssēre"},{"ederetur","ēssetur"},{"ederēmur","ēssēmur"},{"ederēminī","ēssēminī"},{"ederentur","ēssentur"}}, imper_pres = {nil,{"ede","ēs"},nil,nil,{"edite","ēste"},nil}, imper_fut = {nil,{"editō","ēstō"},{"editō","ēstō"},nil,{"editōte","ēstōte"},{"eduntō"}}, imper_pres_pas = {nil,{"edere","ēsse"},nil,nil,{"ediminī"},nil}, imper_fut_pas = {nil,{"editor","ēstor"},{"editor","ēstor"},nil,nil,{"eduntor"}}, }}, {"eō", {"eō", "ëō"}, { conj = "4", nucleopres = {""}, nucleoperf = {""}, nucleosup = {""}, nucleosigm = {}, desactivar = {"imper_pres_pas"}, inf_act = {"īre","īsse","iisse","īvisse"}, inf_pas = {"īrī","īrier"}, part_act = {"iēns","itūrus"}, part_pas = {"eundum","itum"}, ger = {"eundī","eundō","eundum"}, sup = {"itum","itū"}, ind_pres = {{"eō"},{"īs"},{"it"},{"īmus"},{"ītis"},{"eunt"}}, ind_imp = {{"ībam"},{"ībās"},{"ībat"},{"ībāmus"},{"ībātis"},{"ībant"}}, ind_perf = {{"iī","īvī"},{"īstī","iistī","īvistī"},{"iit","īvit"},{"iimus","īvimus"},{"īstis","iistis","īvistis"},{"iērunt","iēre","īvērunt","īvēre"}}, ind_pluperf = {{"ieram","īveram"},{"ierās","īverās"},{"ierat","īverat"},{"ierāmus","īverāmus"},{"ierātis","īverātis"},{"ierant","īverant"}}, ind_fut = {{"ībō"},{"ībis"},{"ībit"},{"ībimus"},{"ībitis"},{"ībunt"}}, ind_fut_perf = {{"ierō","īverō"},{"ieris","īveris"},{"ierit","īverit"},{"ierimus","īverimus"},{"ieritis","īveritis"},{"ierint","īverint"}}, ind_fut_sig = {nil,nil,nil,nil,nil,nil}, ind_pres_pas = {{},{},{"ītur"},{},{},{}}, ind_imp_pas = {{},{},{"ībātur"},{},{},{}}, ind_fut_pas = {{},{},{"ībitur"},{},{},{}}, subj_pres = {{"eam"},{"eās"},{"eat"},{"eāmus"},{"eātis"},{"eant"}}, subj_imp = {{"īrem"},{"īrēs"},{"īret"},{"īrēmus"},{"īrētis"},{"īrent"}}, subj_perf = {{"ierim","īverim"},{"ierīs","īverīs"},{"ierit","īverit"},{"ierīmus","īverīmus"},{"ierītis","īverītis"},{"ierint","īverint"}}, subj_pluperf = {{"īssem","iissem","īvissem"},{"īssēs","iissēs","īvissēs"},{"īsset","iisset","īvisset"},{"īssēmus","iissēmus","īvissēmus"},{"īssētis","iissētis","īvissētis"},{"īssent","iissent","īvissent"}}, subj_aor_sig = {nil,nil,nil,nil,nil,nil}, subj_pres_pas = {{},{},{"eātur"},{},{},{}}, subj_imp_pas = {{},{},{"īrētur"},{},{},{}}, imper_pres = {nil,nil,nil,nil,nil,nil}, imper_fut = {nil,nil,nil,nil,nil,{"euntō"}}, imper_fut_pas = {nil,{},nil,nil,nil,{}}, }}, {"faciō", {"faciō"}, { conj = "3", nucleopres = {"faci"}, nucleoperf = {"fax"}, nucleosup = {"fact"}, nucleosigm = {"fax","faxs","facs"}, desactivar = {}, ind_pres_pas = {{"fīō"},{"fīs"},{"fit"},{"fīmus"},{"fītis"},{"fīunt"}}, ind_imp_pas = {{"fīēbam"},{"fīēbās"},{"fīēbat"},{"fīēbāmus"},{"fīēbātis"},{"fīēbant"}}, ind_fut_pas = {{"fīam"},{"fīēs"},{"fīet"},{"fīēmus"},{"fīētis"},{"fīent"}}, subj_pres_pas = {{"fīam"},{"fīās"},{"fīat"},{"fīāmus"},{"fīātis"},{"fīant"}}, subj_imp_pas = {{"fierem"},{"fierēs"},{"fieret"},{"fierēmus"},{"fierētis"},{"fierent"}}, imper_pres = {nil,{"fac","face"},nil,nil,nil,nil}, imper_pres_pas = {nil,{"fī"},nil,nil,{"fīte"},nil}, imper_fut_pas = {nil,{"fītō"},{"fītō"},nil,{"fītōte"},{"fīuntō"}}, }}, {"ferō", {"ferō"}, { conj = "3", nucleopres = {"fer"}, nucleoperf = {"tul"}, nucleosup = {"lāt"}, nucleosigm = {}, desactivar = {}, inf_pas = {"ferrī"}, ind_pres = {nil,{"fers"},{"fert"},nil,{"fertis"}}, ind_pres_pas = {nil,{"ferris","ferre"}}, subj_imp = {{"ferrem"},{"ferrēs"},{"ferret"},{"ferrēmus"},{"ferrētis"},{"ferrent"}}, subj_imp_pas = {{"ferrer"},{"ferrēris","ferrēre"},{"ferrētur"},{"ferrēmur"},{"ferrēminī"},{"ferrentur"}}, imper_pres = {nil,{"fer"},nil,nil,{"ferte"},nil}, imper_pres_pas = {nil,{"ferre"},nil,nil,nil,nil}, imper_fut = {nil,{"fertō"},{"fertō"},nil,{"fertōte"},{"feruntō"}}, imper_fut_pas = {nil,{"fertor"},{"fertor"},nil,nil,nil}, }}, {"fīō", {"fīō"}, { conj = "3", nucleopres = {"fī"}, nucleoperf = {}, nucleosup = {"fact"}, nucleosigm = {}, semidep = true, desactivar = {}, ind_pres = {{"fīō"},{"fīs"},{"fit"},{"fīmus"},{"fītis"},{"fīunt"}}, imper_pres = {nil,{"fī"},nil,nil,{"fīte"},nil}, imper_fut = {nil,{"fītō"},{"fītō"},nil,{"fītōte"},{"feruntō"}}, }}, {"inquam", {"inquam"}, { conj = "3", nucleopres = {"inqui"}, nucleoperf = {}, nucleosup = {}, nucleosigm = {}, nopasivo = true, desactivar = {"inf_act","inf_pas","part_pas","ger"}, ind_pres = {{"inquam"}}, }}, {"possum", {"possum"}, { conj = "3", nucleopres = {"pot"}, nucleoperf = {"pot"}, nucleosup = {}, nucleosigm = {}, pres = "possō", desactivar = {"inf_pas","part_pas","ger","sup","ind_pres_pas","ind_imp_pas","ind_fut_pas", "subj_pres_pas","subj_imp_pas","imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"posse","potesse{†}"}, part_act = {"potēns"}, ind_pres = {{"possum"},{"potes"},{"potest"},{"possumus"},{"potestis"},{"possunt"}}, ind_imp = {{"poteram"},{"poterās"},{"poterat"},{"poterāmus"},{"poterātis"},{"poterant"}}, ind_fut = {{"poterō"},{"poteris","potere"},{"poterit"},{"poterimus"},{"poteritis"},{"poterunt"}}, ind_perf = {{"potuī"},{"potuistī"},{"potuit"},{"potuimus"},{"potuistis"},{"potuērunt","potuēre"}}, ind_pluperf = {{"potueram"},{"potuerās"},{"potuerat"},{"potuerāmus"},{"potuerātis"},{"potuerant"}}, ind_fut_perf = {{"potuerō"},{"potueris"},{"potuerit"},{"potuerimus"},{"potueritis"},{"potuerunt"}}, subj_pres = {{"possem"},{"possēs"},{"possēt"},{"possēmus"},{"possētis"},{"possent"}}, subj_imp = {{"possim"},{"possīs"},{"possit"},{"possīmus"},{"possītis"},{"possint"}}, subj_perf = {{"potuerim"},{"potuerīs"},{"potuerit"},{"potuerīmus"},{"potuerītis"},{"potuerint"}}, subj_pluperf = {{"potuissem"},{"potuissēs"},{"potuisset"},{"potuissēmus"},{"potuissētis"},{"potuissent"}}, }}, {"sum", {"sum"}, { conj = "3", nucleopres = {"s"}, nucleoperf = {"fu"}, nucleosup = {}, nucleosigm = {}, pres = "sō", desactivar = {"inf_pas","part_pas","ger","sup","ind_pres_pas","ind_imp_pas","ind_fut_pas", "subj_pres_pas","subj_imp_pas","imper_pres_pas","imper_fut_pas"}, inf_act = {"esse"}, part_act = {"futūrus"}, ind_pres = {{"sum"},{"es"},{"est"},{"sumus"},{"estis"},{"sunt"}}, ind_imp = {{"eram"},{"erās"},{"erat"},{"erāmus"},{"erātis"},{"erant"}}, ind_fut = {{"erō"},{"eris","ere"},{"erit"},{"erimus"},{"eritis"},{"erunt"}}, subj_pres = {{"sim","siem","fuam{†}"},{"sīs","siēs","fuās{†}"},{"sit","siet","fuat{†}"},{"sīmus","siēmus","fuāmus{†}"},{"sītis","siētis","fuātis{†}"},{"sint","sient","fuant{†}"}}, subj_imp = {{"essem","forem"},{"essēs","forēs"},{"esset","foret"},{"essēmus","forēmus"},{"essētis","forētis"},{"essent","forent"}}, imper_pres = {nil,{"es"},nil,nil,{"este"},nil}, imper_fut = {nil,{"estō"},{"estō"},nil,{"estōte"},nil}, }}, {"mālō", {"mālō"}, { conj = "3", nucleopres = {"māl"}, nucleoperf = {"mālu"}, nucleosup = {}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"mālle","māluisse"}, ind_pres = {{"mālō"},{"māvīs"},{"māvult"},{"mālumus"},{"māvultis"},{"mālunt"}}, subj_pres = {{"mālim"},{"mālīs"},{"mālit"},{"mālīmus"},{"mālītis"},{"mālint"}}, subj_imp = {{"māllem"},{"māllēs"},{"māllet"},{"māllēmus"},{"māllētis"},{"māllent"}}, }}, {"nōlō", {"nōlō"}, { conj = "3", nucleopres = {"nōl"}, nucleoperf = {"nōlu"}, nucleosup = {}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"nōlle","nōluisse"}, ind_pres = {{"nōlō"},{"nōn vīs","nevīs{†}"},{"nōn vult","nōn volt","nevolt{†}"},{"nōlumus"},{"nōn vultis","nōn voltis","nōltis{†}"},{"nōlunt"}}, subj_pres = {{"nōlim"},{"nōlīs"},{"nōlit"},{"nōlīmus"},{"nōlītis"},{"nōlint"}}, subj_imp = {{"nōllem"},{"nōllēs"},{"nōllet"},{"nōllēmus"},{"nōllētis"},{"nōllent"}}, }}, {"volō", {"volō"}, { conj = "3", nucleopres = {"vol"}, nucleoperf = {"volu"}, nucleosup = {"volit"}, nucleosigm = {}, desactivar = {"sup","ger","inf_pas","part_pas","ind_pres_pas","ind_imp_pas","ind_fut_pas","subj_pres_pas","subj_imp_pas", "imper_pres","imper_fut","imper_pres_pas","imper_fut_pas"}, inf_act = {"velle","voluisse"}, ind_pres = {{"volō"},{"vīs"},{"vult","volt{†}"},{"volumus"},{"vultis","voltis{†}"},{"volunt"}}, subj_pres = {{"velim","volim{†}"},{"velīs","volīs{†}"},{"velit","volit{†}"},{"velīmus","volīmus{†}"},{"velītis","volītis{†}"},{"velint","volint{†}"}}, subj_imp = {{"vellem"},{"vellēs"},{"vellet"},{"vellēmus"},{"vellētis"},{"vellent"}}, }}, } local function combinar_prefijo_nucleosufijo(prefijo, nucleosufijo) return prefijo..nucleosufijo end local function combinar_nucleo_sufijo(nucleo, sufijo, agregar_i) if agregar_i and (not find(sufijo, "^[iī]")) and (sufijo ~= "e") and (not find(sufijo, "^er")) then return nucleo.."~i~"..sufijo end return nucleo..sufijo end local function agregar_forma(conjugado, conjinfo, forma) conjinfo[forma] = conjinfo[forma] or {} local sufijos_ = sufijos[conjinfo.conj][forma] local nucleos local prefijo if forma == "sup" then nucleos = conjinfo.nucleosup prefijo = conjinfo.prefijosup or conjinfo.prefijo elseif find(forma, "sig") then nucleos = conjinfo.nucleosigm prefijo = conjinfo.prefijosigm or conjinfo.prefijo elseif find(forma, "perf") then nucleos = conjinfo.nucleoperf prefijo = conjinfo.prefijoperf or conjinfo.prefijo else nucleos = conjinfo.nucleopres prefijo = conjinfo.prefijo end if formas_no_personales[forma] then if conjinfo[forma][1] then if nucleos and #nucleos > 0 then for _, fm in ipairs(conjinfo[forma]) do insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleosufijo(prefijo, fm).."#") end end else for _, sufijo in ipairs(sufijos_) do local nucleos_ = nucleos if forma == "inf_act" and sufijo == "isse" then nucleos_ = conjinfo.nucleoperf elseif forma == "part_act" and sufijo == "ūrus" then nucleos_ = conjinfo.nucleosup elseif forma == "part_pas" and sufijo == "us" then nucleos_ = conjinfo.nucleosup end local agregar_i = conjinfo.I and nucleos_ == conjinfo.nucleopres for _,nucleo in ipairs(nucleos_) do insert_if_not(conjugado[forma], combinar_prefijo_nucleosufijo(prefijo, combinar_nucleo_sufijo(nucleo, sufijo, agregar_i))) end end end return end for i = EGO, EI do local p = tostr[i] if conjinfo[forma][i] then if nucleos and #nucleos > 0 then for _, fm in ipairs(conjinfo[forma][i]) do insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleosufijo(prefijo, fm).."#") end end else local k = i while sufijos_[k] do local agregar_i = conjinfo.I and nucleos == conjinfo.nucleopres for j, n in ipairs(nucleos) do local x = combinar_prefijo_nucleosufijo(prefijo, combinar_nucleo_sufijo(n, sufijos_[k], agregar_i)) if conjinfo.always_sync_perf and (forma == "ind_perf" or forma == "ind_pluperf" or forma == "ind_fut_perf" or forma == "subj_perf" or forma == "subj_pluperf") then x = x:gsub("īvī", "iī") x = x:gsub("īvi", "ī") x = x:gsub("īve", "ī") x = x:gsub("īvē", "ē") end insert_if_not(conjugado[forma..p], x) end k = k + 6 end end end end local function get_subtype_by_ending(pres, conjinfo, specs) for _, spec in ipairs(specs) do local base = extract_base(pres, spec[1]) if base then for _,s in ipairs(spec[2]) do if conjinfo[s] == nil then conjinfo[s] = true end end return base end end error("Unrecognized ending for conjugation " .. conjinfo["conj"]) end local function detect_v_type_and_subtypes(conjinfo) local pres = conjinfo["v"] local conj_arg = conjinfo["conj"] pres = toNFC(pres) local base_conj_arg, auto_perf_supine = conj_arg:match("^([124]/?4?)(%+%+?)$") if base_conj_arg then if auto_perf_supine == "++" and base_conj_arg ~= "4" then error("Conjugation types 1++ and 2++ not allowed") end conj_arg = base_conj_arg end conjinfo.conj = conj_arg if conj_arg == "1" then local base = get_subtype_by_ending(pres, conjinfo, { {"ō", {}}, {"or", {"dep"}}, {"at", {"impers"}}, {"ātur", {"dep", "impers"}}, {"ī", {"nopres"}}, {"it", {"nopres", "impers"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if auto_perf_supine then if not conjinfo["nucleoperf"][1] then conjinfo["nucleoperf"][1] = base .. "āv" end if not conjinfo["nucleosup"][1] then conjinfo["nucleosup"][1] = base .. "āt" end end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "āss" end end elseif conj_arg == "2" then local base = get_subtype_by_ending(pres, conjinfo, { {"eō", {}}, {"eor", {"dep"}}, {"et", {"impers"}}, {"ētur", {"dep", "impers"}}, {"ī", {"nopres"}}, {"it", {"nopres", "impers"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if auto_perf_supine then if not conjinfo["nucleoperf"][1] then conjinfo["nucleoperf"][1] = base .. "u" end if not conjinfo["nucleosup"][1] then conjinfo["nucleosup"][1] = base .. "it" end end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "ēss" end end elseif conj_arg == "3" then local base if conjinfo.I == false then -- si explícitamente se indicó que no es del tipo -io, hay que excluir sufijos base = get_subtype_by_ending(pres, conjinfo, { {"ō", {}}, {"or", {"dep"}}, {"it", {"impers"}}, {"itur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) else base = get_subtype_by_ending(pres, conjinfo, { {"iō", {"I"}}, {"ior", {"dep", "I"}}, {"ō", {}}, {"or", {"dep"}}, {"it", {"impers"}}, {"itur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) end if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end assert(conjinfo["nucleoperf"][1], "especifique todos los núcleos para verbos de la tercera conjugación") assert(conjinfo["nucleosup"][1], "especifique todos los núcleos para verbos de la tercera conjugación") if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "ēss" end end elseif conj_arg == "3/4" then local base base = get_subtype_by_ending(pres, conjinfo, { {"iō", {"I"}}, {"ior", {"dep", "I"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "++" then conjinfo["nucleoperf"][1] = base .. "īv" conjinfo["nucleoperf"][2] = base .. "i" end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "+" then conjinfo["nucleoperf"][1] = base .. "īv" end if not conjinfo["nucleosup"][1] and auto_perf_supine then conjinfo["nucleosup"][1] = base .. "īt" end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "īss" end end elseif conj_arg == "4" then local base = get_subtype_by_ending(pres, conjinfo, { {"iō", {}}, {"ior", {"dep"}}, {"it", {"impers"}}, {"ītur", {"dep", "impers"}}, {"ī", {"nopres"}}, }) if not conjinfo["nucleopres"][1] then conjinfo["nucleopres"][1] = base end if not conjinfo["nucleoperf"][1] and conjinfo["nopres"] then conjinfo["nucleoperf"][1] = base end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "++" then conjinfo["nucleoperf"][1] = base .. "īv" conjinfo["nucleoperf"][2] = base .. "i" end if not conjinfo["nucleoperf"][1] and auto_perf_supine == "+" then conjinfo["nucleoperf"][1] = base .. "īv" end if not conjinfo["nucleosup"][1] and auto_perf_supine then conjinfo["nucleosup"][1] = base .. "īt" end if conjinfo.sigm then if not conjinfo["nucleosigm"][1] then conjinfo["nucleosigm"][1] = base .. "īss" end end elseif conj_arg == "irreg" then for _,p in ipairs(verbos_irregulares) do for _,rx in ipairs(p[2]) do local pref, verb = match(conjinfo.v, "^(.*)("..rx..")$") if verb then conjinfo.v = verb conjinfo.prefijo = pref if conjinfo.nucleoperf[1] and conjinfo.nucleoperf[1] ~= "-" then -- [[ecfero]] conjinfo.prefijoperf = conjinfo.nucleoperf[1] conjinfo.nucleoperf = {} end if conjinfo.nucleosup[1] and conjinfo.nucleosup[1] ~= "-" then conjinfo.prefijosup = conjinfo.nucleosup[1] conjinfo.nucleosup = {} end if conjinfo.nucleosigm[1] and conjinfo.nucleosigm[1] ~= "-" then conjinfo.prefijosigm = conjinfo.nucleosigm[1] conjinfo.nucleosigm = {} end conjinfo.irreg = true conjinfo.conj = p[3].conj for k,val in pairs(p[3]) do if not conjinfo[k] or (type(conjinfo[k]) == "table" and not conjinfo[k][1]) then conjinfo[k] = deep_copy(val) end end return conjinfo end end end error("Unrecognized conjugation '" .. conj_arg .. "'") else error("Unrecognized conjugation '" .. conj_arg .. "'") end return conjinfo end function export.v(frame) local title_ = mw.title.getCurrentTitle() local tit = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { [1] = {alias_de = "conj"}, [2] = {alias_de = "pres"}, [3] = {alias_de = "nucleoperf"}, [4] = {alias_de = "nucleosup"}, [5] = {alias_de = "nucleosigm"}, ["impers"] = {}, -- pas para formas pasivas solamente ["impersonal"] = {alias_de = "impers"}, ["dep"] = {tipo="bool"}, ["depon"] = {alias_de="dep"}, ["deponente"] = {alias_de="dep"}, ["semidep"] = {tipo="bool"}, ["semidepon"] = {alias_de="semidep"}, ["semideponente"] = {alias_de="semidep"}, ["sigm"] = {tipo="bool"}, ["nopasivo"] = {tipo="bool"}, ["soloperf"] = {tipo="bool"}, ["I"] = {tipo="bool"}, ["p3inf"] = {tipo="bool"}, -- sin uso ["poet_sync_perf"] = {tipo="bool"}, -- sin uso ["always_sync_perf"] = {tipo="bool"}, -- solo en [[saevio]] ["conj"] = {requerido=true}, ["pres"] = {requerido=true}, ["nucleopres"] = {lista = true}, ["nucleoperf"] = {lista = true}, ["nucleosup"] = {lista = true}, ["nucleosigm"] = {lista = true}, ["núcleopres"] = {alias_de="nucleopres"}, ["núcleoperf"] = {alias_de="nucleoperf"}, ["núcleosup"] = {alias_de="nucleosup"}, ["paradigma"] = {lista = true}, ["desactivarnucleos"] = {tipo="bool", por_defecto=true}, -- para [[-o]] ["nota"] = {}, } local conjugado = {} for forma,_ in pairs(formas_no_personales) do params[forma] = {tipo=parsear_arreglo, por_defecto={}} conjugado[forma] = {} end for forma,_ in pairs(formas_personales) do for i,s in ipairs(tostr) do params[forma..s] = {tipo=parsear_arreglo, por_defecto={}} conjugado[forma..s] = {} if i == 1 then params[forma] = {alias_de=forma..s} end end end local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) assert(not find(tit, " "), "locuciones no soportadas aún") assert(not (args["dep"] and args["semidep"]), "un verbo no puede ser deponente y semideponente a la vez") local conjinfo = { conj = args.conj, prefijo="", v=args.pres, desactivar = {}, dep=args.dep, semidep=args.semidep, sigm=args.sigm, impers=args.impers, nopasivo=args.nopasivo, soloperf=args.soloperf, I=args.I, p3inf=args.p3inf, poet_sync_perf=args.poet_sync_perf, -- sin uso always_sync_perf=args.always_sync_perf, nucleopres = deep_copy(args.nucleopres), nucleoperf = deep_copy(args.nucleoperf), nucleosup = deep_copy(args.nucleosup), nucleosigm = deep_copy(args.nucleosigm) } conjinfo = detect_v_type_and_subtypes(conjinfo) conjinfo.conj = conjinfo.conj if conjinfo.impers == true then conjinfo.impers = "3" end -- no puede ir conjinfo acá abajo porque si es un sufijo va a quedar "-" en la raíz, lo que anularía todas las formas conjugadas, tiene que venir directo de args if args.desactivarnucleos then if args.nucleopres[1] == "-" then conjinfo.nucleopres = {} end if args.nucleoperf[1] == "-" then conjinfo.nucleoperf = {} end if args.nucleosup[1] == "-" then conjinfo.nucleosup = {} end if args.nucleosigm[1] == "-" then conjinfo.nucleosigm = {} end end local es_irregular = conjinfo.irreg for _,d in ipairs(conjinfo.desactivar) do if formas_no_personales[d] then args[d] = {"no"} else args[d.."2"] = {"no"} end end for forma,_ in pairs(formas) do agregar_forma(conjugado, conjinfo, forma) end local resultante = sobreescribir_formas(conjugado, args) local mostrar_fut_sig = #resultante["ind_fut_sig1"] > 0 local mostrar_aor_sig = #resultante["subj_aor_sig1"] > 0 local defectivo = comprobar_defectivo(resultante, {"^imper", "_sig"}, tostr) local defect2 resultante, defect2 = desactivar_formas(resultante, function (form) return (conjinfo.nopasivo and form:find("_pas")) or (conjinfo.soloperf and not form:find("perf")) or (conjinfo.impers == "pas" and form:find("_pas[^3]")) or (conjinfo.impers == "pas3" and form:find("_pas[^3]")) or (conjinfo.impers == "pas36" and form:find("_pas[^36]")) end ) if defect2 then defectivo = true end -- por ahora innecesario -- local part_no_adj = {} -- for _,e in ipairs(resultante.part) do -- if (find(e, 'PART') or not find(e, 'ADJ')) and not find(e, "†") then -- insert(part_no_adj, gsub1(e, '%b{}', '')) -- end -- end local tit_pres = f(resultante["ind_pres1"][1] or "―") local tit_inf = f(resultante["inf_act"][1] or "―") local tit_perf = f(resultante["ind_perf1"][1] or "―") local tit_sup = f(resultante["sup"][1] or "―") resultante = agregar_enlaces(resultante, tit, normalizar_enlace) local es_impersonal = conjinfo.impers resultante = formatear_formas(resultante, function (x) return obtener_pronombre(x, es_impersonal) end) local impers = conjinfo.impers local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_imper, mostrar_imper if impers == "3" then fila_pronombres_ind = {"", "(id)", color=COLOR_IND, header=true, class="pc"} fila_pronombres_subj = {"", "(quod id)", color=COLOR_SUBJ, header=true, class="pc"} fila_pronombres_imper = {"", "(id)", color=COLOR_IMPER, header=true, class="pc"} cs = 2 elseif impers == "36" then error("no soportado actualmente") cs = 3 else fila_pronombres_ind = {"", PRONOMBRES[1], PRONOMBRES[2], PRONOMBRES[3], PRONOMBRES[4], PRONOMBRES[5], PRONOMBRES[6], color=COLOR_IND, header=true, class="pc"} fila_pronombres_subj = {"", PRONOMBRES_SUBJ[1], PRONOMBRES_SUBJ[2], PRONOMBRES_SUBJ[3], PRONOMBRES_SUBJ[4], PRONOMBRES_SUBJ[5], PRONOMBRES_SUBJ[6], color=COLOR_SUBJ, header=true, class="pc"} fila_pronombres_imper = {"", PRONOMBRES_IMP[1], PRONOMBRES_IMP[2], PRONOMBRES_IMP[3], PRONOMBRES_IMP[4], PRONOMBRES_IMP[5], PRONOMBRES_IMP[6], color=COLOR_IMPER, header=true, class="pc"} cs = 7 mostrar_imper = true end cs1 = cs -- math.floor(cs / 2) -- cs2 = cs - cs1 local t = {} insert(t, {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}) if impers == "3" then insert(t, {{"Infinitivo activo", header=true, color=COLOR_NP}, resultante.inf_act}) insert(t, {{"Infinitivo pasivo", header=true, color=COLOR_NP}, resultante.inf_pas}) insert(t, {{"Participio activo", header=true, color=COLOR_NP}, resultante.part_act}) insert(t, {{"Participio pasivo", header=true, color=COLOR_NP}, resultante.part_pas}) insert(t, {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}) insert(t, {{"Supino", header=true, color=COLOR_NP}, resultante.sup}) else resultante.inf_act.colspan = cs1-1 resultante.inf_pas.colspan = cs1-1 resultante.part_act.colspan = cs1-1 resultante.part_pas.colspan = cs1-1 resultante.ger.colspan = cs1-1 resultante.sup.colspan = cs1-1 if not conjinfo.dep then insert(t, {{"Infinitivo activo", header=true, color=COLOR_NP}, resultante.inf_act}) end if not conjinfo.semidep then insert(t, {{"Infinitivo pasivo", header=true, color=COLOR_NP}, resultante.inf_pas}) end if not conjinfo.dep then insert(t, {{"Participio activo", header=true, color=COLOR_NP}, resultante.part_act}) end if not conjinfo.semidep then insert(t, {{"Participio pasivo", header=true, color=COLOR_NP}, resultante.part_pas}) end insert(t, {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}) insert(t, {{"Supino", header=true, color=COLOR_NP}, resultante.sup}) end local function ic(tiempo) if impers == "3" then return resultante[tiempo.."3"] elseif impers == "36" then return resultante[tiempo.."3"], resultante[tiempo.."6"] end return resultante[tiempo.."1"], resultante[tiempo.."2"], resultante[tiempo.."3"], resultante[tiempo.."4"], resultante[tiempo.."5"], resultante[tiempo.."6"] end insert(t, {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}) insert(t, {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}) insert(t, fila_pronombres_ind) if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}) insert(t, {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}) insert(t, {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}) end if not conjinfo.dep and not conjinfo.semidep then insert(t, {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}) insert(t, {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}) insert(t, {{"Futuro perfecto", color=COLOR_IND, header=true}, ic("ind_fut_perf")}) end if mostrar_fut_sig then insert(t, {{f("Futuro sigmático{†}"), color=COLOR_IND, header=true}, ic("ind_fut_sig")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_IND, header=true}, ic("ind_pres_pas")}) insert(t, {{"Pretérito imperfecto pasivo", color=COLOR_IND, header=true}, ic("ind_imp_pas")}) insert(t, {{"Futuro pasivo", color=COLOR_IND, header=true}, ic("ind_fut_pas")}) end insert(t, {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}) insert(t, fila_pronombres_subj) if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}) insert(t, {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}) end if not conjinfo.dep and not conjinfo.semidep then insert(t, {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}) insert(t, {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}) end if mostrar_aor_sig then insert(t, {{f("Aorista sigmático{†}"), color=COLOR_SUBJ, header=true}, ic("subj_aor_sig")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_SUBJ, header=true}, ic("subj_pres_pas")}) insert(t, {{"Pretérito imperfecto pasivo", color=COLOR_SUBJ, header=true}, ic("subj_imp_pas")}) end insert(t, {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}) insert(t, fila_pronombres_imper) if mostrar_imper then if not conjinfo.dep then insert(t, {{"Presente", color=COLOR_IMPER, header=true}, ic("imper_pres")}) insert(t, {{"Futuro", color=COLOR_IMPER, header=true}, ic("imper_fut")}) end if not conjinfo.semidep then insert(t, {{"Presente pasivo", color=COLOR_IMPER, header=true}, ic("imper_pres_pas")}) insert(t, {{"Futuro pasivo", color=COLOR_IMPER, header=true}, ic("imper_fut_pas")}) end else insert(t, {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}) end insert(t, {{f("Leyenda: † arcaico, x no normativo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}) args["nota"] = args["nota"] or "" if conjinfo.impers == "utc3" then args["nota"] = args["nota"].." NOTA: se usa también como impersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular." end if conjinfo.impers == "umc3" then args["nota"] = args["nota"].." NOTA: se usa más como impersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular." end if conjinfo.impers == "utc36" then args["nota"] = args["nota"].." NOTA: se usa también como terciopersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular y plural." end if conjinfo.impers == "umc36" then args["nota"] = args["nota"].." NOTA: se usa más como terciopersonal, en cuyo caso solo son válidas las conjugaciones de la tercera persona singular y plural." end if conjinfo.impers == "pas" or conjinfo.imeprs == "pas3" then args["nota"] = args["nota"].." NOTA: impersonal para las formas pasivas" end if conjinfo.impers == "pas36" then args["nota"] = args["nota"].." NOTA: formas pasivas terciopersonales (solamente tercera persona singular y plural)" end if conjinfo.soloperf then args["nota"] = args["nota"].. " NOTA: solo se emplean las formas del perfecto y pluscuamperfecto con valor de presente, imperfecto o futuro" end if conjinfo.nopasivo then args["nota"] = args["nota"].. " NOTA: solo se emplean las formas activas" end insert(t, {{args["nota"] and args["nota"] or "", colspan=cs}}) local cats = {} local subtits = {} local conj_str if conjinfo.conj == "1" then conj_str = "primera conjugación" elseif conjinfo.conj == "2" then conj_str = "segunda conjugación" elseif conjinfo.conj == "3" then conj_str = "tercera conjugación" elseif conjinfo.conj == "3/4" then conj_str = "tercera/cuarta conjugación" else conj_str = "cuarta conjugación" end insert(cats, "LA:Verbos de la "..conj_str) insert(subtits, conj_str) impers = impers or "" if impers == "3" or find(impers, "^u[tm]c3$") then insert(subtits, "impersonal") insert(cats, "LA:Verbos impersonales") end if defectivo then insert(subtits, "defectivo") insert(cats, "LA:Verbos defectivos") end if conjinfo.dep then insert(subtits, "deponente") insert(cats, "LA:Verbos deponentes") end if conjinfo.semidep then insert(subtits, "semideponente") insert(cats, "LA:Verbos semideponentes") end if es_irregular then insert(subtits, "irregular") insert(cats, "LA:Verbos irregulares") else insert(subtits, "regular") insert(cats, "LA:Verbos regulares") end return renderizar_tabla( frame, "'''Conjugación de ''"..tit_pres..", "..tit_inf..", "..tit_perf..", "..tit_sup.."'''''&emsp;&emsp;("..concat(subtits, ", ")..")", t, ns == 0 and cats or {}) end function export.adv(frame) local title_ = mw.title.getCurrentTitle() local title = title_.fullText local ns = title_.namespace if ns ~= 0 then return "Use esta plantilla en el espacio principal." end local params = { ["n"] = {}, ["nota"] = {alias_de = "n"}, ["comp"] = {lista = true}, ["comparativo"] = {alias_de = "comp"}, ["compnota"] = {lista = true}, ["sup"] = {lista = true}, ["superlativo"] = {alias_de = "sup"}, ["supnota"] = {lista = true}, } local parent_frame = frame:getParent() local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params) local head = args[1] local modo = args[2] local enc local cats = {} local cat_pref = "LA:Adverbios" if modo == "-" then enc = "sin comparativo ni superlativo" insert(cats, cat_pref.." incomparables") return renderizar_encabezado( frame, head, enc, args["n"], {}, ns == 0 and cats or {}, normalizar_enlace ) end local flex = {comp={},sup={}} local stem for _, suff in ipairs{"iter", "nter", "ter", "er", "iē", "ē", "rā", "im", "ō"} do stem = match(head, "^(.*)" .. suff .. "$") if stem ~= nil then local comp_suff, sup_suff = "ius", "issimē" if suff == "nter" then stem = stem .. "nt" end if suff == "rā" then comp_suff = "er" .. comp_suff sup_suff = "imē" end insert(flex.comp, stem .. comp_suff) insert(flex.sup, stem .. sup_suff) break end end if not stem and not args.comp[1] and not args.sup[1] then error("Unrecognized adverb type, recognized types are “-ē”, “-er”, “-ter”, “-iter”, “-im”, or “-ō”, “-ra” or specify irregular forms or “-” if incomparable.") end local formas, irr = sobreescribir_formas(flex, args) if args["comp"][1] == "no" then enc = "sin comparativo" insert(cats, cat_pref.." sin comparativo") return renderizar_encabezado( frame, head, enc, args["n"], {{"superlativo", formas.sup, args["supnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) elseif args["sup"][1] == "no" then enc = "sin superlativo" insert(cats, cat_pref.." sin superlativo") return renderizar_encabezado( frame, head, enc, args["n"], {{"comparativo", formas.comp, args["compnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) end if irr then enc = f("#irregular#") insert(cats, cat_pref.." irregulares") end return renderizar_encabezado( frame, head, enc, args["n"], {{"comparativo", formas.comp, args["compnota"]}, {"superlativo", formas.sup, args["supnota"]}}, ns == 0 and cats or {}, normalizar_enlace ) end return export iwur5l5aqmrcsadn4ge4lmtkm5n7n1f licorería 0 1062959 6110102 6109863 2026-04-27T17:32:43Z ~2026-16686-32 181366 /* {{sustantivo femenino|es}} */ imagen 6110102 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|licor|ería}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} [[File:Liquor store in Chernobyl.jpg|thumb|una licorería]] ;1: {{ucf|comercio}} en donde se venden [[licor]]es. ;2: Por extensión, tienda en donde se venden bebidas [[alcohólico|alcohólicas]] en general. {{sinónimo|fresquería|botillería|vinoteca}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 0kohr2aol8h910mw55rb772aoiceio7 tuneladora 0 1063041 6110107 6109674 2026-04-27T17:52:46Z ~2026-16686-32 181366 /* {{sustantivo femenino|es}} */ imagen 6110107 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|tunelar|dora}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} [[File:Tunnel Boring Machine (Yucca Mt).jpg|thumb|una tuneladora]] ;1 {{csem|máquinas}}: {{ucf|máquina}} para [[excavar]] [[túnel]]es. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 5c7k99z4m0y11xmzxa1xielqlhq3p19 interfono 0 1063187 6110100 6110018 2026-04-27T17:04:10Z ~2026-16686-32 181366 /* {{sustantivo masculino|es}} */ iamgen 6110100 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|fr|interphone}}, de {{l+|fr|intérieur}} y {{l+|fr|téléphone}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} [[File:Videocitofono Bticino 3.jpg|thumb|[1]]] ;1 {{csem|telecomunicaciones}}: Sistema [[telefónico]] que permite [[comunicar]]se entre dos [[terminal]]es telefónicas de un mismo edificio usando una red local. {{sinónimo|interno|citófono|intercomunicador}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 5b1cbqfpnaxp7azxfkwylyjbdsifjof potito 0 1063199 6110098 6110055 2026-04-27T16:43:17Z ~2026-16686-32 181366 imagen 6110098 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|marca|Potitos}}. ==== {{sustantivo masculino|es}} ==== [[File:Baby eating baby food.jpg|thumb|bebé comiendo un potito]] {{es.sust}} ;1 {{csem|alimentos}}: {{ucf|puré}} para [[bebé]]s. Hay una plétora de variantes y sabores en el mercado para elegir.<ref>{{DLE}}</ref> {{ámbito|España}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> dn2qycyiqab0lv8l07r8auducr9hlna hibernal 0 1063202 6110078 2026-04-27T13:19:57Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|hibernalis|alt=hībernālis}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{variante|invernal}}. == Referencias y notas == <references />» 6110078 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|hibernalis|alt=hībernālis}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{variante|invernal}}. == Referencias y notas == <references /> cb162yisu6lc7bwm7xdz7gl8vxo6tog suspiro morado 0 1063203 6110084 2026-04-27T14:58:39Z Raos10 93688 Creación de página 6110084 wikitext text/x-wiki =={{lengua|es}}== {{pron-graf}} === Etimología === {{etimología}}. ==== {{sustantivo femenino|es}} ==== {{es.sust|cop=s}} ;1 {{csem|planta}}: {{taxón|Gomphrena globosa}} {{plm|perpetua}}.<ref name='damer'>{{Damer|suspiro}}</ref> {{ámbito|Panamá}} {{sinónimo|perpetua|siempreviva|habana|inmortal|sandiego|sempiterna|amarantina|perpetua encarnada}} ====Traducciones==== {{trad-véase|1-2|perpetua}} == Referencias y notas == <references /> 8p26rwbse9g294an6monkny57rhfqfj 6110087 6110084 2026-04-27T15:29:07Z Tmagc 158167 6110087 wikitext text/x-wiki =={{lengua|es}}== {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución sustantiva|es|masculina}} ==== {{es.sust|cop=s}} ;1 {{csem|planta}}: {{taxón|Gomphrena globosa}} {{plm|perpetua}}.<ref name='damer'>{{Damer|suspiro}}</ref> {{ámbito|Panamá}} {{sinónimo|perpetua|siempreviva|habana|inmortal|sandiego|sempiterna|amarantina|perpetua encarnada}} ====Traducciones==== {{trad-véase|1-2|perpetua}} == Referencias y notas == <references /> 3ei1zvrnug4s4p5ce5kyiv6zhr5fq3c suspensión del juicio a prueba 0 1063204 6110086 2026-04-27T15:19:31Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución|es|sustantiva|femenina}} ==== {{es.sust|cop=n}} ;1 {{csem|derecho}}: Recurso que le permite al condenado por un delito, si se cumplen ciertos requisitos, cumplir su sanción penal en libertad, aunque sujeto a ciertas restricciones. {{sinónimo|libertad condicional|probation}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <…» 6110086 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución|es|sustantiva|femenina}} ==== {{es.sust|cop=n}} ;1 {{csem|derecho}}: Recurso que le permite al condenado por un delito, si se cumplen ciertos requisitos, cumplir su sanción penal en libertad, aunque sujeto a ciertas restricciones. {{sinónimo|libertad condicional|probation}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> r07bcxai0cg328zlu0jhb3pgx5f54r7 amargón 0 1063205 6110089 2026-04-27T16:00:51Z Raos10 93688 Creación de página 6110089 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|aumentativo|amargo}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1 {{csem|planta}}: {{taxón|Taraxacum officinale}} {{plm|diente de león}}.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|diente de león|almirón|achicoria amarga}} ;2 {{csem|planta}}: {{taxón|Lippia alba}} {{plm|pitiona}}.<ref name='damer'>{{Damer}}</ref> {{ámbito|El Salvador}} {{sinónimo|pitión|juanilama|mastranto|salvia|sonora|prontoalivio}} ;3 {{csem|planta}}: {{taxón|Chamaedores lehmannii}} {{plm|chichicuilote}} ('palma pequeña').<ref name='damer'/> {{ámbito|Honduras}} {{sinónimo|chichicuilote|chicuilote|garrote amargo}} ;4: Contrariedad intensa o profundo pesar.<ref name='dle'/><ref name='damer'/> {{ámbito|Perú}} ==== {{sustantivo|es|masculino|femenino}} ==== {{es.sust|mf}} ;5: {{plm|susceptible}}, [[picajoso]].<ref name='damer'/> {{ámbito|Perú}} ==== Véase también ==== {{w|objeto=varios artículos}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> nq8n14itq4lmu0l1sql6rvbyk5btc8b Usuario discusión:Col923 3 1063207 6110095 2026-04-27T16:40:54Z Tmagc 158167 Página creada con «{{subst:Bienvenido}}» 6110095 wikitext text/x-wiki <div style="padding:10px; font-size:101%; background:var(--background-color-success-subtle); color:var(--color-base); border: 1px dotted var(--border-color-notice);" > Hola, Col923. Te damos la [[Wikcionario:Bienvenido, nuevo visitante|bienvenida a ''Wikcionario'']]. <small style="padding-left:150px">[[Wikcionario:Embajada|If you don't speak Spanish, please visit our Embassy]]</small> Gracias por participar en el proyecto. Puedes encontrar algunas guías útiles aquí: :<small>&#x25B6;</small> El '''[[Ayuda:Tutorial|tutorial del Wikcionario]]''' te ofrece una introducción básica sobre la manera de editar con el lenguaje "wiki"; si ya has editado en ''Wikipedia'', mira '''[[Wikcionario:Para editores de Wikipedia|para editores de Wikipedia]]''' en cambio. :<small>&#x25B6;</small> La '''[[Wikcionario:Ayuda|página de ayuda]]''' explica la filosofía básica del proyecto, cómo explorarlo y cómo colaborar; hay muchos otros recursos en el '''[[Ayuda:Mapa de ayuda|Mapa de ayuda]]'''. :<small>&#x25B6;</small> Las '''[[Ayuda:Cómo se edita una página|instrucciones para editar una página]]''' explican cómo hacer ediciones; :<small>&#x25B6;</small> La '''[[Wikcionario:Guía de estilo|guía de estilo]]''' es esencial para orientar la redacción; :<small>&#x25B6;</small> Recuerda también que casi siempre las entradas se crean con [[minúscula]]s. Mira '''[[Wikcionario:Convenciones para nombrar entradas|cómo nombrar entradas]]''' para más detalles. Si quieres saber algo más, puedes dirigirte a la comunidad en el '''[[Wikcionario:Café|Café]]'''. No temas preguntar, estamos aquí para ayudarte. Puedes también conectarte con otros editores en el '''{{IRC|wiktionary-es|canal IRC}}''' o en el {{IRC|wikimedia-ayuda|canal de ayuda}}. {| | Esta es tu página de discusión, donde otros wikcionaristas pueden contactarte. Debes responder a un mensaje de otro usuario en '''su''' página de discusión, porque así le saldrá el aviso de «mensajes nuevos» y podrá enterarse de tu respuesta. No olvides '''[[Ayuda:Cómo se edita una página#Firmar un comentario|firmar tu mensaje]]''' con cuatro tildes <nowiki>(&#126;&#126;&#126;&#126;)</nowiki>, con la combinación de teclas {{tecla|Alt Gr|4}}, o usando el botón correspondiente que hay en la parte superior de la caja de edición. || [[Archivo:Signature button.png|right|Para firmar usa el botón indicado|link=]] |} Esperamos que pases buenos momentos por aquí y que la colaboración te resulte agradable.<br /> Saludos muy cordiales, [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:40 27 abr 2026 (UTC).</div> 5d2z79q5fbxc78mm1iht399uwkjzijh 6110096 6110095 2026-04-27T16:41:02Z Tmagc 158167 Sección nueva: /* Notificación de borrado rápido en «cuckoo for Cocoa Puffs» */ 6110096 wikitext text/x-wiki <div style="padding:10px; font-size:101%; background:var(--background-color-success-subtle); color:var(--color-base); border: 1px dotted var(--border-color-notice);" > Hola, Col923. Te damos la [[Wikcionario:Bienvenido, nuevo visitante|bienvenida a ''Wikcionario'']]. <small style="padding-left:150px">[[Wikcionario:Embajada|If you don't speak Spanish, please visit our Embassy]]</small> Gracias por participar en el proyecto. Puedes encontrar algunas guías útiles aquí: :<small>&#x25B6;</small> El '''[[Ayuda:Tutorial|tutorial del Wikcionario]]''' te ofrece una introducción básica sobre la manera de editar con el lenguaje "wiki"; si ya has editado en ''Wikipedia'', mira '''[[Wikcionario:Para editores de Wikipedia|para editores de Wikipedia]]''' en cambio. :<small>&#x25B6;</small> La '''[[Wikcionario:Ayuda|página de ayuda]]''' explica la filosofía básica del proyecto, cómo explorarlo y cómo colaborar; hay muchos otros recursos en el '''[[Ayuda:Mapa de ayuda|Mapa de ayuda]]'''. :<small>&#x25B6;</small> Las '''[[Ayuda:Cómo se edita una página|instrucciones para editar una página]]''' explican cómo hacer ediciones; :<small>&#x25B6;</small> La '''[[Wikcionario:Guía de estilo|guía de estilo]]''' es esencial para orientar la redacción; :<small>&#x25B6;</small> Recuerda también que casi siempre las entradas se crean con [[minúscula]]s. Mira '''[[Wikcionario:Convenciones para nombrar entradas|cómo nombrar entradas]]''' para más detalles. Si quieres saber algo más, puedes dirigirte a la comunidad en el '''[[Wikcionario:Café|Café]]'''. No temas preguntar, estamos aquí para ayudarte. Puedes también conectarte con otros editores en el '''{{IRC|wiktionary-es|canal IRC}}''' o en el {{IRC|wikimedia-ayuda|canal de ayuda}}. {| | Esta es tu página de discusión, donde otros wikcionaristas pueden contactarte. Debes responder a un mensaje de otro usuario en '''su''' página de discusión, porque así le saldrá el aviso de «mensajes nuevos» y podrá enterarse de tu respuesta. No olvides '''[[Ayuda:Cómo se edita una página#Firmar un comentario|firmar tu mensaje]]''' con cuatro tildes <nowiki>(&#126;&#126;&#126;&#126;)</nowiki>, con la combinación de teclas {{tecla|Alt Gr|4}}, o usando el botón correspondiente que hay en la parte superior de la caja de edición. || [[Archivo:Signature button.png|right|Para firmar usa el botón indicado|link=]] |} Esperamos que pases buenos momentos por aquí y que la colaboración te resulte agradable.<br /> Saludos muy cordiales, [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:40 27 abr 2026 (UTC).</div> == Notificación de borrado rápido en «[[:cuckoo for Cocoa Puffs]]» == [[Archivo:Icon_delete.svg|izquierda|50px|link=Wikcionario:Criterios para el borrado rápido#g4]] Hola, Col923. Se ha revisado la página '''«[[:cuckoo for Cocoa Puffs]]»''' y esta cumple con los [[Wikcionario:Política de borrado#g4|criterios de borrado rápido]], por eso se ha marcado con la plantilla {{ep|destruir}} para que sea borrada de inmediato por un [[Wikcionario:Administradores|administrador]]. Los argumentos de borrado son los siguientes:<br /> :*'''[[WN:BR#G4|G4]]''': La entrada no tiene un contexto claro, ni un formato legible, por favor revisa la página de ayuda sobre cómo [[Ayuda:Cómo empezar una página|empezar una página]] y sobre [[Ayuda:Cómo se edita una página|cómo se edita esta]]. Por favor revisa la [[Wikcionario:Política de borrado|política de borrado]] y sólo si crees que la entrada en cuestión no se ajusta a lo descrito ahí, expón tus argumentos en mi página de discusión, o al <span class=plainlinks>[//es.Wikcionario.org/w/index.php?title=Especial%3ARegistro&type=delete&user=&page=cuckoo_for_Cocoa_Puffs administrador]</span> que eliminó la entrada, por favor menciona de que entrada debatiremos enlazándolo con corchetes dobles así <code><nowiki>[[ejemplo]]</nowiki></code> y recuerda que debes firmar todo mensaje que dejas en una discusión, para esto sólo añade <nowiki>~~~~</nowiki> al final de tu mensaje, se convertirá en tu firma al grabar la página. Si la página la creaste con finalidades de hacer pruebas, por favor utiliza la [[Wikcionario:Zona de pruebas|Zona de pruebas]]. Gracias por tu comprensión. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:41 27 abr 2026 (UTC) lljbifm82beo8kc7xze1s67lfh3m88f loquera 0 1063208 6110103 2026-04-27T17:33:42Z JPDAMAY 176835 Página creada con «== {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1928}}.<ref>{{CNDHE}}</ref> {{etimología|sufijo|loco|-era}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|jaula}} de [[loco]]s.<ref>{{DLE1925|752}}</ref> ;2: {{plm|falta}} o privación de cualquier [[juicio]] o capacidad de [[raciocinio]].<ref name="damer">{{Damer}}</ref> {{ámbito|América}}. {{sinónimo|desatino|locura}}. ;3: {{plm|impulsividad}}, [[frenesí]].<ref na…» 6110103 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología 1 === {{año de documentación|1928}}.<ref>{{CNDHE}}</ref> {{etimología|sufijo|loco|-era}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{plm|jaula}} de [[loco]]s.<ref>{{DLE1925|752}}</ref> ;2: {{plm|falta}} o privación de cualquier [[juicio]] o capacidad de [[raciocinio]].<ref name="damer">{{Damer}}</ref> {{ámbito|América}}. {{sinónimo|desatino|locura}}. ;3: {{plm|impulsividad}}, [[frenesí]].<ref name="damer /> {{ámbito|Ámerica}}. ;4: {{plm|tumulto}}, [[desorden]].<ref name="damer /> {{ámbito|El Salvador|Honduras|Panamá|Paraguay|Venezuela}}. ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{t|en|a1=2|t1=madness|a2=2|t2=craziness}} {{trad-abajo}} === Forma flexiva === ==== Forma adjetiva ==== ;1: {{forma adjetivo|loquero|femenino|singular}}. == Referencias y notas == <references /> oihn3lqxg5k4e7izj6h074km1mszi0v libet 0 1063209 6110104 2026-04-27T17:36:03Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la|v=lubet}} === Etimología === {{etimología|fone|lubet|leng=la}}, {{etim|leng=la|itc-pro|*luβēt}}, {{etim|leng=la|ine-pro|*lubʰ-eh₁-(ye)-ti|nl=s}}, {{etim|ine-pro|leng=la|*lewbʰ-|amar, desear}}. ==== {{verbo intransitivo|la|terciopersonal}} ==== ;1: {{plm|agradar}} (-le algo a alguien). {{sinónimo|placeo|alt=placeō|leng=la}} ==== Conjugación ==== {{la.v|2|libet|libu|libit|opt_semi_depon=v|ger=-|…» 6110104 wikitext text/x-wiki {{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la|v=lubet}} === Etimología === {{etimología|fone|lubet|leng=la}}, {{etim|leng=la|itc-pro|*luβēt}}, {{etim|leng=la|ine-pro|*lubʰ-eh₁-(ye)-ti|nl=s}}, {{etim|ine-pro|leng=la|*lewbʰ-|amar, desear}}. ==== {{verbo intransitivo|la|terciopersonal}} ==== ;1: {{plm|agradar}} (-le algo a alguien). {{sinónimo|placeo|alt=placeō|leng=la}} ==== Conjugación ==== {{la.v|2|libet|libu|libit|opt_semi_depon=v|ger=-|ind_fut=-|nopasivo=v}} == Referencias y notas == <references /> bxg1ya0itu7thgt2aedx1r6jnct9amc lubet 0 1063210 6110105 2026-04-27T17:40:53Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la|v=libet}} === Etimología === {{etimología|leng=la|itc-pro|*luβēt}}, {{etim|leng=la|ine-pro|*lubʰ-eh₁-(ye)-ti|nl=s}}, {{etim|ine-pro|leng=la|*lewbʰ-|amar, desear}}. ==== {{verbo intransitivo|la|terciopersonal}} ==== ;1: {{variante anticuada|leng=la|libet}}. ==== Conjugación ==== {{la.v|2|lubet|lubu|lubit|opt_semi_depon=v|ger=-|ind_fut=-|nopasivo=v}} == Referencias y notas == <references />» 6110105 wikitext text/x-wiki {{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la|v=libet}} === Etimología === {{etimología|leng=la|itc-pro|*luβēt}}, {{etim|leng=la|ine-pro|*lubʰ-eh₁-(ye)-ti|nl=s}}, {{etim|ine-pro|leng=la|*lewbʰ-|amar, desear}}. ==== {{verbo intransitivo|la|terciopersonal}} ==== ;1: {{variante anticuada|leng=la|libet}}. ==== Conjugación ==== {{la.v|2|lubet|lubu|lubit|opt_semi_depon=v|ger=-|ind_fut=-|nopasivo=v}} == Referencias y notas == <references /> qw1w32qz5bfsk1i3l19xvv9v7xuexcd licet 0 1063211 6110106 2026-04-27T17:52:41Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|leng=la|incierta}}. ==== {{verbo intransitivo|la|impersonal}} ==== ;1: {{plm|valer}}; ser (algo) lícito. {{sinónimo|permitto|alt=permittō}} ==== Conjugación ==== {{la.v|2|licet|licu|licit|opt_semi_depon=v|nopasivo=v|sigm=v}} == Referencias y notas == <references />» 6110106 wikitext text/x-wiki {{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|leng=la|incierta}}. ==== {{verbo intransitivo|la|impersonal}} ==== ;1: {{plm|valer}}; ser (algo) lícito. {{sinónimo|permitto|alt=permittō}} ==== Conjugación ==== {{la.v|2|licet|licu|licit|opt_semi_depon=v|nopasivo=v|sigm=v}} == Referencias y notas == <references /> 57amawvbt7hkg1dqsskl2wuctzyd03u piget 0 1063212 6110109 2026-04-27T17:59:36Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|ine-pro|*peyǵ-|leng=la}}. ==== {{verbo intransitivo|la|terciopersonal}} ==== ;1: {{plm|afligirse}}, [[acongojarse]]. ==== Conjugación ==== {{la.v|2|opt_semi_depon=v|piget|pigu|pigit|nopasivo=v}} == Referencias y notas == <references />» 6110109 wikitext text/x-wiki {{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|ine-pro|*peyǵ-|leng=la}}. ==== {{verbo intransitivo|la|terciopersonal}} ==== ;1: {{plm|afligirse}}, [[acongojarse]]. ==== Conjugación ==== {{la.v|2|opt_semi_depon=v|piget|pigu|pigit|nopasivo=v}} == Referencias y notas == <references /> s0hw6ut6w5mgrtnkeuix9y1o32a9d91 inquam 0 1063213 6110112 2026-04-27T18:12:45Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|leng=la|incierta}}. ==== {{verbo transitivo|la}} ==== ;1: {{plm|alegar}}, [[mencionar]], [[remarcar]] (que). ==== Conjugación ==== {{la.v|irreg|inquam}} == Referencias y notas == <references />» 6110112 wikitext text/x-wiki {{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|leng=la|incierta}}. ==== {{verbo transitivo|la}} ==== ;1: {{plm|alegar}}, [[mencionar]], [[remarcar]] (que). ==== Conjugación ==== {{la.v|irreg|inquam}} == Referencias y notas == <references /> reo9sduf65bzz8r29noo541ndu105qr amarguillo 0 1063214 6110115 2026-04-27T18:31:46Z Raos10 93688 Creación de página 6110115 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|diminutivo|amargo}}.<ref name='dle1925'>{{DLE1925}}</ref> ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: {{plm|amargo}} ('dulce amargo').<ref name='dle1925'/> {{sinónimo|amargo}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-véase|1|amargo}} == Referencias y notas == <references /> 80a8pnjjmugchk3kdgt7aobpkr1rwce inquisitar 0 1063215 6110117 2026-04-27T18:48:24Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|regresiva|inquisidor}}. ==== {{verbo transitivo|es}} ==== ;1: Procesar e investigar la culpabilidad del sujeto involucrado en una causa. {{ejemplo|El fiscal trascendía sus fueros para adoptar, en una cronometría actoral, el flagelo del martirio o la compasión, según el temple del '''inquisitado'''.|c=libro|t=La isla del olvido|a=Iván González Cruz|f=2008|u=https://www.goo…» 6110117 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|regresiva|inquisidor}}. ==== {{verbo transitivo|es}} ==== ;1: Procesar e investigar la culpabilidad del sujeto involucrado en una causa. {{ejemplo|El fiscal trascendía sus fueros para adoptar, en una cronometría actoral, el flagelo del martirio o la compasión, según el temple del '''inquisitado'''.|c=libro|t=La isla del olvido|a=Iván González Cruz|f=2008|u=https://www.google.com.ar/books/edition/La_isla_del_olvido/6vlNDwAAQBAJ?hl=es-419&gbpv=1&dq=inquisitado&pg=PA140&printsec=frontcover|p=140|isbn=9788479625542|editorial=Verbum}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> sqsffq08ztz0qnn4qdt5gm8ugsidiyq inquisidor 0 1063216 6110118 2026-04-27T18:51:05Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|inquisitor|alt=inquisitōris}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{adjetivo de verbo|inquirir|inquiere}}. {{uso|utcs}} ;2: {{adjetivo de verbo|inquisitar|inquisita}}. {{uso|utcs}} ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust}} ;3 {{csem|derecho|religión}}: Juez eclesiástico que conocía de las causas de fe.<ref>{{DLE1925}}</ref> ==== Traducciones ==…» 6110118 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|inquisitor|alt=inquisitōris}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{adjetivo de verbo|inquirir|inquiere}}. {{uso|utcs}} ;2: {{adjetivo de verbo|inquisitar|inquisita}}. {{uso|utcs}} ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust}} ;3 {{csem|derecho|religión}}: Juez eclesiástico que conocía de las causas de fe.<ref>{{DLE1925}}</ref> ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> cwxqdvrpdeoqdc606cqffcgc61qv8m7 6110119 6110118 2026-04-27T18:51:15Z Tmagc 158167 6110119 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|inquisitor|alt=inquisitōris}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{adjetivo de verbo|inquirir|inquiere}}. {{uso|utcs}} ;2: {{adjetivo de verbo|inquisitar|inquisita}}. {{uso|utcs}} ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust|mf}} ;3 {{csem|derecho|religión}}: Juez eclesiástico que conocía de las causas de fe.<ref>{{DLE1925}}</ref> ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> pr9ienl8nff8bg1fq9m9b6rj1l1ntli amaricado 0 1063217 6110120 2026-04-27T19:14:04Z Raos10 93688 Creación de página 6110120 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|confijo|a|marica|ado}}.<ref name='dle'>{{DLE}}</ref> ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{plm|afeminado}}.<ref name='dle1925'>{{DLE1925}}</ref> {{uso|malsonante}} {{sinónimo|afeminado|amanerado}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 4tw0iqeu5zku4zoyrrll4b3wibja3mf amarilidáceo 0 1063218 6110121 2026-04-27T19:28:41Z Raos10 93688 Creación de página 6110121 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la-con|Amaryllidaceae}}, y este de {{l+|la|Amaryllis|glosa=amarilis}} y el sufijo {{l+|la|-aceae|glosa=-áceo}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|botánica}}: {{taxón|Amaryllidaceae}} {{impropia|Aplicado a una planta:}} De la familia de plantas herbáceas, perennes, bulbosas o rizomatosas, pertenecientes al orden Asparagales de las monocotiledóneas. Pueden ser fácilmente reconocidas por sus flores trímeras dispuestas en inflorescencias similares a [[umbela]]s, las cuales se hallan rodeadas de dos [[bráctea]]s en la extremidad de un [[escapo]]. {{sinónimo|amarilídeo}} ==== Véase también ==== {{w|amarilidáceas}} * [[amarilidáceas]] ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> qw6ztqn87a7gdy58n0wkk5p6z99l4fs 6110123 6110121 2026-04-27T19:30:14Z Raos10 93688 variante 6110123 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf|v=amarilídeo}} === Etimología === {{etimología|la-con|Amaryllidaceae}}, y este de {{l+|la|Amaryllis|glosa=amarilis}} y el sufijo {{l+|la|-aceae|glosa=-áceo}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|botánica}}: {{taxón|Amaryllidaceae}} {{impropia|Aplicado a una planta:}} De la familia de plantas herbáceas, perennes, bulbosas o rizomatosas, pertenecientes al orden Asparagales de las monocotiledóneas. Pueden ser fácilmente reconocidas por sus flores trímeras dispuestas en inflorescencias similares a [[umbela]]s, las cuales se hallan rodeadas de dos [[bráctea]]s en la extremidad de un [[escapo]]. ==== Véase también ==== {{w|amarilidáceas}} * [[amarilidáceas]] ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> a2wfnbm5hgi4mpgfo18sex2xmu9f9ek amarilídeo 0 1063219 6110122 2026-04-27T19:29:44Z Raos10 93688 Creación de página 6110122 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|variante|amarilidáceo}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|botánica}}: {{variante|amarilidáceo}}.<ref name='dle'>{{DLE}}</ref> ==== Traducciones ==== {{trad-véase|1|amarilidáceo}} == Referencias y notas == <references /> cr7wn7d0hwpt3kbgtos93v46dmrp6jy gradualista 0 1063220 6110134 2026-04-27T21:07:07Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|gradual|ista}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{adjetivo de sustantivo|gradualismo}}. {{uso|utcs}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />» 6110134 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|gradual|ista}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{adjetivo de sustantivo|gradualismo}}. {{uso|utcs}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> f94rm7utxlxnia6zebrz7ozl7kunlt8 cuadratura 0 1063221 6110136 2026-04-27T21:25:22Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|v=cuadradura}} === Etimología === {{etimología|la|quadratura|alt=quadrātūra}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{sustantivo de verbo|cuadrar}}. ;2 {{csem|astronomía}}: Situación de dos cuerpos celestes, en donde estos forman un ángulo de 90° con respecto a la Tierra. ;3 {{csem|astronomía}}: Por extensión, posición de la Luna en los cuartos crecientes y menguantes. ==== Véase tamb…» 6110136 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf|v=cuadradura}} === Etimología === {{etimología|la|quadratura|alt=quadrātūra}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{sustantivo de verbo|cuadrar}}. ;2 {{csem|astronomía}}: Situación de dos cuerpos celestes, en donde estos forman un ángulo de 90° con respecto a la Tierra. ;3 {{csem|astronomía}}: Por extensión, posición de la Luna en los cuartos crecientes y menguantes. ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> hawtdx8kavrg165glgksn1x76h0fgnf cuadradura 0 1063222 6110138 2026-04-27T21:25:59Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|cuadrado|dura}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{variante obsoleta|cuadratura}}. == Referencias y notas == <references />» 6110138 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|cuadrado|dura}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: {{variante obsoleta|cuadratura}}. == Referencias y notas == <references /> bes3m5i9v73i5hi7mnactyi05imiam9 máakal 0 1063223 6110140 2026-04-27T21:39:18Z 26agcp 138617 Página creada con «== {{lengua|yua}} == {{pron-graf|leng=yua}} === Etimología === {{etimología|leng=yua}}. ==== {{verbo|yua|intransitivo}} ==== ;1 : {{plm|taparse}}, {{l|es|cerrarse}}.<ref>{{DUMY|p=178|cita=máak.al}}</ref> ==== Conjugación ==== {{yua.v|m}} ==== Véase también ==== * {{l|yua|mak}} * {{l|yua|maak}} == Referencias y notas == <references />» 6110140 wikitext text/x-wiki == {{lengua|yua}} == {{pron-graf|leng=yua}} === Etimología === {{etimología|leng=yua}}. ==== {{verbo|yua|intransitivo}} ==== ;1 : {{plm|taparse}}, {{l|es|cerrarse}}.<ref>{{DUMY|p=178|cita=máak.al}}</ref> ==== Conjugación ==== {{yua.v|m}} ==== Véase también ==== * {{l|yua|mak}} * {{l|yua|maak}} == Referencias y notas == <references /> dynigr5pwh6mngind9q6emz7g3s2cb5 amarilis 0 1063224 6110142 2026-04-27T21:45:07Z Raos10 93688 Creación de página 6110142 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la-con|Amaryllis}}, y este {{etim|la|Amaryllis}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|femenino}} ==== {{es.sust}} ;1 {{csem|planta}}: {{taxón|Amaryllis|Hippeastrum}} {{impropia|Término que denomina a diversas plantas amarilídeas}}.<ref name='dle'/> ==== Véase también ==== {{w|Amaryllis}} {{w|Hippeastrum}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> atrh6gnq71t2ydhgdbzbl2qvmwijnzd amarillejo 0 1063225 6110144 2026-04-27T21:48:33Z Raos10 93688 Creación de página 6110144 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amarillo|ejo}}.<ref name='dle'>{{DLE}}</ref> ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|colores}}: {{variante|amarillento}}.<ref name='dle'/> ==== Traducciones ==== {{trad-véase|1|amarillento}} == Referencias y notas == <references /> pt5m7i2bttwcbivmhc7ubx9bpwofgx3 amarillor 0 1063226 6110146 2026-04-27T21:49:53Z Raos10 93688 Creación de página 6110146 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amarillo|or}}. ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: {{variante|amarillez}}.<ref name='dle'>{{DLE}}</ref> ==== Traducciones ==== {{trad-véase|1|amarillez}} == Referencias y notas == <references /> 91m2yyjsabdqqbnoa050t0oz926gpwo amarillura 0 1063227 6110149 2026-04-27T21:51:08Z Raos10 93688 Creación de página 6110149 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amarillo|ura}}. ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: {{variante|amarillez}}.<ref name='dle'>{{DLE}}</ref> {{uso|anticuado}} ==== Traducciones ==== {{trad-véase|1|amarillez}} == Referencias y notas == <references /> rp12jybc8kt0b379xxr4hy35apsj1re amaritud 0 1063228 6110150 2026-04-27T21:53:50Z Raos10 93688 Creación de página 6110150 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|amaritudo|alt=amaritūdo}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|femenino}} ==== {{es.sust}} ;1: {{variante anticuada|amargor}}.<ref name='dle'/> ==== Traducciones ==== {{trad-véase|1|amargor}} == Referencias y notas == <references /> rggy1cs8yu2oz4t3zzptsgukzxryyi1 amarradero 0 1063229 6110152 2026-04-27T21:55:56Z Raos10 93688 Creación de página 6110152 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amarrar|dero}}. ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: Poste, pilar o argolla donde se amarra alguna cosa.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|argolla|poste}} ;2 {{csem|marina}}: Sitio donde se amarran los barcos.<ref name='dle1925'/> {{sinónimo|embarcadero}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> dxw79uewa7coaw2rho6tylbln6rfhfs amarradijo 0 1063230 6110153 2026-04-27T21:57:45Z Raos10 93688 Creación de página 6110153 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amarrado|-ijo}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: Atadura realizada sin precisión ni esmero.<ref name='dle'/> {{ámbito|México|Cantabria|Colombia|Honduras}} {{sinónimo|atadijo}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> ruwv2z9ieab1qlgp9gwmxss9rzbgvgu amarreco 0 1063231 6110154 2026-04-27T21:59:40Z Raos10 93688 Creación de página 6110154 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|eu|amarreko}}, de {{l+|eu|amarr|diez}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: {{variante|amarraco}}.<ref name='dle1925'>{{DLE1925}}</ref> ==== Traducciones ==== {{trad-véase|1|amarraco}} == Referencias y notas == <references /> lseisqhw6scf36t40qcda5vuipv4sf9 barafunda 0 1063232 6110155 2026-04-27T22:00:57Z JPDAMAY 176835 Página creada con «== {{lengua|ast}} == {{pron-graf|leng=ast}} === Etimología === {{etimología|leng=ast|incierta}}. ==== {{sustantivo femenino|ast}} ==== {{ast.sust|f}} ;1: {{plm|barahúnda}}.<ref>{{DALLA}}</ref> ==== Véase también ==== {{w|idioma=ast}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología === {{etimología|leng=gl|incierta}}. ==== {{sustantivo femenino|gl}} ==== {{gl.sust}} ;1: {{plm|barahúnda}}, [[bullicio]].<ref name="drag">{{DRAG}}</ref> {{ejemplo|«{…» 6110155 wikitext text/x-wiki == {{lengua|ast}} == {{pron-graf|leng=ast}} === Etimología === {{etimología|leng=ast|incierta}}. ==== {{sustantivo femenino|ast}} ==== {{ast.sust|f}} ;1: {{plm|barahúnda}}.<ref>{{DALLA}}</ref> ==== Véase también ==== {{w|idioma=ast}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología === {{etimología|leng=gl|incierta}}. ==== {{sustantivo femenino|gl}} ==== {{gl.sust}} ;1: {{plm|barahúnda}}, [[bullicio]].<ref name="drag">{{DRAG}}</ref> {{ejemplo|«{{l|gl|feliz|Feliz}} {{l|gl|quen}} {{l|gl|vivir|vive}} {{l|gl|lonxe}} {{l|gl|das}} '''barafundas'''!»|traducción=«¡{{plm|feliz}} [[quien]] [[vivir|vive]] [[lejos]] [[del]] [[bullicio]]».}} ;2: {{plm|nimiedad}}{{subíndice|4}}, [[banalidad]].<ref name="drag /> {{sinónimo|leng=gl|algueirada}}. ==== Véase también ==== {{w|idioma=gl}} == {{lengua|pt}} == {{pron-graf|leng=pt}} === Etimología === {{etimología|leng=pt|incierta}}. ==== {{sustantivo femenino|pt}} ==== {{pt.sust}} ;1: {{plm|grupo}} [de diversas ocupaciones].<ref name="priberam">{{Priberam}}</ref> ;2: {{plm|conjunto}}.<ref name="priberam /> {{sinónimo|leng=pt|conjunto}}. ;3: {{plm|barahúnda}}.<ref name="priberam /> ;4: {{plm|calado}}.<ref name="priberam /> ==== Véase también ==== {{w|idioma=pt}} == Referencias y notas == <references /> pivt9fij8edli7633ixic3ouu0lapq2 6110182 6110155 2026-04-28T00:11:21Z JPDAMAY 176835 6110182 wikitext text/x-wiki == {{lengua|an}} == {{pron-graf|leng=an}} === Etimología === {{etimología|leng=an|incierta}}. ==== {{sustantivo femenino|an}} ==== {{an.sust}} ;1: {{plm|barahúnda}}.<ref>{{Aragonario}}</ref> ==== Véase también ==== {{w|idioma=an}} == {{lengua|ast}} == {{pron-graf|leng=ast}} === Etimología === {{etimología|leng=ast|incierta}}. ==== {{sustantivo femenino|ast}} ==== {{ast.sust|f}} ;1: {{plm|barahúnda}}.<ref>{{DALLA}}</ref> ==== Véase también ==== {{w|idioma=ast}} == {{lengua|gl}} == {{pron-graf|leng=gl}} === Etimología === {{etimología|leng=gl|incierta}}. ==== {{sustantivo femenino|gl}} ==== {{gl.sust}} ;1: {{plm|barahúnda}}, [[bullicio]].<ref name="drag">{{DRAG}}</ref> {{ejemplo|«{{l|gl|feliz|Feliz}} {{l|gl|quen}} {{l|gl|vivir|vive}} {{l|gl|lonxe}} {{l|gl|das}} '''barafundas'''!»|traducción=«¡{{plm|feliz}} [[quien]] [[vivir|vive]] [[lejos]] [[del]] [[bullicio]]».}} ;2: {{plm|nimiedad}}{{subíndice|4}}, [[banalidad]].<ref name="drag /> {{sinónimo|leng=gl|algueirada}}. ==== Véase también ==== {{w|idioma=gl}} == {{lengua|pt}} == {{pron-graf|leng=pt}} === Etimología === {{etimología|leng=pt|incierta}}. ==== {{sustantivo femenino|pt}} ==== {{pt.sust}} ;1: {{plm|grupo}} [de diversas ocupaciones].<ref name="priberam">{{Priberam}}</ref> ;2: {{plm|conjunto}}.<ref name="priberam /> {{sinónimo|leng=pt|conjunto}}. ;3: {{plm|barahúnda}}.<ref name="priberam /> ;4: {{plm|calado}}.<ref name="priberam /> ==== Véase también ==== {{w|idioma=pt}} == Referencias y notas == <references /> s4hsm50cdfrnrl17fue46bkpuli6tas amarroso 0 1063233 6110156 2026-04-27T22:04:37Z Raos10 93688 Creación de página 6110156 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|variante|amargoso}}.<ref name='dle'>{{DLE}}</ref> ==== {{adjetivo|es}} ==== {{es.adj}} ;1: {{variante|amargoso}}, [[amargo]].<ref>{{Damer}}</ref> {{ámbito|Costa Rica|Honduras|Nicaragua|Puerto Rico}} ==== Traducciones ==== {{trad-véase|1|amargoso}} == Referencias y notas == <references /> cjkk49h8h3g2dlc7dw2jxk5povyqwfb barafundas 0 1063234 6110157 2026-04-27T22:04:55Z JPDAMAY 176835 Página creada con «== {{lengua|gl}} == {{pron-graf|leng=gl}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=gl|barafunda}}. == {{lengua|pt}} == {{pron-graf|leng=pt}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=pt|barafunda}}. == Referencias y notas == <references />» 6110157 wikitext text/x-wiki == {{lengua|gl}} == {{pron-graf|leng=gl}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=gl|barafunda}}. == {{lengua|pt}} == {{pron-graf|leng=pt}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=pt|barafunda}}. == Referencias y notas == <references /> q6gos0ntnflnsptugnsapz79k8ctp7b 6110183 6110157 2026-04-28T00:11:55Z JPDAMAY 176835 6110183 wikitext text/x-wiki == {{lengua|an}} == {{pron-graf|leng=an}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=an|barafunda}}. == {{lengua|gl}} == {{pron-graf|leng=gl}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=gl|barafunda}}. == {{lengua|pt}} == {{pron-graf|leng=pt}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=pt|barafunda}}. == Referencias y notas == <references /> 5jb6ij6rko7wdptzvoglcuk3s1eao71 barafundes 0 1063235 6110158 2026-04-27T22:05:37Z JPDAMAY 176835 Página creada con «== {{lengua|ast}} == {{pron-graf|leng=ast}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=ast|barafunda}}. == Referencias y notas == <references />» 6110158 wikitext text/x-wiki == {{lengua|ast}} == {{pron-graf|leng=ast}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo plural|leng=ast|barafunda}}. == Referencias y notas == <references /> j2hksiimz849pfw4uzf1gzusvdy2fce amasadera 0 1063236 6110161 2026-04-27T22:21:48Z Raos10 93688 Creación de página 6110161 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amasar|dera}}. ==== {{sustantivo|es|femenino}} ==== {{es.sust}} ;1: {{plm|artesa}} en que se amasa.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|artesa}} ;2 {{csem|murcia}}: {{plm|cuezo}} ('artesa usada por albañiles').<ref name='dle'>{{DLE}}</ref> {{sinónimo|cuezo}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-véase|1|artesa}} {{trad-véase|2|cuezo}} == Referencias y notas == <references /> 99uaqzu76xf2rc3zzv1o8txg07pc162 6110162 6110161 2026-04-27T22:22:40Z Raos10 93688 6110162 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amasar|dera}}. ==== {{sustantivo|es|femenino}} ==== {{es.sust}} ;1: {{plm|artesa}} en que se amasa.<ref name='dle1925'>{{DLE1925}}</ref> {{sinónimo|artesa}} ;2: {{plm|cuezo}} ('artesa usada por albañiles').<ref name='dle'>{{DLE}}</ref> {{ámbito|murcia}} {{sinónimo|cuezo}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-véase|1|artesa}} {{trad-véase|2|cuezo}} == Referencias y notas == <references /> g6andvi9qc2kgyjz7cfv8xaymlz8rxh amasadero 0 1063237 6110165 2026-04-27T22:39:14Z Raos10 93688 Creación de página 6110165 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amasar|dero}}. ==== {{sustantivo|es|masculino}} ==== {{es.sust}} ;1: Local donde se amasa el pan.<ref name='dle1925'>{{DLE1925}}</ref> ==== Véase también ==== * [[amasadera]] ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> mvdyfchjffkfzevtpmzu3axnat0n3yg amasandería 0 1063238 6110166 2026-04-27T22:41:31Z Raos10 93688 Creación de página 6110166 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|amasandero|ía}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|femenino}} ==== {{es.sust}} ;1: {{plm|panadería}}.<ref name='dle'/><ref>{{Damer}}</ref> {{ámbito|Chile}} {{sinónimo|panadería|tahona}} ==== Traducciones ==== {{trad-véase|1|panadería}} == Referencias y notas == <references /> r05r8mp7r0c3m2fcn3huu3iaf5sv7rs amasandero 0 1063239 6110167 2026-04-27T22:43:26Z Raos10 93688 Creación de página 6110167 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{sustantivo|es|masculino|femenino}} ==== {{es.sust|mf}} ;1: {{plm|panadero}}.<ref>{{Damer}}</ref> {{ámbito|Chile}} {{sinónimo|panadero}} ==== Traducciones ==== {{trad-véase|1|panadero}} == Referencias y notas == <references /> t3h69ez2x0n1rr7bd3e7lqdpdo5tc5j amasio 0 1063240 6110168 2026-04-27T22:47:58Z Raos10 93688 Creación de página 6110168 wikitext text/x-wiki == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|la|amasius}}.<ref name='dle'>{{DLE}}</ref> ==== {{sustantivo|es|masculino|femenino}} ==== {{es.sust|mf}} ;1: {{plm|querido}}, [[concubino]].<ref name='dle'/><ref name='dle1925'>{{DLE1925}}</ref> ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> j8vgqd2q5kyrmopszi5qyvkrja4dvgl ambitar 0 1063241 6110185 2026-04-28T00:59:32Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|ámbito|ar}}. ==== {{verbo intransitivo|es}} ==== ;1: {{plm|frecuentar}}, [[acostumbrar]]. {{uso|raro}} {{ejemplo|Podríamos a su vez delimitarlos en dos: el específicamente andaluz (...) y el que, '''ambitado''' en lo andaluz, tiene como fuente de origen la tradición literaria y religiosa, aunque sea pasada por el propio mundo gitano.|c=libro|t=Yo, García Lorca|a=And…» 6110185 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|ámbito|ar}}. ==== {{verbo intransitivo|es}} ==== ;1: {{plm|frecuentar}}, [[acostumbrar]]. {{uso|raro}} {{ejemplo|Podríamos a su vez delimitarlos en dos: el específicamente andaluz (...) y el que, '''ambitado''' en lo andaluz, tiene como fuente de origen la tradición literaria y religiosa, aunque sea pasada por el propio mundo gitano.|c=libro|t=Yo, García Lorca|a=Andrés Sorel|f=1997|isbn=9788481360813|editorial=Txalaparta|p=91|u=https://www.google.com.ar/books/edition/Yo_Garc%C3%ADa_Lorca/eZtbOCFHbKYC?hl=es-419&gbpv=1&dq=ambitado&pg=PA91&printsec=frontcover}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 73sbkjmd60dq5g1hi2lfzjy7ms5w4ff 6110186 6110185 2026-04-28T01:02:42Z Tmagc 158167 6110186 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|ámbito|ar}}. ==== {{verbo intransitivo|es}} ==== ;1: {{plm|ambientar}}. {{uso|raro}} {{ejemplo|Podríamos a su vez delimitarlos en dos: el específicamente andaluz (...) y el que, '''ambitado''' en lo andaluz, tiene como fuente de origen la tradición literaria y religiosa, aunque sea pasada por el propio mundo gitano.|c=libro|t=Yo, García Lorca|a=Andrés Sorel|f=1997|isbn=9788481360813|editorial=Txalaparta|p=91|u=https://www.google.com.ar/books/edition/Yo_Garc%C3%ADa_Lorca/eZtbOCFHbKYC?hl=es-419&gbpv=1&dq=ambitado&pg=PA91&printsec=frontcover}} ;2: {{plm|frecuentar}}, [[acostumbrar]]. {{uso|raro}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 1k51cn4z7x6zi8dmfc1zgf5xprlfb0c contrainsurgencia 0 1063242 6110194 2026-04-28T03:36:39Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|prefijo|contra|insurgencia}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|milicia|política}}: El arte de controlar, dominar y someter a todo tipo de [[insurgencia]] que se enfrente a un régimen. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />» 6110194 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|prefijo|contra|insurgencia}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|milicia|política}}: El arte de controlar, dominar y someter a todo tipo de [[insurgencia]] que se enfrente a un régimen. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> cbc3iik6ghm05fpoxwzieqp3d8sk8t4 6110195 6110194 2026-04-28T03:37:06Z Tmagc 158167 6110195 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=contra-insurgencia}} === Etimología === {{etimología|prefijo|contra|insurgencia}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|milicia|política}}: El arte de controlar, dominar y someter a todo tipo de [[insurgencia]] que se enfrente a un régimen. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 4ozv5awn5zv9kuc8kujhltp0sjzpbw3 pentotal 0 1063243 6110197 2026-04-28T03:43:33Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|marca|Pentothal}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|química}}: {{plm|tiopentato de sodio}}. {{ámbito|Argentina}} == Referencias y notas == <references />» 6110197 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|marca|Pentothal}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|química}}: {{plm|tiopentato de sodio}}. {{ámbito|Argentina}} == Referencias y notas == <references /> dc0kzyxrai0jo3vr7x5rvjusrdp4pta 6110198 6110197 2026-04-28T03:45:14Z Tmagc 158167 6110198 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|marca|Pentothal}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|química}}: {{plm|tiopentato de sodio}}. {{ámbito|Argentina}} {{sinónimo|tiopental}} == Referencias y notas == <references /> rfy8yljh1igc1ro633tnv9hjfdw7pgb tiopentato de sodio 0 1063244 6110199 2026-04-28T03:47:59Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución|es|sustantiva|masculina}} ==== {{es.sust|s}} ;1 {{csem|química}}: Un [[barbitúrico]] C<sub>11</sub>H<sub>18</sub>N<sub>2</sub>O<sub>2</sub>S utilizado en forma de sal [[sódica]], especialmente como [[anestésico]] [[intravenoso]]; y como [[droga de la verdad]]. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />» 6110199 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución|es|sustantiva|masculina}} ==== {{es.sust|s}} ;1 {{csem|química}}: Un [[barbitúrico]] C<sub>11</sub>H<sub>18</sub>N<sub>2</sub>O<sub>2</sub>S utilizado en forma de sal [[sódica]], especialmente como [[anestésico]] [[intravenoso]]; y como [[droga de la verdad]]. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> qf0sgzaed60o2yimgxsw0d7tgxu27rc droga de la verdad 0 1063245 6110200 2026-04-28T03:49:57Z Tmagc 158167 Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución|es|sustantiva|femenina}} ==== {{es.sust|cop=n}} ;1: Medicación psicoactiva utilizada para obtener información de una persona que esta indispuesta o imposibilitada para facilitarla. {{sinónimo|suero de la verdad}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />» 6110200 wikitext text/x-wiki {{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{locución|es|sustantiva|femenina}} ==== {{es.sust|cop=n}} ;1: Medicación psicoactiva utilizada para obtener información de una persona que esta indispuesta o imposibilitada para facilitarla. {{sinónimo|suero de la verdad}} ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references /> 7vbiooqkvebq1m6m3qkwkz5ib6l56z1