Wikcionario
eswiktionary
https://es.wiktionary.org/wiki/Wikcionario:Portada
MediaWiki 1.47.0-wmf.12
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
voler
0
1608
6124002
5924578
2026-07-25T22:46:30Z
Tmagc
158167
6124002
wikitext
text/x-wiki
{{desambiguación|vołer}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|roa-oca|voler|querer}}, y este del latín vulgar {{l+|la|*volere|*volēre|glosa=querer}}, del latín {{l+|la|volo|velle|glosa=querer}} influido en la forma de infinitivo por las formas de primera persona {{l+|la|volo|glosa=quiero}}, {{l+|la|volam|glosa=quiera}} etc.
==== {{sustantivo masculino|ca}} ====
;1: {{plm|voluntad}}.
;2: {{plm|deseo}}.
==== {{verbo transitivo|ca}} ====
;3: {{plm|querer}}.
{{sinónimo|leng=ca|desitjar}}.
;4: {{plm|merecer}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|roa-oca}} ==
{{pron-graf|leng=roa-oca}}
=== Etimología 1 ===
{{etimología|leng=roa-oca|la-vul|*volere|alt=*volēre|querer}}, {{etim|leng=roa-oca|la|volo}} influido en la forma {{etim|leng=roa-oca|la|volo}}, {{l+|la|volam|glosa=quiera}} etc.
==== {{sustantivo masculino|roa-oca}} ====
;1: {{plm|voluntad}}.
==== {{verbo transitivo|roa-oca}} ====
;2: {{plm|querer}}.
== {{lengua|fr}} ==
{{pron-graf|leng=fr|1audio1=Fr-voler.ogg|h1=volai|h2=volez|h3=volé|h4=volée|h5=volées|h6=volés}}
=== Etimología 1 ===
{{etimología|leng=fr|frm|voler|volar}}, y este {{etim|leng=fr|fro|voler}}, {{etim|leng=fr|la|volo}}. Desarrolado en cetrería, en expresiones tales como: ''le faucon vole la perdrix''.
==== {{verbo intransitivo|fr}} ====
;1: {{plm|volar}}.
{{sinónimo|leng=fr|substanter}}.
{{ejemplo|La plupart des oiseaux volent.|trad=La mayoría de las aves vuelan.}}
;2: Ir deprisa.
{{uso|figurado}}
{{ejemplo|Voyant les attaques dont Marie était la victime, Pierre décida de voler à son secours.|trad=Al ver los ataques de los que Marie era víctima, Pierre corrió en su ayuda.}}
==== {{verbo transitivo|fr}} ====
;3: {{plm|hurtar}}, {{l|es|robar}} o {{l|es|sustraer}}.
{{sinónimo|leng=fr|arnaquer|cambrioler|carotter|dérober|détourner|escroquer|piquer}}.
{{ejemplo|La police a interpellé le gamin qui volait à l'étalage.|trad=La policia ha arrestado al chaval que robó en el almacén.}}
{{ejemplo|Il volait.}}
{{ejemplo|El robaba.}}
;4 {{csem|cetrería|leng=fr}}: {{plm|volar}}.
==== Locuciones ====
{{trad-arriba|locuciones}}
*{{l+|fr|bien volé ne profite pas}}
*{{l+|fr|entendre les mouches voler}}
*{{l+|fr|qui vole un œuf vole un bœuf}}
*{{l+|fr|voler de ses propres ailes}}
*{{l+|fr|voler en éclats}}
{{trad-abajo}}
==== Conjugación ====
{{fr.v}}
== {{lengua|fro}} ==
{{pron-graf|leng=fro|v1=voleir}}
=== Etimología 1 ===
{{etimología|leng=fro|la|volo|alt=volāre|volar}}.
==== {{verbo intransitivo|fro}} ====
;1: {{plm|volar}}.
==== Conjugación ====
{{fro.v.conj.er|vol}}
== {{lengua|frm}} ==
{{pron-graf|leng=frm}}
=== Etimología 1 ===
{{etimología|leng=frm|fro|voler|volar}}, y este {{etim|leng=frm|la|volo}}.
==== {{verbo intransitivo|frm}} ====
;1: {{plm|volar}}.
==== Conjugación ====
{{frm.v.conj.er|vol}}
== {{lengua|ia}} ==
{{pron-graf|leng=ia|1fono1=vo.ˈlɛr}}
=== Etimología 1 ===
{{etimología|leng=ia|fr|vouloir||it|volere}}.
==== {{verbo transitivo|ia}} ====
;1: {{plm|querer}}.
== {{lengua|it}} ==
{{pron-graf|leng=it}}
=== Etimología 1 ===
{{etimología|leng=it|roa-oit|voler}}.
==== {{sustantivo masculino|it}} ====
;1: {{variante|leng=it|volere}}
==== {{verbo transitivo|it}} ====
;2: {{variante|leng=it|volere}}
==== Locuciones ====
{{trad-arriba|locuciones}}
*{{l+|it|voler bene}}
*{{l+|it|voler dire}}
{{trad-abajo}}
== {{lengua|roa-oit}} ==
{{pron-graf|leng=roa-oit}}
=== Etimología 1 ===
{{etimología|leng=roa-oit|acort|voler}}.
==== {{sustantivo masculino|roa-oit}} ====
;1: {{variante|leng=roa-oit|volere}}
==== {{verbo transitivo|roa-oit}} ====
;2: {{variante|leng=roa-oit|volere}}
== {{lengua|nrf}} ==
{{pron-graf|leng=nrf|1pron1=Jersey|1audio1=Jer-voler.ogg}}
=== Etimología 1 ===
{{etimología|leng=nrf|fro|voler|volar}}, y este {{etim|leng=nrf|la|volo}}.
==== {{verbo intransitivo|nrf}} ====
;1: {{plm|volar}}.
{{ámbito|leng=nrf|Jersey}}
== {{lengua|lld}} ==
{{pron-graf|leng=lld}}
=== Etimología 1 ===
{{etimología|leng=lld|la-vul|*volere|alt=*volēre|querer}}, y este {{etim|leng=lld|la|volo}}.
==== {{verbo transitivo|lld}} ====
;1: {{variante|leng=lld|volei}}
== {{lengua|la}} ==
{{pron-graf|leng=la}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=la|volo|alt=volō|1s|pres|pas=x|sub|pron=ego}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc|1fono1=buˈle|1pron1=medio|2fono1=vuˈle|2pron1=provenzal}}
=== Etimología 1 ===
{{etimología|leng=oc|pro|voler|querer}}, y este del latín vulgar {{l+|la|*velere|*velēre|glosa=querer}}, del latín {{l+|la|volo|velle|glosa=querer}}.
==== {{sustantivo masculino|oc}} ====
{{oc.sust|m}}
;1: {{plm|voluntad}}.
{{sinónimo|leng=oc|volença|volontat}}.
;2: {{plm|deseo}}.
==== {{verbo transitivo|oc}} ====
;3: {{plm|querer}}.
== {{lengua|pro}} ==
{{pron-graf|leng=pro}}
=== Etimología 1 ===
{{etimología|leng=pro|la-vul|*volere|alt=*volēre|querer}}, y este {{etim|leng=pro|la|volo}}.
==== {{verbo transitivo|pro}} ====
;1: {{plm|querer}}.
{{ejemplo|Mas so qu'ieu vuelh m'es atahis.|título=canso|c=libro|a=Jaufre Rudel}}
== {{lengua|wa}} ==
{{pron-graf|leng=wa|1fono1=vɔle|1fono2=vɔlɛ}}
=== Etimología 1 ===
{{etimología|leng=wa|fro|voler|volar}}, y este {{etim|leng=wa|la|volo}}.
==== {{verbo intransitivo|wa}} ====
;1: {{plm|volar}}.
==== {{verbo transitivo|wa}} ====
;2: {{plm|hurtar}}, {{l|es|robar}} o {{l|es|sustraer}}.
== Referencias y notas ==
<references />
pkd5ds78vjbxs7q59zugu7kysmfw1x9
dormir
0
3897
6124026
6114463
2026-07-25T23:45:32Z
Tmagc
158167
/* {{lengua|ast}} */
6124026
wikitext
text/x-wiki
== {{lengua|es}} ==
{{swadesh|es}}
{{pron-graf|audio=LL-Q1321 (spa)-Rodelar-dormir.wav}}
=== Etimología ===
{{año de documentación|1140}}.<ref>{{CNDHE}}</ref> {{etimología|la|dormire}}.
[[Archivo:Sleepng person in journey, Tamil nadu112.JPG|thumb|hombre durmiendo (1)]]
=== {{verbo intransitivo|es}} ===
;1: {{plm|permanecer}} en un estado de [[reposo]] del [[cuerpo]] sin que se presenten [[movimiento]]s [[físico]]s [[voluntario]]s y con un estado de [[consciencia]] reducido.<ref name="dle1925">{{DLE1925}}</ref>
{{uso|utcp}} [[dormirse]].
{{ejemplo|«{{plm|nosotros}} debemos [[ganar]] algo en [[todo]] esto; [[bien]] lo [[saber|sabemos]], pues él [[ganar|ganó]] algo [[cuando]] entró en [[tierra]] de [[moro]]s, que [[sacar|ha sacado]] gran [[botín]]. No '''''duerme''''' [[tranquilo]] quien [[traer|trae]] [[dinero]] [[acuñado]]. [[tomar|Tomemos]] [[juntos]] estas [[arca]]s y [[poner|pongámoslas]] en un [[lugar]] donde no [[ventilarse|se ventile]] ([[donde]] no [[descubrirse|se descubra]])».|a=Anónimo|t=El Cantar de Mio Cid|f=1140|c=libro|p=112}}
;2: {{plm|pasar}} la [[noche]] en algún sitio.<ref name="dle1925" />
{{sinónimo|pernoctar}}.
;3: Descuidarse, obrar en un negocio con menos atención o cuidado de lo que se requiere.<ref name="dle1925" />
{{uso|umcp}} [[descuidarse]].
;4: Dicho de un objeto: caer en el olvido o permanecer en la postergación.<ref name="dle1925" />
;5: Sosegarse o apaciguarse lo que estaba inquieto o alterado.<ref name="dle1925" />
{{uso|utcp}} [[dormirse]].
;6: Dicho de un trompo: bailar con mucha rapidez, sin cabecear ni moverse de un sitio.<ref name="dle1925" />
;7 {{csem|juegos|naipes}}: En ciertos juegos de naipes, como el tresillo, quedar en la baceta alguna carta sin utilizar.<ref name="dle1925" />
;8: Tomarse tiempo para meditar o discurrir sobre cosas que sean objeto de pensamiento.<ref name="dle1925" />
{{uso|generalmente precedido por la preposición “sobre”}}
=== {{verbo transitivo|es}} ===
;9: Lograr que alguien se duerma.<ref name="dle1925" />
{{sinónimo|adormecer}}.
;10: {{plm|engañar}} a alguien para obtener un beneficio.
{{uso|coloquial}}.
{{ámbito|Argentina|Cuba|El Salvador}}.
;11 {{csem|fútbol}}: Al recibir un pase, bajar la pelota a tierra y detenerla completamente.
{{sinónimo|matar}}.
;12: Remojar la ropa con detergente para remover la suciedad.<ref name=damer>{{Damer}}</ref>
{{uso|coloquial}}.
{{ámbito|Bolivia}}.
;13: Sumergir un trozo de carne en una salsa condimentada hasta que se impregne con su sabor.<ref name=damer />
{{uso|coloquial}}.
{{ámbito|Bolivia}}.
;14: Conseguir algo específico.<ref name=damer />
{{uso|coloquial}}.
{{ámbito|Puerto Rico}}.
=== Locuciones ===
*[[dormir a pierna suelta]] o [[dormir como un tronco]]: dormir profundamente.
*[[dormir la mona]]
*[[dormirse en los laureles]]
=== Conjugación ===
{{es.v|paradigma=dormir}}
=== Véase también ===
{{w}}
* [[dormirse]]
=== Traducciones ===
{{trad-arriba}}
{{t|af|a1=1-2|t1=slaap}}
{{t|ain|t1=モコㇿ|tl1=mokor|t2=モコㇽ|tl2=mokor}}
{{t|de|a1=1-2|t1=schlafen}}
{{t|sai-all|a1=1|t1=tiamanen}}
{{t|ast|a1=1-2|t1=dormir}}
{{t|az|a1=1|t1=yatmaq}}
{{t|br|t1=kousket|t2=kouskiñ}}
{{t|bg|a1=1-2|t1=спя|tl=spya}}
{{t|cs|t1=spát}}
{{t|ny|a1=1-2|t1=kugona}}
{{t|da|a1=1-2|t1=sove}}
{{t|sk|t1=spať}}
{{t|sl|a1=1-2|t1=spati}}
{{t|eo|i1=s|t1=dormi}}
{{t|fi|a1=1|t1=nukkua|a2=2|t2=yöpyä}}
{{t|fr|a1=1-2|t1=dormir}}
{{t|fy|a1=1-2|t1=sliepe}}
{{t|gl|a1=1-2|t1=durmir}}
{{t|gwj|a1=1|t1=ǁuma}}
{{t|el|t1=κοιμάμαι|tl=koimámai}}
{{t|hu|a1=1-2|t1=alszik}}
{{t|en|a1=1-2|t1=sleep}}
{{t|it|a1=1-2|t1=dormire}}
{{t|ja|a1=1|t1=寝る|tl1=[[ねる]], neru|a2=1|t2=眠る|tl2=[[ねむる]], nemuru}}
{{t|cmn|t1=睡觉|tl=shuìjiào}}
{{t|arn|a1=1|t1=umagtun|a2=1|t2=umawtun}}
{{t|mrc|a1=1|t1=shmaa}}
{{t|yua|a1=1-2|t1=wenel|a2=1-2|t2=weenel}}
{{t|nci|a1=1|t1=cochi}}
{{t|nl|a1=1-2|t1=slapen}}
{{t|nb|t1=sove}}
{{t|pl|t1=spać}}
{{t|pt|a1=1-2|t1=dormir}}
{{t|quz|a1=1-2|t1=puñuy}}
{{t|rm|a1=1-2|t1=durmir}}
{{t|ro|a1=1-2|t1=dormi}}
{{t|ru|a1=1-2|t1=спать|tl=spat'}}
{{t|sh|t1=спавати|t2=спати|t3=spavati|t4=spati}}
{{t|sv|a1=1-2|t1=sova}}
{{t|uk|t1=спати|tl=spaty}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{verbo intransitivo|ca}} ===
;1: {{plm}}.
=== Conjugación ===
{{ca.v}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}.
=== {{verbo intransitivo|ast}} ===
;1: {{plm}}.
=== Conjugación ===
{{ast.v|alt=ue-u}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr}}
=== Etimología ===
{{etimología|leng=fr}}.
=== {{verbo|fr}} ===
;1: {{plm}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{verbo|oc}} ===
;1: {{plm}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt|fone=durˈmir}}
=== Etimología ===
{{etimología|leng=pt}}.
=== {{verbo|pt}} ===
;1: {{plm}}.
== Referencias y notas ==
<references />
p0cke63tdgu6n0ct4fdzg16oufe7pn0
brigantino
0
3903
6124093
5967382
2026-07-26T04:20:22Z
TMCbot
164594
.
6124093
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|Brigantīnus}}, de ''Brigantĭum''
=== {{adjetivo|es}} ===
{{es.adj}}
;1 {{csem|gentilicios}}: Persona originaria o habitante de [[La Coruña]], en [[España]].
{{uso|utcsma}}
;2: Se dice de algo que proviene o tiene relación con [[La Coruña]], en [[España]].
=== Traducciones ===
{{trad-arriba}}
<!-- formato: {{t+|idioma|<acepción#>|palabra}} p. ej. {{t+|fr|1|voir}} si es sustantivo, indicar el género, p. ej. {{t+|fr|voiture|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}}
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología ===
{{etimología2|leng=pt|Del latín de ''Brigantia''}}
=== {{adjetivo|pt}} ===
{{pt.adj}}
;1 {{csem|gentilicios|leng=pt}}: Persona originaria o habitante de [[Braganza]], en [[Portugal]].
{{uso|leng=pt|utcsma}}
;2: Se dice de algo que proviene o tiene relación con [[Braganza]], en [[Portugal]].
== Referencias y notas ==
<references />
4rak8f6hgvxcewt0rx1kobrzagtkobg
abalienación
0
6091
6123581
5718947
2026-07-25T16:19:30Z
Tmagc
158167
6123581
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=ab-alienación}}
=== Etimología ===
{{etimología|la|abalienatio}}
=== {{sustantivo femenino|es}} ===
{{es.sust}}
;1: Desarreglo o [[deterioro]] mental.
;2: {{plm|enajenación}}.
;3: Entre los romanos enajenación de los bienes que poseían en Italia.<ref name="novísimo">{{Labernia1866}} Pág. 13</ref>
{{uso|anticuado}}
;4: Enfado tedio que se tiene por alguna persona que desagrada.<ref name="novísimo" />
{{uso|anticuado}}
;5: Desabrimiento, aspereza, extrañeza en el trato social.<ref name="novísimo" />
{{uso|anticuado}}
=== Traducciones ===
{{trad-arriba}}
{{t|ca|a1=3|t1=abalienació|g1=f|a2=3|t2=enagenació|g2=f}}
{{trad-abajo}}
== Referencias y notas ==
<references />
30m25bx41lhko8dr90l0f7zpr6avgmb
partir
0
8913
6124025
5946299
2026-07-25T23:36:59Z
Tmagc
158167
/* {{lengua|ca}} */
6124025
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-partir.wav}}
=== Etimología 1 ===
{{etimología|la|partire}}, y este {{etim|la|pars}}, "[[parte]]", {{etim|ine-pro|*pr̥(h₃)tis}}<ref>{{Mallory}}</ref>, en última instancia {{etim|ine-pro|*ph₃r-}}, "[[dividir]]". Compárese el irlandés antiguo {{l+|sga|rann}}, "[[parte]]", el griego antiguo {{l+|grc|περάω}}, "[[vender]]", el lituano {{l+|lt|pir̃kti}}, "[[comprar]]", o el hitita {{l+|hit|pár-ši-ya-az-zi}}, "[[dividir|él divide]]".
==== {{verbo transitivo|es}} ====
;1: {{ucf|hacer}} [[división|divisiones]] en un [[todo]], de tal modo de [[separar]]lo en [[parte]]s.
{{uso|utcp}}: ''[[partirse]]''.
;2: En especial, [[cortar]] un todo en [[dos]] con una única división.
{{sinónimo|hender|rajar}}.
;3: {{plm|dar}} a cada [[miembro]] de un [[grupo]] una [[parte]] de un [[todo]] obtenido en [[común]].
{{sinónimo|distribuir|repartir}}.
;4: Por extensión, [[dividir]] la posesión de una cosa cualquiera.
;5: Por extensión, [[separar]] de acuerdo a las [[característica]]s o [[condición|condiciones]].
;6: En especial, separar un [[grupo]] de [[abeja]]s de una [[colmena]] para [[iniciar]] una [[nueva]].
;7: {{ucf|romper}} la [[capa]] [[duro|dura]] que [[proteger|protege]] algunos [[fruto]]s.
{{sinónimo|cascar}}.
;8: {{ucf|llevar}} un [[asunto]] a su [[fin]].
{{uso|obsoleto}}.
{{sinónimo|acabar|concluir|finalizar|terminar}}.
==== {{verbo intransitivo|es}} ====
;9: {{ucf|comenzar}} una [[marcha]], [[viaje]] u otro [[desplazamiento]].
{{relacionado|irse|salir}}.
;10: {{plm|computar}}, [[desarrollar]] o [[razonar]] desde un [[principio]] o [[antecedente]].
;11: {{ucf|tomar}} una [[decisión]] con respecto a un asunto incierto.
;12: {{plm|eufemismo}} por [[morir]] o [[fallecer]].
{{uso|por extensión}}
==== Conjugación ====
{{es.v}}
==== Locuciones ====
* [[a partir de]]
* [[partir peras]]
==== Refranes ====
* [[el que parte y reparte, saca la mejor parte]]
* [[ni en burlas ni en veras con tu amo partas peras]]
* [[uno parte y el otro reparte]]
==== Información adicional ====
{{derivad|partible|partición|partida|partido|partidismo|partidista|partidor|partidura|partimiento|partirse|partitivo|compartir|departir|despartir|repartir}}.
==== Véase también ====
* [[partirse]]
* [[parte]]
* [[partitura]]
==== Traducciones ====
{{trad-arriba}}
{{t|ca|t1=partir}}
{{t|gl|t1=partir}}
{{t|en|a1=1–2|t1=part|a2=9|t2=depart}}
{{t|it|a1=1–5,9–10|t1=partire}}
{{t|roa-leo|a1=1–7|t1=partire}}
{{t|ro|a1=1-8|t1=divide|a2=9|t2=pleca}}
{{trad-abajo}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}.
==== {{verbo transitivo|ast}} ====
;1: {{plm}}.
==== {{verbo intransitivo|ast}} ====
;2: {{plm}}.
==== Conjugación ====
{{ast.v}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|partire}}, y este de {{l+|la|pars}}, "[[parte]]", del protoindoeuropeo {{l+|ine-pro|*pr̥(h₃)tis}}, en última instancia de la raíz {{l+|ine-pro|*ph₃r-}}, "[[dividir]]".
==== {{verbo intransitivo|ca}} ====
;1: {{ucf}}, [[marchar]], [[irse]].
;2: {{ucf}}, [[comenzar]].
;3: {{ucf|salir}}.
;4: {{ucf|morir}}.
==== {{verbo transitivo|ca}} ====
;5: {{ucf}}, [[dividir]], [[hender]].
;6: {{ucf}}, [[quebrar]], [[romper]].
;7: {{ucf}}, [[repartir]].
==== Conjugación ====
{{ca.v}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr}}
=== Etimología 1 ===
{{etimología|leng=fr|frm|partir}}, y este del antiguo {{l+|fro|partir}}, a su vez del latín {{l+|la|partire}}, y este de {{l+|la|pars}}, "[[parte]]", del protoindoeuropeo {{l+|ine-pro|*pr̥(h₃)tis}}, en última instancia de la raíz {{l+|ine-pro|*ph₃r-}}, "[[dividir]]".
==== {{verbo intransitivo|fr}} ====
;1: {{ucf}}, [[marchar]], [[irse]].
;2: {{ucf}}, [[comenzar]].
;3: {{ucf|salir}}.
;4: {{ucf|morir}}.
{{uso|eufemismo|leng=fr}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología 1 ===
{{etimología|leng=gl|la|partire}}, y este de {{l+|la|pars}}, "[[parte]]", del protoindoeuropeo {{l+|ine-pro|*pr̥(h₃)tis}}, en última instancia de la raíz {{l+|ine-pro|*ph₃r-}}, "[[dividir]]".
==== {{verbo transitivo|gl}} ====
;1: {{ucf}}, {{l|es|dividir}}, {{l|es|hender}}.
;2: {{ucf}}, {{l|es|repartir}}.
==== Conjugación ====
{{gl.v}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|partir|1s|pron={{l|gl|eu}}|futuro|subjuntivo|leng=gl}}.
{{uso|leng=gl|anticuado}}.
;2: {{forma verbo|partir|3s|pron={{l|gl|ela}}, {{l|gl|el}}; {{l|gl|vostede}}, [[segunda persona|2ª pers.]]|futuro|subjuntivo|leng=gl}}.
{{uso|leng=gl|anticuado}}.
;3: {{forma verbo|partir|1s|pron={{l|gl|eu}}|infinitivo conjugado|leng=gl}}.
;4: {{forma verbo|partir|3s|pron={{l|gl|ela}}, {{l|gl|el}}; {{l|gl|vostede}}, [[segunda persona|2ª pers.]]|infinitivo conjugado|leng=gl}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología 1 ===
{{etimología|leng=oc|la|partire}}, y este de {{l+|la|pars}}, "[[parte]]", del protoindoeuropeo {{l+|ine-pro|*pr̥(h₃)tis}}, en última instancia de la raíz {{l+|ine-pro|*ph₃r-}}, "[[dividir]]".
==== {{verbo intransitivo|oc}} ====
;1: {{ucf}}, [[marchar]], [[irse]].
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología 1 ===
{{etimología|leng=pt|la|partire}}, y este de {{l+|la|pars}}, "[[parte]]", del protoindoeuropeo {{l+|ine-pro|*pr̥(h₃)tis}}, en última instancia de la raíz {{l+|ine-pro|*ph₃r-}}, "[[dividir]]".
==== {{verbo intransitivo|pt}} ====
;1: {{ucf}}, [[marchar]], [[irse]].
;2: {{ucf|salir}}.
;3: {{ucf|temblar}}.
==== {{verbo transitivo|pt}} ====
;4: {{ucf}}, [[dividir]], [[hender]].
;5: {{ucf}}, [[distribuir]], [[repartir]].
==== Conjugación ====
{{pt.v}}
== Referencias y notas ==
<references />
ay5s9iatcyof4h2c6c1vcgpdcbj3kyy
llevar
0
9026
6123998
6063202
2026-07-25T22:37:31Z
Tmagc
158167
6123998
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
{{ampliable}}
=== Etimología 1 ===
{{etimología|la|levāre|levantar}}.
==== {{verbo transitivo|es}} ====
;1: Trasladar algo o a alguien desde un lugar hacia otro separado en el espacio.
;2: Traer puesta una pieza de ropa o efectos personales; o lucir un corte de cabello, maquillaje, etc.
{{sinónimos|usar|ocupar|nota2=Chile, México}}
{{ejemplo|''Llevaba'' un pantalón azul y una camisa blanca.}}
{{ejemplo|''Llevaba'' el pelo corto y gafas de sol.}}
;3: Conducir hacia un lugar o destino.
{{ejemplo|Todos los caminos ''llevan'' a Roma.}}
;4: Por extensión, conducir hacia una conclusión.
;5: Soportar, tolerar o sufrir una situación.
{{ejemplo|Lo ha ''llevado'' con calma.}}
;6: Dirigir o administrar un negocio.
{{ejemplo|Ha sabido ''llevar'' el negocio familiar.}}
==== {{verbo auxiliar|es}} ====
;7: (junto con gerundio) Transcurrir un período de tiempo.
{{ejemplo|''Llevo'' dos meses esperando.}}
==== Locuciones ====
*[[llevar adelante]] algo: Realizar una tarea, cumplirla.
*[[llevar a cabo]] algo: (Ver [[cabo]]) Realizar algo, concluirlo.
*[[llevarlas bien]]: Llevarse bien.
*[[llevar las de perder]]: Tener pocas probabilidades de éxito. Estar en desventaja.
*[[llevar lo mejor]]: Sacar ventaja o provecho.
*[[llevar por delante]] algo: Tener presente ese algo cuando se obra.
*[[lleva y trae]]: Dícese de una persona que difunde chismes.
*[[llevar el diablo|llevar(se) el diablo]], o los diablos, a alguien: (Ver [[diablo]]) Enfadarse.
*[[llevar palo]]: sufrir una golpiza.
*¡[[me lleva]]!: Interjección utilizada cuando algo no sale según lo planeado. Es una frase corta en el mismo sentido de: ''Me lleva la gran puta''.
*[[no llevarlas todas consigo]]
*[[pasar a llevar]]: Atropellar o irrespetar a las personas.
*[[pasarse llevando]]: Atropellar, o tropezarse con algo o alguien.
*[[te la llevarí]], te la llevarí, te la llevará: Expresión que forma parte del acompañamiento oral de la cueca chilena, precediendo algunas estrofas.
==== Conjugación ====
{{es.v}}
==== Véase también ====
*[[llevarse]]
==== Traducciones ====
{{trad-arriba}}
{{t|de|a1=1|t1=hinbringen|a2=1|t2=mitbringen|a3=2|t3=tragen|a4=2|t4=anhaben|a5=3|t5=zubringen|a6=3|t6=führen|a7=5|t7=ertragen|a8=6|t8=leiten|a9=6|t9=führen|a10=7|t10=dauern}}
{{t|br|a1=1|t1=dougen}}
{{t|cs|a1=1|t1=nést|t2=vézt}}
{{t|fr|a1=1|t1=amener|a2=1|t2=emmener|a3=1|t3=emporter|a4=2|t4=porter|a5=3|t5=mener|a6=5|t6=supporter|a7=5|t7=endurer|a8=6|t8=mener|a9=7|t9=avoir}}
{{t|he|t1=להביא}}
{{t|he|t1=לסחוב}}
{{t|el|a1=2|t1=φορώ|a2=3|t2=οδηγώ|a3=7|t3=περνώ}}
{{t|arn|a1=1|t1=küpalün}}
{{t|yua|a1=1|t1=bis}}
{{t|mn|i1=s|t1=авчрах|t2=авах}}
{{t|pt|t1=levar}}
{{t|ine-pro|t1=*bʰéreti}}
{{t|ru|a1=1-2|t1=носить|a2=3|t2=вести|a3=7|t3=проводить|a4=7|t4=занимать}}
{{t|sa|i1=s|t1=वहति}}
{{t|sc|a1=1|t1=bogare}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
m06zwwtbm4anaeyxgyhags7exvhtfn6
computar
0
10485
6124097
5807331
2026-07-26T04:20:28Z
TMCbot
164594
.
6124097
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|computare}}
=== {{verbo transitivo|es}} ===
;1: [[Contar]] o [[calcular]] algo mediante la utilización de [[número]]s
;2: [[Sumar]] o [[medir]]
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
<!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} -->
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|pt}} ==
{{pron-graf|leng=pt|fone=ko˜puˈtaR}}
=== Etimología ===
{{etimología|leng=pt}}.
==== {{verbo transitivo|pt}} ====
;1: {{plm}}.
==== Conjugación ====
{{pt.v}}
== Referencias y notas ==
<references />
403aoakr63rkyqm9gmf5flzdv0b1rqy
abarrancar
0
12603
6123587
6020632
2026-07-25T16:52:19Z
Tmagc
158167
/* Etimología */
6123587
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|confijo|a|barranco|ar}}
=== {{verbo transitivo|es}} ===
;1 {{csem|topografía}}: Formar [[barranco]]s en un terreno por la acción de la [[erosión]] o de los elementos
;2: Meter en un barranco una persona o cosa
{{uso|utcp}}
;3: {{plm|vararar}}, [[encallar]], [[atascar]] una embarcación
{{uso|utcp}}
=== {{verbo pronominal|es}} ===
;4: Meterse o hallarse en un negocio o situación del que no es posible salir fácilmente
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{t|ca|a1=1|t1=abarrancar}}
{{t|pt|a1=1,2|t1=abarrancar}}
{{trad-abajo}}
== Referencias y notas ==
<references />
3470hlj9fxbtrbaphttcplumgmehluk
evacuar
0
13627
6123995
5909251
2026-07-25T22:27:25Z
Tmagc
158167
6123995
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología 1 ===
{{etimología|la|evacuo|alt=ēvacuō, ēvacuāre|vaciar}}.
==== {{verbo transitivo|es}} ====
;1: {{plm|desalojar}} o [[abandonar]] un lugar rápidamente, a menudo debido a una emergencia.
{{sinónimo|abandonar|desalojar}}.
;2: {{plm|sacar}} a un herido, [[enfermo]] o persona en [[peligro]] hacia un hospital, centro de atención o lugar seguro.
{{sinónimo|llevar|sacar|trasladar}}.
;3: {{plm|desocupar}} una cosa.
{{sinónimo|desembarazar|desocupar}}.
;4: {{plm|retirarse}} una fuerza militar de ocupación de los territorios que controlaba.
{{sinónimo|abandonar|desalojar}}.
;5: {{plm|expulsar}} del [[cuerpo]] las [[hez|heces]] de la [[digestión]].
{{wikisauro|defecar}}
{{sinónimo|expeler|defecar|deponer|cagar|mear|orinar|hacer de vientre|hacer pis}}.
;6 {{csem|derecho}}: {{plm|consumar}} un [[trámite]] o [[diligencia]].<ref name="drae1925">{{DLE1925}}</ref>
{{sinónimo|cumplir|desempeñar|realizar}}.
{{ejemplo|''evacuar'' un informe.}}
==== Conjugación ====
{{es.v}}
==== Información adicional ====
{{derivad|evacuación|evacuado|evacuante|evacuativo|evacuatorio}}.
==== Traducciones ====
{{trad-arriba}}
{{t|de|a1=1-2|t1=evakuieren}}
{{t|fr|a1=1-2|t1=évacuer}}
{{t|en|a1=1-4|t1=evacuate}}
{{t|sv|a1=1-2|t1=evakuera}}
{{trad-abajo}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}.
==== {{verbo transitivo|ast}} ====
;1: {{plm}}.
==== Conjugación ====
{{ast.v}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
hvs022ssdzen88qb8al608whbxvlrbr
e
0
18202
6124135
6057483
2026-07-26T04:21:20Z
TMCbot
164594
.
6124135
wikitext
text/x-wiki
{{desambiguación|é|ẽ|е|ҽ|℮|ℯ|ⅇ|ꬲ|𝐞|𝑒|𝒆|𝓮|𝔢|𝕖|𝖊|𝖾|𝗲|𝘦|𝙚|𝚎|e|ë|ɘ|ə|ɚ|ё|e-|-e|-e-|-é}}
{{mostrar-unicode}}
== {{lengua|mul}} ==
{{pron-graf|leng=mul|pron=no}}
=== Etimología 1 ===
{{etimología|leng=mul}}.
==== {{símbolo|mul}} ====
;1 {{csem|leng=mul|matemática}}: Símbolo de la constante de Euler.
=== Etimología 2 ===
{{etimología|leng=mul}}.
==== {{símbolo|mul}} ====
;2 {{csem|leng=mul|física}}: Símbolo de la constante (positiva) de la carga del electrón.
=== Etimología 3 ===
{{etimología|leng=mul}}.
==== {{símbolo|mul}} ====
;1 {{csem|filosofía|lógica}}: En la escuela de lógica escolástica, símbolo utilizado para representar una afirmación universal negativa.
{{ejemplo|La afirmación “S'''e'''P” equivale a “Todos los x que tienen la propiedad S no pueden tener la propiedad P”.}}
== {{lengua|es}} ==
{{pron-graf|1audio1=E sp.ogg}}
=== Etimología 1 ===
{{etimología}}.
==== {{letra|es}} ====
;1: {{impropia|Quinta [[letra]] del alfabeto español y segunda vocal}}.
==== {{sustantivo femenino|es}} ====
{{es.sust|irreg|p=es|p2=ees}}
;2: {{plm|nombre}} de la letra e{{-sub|1}}.
{{uso|minúscula}}.
{{relacionado|E|nota=mayúscula}}.
==== Véase también ====
{{w}}
{{alfabeto español}}
==== Traducciones ====
{{trad-arriba}}
{{t|ast|a1=2|t1=e}}
{{trad-abajo}}
=== Etimología 2 ===
{{etimología|la|et}}, {{etim|ine-pro|héti}}.
==== {{conjunción|es}} ====
;1: {{variante|y}}, usada delante de una palabra que comienza por ''i'' o ''hi''.
== {{lengua|az}} ==
{{pron-graf|leng=az}}
[[Categoría:AZ:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=az}}.
==== {{letra|az}} ====
;1: {{impropia|Sexta [[letra]] y segunda [[vocal]] del [[alfabeto]] azerí}}.
{{uso|leng=az|minúscula}}.
{{relacionado|leng=az|E|nota=mayúscula}}.
{{alfabeto azerí}}
== {{lengua|br}} ==
{{swadesh|br|201e}}
{{pron-graf|leng=br}}
=== Etimología 1 ===
{{etimología|leng=br}}.
==== {{adjetivo posesivo|br}} ====
;1: {{plm|su}} (de él).
{{uso|leng=br|Provoca mutación suave}}.
=== Etimología 2 ===
{{etimología|leng=br}}.
==== {{preposición|br}} ====
;1: {{plm|en}}.
{{uso|leng=br}} Delante de vocal, ''h-'', ''d-'', ''n-'' y ''t-'', toma la forma {{l+|br|en}}
==== Información adicional ====
{{derivad|e-barzh}}
==== Inflexión ====
{{inflect.br.prep|1pl=ennomp|1sg=ennon|2pl=ennoc'h|2sg=ennout|3pl=enno|3sgf=enni|3sgm=ennañ|imp=ennor}}
=== Etimología 3 ===
{{etimología|leng=br}}.
==== {{partícula|br|verbo}} ====
;1: ''Introduce el verbo cuando el sujeto o el complemento directo no lo preceden''.
{{uso|leng=br|Provoca mutación mixta|ante vocal se usa la forma {{l+|br|ec'h}}}}.
{{relacionado|leng=br|a|ne}}
== {{lengua|sl}} ==
{{pron-graf|leng=sl}}
[[Categoría:SL:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=sl}}.
==== {{letra|sl}} ====
;1: {{impropia|Sexta letra del abecedario esloveno y segunda vocal}}.
{{uso|leng=sl|minúscula}}.
{{relacionado|leng=sl|E|nota=mayúscula}}.
{{cohipónimo|leng=sl|a|b|c|č|d|e|f|g|h|i|j|k|l|m|n|o|p|r|s|š|t|u|v|z|ž}}.
==== Véase también ====
{{w|leng=sl}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr|ayuda=e}}
[[Categoría:FR:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=fr}}.
==== {{letra|fr}} ====
;1: {{impropia|Quinta letra y segunda vocal del alfabeto francés}}.
{{uso|leng=fr|minúscula}}.
{{relacionado|leng=fr|E|nota=mayúscula}}.
{{cohipónimo|leng=fr|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z}}.
==== Véase también ====
{{w|leng=fr}}
== {{lengua|gd}} ==
{{swadesh|gd|003e}}
{{pron-graf|leng=gd}}
=== Etimología 1 ===
{{etimología|leng=gd}}.
==== {{pronombre personal|gd}} ====
;1: {{plm|él}}, [[lo]], [[le]].
{{uso|leng=gd}} Para dar énfasis se utiliza [[esan]]
== {{lengua|roa-opt}} ==
{{pron-graf|leng=roa-opt}}
=== Etimología 1 ===
{{etimología|la|et}}.
==== {{conjunción|gl}} ====
;1: {{plm|y}}.
==== Descendientes ====
{{trad-arriba|Descendientes}}
{{d|gl|d1=e|niv=1}}
{{d|pt|d1=e|niv=1}}
{{trad-abajo}}
== {{lengua|cy}} ==
{{pron-graf|leng=cy}}
=== Etimología 1 ===
{{etimología|leng=cy}}.
==== {{pronombre personal|cy}} ====
;1: {{plm|él}}, [[lo]], [[le]].
{{sinónimos|leng=cy|fe|ef|fo|o}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología 1 ===
{{etimología|leng=gl|roa-opt|e}}, y este del latín {{l+|la|et}}.
==== {{conjunción|gl}} ====
;1: {{plm|y}}.<ref>{{DRAG}}</ref>
{{ejemplo|Ti periña '''e''' eu mazán, ti bonito '''e''' eu hermosa, casarémonos mañá.|trad= Tú, Periña, y yo, Mazán, tú, bonito, y yo, hermosa, nos casamos mañana.}}
;2: {{plm}}.
== {{lengua|gn}} ==
{{pron-graf|leng=gn|1fone1=e}}
[[Categoría:GN:Alfabeto]]
=== Etimología 1 ===
{{l|gn|es}}.
==== {{letra|gn}} ====
;1: {{impropia|Cuarta [[letra]] del [[achegety]] o [[alfabeto]] guaraní y la segunda de sus [[vocal]]es}}.
{{uso|leng=gn|minúscula}}.
{{relacionado|leng=gn|E|nota=mayúscula}}.
{{cohipónimos|leng=gn|a|ã|ch|e|ẽ|g|g̃|h|i|ĩ|j|k|l|m|mb|n|nd|ng|nt|ñ|o|õ|p|r|rr|s|t|u|ũ|v|y|ỹ|'|}}.
==== {{sustantivo|gn}} ====
;2: {{plm|nombre}} de la letra e.
==== Véase también ====
{{w|leng=gn}}
== {{lengua|en}} ==
{{pron-graf|leng=en|1fono1=iː}}
[[Categoría:EN:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=en}}.
==== {{letra|en}} ====
;1: {{impropia|Quinta letra y segunda vocal del abecedario inglés}}.
{{uso|leng=en|minúscula}}.
{{relacionado|leng=en|E|nota=mayúscula}}.
{{cohipónimo|leng=en|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z}}.
==== Véase también ====
{{w|leng=en}}
== {{lengua|it}} ==
{{pron-graf|leng=it}}
[[Categoría:IT:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=it}}.
==== {{letra|it}} ====
;1: {{impropia|Quinta letra y segunda vocal del abecedario italiano}}.
{{uso|leng=it|minúscula}}.
{{relacionado|leng=it|E|nota=mayúscula}}.
{{cohipónimo|leng=it|a|b|c|d|e|f|g|h|i|l|m|n|o|p|q|r|s|t|u|v|z|nota21=las letras ''j'', ''k'', ''w'', ''x'' e ''y'' aparecen pero son consideradas letras extranjeras, ya que se usan sobre todo para palabras provenientes de otros idiomas}}.
==== Véase también ====
{{w|leng=it}}
=== Etimología 2 ===
{{etimología|leng=it|la|et}}.
==== {{conjunción|it}} ====
;1: {{plm|y}}.
{{uso|leng=it|cuando la palabra siguiente comienza por vocal, se cambia por {{l+|it|ed}}}}.
{{sinónimos|leng=it|ed}}
== {{lengua|alc}} ==
{{pron-graf|leng=alc|v1=ei}}
[[Categoría:ALC:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=alc}}.
==== {{letra|alc}} ====
;1: {{impropia|Quinta letra y tercera vocal del abecedario kawésqar}}.
{{uso|leng=alc|minúscula}}.
{{relacionado|leng=alc|E|nota=mayúscula}}.
{{cohipónimo|leng=alc|a|æ|č|c'|e|f|h|i|j|k|k'|l|m|n|o|p|p'|q|r|rr|s|t|t'|u|w|x}}.
==== {{sustantivo|alc}} ====
;2: {{plm|nido}}.
== {{lengua|la}} ==
{{pron-graf|leng=la}}
=== Etimología 1 ===
{{etimología}}.
==== {{preposición de ablativo|la}} ====
;1: {{variante|leng=la|ex}}
{{uso|leng=la|ante consonante inicial}}
== {{lengua|lfn}} ==
{{pron-graf|leng=lfn}}
=== Etimología ===
{{etimología|leng=lfn}}.
=== {{conjunción|lfn}} ===
;1: {{plm|y}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología 1 ===
{{etimología|leng=oc|la|et}}.
==== {{conjunción|oc}} ====
;1: {{plm|y}}.
== {{lengua|ppi}} ==
{{pron-graf|leng=ppi}}
=== Etimología 1 ===
{{etimología|leng=ppi}}.
==== {{conjunción|ppi}} ====
;1: {{plm|y}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología 1 ===
{{etimología|leng=pt|la|et}}.
==== {{conjunción|pt}} ====
;1: {{plm|y}}.
== {{lengua|nai-tip}} ==
{{pron-graf|leng=nai-tip}}
=== Etimología 1 ===
{{etimología|leng=nai-tip}}.
==== {{conjunción|nai-tip}} ====
;1: {{plm|y}}.
== {{lengua|tok}} ==
{{pron-graf|leng=tok}}
=== Etimología ===
{{etimología2|leng=tok|A priori}}.
=== {{partícula|tok}} ===
;1: Precede al objeto directo
;2: {{plm|y}} (entre múltiples objetos directos)
== {{lengua|vo}} ==
{{pron-graf|leng=vo}}
=== Etimología 1 ===
{{etimología|leng=vo}}.
==== {{conjunción|vo}} ====
;1: {{plm|y}}.
== {{lengua|yag}} ==
{{pron-graf|leng=yag|1fone1=e}}
[[Categoría:YAG:Alfabeto]]
=== Etimología 1 ===
{{etimología|leng=yag}}.
==== {{letra|yag}} ====
;1: {{impropia|Cuarta [[letra]] y tercera [[vocal]] del [[alfabeto]] yagán}}.
{{uso|leng=yag|minúscula}}.
{{relacionado|leng=yag|E|nota=mayúscula}}.
{{cohipónimo|leng=yag|a|æ|ch|e|ö|f|h|i|j|k|l|m|n|o|p|r|rh|s|š|t|u|w|x}}
== Referencias y notas ==
<references />
lwvyt2cdb41ra23u3vdf2m3q3t9a2wb
posestructuralismo
0
18276
6123982
5463057
2026-07-25T21:02:46Z
Tmagc
158167
6123982
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-estructuralismo}}
=== Etimología 1 ===
{{etimología|prefijo|pos|estructuralismo}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|historia|filosofía}}: trabajos de una serie de filósofos y teóricos críticos de la región continental francesa de mediados del siglo XX que se consagraron internacionalmente en los años 1960 y 1970.
==== Véase también ====
{{w}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
p8x45tekbm8ovqgbnpksyx1xj4mhaoz
correr
0
18581
6124012
6052574
2026-07-25T23:14:42Z
Tmagc
158167
6124012
wikitext
text/x-wiki
{{desambiguación|córrer}}
== {{lengua|es}} ==
{{pron-graf|1audio1=LL-Q1321 (spa)-Art.link.today-correr.wav}}
[[Archivo:Flickr_cc_runner_wisconsin_u.jpg|thumb|right|Un atleta corriendo]]
[[Categoría:ES:Tiempo]]
=== Etimología 1 ===
{{etimología|la|currere}}.
==== {{verbo intransitivo|es}} ====
;1: Desplazarse rápidamente sobre el suelo mediante el movimiento alternado de las piernas o de las patas.
;2: Desplazarse rápidamente de cualquier otra forma, un vehículo, cosa o ser.
{{ejemplo|Mi auto corre a 290 km por hora.}}
{{ejemplo|Unas nubecillas corrían por el cielo.}}
;3: Apresurarse en hacer algo.
{{ejemplo|Corrió a saludar a su madre.}}
;4: Tener prisa, estar muy ocupado en una actividad.
{{sinónimos|ajetrearse|darse prisa}}.
{{antónimo|relajarse}}.
{{ejemplo|Una nueva prueba de estar meados por los elefantes, de no tener suerte, de esforzarse para nada, de correr y correr para quedar de todos modos afuera.|c=libro|t=Dios era argentino|a=Patricia Odriozola|f=2006|editorial=Nueva Generacion}}
;5: {{plm|fluir}}, moverse un [[fluido]]: [[líquido]] o [[gas]].
{{ejemplo|WALTER.-Sangre he visto correr, y mucha. JACOBO.-Y aun has ayudado a que corriese. ¿No es así, Walter? WALTER.-A veces; siempre que lo exigió la religión; cuando lo apeteció la venganza. JACOBO.-«Correr» no es «circular»; es lo contrario. WALTER.-¿Pues por dónde circula? JACOBO.-A lo que yo comprendo, por dentro de toda tu máquina; ahora mismo y aprisa, por tu cerebro, en esa danza de picota de que hace poco te doliste.|c=libro|a=José Echegaray|t=La muerte en los labios}}
;6: Con referencia a un [[rumor]], noticia, fama: extenderse o [[propagar]]se.
{{ejemplo|Pero esto no era lo peor, sino la aprensión que metían a los vecinos y las voces que hacían correr y lo que decían en los periódicos de la localidad.|c=libro|a=Alas Leopoldo Clarín|t=Cuervo}}
;7: Estar en marcha un mecanismo móvil.
{{sinónimos|funcionar}}.
{{ejemplo|Apresúrate, el reloj está corriendo.}}
;8: Ir o extenderse de un lugar a otro.
{{ejemplo|La Cordillera de Los Andes corre desde Panamá hasta la Tierra del Fuego.}}
;9: Extenderse o dirigirse un río en una dirección.
{{ejemplo|El Orinoco corre hacia el Atlántico.}}
;10: Haber o soplar el viento o el aire.
{{ejemplo|Este viento corre del Suroeste.}}
;11: Perseguir algo con entusiasmo.
{{ejemplo|Correr detrás de una hermosa muchacha.}}
{{ejemplo|Correr tras un ascenso.}}
;12: Asumir una tarea o responsabilidad.
{{ejemplo|Yo corro con los gastos del hogar, mi esposa no trabaja.}}
;13: Transcurrir el tiempo, los plazos y unidades con las que lo medimos: segundos, días, meses, años, etc..
{{ejemplo|Al fin pensó que el tiempo había cesado de correr y que había empezado la eternidad; comenzó, a su pesar, a adormilarse; el reloj dio las once, pero no lo oyó.|c=libro|t=Las Aventuras de Tom Sawyer|a=Mark Twain}}
{{ejemplo|Casanova, sin embargo, no se entrega fácilmente: sigue yendo al frente, cabecea, se encorva, mueve las piernas. Los rounds comienzan a correr y la magia opera de nuevo. Mientras el recinto se va convirtiendo en <>, Freddie Miller comienza a recibir la peor paliza de su vida: la campana del noveno round lo sorprende.|c=libro|t=Casanova, señor de las moscas|a=Héctro Mauleón}}
;14: Devengarse sueldo o emolumentos.
{{ejemplo|Pago impuestos sobre los intereses corridos.}}
;15: Recorrer, extenderse de una parte a otra del cuerpo, una sensación como un dolor, escalofrío, calor, emoción, etc.
{{ejemplo|175 La alma heroica del guerrero siente el gozo lisonjero por sus miembros doloridos correr, y que sus sentidos libres de ilusión están.|c=libro|t=La cautiva|a=Esteban Echeverría|f=2000}}
;16: Ser considerado normal y admisible en el uso y costumbres.
{{ejemplo|Dígolo porque esté advertido que mientras nuestros dueños riñeren, nosotros también hemos de pelear y hacernos astillas. Esa costumbre, señor escudero respondió Sancho, allá puede correr y pasar con los rufianes y peleantes que dice, pero con los escuderos de los caballeros andantes, ni por pienso.|c=libro|t=El ingenioso hidalgo Don Quijote de la Mancha|a=Miguel de Cervantes Saavedra|f=19??|oclc=1046032782}}
;17: Ir a hacer una cosa sin medir los alcances o consecuencias.
{{sinónimos|precipitarse}}.
{{ejemplo|[...] la decisión inesperada de éste de solicitar para mujer a la Rocío, cuando hacerlo era correr a un enganche seguro con el temible baratero de Sevilla.|c=libro|t=El niño de los Caireles|a=Arturo Reyes|f=1908|oclc=433100072}}
;18: Ir en derechura hacia una catástrofe o daño.
{{sinónimos|deslizarse}}.
{{ejemplo|¿Qué hacemos con mandar a Buenos Aires una pequeña parte de nuestros productos y con traer al sur unos pocos cajones de mercaderías? Vegetar esperando tiempos mejores, o dar extemporáneo impulso a nuestros negocios y correr a la ruina.|c=libro|t=La Australia Argentina|a=Roberto J. Payró|f=1898}}
;19: Efectuarse sin contratiempos el pago de un salario.
{{ejemplo|El salario corre durante el disfrute de las mismas, las vacaciones no interrumpen ni suspenden la relación laboral.|c=pagina|t=Poder Judicial de Costa Rica - Inicio/Poder Judicial|u=http://www.poder-judicial.go.cr/salasegunda/jurisprudencia/sentencias/Laboral/1991/91-098.doc}}
;20: Ser válido, tener vigencia durante el período de tiempo considerado.
{{ejemplo|Por otra parte, conviene precisar a partir de qué fecha empezará a correr el plazo: ¿empezará éste a correr a partir de la fecha de recepción de la petición de respuesta por escrito formulada por el Comité, un grupo de trabajo o un relator especial?|c=pagina|t=unhchr.ch - unhchr Resources and Information.|u=http://www.unhchr.ch/tbs/doc.nsf/}}
;21: Postular a un cargo electivo.
{{ámbito|Puerto Rico}}.
;22: Tener la responsabilidad de pagar, cuidar o despachar un asunto.
{{sinónimos|corresponder|tocar}}.
{{ejemplo|El peticionario, deberá correr con todos los gastos derivados de la instalación.}}
;23: Acudir a alguien en busca de protección o favor.
{{sinónimos|recurrir}}.
==== {{verbo transitivo|es}} ====
;24: {{plm|desplazar}} algo a otro sitio.
{{ejemplo|Corre el florero a la derecha, que me tapa la televisión.}}
;25: Mover hacia un lado, soltar o recoger una cortina, para cubrir o para descubrir una ventana.
;26: Conducir un vehículo en una carrera.
{{sinónimos|conducir|manejar|pilotar}}.
{{ejemplo|Schuhmacher corría un Ferrari.}}
;27: Montar un caballo en una carrera.
{{sinónimos|montar}}.
{{ejemplo|Correr una potranca.}}
;28: Hacer frente a un riesgo, a una situación que compromete la seguridad, bienestar o salud.
{{ejemplo|Yo pienso que solamente los inminentes peligros que ambos partidos van a correr, y la ocupación urgente de sus intereses inmediatos, no más, los harán descuidar momentáneamente esta medida.|c=libro|t=La esperanza del universo|a=Simón Bolívar}}
;29: Ir tras alguno, persona o animal, y atacarlo sin darle tregua.
{{sinónimos|acosar|corretear|nota2=Venezuela|perseguir}}.
{{ejemplo|de lo cual es muy notorio fueran ocasion los cristianos por los ir á correr y hacer guerra, tomándolos por esclavos á ellos y á sus mujeres é hijos por las partes donde los frailes estaban convirtiendo.|editor=Colección del señor Uguina|c=libro|a=Manuel José Quintana|t=Vida de los españoles célebres|vol=9|t3=Representación del contador real que fue con Casas a Cumaná}}
;30: Desplazar, mover una pintura, cosmético, tinta.
{{uso|utcp}}
{{ejemplo|Correr involuntariamente la tinta húmeda con el puño.}}
;31: Recorrer espacio, territorio.
{{ejemplo|[...] y otrosí les conviene que sepan muy bien la tierra que han de correr, y dónde han de enviar las algaras.|c=pagina|t=Alfonso el Sabio (1221 - 1284)|f=2002-10-30|u=https://web.archive.org/web/20021030072030/http://www.hnh.com/composer/Alfonso.htm}}
;32 {{csem|informática}}: Hacer funcionar un [[sistema operativo]] sobre determinado hardware.
{{ejemplo|Leí un articulo muy bueno sobre correr Windows en una Mac.}}
;33 {{csem|informática}}: Hacer funcionar un programa en un entorno determinado.
{{ejemplo|Correr un ejecutable (exe) en visual foxpro8.}}
;34: Hacer evacuar, desocupar, abandonar un lugar.
{{sinónimos|desalojar}}.
{{ejemplo|Uno de ellos relacionado con la amenaza de desalojo de los artesanos de Chichén Itzá. "Nos quieren correr de ahí porque el gobierno pretende privatizar ese espacio que nos pertenece legítimamente.|c=pagina|t=CGT Chiapas|f=2007-11-21|u=https://web.archive.org/web/20071121191912/http://www.cgtchiapas.org/article.php3?id_article}}
;35: Echar del trabajo.
{{sinónimos|despedir|licenciar|echar}}.
{{ejemplo|me acaban de correr del trabajo y no me pagan la liquidacion.|c=pagina|t=Anafinet, A.C. • Ver Tema - me acaban de correr del trabajo y no me pagan la liquidacion|f=2012-01-07|u=https://web.archive.org/web/20120107131541/http://www.anafinet.org/foro/viewtopic.php?t}}
;36: {{plm|persuadir}}, [[convencer]], lograr que alguien cambie de parecer.
{{ámbito|Argentina}}
;37: {{plm|intimidar}}, [[amedrentar]].
{{ámbito|Argentina}}
==== Locuciones ====
{{trad-arriba|Locuciones con «correr»}}
*[[al correr de la pluma]]
*[[al correr del tiempo]]
*[[a más correr]]
*[[apretar a correr]]
*[[a todo correr]]
*[[a todo turbio correr]]
*[[correr alcancías]]
*[[correr como la pólvora]]
*[[correr como un venado]]
*[[correr con los gastos]]
*[[correr de boca en boca]]
*[[correrla]]
*[[correr la arruga]]: Quitarse un problema de encima, quedar libre de polvo y paja. (Venezuela)
*[[correr la bola]]
*[[correr la coneja]]
*[[correr la liebre]]
*[[correr la voz]]
*[[correr mundo]]
*[[correr parejas]]
*[[correr peligro]]
*[[correr prisa]]
*[[correr ríos de tinta]]
*[[correr sangre]]
*[[corrérsele las tejas]]
*[[corrérsele una teja]]
*[[correrse una juerga]]: Irse de [[juerga]].
*[[correr tinta]]
*[[correr un velo]]
*[[corrido como una mona]]
*[[dejar correr]] un asunto: Despreocuparse de él, abandonarlo sin ocuparse de sus consecuencias.
*[[dejar correr la pluma]]
*[[echar a correr]]: Emprender la carrera, comenzar a correr, apresurarse.
*[[fíate de la Virgen y no corras]] Expresión con la que se muestra [[desconfianza]].
*[[hacer correr la voz]]
*[[hacer correr una petición]]: Hacerla circular entre los posibles firmantes para obtener su apoyo.
*[[horario corrido]]
*[[tener la teja corrida]]
*[[toro corrido]]
{{trad-abajo}}
==== Refranes ====
* {{l|es|agua que no has de beber, déjala correr}}
* {{l|es|el que menos corre, vuela}} / {{l|es|el que no corre, vuela}}
* {{l|es|más corre el galgo que el mastín; pero si el camino es largo, más corre el mastín que el galgo}}
==== Conjugación ====
{{es.v}}
==== Información adicional ====
{{derivad|correcalles|correcaminos|correcorre|corredera|corredero|corredizo|corredor|corredora|corredoría|corredura|correduría|correncia|correndilla|correpasillos|correntada|correlón|correlimos|correturnos|correncía|correntiar|correntino|correntío|correntón|correntoso|correría|correrse|corretaje|corretear|correteo|correvedile|correveidile|correverás|corrida|corridamente|corrido|corriente|corrientemente|corrimiento|corriverás|descorrer|recorrer|socorrer}}.
==== Véase también ====
{{w}}
*[[correrse]]
==== Traducciones ====
{{trad-arriba}}
{{t|af|t1=hardloop}}
{{t|de|t1=rennen|t2=laufen}}
{{t|az|a1=1|t1=qaçmaq}}
{{t|bm|t1=boli}}
{{t|br|a1=1|t1=redek}}
{{t|bg|t1=тичам|t2=бягам}}
{{t|ca|t1=córrer}}
{{t|cs|t1=běžet}}
{{t|da|t1=løbe}}
{{t|eo|t1=kuri}}
{{t|eu|t1=arin joan|t2=lasterka joan}}
{{t|fo|t1=renna}}
{{t|fi|t1=juosta}}
{{t|fr|a1=1-2|t1=courir}}
{{t|gd|t1=ruith}}
{{t|el|t1=τρέχω}}
{{t|he|a1=1,10|t1=לרוץ|tl1=laruts|t2=לנסוע|a2=2,13|tl2=linsoa|t3=להאיץ|a3=3|tl3=leaits|t4=לזרז|tl4=lezarez|t5=למהר|a5=4|tl5=lemaer|t6=לזרום|a6=5|tl6=lizrom|t7=להפריח|a7=6|tl7=leafriaj|t8=שמועה|tl8=shmuha|t9=לצעוד|a9=7|tl9=litsəod|t10=ברכב|tl10=berejev|nota10=en un vehiculo|t11=ללכת|a11=8|tl11=lalejet|t12=ללכת|a12=9|t13=lalejet|t14=ישר|tl14=yashar|t15=לרדוף|a15=11|tl15=lirdof|t16=לברוח|a16=12|tl16=livroaj}}
{{t|hu|t1=szalad}}
{{t|io|t1=kurar}}
{{t|en|a1=1,7,10|t1=run|a2=2|t2=drive|a3=3|t3=accelerate|a4=4|t4=do|t5=quickly|a6=5|t6=flow|a7=6|t7=spread|a8=7|t8=march|nota8=in a car|a9=8|t9=walk|a10=9|t10=walk|t11=strate|a12=11|t12=chase|a13=12|t13=get rid|a14=13|t14=travel time}}
{{t|is|t1=renna}}
{{t|it|a1=1-2|t1=correre|a2=24|t2=spostare|a3=35|t3=licenziare}}
{{t|la|t1=currere}}
{{t|li|t1=renne}}
{{t|arn|a1=1|t1=lefün|a2=29|t2=lepümün}}
{{t|yua|a1=1|t1=áalkab}}
{{t|nl|t1=rennen|t2=hardlopen|t3=hollen|t4=snellen}}
{{t|nb|t1=løpe}}
{{t|pap|t1=kore}}
{{t|pl|t1=biec}}
{{t|pt|t1=correr}}
{{t|ru|t1=бегать}}
{{t|srn|t1=lon}}
{{t|sv|t1=kila|t2=raka}}
{{t|tl|t1=tumakbó}}
{{t|tr|t1=koşmak}}
{{trad-abajo}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}
==== {{verbo intransitivo|ast}} ====
;1: {{plm}}.
==== Conjugación ====
{{ast.v|alt=ue}}
== Referencias y notas ==
<references />
59cgf6ssut9hzmm0fa0x3ayg8xmmw0q
paulatinamente
0
21875
6124137
5967542
2026-07-26T04:21:25Z
TMCbot
164594
.
6124137
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|sufijo|paulatino|mente}}
=== {{adverbio|es}} ===
;1: {{adverbio de adjetivo|paulatino}}.
=== Traducciones ===
{{trad-arriba}}
<!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} -->
{{trad-abajo}}
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología ===
{{etimología|leng=pt|sufijo|paulatino|mente}}
=== {{adverbio|pt}} ===
;1: {{plm}}
== Referencias y notas ==
<references />
stekjnjav6exwy4il4t070cz5ztgvc7
morir
0
23285
6124046
5687596
2026-07-26T01:56:19Z
Tmagc
158167
6124046
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-morir.wav}}
=== Etimología 1 ===
{{etimología|la|mori}}.
==== {{verbo intransitivo|es}} ====
;1: Llegar al fin de la [[vida]] propia. Dejar de estar vivo.
{{sinónimo|expirar|fallecer|fenecer|finar|perecer|palmar|nota6=o [[palmarla]], coloquial|diñarla|nota7=coloquial}}.
{{uso|utcp}}.
;2: Llegar un proceso a su conclusión.
{{sinónimo|acabar|concluir|finalizar|terminar}}.
{{uso|utcp}}.
;3: Popularmente, estropearse algo de tal manera que no puede ofrecer ningún uso útil, especialmente cuando es de forma irreparable.
{{uso|coloquial|umcp}}.
{{ejemplo|Se ha muerto el ordenador.}}
;4: Dicho de una empresa, dejar de operar definitivamente ya sea por [[quiebra]] o por [[sanciones]].<ref name="drae">{{DRAE2001}}</ref>
{{uso|coloquial|utcp}}.
;5: Dicho de un grupo o asociación, disolverse irremediablemente.<ref name="drae" />
{{uso|coloquial|utcp}}.
;6: Amar a alguna persona o cosa en exceso.<ref name="drae" />
{{uso|utcp}}.
{{ejemplo|En esos tiempos, me moría por querer estar a su lado.}}
==== {{verbo transitivo|es}} ====
;7: {{plm|matar}}<ref name="drae" />
{{uso|poco usado}}
==== Locuciones ====
{{trad-arriba|Locuciones con «morir»}}
*[[a morir]]
*[[a medio morir saltando]]
*[[morir en su ley|morir alguien en su ley]]
*[[morir en la rueda]]
*morir o vivir [[en olor de santidad]]
*[[morir piola]]
*[[morir pollo]]
*[[muere de viejo y no de sapo]]
{{trad-abajo}}
==== Conjugación ====
{{es.v}}
==== Véase también ====
{{w}}
* [[morirse]]
==== Traducciones ====
{{trad-arriba}}
{{t|af|i1=s|t1=sterf}}
{{t|ain|i1=s|t1=イサㇺ|t2=イシャㇺ}}
{{t|de|a1=1|t1=sterben}}
{{t|sai-all|a1=1|t1=lpuxapnen}}
{{t|ast|a1=1|t1=morrer}}
{{t|az|a1=1|t1=ölmək}}
{{t|bg|t1=умирам|t2=умра|i2=s}}
{{t|ca|a1=1|t1=morir}}
{{t|zh|i1=s|t1=死|t2=死亡}}
{{t|da|a1=1|t1=dø}}
{{t|sl|a1=1|t1=umirati}}
{{t|eo|a1=1|t1=morti}}
{{t|fo|i1=s|t1=doyggja}}
{{t|fi|i1=s|t1=kuolla}}
{{t|fr|a1=1|t1=mourir}}
{{t|fy|i1=s|t1=deagean|t2=ferstjerre|t3=stjerre}}
{{t|el|a1=1|t1=πεθαίνω}}
{{t|gwj|t1=ǁoː}}
{{t|hbo|i1=s|t1=מות}}
{{t|io|i1=s|t1=mortar}}
{{t|en|a1=1|t1=die|a2=1|t2=expire|a3=1|t3=pass away|nota3=eufemismo}}
{{t|ang|i1=s|t1=acwelan|t2=sweltan}}
{{t|it|i1=s|t1=morire}}
{{t|ja|a1=1|t1=死ぬ|t2=しぬ|tl2=[[shinu]]}}
{{t|la|i1=s|t1=mori}}
{{t|arn|a1=1|t1=ḻan|a2=2|t2=afün}}
{{t|yua|i1=s|t1=kíimil}}
{{t|nl|i1=s|t1=doodgaan|t2=overlijden|t3=sterven|t4=verscheiden|t5=versmachten}}
{{t|pap|i1=s|t1=fayesé|t2=muri}}
{{t|pl|i1=s|t1=umierać}}
{{t|pt|a1=1|t1=falecer|a2=2|t2=morrer}}
{{t|rw|i1=s|t1=pfa|nota1=gupfa}}
{{t|ro|i1=s|t1=muri}}
{{t|srn|i1=s|t1=dede|t2=kraperi}}
{{t|sv|i1=s|t1=avlida|t2=dö}}
{{t|tr|i1=s|t1=ölmek}}
{{t|zu|i1=s|t1=-shona}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}
==== {{verbo intransitivo|ca}} ====
;1: {{plm|morir}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|fro}} ==
{{pron-graf|leng=fro|1fono1=muˈɾiɾ}}
=== Etimología 1 ===
{{etimología|leng=fro|la|morīrī}}.
==== {{verbo|fro}} ====
;1: {{plm|morir}}.
== Referencias y notas ==
<references />
30g9m2ichxydekz5zviga7m9aapab5v
estar
0
24347
6124001
6114516
2026-07-25T22:44:08Z
Tmagc
158167
/* {{lengua|ca}} */
6124001
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{año de documentación|1140}}.<ref name="cndhe">{{CNDHE}}</ref> {{etimología|osp|estar|estar}}, y este del latín {{l+|la|sto|stāre|glosa=erguirse}}, del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''. Las formas del pretérito indefinido vienen de la analogía con las de {{l+|es|haber}}.
==== {{verbo intransitivo|es}} ====
;1: {{plm|existir}}, hallarse alguien o algo con cierta permanencia y estabilidad en este o aquel lugar, situación, condición o modo actual de ser.<ref name="dle1925">{{DLE1925|535}}</ref>
{{uso|utcp}} [[estarse]].
{{ejemplo|«{{plm|en}} [[ese]] [[momento]] [[el]] [[grupo]] [[de]] [[joven|jóvenes]] [[que]] '''''estaban''''' [[en]] [[el]] [[muro]], [[le]] [[hacer|hacían]] [[burla]] [[a]] [[una]] [[muchacha]] [[y]] [[a]] [[un]] [[joven]] [[colegial]] [[que]] [[bajar|bajaban]] [[apresuradamente]] [[por]] [[el]] [[famoso]] [[bajadero]] [[a]] [[la]] [[bomba]], [[que]] [[conducir|conduce]] [[a]] [[la]] [[laguna]] [[de]] [[la]] [[ciudad]] [[de]] Masaya, {{plm|Nicaragua}}, [[ambos]] [[chavalo]]s [[ir|iban]] [[vestido]]s [[de]] [[uniforme]] [[y]] [[portar|portaban]] [[mochila]]s».|a=Quinto Núñez, Bayardo|t=El robo del laberinto y otros cuentos|parte=«BAJADERO A LA BOMBA»|f=2001|editorial=Managua: Bayardo Quinto Núñez|l=Nicaragua|c=libro}}
{{sinónimo|encontrarse|hallarse}}.
;2: Hallarse desarrollando cierta [[acción]] o suceder cierto [[acontecimiento]] con el gerundio de otros verbos.<ref name="dle1925" />
{{uso|precede al gerundio}}.
{{ejemplo|«—{{plm|aquí}} [[te]] [[dejar|dejo]] [[a]] Gladys. '''''Se está''''' {{versalita|[[morir|muriendo]]}}. {{l|es|hacer|Haz}} [[lo]] [[que]] [[poder|puedas]]».|a=Pardo de Santayana, José Ignacio|t=El beso del chimpancé. Divertidas e insólitas historias de la vida cotidiana en un zoo|f=2001|p=102|editorial=Madrid: Aguilar|l=España|c=libro}}
;3: {{plm|tocar}} o [[atañer]].<ref name="dle1925" />
;4: {{plm|dicho}} de una [[prenda]] de [[vestir]]: {{plm|sentar}} o caer bien o mal.<ref name="dle1925" />
;5: {{plm|ser}}{{subíndice|1}}.<ref name="dle1925" />
{{uso|obsoleto}}.
;6: {{plm|junto}} con algunos adjetivos o participios, sentir o tener actualmente la calidad que ellos significan,<ref name="dle1925" /> y muchas veces a modo de burla o ironía.<ref name="dle">{{DLE}}</ref>
{{ejemplo|«{{plm|tampoco}} '''''está''''' {{versalita|[[justificar|justificado]]}} [[por]] [[el]] [[supuesto]] [[predominio]] [[de]] [[alteración|alteraciones]] [[de]] [[los]] [[impulso]]s [[y]] [[del]] [[estado]] [[de]] [[ánimo]], [[pues]] [[estas]] [[mismo|mismas]] [[ser|son]] [[correlato]]s, [[también]], [[del]] [[síndrome]] [[orgánico]], [[cualquiera]] [[que]] [[ser|sea]] [[su]] [[categoría]], [[y]], [[por]] [[ejemplo]], [[las]] [[soler|suele]] [[ostentar]] [[la]] [[esclerosis]] [[múltiple]] [[en]] [[ocasión|ocasiones]] [[y]] [[durante]] [[la]] [[etapa]] [[inicial]]».|a=Castilla del Pino, Carlos|t=Introducción a la psiquiatría, 2. Psiquiatría general. Psiquiatría clínica|fo=1980|f=1992|editorial=Madrid: Alianza|c=libro|l=España}}
{{ejemplo|«{{plm|la}} [[patogenia]] [[de]] [[este]] [[síndrome]] [[no]] '''''está''''' {{versalita|[[dilucidar|dilucidada]]}}. {{plm|si}} [[tratar|se tratara]] [[de]] [[la]] [[acción]] [[directo|directa]] [[del]] [[alcohol]], [[la]] [[alteración]] [[de]] [[la]] [[conciencia]] [[deber|debería]] '''''estar''''' {{versalita|[[presente]]}}».|a=Castilla del Pino, Carlos|t=Introducción a la psiquiatría, 2. Psiquiatría general. Psiquiatría clínica|fo=1980|f=1992|p=396|editorial=Madrid: Alianza|c=libro|l=España}}
;7: {{plm|junto}} con la preposición {{l+|es|a}} y algunos [[sustantivo]]s, [[estar]] dispuesta una persona a [[hacer]] algo.<ref name="dle1925" />
;8: {{plm|seguido}} de la preposición {{l+|es|a}} y del número uno hasta el treinta y uno, [[correr]] el día del mes indicado por cualquiera de ellos.<ref name="dle1925" />
{{uso|se emplea más en primera persona plural}}.<ref name="dle" />
;9: {{plm|junto}} con la preposición {{l+|es|a}} y una indicación de valor o precio, tener ese precio en el mercado la cosa de que se trata.<ref name="dle1925" />
{{ejemplo|«{{plm|el}} [[kilo]] [[de]] [[manzana]]s '''''está''''' {{versalita|[[a]]}} [[tres]] [[dólar]]es».|t=Ejemplo brindado por Wikcionario|c=página}}
{{sinónimo|costar|valer}}.
;10: {{plm|junto}} con la preposición {{l+|es|con}}, [[vivir]] o trabajar en compañía de esta.<ref name="dle1925" />
{{ejemplo|«Aún '''''estoy''''' {{versalita|[[con]]}} [[mis]] [[padre]]s».|t=Ejemplo brindado por Wikcionario|c=página}}
;11: {{plm|avistarse}} con alguien, generalmente para tratar de un [[negocio]]<ref name="dle1925" /> o cualquier otro asunto.<ref name="dle" />
;12: {{plm|tener}} acceso carnal.<ref name="dle1925" />
{{ejemplo|«'''''Estoy''''' {{versalita|[[con]]}} {{plm|Daniel}} [[desde]] [[hacer|hace]] [[un]] [[año]] [[y]] [[medio]]».|t=Ejemplo brindado por Wikcionario|c=página}}
;13: {{plm|junto}} con la preposición {{l+|es|de}}, estar ejecutando una acción o entendiendo en ella, de cualquier modo que sea.<ref name="dle" />
{{ejemplo|«{{plm|los}} {{plm|Ramírez}} '''''están''''' {{versalita|[[de]]}} [[mudanza]]».|t=Ejemplo brindado por Wikcionario|c=página}}
{{ejemplo|«{{plm|Tatiana}} [[no]] [[ir|va]] [[a]] [[poder]] [[venir]]. '''''Está''''' {{versalita|[[de]]}} [[turno]] [[en]] [[el]] [[hospital]]».|t=Ejemplo brindado por Wikcionario|c=página}}
;14: Junto con la preposición {{l+|es|de}} y algunos sustantivos, [[ejecutar]] lo que ellos significan o hallarse en disposición próxima para ello.<ref name="dle" />
{{ejemplo|«'''''Está''''' {{versalita|de}} [[viaje]], [[con]] [[sus]] [[padre]]s».|t=Ejemplo brindado por Wikcionario|c=página}}
;15: Junto con la preposición {{l+|es|en}} y algunos sustantivos, consistir, ser causa o motivo de algo.<ref name="dle" />
{{uso|se emplea en tercera persona singular}}.
{{ejemplo|«{{plm|su}} [[terquedad]] [[hacer|hizo]] [[que]] [[siempre]] '''''estuviera''''' {{versalita|[[en]]}} [[problema]]s; [[tanto]] [[dentro]] [[como]] [[fuera]] [[de]] [[su]] [[hogar]]».|t=Ejemplo brindado por Wikcionario|c=página}}
;16: Hablando del coste de algo y junto con la preposición {{l+|es|en}}, haber costado tanto.<ref name="dle" />
{{ejemplo|«{{plm|este}} [[terreno]] [[me]] '''''estuvo''''' {{versalita|[[en]]}} [[ciento]] [[veinte]] [[mil]] [[sol]]es».|t=Ejemplo brindado por Wikcionario|c=página}}
;17: Junto con la preposición {{l+|es|para}} y el infinitivo de algunos verbos o seguido de algunos sustantivos, denota la disposición próxima o determinada de hacer lo que significa el verbo o el sustantivo.<ref name="dle" />
{{ejemplo|«{{plm|no}} '''''estoy''''' {{versalita|[[para]]}} [[broma]]s [[en]] [[este]] [[momento]]».|t=Ejemplo brindado por Wikcionario|c=página}}
;18: Junto con la preposición {{l+|es|por}} y el infinitivo de algunos verbos, no haberse ejecutado aún, o haberse dejado de ejecutar, lo que estos significan.<ref name="dle" />
{{ejemplo|«{{plm|adelante}}, [[muchacho]]s. {{plm|la}} [[clase]] '''''está''''' {{versalita|[[po]]}} [[empezar]]».|t=Ejemplo brindado por Wikcionario|c=página}}
;19: Junto con la preposición {{l+|es|por}} y el infinitivo de algunos verbos, hallarse alguien casi determinado a hacer algo.<ref name="dle" />
{{ejemplo|«'''''Estaba''''' {{versalita|[[por]]}} [[ir]][[me]] [[a]] [[pasear]], [[pero]] [[pasar|pasa]], [[si]] [[necesitar|necesitas]] [[hablar]] [[con]] [[alguien]] [[para]] [[desahogarse|desahogarte]]».|t=Ejemplo brindado por Wikcionario|c=página}}
;20: Junto con la preposición {{l+|es|por}}, estar a favor de alguien o algo.<ref name="dle" />
{{ejemplo|«'''''Estoy''''' {{versalita|[[por]]}} [[la]] [[implementación]] [[de]] [[nuevo|nuevas]] [[reforma]]s [[parlamentario|parlamentarias]]».|t=Ejemplo brindado por Wikcionario|c=página}}
{{ejemplo|«¡{{plm|ánimo}}, [[amigo]]! {{plm|todo}}s '''''estamos''''' {{versalita|[[por]]}} [[ti]]. ¡{{plm|no}} [[te]] [[desanimar|desanimes]]!».|t=Ejemplo brindado por Wikcionario|c=página}}
;21: Se usa para formar la voz pasiva de estado de cada verbo, junto con el participio correspondiente de los mismos.
=== {{sustantivo masculino|es}} ===
{{es.sust}}
;22: Habitación principal de una casa, en la que se reciben las visitas y se hace la vida social.
{{sinónimo|cuarto de estar|sala de estar}}
==== Locuciones ====
{{trad-arriba|Locuciones con '''''estar'''''}}
* [[está visto]]
* [[estar al]]: estar a punto de hacer algo.
* [[estar al otro lado]]
* [[estar alguien como una Pascua]]
* [[estar con]]:
:1: apoyar a alguien.
:2: vivir con alguien.
:3: trabajar con alguien.
:4: encontrarse con alguien.
:5: tener una relación sentimental con alguien.
* [[estar de]]:
:1: realizar la actividad que se menciona.
:2: realizar un oficio temporalmente.
:3: realizar una actividad de forma ocasional y transitoria.
* [[estar de más]]: sobrar
* [[estar en]]:
:1: trabajar en algo.
:2: entender de un asunto.
:3: costar, valer.
* [[estar para]]: estar a punto de hacer algo.
* [[estar por]]:
:1: estar a favor de alguien o sentir atracción por alguien.
:2: estar a punto de efectuar algo.
:3: estar casi decidido a hacer algo.
:4: no haberse hecho aún algo.
* [[estar que]]: estar a punto de hacer algo o con urgencia por algo.
* [[estar a]] alguna cosa: ''indica que alguno quiere quedar responsable de alguna cosa por otro.''
* [[estar a erre]]: Estar haciendo alguna cosa con aplicación y sin distraerse.<ref name="dlc1842">{{DLC1842}}</ref>
* [[estar al caer]]
* [[estar alerta]]: Estar con cuidado y vigilancia.<ref name="dlc1842" />
* [[estar bien]], [[estar mal]] alguno: Disfrutar o no conveniencias o comodidades.<ref name="dlc1842" />
* [[estar bien]]: (anticuado) Cumplir fielmente.<ref name="dlc1842" />
* [[estar bien o mal con]] alguno: Estar bien o mal conceptuado con él, tener buen o mal concepto de él, estar concorde o desavenido con él.<ref name="dlc1842" />
* [[estar bien o mal una cosa a]] alguno: Parecer bien o mal con ella. Por ejemplo: tal color o tal traje le ''está'' bien a fulano.<ref name="dlc1842" />
* [[estar bien una cosa a]] alguno: {{plm|convenir}}le, serle útil. Por ejemplo: tal empleo le ''estará'' bien a fulano.<ref name="dlc1842" />
* [[estar de por medio]]: Mediar en algún negocio.<ref name="dlc1842" />
* [[estar en]] alguna cosa: Entenderla o estar enterado de ella. Por ejemplo: ''Estoy'' en lo que ud. dice.<ref name="dlc1842" />
* [[estar en]] alguna cosa: Creerla, estar persuadido a ella. Por ejemplo: ''Estoy en'' que vendrá fulano.<ref name="dlc1842" />
* [[estar en sí]]: Estar con plena advertencia en lo que se dice o se hace. Por ejemplo:fulano ''está muy en sí''.<ref name="dlc1842" />
* [[estar en todo]]: Atender a un tiempo a muchas cosas, sin embarazarse con la muchedumbre de ellas.<ref name="dlc1842" />
* [[estar erre que erre]]: Permanecer con tenacidad en algún dictamen.<ref name="dlc1842" />
* [[estar para ello]]: Estar uno en disposición de ejecutar bien algun cosa que acostumbra hacer. Por ejemplo: fulano ''está'' hoy para ello.<ref name="dlc1842" />
* [[estar sobre sí]]: Tener orgullo y soberbia.<ref name="dlc1842" />
* [[estar sobre uno]] o [[estar sobre un negocio]]: Instar a alguno con frecuencia, o promover algún negocio con eficacia.<ref name="dlc1842" />
* [[a prueba y estese]]: Ver [[prueba]].<ref name="dlc1842" />
* [[¿dónde estamos?]]: locución de que se usa para significar la admiración, disgusto o extrañeza que causa los que se oye o se ve.<ref name="dlc1842" />
* [[¿estamos aquí o en Jauja?]], ¿en Flandes?, ¿en Francia?, etc.: frase con que se reprende a alguna persona alguna acción o dicho importuno o indecoroso.<ref name="dlc1842" />
* [[no estar ni ahí]]
* [[ya está bien]]
{{trad-abajo}}
==== Conjugación ====
{{es.v}}
==== Traducciones ====
{{trad-arriba}}
{{t|ain|t1=アン|t2=アㇴ|t3=オカィ}}
{{t|de|i1=s|t1=sein}}
{{t|bg|i1=s|t1=съм|t2=бъда}}
{{t|cs|i1=s|t1=být}}
{{t|eo|i1=s|t1=esti}}
{{t|ext|i1=s|t1=estal}}
{{t|fr|i1=s|t1=être}}
{{t|he|t1=היה|tr=hayá}}
{{t|en|t1=be}}
{{t|it|t1=essere|t2=stare}}
{{t|ja|i1=s|t1=ある}}
{{t|mn|i1=s|t1=байх}}
{{t|nl|i1=s|t1=zijn}}
{{t|pt|i1=s|t1=estar}}
{{t|ro|i1=s|t1=a fi}}
{{t|ru|i1=s|t1=быть}}
{{t|tr|t1=olmak}}
{{t|sa|i1=s|t1=भवति|t2=अस्ति}}
{{trad-abajo}}
== {{lengua|an}} ==
{{pron-graf|leng=an}}
=== Etimología ===
{{etimología|leng=an|la|sto|erguirse|alt=stāre}}, y este del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
=== {{verbo intransitivo|an}} ===
;1: {{plm}}.
== {{lengua|osp}} ==
{{pron-graf|leng=osp}}
=== Etimología ===
{{año de documentación|leng=osp|1140}}.<ref name="cndhe" /> {{etimología|leng=osp|la|sto|erguirse|alt=stāre}}, y este del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''. Compárese el galaicoportugués {{l+|roa-opt|estar|glosa=estar}}.
=== {{verbo intransitivo|osp}} ===
;1: {{plm}}.
{{ejemplo|A este don Jerónimo ya l’ otorgan por obispo,<br>diéronle en Valençia o bien puede '''estar''' rrico;|c=libro|t=Cantar del Mío Cid|u=https://es.wikisource.org/wiki/Cantar_del_Mío_Cid/Bodas_de_las_hijas_del_Cid77}}
==== Descendientes ====
{{trad-arriba|Descendientes}}
{{d|es|d1=estar|niv=1}}
{{d|lad|d1=estar|niv=1}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca|2pron1=oriental|3pron1=valenciano|h1=està|1pron1=nord-occidental}}
=== Etimología ===
{{etimología|leng=ca|la|sto|erguirse|alt=stāre}}, y este del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
==== {{verbo transitivo|ca}} ====
;1: {{plm|sentirse}} (o {{l|es|experimentar}} un {{l|es|estado}} {{l|es|temporario}} o tener una {{l|es|característica}}).<ref name=gdlc>{{GDLC}}</ref>
{{ejemplo|'''Estic''' cansada.}}
==== {{verbo|ca|auxiliar}} ====
;2: ''Se usa para crear el aspecto continúo en colaboración con el participio presente.''
{{ejemplo|Ja '''està''' dormint.}}
==== {{verbo intransitivo|ca}} ====
;3: {{plm|localizarse}} o {{l|es|situarse}}.
{{ejemplo|La Torre Eiffel '''està''' a París.}}
==== Conjugación ====
{{ca.v}}
==== Información adicional ====
{{derivad|leng=ca|estada|estadant|estar-se|estaria}}.
== {{lengua|roa-opt}} ==
{{pron-graf|leng=roa-opt|1fono1=es.ˈtaɾ}}
=== Etimología ===
{{etimología|leng=roa-opt|la|sto|erguirse|alt=stāre}}, y este del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''. Compárese el castellano antiguo {{l+|osp|estar|glosa=estar}}.
==== {{verbo intransitivo|roa-opt}} ====
;1: {{plm}}.
==== Descendientes ====
{{trad-arriba|Descendientes}}
{{d|fax|d1=estal|niv=1}}
{{d|gl|d1=estar|niv=1}}
{{d|pt|d1=estar|niv=1}}
{{trad-abajo}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
==== Etimología ====
{{etimología|leng=gl|roa-opt|estar|estar}}, y este del latín {{l+|la|sto|stāre|glosa=erguirse}}, del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
==== {{verbo intransitivo|gl}} ====
;1: {{plm}}.<ref>{{DRAG}}</ref>
{{ejemplo|Xa '''estou''' tembrando non soceda ahora o mesmo.|trad= Ya '''estoy''' temblando, no hagas lo mismo ahora.}}
==== Forma verbal ====
;2: {{forma verbo|leng=gl|estar|p=1s|pron={{l|gl|eu}}|t=infinitivo conjugado}}.
;3: {{forma verbo|leng=gl|estar|p=3s|pron={{l|gl|ela}}, {{l|gl|el}}; {{l|gl|vostede}}, [[segunda persona|2ª pers.]]|t=infinitivo conjugado}}.
==== Locuciones ====
{{trad-arriba|Locuciones}}
* {{l|gl|estar a}}
* {{l|gl|estar a ben}}
* {{l|gl|estar a chegar}}
* {{l|gl|estar a mal}}
* {{l|gl|estar a velas vir}}
* {{l|gl|estar a vir}}
* {{l|gl|estar de máis}}
* {{l|gl|estar de mal humor}}
* {{l|gl|estar de malas}}
* {{l|gl|estar de parte de}}
* {{l|gl|estar doente por}}
* {{l|gl|estar en todo}}
* {{l|gl|estar na horta}}
* {{l|gl|estar na lúa}}
* {{l|gl|estar na pel}}
* {{l|gl|estar nas nubes}}
* {{l|gl|estar nas verzas}}
{{trad-abajo}}
==== Conjugación ====
{{gl.v}}
== {{lengua|lad}} ==
{{pron-graf|leng=lad|g1=איסטאר|gnota1=<ref name="Folkmasa">{{Folkmasa}}</ref>}}
=== Etimología ===
{{etimología|leng=lad|osp|estar|estar}}, y este del latín {{l+|la|sto|stāre|glosa=erguirse}}, del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
==== {{sustantivo masculino|lad}} ====
;1: {{plm|estatus}}, {{l|es|situación}}, {{l|es|estado}}.<ref name="Folkmasa" />
==== {{verbo intransitivo|lad}} ====
;2: {{plm}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc|1fone1=esˈta}}
=== Etimología ===
{{etimología|leng=oc|pro|estar|estar}}, y este del latín {{l+|la|sto|stāre|glosa=erguirse}}, del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
==== {{verbo intransitivo|oc}} ====
;1: {{plm}}.
==== Información adicional ====
{{derivad|leng=oc|estadir|estadís|estadissar|estaire|estajan|estament|estança|estant|estantar|estantís|estantòl|estatge}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt|1fone1=ˈta|2fone1=iʃ.ˈta(χ)|2pron1=Carioca|3fone1=is.ˈta(ɾ)|3pron1=Paulista|4fone1=is.ˈta(ɹ)|4pron1=Paulista|5fone1=iʃ.ˈtaɾ|5pron1=Portugal|6fone1=ɨʃ.ˈtaɾ|6pron1=Portugal|7fone1=ˈʃtaɾ|7pron1=Portugal|8fone1=ˈtaɾ|8pron1=Portugal, no normativo|h1=está|1pron1=Brasil, no normativo|v1=tá|v2=tar}}
=== Etimología ===
{{etimología|leng=pt|roa-opt|estar|estar}}, y este del latín {{l+|la|sto|stāre|glosa=erguirse}}, del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
==== {{verbo intransitivo|pt}} ====
;1: {{plm|localizarse}} o {{l|es|situarse}}.<ref name=au>{{Aulete}}</ref>
{{ejemplo|Onde '''estás'''? - '''Estou''' em casa.|trad=¿Dónde estás? - Estoy en casa.}}
;2: {{plm|sentirse}} (o {{l|es|experimentar}} un {{l|es|estado}} {{l|es|temporario}} o tener una {{l|es|característica}}).<ref name=au />
{{ejemplo|O tempo '''estava''' frio.|trad=El tiempo estaba frío.}}
;3: {{plm|costar}} [dinero]. (Dicho especialmente cuyo el valor se muda frecuentemente.)<ref name=au />
{{sinónimo|leng=pt|custar}}.
{{ejemplo|O quilo de maçã '''está''' dois euros.|trad=El quilo de manzana está a dos euros.}}
=== {{verbo|pt|auxiliar}} ===
;4: ''Se usa para crear el aspecto continúo o progresivo en colaboración con o {{l|pt|a}} con infinitivo (en Portugal) o sencillamente con gerundio (en Brasil).''<ref name=au />
{{ejemplo|Ela '''está''' a cantar? Ela '''está''' cantando?|trad=¿Ella está cantando?}}
==== Locuciones ====
{{trad-arriba|Locuciones}}
* {{l|pt|está bem}}
* {{l|pt|estar à brocha}}
* {{l|pt|estar à coca}}
* {{l|pt|estar a fim}}
* {{l|pt|estar a jeito}}
* {{l|pt|estar apertado da brocha}}
* {{l|pt|estar às portas da morte}}
* {{l|pt|estar bem}}
* {{l|pt|estar bem aviado}}
* {{l|pt|estar com}}
* {{l|pt|estar com a agenda tomada}}
* {{l|pt|estar com os bofes de fora}}
* {{l|pt|estar de lua}}
* {{l|pt|estar entre a vida e a morte}}
* {{l|pt|estar ferrado}}
* {{l|pt|estar fora de si}}
* {{l|pt|estar fora do ar}}
* {{l|pt|estar frito}}
* {{l|pt|estar muito em baixo}}
* {{l|pt|estar nas lonas}}
* {{l|pt|estar nas suas sete quintas}}
* {{l|pt|estar nelas}}
* {{l|pt|estar no sangue}}
* {{l|pt|estar no seu elemento}}
* {{l|pt|estar para}}
* {{l|pt|estar pela hora da morte}}
* {{l|pt|estar pelas horas da morte}}
* {{l|pt|estar para nascer}}
* {{l|pt|estar podendo}}
* {{l|pt|estar por}}
* {{l|pt|estar por dentro}}
* {{l|pt|estar por fora}}
* {{l|pt|estar-se a vir}}
* {{l|pt|não estar com nada}}
* {{l|pt|não estar nem aí}}
{{trad-abajo}}
=== Conjugación ===
{{pt.v}}
=== Véase también ===
{{w|leng=pt}}
== {{lengua|pro}} ==
{{pron-graf|leng=pro|v1=istar|v2=star}}
=== Etimología ===
{{etimología|leng=pro|la|sto|erguirse|alt=stāre}}, y este del protoitálico {{l+|itc-pro|*sta-ē-je-}} o {{l+|itc-pro|*sta-ē-jo-}}, del protoindoeuropeo {{l+|ine-pro|*sth₂-eh₁-}}''ie/o-''.
==== {{verbo intransitivo|pro}} ====
;1: {{plm}}.
==== {{sustantivo masculino|pro}} ====
;2: {{plm|casa}}.
;3: {{plm|actuación}}, {{l|es|comportamiento}}, {{l|es|conducta}} o {{l|es|procedimiento}}.
== Referencias y notas ==
<references />
6qrcg71l116p01emlsyjy7ujyebawz3
saber
0
25363
6124008
6060230
2026-07-25T23:00:07Z
Tmagc
158167
6124008
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-saber.wav}}
=== Etimología 1 ===
{{etimología|la|sapere}} ("tener inteligencia").
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1: Conjunto de conocimientos, adquiridos mediante el estudio o la experiencia, sobre alguna materia, ciencia o arte.
{{sinónimo|erudición|sabiduría}}.
{{ejemplo|El ''saber'' de este filósofo es notable.}}
;2: Conocimientos propios de un estrato social o de un grupo humano.
{{sinónimo|cultura|sabiduría}}
{{ejemplo|El ''saber'' popular nos dice que es sano tomar una ducha fría matinal.}}
==== {{verbo transitivo|es}} ====
;3: Tener conocimiento de algo.
{{sinónimo|advertir|conocer|estar enterado|notar}}.
{{antónimo|ignorar}}
{{ejemplo|''Saber'' la hora.}}
;4: Tener un conjunto de conocimientos, adquiridos mediante el estudio o la experiencia, sobre alguna materia, ciencia o arte.
{{uso|utci}}
{{ejemplo|''Saber'' griego.}}
;5: Entender correctamente y tener un buen conocimiento de un asunto cualquiera.
{{uso|utci}}
{{sinónimo|conocer|comprender}}.
{{ejemplo|Perdónalos Señor, no ''saben'' lo que hacen.}}
;6: Haber adquirido un conocimiento cualquier y retenerlo en la memoria.
{{uso|se usa más como verbo pronominal}}
{{sinónimo|aprender|memorizar}}
{{ejemplo|Ya me ''sé'' tu número de teléfono.}}
==== {{verbo auxiliar|es}} ====
;7: (saber + infinitivo) Tener una destreza para hacer algo.
{{uso|utci|auxiliar}}
{{ejemplo|''Saber'' jugar tenis.}}
==== {{verbo intransitivo|es}} ====
;8: Ser despierto y astuto.
{{ejemplo|Se las arregla bien, es un tipo que ''sabe''.}}
;9: Tener un sabor o gusto.
{{ejemplo|La comida ''sabe'' bien.}}
{{ejemplo|Parece jabón, huele a jabón, ''sabe'' a jabón, pero es queso.}}
;10: Parecer o tener semejanza con algo.
{{sinónimo|parecer|semejar}}
{{ejemplo|Esto me ''sabe'' a trampa.}}
;11: Ceñirse a una idea, precepto o norma.
{{ejemplo|Como buen musulmán, ''sabe'' ayunar durante el [[ramadán]].}}
;12: Soler, acostumbrar hacer algo.
{{ámbito|Argentina|Bolivia|Ecuador|Guatemala|Perú|Uruguay}}.
{{ejemplo|De niños ''sabíamos'' ir diariamente a la piscina durante el verano.}}
;13: Tener amplios conocimientos de cultura general.
{{ejemplo|Este niño ''sabe'' mucho.}}
==== Locuciones ====
{{trad-arriba|Locuciones con «saber»}}
* [[a saber]]:
* ¿[[cómo sabes tú]]?: ¿cómo estás tan seguro de eso?, ¿dónde obtuviste esa información?, ¿quién te dijo (o te enseñó) eso?
* [[¿cómo sabes tú que La Guaira es lejos?]]
* [[hacer saber]]: Enterar, comunicar, avisar.
* [[me sabe]]: Me importa poco.
* [[no saber dónde está parado]]: Ser un inepto completo, no tener idea del asunto.
* [[no saber dónde meterse]]
* [[no saber lo que se tiene]]
* [[no saber ni hueva]]: No saber nada
* [[no saber ni palote]]: No saber nada.
* [[no saber ni pizca]]: No saber nada.
* [[no sé cuántos]]
* [[no sé qué]]
* [[qué sé yo]]
* [[¿qué sabes tú?]]: Tú crees que sabes, pero no sabes.
* ¡[[qué sé yo]]!: Expresión de [[perplejidad]].
* [[saber a poco]]: Tener gusto a poco, parecer insuficiente.
* [[saber a teta de novicia]], [[saber a teta]]: saber muy bien
* [[saber adonde aprieta el zapato]]
* [[saber de]]:
;14: Conocer algo.
;15: Tener noticias de alguien.
* [[saber de buena tinta]]: Saber algo de fuente confiable.
* [[saber de que pie cojea]]: Conocer el punto débil.
* [[saber el terreno que se pisa]]: Conocer la materia y el tipo de personas con las que se va a tratar un asunto.
* [[saber donde aprieta el zapato]]: Conocer el lado flaco.
* [[sabérselas todas]]:
;16: Tener mucho conocimiento de algo.
;17: Ser sobrado, petulante.
;18: Tener astucia para emplear estrategias.
* [[saber mal]]: Producir pesar o disgusto.
* [[sepa la bola]]
* ¡[[si lo sabré yo]]!: Tener conocimiento de un asunto o situación por experiencia propia.
* [[tener un no sé qué]]: Tener un encanto misterioso, un aire seductor.
* ¡[[vete a saber]]!: Expresión de [[incredulidad]] y desconocimiento acerca de alguna cosa.
{{trad-abajo}}
==== Refranes ====
* [[más vale saber que haber]]
==== Conjugación ====
{{es.v}}
==== Véase también ====
{{w}}
==== Traducciones ====
{{trad-arriba}}
{{t|de|t1=kennen|t2=wissen}}
{{t|sai-all|a1=3|t1=tucuychanen}}
{{t|br|t1=goût|t2=gouzout}}
{{t|bg|t1=зная|t2=знам}}
{{t|cs|t1=vědět}}
{{t|eo|t1=scii}}
{{t|ext|t1=sabel}}
{{t|fr|t1=savoir}}
{{t|got|a1=3-7|t1=𐍅𐌹𐍄𐌰𐌽}}
{{t|got|t1=𐌻𐌰𐌹𐍃|a1=3-7}}
{{t|got|t1=𐌺𐌿𐌽𐌽𐌰𐌽|a1=3-7}}
{{t|hu|t1=tud}}
{{t|en|t1=know}}
{{t|it|t1=sapere}}
{{t|arn|a1=1, 3|t1=kimün}}
{{t|yua|a1=3|t1=ojelt}}
{{t|mn|t1=мэдэх|t2=сурах}}
{{t|nhn|t1=mati}}
{{t|nb|t1=vite}}
{{t|oc|t1=saber}}
{{t|fa|t1=دانستن}}
{{t|pt|t1=saber}}
{{t|ro|t1=ști}}
{{t|ru|a1=3,5-7|t1=знать|a2=4|t2=уметь}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca}}.
==== {{verbo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología 1 ===
{{etimología|leng=gl}}.
==== {{verbo|gl}} ====
;1: {{plm}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología 1 ===
{{etimología|leng=oc}}.
==== {{verbo|oc}} ====
;1: {{plm}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología 1 ===
{{etimología|leng=pt}}.
==== {{verbo|pt}} ====
;1: {{plm}}.
==== Conjugación ====
{{pt.v}}
== Referencias y notas ==
<references />
qkwpu0pymq38x1quxlr911zr8vgl7vp
poder
0
25373
6124014
6068041
2026-07-25T23:17:10Z
Tmagc
158167
/* {{lengua|ca}} */
6124014
wikitext
text/x-wiki
{{desambiguación|põder}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología 1 ===
{{etimología|osp|poder|poder}}, y este del latín vulgar {{l+|la|*potere|*potēre}}, {{etim|la|posse}}, {{etim|la|potis}}, en última instancia {{etim|ine-pro|*pótis}}. Corominas<ref>{{DCECH}}</ref> indica que el verbo tardolatino no es idéntico al arcaico que diera origen a {{l+|la|potens}}, sino una recreación regular a partir {{etim|la|posse}}, contracto {{etim|la|esse}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1: Capacidad o facultad de ejecutar una acción.
;2: Control que se ejerce sobre un grupo humano.
;3: Posición fuerte que permite influir sobre la sociedad.
;4: Autoridad máxima reconocida por una sociedad.
{{sinónimo|gobierno}}.
;5: Institucionalidad que se da el estado para ejercer determinadas tareas con independencia.
;6: Tenencia o posesión de algo.
;7: Documento que autoriza a una persona a determinados actos.
;8: Capacidad mágica.
==== {{verbo transitivo|es}} ====
;9: Tener la capacidad o facultad que permite hacer algo.
{{uso|utci}}
;10: No tener trabas para actuar.
{{uso|utci}}
;11: Tener la opción de escoger entre varias posibilidades.
;12: Tener una autorización o [[permiso]] para hacer algo.
;13: Molestar, irritar.
{{ámbito|España}}
{{uso|coloquial}}
==== {{verbo intransitivo|es}} ====
;14: Tener el control sobre una situación, persona o grupo humano.
;15: Soportar a una persona.
==== {{verbo impersonal|es}} ====
;16: Ser posible algo, estar dentro de lo que ocurre al menos una vez.
==== {{verbo auxiliar|es}} ====
;17: {{impropia|Se usa en la construcción de oraciones [[modo imperativo|imperativas]] indirectas, en especial para expresar petición}}.
==== Locuciones ====
{{trad-arriba|Locuciones con «poder»}}
* [[carta poder]]
* [[cuarto poder]]
* [[poder absoluto]]:
* [[poder adquisitivo]]
* [[poder arbitrario]]
* [[poder constituyente]]
* [[poder de compra]]
* [[poder de resolución]]
* [[poder ejecutivo]]
* [[poder espiritual]]
* [[poder fáctico]]
* [[poder judicial]]
* [[poder legislativo]]
* [[poder liberatorio]]
* [[poder moderador]]
* [[poder separador]]
* [[poder temporal]]
* [[poderes públicos]]
* [[abuso de poder]]
* [[a poder de]]
* [[caer bajo el poder de alguien]]
* [[caer en poder de las lenguas]]
* [[casarse por poder]]
* [[dar poder]]
* [[de poder a poder]]
* [[exceso de poder]]
* [[hacer un poder]]
* [[obrar por poder]]
* [[poder de Dios]]
* [[por poder]]
* [[residuo del poder]]
* [[a más no poder]]
* [[a poder ser]]
* [[hasta más no poder]]
* [[no poder comer (o beber) algo]]: tener un prohibición dietética de alimento o bebida prescrita por un médico.
* [[no poder con alguien]]
* [[no poder con algo]]
* [[no poder consigo mismo]]
* [[no poder más]]
* [[no poder más que]]
* [[no poder menos]]
* [[no poder menos que]]
* [[no poder parar]]
* [[no poderse tener]]
* [[no poderse tener en pie]]
* [[no poderse valer]]
* [[no poderse valer con alguien]]
* [[no poder tragar a alguien]]
* [[no poder ver a alguien]]
* [[no poder verlo ni pintado]]
* [[no puede ser]]
* [[poderdante]]
* [[poder a uno]]
* [[poderlas]]
* [[puede que]]
* [[sálvese quien pueda]]
* ¿[[se puede]]?
{{trad-abajo}}
==== Conjugación ====
{{es.v}}
==== Véase también ====
{{Wikiquote}}
{{Wikipedia}}
==== Traducciones ====
{{trad-arriba}}
{{t|de|a1=9,10,11|t1=mögen|a2=9|t2=können}}
{{t|ast|t1=poder}}
{{t|br|t1=gallout|t2=gellout}}
{{t|bg|t1=мога|t2=мощ}}
{{t|ca|t1=poder}}
{{t|cs|i1=s|t1=moct|i2=s|t2=umět}}
{{t|eo|t1=povo|t2=povi|t3=povaĵo}}
{{t|ext|t1=poel}}
{{t|fr|a1=1,9,11,12|t1=pouvoir}}
{{t|hu|a1=1|t1=erő|a2=9-12|t2=tud}}
{{t|en|a1=12|t1=may|a2=9-12|t2=be able to|a3=9-12|t3=can|a4=1,2,3,4,5|t4=power}}
{{t|it|t1=potere}}
{{t|yua|a1=1|t1=páajtalil|a2=16|t2=páajtal/béeytal}}
{{t|pt|t1=poder}}
{{t|ru|t1=мочь}}
{{trad-abajo}}
== {{lengua|an}} ==
{{pron-graf|leng=an}}
=== Etimología 1 ===
{{etimología|leng=an|roa-oan|poder|poder}}, y este del latín vulgar {{l+|la|*potere|*potēre}}, {{etim|leng=an|la|posse}}, {{etim|leng=an|la|potis}}.
==== {{verbo intransitivo|an}} ====
;1: {{plm}}.
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología 1 ===
{{etimología|leng=ast}}.
==== {{sustantivo masculino|ast}} ====
{{ast.sust}}
;1: {{plm}}.
==== {{verbo intransitivo|ast}} ====
;2: {{plm}}.
== {{lengua|osp}} ==
{{pron-graf|leng=osp}}
=== Etimología 1 ===
{{etimología|leng=osp|la-vul|*potere|alt=*potēre}}, y este {{etim|leng=osp|la|posse}}, {{etim|leng=osp|la|potis}}.
==== {{sustantivo masculino|osp}} ====
;1: {{plm}}.
==== {{verbo intransitivo|osp}} ====
;2: {{plm}}.
==== Descendientes ====
{{trad-arriba|descendientes}}
{{d|es|d1=poder}}
{{d|lad|d1=pueder}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|roa-oca|poder|poder}}, y este del latín vulgar {{l+|la|*potere|*potēre}}, {{etim|leng=ca|la|posse}}<ref name="GDLC">{{GDLC}}</ref>, {{etim|leng=ca|la|potis}}.
==== {{sustantivo|ca|masculino}} ====
{{ca.sust|m}}
;1: {{plm}}.
;2: {{plm|habilidad}}.
==== {{verbo intransitivo|ca}} ====
;3: {{plm}}.
;4: {{plm|permitirse}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|roa-oca}} ==
{{pron-graf|leng=roa-oca}}
=== Etimología 1 ===
{{etimología|leng=roa-oca|la-vul|*potere|alt=*potēre}}, y este {{etim|leng=roa-oca|la|posse}}, {{etim|leng=roa-oca|la|potis}}.
==== {{verbo intransitivo|roa-oca}} ====
;1: {{plm}}.
== {{lengua|roa-opt}} ==
{{pron-graf|leng=roa-opt}}
=== Etimología 1 ===
{{etimología|leng=roa-opt|la-vul|*potere|alt=*potēre}}, y este {{etim|leng=roa-opt|la|posse}}, {{etim|leng=roa-opt|la|potis}}.
==== {{verbo intransitivo|roa-opt}} ====
;1: {{plm}}.
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología 1 ===
{{etimología|leng=gl|roa-opt|poder|poder}}, y este del latín vulgar {{l+|la|*potere|*potēre}}, {{etim|leng=gl|la|posse}}, {{etim|leng=gl|la|potis}}.
==== {{sustantivo masculino|gl}} ====
{{gl.sust}}
;1: {{plm}}.
==== {{verbo intransitivo|gl}} ====
;2: {{plm}}.
== {{lengua|roa-oan}} ==
{{pron-graf|leng=roa-oan}}
=== Etimología 1 ===
{{etimología|leng=roa-oan|la-vul|*potere|alt=*potēre}}, y este {{etim|leng=roa-oan|la|posse}}, {{etim|leng=roa-oan|la|potis}}.
==== {{sustantivo masculino|roa-oan}} ====
;1: {{plm}}.
==== {{verbo intransitivo|roa-oan}} ====
;2: {{plm}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología 1 ===
{{etimología|leng=oc|pro|poder|poder}}, y este del latín vulgar {{l+|la|*potere|*potēre}}, {{etim|leng=oc|la|posse}}, {{etim|leng=oc|la|potis}}.
==== {{verbo intransitivo|oc}} ====
;1: {{plm}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología 1 ===
{{etimología|leng=pt|roa-opt|poder|poder}}, y este del latín vulgar {{l+|la|*potere|*potēre}}<ref name="Aulete">{{Aulete}}</ref>, {{etim|leng=pt|la|posse}}, {{etim|leng=pt|la|potis}}.
==== {{sustantivo masculino|pt}} ====
{{pt.sust}}
;1: {{plm}} ({{l|es|habilidad}} para {{l|es|coerción}}, {{l|es|control}} o {{l|es|influencia}}).
{{ejemplo|O rei do Reino Unido tem pouco '''poder'''.}}
;2: Poder (organización o país).
{{sinónimo|leng=pt|potência}}.
{{ejemplo|Os '''poderes''' mundiais se reuniram.}}
;3: {{plm|posesión}}. (Actualmente solo se usa en ''ter poder de''.).
{{sinónimo|leng=pt|posse}}.
;4 {{csem|política|leng=pt}}: '''Poder''' (rama gubernativa).
{{ejemplo|Quem lida com isso é o '''poder''' judiciário.}}
;5: Poder ({{l|es|calidad}} {{l|es|extraordinaria}}).
{{sinónimo|leng=pt|virtude}}.
{{ejemplo|Essa vacina tem o '''poder''' da cura.}}
;6 {{csem|ficción|leng=pt}}: {{plm|superpoder}}.
{{sinónimo|leng=pt|superpoder}}.
{{ejemplo|Meu '''poder''' favorito é o teletransporte!}}
==== {{verbo auxiliar|pt}} ====
;7: {{plm}} (tener la habilidad para).
{{sinónimo|leng=pt|conseguir}}.
{{ejemplo|Eu '''posso''' arrumar isso.}}
;8: Poder ({{l|es|permitirse}} para; tener la permisión para).
{{ejemplo|Não '''podem''' ficar no pátio.}}
;9: Poder (tener la {{l|es|posibilidad}} para).
{{ejemplo|O montanhista '''podia''' cair a qualquer momento.}}
==== {{verbo transitivo|pt}} ====
;10: Poder {{l|es|derrotar}}. (Usado con la preposición {{l+|pt|com}}.).
{{ejemplo|Ninguém '''pode''' comigo!}}
==== {{verbo intransitivo|pt}} ====
;11: {{plm|permitirse}}.
{{ejemplo|Comer aqui '''pode'''.}}
==== Conjugación ====
{{pt.v}}
== {{lengua|pro}} ==
{{pron-graf|leng=pro}}
=== Etimología 1 ===
{{etimología|leng=pro|la-vul|*potere|alt=*potēre}}, y este {{etim|leng=pro|la|posse}}, {{etim|leng=pro|la|potis}}.
==== {{sustantivo masculino|pro}} ====
;1: {{plm}}.
==== {{verbo intransitivo|pro}} ====
;2: {{plm}}.
== Referencias y notas ==
<references />
9nyzyv6hdrmkc0hldcnt8cfnbu5kalr
aquell
0
25831
6124089
5033088
2026-07-26T04:20:11Z
TMCbot
164594
.
6124089
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca|demostrativo}} ===
{{ca.adj}}
;1: {{plm|aquel}}.
== Referencias y notas ==
<references />
h2g12u5ltepdkwnoj5c70qqpmyabyyc
què
0
25835
6124123
4595137
2026-07-26T04:21:04Z
TMCbot
164594
.
6124123
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{pronombre|ca|interrogativo}} ===
;1: {{plm|qué}}
=== {{pronombre|ca|relativo}} ===
;2: {{plm|que}}
== Referencias y notas ==
<references />
j5he3jxpydr6wdvnho6e0y8dol4tcao
quan
0
25836
6124121
5083416
2026-07-26T04:21:01Z
TMCbot
164594
.
6124121
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adverbio|ca|interrogativo}} ===
;1: {{plm|cuándo}}
=== {{adverbio|ca|relativo}} ===
;2: {{plm|cuando}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{adverbio|oc|interrogativo}} ===
;1: {{plm|cuándo}}
=== {{adverbio|oc|relativo}} ===
;2: {{plm|cuando}}
== Referencias y notas ==
<references />
o27e7ogaj8g13h675bxmrsnt9wl8e7o
molt
0
25839
6124112
4548282
2026-07-26T04:20:49Z
TMCbot
164594
.
6124112
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|mucho}}.
;2: {{plm|muy}}.
== Referencias y notas ==
<references />
h3hlxk0u0ekovpbp57yksvtw2hcbtyo
alguns
0
25840
6124088
4841015
2026-07-26T04:20:09Z
TMCbot
164594
.
6124088
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Forma adjetiva ===
;1: {{f.adj2|leng=ca|algun|masculino|pl}}.
=== Forma pronominal ===
;2: {{forma pronombre|leng=ca|algú|plural}}.
== Referencias y notas ==
<references />
e7ejgy1a9uu9jvn2fahrlg4gmrwekhy
poc
0
25841
6124117
4579281
2026-07-26T04:20:55Z
TMCbot
164594
.
6124117
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|poco}}
== Referencias y notas ==
<references />
46yu7wpjooeclalkwqby28u1w254fbl
quatre
0
25844
6124122
5397746
2026-07-26T04:21:02Z
TMCbot
164594
.
6124122
wikitext
text/x-wiki
== {{lengua|an}} ==
{{pron-graf|leng=an}}
=== Etimología ===
{{etimología|leng=an}}.
=== {{adjetivo cardinal|an}} ===
;1: {{plm|cuatro}}.
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo cardinal|ca}} ===
;1: {{plm|cuatro}}.
== {{lengua|fr}} ==
{{pron-graf|leng=fr|g=quattre|gnota=obsoleta}}
=== Etimología ===
{{etimología|leng=fr}}.
=== {{adjetivo cardinal|fr}} ===
;1: {{plm|cuatro}}.
[[Categoría:FR:Números]]
== Referencias y notas ==
<references />
64tro2fj89x72go18qgrk1864gs5yqg
ample
0
25848
6124138
4288075
2026-07-26T04:21:28Z
TMCbot
164594
.
6124138
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|ancho}}.
;2: {{plm|amplio}}.
== Referencias y notas ==
<references />
5048cjk3d4rtyfzzs76uz09zpt8pdmi
gruixut
0
25849
6124107
4491255
2026-07-26T04:20:42Z
TMCbot
164594
.
6124107
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|gordo}}.
== Referencias y notas ==
<references />
p2gfegatzw3wux1mreeop69w3tjnec3
estret
0
25853
6124102
4462865
2026-07-26T04:20:34Z
TMCbot
164594
.
6124102
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
;1: {{plm|estrecho}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{adjetivo|oc}} ===
;1: {{plm|estrecho}}
== Referencias y notas ==
<references />
2sbd8fypseh3wbpp7vg015yoc2s84vg
prim
0
25854
6124151
4586251
2026-07-26T04:21:44Z
TMCbot
164594
.
6124151
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|primus|alt=prīmus|glosa=de primera calidad}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|delgado}}, [[flaco]]
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc|la|primus|alt=prīmus|glosa=de primera calidad}}.
=== {{adjetivo|oc}} ===
;1: {{plm|delgado}}, [[flaco]]
== Referencias y notas ==
<references />
cpy7towvj6wsdbqxw9r913w1eq8afbp
ocell
0
25863
6124115
4558508
2026-07-26T04:20:53Z
TMCbot
164594
.
6124115
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|roa-oca|aucell}}, {{l+|roa-oca|oceyl}}, {{etim|leng=ca|la-lat|aucellus}}, diminutivo de {{l+|la|avis}}.
=== {{sustantivo masculino|ca}} ===
;1: {{plm|ave}}
== Referencias y notas ==
<references />
7j3p8deaycbdbzxe78yxvqb07but5sc
llavor
0
25872
6124147
4530240
2026-07-26T04:21:39Z
TMCbot
164594
.
6124147
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|labor}}.
=== {{sustantivo femenino|ca}} ===
;1: {{plm|semilla}}
== Referencias y notas ==
<references />
27c4nyu4jp65r6esdoypmw79h21uhh3
fulla
0
25874
6124105
4482816
2026-07-26T04:20:39Z
TMCbot
164594
.
6124105
wikitext
text/x-wiki
{{desambiguación|Fulla}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo femenino|ca}} ===
;1: {{plm|hoja}}
== Referencias y notas ==
<references />
qim1is6wbprengdvhbsbfqj7rk43jse
escorça
0
25876
6124100
4456002
2026-07-26T04:20:32Z
TMCbot
164594
.
6124100
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|scortea}}.
=== {{sustantivo femenino|ca}} ===
;1: {{plm|corteza}}
== Referencias y notas ==
<references />
5g31r3rhquqm3x54i47k47jw2g6n318
greix
0
25882
6124106
5015613
2026-07-26T04:20:40Z
TMCbot
164594
.
6124106
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
;1: {{plm|grasa}}
== Referencias y notas ==
<references />
aaclous5mdjnam6j9sop2cs62wnm3uy
banya
0
25884
6124092
5076798
2026-07-26T04:20:20Z
TMCbot
164594
.
6124092
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|roa-oca|bana}}, {{etim|leng=ca|cel-gau|*bannā}}, {{etim|leng=ca|cel-pro|*bandā}}.
==== {{sustantivo femenino|ca}} ====
{{ca.sust}}
;1: {{plm|cuerno}}.
== Referencias y notas ==
<references />
85xnadjkwqtj17l3mejxdyc1zp0whmv
6124157
6124092
2026-07-26T04:24:53Z
Tmagc
158167
6124157
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|roa-oca|bana}}, {{etim|leng=ca|cel-gau|*bannā}}, {{etim|leng=ca|cel-pro|*bandā}}.
==== {{sustantivo femenino|ca}} ====
{{ca.sust|f}}
;1: {{plm|cuerno}}.
== Referencias y notas ==
<references />
jlx8mdax06ojqp3ut6zb5sluz8cvi7x
pèl
0
25887
6124120
4593571
2026-07-26T04:20:59Z
TMCbot
164594
.
6124120
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
;1: {{plm|pelo}}
== Referencias y notas ==
<references />
gqm5ja22izcq87pq1oifw4h725gz7wv
cabell
0
25888
6124095
4886114
2026-07-26T04:20:25Z
TMCbot
164594
.
6124095
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{sustantivo masculino|ca}} ====
{{ca.sust}}
;1: {{plm|cabello}}.
== Referencias y notas ==
<references />
8dh0h6nngni5zzxyiw6vqvapfnpjn75
6124155
6124095
2026-07-26T04:24:25Z
Tmagc
158167
/* {{sustantivo masculino|ca}} */
6124155
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{sustantivo masculino|ca}} ====
{{ca.sust|m}}
;1: {{plm|cabello}}.
== Referencias y notas ==
<references />
sujm8nvbpdmzcnaiidieg3vufq4wi2w
llengua
0
25894
6124110
4530362
2026-07-26T04:20:46Z
TMCbot
164594
.
6124110
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo femenino|ca}} ===
;1: {{plm|lengua}}
== Referencias y notas ==
<references />
7fuaf29zlbkxwxat0q22omf23825xnh
ungla
0
25895
6124128
4669457
2026-07-26T04:21:11Z
TMCbot
164594
.
6124128
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo|ca}} ===
;1: {{plm|uña}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{sustantivo|oc}} ===
;1: {{plm|uña}}
== Referencias y notas ==
<references />
g0fxrvkj69kwzckls7sewx1pc8dhgo5
6124158
6124128
2026-07-26T04:30:28Z
Tmagc
158167
6124158
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|ungula}}.
=== {{sustantivo femenino|ca}} ===
{{ca.sust|f}}
;1: {{plm|uña}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{sustantivo femenino|oc}} ===
;1: {{plm|uña}}
== Referencias y notas ==
<references />
639386ba4fb4pfgs08t4f9j7sm3e3cf
peu
0
25896
6124150
6076246
2026-07-26T04:21:43Z
TMCbot
164594
.
6124150
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
;1: {{plm|pie}}.
== {{lengua|fr}} ==
{{pron-graf|leng=fr}}
=== Etimología ===
{{etimología|leng=fr|fro|pou}}, {{etim|leng=fr|la|paucum}}.
=== {{pronombre indefinido|fr}} ===
;1: {{plm|pocos}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{sustantivo masculino|oc}} ===
;1: {{plm|cabello}}, [[pelo]]
== Referencias y notas ==
<references />
dl6szawwu4hgsjhoxm4jmfbla56d92a
coll
0
25901
6124096
4351220
2026-07-26T04:20:26Z
TMCbot
164594
.
6124096
wikitext
text/x-wiki
{{desambiguación|Coll}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
{{ca.sust}}
;1: {{plm|cuello}}
;2 {{csem|naipes|leng=ca}}: [[palo]], [[pinta]].
== Referencias y notas ==
<references />
onimx4ar3040awymqopi8lsetpqpi81
6124156
6124096
2026-07-26T04:24:40Z
Tmagc
158167
/* {{sustantivo masculino|ca}} */
6124156
wikitext
text/x-wiki
{{desambiguación|Coll}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
{{ca.sust|m}}
;1: {{plm|cuello}}
;2 {{csem|naipes|leng=ca}}: [[palo]], [[pinta]].
== Referencias y notas ==
<references />
eo9t2apen6wmfzqb59jccqviqk7t26u
beure
0
25906
6124063
4931770
2026-07-26T02:31:29Z
Tmagc
158167
6124063
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|h=veure}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{verbo transitivo|ca}} ===
;1: {{plm|beber}}, [[tomar]]
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
obybiujfy863cbge18gvzlnpq03ndcy
6124065
6124063
2026-07-26T02:33:08Z
Tmagc
158167
6124065
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{verbo transitivo|ca}} ===
;1: {{plm|beber}}, [[tomar]]
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
e8qlyhb9nre6idv8ivnwtpeiy0vktf5
escopir
0
25909
6124145
4455803
2026-07-26T04:21:36Z
TMCbot
164594
.
6124145
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca|intransitivo}} ====
;1: {{plm|escupir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
4nxerdkeegurqgzntn45n26jgp2cl6s
bufar
0
25911
6124094
5973311
2026-07-26T04:20:23Z
TMCbot
164594
.
6124094
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|ONOM}}
=== {{verbo intransitivo|es}} ===
;1: {{plm|expeler}} con [[fuerte]] [[sonido]] el [[aire]] de la [[respiración]].
{{sinónimo|resollar|resoplar}}.
;2: Por extensión, dar muestras de [[desagrado]] o [[ira]].
{{uso|coloquial}}
;3: Expeler aire por la [[boca]].
{{ámbito|Murcia}}
{{uso|coloquial}}
{{sinónimo|soplar}}.
=== Conjugación ===
{{es.v}}
=== Véase también ===
* [[bufarse]]
=== Traducciones ===
{{trad-arriba}}
{{t|fr|a1=1|t1=renifler}}
{{t|en|a1=1,2|t1=snort}}
{{t|it|a1=1,2|t1=sbuffare}}
{{t|nl|i1=s|t1=tekeergaan}}
{{t|pt|a1=1|t1=bufar}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm}}, [[soplar]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
1d7s4ireuap49t43dhb166d8dlox8i7
riure
0
25912
6124125
4624044
2026-07-26T04:21:06Z
TMCbot
164594
.
6124125
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|reír}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
rwwl2ms8h5x0ukqc17qtil0hwmfiahe
veure
0
25913
6124064
4675331
2026-07-26T02:32:52Z
Tmagc
158167
6124064
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{verbo|ca|transitivo}} ===
;1: {{plm|ver}}.
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
dultbujhylz49yncsacqqltwvimbm5r
olorar
0
25914
6124116
4560048
2026-07-26T04:20:54Z
TMCbot
164594
.
6124116
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca|transitivo}} ====
;1: {{plm|oler}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
esz8ttha6239px0b809qh7ejo8zo0k7
viure
0
25916
6124129
4677691
2026-07-26T04:21:12Z
TMCbot
164594
.
6124129
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{verbo intransitivo|ca}} ===
;1: {{plm|vivir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
6p6q0i3s3azkq6ovgbiwey7i206un2b
tallar
0
25921
6124127
5799271
2026-07-26T04:21:09Z
TMCbot
164594
.
6124127
wikitext
text/x-wiki
{{desambiguación}}
{{esbozo}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología}}
=== {{verbo transitivo|es}} ===
;1: <ref name="drae">{{DRAE2001}}</ref>
;2: <ref name="drae" />
;3: <ref name="drae" />
;4: <ref name="drae" />
;5: <ref name="drae" />
;6: <ref name="drae" />
{{ámbito|México}}
;7: <ref name="drae" />
{{ámbito|México}}
{{uso|utcp}}
;8: <ref name="drae" />
{{uso|desusado}}
;9: <ref name="drae" />
{{uso|anticuado}}
=== {{verbo intransitivo|es}} ===
;10: <ref name="drae" />
{{uso|coloquial}}
;11: <ref name="drae" />
{{uso|coloquial|utcp}}
;12: <ref name="drae" />
{{uso|coloquial|utcp|utct}}
;13: <ref name="drae" />
{{ámbito|Cuba}}
;14: <ref name="drae" />
{{ámbito|Cuba}}
=== Conjugación ===
{{es.v}}
=== Véase también ===
* [[tallarse]]
=== Traducciones ===
{{trad-arriba}}
{{t|nl|i1=s|t1=hakhout|t2=slijpen|t3=uitsnijden|t4=wegsteken}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la-vul|*taleāre}}, {{etim|leng=ca|la|talea}}.
=== {{verbo transitivo|ca}} ===
;1: {{plm|cortar}}.
;2: {{plm|rebanar}}.
;3: {{plm|talar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
bdqem1et6v0kzoq4xqf1pwzkk1m7k2g
nedar
0
25925
6124149
4553849
2026-07-26T04:21:41Z
TMCbot
164594
.
6124149
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|fone|nadar}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|nadar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
eixvorlzt684ihbubrdrl5vedvend1f
venir
0
25927
6124039
5925363
2026-07-26T01:06:19Z
Tmagc
158167
/* {{lengua|ca}} */
6124039
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-venir.wav}}
{{ampliable}}
=== Etimología 1 ===
{{etimología|la|venire|diacrítico=venīre}}.
==== {{verbo intransitivo|es}} ====
;1: Trasladarse hacia [[acá]].
{{sinónimos|acercarse|arribar|llegar}}.
{{antónimo|irse|marcharse}}.
;2: Ir hacia donde está el que habla.
{{sinónimos|arribar|llegar}}.
;3: Ir de un [[lado]] hacia otro.
{{sinónimos|andar|caminar}}.
{{ejemplo|Estar ''viniendo'' por todas partes.}}
;4: Ir una cosa [[a continuación]] de otra.
{{sinónimos|seguir|suceder}}.
{{ejemplo|¿Y qué ''viene'' ahora?}}
;5: Tener una cosa el origen en otra, [[proceder]] de otra cosa.
{{sinónimos|dimanar|nacer|originarse}}.
{{ejemplo|La patata ''viene'' de América.}}
;6: Ser una cosa la [[consecuencia]] de otra, o poder llegar a ella por [[deducción]] o [[inferencia]].
{{relacionado|herencia|causa|origen}}.
{{ejemplo|La dulzura de la niña le ''vendría'' de la educación que le dio su madre.}}
;7: Tener un origen que se transmite de persona en persona.
{{sinónimos|heredar|recibir}}.
{{ejemplo|Es una costumbre que ''viene'' de nuestros antepasados.}}
;8: Cambiar la [[posesión]] de algo pasando sucesivamente de una persona a otra.
{{sinónimos|obtener|recibir|heredar}}.
{{ejemplo|''Venir'' de mano en mano.}}
;9: Producirse algo.
{{sinónimos|ocurrir|suceder}}.
{{ejemplo|Le ''vino'' un desmayo.}}
;10: Tener una idea o intención que aparece de forma inesperada o incontrolada.
{{sinónimos|aparecer|surgir}}.
{{ejemplo|Le ''vino'' un deseo irresistible de abrazarlo.}}
;11: Aparecer por primera vez o comenzar.
{{sinónimos|iniciarse|manifestarse}}.
{{ejemplo|''Venirle'' la sensatez al pasar la juventud.}}
;12: Aparecer, mostrarse o estar en un medio escrito.
{{sinónimos|publicarse}}.
{{ejemplo|Esa noticia ''viene'' en la sección deportes.}}
;13: Estar originalmente en un [[conjunto]] mayor de cosas.
{{sinónimos|incluirse|formar parte}}.
{{ejemplo|''Venía'' con los muebles que compramos.}}
;14: Tener las [[forma]]s o [[condición|condiciones]] adecuadas.
{{sinónimos|acomodarse|ajustarse|sentar}}.
{{ejemplo|Ese traje te ''viene'' bien.}}
;15: Retornar al tema inicial en una [[discusión]], [[exposición]] de ideas o [[charla]].
{{sinónimos|retomar|volver}}.
{{ejemplo|Después de este paréntesis, nuevamente ''vengo'' a nuestro asunto.}}
;16: Llegar a un [[punto]] en que ambas partes pueden conciliar sus intereses.
{{sinónimos|avenirse|conformarse|transigir}}.
{{ejemplo|''Venir'' a un acuerdo.}}
;17: En expresiones temporales, estar [[acercar|acercándose]] el momento, estar [[próximo]].
{{sinónimos|próximo}}.
{{ejemplo|El lunes que ''viene''.}}
;18: {{plm|permanecer}} o estar en una condición por largo tiempo.
{{sinónimos|persistir}}.
{{ejemplo|''Viene'' con una tos desde hace semanas.}}
;19: Ocurrir finalmente algo que se esperaba desde hace tiempo.
{{sinónimos|acaecer|sobrevenir|suceder}}.
{{ejemplo|Tras una penosa enfermedad, ''vino'' a morir esta semana.}}
;20: Ocurrir tras mucho pedir, con mucho esfuerzo.
{{sinónimos|acaecer|llegar}}.
{{ejemplo|Después de mucho hacerse de rogar, ''vino'' a aceptar.}}
;21: Presentarse ante un [[juez]].
{{sinónimos|comparecer}}.
;22: Tomar una decisión alguna autoridad.
{{sinónimos|decidir}}.
{{ejemplo|Yo, presidente de esta Corte, ''vengo en'' declarar culpable al acusado.}}
;23: Con algunos sustantivos forma una [[locución verbal]] con el significado del sustantivo.
{{ejemplo|''Venir'' en conocimiento.}}
;24: Precipitarse, arrojarse sobre algo o alguien.
{{sinónimos|arrojarse|caer}}.
{{ejemplo|El granizo ''vino'' sobre nuestras cabezas. El enemigo ''vino'' sobre nosotros.}}
;25: Ser aproximadamente, mostrarse más o menos equivalente a algo.
{{sinónimos|equivaler}}.
{{ejemplo|Esto ''viene'' a ser una disculpa por la tardanza.}}
;26: Estar por hacer algo de un momento a otro, sin tardanza.
{{ejemplo|''Venir'' a partido.}}
;27: Sacar a [[relucir]] algo inesperado o inapropiado.
{{ejemplo|''Venir'' con mentiras.}}
==== Locuciones ====
{{trad-arriba|locuciones}}
:*[[al que le venga el saco que se lo ponga]]
:*[[al que le venga el sayo que se lo ponga]]: Quien se sienta aludido, que reaccione en consecuencia. Se usa para acusar una falta, sin mencionar a nadie en especial.
:*¿[[a qué viene]] eso, alguna cosa?: Indica molestia por algo inoportuno.
:*[[como vino al mundo]]: Desnudo.
:*[[el que venga detrás, que arree]]
:*[[en lo por venir]]: En el futuro, en lo sucesivo.
:*¡[[ven acá]]!: Se usa para llamar y reconvenir a alguien.
:*¡[[venga]]!:
::Expresa conformidad (España, coloquial)
::Se usa para animar, para exigir más rapidez. (España, coloquial)
:*[[venga lo que viniere]]: Se usa para indicar que una resolución tomada no variará frente a circunstancias adversas.
:*¡[[venga ya]]!: Expresa incredulidad (España, coloquial)
:*[[venir a cuento]]: Hacer al caso
:*[[venir a la memoria]]: Recordar
:*[[venir a las manos]]: Golpearse, pelearse luego de una discusión acalorada.
:*[[venir al caso]]
:*[[venir alguien bien en]] algo: Acceder
:*[[venir a mano]]
:*[[venir a menos]]: Echarse a perder, decaer.
:*[[venir ancho]]
:*[[venir clavado]] algo: Venir de perillas (España, coloquial)
:*[[venir de la chacra]]
:*[[venir en gana]]
:*[[venir grande]]
:*[[venirle ancho]] algo a alguien
:*[[venirle angosto]] algo a alguien
:*[[venirle grande]] algo a alguien
:*[[venirle muy ancho]] algo a alguien
:*[[venirle muy grande]] algo a alguien
:*[[venirle su sanmartín]]
:*[[venir mal dadas]]: Verse mal un asunto, ser adverso.
:*[[venir pequeño]]
:*[[venir rodado]] algo: Ocurrir justo lo que se deseaba.
:*[[verlas venir]]
:*[[ver venir]]
{{trad-abajo}}
==== Conjugación ====
{{es.v}}
==== Véase también ====
*[[venirse]]
==== Traducciones ====
{{trad-arriba}}
{{t|af|t1=kom}}
{{t|ain|t1=エㇰ|t2=アㇽキ|t3=アㇻキ}}
{{t|de|t1=kommen}}
{{t|sai-all|a1=1-2|t1=yqueynen|a2=1-2|t2=mayecnen}}
{{t|bg|t1=идвам}}
{{t|bg|t1=дохождам}}
{{t|bg|t1=ходя}}
{{t|bg|t1=вървя}}
{{t|bg|t1=следвам}}
{{t|bg|t1=произхождам}}
{{t|ca|t1=venir|t2=vindre}}
{{t|da|t1=komme}}
{{t|fr|t1=venir}}
{{t|eo|t1=veni}}
{{t|fi|t1=tulla}}
{{t|fy|t1=komme}}
{{t|fo|t1=koma}}
{{t|gd|t1=thig|t2=tiugainn}}
{{t|got|t1=𐌵𐌹𐌼𐌰𐌽}}
{{t|gl|t1=vir}}
{{t|el|t1=έρχομαι}}
{{t|hu|t1=jön}}
{{t|hbo|t1=בּוא|t2=בוא|g2=m}}
{{t|io|t1=venar}}
{{t|en|t1=come}}
{{t|ang|t1=gecuman}}
{{t|is|t1=koma}}
{{t|it|a1=1,2,4,5,7,9,10,12,13|t1=venire}}
{{t|ja|t1=来る|t2=くる}}
{{t|la|t1=venire}}
{{t|ms|t1=datang}}
{{t|arn|a1=1-2|t1=küpan}}
{{t|yua|t1=taal}}
{{t|mn|t1=ирэх}}
{{t|nb|t1=komme}}
{{t|nl|t1=komen}}
{{t|pap|t1=bin|t2=bini}}
{{t|pl|t1=pójść|t2=przychodzić}}
{{t|pt|t1=chegar|t2=vir|t3=ir}}
{{t|rw|t1=za}}
{{t|ro|t1=veni}}
{{t|ru|t1=приходить}}
{{t|srn|t1=kon}}
{{t|sv|t1=komma}}
{{t|tl|t1=pumaríto}}
{{t|tr|t1=gelmek}}
{{t|zu|t1=-fika|t2=-za}}
{{trad-abajo}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast|la|venire|diacrítico=venīre}}.
==== {{verbo intransitivo|ast}} ====
;1: {{plm|venir}}.
==== Conjugación ====
{{ast.v}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|venire|diacrítico=venīre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|venir}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr}}
=== Etimología 1 ===
{{etimología|leng=fr|la|venire|diacrítico=venīre}}.
==== {{verbo intransitivo|fr}} ====
;1: {{plm|venir}}.
==== Conjugación ====
{{fr.v|être=s}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc|}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{verbo intransitivo|oc}} ===
;1: {{plm}}.
== Referencias y notas ==
<references />
snsrm9sdmys3b2z2nd499mgvqz1bnhy
seure
0
25929
6124072
4634373
2026-07-26T02:45:12Z
Tmagc
158167
6124072
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|fone=ˈsew.ɾə}}
=== Etimología ===
{{etimología|la|sedere|leng=ca}}
=== {{verbo intransitivo|ca}} ===
;1: Estar [[sentado]]
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
brf687nql56hwy4mova7ojt8crgxo5r
6124073
6124072
2026-07-26T02:46:17Z
Tmagc
158167
6124073
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|fone=ˈsew.ɾə}}
=== Etimología ===
{{etimología|la|sedere|leng=ca}}
=== {{verbo intransitivo|ca}} ===
;1: {{plm|sentar}}se.
;2: Estar [[sentado]].
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
br12rnk2sv756bhdnusxrkmeey0wijl
estar dret
0
25930
6124101
4460668
2026-07-26T04:20:33Z
TMCbot
164594
.
6124101
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== {{locución verbal|ca}} ===
;1: {{plm|estar de pie}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== {{locución verbal|oc}} ===
;1: {{plm|estar de pie}}
== Referencias y notas ==
<references />
9hmeqkd231eizuxwhnc3fgljyct0vv9
empènyer
0
25938
6124099
4433230
2026-07-26T04:20:31Z
TMCbot
164594
.
6124099
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|empujar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
ipyhyjw5gdwqxc2p5c35k0x7c61kg0a
llençar
0
25939
6124111
4530375
2026-07-26T04:20:47Z
TMCbot
164594
.
6124111
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|fone|llançar}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|tirar}}, [[botar]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
966w9pqv9zbhvcr6ux6x5vdcht7dew5
flotar
0
25944
6124103
5958640
2026-07-26T04:20:36Z
TMCbot
164594
.
6124103
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|1audio1=LL-Q1321 (spa)-Rodelar-flotar.wav}}
=== Etimología ===
{{etimología|fr|flotter}}
=== {{verbo intransitivo|es}} ===
;1: Sostenerse sin el [[sustento]] de un medio [[sólido]], sea sobre un [[líquido]], un [[gas]] o en el [[vacío]].
;2: Por extensión, [[permear]] alguna [[sensación]] o [[emoción]] el [[ambiente]] sin limitarse a un aspecto concreto.
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{t|af|a1=1|t1=dryf|a2=1|t2=sweef}}
{{t|de|a1=1|t1=schwimmen}}
{{t|ca|a1=1|t1=flotar}}
{{t|zh|a1=1|t1=漂浮}}
{{t|eo|a1=1|t1=floti}}
{{t|et|a1=1|t1=ujuda}}
{{t|fi|a1=1|t1=kellua}}
{{t|fr|a1=1|t1=flotter}}
{{t|gl|a1=1|t1=flotar}}
{{t|io|a1=1|t1=flotacar}}
{{t|en|a1=1|t1=float}}
{{t|it|a1=1|t1=galleggiare}}
{{t|nl|a1=1|t1=drijven}}
{{t|pt|a1=1|t1=boiar}}
{{t|ru|a1=1|t1=плавать}}
{{t|sv|a1=1|t1=flyta}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología ===
{{etimología|leng=gl}}.
=== {{verbo|gl}} ===
;1: {{plm}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{verbo|oc}} ===
;1: {{plm}}.
== Referencias y notas ==
<references />
i00grj432zezhgdqtnqkwwmkwo1e7k8
núvol
0
25957
6124114
4556990
2026-07-26T04:20:52Z
TMCbot
164594
.
6124114
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
;1: {{plm|nube}}
== Referencias y notas ==
<references />
nc38d0ce362q2wgp9gz0kppmcy0sk5k
foc
0
25964
6124104
4834378
2026-07-26T04:20:37Z
TMCbot
164594
.
6124104
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{sustantivo masculino|ca}} ===
;1: {{plm|fuego}}
== {{lengua|ro}} ==
{{pron-graf|leng=ro}}
=== Etimología ===
{{etimología|leng=ro}}.
=== {{sustantivo|ro}} ===
;1: {{plm|fuego}}
[[Categoría:RO:Lista Swadesh]]
== {{lengua|vec}} ==
{{pron-graf|leng=vec}}
=== Etimología ===
{{etimología|leng=vec}}
=== {{sustantivo|vec}} ===
;1: {{plm|fuego}}.
{{ámbito|leng=vec|Belluno}}.
== Referencias y notas ==
<references />
800ed6bi26r73wy73abuqmyavi0693h
cendres
0
25965
6124134
4339205
2026-07-26T04:21:19Z
TMCbot
164594
.
6124134
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=ca|cendra|plural}}.
== {{lengua|fr}} ==
{{pron-graf|leng=fr}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=fr|cendre|plural}}.
== Referencias y notas ==
<references />
ag9ez3phv4fft5ivx6czayaxu7qjt2y
negre
0
25974
6124113
4554046
2026-07-26T04:20:50Z
TMCbot
164594
.
6124113
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
;1: {{plm|negro}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{adjetivo|oc}} ===
;1: {{plm|negro}}
== Referencias y notas ==
<references />
kyfr2ngvmchutwc5vovt0yd8gmh6xct
podrit
0
25983
6124118
4579410
2026-07-26T04:20:57Z
TMCbot
164594
.
6124118
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1:[[podrido]]
== Referencias y notas ==
<references />
1m39xl3vys9ypsn1o5sgkz95q4aebvd
recte
0
25985
6124124
4603315
2026-07-26T04:21:05Z
TMCbot
164594
.
6124124
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|recto}}
== Referencias y notas ==
<references />
rkqagu3zjio5aj5j11p433mb9lkf1sx
mullat
0
25991
6124148
4551034
2026-07-26T04:21:40Z
TMCbot
164594
.
6124148
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|mojado}}.
== Referencias y notas ==
<references />
hkcr50vhp54pif2gf81hq1ewy44iems
humit
0
25992
6124108
4500386
2026-07-26T04:20:43Z
TMCbot
164594
.
6124108
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|húmedo}}.
== Referencias y notas ==
<references />
eqs1avhc1deyiyhhin44v9wtal7qvny
sec
0
25993
6124126
4631366
2026-07-26T04:21:08Z
TMCbot
164594
.
6124126
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|seco}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr}}
=== Etimología ===
{{etimología|leng=fr}}.
=== {{adjetivo|fr}} ===
;1: {{plm|seco}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{adjetivo|oc}} ===
;1: {{plm|seco}}
== Referencias y notas ==
<references />
74ebu9gfqhgsex04j4p5e2pyo7yuudd
correcte
0
25994
6124098
4367188
2026-07-26T04:20:29Z
TMCbot
164594
.
6124098
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{adjetivo|ca}} ===
{{ca.adj}}
;1: {{plm|correcto}}.
== Referencias y notas ==
<references />
4akgdij2cexvzu7oh0bkvg41c2zbkk0
tenir
0
26974
6124044
5689713
2026-07-26T01:53:20Z
Tmagc
158167
6124044
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|tener}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr|fono=tə.niʁ}}
=== Etimología ===
{{etimología|leng=fr}}
=== {{verbo|fr}} ===
;1: {{plm|tener}}, [[llevar]], [[sujetar]], [[sostener]]
== Referencias y notas ==
<references />
tetv4f1tb7rwouikb8apu54yze77vb8
anar
0
27129
6124000
5610616
2026-07-25T22:41:42Z
Tmagc
158167
6124000
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
=== {{verbo intransitivo|ca}} ===
;1: {{plm|ir}}
=== Conjugación ===
{{ca.v}}
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología ===
{{etimología|leng=oc}}.
=== {{verbo|oc}} ===
;1: {{plm|caminar}}
== {{lengua|qya}} ==
{{pron-graf|leng=qya}}
=== Etimología ===
{{etimología|leng=qya}}.
=== {{sustantivo|qya}} ===
;1: {{plm|sol}}<ref>{{Anarda}}</ref>.
== Referencias y notas ==
<references />
1fb076hx1r19j9semdt8l40g2untunt
egg
0
27385
6123957
6067333
2026-07-25T20:36:27Z
CitationsFreak
149699
/* {{lengua|en}} */ -- la palabara es hablan especialmente críquet, pero no sé describir bien en español.
6123957
wikitext
text/x-wiki
== {{lengua|en}} ==
{{pron-graf|leng=en
|2pron=algunos acentos de Canada y EE. UU.|2fono=eɪɡ|audio=en-us-egg.ogg|aunota=EE. UU.|fono=ɛɡ}}
=== Etimología ===
{{etimología|leng=en}}.
=== {{sustantivo|en}} ===
{{en.sust|ci}}
;1 {{csem|leng=en|alimentos}}: {{plm|huevo}}
;2 {{csem|leng=en|deportes}}: marcado de cero
== {{lengua|is}} ==
{{pron-graf|leng=is}}
=== Etimología ===
{{etimología|leng=is}}.
=== {{sustantivo|is}} ===
;1: {{plm|huevo}}
=== Locuciones ===
:* [[egg in a nest]] o [[egg in a basket]], pan tostado con un huevo frito en el centro.
:* [[goose egg]], cero.
== Referencias y notas ==
<references />
friveww1j4pu1uc29i60pauvwbzwum3
6123985
6123957
2026-07-25T21:43:29Z
Tmagc
158167
/* {{sustantivo|en}} */
6123985
wikitext
text/x-wiki
== {{lengua|en}} ==
{{pron-graf|leng=en
|2pron=algunos acentos de Canada y EE. UU.|2fono=eɪɡ|audio=en-us-egg.ogg|aunota=EE. UU.|fono=ɛɡ}}
=== Etimología ===
{{etimología|leng=en}}.
=== {{sustantivo|en}} ===
{{en.sust|ci}}
;1 {{csem|leng=en|alimentos}}: {{plm|huevo}}
;2 {{csem|leng=en|deportes}}: Puntuación nula.
== {{lengua|is}} ==
{{pron-graf|leng=is}}
=== Etimología ===
{{etimología|leng=is}}.
=== {{sustantivo|is}} ===
;1: {{plm|huevo}}
=== Locuciones ===
:* [[egg in a nest]] o [[egg in a basket]], pan tostado con un huevo frito en el centro.
:* [[goose egg]], cero.
== Referencias y notas ==
<references />
hrtfgqglgqugsrh4gx5ukpq6cyubbjx
wash
0
27426
6123798
5915226
2026-07-25T20:23:20Z
Adelpine
34679
Precisa los hablantes de algunas transcripciones AFI
6123798
wikitext
text/x-wiki
== {{lengua|en}} ==
{{pron-graf|leng=en
|pron=Received Pronunciation|fono=wɒʃ|audio=En-uk-to wash.ogg|aunota="to wash" (Londres)
|2pron=General American y dialectos de los EE. UU., con lot-cloth split|2fono=wɔʃ
|3pron=EE. UU. con r intrusiva, San Luis (Misuri)|3fono=wɔɹʃ
|4pron=General American y Atlantic Canadian, con la fusión cot–caught; ciudad de Nueva York|4fono=wɑʃ|4audio=En-us-wash.ogg|4aunota=California
|5pron=Standard Canadian, Boston, Maine|5fono=wɒʃ
|6pron=Australia|6fono=wɔʃ
|7pron=Nueva Zelanda|7fono=wɒʃ|7fone2=wɔ̟ʃ
}}
=== Etimología ===
{{etimología|leng=en}}.
=== {{verbo|en}} ===
;1: {{plm|lavar}}.
=== Conjugación ===
{{en.v}}
== Referencias y notas ==
<references />
d3701mc0dtralkmf9y1jpw1lzc3n1v3
lang
0
27504
6124109
6078377
2026-07-26T04:20:44Z
TMCbot
164594
.
6124109
wikitext
text/x-wiki
== {{lengua|af}} ==
{{pron-graf|leng=af}}
=== Etimología ===
{{etimología|leng=af|nl|lang}}.
=== {{adjetivo|af}} ===
;1: {{ucf|largo}}.
== {{lengua|de}} ==
{{pron-graf|leng=de|audio=De-lang.ogg|audio2=De-lang2.ogg|aunota2=Berlín|fone=laŋ}}
=== Etimología ===
{{etimología|leng=de|goh|lang}}, y este del protogermánico {{l+|gem-pro|*langaz}}.
==== {{adjetivo|de}} ====
;1: {{ucf|largo}}.<ref name="dwds">{{DWDS}}</ref>
{{antónimo|leng=de|kurz}}
===== Declinación =====
{{de.adj|comp=^}}
==== {{adverbio|de}} ====
;2: ''Con idea de movimiento'': a lo [[largo]] (de), siguiendo el trayecto (de).<ref name="dwds" />
{{uso|leng=de|familiar}}
{{sinónimo|leng=de|entlang}}
{{ejemplo|leng=de|Ich gehe am Straßenrand ''lang''|trad=Voy por el borde de la calle (lit.: Voy ''a lo largo'')}}
;3: Al [[costado]] (de), al [[lado]] (de).<ref name="dwds" />
{{uso|leng=de|familiar}}
{{sinónimo|leng=de|entlang}}
==== {{preposición|de}} ====
;4: ''Con idea de movimiento'': a lo [[largo]] de, siguiendo el trayecto de.<ref name="dwds" />
{{uso|leng=de|familiar|con acusativo}}
{{sinónimo|leng=de|entlang}}
{{ejemplo|leng=de|Ich gehe der Straße lang|trad=Voy ''siguiendo el trayecto de''}}
=== Forma verbal ===
;1: {{f.v|leng=de|langen|2s|imperativo|glosa=alcanzar|pron=du}}.
== {{lengua|da}} ==
{{pron-graf|leng=da|fone=laŋˀ}}
=== Etimología ===
{{etimología|leng=da|non|langr}}.
=== {{adjetivo|da}} ===
{{da.adj|langt|lange|længere|længst|længste}}
;1: {{ucf|largo}}.
{{antónimo|leng=da|kort}}
== {{lengua|fy}} ==
{{pron-graf|leng=fy}}
=== Etimología ===
{{etimología|leng=fy}}.
=== {{adjetivo|fy}} ===
;1: {{ucf|largo}}.
== {{lengua|tlh}} ==
{{pron-graf|leng=tlh}}
=== Etimología ===
{{etimología|leng=tlh}}.
=== {{verbo intransitivo|tlh}} ===
;1: {{plm|ser}} {{l|leng=tlh|es|flaco}}.
{{uso|leng=tlh|utca}}
== {{lengua|nl}} ==
{{pron-graf|leng=nl|audio=Nl-lang.ogg|fone=lɑŋ}}
=== Etimología ===
{{etimología|leng=nl}}.
=== {{adjetivo|nl}} ===
;1: {{ucf|largo}}.
== Referencias y notas ==
<references />
lo06cy82w7bga6lx6otw837i1aokk97
heure
0
32604
6124059
6076585
2026-07-26T02:25:26Z
Tmagc
158167
6124059
wikitext
text/x-wiki
{{desambiguación|heuré}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
==== {{verbo transitivo|ca}} ====
;1: {{variante|leng=ca|haver}} (poseer).<ref name="GDLC">{{GDLC}}</ref>
{{ámbito|leng=ca|oriental}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr
|1fono1=œʁ|1audio1=Fr-heure.ogg|aunota=París, [l‿œːʁ]
|2pron1=Francia Meridional|2fono1=ˈœ.ʁə|2audio=LL-Q150 (fra)-X-Javier-heure.wav|2aunota=Massy, [ˈœː.ʁə]
|3pron1=Quebec|3fone1=œːʁ
|h1=Eure|h2=heur|h3=heurs|h4=heures|h5=heurt|h6=heurts
}}
=== Etimología ===
{{etimología|leng=fr|frm|heure|hora}}, y este del francés antiguo {{l+|fro|houre|glosa=hora}}, del latín {{l+|la|hora|hōra|glosa=hora}}, del griego antiguo {{l+|grc|ὥρα|tr=hṓra}}. Atestiguado (en francés antiguo) desde ∼1050.<ref name="DAF8">{{DAF8}}</ref>
=== {{sustantivo femenino|fr}} ===
{{fr.sust}}
;1 {{csem|leng=fr|unidades de tiempo}}: {{plm|hora}}.
;2: {{plm|hora}} (últimos instantes vitales).
;3 {{csem|leng=fr|astronomía}}: {{plm|hora}}.
=== Locuciones ===
{{trad-arriba|Locuciones}}
* {{l+|fr|à cette heure}}
* {{l+|fr|à la bonne heure}}
* {{l+|fr|à l’heure}}
* {{l+|fr|à l’heure dite}}
* {{l+|fr|à l’heure qu’il est}}
* {{l+|fr|à point d’heure}}
* {{l+|fr|à ses heures}}
* {{l+|fr|à toute heure}}
* {{l+|fr|ampère-heure}}
* {{l+|fr|avoir de bons et de mauvais quarts d’heure}}
* {{l+|fr|belle-d’onze-heures}}
* {{l+|fr|belle heure}}
* {{l+|fr|bonne heure}}
* {{l+|fr|bouillon de onze heures}}
* {{l+|fr|cadran de 12 heures}}
* {{l+|fr|cadran de 24 heures}}
* {{l+|fr|chercher midi à quatorze heures}}
* {{l+|fr|dame-d’onze-heures}}
* {{l+|fr|de toutes les heures}}
* {{l+|fr|demi-heure}}
* {{l+|fr|dernière heure}}
* {{l+|fr|d’heure en heure, d’une heure à l’autre}}
* {{l+|fr|être à l’heure}}
* {{l+|fr|exawatt-heure}}
* {{l+|fr|fuite des heures}}
* {{l+|fr|heure astronomique}}
* {{l+|fr|heure avancée}}
* {{l+|fr|heure de fourche}}
* {{l+|fr|heure dernière}}
* {{l+|fr|heure double}}
* {{l+|fr|heure du berger}} (figurado)
* {{l+|fr|heure favorable}}
* {{l+|fr|heure indue}}
* {{l+|fr|heure normale}}
* {{l+|fr|heure propice}}
* {{l+|fr|heure supplémentaire}}
* {{l+|fr|heure suprême}}
* {{l+|fr|heures canoniales}} (religión)
* {{l+|fr|heures de loisir}}
* {{l+|fr|heures dérobées}}
* {{l+|fr|heures perdues}}
* {{l+|fr|gigawatt-heure}}
* {{l+|fr|hectowatt-heure}}
* {{l+|fr|kilomètre-heure}}
* {{l+|fr|kilowatt-heure}}
* {{l+|fr|l’heure qu’il était hier à la même heure}}
* {{l+|fr|livre d’heures}}
* {{l+|fr|lumen-heure}}
* {{l+|fr|mégawatt-heure}}
* {{l+|fr|mettre à l’heure}}
* {{l+|fr|ne pas avoir une heure à soi}}
* {{l+|fr|passer un mauvais quart d’heure}}
* {{l+|fr|pétawatt-heure}}
* {{l+|fr|petites heures}} (religión)
* {{l+|fr|pour l’heure}} (familiar)
* {{l+|fr|prendre l’heure}}
* {{l+|fr|prières de quarante heures}}
* {{l+|fr|quarante heures}} (catolicismo)
* {{l+|fr|quarante-huit heures}}
* {{l+|fr|quart d’heure de grâce}}
* {{l+|fr|quart d’heure de Rabelais}}
* {{l+|fr|quatre-vingt-seize heures}}
* {{l+|fr|soixante-douze heures}}
* {{l+|fr|sur l’heure}}
* {{l+|fr|tout à l’heure}}
* {{l+|fr|trente-six heures}}
* {{l+|fr|vingt-quatre heures}}
* {{l+|fr|térawatt-heure}}
* {{l+|fr|toutes ses heures sont marquées}}
* {{l+|fr|watt-heure}}
* {{l+|fr|yottawatt-heure}}
* {{l+|fr|zettawatt-heure}}
{{trad-abajo}}
=== Información adicional ===
{{derivad|heures|heurette|horaire|horloge|horloger|horlogerie|horodatage|horodateur|horodictique|horographe|horographie|horographique|horokilométrique|horométrie|horométrique|horoptère|horoscope|horoscopie|horoscopique|horoscopiser|horotrope}}
== {{lengua|frm}} ==
{{pron-graf|leng=frm}}
=== Etimología ===
{{etimología|leng=frm|fro|houre|hora}}.
=== {{sustantivo femenino|frm}} ===
{{inflect.frm.sust.reg}}
;1 {{csem|leng=frm|unidades de tiempo}}: {{plm|hora}}.
== Referencias y notas ==
<references />
8y1w1k78aqhwa7nmg0dsjge0f025e1o
fer
0
33467
6124020
5922858
2026-07-25T23:22:32Z
Tmagc
158167
/* {{lengua|ca}} */
6124020
wikitext
text/x-wiki
== {{lengua|br}} ==
{{pron-graf|leng=br|1fone1=ˈf̬eːr}}
=== Forma flexiva ===
==== Forma sustantiva ====
;1: {{forma|leng=br|per|mutación aspirada del sustantivo colectivo|glosa=peras|tipo=mutación}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|facere}}.
==== {{verbo|ca}} ====
;1: {{plm|hacer}}.
==== Conjugación ====
{{ca.v}}
=== Etimología 2 ===
{{etimología|leng=ca|la|ferus}}.
==== {{adjetivo|ca}} ====
;1: {{plm|fiero}}.
== {{lengua|fr}} ==
{{pron-graf|leng=fr|h1=fers|h2=faire}}
=== Etimología 1 ===
{{etimología|leng=fr|la|ferrum}}.
==== {{sustantivo masculino|fr}} ====
{{fr.sust}}
;1: {{plm|hierro}}.
== {{lengua|sga}} ==
{{pron-graf|leng=sga|1fone1=fʲer}}
=== Etimología 1 ===
{{etimología|leng=sga|ine-pro|*wihₓrós}}.
==== {{sustantivo masculino|sga}} ====
;1 {{csem|leng=sga|parentesco}}: {{plm|marido}}.
;2 {{csem|leng=sga|parentesco}}: {{plm|varón}}.
==== Descendientes ====
{{trad-arriba|Descendientes}}
{{d|gd|d1=fear}}
{{d|ga|d1=fear}}
{{d|gv|d1=fer}}
{{trad-abajo}}
== {{lengua|gv}} ==
{{swadesh|gv|037dooinney}}
{{pron-graf|leng=gv}}
=== Etimología 1 ===
{{etimología|leng=gv|sga|fer}}.
==== {{sustantivo masculino|gv}} ====
;1: {{plm|varón}}.
{{sinónimo|leng=gv|dooinney}}
== {{lengua|vo}} ==
{{pron-graf|leng=vo}}
=== Etimología 1 ===
{{etimología|leng=vo}}.
==== {{sustantivo|vo}} ====
;1: {{plm|hierro}}.
== Referencias y notas ==
<references />
tdcjnjb6h46833ao5s3e0v27u2meu5x
ü
0
33760
6124130
6073105
2026-07-26T04:21:14Z
TMCbot
164594
.
6124130
wikitext
text/x-wiki
{{desambiguación|U|u|∪|ù|Ù|ú|Ú|Ü|û|Û|ũ|ų|Ų|ū|Ū|ŭ|Ŭ|û|Û|ʉ|ʊ|ʋ|υ|ύ|ϋ|ΰ|ῦ|ὐ|ὔ|ὒ|ὖ|ὑ|ὕ|ὓ|ὗ|ῢ|ῧ|ῡ|ῠ|-u|u-|'u|ᥩ}}
== {{lengua|mul}} ==
=== {{letra|mul}} ===
;1 {{csem|lingüística|leng=mul}}: Letra [[u]] minúscula con [[diéresis]] o [[umlaut]].
== {{lengua|vo}} ==
{{pron-graf|leng=vo}}
=== Etimología ===
{{etimología|leng=vo}}
=== {{conjunción|vo}} ===
;1: {{plm|o}}.
== {{lengua|arn}} ==
{{pron-graf|leng=arn|1fone1=ɨ}}
=== {{letra|arn}} ===
;1: Sexta vocal del [[mapudungun]].
== Referencias y notas ==
<references />
gj8zi6qx8myavcnt070bccz55ua4stl
رأى
0
34926
6124153
5407662
2026-07-26T04:22:59Z
Tmagc
158167
6124153
wikitext
text/x-wiki
== {{lengua|ar}} ==
{{pron-graf|leng=ar|ayuda=رَأَى}}
=== Etimología ===
{{etimología|leng=ar}}.
=== {{verbo|ar}} ===
;1: {{plm|ver}}
== Referencias y notas ==
<references />
1lt3f60l0ee67d4lxgbsan2eiw4crbq
6124154
6124153
2026-07-26T04:23:10Z
Tmagc
158167
6124154
wikitext
text/x-wiki
== {{lengua|ar}} ==
{{pron-graf|leng=ar|ayuda=رَأَى}}
=== Etimología ===
{{etimología|leng=ar}}.
=== {{verbo|ar}} ===
;1: {{plm|ver}}
== Referencias y notas ==
<references />
oxt9lpugr6kyo09nmjw329erhzoie1d
prolijo
0
40825
6123987
5949662
2026-07-25T22:03:38Z
Tmagc
158167
6123987
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología 1 ===
{{etimología|la|prolixus|extenso}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Largo, dilatado y extendido con exceso.<ref name="drae1914" />
{{relacionado|verboso}}
{{ejemplo|Mas por no ser ''prolijo'' dejo de contar muchas cosas, así graciosas como de notar, que con este mi primer amo me acaecieron, y quiero decir el [[despidiente]] y con él acabar.|título=El Lazarillo de Tormes|editorial=Revista VEA|páginas=28|c=libro|a=Anónimo|fecha=1987|fo=1554}}
;2: {{plm|tedioso}}, [[farragoso]].<ref name="drae1914" />
;3: Demasiadamente cuidadoso o [[esmerado]].<ref name="drae1914">{{DLC1914|837}}</ref>
{{relacionado|meticuloso}}
;4: Dicho de un trabajo: estéticamente [[agradable]].
{{ámbito|Cono Sur}}
{{antónimo|desprolijo}}
;5: {{plm|ordenado}}, [[organizado]].
{{ámbito|Argentina}}
{{antónimo|desprolijo}}
==== Traducciones ====
{{trad-arriba}}
{{t|gl|t1=prolixo}}
{{t|pt|t1=prolixo}}
{{trad-abajo}}
== Referencias y notas ==
<references />
cjrb1km4z5jf0w4bibtqai6h5cgx8nf
servir
0
41840
6124051
6066973
2026-07-26T02:09:42Z
Tmagc
158167
6124051
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología 1 ===
{{etimología|la|servire}}, {{etim|ine-pro|*ser-}}.
==== {{verbo intransitivo|es}} ====
;1: Ser útil para algo.
{{ejemplo|«Melquíades, que [[ser|era]] un [[hombre]] honrado, le [[prevenir|previno]]: “Para eso no ''[[servir|sirve]]''”».|autor=Gabriel García Márquez|título=Cien años de soldedad|fecha=1967|capítulo=I|c=libro}}
;2: Estar al servicio de [[alguien]].
{{ejemplo|¿En qué puedo '''servir'''le?}}
;3: Ser capaz de reemplazar el rol de otro.
{{ejemplo|Aunque me gusta [[jugar]] al [[fútbol]], también ''[[servir|sirvo]]'' para jugar al [[vóleibol]].}}
;4: Funcionar.
{{ejemplo|El carro no '''sirve''' y lo tuve que mandar al taller.}}
==== {{verbo transitivo|es}} ====
;5: Presentar comidas a la mesa.
{{uso|utcprnl}} [[servirse]].
{{ejemplo|Vamos a '''servir''' este cochinillo asado.}}
=== Locuciones ===
* [[servir lo mismo para un barrido que para un fregado]]
=== Conjugación ===
{{es.v|alt=i-i}}
=== Información adicional ===
{{cognados|siervo|servicio|servidumbre|servilla|servio|servitud|servomotor|sirviente|serventía|servo-}}
{{derivad|servible|serviciador|servidero|servidor|servil|servilismo|servilmente|servilón|servio|servitud|inservible}}
=== Véase también ===
* [[servirse]]
=== Traducciones ===
{{trad-arriba}}
{{t|he|a1=1|t1=שרת|a2=2|t2=השתמש|a3=3|t3=הרגיל|a4=4|t4=נצל|t5=הנגיש|a5=5|tr5=hīnguísh}}
{{t|en|a1=3|t1=serve}}
{{t|ja|a1=4|t1=出す}}
{{t|sa|i1=s|t1=सेवते}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca|transitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología ===
{{etimología|leng=gl}}.
==== {{verbo intransitivo|gl|transitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{gl.v|alt=i}}
== Referencias y notas ==
<references />
kb6h7k4hoq2ylegpq30w0mi76h57woh
caber
0
43921
6124015
5916502
2026-07-25T23:18:17Z
Tmagc
158167
/* {{lengua|ast}} */
6124015
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|audio=LL-Q1321 (spa)-AdrianAbdulBaha-caber.wav|aunota=Colombia}}
=== Etimología ===
{{etimología|la|capere|coger}}
=== {{verbo intransitivo|es}} ===
;1: Poder estar o ser contenido [[dentro]] de algo.
;2: Tener espacio.
;3: Ser posible.
{{ejemplo|Dado que las precipitaciones registradas durante los años 1993/94 y 1994/95 fueron muy escasas, '''cabe''' suponer que este comportamiento responde a una baja tasa de lixivación durante el período de control.|c=libro|t=La contaminación de las aguas subterráneas|f=1999|isbn=9788478403646|editorial=Instituto Tecnológico Geominero de España|u=https://www.google.com.ar/books/edition/La_contaminaci%C3%B3n_de_las_aguas_subterr%C3%A1/6gk40FO0TsUC?hl=es-419&gbpv=1&dq=cabe+suponer&pg=PA126&printsec=frontcover}}
;4: Ser adecuado para el discurso.
{{ejemplo|La gente, dice, se rige por un sistema de reglas cuando vive con otras personas, y con esa interacción surge el concepto de libertad de acción. Si esto es así, entonces '''cabría''' preguntarnos: si yo estuviera solo en la tierra, ¿cabría hablar entonces de responsabilidad personal?|c=libro|t=Preguntas para pensar en ética|a=Tomás Miranda Alonso|f=2021|isbn=9788428835008|editorial=PPC|u=https://www.google.com.ar/books/edition/Preguntas_para_pensar_en_%C3%A9tica/vdQmEAAAQBAJ?hl=es-419&gbpv=1&dq=cabr%C3%ADa+preguntarnos+si&pg=PT36&printsec=frontcover}}
;5: Participar en algo.
{{uso|anticuado}}
=== {{verbo transitivo|es}} ===
;6: Dicho de un recipiente: Tener capacidad o espacio.
;7: {{plm|admitir}}.
{{uso|raro}}
;8: Entender.
{{uso|anticuado}}
=== Locuciones ===
* [[no caber en sí]] (de): sentir algo con gran intensidad (''no cabe en sí'' de alegría)
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{t|de|a1=1|t1=passen}}
{{t|he|a1=1|t1=להגיע פנימה}}
{{t|en|a1=1|nota1=to|t1=fit}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo|ca|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}.
==== {{verbo|ast|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{ast.v}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología ===
{{etimología|leng=gl}}.
==== {{verbo|gl|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{gl.v}}
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología ===
{{etimología|leng=pt}}.
==== {{verbo|pt|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{pt.v}}
== Referencias y notas ==
<references />
2m6tj6qj981ogzw5spcqb7prxa3oxrw
6124016
6124015
2026-07-25T23:19:25Z
Tmagc
158167
/* {{lengua|ca}} */
6124016
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|audio=LL-Q1321 (spa)-AdrianAbdulBaha-caber.wav|aunota=Colombia}}
=== Etimología ===
{{etimología|la|capere|coger}}
=== {{verbo intransitivo|es}} ===
;1: Poder estar o ser contenido [[dentro]] de algo.
;2: Tener espacio.
;3: Ser posible.
{{ejemplo|Dado que las precipitaciones registradas durante los años 1993/94 y 1994/95 fueron muy escasas, '''cabe''' suponer que este comportamiento responde a una baja tasa de lixivación durante el período de control.|c=libro|t=La contaminación de las aguas subterráneas|f=1999|isbn=9788478403646|editorial=Instituto Tecnológico Geominero de España|u=https://www.google.com.ar/books/edition/La_contaminaci%C3%B3n_de_las_aguas_subterr%C3%A1/6gk40FO0TsUC?hl=es-419&gbpv=1&dq=cabe+suponer&pg=PA126&printsec=frontcover}}
;4: Ser adecuado para el discurso.
{{ejemplo|La gente, dice, se rige por un sistema de reglas cuando vive con otras personas, y con esa interacción surge el concepto de libertad de acción. Si esto es así, entonces '''cabría''' preguntarnos: si yo estuviera solo en la tierra, ¿cabría hablar entonces de responsabilidad personal?|c=libro|t=Preguntas para pensar en ética|a=Tomás Miranda Alonso|f=2021|isbn=9788428835008|editorial=PPC|u=https://www.google.com.ar/books/edition/Preguntas_para_pensar_en_%C3%A9tica/vdQmEAAAQBAJ?hl=es-419&gbpv=1&dq=cabr%C3%ADa+preguntarnos+si&pg=PT36&printsec=frontcover}}
;5: Participar en algo.
{{uso|anticuado}}
=== {{verbo transitivo|es}} ===
;6: Dicho de un recipiente: Tener capacidad o espacio.
;7: {{plm|admitir}}.
{{uso|raro}}
;8: Entender.
{{uso|anticuado}}
=== Locuciones ===
* [[no caber en sí]] (de): sentir algo con gran intensidad (''no cabe en sí'' de alegría)
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{t|de|a1=1|t1=passen}}
{{t|he|a1=1|t1=להגיע פנימה}}
{{t|en|a1=1|nota1=to|t1=fit}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo|ca|defectivo|transitivo|intransitivo}} ====
;1: {{variante|leng=ca|cabre}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}.
==== {{verbo|ast|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{ast.v}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología ===
{{etimología|leng=gl}}.
==== {{verbo|gl|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{gl.v}}
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología ===
{{etimología|leng=pt}}.
==== {{verbo|pt|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{pt.v}}
== Referencias y notas ==
<references />
4eul55wwffrdkhk0p48rminntj52z8n
6124017
6124016
2026-07-25T23:19:46Z
Tmagc
158167
/* {{verbo|ca|defectivo|transitivo|intransitivo}} */
6124017
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|audio=LL-Q1321 (spa)-AdrianAbdulBaha-caber.wav|aunota=Colombia}}
=== Etimología ===
{{etimología|la|capere|coger}}
=== {{verbo intransitivo|es}} ===
;1: Poder estar o ser contenido [[dentro]] de algo.
;2: Tener espacio.
;3: Ser posible.
{{ejemplo|Dado que las precipitaciones registradas durante los años 1993/94 y 1994/95 fueron muy escasas, '''cabe''' suponer que este comportamiento responde a una baja tasa de lixivación durante el período de control.|c=libro|t=La contaminación de las aguas subterráneas|f=1999|isbn=9788478403646|editorial=Instituto Tecnológico Geominero de España|u=https://www.google.com.ar/books/edition/La_contaminaci%C3%B3n_de_las_aguas_subterr%C3%A1/6gk40FO0TsUC?hl=es-419&gbpv=1&dq=cabe+suponer&pg=PA126&printsec=frontcover}}
;4: Ser adecuado para el discurso.
{{ejemplo|La gente, dice, se rige por un sistema de reglas cuando vive con otras personas, y con esa interacción surge el concepto de libertad de acción. Si esto es así, entonces '''cabría''' preguntarnos: si yo estuviera solo en la tierra, ¿cabría hablar entonces de responsabilidad personal?|c=libro|t=Preguntas para pensar en ética|a=Tomás Miranda Alonso|f=2021|isbn=9788428835008|editorial=PPC|u=https://www.google.com.ar/books/edition/Preguntas_para_pensar_en_%C3%A9tica/vdQmEAAAQBAJ?hl=es-419&gbpv=1&dq=cabr%C3%ADa+preguntarnos+si&pg=PT36&printsec=frontcover}}
;5: Participar en algo.
{{uso|anticuado}}
=== {{verbo transitivo|es}} ===
;6: Dicho de un recipiente: Tener capacidad o espacio.
;7: {{plm|admitir}}.
{{uso|raro}}
;8: Entender.
{{uso|anticuado}}
=== Locuciones ===
* [[no caber en sí]] (de): sentir algo con gran intensidad (''no cabe en sí'' de alegría)
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{t|de|a1=1|t1=passen}}
{{t|he|a1=1|t1=להגיע פנימה}}
{{t|en|a1=1|nota1=to|t1=fit}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo|ca|defectivo|intransitivo}} ====
;1: {{variante|leng=ca|cabre}}.
==== Conjugación ====
{{ca.v}}
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Etimología ===
{{etimología|leng=ast}}.
==== {{verbo|ast|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{ast.v}}
== {{lengua|gl}} ==
{{pron-graf|leng=gl}}
=== Etimología ===
{{etimología|leng=gl}}.
==== {{verbo|gl|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{gl.v}}
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología ===
{{etimología|leng=pt}}.
==== {{verbo|pt|transitivo|intransitivo}} ====
;1: {{plm}}.
==== Conjugación ====
{{pt.v}}
== Referencias y notas ==
<references />
tkyjw90zknxjf6obxngqdeugybzbymz
infrahumano
0
44517
6123724
5765229
2026-07-25T20:22:02Z
TMCbot
164594
.
6123724
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-humano}}
=== Etimología 1 ===
{{etimología|prefijo|infra|humano}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Indigno del ser humano, inapropiado, muy por debajo de lo que un ser humano merece.
{{ejemplo|Condiciones de vida ''infrahumanas''.}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
21bhvcr9goopwma36t37pwgvyzvrp7u
aka
0
65579
6124087
5345272
2026-07-26T04:20:08Z
TMCbot
164594
.
6124087
wikitext
text/x-wiki
{{desambiguación|-aká|aká|akã|AKA|A.K.A.}}
== {{lengua|ay}} ==
{{pron-graf|leng=ay}}
=== Etimología ===
{{etimología|leng=ay|}}
=== {{pronombre|ay}} ===
;1 : {{plm|esto}}, este, esta.
== {{lengua|en}} ==
{{pron-graf|leng=en|g=AKA|g2=A.K.A.}}
=== {{sigla|en}} ===
;1: [[alias|Alias]], también conocido como.
=== Etimología ===
{{etimología2|leng=en|Sigla de la locución ''[[also#Inglés|'''a'''lso]] [[known|'''k'''nown]] [[as#Inglés|'''a'''s]]'', "también conocido como"}}
== {{lengua|avk}} ==
{{pron-graf
|leng=avk
|fono=ˈaka
|audio=aka (avk).wav
}}
=== Etimología ===
{{etimología2|leng=avk|Raíz inventada arbitrariamente.}}
=== {{sustantivo|avk}} ===
;1: {{plm|joya}}.
== {{lengua|nht}} ==
{{pron-graf|leng=nht}}
=== Etimología ===
{{etimología|leng=nht}}
=== {{sustantivo|nht}} ===
;1 {{csem|plantas|leng=nht}}: {{plm|caña}}.
== Referencias y notas ==
<references />
ncfseg9bryx4yewz1st97y2sj97h5tr
prăjitură
0
67695
6124119
4591164
2026-07-26T04:20:58Z
TMCbot
164594
.
6124119
wikitext
text/x-wiki
== {{lengua|ro}} ==
{{pron-graf|leng=ro}}
=== Etimología ===
{{etimología|leng=ro}}.
=== {{sustantivo femenino|ro}} ===
;1: {{plm|pastel}}.
=== Conjugación ===
{{ro.sust|f|na_indef_pl=prăjituri}}
== Referencias y notas ==
<references />
psfgmrtrsuykgrf25rise548flr5x0t
cloth
0
81360
6123870
6121885
2026-07-25T20:24:33Z
Adelpine
34679
Agrega hablantes a una transcripción AFI
6123870
wikitext
text/x-wiki
== {{lengua|en}} ==
{{pron-graf|leng=en
|1pron1=Received Pronunciation|1fono1=klɒθ|1fono2=klɔːθ|1fnota2=arcaica
|2pron1=General American y dialectos de los EE. UU., con lot-cloth split|2fono1=klɔθ
|3pron1=General American y Atlantic Canadian, con la fusión cot–caught|3fono1=klɑθ|3audio1=en-us-cloth.ogg|3aunota1=California|3audio2=LL-Q1860 (eng)-Wodencafe-cloth.wav|3aunota2=Texas
|4pron1=Standard Canadian, Boston, Maine|4fono1=klɒθ
|5pron1=dialectos de los EE. UU|5fono1=kloəθ
|6pron1=Australia|6fono1=klɔθ
|7pron1=Nueva Zelanda|7fono1=klɒθ|7fone2=klɔ̟θ
|ls=1}}
=== Etimología ===
{{etimología|leng=en|enm|cloth}}, {{l+|enm|clath}}, {{etim|leng=en|ang|claþ|alt=clāþ}} ("tela, ropa, cubierta, vela"), {{etim|leng=en|gem-pro|*klaiþą|glosa=prenda}}.
=== {{sustantivo|en}} ===
{{en.sust|ci|cloths|clothes|pnota2=anticuado}}
;1: {{plm|tela}}, [[paño]].
;2: {{plm|trapo}}.
== Referencias y notas ==
<references />
juq70bvtg5fvmzc1dezy0qid07o3nlm
eixir
0
100843
6124022
5105487
2026-07-25T23:29:18Z
Tmagc
158167
6124022
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|fono=əʃí}}
=== Etimología ===
{{etimología|leng=ca|la|exeo|alt=exīre}}
=== {{verbo|ca}} ===
;1: {{plm|salir}}.
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
hrdltmge7b6qyvfnoecmjpbllm5eqit
6124023
6124022
2026-07-25T23:30:25Z
Tmagc
158167
/* {{verbo|ca}} */
6124023
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|fono=əʃí}}
=== Etimología ===
{{etimología|leng=ca|la|exeo|alt=exīre}}
=== {{verbo|ca}} ===
;1: {{plm|salir}}, [[marcharse]].
=== Conjugación ===
{{ca.v}}
== Referencias y notas ==
<references />
85w5119yt5aktaxxheghcfb163vlqv1
eliminar
0
105706
6123989
6108902
2026-07-25T22:09:22Z
Tmagc
158167
6123989
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|eliminare|diacrítico=elimināre|expulsar}}, sacar de casa.
=== {{verbo transitivo|es}} ===
;1: Hacer desaparecer algo, hacer que deje de estar o existir.<!-- ''Eliminar'' una mancha -->
{{sinónimo|apartar|quitar|borrar}}
;2: Sacar a una o más personas de una lista, de una categoría, de una agrupación u otro asunto.
{{sinónimo|descartar|excluir}}
;3 {{csem|deporte}}: Dejar fuera de competición a un concursante o competidor.
{{sinónimo|derrotar|vencer}}
;4: Quitar la [[vida]].
{{sinónimo|asesinar|matar}}
;5: Echar fuera de sí una sustancia de un organismo, un órgano o como producto de una reacción química.
{{sinónimo|expeler|expulsar}}
;6 {{csem|matemáticas}}: Hacer desaparecer mediante el cálculo una de las [[incógnita]]s de la [[ecuación]].
=== Conjugación ===
{{es.v}}
=== Véase también ===
* [[eliminarse]]
=== Traducciones ===
{{trad-arriba}}
<!-- formato: {{t+|idioma|<acepción#>|palabra|género}} p. ej. {{t+|fr|1|chose|f}} -->
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
b8fkbc44jmua0dw3dt959w44qrab6lx
imprimir
0
108244
6124048
5966412
2026-07-26T02:01:24Z
Tmagc
158167
6124048
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p1=imprimar|v1=impremir|vnota1=desusado}}
[[Archivo:Buchdrucker-1568.png|thumb|[1] Proceso de ''imprimir'' en el siglo XVI]]
=== Etimología ===
{{etimología|la|imprimere|alt=imprimĕre}}, infinitivo presente activo de {{l+|la|imprimo|imprimō}}, compuesto de {{l+|la|in|glosa=en}} y {{l+|la|premo|premō, premere, pressī}} ("hacer [[presión]]"), de la raíz indoeuropea {{l+|ine-pro|*per-|glosa=golpe}}. Cfr. [[comprimir]], [[deprimir]], [[exprimir]], [[oprimir]], [[reprimir]], [[suprimir]].
=== {{verbo transitivo|es}} ===
;1: {{plm|marcar}} en un material (generalmente [[papel]]) signos, letras o dibujos en color o relieve mediante procedimientos manuales, mecánicos o digitales.
;2: Poner, mediante presión de un molde con tinta o pintura, imágenes sobre tela, cuero, papel u otro material.
{{sinónimo|estampar|sellar}}.
;3: Fabricar un libro, revista, diario u otro impreso.
{{sinónimo|editar}}.
;4: Marcar una vivencia o experiencia el carácter de una persona.
{{sinónimo|influir}}.
;5: Marcar una huella o rastro en la tierra, arena u otro material.
{{sinónimo|hollar|marcar|señalar}}.
;6: Dar un giro, orientación o dirección a una conducta, afecto o idea.
{{sinónimo|dirigir|influir|orientar}} .
;7: Introducir, meter haciendo fuerza algo en otra cosa.
{{uso|anticuado}}
{{sinónimo|hincar}}.
=== Conjugación ===
{{es.v}}
=== Información adicional ===
* Aunque el uso del participio impreso está más aceptado, la RAE admite el uso de imprimido aunque solo como participio.<ref>{{referencia|editorial=ElPaís|a1=Miguel Ángel Bargueño|fc=2022-12-19|u=https://elpais.com/elpais/2018/03/28/icon/1522232572_682924.html|t=14 palabras que creíamos inaceptables y que la RAE aprueba (y el rifirrafe de “marronas”)|f=2019-2-21|c=pagina}}</ref>
{{cognados|imprenta|imprimátur}}
{{derivad|impresión|impresionar|impresión|impreso|impresor|impresora|imprimidor|reimprimir|reimpresión}}
=== Traducciones ===
{{trad-arriba}}
{{t|de|a1=1|t1=drucken}}
{{t|fr|a1=1|t1=imprimer}}
{{t|en|a1=1-3|nota1=to|t1=print}}
{{t|nl|a1=1|t1=drukken}}
{{trad-abajo}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}
==== {{verbo transitivo|ca}} ====
;1: {{plm}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
5hljiox3842hf71pdy1whp4re6pjunb
infrautilización
0
110845
6123725
5720530
2026-07-25T20:22:03Z
TMCbot
164594
.
6123725
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilización}}
=== Etimología ===
{{etimología|sufijo|infrautilizar|ción}}
=== {{sustantivo femenino|es}} ===
{{es.sust}}
;1: {{sustantivo de verbo|infrautilizar}} (no [[aprovechar]] el [[máximo]] [[potencial]] de algo o de alguien).
=== Véase también ===
{{w}}
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
qgb1a7fw0f2pqhr3wvva9ygtt6f8cvt
es
0
116131
6124136
6067528
2026-07-26T04:21:23Z
TMCbot
164594
.
6124136
wikitext
text/x-wiki
{{desambiguación|-es|-ès|-és|-ês|.es|'e's|e's|E's|Es|ES|eš|ës|ēs|eş|és|ÉS|ès|ės|ēš|es-|-ess}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|ser|m=indicativo|p=3s|t=presente}}.
== {{lengua|de}} ==
{{pron-graf|leng=de|1audio1=De-es.ogg|1fone1=ɛs}}
=== Etimología 1 ===
{{etimología|leng=de|goh|eʒ}}.<ref>{{DWDS}}</ref>
==== {{pronombre|de|personal|neutro}} ====
;1: {{forma pronombre|leng=de|er|nominativo|singular|neutro}}: [[ello]], [[lo]] (pronombre de tercera persona singular neutro).
;2: {{forma pronombre|leng=de|er|acusativo|singular|neutro}}.
{{ejemplo|leng=de|Ich will '''es''' versuchen.|traducción=Quiero intentar'''lo'''.}}
==== Declinación ====
{{de.pron}}
== {{lengua|rup}} ==
{{pron-graf|leng=rup|v1=esu|v2=ies|v3=iesu}}
=== Etimología 1 ===
{{etimología|leng=rup|la|exeo|salgo|alt=exeō}}. Compárese el rumano {{l+|ro|ieși|ies}}.
==== {{verbo intransitivo|rup}} ====
;1: {{l|es|levar anclas|Levar anclas}}, {{l|es|marchar}}, {{l|es|partir}}, {{l|es|salir}} o {{l|es|zarpar}}.
==== Véase también ====
* {{l|rup|ishire}}, {{l|rup|ishiri}}, {{l|rup|ishit}}.
== {{lengua|ast}} ==
{{pron-graf|leng=ast}}
=== Forma flexiva ===
==== Forma sustantiva ====
;1: {{f.s.p|leng=ast|e}}.
== {{lengua|osp}} ==
{{pron-graf|leng=osp}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=osp|ser|2s|pres|ind|pron=tu}}.
{{ejemplo|leng=osp|non puedo traer el aver ca mucho ''es'' pesado.}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca|v1=so|vnota1=como artículo}}
=== Etimología 1 ===
{{etimología|leng=ca|la|se|se|alt=sē}}.
==== {{pronombre|ca|personal|proclítico}} ====
;1: {{plm|se}}.
{{uso|leng=ca|enclítico: {{l+|ca|se}}}}
=== Etimología 2 ===
{{etimología|leng=ca|la|ipse|mismo}}.
==== {{artículo determinado|ca}} ====
;1: {{plm|el}}.
{{ámbito|leng=ca|Baleares}}
== {{lengua|da}} ==
{{pron-graf|leng=da|1fone1=ˈεs}}
=== Etimología 1 ===
{{etimología|leng=da|la|as|glosa=[[as]], [[moneda]] de [[cobre]] romana}}.<ref>{{Den Danske Ordbok}}</ref>
==== {{sustantivo neutro|da}} ====
;1 {{csem|leng=da|naipes}}: {{plm|as}}.
;2 {{csem|leng=da|deporte}}: Forma corta de [[servidos]].
==== Declinación ====
{{da.sust|esset|esser|esserne}}
==== Véase también ====
{{da.naipes}}
== {{lengua|fr}} ==
{{pron-graf|leng=fr|h1=aie|h2=aient|h3=aies|h4=ais|h5=ait|h6=est|p1=haie|p2=haies|p3=hais|p4=hait}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=fr|être|2s|pres|ind|pron=tu}}.
== {{lengua|fro}} ==
{{pron-graf|leng=fro}}
=== Forma flexiva ===
==== Contracción ====
;1: {{contracción|leng=fro|en|les|c1=preposición|c2=artículo}}.
==== Forma verbal ====
;2: {{f.v|leng=fro|estre|2s|pres|ind|pron=tu}}.
== {{lengua|frm}} ==
{{pron-graf|leng=frm}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=frm|estre|2s|pres|ind|pron=tu}}.
== {{lengua|gl}} ==
{{pron-graf|leng=gl|ayuda=ès}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=gl|ser|2s|pres|ind|pron=ti}}.<ref>{{DRAG|ser}}</ref>
== {{lengua|ia}} ==
{{pron-graf|leng=ia}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=ia|esser||pres|ind}}.
== {{lengua|it}} ==
{{pron-graf|leng=it}}
=== Etimología 1 ===
{{etimología|leng=it|de|es}}.
==== {{sustantivo masculino|it}} ====
{{it.sust|inv}}
;1 {{csem|leng=it|psicología}}: {{plm|id}}.
{{relacionado|leng=it|io|super-io}}
==== Véase también ====
{{w|leng=it}}
== {{lengua|la}} ==
{{pron-graf|leng=la|ayuda=es|ayuda2=ēs|ayudanota1=sum|ayudanota2=edo}}
=== Etimología ===
{{etimología|leng=la}}.
==== {{letra|la}} ====
;1: {{plm|ese}}, letra {{l+|la|S}}/{{l+|la|s}}.
=== Forma flexiva ===
==== Forma verbal ====
;1: {{f.v|leng=la|sum|2s|pres|ind|act=x|nopron=x}}.
;2: {{imperativo latín|sum|2s|pra}}.
;3: {{f.v|leng=la|edo|2s|pres|ind|act=x|alt=edō|nopron=x|num=1}}.
;4: {{imperativo latín|edo|2s|pra|alt=edō|num=1}}.
== {{lengua|lv}} ==
{{pron-graf|leng=lv|1fone1=ɛs}}
=== Etimología 1 ===
{{etimología|leng=lv|ine-pro|*éǵ}}.
==== {{pronombre personal|lv}} ====
;1: {{plm|yo}}.
==== {{sustantivo masculino|lv}} ====
;2: {{plm|yo}}, [[ego]].
;3: Nombre de la letra [[S]]/[[s]].
== {{lengua|lfn}} ==
{{pron-graf|leng=lfn}}
=== Etimología ===
{{etimología|leng=lfn}}.
=== {{verbo|lfn}} ===
;1: {{plm|ser}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc}}
=== Etimología 1 ===
{{etimología|leng=oc}}.
==== {{artículo determinado|oc}} ====
;1: {{plm|las}}.
{{ámbito|leng=oc|aranés}}
;2: {{plm|los}}.
{{ámbito|leng=oc|aranés}}
== Referencias y notas ==
<references />
084uiu7iabe9kfpfqnpyig63hgc0ugq
Minerva
0
119068
6124085
5973768
2026-07-26T04:20:05Z
TMCbot
164594
.
6124085
wikitext
text/x-wiki
{{desambiguación|minerva}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología}}
=== {{sustantivo propio|es}} ===
;1 {{csem|mitología}}: Hija de [[Júpiter]], diosa de la [[sabiduría]] y de las [[arte]]s.<ref name="larousse">{{Larousse1912}} Página 1341</ref>
{{sinónimo|Palas}}
=== Véase también ===
{{w}}
=== Traducciones ===
{{trad-arriba}}
{{t|fr|t1=Minerve}}
{{t|en|t1=Minerva}}
{{trad-abajo}}
== {{lengua|la}} ==
{{pron-graf|leng=la}}
=== Etimología ===
{{etimología|leng=la|incierta}}
=== {{sustantivo propio|la}} ===
;1 {{csem|mitología|leng=la}}: {{plm}}.
== Referencias y notas ==
<references />
h15522iweyshtpsgbqcgfpkvclv1cr5
coincidir
0
125584
6123631
6082858
2026-07-25T18:54:54Z
TMCbot
164594
.
6123631
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
[[Categoría:ES:Palabras con el prefijo co-]]
=== Etimología 1 ===
{{etimología|la|coincidere|sig=no}}, formado por el prefijo ''[[co-]]'' (lat. ''co'',''com''), y el verbo {{l+|la|incidere}} ("[[ocurrir]], caer en").
==== {{verbo intransitivo|es}} ====
;1: Tener características en común, estar en conformidad o [[concordar]].
{{ejemplo|Estos dos cuadros no ''coinciden'' en tamaño porque uno es más grande que el otro. Tú yo ''coincidimos'' en muchos gustos.}}
;2: (''Se dice de un objeto'') Tener una característica que permite [[acoplarse]] o [[encajar]] con otro.
{{ejemplo|Asegúrate de que el cable ''coincida'' con el orificio donde vas a insertarlo.}}
;3: {{plm|Suceder}} simultáneamente en el tiempo o espacio.
{{ejemplo|Mi cumpleaños ''coincide'' con el de Einstein. La ubicación de la ciudad ''coincide'' con la de una antigua civilización.}}
;4: Encontrarse por casualidad en un mismo tiempo y lugar.
{{ejemplo|Mi vecino ''coincidió'' conmigo en la reunión municipal.}}
;5: {{plm|convenir}} o estar de acuerdo sobre algo.
{{ejemplo|No ''coincido'' con la opinión de la mayoría.}}
==== Conjugación ====
{{es.v}}
==== Traducciones ====
{{trad-arriba}}
{{t|fr|t1=coïncider}}
{{t|en|a1=1-4|t1=coincide|a2=5|t2=agree}}
{{t|it|t1=coincidere}}
{{t|nl|t1=coïncideren}}
{{t|pt|t1=coincidir}}
{{trad-abajo}}
== Referencias y notas ==
<references />
dj7sdjuxq4fwr1io3q7i723wswlnnne
coincidencia
0
125592
6123607
6082840
2026-07-25T18:54:20Z
TMCbot
164594
.
6123607
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología 1 ===
{{etimología|sufijo|coincidir|ncia}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1: {{sustantivo de verbo|coincidir}}.
;2: Circunstancia en la cual [[concurrir|concurren]] dos eventos de manera inusual o inesperada.
{{ejemplo|una feliz ''coincidencia''; ¡Qué ''coincidencia''!}}
{{uso|connota que los dos eventos no tienen otra conexión que el azar}}
{{sinónimo|casualidad}}
==== Locuciones ====
* [[por coincidencia]]: [[por casualidad]], que coincide sin otra conexión que el azar
==== Traducciones ====
{{trad-arriba|simultaneidad entre eventos por azar}}
{{t|de|t1=Koinzidenz}}
{{t|cs|t1=koincidence}}
{{t|el|t1=σύμπτωση}}
{{t|fr|t1=coïncidence}}
{{t|he|t1=צירוף-מקרים}}
{{t|en|t1=coincidence}}
{{t|it|t1=coincidenza}}
{{t|zh|t1=巧合}}
{{t|pt|t1=coincidência}}
{{t|ru|t1=совпадение}}
{{trad-abajo}}
== Referencias y notas ==
<references />
127s9fwhp5gjbgy7pz2x5yjy2x458vp
ay
0
158115
6124079
6112978
2026-07-26T03:02:28Z
Genoskill
87116
acepción modificada.
6124079
wikitext
text/x-wiki
{{desambiguación|Ay|Aÿ|aý|áy|ấy|ầy|ẩy|ā̃y|a’ỹ}}
== {{lengua|es}} ==
{{pron-graf|h1=ai|h2=hay|p1=ahí|g1=ai|gnota1=obsoleta}}
=== Etimología 1 ===
{{etimología|ONOM}}.
==== {{interjección|es}} ====
;1: {{impropia|Expresa dolor o pena.}}
;2: {{impropia|De manera enfática (''«¡aaaaaaaayyyyyyyy!»''), denota falta de valentía, o rechazo hacia los hombres homosexuales o [[afeminado]]s.}}
{{ámbito|Chile|Venezuela}}
{{uso|coloquial}}
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;3: {{plm|suspiro}}, quejido.<ref name="dlc1914">{{DLC1914|118}}</ref>
{{ejemplo|'''Ayes''' de un yaraví,<br>entre charangos se ha de olvidar.<br>Ecos de hondo sentir,<br>bombos risueños alegrarán.|c=canción|t=Carnavalito quebradeño|a=Los Hermanos Ábalos|f=1942}}
==== Traducciones ====
{{trad-arriba}}
{{t|fr|t1=aïe|t2=ouille|t3=ah}}
{{t|en|t1=ouch|t2=ow|t3=ooh|t4=ah}}
{{trad-abajo}}
==== Véase también ====
{{w}}
=== Etimología 2 ===
{{etimología|véase|ahí}}.
==== {{adverbio|es}} ====
;1: {{grafía obsoleta|ahí}}.
== {{lengua|az}} ==
{{pron-graf|leng=az|1fone1=ɑj}}
=== Etimología ===
{{etimología|leng=az|trk-pro|*āń(k)}}
=== {{sustantivo|az}} ===
;1: {{plm|luna}}.
;2: {{plm|mes}}.
== {{lengua|osp}} ==
{{pron-graf|leng=osp
|g1=ahi|g2=ahy|g3=ahí|g4=ai|g5=aì|g6=aí}}
=== Etimología ===
{{etimología|leng=osp|prefijo|a|y|glosa2=allí}}.
=== {{adverbio de lugar|osp}} ===
;1: {{plm|ahí}}.
== {{lengua|fr}} ==
{{pron-graf|h1=ays}}
==== Etimología 1 ====
{{etimología|leng=fr}}
==== {{sustantivo|fr|masculino}} ====
{{fr.sust}}
;1: Tipo de vino rojo.
==== Etimología 2 ====
{{etimología|leng=fr|ONOM}}.
==== {{interjección|fr}} ====
;2: {{grafía obsoleta|leng=fr|aïe}}.
=== Forma flexiva ===
==== Forma verbal ====
;1: {{grafía obsoleta|leng=fr|ai}}.
== {{lengua|frm}} ==
{{pron-graf|leng=frm}}
=== Forma verbal ===
;1: {{f.v|leng=frm|avoir|1s|pres|ind|pron=i’}}.
== {{lengua|gn}} ==
{{pron-graf|leng=gn}}
=== Etimología ===
{{etimología|leng=gn}}.
=== {{adjetivo|gn}} ===
;1: {{plm|aburrido}}.
== {{lengua|lad}} ==
{{pron-graf|leng=lad}}
==== Etimología 1 ====
{{etimología|leng=lad|osp|ha i|hay}}.
==== {{verbo|lad|intransitivo}} ====
;1: {{plm|hay}}.
==== Etimología 2 ====
{{etimología|leng=lad|ONOM}}.
==== {{interjección|lad}} ====
;2: ¡{{plm|ay}}!
== {{lengua|wa}} ==
{{pron-graf|leng=wa
|p1=åy|p2=hay|p3=way}}
=== Etimología ===
{{etimología|leng=wa|ONOM}}.
=== {{interjección|wa}} ===
;1: ¡{{plm|ay}}! ({{impropia|Expresión dolorosa.}})
{{sinónimo|leng=wa|ouxh}}.
;2: ¡{{plm|aguas}}! ¡{{plm|atención}}! ¡{{plm|ojo}}!
{{sinónimo|atincion|louke a ti|vize a ti|waite a ti}}.
=== Información adicional ===
{{derivad|leng=wa|ayayay}}.
== Referencias y notas ==
<references />
a0ixl67udc7c9rw4e9hffsko6rek0d7
malaventuranza
0
159739
6123960
6122457
2026-07-25T20:38:07Z
Tmagc
158167
6123960
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mala-venturanza}}
=== Etimología ===
{{etimología|sufijo|malaventura|anza}}
=== {{sustantivo femenino|es}} ===
{{es.sust}}
;1: {{plm|infelicidad}}, [[desdicha]], [[infortunio]]<ref>{{DLC1914|641}}</ref>
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
n50lo6rywxbu11vcdmo49f6v2s2ekns
malaventura
0
159740
6123958
6122452
2026-07-25T20:37:35Z
Tmagc
158167
6123958
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mala-ventura|v=malaventuranza}}
=== Etimología ===
{{etimología|compuesto|mala|ventura}}
=== {{sustantivo femenino|es}} ===
{{es.sust}}
;1: {{plm|desventura}}, [[desgracia]], [[infortunio]]<ref>{{DLC1914|641}}</ref>
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
2mseoaol7u7twthf1o1kejtuf19ns7d
coincidiendo
0
176717
6123616
6082847
2026-07-25T18:54:33Z
TMCbot
164594
.
6123616
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{gerundio|coincidir}}.
== Referencias y notas ==
<references />
c47l1uo5nl574uz5chjy2ns0vcumc5l
pondré
0
181366
6124074
5960437
2026-07-26T02:47:16Z
Tmagc
158167
6124074
wikitext
text/x-wiki
{{desambiguación|pondre}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|poner|p=1s|t=futuro|m=ind|afirmativo=}}.
== Referencias y notas ==
<references />
fj7s9am60qbog2xmd1l1sb4lya9e0ch
escribieren
0
221647
6124176
5549224
2026-07-26T09:24:54Z
Jemily1
121719
quito desambiguación
6124176
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|escribir|p=3p|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
7gcyzfnkzepcgwvj56b41nh3dmhoxtd
escribiereis
0
221648
6124178
5559217
2026-07-26T09:27:17Z
Jemily1
121719
quito desambiguación
6124178
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|escribir|p=2p|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
s11riy4inndo3zw90cf5rhv4nd39dsi
escribiéremos
0
221649
6124177
5559807
2026-07-26T09:25:21Z
Jemily1
121719
quito desambiguación
6124177
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|escribir|p=1p|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
rtbsxhajlb0ih6jter5tcer973jpo7d
escribiere
0
221765
6124174
5549873
2026-07-26T09:22:42Z
Jemily1
121719
quito desambiguación
6124174
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|escribir|p=1s|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
;2: {{forma verbo|escribir|p=3s|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
pt9pflkp29kx3lx11yq2wrdtaym1s80
escribieres
0
221768
6124175
5540289
2026-07-26T09:23:05Z
Jemily1
121719
quito desambiguación
6124175
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|escribir|p=2stv|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
40n01jdbbcgmxp0b4we6a6fhb47g0nx
coincido
0
222523
6123649
6082872
2026-07-25T18:55:18Z
TMCbot
164594
.
6123649
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=presente|m=indicativo}}.
== Referencias y notas ==
<references />
kzboe2j5lgsnhaqfc5s5i3zwpixy7y7
coincides
0
222528
6123610
6082842
2026-07-25T18:54:25Z
TMCbot
164594
.
6123610
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2s|t=presente|m=indicativo}}.
== Referencias y notas ==
<references />
g88woa13ahqxvjm2h2gn3a0nvoau065
coinciden
0
222529
6123606
6082839
2026-07-25T18:54:18Z
TMCbot
164594
.
6123606
wikitext
text/x-wiki
{{desambiguación|coincidan|coincide|coincides}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=presente|m=indicativo}}.
== Referencias y notas ==
<references />
o0d7dvf4kqh7mcye0n9bbv0okz2vpk7
coincidías
0
222530
6123657
6082879
2026-07-25T18:55:29Z
TMCbot
164594
.
6123657
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
ag0qb45q3sp3mi84lpwqx41li59etw0
coincidimos
0
222532
6123630
6082857
2026-07-25T18:54:53Z
TMCbot
164594
.
6123630
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1p|t=presente|m=indicativo}}.
;2: {{forma verbo|coincidir|p=1p|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
fdvgpw70fkk36b9512yvzx5vspyxfqg
coincide
0
222533
6123605
6082838
2026-07-25T18:54:17Z
TMCbot
164594
.
6123605
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3s|t=presente|m=indicativo}}.
;2: {{forma verbo|coincidir|2s|imperativo|afirmativo=s}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
qahc4nsalcc6wirl6hpt7goysfyj938
coincidía
0
222534
6123653
6082875
2026-07-25T18:55:24Z
TMCbot
164594
.
6123653
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=pret imp|m=indicativo}}.
;2: {{forma verbo|coincidir|p=3s|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
np2nh10vgs5hutpaku5pufo5827erl8
coincidíamos
0
222536
6123655
6082877
2026-07-25T18:55:26Z
TMCbot
164594
.
6123655
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1p|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
plibscrue6t5smm32cnaypn1v7o3zfq
coincidían
0
222537
6123656
6082878
2026-07-25T18:55:27Z
TMCbot
164594
.
6123656
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
arusn6vtqkwdfbkx362u9rrtk21afct
coincidí
0
222538
6123652
6082874
2026-07-25T18:55:22Z
TMCbot
164594
.
6123652
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|m=indicativo|p=yo|t=pret ind}}.
;2: {{forma verbo|coincidir|afirmativo=s|p=vos|t=imperativo}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
aysn4uozvh1f4i09r1z6urlo3y2vdgk
coincidió
0
222539
6123648
6082871
2026-07-25T18:55:17Z
TMCbot
164594
.
6123648
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3s|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
3n62u5tvpxlqyxxqi6y51ki2uigwz2f
coincidisteis
0
222540
6123644
6082867
2026-07-25T18:55:11Z
TMCbot
164594
.
6123644
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
69hkst4qhrzq86hgcstequh1tgr6e3u
coincidirás
0
222541
6123635
6082862
2026-07-25T18:54:59Z
TMCbot
164594
.
6123635
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=futuro|m=indicativo}}.
== Referencias y notas ==
<references />
7v60vce2jc7jok3aysog1hju5l73aiq
coincidiré
0
222542
6123636
6082863
2026-07-25T18:55:01Z
TMCbot
164594
.
6123636
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=futuro|m=indicativo}}.
== Referencias y notas ==
<references />
gued9rad5d0js5qdb9l0wz5tx6oqt19
coincidiremos
0
222543
6123632
6082859
2026-07-25T18:54:55Z
TMCbot
164594
.
6123632
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1p|t=futuro|m=indicativo}}.
== Referencias y notas ==
<references />
sbziu7gxfm7jatwezo69mac23vz8cho
coincidiréis
0
222544
6123637
6090076
2026-07-25T18:55:02Z
TMCbot
164594
.
6123637
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=futuro|m=indicativo}}.
== Referencias y notas ==
<references />
7hqc5gk9qar1hp5zxu4m85njc7rdns1
coincidirán
0
222545
6123634
6082861
2026-07-25T18:54:58Z
TMCbot
164594
.
6123634
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=futuro|m=indicativo}}.
== Referencias y notas ==
<references />
ntsqzmy8y22x5r7f3sy01enbwigfpr4
coincidirá
0
222546
6123633
6082860
2026-07-25T18:54:57Z
TMCbot
164594
.
6123633
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3s|t=futuro|m=indicativo}}.
== Referencias y notas ==
<references />
rz15isqh9xvlhusqdhmvuxrytugjnsy
coincidirías
0
222547
6123642
6090078
2026-07-25T18:55:09Z
TMCbot
164594
.
6123642
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=condicional|m=}}.
== Referencias y notas ==
<references />
64lyg0x4lnnzz8grcohtic1w8slzotr
coincidirían
0
222548
6123641
6082866
2026-07-25T18:55:08Z
TMCbot
164594
.
6123641
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=condicional|m=}}.
== Referencias y notas ==
<references />
hlblqoso39u270gwy0uh2poo2b6tf6y
coincidiríais
0
222549
6123639
6090077
2026-07-25T18:55:05Z
TMCbot
164594
.
6123639
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=condicional|m=}}.
== Referencias y notas ==
<references />
89z85znepvtd0i746dmo3odot7lhv74
coincida
0
222551
6123601
6082835
2026-07-25T18:54:11Z
TMCbot
164594
.
6123601
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|1s|t=presente|m=subjuntivo}}.
;2: {{forma verbo|coincidir|3s|presente|subjuntivo}}.
;3: {{forma verbo|coincidir|p=usted|m=imperativo}}.
== Referencias y notas ==
<references />
kbnz5cqatucufdox6el8g2ykscqo450
coincidas
0
222552
6123604
6090069
2026-07-25T18:54:15Z
TMCbot
164594
.
6123604
wikitext
text/x-wiki
{{desambiguación|coincidás|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2s|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''coincidas''».
== Referencias y notas ==
<references />
lkc2hu45h6s01bmxwd88uwnpcowwzzr
coincidamos
0
222553
6123602
6082836
2026-07-25T18:54:13Z
TMCbot
164594
.
6123602
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|1p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|coincidir|p=nosotros|t=exhortatorio}}.
== Referencias y notas ==
<references />
2azf5curm775q6schb22c81ljgf3g88
coincidáis
0
222554
6123650
6090080
2026-07-25T18:55:20Z
TMCbot
164594
.
6123650
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''coincidáis''».
== Referencias y notas ==
<references />
gbb7blxn5lybq2ij567wrhvr10p8ssu
coincidás
0
222556
6123651
6082873
2026-07-25T18:55:21Z
TMCbot
164594
.
6123651
wikitext
text/x-wiki
{{desambiguación|coincidas|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=vos|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''coincidás''».
== Referencias y notas ==
<references />
ii75zwl30md9ndz2mzj6hgrrom7zsyg
coincidan
0
222558
6123603
6082837
2026-07-25T18:54:14Z
TMCbot
164594
.
6123603
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|3p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|coincidir|p=ustedes|t=imperativo}}.
== Referencias y notas ==
<references />
35s7loyh2zs365t76fr2tlnvm7lic55
coincidiéramos
0
222559
6123645
6082868
2026-07-25T18:55:13Z
TMCbot
164594
.
6123645
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidiéremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidiésemos}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
8t8t5epbrzjls31zhh3xsqdow0f8z4o
coincidiera
0
222560
6123617
6082848
2026-07-25T18:54:34Z
TMCbot
164594
.
6123617
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidiere|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidiese}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|coincidir|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
b7r5pxng95lwoa9mj816kyvviivmj15
coincidieran
0
222561
6123619
6082849
2026-07-25T18:54:37Z
TMCbot
164594
.
6123619
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidieren|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidiesen}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
iambhfm5trwbg04lr1w7xxo5v16d138
coincidierais
0
222562
6123618
6090072
2026-07-25T18:54:36Z
TMCbot
164594
.
6123618
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidiereis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidieseis}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
de05du3tbeo0i7s32hihrspnzumgu6s
coincidiese
0
222564
6123626
6082854
2026-07-25T18:54:47Z
TMCbot
164594
.
6123626
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidiere|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidiera}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|coincidir|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
3fj6rs9c3aallq1k2gm5opc2r31a9z5
coincidieses
0
222566
6123629
6082856
2026-07-25T18:54:51Z
TMCbot
164594
.
6123629
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidieres|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidieras}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
iqgfmyiidvb7hg7ht4rulj6xfjoy3r6
coincidieseis
0
222568
6123627
6082855
2026-07-25T18:54:48Z
TMCbot
164594
.
6123627
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidiereis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidierais}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
lf5edzkwjvgusrflowtm2uyairqspcb
coincidiesen
0
222569
6123628
6090075
2026-07-25T18:54:50Z
TMCbot
164594
.
6123628
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidieren|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidieran}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
6firyip4w5krdjjo9r9e9optsl32rfg
coincidiere
0
222570
6123621
6090073
2026-07-25T18:54:40Z
TMCbot
164594
.
6123621
wikitext
text/x-wiki
{{desambiguación|coincidiera|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
;2: {{forma verbo|coincidir|p=3s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
bvywepr2h582lt4p7z7xjehd26wwjot
coincidiereis
0
222571
6123622
6082851
2026-07-25T18:54:41Z
TMCbot
164594
.
6123622
wikitext
text/x-wiki
{{desambiguación|coincidierais|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
2nvkqci9lpa5i9b6nbra0i5fadyva41
coincidiéremos
0
222573
6123646
6082869
2026-07-25T18:55:14Z
TMCbot
164594
.
6123646
wikitext
text/x-wiki
{{desambiguación|coincidiéramos|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
suco78hthssp5flvsssqcbw1epou09d
coincidieres
0
222574
6123624
6082852
2026-07-25T18:54:44Z
TMCbot
164594
.
6123624
wikitext
text/x-wiki
{{desambiguación|coincidieras|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
nusr9o1a8j1e7x4t200keypqf330i78
coincidid
0
222576
6123611
6082843
2026-07-25T18:54:26Z
TMCbot
164594
.
6123611
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=vosotros|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
ihwzmftdtr2gzkau27ta2m3a23ze6an
coincidieren
0
222578
6123623
6090074
2026-07-25T18:54:43Z
TMCbot
164594
.
6123623
wikitext
text/x-wiki
{{desambiguación|coincidieran|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
gy0kpwmxfloof598hqzlkp4fo8n9j5h
coincidís
0
222667
6123658
6082880
2026-07-25T18:55:30Z
TMCbot
164594
.
6123658
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=vos|t=presente|m=indicativo}}.
;2: {{forma verbo|coincidir|p=vosotros|t=presente|m=indicativo}}.
== Referencias y notas ==
<references />
s3bjxg1k4fjo20bvdulhxf76ig8g80t
coincidiste
0
222676
6123643
6090079
2026-07-25T18:55:10Z
TMCbot
164594
.
6123643
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
24r7k6401kypjsvfx6ytrcfasxrs4xg
coincidieron
0
222682
6123625
6082853
2026-07-25T18:54:46Z
TMCbot
164594
.
6123625
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=3p|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
0cyx0hgvlibf4excvie03crqbnm7eyw
coincidiría
0
222693
6123638
6082864
2026-07-25T18:55:04Z
TMCbot
164594
.
6123638
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1s|t=condicional}}.
;2: {{forma verbo|coincidir|p=3s|t=condicional}}.
== Referencias y notas ==
<references />
mgkdx778v0qitsbpi1rd9yw75o5i5el
coincidiríamos
0
222696
6123640
6082865
2026-07-25T18:55:06Z
TMCbot
164594
.
6123640
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=1p|t=condicional|m=}}.
== Referencias y notas ==
<references />
70laayrgj8jyeh7ioa0pn2mxqk3dupu
coincidieras
0
222710
6123620
6082850
2026-07-25T18:54:39Z
TMCbot
164594
.
6123620
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=coincidieres|pnota=[[futuro]] del [[subjuntivo]], desusado|v=coincidieses}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2stv|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
i810ouki6416u2lllr2yuv1aa99ktp2
coincidiésemos
0
222713
6123647
6082870
2026-07-25T18:55:16Z
TMCbot
164594
.
6123647
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p1=coincidiéremos|pnota1=[[futuro]] del [[subjuntivo]], desusado|v1=coincidiéramos}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coincidir|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
53tjyabkzw4x8vrfknsfftyxm3aqjbh
coincidíais
0
222812
6123654
6082876
2026-07-25T18:55:25Z
TMCbot
164594
.
6123654
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coincidir|p=2p|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
efi594e1qki01g5bh38wfn0cpozepka
estimare
0
241744
6124180
5536658
2026-07-26T11:57:54Z
Jemily1
121719
desambiguación corregida
6124180
wikitext
text/x-wiki
{{desambiguación|estimaré}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|estimar|p=1s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
;2: {{forma verbo|estimar|p=3s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
oejnj1bcngnl54wv28ja4i1e60vyb9z
alterno
0
270329
6123984
4282584
2026-07-25T21:33:41Z
Tmagc
158167
6123984
wikitext
text/x-wiki
{{desambiguación|alternó||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|alternus}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: {{plm|alternado}} (que ocurre con alternación).<ref name=dle1925>{{DLE1925}}</ref>
;2: Dicho de los días: uno sí y otro no.
{{sinónimo|día por medio}}
;3 {{csem|botánica}}: Dícese de las hojas de las plantas que, por su situación en el tallo o en la rama, corresponden al espacio que media entre una y otra del lado opuesto.<ref name=dle1925 />
;4 {{csem|botánica}}: Dícese también de otros órganos de las plantas que se hallan en la situación indicada.<ref name=dle1925 />
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;5: Escuela pública que comparte el local en turnos alternados.<ref>{{DLE}}</ref>
{{ámbito|Perú}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|alternar|p=1s|t=presente|m=indicativo}}.
== Referencias y notas ==
<references />
jjogo0f2q4s0a238n372dp60mzj5beq
anuláremos
0
333182
6123578
6089883
2026-07-25T14:19:26Z
Jemily1
121719
corrijo desambiguación
6123578
wikitext
text/x-wiki
{{desambiguación|anularemos}}
== {{lengua|es}} ==
{{pron-graf|ayuda=a-nuláremos}}
=== Forma verbal ===
;1: {{forma verbo|anular|p=1p|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
5wn19hrkbcwxkd2jts5edepjzpih6yh
anularen
0
333189
6123580
6082088
2026-07-25T14:30:53Z
Jemily1
121719
quito desambiguación
6123580
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=a-nularen}}
=== Forma verbal ===
;1: {{forma verbo|anular|p=3p|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
mxkixn8fcdo27fd0g774mr61i0h1xh9
anulareis
0
333196
6123579
6089872
2026-07-25T14:21:01Z
Jemily1
121719
corrijo desambiguación
6123579
wikitext
text/x-wiki
{{desambiguación|anularéis}}
== {{lengua|es}} ==
{{pron-graf|ayuda=a-nulareis}}
=== Forma verbal ===
;1: {{forma verbo|anular|p=2p|t=futuro|m=subjuntivo|pronominal=s}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
sxhkffvrtwls1qrxvf0fernqs9pltpl
agotareis
0
334881
6123574
5527354
2026-07-25T12:47:51Z
Jemily1
121719
corrijo desambiguación
6123574
wikitext
text/x-wiki
{{desambiguación|agotaréis}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|agotar|p=2p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
59xxywpy7gdl7az3sw20d01zhk9ntk8
agotares
0
334894
6123576
5541734
2026-07-25T13:04:57Z
Jemily1
121719
quito desambiguación
6123576
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|agotar|p=2stv|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
87zkodgn16h84dbqq0e3s7meovnvytr
agotáremos
0
334897
6123575
5527885
2026-07-25T12:48:20Z
Jemily1
121719
corrijo desambiguación
6123575
wikitext
text/x-wiki
{{desambiguación|agotaremos}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|agotar|p=1p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
l1vo14dctlwm4k9848qk65m8rxfln5o
agotaren
0
334902
6123577
5520000
2026-07-25T13:12:28Z
Jemily1
121719
quito desambiguación
6123577
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|agotar|p=3p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
3e9caajz5n0np3shtaxs5igmeljkcxl
tsuub
0
370350
6124036
5326279
2026-07-26T00:53:16Z
26agcp
138617
/* {{lengua|yua}} */ + referencia, plural
6124036
wikitext
text/x-wiki
== {{lengua|yua}} ==
{{pron-graf|leng=yua}}
=== Etimología ===
{{etimología|leng=yua}}.
[[Archivo:Dasyprocta punctata (Gamboa, Panama).jpg|thumb|(1)]]
==== {{sustantivo|yua}} ====
{{yua.sust}}
;1 {{csem|mamíferos|leng=yua}}: {{taxón|Dasyprocta punctata}} {{plm|agutí}}, {{l|es|sereque}}.<ref>{{ALMY 2007|p=229|cita=TSUUB}}</ref>
== Referencias y notas ==
<references />
jydmx5tu8kmwh4aoewv5tovc3l8ykol
coincidido
0
474970
6123614
6082846
2026-07-25T18:54:30Z
TMCbot
164594
.
6123614
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
{{es.adj}}
;1: {{participio|coincidir|irregular=}}.
== Referencias y notas ==
<references />
dv2s6z4svkt4ne68h8rc142y0wddo4j
coincidida
0
474976
6123612
6082844
2026-07-25T18:54:28Z
TMCbot
164594
.
6123612
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|coincidido|femenino|v=coincidir|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
64nu4nsdzwemljroj4q1onno94aq1sl
coincididas
0
474978
6123613
6082845
2026-07-25T18:54:29Z
TMCbot
164594
.
6123613
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|coincidido|femenino|plural|v=coincidir|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
st3lnk3g83n7lsdo8qgyzhamuh5aq4u
coincididos
0
474979
6123615
6090071
2026-07-25T18:54:32Z
TMCbot
164594
.
6123615
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|coincidido|plural|v=coincidir|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
0ntg82wl12hwkhh3rn20r6oeo12ddxa
pedaleada
0
484092
6123588
4569830
2026-07-25T17:09:17Z
Tmagc
158167
6123588
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|deverbal|pedalear}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1: {{variante|pedaleo}}.
;2: {{plm|bicicleteada}}.
=== Forma flexiva ===
==== Forma adjetiva y de participio ====
;1: {{forma participio|pedaleado|femenino|v=pedalear|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
fddpzcf45k37njmsozkyelygd748u89
6123590
6123588
2026-07-25T17:11:11Z
Tmagc
158167
6123590
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|deverbal|pedalear}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1: {{variante|pedaleo}}.
;2: {{plm|bicicleteada}} (evento).
=== Forma flexiva ===
==== Forma adjetiva y de participio ====
;1: {{forma participio|pedaleado|femenino|v=pedalear|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
pwlx5mdzg10ylptqg4ewpjtf54u5eww
etimos
0
493388
6124179
3455792
2026-07-26T09:54:34Z
Jemily1
121719
parece que esta palabra fue añadida automáticamente por un bot
6124179
wikitext
text/x-wiki
{{referencias}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|etimo}}.
== Referencias y notas ==
<references />
2amnezszdyta1954mht1u7usg62s3yw
infrautilizar
0
503937
6123922
5890337
2026-07-25T20:32:46Z
TMCbot
164594
.
6123922
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizar}}
=== Etimología ===
{{etimología|prefijo|infra|utilizar}}.
=== {{verbo transitivo|es}} ===
;1: No [[emplear]], [[usar]] o [[aprovechar]], hasta donde se debería o podría, el [[potencial]], las [[capacidad]]es o los [[recurso]]s que ofrece algo o alguien. No [[obtener]] lo [[máximo]] de algo o de alguien.
{{relacionado|desaprovechar}}.
{{derivad|infrautilización}}.
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
ozmddmdbsob7sfo5fo9qckf8yppv5kt
infrautilizaciones
0
503959
6123915
5277775
2026-07-25T20:32:39Z
TMCbot
164594
.
6123915
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaciones}}
=== Forma sustantiva femenina ===
;1: {{f.s.p|infrautilización}}.
== Referencias y notas ==
<references />
895jl3855jz32xc7asvzr8va7a4i85r
infrautilizas
0
504346
6123938
4509985
2026-07-25T20:33:04Z
TMCbot
164594
.
6123938
wikitext
text/x-wiki
{{desambiguación|infrautilizás||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizas}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2s|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
hhgvzeropcu28ffwgdcjpvb34mi6zla
infrautilizamos
0
504347
6123920
4509960
2026-07-25T20:32:44Z
TMCbot
164594
.
6123920
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizamos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=nosotros|t=presente|m=indicativo}}.
;2: {{forma verbo|infrautilizar|p=nosotros|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
1nw2g21p22emjddogocqrfy4kdd13ek
infrautilizás
0
504348
6123951
4509998
2026-07-25T20:33:19Z
TMCbot
164594
.
6123951
wikitext
text/x-wiki
{{desambiguación|infrautilizas||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizás}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2sv|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
0py6ovkeuyl4zx6swfhs93trp7xvy21
infrautilizo
0
504349
6123945
4509992
2026-07-25T20:33:11Z
TMCbot
164594
.
6123945
wikitext
text/x-wiki
{{desambiguación|infrautilizó||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizo}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
hcdrr7kwuzynv6d90aon6g07ctba9cb
infrautilizan
0
504350
6123727
4509961
2026-07-25T20:22:06Z
TMCbot
164594
.
6123727
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizan}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
ruj52hmw084qkcw7gnhiqy7nk73x3nr
infrautilizáis
0
504351
6123948
4509995
2026-07-25T20:33:15Z
TMCbot
164594
.
6123948
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizáis}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
9pmla9c90yd5k2z8z3u96x4n8fwb8km
infrautiliza
0
504352
6123910
4509948
2026-07-25T20:32:34Z
TMCbot
164594
.
6123910
wikitext
text/x-wiki
{{desambiguación|infrautilizá|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utiliza}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3s|t=presente|m=indicativo}}.
;2: {{forma verbo|infrautilizar|2s|imperativo|afirmativo=s}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
g9b1djhc0am7vtm88zk4s8bp61p1op4
infrautilizases
0
504353
6123942
4509989
2026-07-25T20:33:08Z
TMCbot
164594
.
6123942
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizares|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizaras|ayuda=infra-utilizases}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
jncf3pqw5sdc83p8s0duc3x30ecw60h
infrautilicés
0
504354
6123909
4509947
2026-07-25T20:32:33Z
TMCbot
164594
.
6123909
wikitext
text/x-wiki
{{desambiguación|infrautilices|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilicés}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=vos|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''infrautilicés''».
== Referencias y notas ==
<references />
ktswk8zgs7egrk46wk33bf340ax6qr0
infrautilizaba
0
504355
6123911
4509949
2026-07-25T20:32:35Z
TMCbot
164594
.
6123911
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaba}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=pret imp|m=indicativo}}.
;2: {{forma verbo|infrautilizar|p=3s|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
cnwivoiuko94h70mn64pnnfpr682grh
infrautilizáramos
0
504356
6123949
4509996
2026-07-25T20:33:16Z
TMCbot
164594
.
6123949
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizáremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizásemos|ayuda=infra-utilizáramos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
35u5ytvcphxkygce1gs4oddkyhsgnk5
infrautilicemos
0
504357
6123904
4509942
2026-07-25T20:32:28Z
TMCbot
164594
.
6123904
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilicemos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|1p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|infrautilizar|p=nosotros|t=exhortatorio}}.
== Referencias y notas ==
<references />
s1es6gy2580iu9e7s9ajm8k9qa6ee75
infrautilizaréis
0
504358
6123731
4509979
2026-07-25T20:22:10Z
TMCbot
164594
.
6123731
wikitext
text/x-wiki
{{desambiguación|infrautilizareis||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaréis}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
3pahjztizwgleunssjqkddfl0glozoa
infrautilizara
0
504359
6123923
4509964
2026-07-25T20:32:47Z
TMCbot
164594
.
6123923
wikitext
text/x-wiki
{{desambiguación|infrautilizará|}}
== {{lengua|es}} ==
{{pron-graf|p=infrautilizare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizase|ayuda=infra-utilizara}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|infrautilizar|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
lm1oessguptijastneg3vbeojuk10pp
infrautilizarais
0
504360
6123924
4509965
2026-07-25T20:32:48Z
TMCbot
164594
.
6123924
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizareis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizaseis|ayuda=infra-utilizarais}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
8h753b04cufj7xqauy48bofgrx8u3yx
infrautilizábamos
0
504361
6123947
4509994
2026-07-25T20:33:14Z
TMCbot
164594
.
6123947
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizábamos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
qt89g3iona68h6dna1lwrppl4ttq5y9
infrautilizaseis
0
504362
6123940
4509987
2026-07-25T20:33:06Z
TMCbot
164594
.
6123940
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizareis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizarais|ayuda=infra-utilizaseis}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
3ij74paxcti5xlx53znptsltpev4slj
infrautilizasen
0
504363
6123941
4509988
2026-07-25T20:33:07Z
TMCbot
164594
.
6123941
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizaren|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizaran|ayuda=infra-utilizasen}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
ah4m736za7adoq4yb9f7rvy3ad9k63w
infrautilizares
0
504364
6123929
5535739
2026-07-25T20:32:53Z
TMCbot
164594
.
6123929
wikitext
text/x-wiki
{{desambiguación|infrautilizaras|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizares}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
9vn5cpy2jbm0d3gllz1tmioi3alohk4
infrautilizaban
0
504365
6123913
4509951
2026-07-25T20:32:37Z
TMCbot
164594
.
6123913
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaban}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
puxvz1b0l6xd6ufsvtir4ddzeupn4xg
infrautilizare
0
504366
6123729
5560274
2026-07-25T20:22:08Z
TMCbot
164594
.
6123729
wikitext
text/x-wiki
{{desambiguación|infrautilizara|infrautilizaré}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizare}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
;2: {{forma verbo|infrautilizar|p=3s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
q6qfd8xdjxga72zjjatihb2hghij5zu
infrautilizase
0
504367
6123939
4509986
2026-07-25T20:33:05Z
TMCbot
164594
.
6123939
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizara|ayuda=infra-utilizase}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|infrautilizar|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
itfirfwqdm2uwn0imzn4zd17yn5laeu
infrautilizaste
0
504368
6123943
4509990
2026-07-25T20:33:09Z
TMCbot
164594
.
6123943
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaste}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
qstywmxder58q8pmnynmdarurba9w35
infrautilizaríais
0
504369
6123934
4509981
2026-07-25T20:33:00Z
TMCbot
164594
.
6123934
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaríais}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
is6r97eyuy02djyom7wmh98to6uzodi
infrautilicéis
0
504370
6123908
4509946
2026-07-25T20:32:32Z
TMCbot
164594
.
6123908
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilicéis}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''infrautilicéis''».
== Referencias y notas ==
<references />
n10e7a5dcd6udpfuhqc37hyj88tpuf4
infrautilicen
0
504371
6123905
4509943
2026-07-25T20:32:29Z
TMCbot
164594
.
6123905
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilicen}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|3p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|infrautilizar|p=ustedes|t=imperativo}}.
== Referencias y notas ==
<references />
guugirk4uhp5y6wwoyogo51zf07tkhb
infrautilices
0
504372
6123906
4509944
2026-07-25T20:32:30Z
TMCbot
164594
.
6123906
wikitext
text/x-wiki
{{desambiguación|infrautilicés|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilices}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2s|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''infrautilices''».
== Referencias y notas ==
<references />
0l6aogs0ta24bzollsp96f64kq84umx
infrautilice
0
504373
6123903
4509941
2026-07-25T20:32:27Z
TMCbot
164594
.
6123903
wikitext
text/x-wiki
{{desambiguación|infrautilicé|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilice}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|1s|t=presente|m=subjuntivo}}.
;2: {{forma verbo|infrautilizar|3s|presente|subjuntivo}}.
;3: {{forma verbo|infrautilizar|p=usted|m=imperativo}}.
== Referencias y notas ==
<references />
5al4bnghybv69yqswkxfsmbkxq5o5xi
infrautilizaras
0
504374
6123728
4509968
2026-07-25T20:22:07Z
TMCbot
164594
.
6123728
wikitext
text/x-wiki
{{desambiguación|infrautilizarás|}}
== {{lengua|es}} ==
{{pron-graf|p=infrautilizares|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizases|ayuda=infra-utilizaras}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
b2numazr41ujtpa6pg16dvdfjd1i7pk
infrautilizaran
0
504375
6123925
4509966
2026-07-25T20:32:49Z
TMCbot
164594
.
6123925
wikitext
text/x-wiki
{{desambiguación|infrautilizarán|}}
== {{lengua|es}} ==
{{pron-graf|p=infrautilizaren|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizasen|ayuda=infra-utilizaran}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
p4k8nu6hzq0psu6umwqottf5b3u6zq5
infrautilizabais
0
504376
6123912
4509950
2026-07-25T20:32:36Z
TMCbot
164594
.
6123912
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizabais}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
l9ld3m2j1zfsgtlve41ettn5vh2g6gz
infrautilizasteis
0
504377
6123944
4509991
2026-07-25T20:33:10Z
TMCbot
164594
.
6123944
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizasteis}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
8dhb85lkenl5n308n4vucy1yupidkkd
infrautilicé
0
504378
6123907
4509945
2026-07-25T20:32:31Z
TMCbot
164594
.
6123907
wikitext
text/x-wiki
{{desambiguación|infrautilice||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilicé}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
itina0992yfkariwlopqj9746m5cozd
infrautilizaremos
0
504379
6123927
4509971
2026-07-25T20:32:51Z
TMCbot
164594
.
6123927
wikitext
text/x-wiki
{{desambiguación|infrautilizáremos||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaremos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
igppaxzbk84xy8axjdlwhbl602k9zed
infrautilizaron
0
504380
6123930
4509974
2026-07-25T20:32:54Z
TMCbot
164594
.
6123930
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaron}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
hfg1zxnvwi7p1x7xn6k1x4mw4ozmtm9
infrautilizó
0
504381
6123953
4510000
2026-07-25T20:33:21Z
TMCbot
164594
.
6123953
wikitext
text/x-wiki
{{desambiguación|infrautilizo||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizó}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
rnehy7iazh5z8ie6ai54hn7sh9a52iv
infrautilizarás
0
504382
6123730
4509977
2026-07-25T20:22:09Z
TMCbot
164594
.
6123730
wikitext
text/x-wiki
{{desambiguación|infrautilizaras||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizarás}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
mofslh2v8hahrkn4awcuoevxv4hmz9p
infrautilizarán
0
504383
6123932
4509976
2026-07-25T20:32:57Z
TMCbot
164594
.
6123932
wikitext
text/x-wiki
{{desambiguación|infrautilizaran||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizarán}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
jkjsxvs12lb11w262eca97n4dzjov3v
infrautilizarían
0
504384
6123936
4509983
2026-07-25T20:33:02Z
TMCbot
164594
.
6123936
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizarían}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
7k368rp2eebwfwzkilaqviwv1xcpkkg
infrautilizásemos
0
504385
6123952
4509999
2026-07-25T20:33:20Z
TMCbot
164594
.
6123952
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=infrautilizáremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=infrautilizáramos|ayuda=infra-utilizásemos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
38dgmfwhxlttorga0o8iu7lnjxpyz1d
infrautilizará
0
504386
6123931
4509975
2026-07-25T20:32:55Z
TMCbot
164594
.
6123931
wikitext
text/x-wiki
{{desambiguación|infrautilizara||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizará}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3s|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
9a7y61zttz52nzuy097k6139wronu5b
infrautilizaríamos
0
504387
6123935
4509982
2026-07-25T20:33:00Z
TMCbot
164594
.
6123935
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaríamos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
4z8yh8y1pudhj5yna77ejs3gf25m71a
infrautilizarías
0
504388
6123937
4509984
2026-07-25T20:33:03Z
TMCbot
164594
.
6123937
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizarías}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
q0yvquh99fa98x47qpzih3qpydnx4qy
infrautilizabas
0
504389
6123914
4509952
2026-07-25T20:32:38Z
TMCbot
164594
.
6123914
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizabas}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2stv|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
sgbib34xw42guvx3tngkzg0k1oeds39
infrautilizaría
0
504390
6123732
4509980
2026-07-25T20:22:11Z
TMCbot
164594
.
6123732
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaría}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=condicional}}.
;2: {{forma verbo|infrautilizar|p=3s|t=condicional}}.
== Referencias y notas ==
<references />
8qgsr9la8x1l3g628ulca8t30uvo7hh
infrautilizaré
0
504391
6123933
4509978
2026-07-25T20:32:58Z
TMCbot
164594
.
6123933
wikitext
text/x-wiki
{{desambiguación|infrautilizare||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaré}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1s|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
0vi4asuhtq6xyl7hf3jp1rpkbzuxsm5
infrautilizá
0
504392
6123946
4509993
2026-07-25T20:33:12Z
TMCbot
164594
.
6123946
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizá}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=vos|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|infrautiliza|nota1=tú}}.
== Referencias y notas ==
<references />
4lvn50gu4c4in0a341oqlsfr263x0si
infrautilizareis
0
504393
6123926
5528599
2026-07-25T20:32:50Z
TMCbot
164594
.
6123926
wikitext
text/x-wiki
{{desambiguación|infrautilizarais|infrautilizaréis}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizareis}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=2p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
do0cjh13kskhsn3756faf8yalm1xg3o
infrautilizáremos
0
504394
6123950
5528794
2026-07-25T20:33:18Z
TMCbot
164594
.
6123950
wikitext
text/x-wiki
{{desambiguación|infrautilizáramos|infrautilizaremos}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizáremos}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=1p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
cs28lvq05y18o77ip6fts6d2569t48g
infrautilizaren
0
504395
6123928
5532712
2026-07-25T20:32:52Z
TMCbot
164594
.
6123928
wikitext
text/x-wiki
{{desambiguación|infrautilizaran|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizaren}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=3p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
jyvd92soqqydok4dx7rzx2xubbc4998
infrautilizado
0
504396
6123918
5753032
2026-07-25T20:32:42Z
TMCbot
164594
.
6123918
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizado}}
=== Forma verbal ===
{{es.adj}}
;1: {{participio|infrautilizar|irregular=|leng=es}}.
== Referencias y notas ==
<references />
te8rjk617trzs5atv7vgfgq1mc7lgte
infrautilizad
0
504397
6123916
4509955
2026-07-25T20:32:40Z
TMCbot
164594
.
6123916
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizad}}
=== Forma verbal ===
;1: {{forma verbo|infrautilizar|p=vosotros|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
thuez2i147zn6s4qbbvqgn5cdect649
infrautilizada
0
504398
6123726
4509956
2026-07-25T20:22:04Z
TMCbot
164594
.
6123726
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizada}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|infrautilizado|femenino|v=infrautilizar|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
gbhafos3ij7es67cxi1uaqvjp5z8meb
infrautilizados
0
504399
6123919
4509959
2026-07-25T20:32:43Z
TMCbot
164594
.
6123919
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizados}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|infrautilizado|plural|v=infrautilizar|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
iwdzj5sclwrirf9l4b0hzey4beb1u1j
infrautilizando
0
504400
6123921
4509962
2026-07-25T20:32:45Z
TMCbot
164594
.
6123921
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizando}}
=== Forma verbal ===
;1: {{gerundio|infrautilizar|irregular=|se=}}.
== Referencias y notas ==
<references />
18yesmft7zfiw992vhspchrol84kkpj
infrautilizadas
0
504401
6123917
4509957
2026-07-25T20:32:41Z
TMCbot
164594
.
6123917
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-utilizadas}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|infrautilizado|femenino|plural|v=infrautilizar|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
p0jekkti944drheru7afm4mins0dw5w
eggplant
0
519328
6123993
5845625
2026-07-25T22:25:43Z
CitationsFreak
149699
/* {{lengua|en}} */
6123993
wikitext
text/x-wiki
== {{lengua|en}} ==
{{pron-graf|leng=en|fono=ˈɛg.plænt}}
=== Etimología ===
{{etimología|leng=en|compuesto|egg|plant}}
=== {{sustantivo|en}} ===
{{en.sust|ci}}
;1 {{csem|verduras|leng=en}}: {{plm|berenjena}}.
{{sinónimo|leng=en|aubergine}}
== Referencias y notas ==
<references />
mcw8qss2zm6kwlag4h9ze8sgw74tbx3
subinspecciones
0
529597
6123897
4644366
2026-07-25T20:25:02Z
TMCbot
164594
.
6123897
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-inspecciones}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|subinspección}}.
== Referencias y notas ==
<references />
kk0snxvg8j1s6lgeswrz0w1blceq271
subestaciones
0
529609
6123896
4644279
2026-07-25T20:25:00Z
TMCbot
164594
.
6123896
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-estaciones}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|subestación}}.
== Referencias y notas ==
<references />
2kh7nzknvi9vnc5bgl5m51a1ph1mmxz
subacuáticos
0
539211
6123804
3718638
2026-07-25T20:23:25Z
TMCbot
164594
.
6123804
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acuáticos}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|subacuático|género=|número=plural}}.
== Referencias y notas ==
<references />
tamm6zc27stryykyg4khqg4lmgizzlc
subacuática
0
539213
6123802
3718636
2026-07-25T20:23:23Z
TMCbot
164594
.
6123802
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acuática}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|subacuático|género=femenino|número=}}.
== Referencias y notas ==
<references />
n515bnu2zjm57ngf2logfpnsww4e0pp
subacuáticas
0
539214
6123803
3718637
2026-07-25T20:23:24Z
TMCbot
164594
.
6123803
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acuáticas}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|subacuático|género=femenino|número=plural}}.
== Referencias y notas ==
<references />
m9e8ibirg4dnbttvxfuxwf573485234
subatómica
0
539215
6123847
6052442
2026-07-25T20:24:09Z
TMCbot
164594
.
6123847
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-atómica}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|subatómico|género=femenino|número=}}.
== Referencias y notas ==
<references />
97q6va52vntvjr48rddbhipnor9itgr
subatómicos
0
539218
6123849
6030469
2026-07-25T20:24:11Z
TMCbot
164594
.
6123849
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-atómicos}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|subatómico|género=|número=plural}}.
== Referencias y notas ==
<references />
c9dkk7y5cmzb774j6k0e99q2rmfk8m4
subatómicas
0
539222
6123848
6026258
2026-07-25T20:24:10Z
TMCbot
164594
.
6123848
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-atómicas}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|subatómico|género=femenino|número=plural}}.
== Referencias y notas ==
<references />
3urv2h3riwo91qmlf9g9iodcva3p7qh
suburbanos
0
549685
6123900
4645418
2026-07-25T20:25:05Z
TMCbot
164594
.
6123900
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-urbanos}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|suburbano|género=|número=plural}}.
== Referencias y notas ==
<references />
fybvqim1f60kob1myfiadgua2g3no74
suburbana
0
549686
6123898
4645415
2026-07-25T20:25:03Z
TMCbot
164594
.
6123898
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-urbana}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|suburbano|género=femenino|número=}}.
== Referencias y notas ==
<references />
7t5pdh118f5lfyaavxxdhq9lwgg167l
suburbanas
0
549691
6123899
4645416
2026-07-25T20:25:03Z
TMCbot
164594
.
6123899
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-urbanas}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|suburbano|género=femenino|número=plural}}.
== Referencias y notas ==
<references />
26rvcff3n23n7ybdusncdruvyfeiyf5
coincidentes
0
553454
6123609
6090070
2026-07-25T18:54:23Z
TMCbot
164594
.
6123609
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|coincidente|género=|número=plural}}.
== Referencias y notas ==
<references />
90aqc083stak7rhp2qrntqofbya14y5
subalternas
0
795755
6123832
4643990
2026-07-25T20:23:53Z
TMCbot
164594
.
6123832
wikitext
text/x-wiki
{{desambiguación|subalternás||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternas}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2s|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
qqyoo1fwnhelh6cgkv08y3i1aalrcnu
subalterno
0
795756
6123839
5863031
2026-07-25T20:24:00Z
TMCbot
164594
.
6123839
wikitext
text/x-wiki
{{desambiguación|subalternó||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alterno}}
=== Etimología ===
{{etimología|la-lat|subalternus}}.<ref name="dle">{{DLE}}</ref>
==== {{adjetivo|es}} ====
{{es.adj}}
;1: {{plm|inferior}}, o que está debajo de una persona o cosa.<ref name="dle25">{{DLE1925}}</ref>
{{sinónimo|inferior}}
;2: De puesto jerárquico inferior en una organización respecto a sus superiores.<ref name="dle" />
{{sinónimo|inferior|subordinado|malmatado}}
{{antónimo|superior}}
==== {{sustantivo|es|masculino|femenino}} ====
{{es.sust|mf}}
;3: Empleado de categoría inferior.<ref name="dle25" />
{{sinónimo|subordinado|inferior|auxiliar|ayudante|empleado|dependiente}}
{{antónimo|director}}
;4: {{impropia|En instituciones públicas:}} Personal sin cargo técnico, asignado a tareas auxiliares.<ref name="dle" />
;5: Integrante del equipo de apoyo de un [[torero]] en una [[corrida]].<ref name="dle" />
;6 {{csem|milicia}}: Oficial cuyo empleo es inferior al de capitán.
==== Véase también ====
{{w|subalternidad|subalterno}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|subalternar|p=1s|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
2h2vza06ejgi605v7sobfr9xdpuf174
subalternáis
0
795759
6123841
3718674
2026-07-25T20:24:02Z
TMCbot
164594
.
6123841
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternáis}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
52bdx5bv9qno7b6sbl2j4pqmnnmax55
subalternamos
0
795760
6123814
3718649
2026-07-25T20:23:35Z
TMCbot
164594
.
6123814
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternamos}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=nosotros|t=presente|m=indicativo}}.
;2: {{forma verbo|subalternar|p=nosotros|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
578z5r6ohqkzkqwswaywbf5fm4x0lng
subalterna
0
795761
6123805
4643987
2026-07-25T20:23:26Z
TMCbot
164594
.
6123805
wikitext
text/x-wiki
{{desambiguación|subalterná|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alterna}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3s|t=presente|m=indicativo}}.
;2: {{forma verbo|subalternar|2s|imperativo|afirmativo=s}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
45lu9bcgqt6arzhmmzn50xqnelll7x6
subalternan
0
795763
6123815
3718650
2026-07-25T20:23:36Z
TMCbot
164594
.
6123815
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternan}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
ck3423d28wgse5ss6ac34iyae00kay4
subalternabas
0
795764
6123808
3718643
2026-07-25T20:23:29Z
TMCbot
164594
.
6123808
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternabas}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2stv|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
a3evgoslosepjmplnkcvkcezvk7nss6
subalternabais
0
795767
6123806
3718641
2026-07-25T20:23:27Z
TMCbot
164594
.
6123806
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternabais}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
jbc9zqm389x8pa99o20qwv57wmzhxxv
subalternaban
0
795768
6123807
3718642
2026-07-25T20:23:28Z
TMCbot
164594
.
6123807
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaban}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
oxrokqwq9isubn6mr3n7btgywa1s9s9
subalterné
0
795769
6123844
3718676
2026-07-25T20:24:06Z
TMCbot
164594
.
6123844
wikitext
text/x-wiki
{{desambiguación|subalterne||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alterné}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
qsivk4el8vqm0qxx1mqdqjdg27hqld7
subalternaste
0
795770
6123835
3718665
2026-07-25T20:23:56Z
TMCbot
164594
.
6123835
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaste}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2stv|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
kq7xy91kn7gclp2o6lqn66n2oaal8hz
subalternó
0
795771
6123846
3718679
2026-07-25T20:24:08Z
TMCbot
164594
.
6123846
wikitext
text/x-wiki
{{desambiguación|subalterno||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternó}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
r2k9lqlsb4yrv5j2jegmrmfmu6jpkdo
subalternaron
0
795772
6123824
3718653
2026-07-25T20:23:45Z
TMCbot
164594
.
6123824
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaron}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
80w1zbh9snanz708e15biyd2o7i0cs1
subalternarás
0
795775
6123827
3718656
2026-07-25T20:23:48Z
TMCbot
164594
.
6123827
wikitext
text/x-wiki
{{desambiguación|subalternaras||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternarás}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2stv|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
dfyxrai52f46tm6c6t74cam7tbgqcmf
subalternará
0
795776
6123825
3718654
2026-07-25T20:23:46Z
TMCbot
164594
.
6123825
wikitext
text/x-wiki
{{desambiguación|subalternara||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternará}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3s|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
lqw2sxsn1qturjk1ey1g4acj0618s3v
subalternaremos
0
795777
6123822
3718652
2026-07-25T20:23:43Z
TMCbot
164594
.
6123822
wikitext
text/x-wiki
{{desambiguación|subalternáremos||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaremos}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
512ngsmt2hqfwokwo4z5lwqs7j4b0j1
subalternarán
0
795778
6123826
3718655
2026-07-25T20:23:47Z
TMCbot
164594
.
6123826
wikitext
text/x-wiki
{{desambiguación|subalternaran||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternarán}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
5ggkemec0c5ucsqcla1jwbe73a4uvas
subalternaría
0
795779
6123829
3718659
2026-07-25T20:23:50Z
TMCbot
164594
.
6123829
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaría}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1s|t=condicional}}.
;2: {{forma verbo|subalternar|p=3s|t=condicional}}.
== Referencias y notas ==
<references />
6yw9drq8qy5b7fb068gr47awcuwrb4t
subalternaréis
0
795780
6123828
3718658
2026-07-25T20:23:49Z
TMCbot
164594
.
6123828
wikitext
text/x-wiki
{{desambiguación|subalternareis||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaréis}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
4yis1h431g2r42blztoed3s2clb89hu
subalternaríais
0
795783
6123830
3718660
2026-07-25T20:23:51Z
TMCbot
164594
.
6123830
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternaríais}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
jh6cmgstb1kqixqz8wf8ucpnvfvxc85
subalternarían
0
795784
6123831
3718662
2026-07-25T20:23:52Z
TMCbot
164594
.
6123831
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternarían}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
auwxkqjd7p124zls4gka7s6wu3e84pg
subalterne
0
795785
6123836
4643991
2026-07-25T20:23:57Z
TMCbot
164594
.
6123836
wikitext
text/x-wiki
{{desambiguación|subalterné|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alterne}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|1s|t=presente|m=subjuntivo}}.
;2: {{forma verbo|subalternar|3s|presente|subjuntivo}}.
;3: {{forma verbo|subalternar|p=usted|m=imperativo}}.
== Referencias y notas ==
<references />
2sywlj4vn0vuw6x92x6smol6wg3ihxx
subalternes
0
795786
6123838
4643993
2026-07-25T20:23:59Z
TMCbot
164594
.
6123838
wikitext
text/x-wiki
{{desambiguación|subalternés|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternes}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2s|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''subalternes''».
== Referencias y notas ==
<references />
kkqhvow9zyrn34eym4td8br95f9m5jq
subalternéis
0
795787
6123845
3718677
2026-07-25T20:24:07Z
TMCbot
164594
.
6123845
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternéis}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''subalternéis''».
== Referencias y notas ==
<references />
3z4yh5h449ued3xx4tlwpkb8lmltuzx
subalternemos
0
795788
6123837
3718668
2026-07-25T20:23:58Z
TMCbot
164594
.
6123837
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternemos}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|1p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|subalternar|p=nosotros|t=exhortatorio}}.
== Referencias y notas ==
<references />
6tglummlr4je2owoezp7qb86b1xw84g
subalternara
0
795791
6123817
3977346
2026-07-25T20:23:38Z
TMCbot
164594
.
6123817
wikitext
text/x-wiki
{{desambiguación|subalternará|}}
== {{lengua|es}} ==
{{pron-graf|p=subalternare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subalternase|ayuda=sub-alternara}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|subalternar|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
kfuaxilb17oiooxwyu0ueyoo0omb16r
subalternarais
0
795792
6123818
3977347
2026-07-25T20:23:39Z
TMCbot
164594
.
6123818
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subalternareis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subalternaseis|ayuda=sub-alternarais}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
sdw8diijskhfyb9akvhpxl92talj11j
subalternáramos
0
795794
6123842
3977359
2026-07-25T20:24:04Z
TMCbot
164594
.
6123842
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subalternáremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subalternásemos|ayuda=sub-alternáramos}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
thf9c08jn4ea8s1s0lczaygb54cfuf9
subalternaran
0
795795
6123819
3977348
2026-07-25T20:23:40Z
TMCbot
164594
.
6123819
wikitext
text/x-wiki
{{desambiguación|subalternarán|}}
== {{lengua|es}} ==
{{pron-graf|p=subalternaren|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subalternasen|ayuda=sub-alternaran}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
75er1ldp0jr430eily3tv9u1nc8bw7e
subalternase
0
795796
6123833
3977354
2026-07-25T20:23:54Z
TMCbot
164594
.
6123833
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subalternare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subalternara|ayuda=sub-alternase}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|subalternar|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
g0kax7pun23wcj4npfha2okf5gup0zx
subalternaseis
0
795799
6123834
3977355
2026-07-25T20:23:55Z
TMCbot
164594
.
6123834
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subalternareis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subalternarais|ayuda=sub-alternaseis}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
riyih6pf5nz774egbdqnb5a9jei4rz1
subalternáremos
0
795801
6123843
5540632
2026-07-25T20:24:05Z
TMCbot
164594
.
6123843
wikitext
text/x-wiki
{{desambiguación|subalternáramos|subalternaremos}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternáremos}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
81y4etrdh1xt1tsg9c0mq9qhgozi1ss
subalternares
0
795802
6123823
5524199
2026-07-25T20:23:44Z
TMCbot
164594
.
6123823
wikitext
text/x-wiki
{{desambiguación|subalternaras|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternares}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2stv|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
7o1nerhmh9w7v1btgnywjxj23h2ynbu
subalternare
0
795803
6123820
5539833
2026-07-25T20:23:41Z
TMCbot
164594
.
6123820
wikitext
text/x-wiki
{{desambiguación|subalternara|subalternaré}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternare}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=1s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
;2: {{forma verbo|subalternar|p=3s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
1719xf2hed5ailh7xmwvymogjyck8ej
subalternareis
0
795804
6123821
5541432
2026-07-25T20:23:42Z
TMCbot
164594
.
6123821
wikitext
text/x-wiki
{{desambiguación|subalternarais|subalternaréis}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternareis}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=2p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
pxyoley31z6fzdv7s2adjt2fmqgxxpg
subalternad
0
795807
6123809
3718644
2026-07-25T20:23:30Z
TMCbot
164594
.
6123809
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternad}}
=== Forma verbal ===
;1: {{forma verbo|subalternar|p=vosotros|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
tg9thbyxjm655et3hot0n41aznajac5
subalternando
0
795808
6123816
3718651
2026-07-25T20:23:37Z
TMCbot
164594
.
6123816
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternando}}
=== Forma verbal ===
;1: {{gerundio|subalternar|irregular=|se=}}.
== Referencias y notas ==
<references />
5dgg9pqhq85kmkst1ubvn8tghmi0eyy
subalternado
0
795809
6123812
5766440
2026-07-25T20:23:33Z
TMCbot
164594
.
6123812
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternado}}
=== Forma verbal ===
{{es.adj}}
;1: {{participio|subalternar|irregular=|leng=es}}.
== Referencias y notas ==
<references />
c41cgn6mmzohs4k8sgxc0qhwooc76xe
subalternada
0
795810
6123810
3718645
2026-07-25T20:23:31Z
TMCbot
164594
.
6123810
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternada}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|subalternado|femenino|v=subalternar|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
fjj4qvpvxp79qj2v2bzwkq779cjxk0i
subalternados
0
795811
6123813
3718648
2026-07-25T20:23:34Z
TMCbot
164594
.
6123813
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternados}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|subalternado|plural|v=subalternar|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
96r7l8duzr1n766i4l70wnt03ftxuzw
subalternadas
0
795812
6123811
3718646
2026-07-25T20:23:32Z
TMCbot
164594
.
6123811
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternadas}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|subalternado|femenino|plural|v=subalternar|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
ielqm4f4ib3opgtwax5hmn6u4f0lf3j
subempleás
0
795871
6123885
3718997
2026-07-25T20:24:48Z
TMCbot
164594
.
6123885
wikitext
text/x-wiki
{{desambiguación|subempleas||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleás}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2sv|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
aghw5mfmj1qolxvuy4nkew4ibu9vto3
subemplean
0
795872
6123858
3718973
2026-07-25T20:24:21Z
TMCbot
164594
.
6123858
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplean}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
6xa0w1u08s0fiy44ng2hwqkl5gixp4c
subempleamos
0
795873
6123857
3718972
2026-07-25T20:24:19Z
TMCbot
164594
.
6123857
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleamos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=nosotros|t=presente|m=indicativo}}.
;2: {{forma verbo|subemplear|p=nosotros|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
h9l9mac8uvcevxx006c883b8t9q3jlq
subempleaba
0
795875
6123850
3718963
2026-07-25T20:24:12Z
TMCbot
164594
.
6123850
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleaba}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1s|t=pret imp|m=indicativo}}.
;2: {{forma verbo|subemplear|p=3s|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
fcn33ugwy7x1nq1krq7kezrqkgfil75
subempleabas
0
795876
6123852
3718966
2026-07-25T20:24:14Z
TMCbot
164594
.
6123852
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleabas}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2stv|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
rrn2n6l7ll9qcpmbag7jhq37d5rch86
subempleaban
0
795879
6123851
3718965
2026-07-25T20:24:13Z
TMCbot
164594
.
6123851
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleaban}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
o4panptv419uidzek2yioqgqb6p0pis
subempleé
0
795880
6123887
3718998
2026-07-25T20:24:51Z
TMCbot
164594
.
6123887
wikitext
text/x-wiki
{{desambiguación|subemplee||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleé}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
pj4030xc6plozst7s5uh1n20o4hu2ac
subempleaste
0
795881
6123876
3718988
2026-07-25T20:24:39Z
TMCbot
164594
.
6123876
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleaste}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2stv|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
g521iauiyszgez7372jvie3ipwtf4af
subempleó
0
795882
6123890
3719001
2026-07-25T20:24:54Z
TMCbot
164594
.
6123890
wikitext
text/x-wiki
{{desambiguación|subempleo||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleó}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
gsr0ym6a7js78p4j1seqt1p14to9eru
subempleasteis
0
795883
6123877
3718989
2026-07-25T20:24:40Z
TMCbot
164594
.
6123877
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleasteis}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
40qspg0s8qp2hqaqpsr13d6kkwtydj8
subemplearé
0
795884
6123868
3718980
2026-07-25T20:24:32Z
TMCbot
164594
.
6123868
wikitext
text/x-wiki
{{desambiguación|subempleare||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearé}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1s|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
6cwd13vazr7fs2l4auvzlqvmvzfb12c
subemplearéis
0
795887
6123869
3718981
2026-07-25T20:24:33Z
TMCbot
164594
.
6123869
wikitext
text/x-wiki
{{desambiguación|subempleareis||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearéis}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
36s1a9a7ib4dukcm4hcwsaof4rxqsgs
subemplearán
0
795888
6123867
3718978
2026-07-25T20:24:30Z
TMCbot
164594
.
6123867
wikitext
text/x-wiki
{{desambiguación|subemplearan||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearán}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
5jndrvd9nthgtdb7efl5y0nffg1vna4
subemplearemos
0
795889
6123863
3718975
2026-07-25T20:24:26Z
TMCbot
164594
.
6123863
wikitext
text/x-wiki
{{desambiguación|subempleáremos||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearemos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
ptw632e0jk4ftl9a4csv3igbme45phk
subemplearías
0
795890
6123873
3718986
2026-07-25T20:24:36Z
TMCbot
164594
.
6123873
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearías}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2stv|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
gk410c3nbvxwhbnt8kxlkspj7nk1l8k
subemplearíamos
0
795891
6123872
3718984
2026-07-25T20:24:35Z
TMCbot
164594
.
6123872
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearíamos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
iv0el807ynv7fowk2z9lyj9u3sa45wr
subemplearíais
0
795892
6123871
3718983
2026-07-25T20:24:34Z
TMCbot
164594
.
6123871
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearíais}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
j49ppcreep2lqimw2br7ypx5b1jn43d
subemplee
0
795895
6123878
3718990
2026-07-25T20:24:41Z
TMCbot
164594
.
6123878
wikitext
text/x-wiki
{{desambiguación|subempleé|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplee}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|1s|t=presente|m=subjuntivo}}.
;2: {{forma verbo|subemplear|3s|presente|subjuntivo}}.
;3: {{forma verbo|subemplear|p=usted|m=imperativo}}.
== Referencias y notas ==
<references />
2wm540x9w85e5ieh0bvvlto6yp4kw1f
subemplees
0
795896
6123881
3718993
2026-07-25T20:24:44Z
TMCbot
164594
.
6123881
wikitext
text/x-wiki
{{desambiguación|subempleés|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplees}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2s|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''subemplees''».
== Referencias y notas ==
<references />
1ji7p8lt4p3awk6eg7ywn0kdsyzycc1
subempleés
0
795897
6123889
3719000
2026-07-25T20:24:53Z
TMCbot
164594
.
6123889
wikitext
text/x-wiki
{{desambiguación|subemplees|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleés}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=vos|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''subempleés''».
== Referencias y notas ==
<references />
6zp0szg28mswdgiytvwgy5evtib91vn
subempleéis
0
795898
6123888
3718999
2026-07-25T20:24:52Z
TMCbot
164594
.
6123888
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleéis}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2p|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''subempleéis''».
== Referencias y notas ==
<references />
oonx6305sk1ot6ol6vq1bs457tzecyy
subempleen
0
795899
6123880
3718992
2026-07-25T20:24:43Z
TMCbot
164594
.
6123880
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleen}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|3p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|subemplear|p=ustedes|t=imperativo}}.
== Referencias y notas ==
<references />
ej00r1rr5giw7v72zfg1focbp1ix53y
subempleemos
0
795900
6123879
3718991
2026-07-25T20:24:42Z
TMCbot
164594
.
6123879
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleemos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|1p|t=presente|m=subjuntivo}}.
;2: {{forma verbo|subemplear|p=nosotros|t=exhortatorio}}.
== Referencias y notas ==
<references />
ka9jhqs1zrjp696jh5b1s5eq32s8s6n
subempleáramos
0
795903
6123883
3977472
2026-07-25T20:24:46Z
TMCbot
164594
.
6123883
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subempleáremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subempleásemos|ayuda=sub-empleáramos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
9blssa8eu61uhbz0tdc6rna3ffuxxmx
subemplearais
0
795904
6123859
3977460
2026-07-25T20:24:22Z
TMCbot
164594
.
6123859
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subempleareis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subempleaseis|ayuda=sub-emplearais}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
d9n7g4arhm5oadhknr8i8u4utzry3yj
subemplearan
0
795905
6123860
3977461
2026-07-25T20:24:23Z
TMCbot
164594
.
6123860
wikitext
text/x-wiki
{{desambiguación|subemplearán|}}
== {{lengua|es}} ==
{{pron-graf|p=subemplearen|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subempleasen|ayuda=sub-emplearan}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
7v8al1lg92idba4dqmogegeipwnezne
subempleases
0
795906
6123875
3977470
2026-07-25T20:24:38Z
TMCbot
164594
.
6123875
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subempleares|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subemplearas|ayuda=sub-empleases}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2stv|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
jk59asmm36xrc3d8xn1e5qhbxvknbar
subemplease
0
795907
6123874
3977467
2026-07-25T20:24:37Z
TMCbot
164594
.
6123874
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subempleare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subempleara|ayuda=sub-emplease}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|subemplear|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
tquz0vls0hlox4ybeyw3ng0o0h9noie
subempleásemos
0
795908
6123886
3977474
2026-07-25T20:24:49Z
TMCbot
164594
.
6123886
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=subempleáremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=subempleáramos|ayuda=sub-empleásemos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
rtg1gk43yv6n0jbb5udd3r95lrz8dl9
subempleares
0
795911
6123865
5524560
2026-07-25T20:24:28Z
TMCbot
164594
.
6123865
wikitext
text/x-wiki
{{desambiguación|subemplearas|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleares}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2stv|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
6fjjyb1lhm4fhob4qnkudgx3nqc94zz
subempleáremos
0
795912
6123884
5550174
2026-07-25T20:24:47Z
TMCbot
164594
.
6123884
wikitext
text/x-wiki
{{desambiguación|subempleáramos|subemplearemos}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleáremos}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
fdps995gl37b2mqvekymhp1bcaiw3ao
subempleare
0
795913
6123861
5510446
2026-07-25T20:24:24Z
TMCbot
164594
.
6123861
wikitext
text/x-wiki
{{desambiguación|subempleara|subemplearé}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleare}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=1s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
;2: {{forma verbo|subemplear|p=3s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
mqmd1tfb7pcww5yrlh1uusg7x4e297n
subempleareis
0
795914
6123862
5508320
2026-07-25T20:24:25Z
TMCbot
164594
.
6123862
wikitext
text/x-wiki
{{desambiguación|subemplearais|subemplearéis}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleareis}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=2p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
k4chdnebx01ul70ytwohcml1t4sw5io
subemplearen
0
795915
6123864
5532411
2026-07-25T20:24:27Z
TMCbot
164594
.
6123864
wikitext
text/x-wiki
{{desambiguación|subemplearan|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearen}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
gno9tg2j62ottccuzzihi4lenubndkn
subempleá
0
795916
6123882
3977471
2026-07-25T20:24:45Z
TMCbot
164594
.
6123882
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleá}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=vos|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|subemplea|nota1=tú}}.
== Referencias y notas ==
<references />
oupzd4ck2bmrh00w5b0odoh6gmg696m
subempleado
0
795919
6123855
5742324
2026-07-25T20:24:17Z
TMCbot
164594
.
6123855
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleado}}
=== Etimología ===
{{etimología}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|ocupaciones}}: Persona con un [[empleo]] inferior al que se merece con respecto a sus capacidades y estudios.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{participio|subemplear|irregular=|leng=es}}.
== Referencias y notas ==
<references />
saa8dsvyetb9zp8vthr4hpl8qkfr1xs
subempleados
0
795920
6123856
4644266
2026-07-25T20:24:18Z
TMCbot
164594
.
6123856
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleados}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|subempleado|plural|v=subemplear|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
s91p9e99kttztv2bzrole9o2qoszeth
subempleada
0
795921
6123853
4644263
2026-07-25T20:24:15Z
TMCbot
164594
.
6123853
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleada}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|subempleado|femenino|v=subemplear|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
8pcjakwgriy50xtnri0g73a0bcwrh8i
subempleadas
0
795922
6123854
4644264
2026-07-25T20:24:16Z
TMCbot
164594
.
6123854
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-empleadas}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|subempleado|femenino|plural|v=subemplear|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
hcbbhxppsfm7hux3nyupi58nt1k9ct7
subemplearon
0
795953
6123866
3718976
2026-07-25T20:24:29Z
TMCbot
164594
.
6123866
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-emplearon}}
=== Forma verbal ===
;1: {{forma verbo|subemplear|p=3p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
4gculst064p3xws4d8qe5fcv19ffnak
coinquilinos
0
821440
6123659
6082881
2026-07-25T18:55:33Z
TMCbot
164594
.
6123659
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|coinquilino}}.
== Referencias y notas ==
<references />
cax5gxwx83l0ognlw1b1z0w89sxlgkz
cointeresados
0
821472
6123717
6082930
2026-07-25T18:56:53Z
TMCbot
164594
.
6123717
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|cointeresado}}.
== Referencias y notas ==
<references />
1b9agk1q0t7hyprpt94ewrfofqv68x8
6123718
6123717
2026-07-25T18:58:17Z
Tmagc
158167
6123718
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=co-interesados}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|cointeresado}}.
== Referencias y notas ==
<references />
bgq73e5xk3zdvthystr9k47tehnafs5
6123720
6123718
2026-07-25T19:00:40Z
Tmagc
158167
6123720
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=co-interesados}}
=== Forma flexiva ===
==== Forma adjetiva ====
;1: {{forma adjetivo|cointeresado|masculino|plural}}.
== Referencias y notas ==
<references />
nit69p08z0zetxbn4v803ufacrdv5vf
malagradecidos
0
825329
6123736
4534316
2026-07-25T20:22:16Z
TMCbot
164594
.
6123736
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-agradecidos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|malagradecido}}.
== Referencias y notas ==
<references />
7pbbi2irc6ivk5ctys1lpk9djb6dd8f
malhojos
0
825353
6123789
3592028
2026-07-25T20:23:10Z
TMCbot
164594
.
6123789
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-hojos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|malhojo}}.
== Referencias y notas ==
<references />
0znvx04bme7qgqy3l26ska5bmfigk3e
malaconsejados
0
825367
6123733
3591321
2026-07-25T20:22:12Z
TMCbot
164594
.
6123733
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-aconsejados}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|malaconsejado}}.
== Referencias y notas ==
<references />
g8e344q7g0epam40yuxldcw4to85zn9
malhechos
0
825400
6123787
3591988
2026-07-25T20:23:08Z
TMCbot
164594
.
6123787
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-hechos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|malhecho}}.
== Referencias y notas ==
<references />
k23k8qux5eein2tsmpml3khsjuooxfs
postestructuralismos
0
827234
6123796
3647872
2026-07-25T20:23:18Z
TMCbot
164594
.
6123796
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=post-estructuralismos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|postestructuralismo}}.
== Referencias y notas ==
<references />
ovlazqodpxpynmqmrn2wqmo9eqxnw3c
posthumanismos
0
827235
6123797
3647884
2026-07-25T20:23:19Z
TMCbot
164594
.
6123797
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=post-humanismos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|posthumanismo}}.
== Referencias y notas ==
<references />
rnfjkytikjwpu42lce12z73xgypa8dj
subacetatos
0
828616
6123801
3718634
2026-07-25T20:23:22Z
TMCbot
164594
.
6123801
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acetatos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|subacetato}}.
== Referencias y notas ==
<references />
2mbkuq5bq0y169x00zynfwqjr0lyzl0
subalternos
0
828731
6123840
4643995
2026-07-25T20:24:01Z
TMCbot
164594
.
6123840
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-alternos}}
=== Forma sustantiva masculina ===
;1: {{forma sustantivo plural|subalterno}}.
== Referencias y notas ==
<references />
dcl0oabuhfi8elhseb032u8q8rz0s72
malhiriendo
0
832052
6123788
5678349
2026-07-25T20:23:09Z
TMCbot
164594
.
6123788
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-hiriendo}}
=== Forma verbal ===
;1: {{gerundio|malherir|irregular=s}}.
== Referencias y notas ==
<references />
ne73wtk6uylf85pazrqqpyyeh9ljt2q
conexionar
0
837959
6123595
4357951
2026-07-25T17:37:43Z
Tmagc
158167
6123595
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|sufijo|conexión|ar}}.
==== {{verbo transitivo|es}} ====
;1: {{variante rara|conectar}}.
==== Conjugación ====
{{es.v}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{infinitivo|conexionarse|num=|leng=es}}.
== Referencias y notas ==
<references />
p9pzzeo7cltw0r69oa1yfj1gmm7rdc7
6123596
6123595
2026-07-25T17:38:05Z
Tmagc
158167
6123596
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|sufijo|conexión|ar}}.
==== {{verbo transitivo|es}} ====
;1: {{variante rara|conectar}}.
==== Conjugación ====
{{es.v}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{infinitivo|conexionarse|num=|leng=es}}
== Referencias y notas ==
<references />
35mmnm146wvaggqna3997nxo112gvdl
6123597
6123596
2026-07-25T17:38:23Z
Tmagc
158167
6123597
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|sufijo|conexión|ar}}.
==== {{verbo transitivo|es}} ====
;1: {{variante rara|conectar}}.
==== Conjugación ====
{{es.v}}
== Referencias y notas ==
<references />
kyqm3bknpk38sf31ola7v5ln2m66bni
malanocho
0
851939
6123766
3591372
2026-07-25T20:22:45Z
TMCbot
164594
.
6123766
wikitext
text/x-wiki
{{desambiguación|malanochó||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocho}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
pjenzeo95d1zp8r5ns0lhtug3wjdk5b
malanochamos
0
851940
6123741
3591352
2026-07-25T20:22:21Z
TMCbot
164594
.
6123741
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochamos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=nosotros|t=presente|m=indicativo}}.
;2: {{forma verbo|malanocharse|p=nosotros|t=pret ind|m=indicativo}}.
== Referencias y notas ==
<references />
2sl2n3gkp8j1edywlzfso7m168jqm77
malanocháis
0
851944
6123768
3591374
2026-07-25T20:22:47Z
TMCbot
164594
.
6123768
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocháis}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
srmv8givw9rabl7by143bbuji4uopil
malanochan
0
851945
6123742
3591353
2026-07-25T20:22:22Z
TMCbot
164594
.
6123742
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochan}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3p|t=presente|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
p66avk0za97sbad5n5zb2y10x5ey006
malanochábamos
0
851946
6123767
3591373
2026-07-25T20:22:46Z
TMCbot
164594
.
6123767
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochábamos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
an5q0q72tpojnxci20hzveo8mv62cgy
malanochaba
0
851947
6123737
3591344
2026-07-25T20:22:17Z
TMCbot
164594
.
6123737
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochaba}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=pret imp|m=indicativo}}.
;2: {{forma verbo|malanocharse|p=3s|t=pret imp|m=indicativo}}.
== Referencias y notas ==
<references />
2ktzzlmqte3sxcn377s18thf6d1dtwd
malanochaban
0
851948
6123738
3591346
2026-07-25T20:22:18Z
TMCbot
164594
.
6123738
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochaban}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3p|t=pret imp|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
q0pypayceakpz24y1fi1xufjgprtr1d
malanochaste
0
851951
6123761
3591370
2026-07-25T20:22:40Z
TMCbot
164594
.
6123761
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochaste}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2stv|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
d87yn5g8r2ry3011c7fffa4zaoe6xq7
malanochó
0
851952
6123777
3591378
2026-07-25T20:22:57Z
TMCbot
164594
.
6123777
wikitext
text/x-wiki
{{desambiguación|malanocho||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochó}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
6lfi8cdrd9jur362srdg7woidfl7k69
malanoché
0
851953
6123773
3591377
2026-07-25T20:22:53Z
TMCbot
164594
.
6123773
wikitext
text/x-wiki
{{desambiguación|malanoche||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anoché}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
julvark282ydq7icewk3jslvkd96oly
malanochasteis
0
851954
6123762
3591371
2026-07-25T20:22:41Z
TMCbot
164594
.
6123762
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochasteis}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
6hb9qoyxw8qovcknid17zjvq9fyjd58
malanocharon
0
851955
6123751
3591357
2026-07-25T20:22:31Z
TMCbot
164594
.
6123751
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharon}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3p|t=pret ind|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
o8yjchpgit4knznqnb7j2bfja44btel
malanocharé
0
851956
6123754
3591362
2026-07-25T20:22:34Z
TMCbot
164594
.
6123754
wikitext
text/x-wiki
{{desambiguación|malanochare||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharé}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
pqw83utg80msm7h70826uhoaox6bb2g
malanochará
0
851959
6123752
3591358
2026-07-25T20:22:32Z
TMCbot
164594
.
6123752
wikitext
text/x-wiki
{{desambiguación|malanochara||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochará}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3s|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
alualr9vn7fll7wvrp9tj7z4a2d0w3q
malanocharéis
0
851960
6123755
3591363
2026-07-25T20:22:35Z
TMCbot
164594
.
6123755
wikitext
text/x-wiki
{{desambiguación|malanochareis||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharéis}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
79lvbz073jtp9qxigtb6o625yttxvwp
malanocharán
0
851961
6123753
3591360
2026-07-25T20:22:33Z
TMCbot
164594
.
6123753
wikitext
text/x-wiki
{{desambiguación|malanocharan||}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharán}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3p|t=futuro|m=indicativo|nopron=|leng=es}}.
== Referencias y notas ==
<references />
hrisjto61krep49110x4xwidq478oo1
malanocharía
0
851962
6123756
3591364
2026-07-25T20:22:36Z
TMCbot
164594
.
6123756
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharía}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=condicional}}.
;2: {{forma verbo|malanocharse|p=3s|t=condicional}}.
== Referencias y notas ==
<references />
i1xc7hlac7ujjxvxctw056jv5av5nao
malanocharías
0
851963
6123758
3591368
2026-07-25T20:22:37Z
TMCbot
164594
.
6123758
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharías}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2stv|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
r7ta5t4arr9oltoekiqt44306io7i4j
malanocharíamos
0
851964
6123757
3591366
2026-07-25T20:22:37Z
TMCbot
164594
.
6123757
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharíamos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1p|t=condicional|m=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
paofn069pg6a3n96u3xa5ygrk8bjgxg
malanochés
0
851967
6123776
3936960
2026-07-25T20:22:56Z
TMCbot
164594
.
6123776
wikitext
text/x-wiki
{{desambiguación|malanoches|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochés}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=vos|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no te ''malanochés''».
{{relacionado|malanochate|nota1=imperativo afirmativo}}.
== Referencias y notas ==
<references />
8ym8jfprknx91wy2h17rosy3b5yewhf
malanoches
0
851968
6123765
3936957
2026-07-25T20:22:44Z
TMCbot
164594
.
6123765
wikitext
text/x-wiki
{{desambiguación|malanochés|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anoches}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2s|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no te ''malanoches''».
{{relacionado|malanóchate|nota1=imperativo afirmativo}}.
== Referencias y notas ==
<references />
mkvih2szuigdglgxzs6bsaxks67u9it
malanochéis
0
851969
6123774
3936958
2026-07-25T20:22:54Z
TMCbot
164594
.
6123774
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochéis}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2p|t=presente|m=subjuntivo}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no os ''malanochéis''».
{{relacionado|malanochaos|nota1=imperativo afirmativo}}.
== Referencias y notas ==
<references />
rf6nuf9wadudmpt52f839pptfxi3o80
malanochemos
0
851970
6123763
5457984
2026-07-25T20:22:42Z
TMCbot
164594
.
6123763
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochemos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|1p|t=presente|m=subjuntivo}}.
== Referencias y notas ==
<references />
osocnek7ad8rcvcgbzlqfpr5hkrmgai
malanochen
0
851971
6123764
5457985
2026-07-25T20:22:43Z
TMCbot
164594
.
6123764
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochen}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|3p|t=presente|m=subjuntivo}}.
== Referencias y notas ==
<references />
nkg8h2vkevuxdhcuczg2tpvnq2024ao
malanochara
0
851972
6123744
3929006
2026-07-25T20:22:24Z
TMCbot
164594
.
6123744
wikitext
text/x-wiki
{{desambiguación|malanochará|}}
== {{lengua|es}} ==
{{pron-graf|p=malanochare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanochase|ayuda=mal-anochara}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|malanocharse|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
t8z8eo1k9jwoeuiskq8nt3p4sil8w4j
malanocháramos
0
851975
6123770
3929024
2026-07-25T20:22:49Z
TMCbot
164594
.
6123770
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=malanocháremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanochásemos|ayuda=mal-anocháramos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
304td5qb4byyyfty2e9vla4booeec8e
malanochase
0
851976
6123759
3929014
2026-07-25T20:22:38Z
TMCbot
164594
.
6123759
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=malanochare|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanochara|ayuda=mal-anochase}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=imperfecto|m=subjuntivo}}.
;2: {{forma verbo|malanocharse|p=3s|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
jtltzxkfm9l72wctybeodw1lzsqtnpx
malanocharan
0
851977
6123746
3929008
2026-07-25T20:22:26Z
TMCbot
164594
.
6123746
wikitext
text/x-wiki
{{desambiguación|malanocharán|}}
== {{lengua|es}} ==
{{pron-graf|p=malanocharen|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanochasen|ayuda=mal-anocharan}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
67sed2rz3ss7uaj34if7kcytxxtyrbi
malanochases
0
851978
6123760
3929017
2026-07-25T20:22:39Z
TMCbot
164594
.
6123760
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=malanochares|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanocharas|ayuda=mal-anochases}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2stv|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
1ou5nud5du3bb4wqt15luyu7ntdla70
malanocharais
0
851979
6123745
3929007
2026-07-25T20:22:25Z
TMCbot
164594
.
6123745
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=malanochareis|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanochaseis|ayuda=mal-anocharais}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
nkf8m4uprw764wyet6mngbeux0wghif
malanochásemos
0
851980
6123772
3929026
2026-07-25T20:22:52Z
TMCbot
164594
.
6123772
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|p=malanocháremos|pnota=[[futuro]] del [[subjuntivo]], desusado|v=malanocháramos|ayuda=mal-anochásemos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1p|t=imperfecto|m=subjuntivo}}.
== Referencias y notas ==
<references />
pkgs4bucizvi0hmffpi8lh0mde09pfs
malanochares
0
851983
6123750
5532222
2026-07-25T20:22:30Z
TMCbot
164594
.
6123750
wikitext
text/x-wiki
{{desambiguación|malanocharas|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochares}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2stv|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
5cv7h3baoozpcpyr1n993k2wtv9ppdy
malanochare
0
851984
6123747
5529045
2026-07-25T20:22:27Z
TMCbot
164594
.
6123747
wikitext
text/x-wiki
{{desambiguación|malanochara|malanocharé}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochare}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
;2: {{forma verbo|malanocharse|p=3s|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
07onaoiyeugytgsdwf7xfo28jec0bf6
malanocháremos
0
851985
6123771
5509529
2026-07-25T20:22:51Z
TMCbot
164594
.
6123771
wikitext
text/x-wiki
{{desambiguación|malanocháramos|malanocharemos}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocháremos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=1p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
2fxzwai33us2s9t3h8l1ib3084edm8i
malanochareis
0
851986
6123748
5559125
2026-07-25T20:22:28Z
TMCbot
164594
.
6123748
wikitext
text/x-wiki
{{desambiguación|malanocharais|malanocharéis}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochareis}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=2p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
k2wjd4t6uxfp471hrqn343x2d8d11gy
malanochándose
0
851987
6123769
5515132
2026-07-25T20:22:49Z
TMCbot
164594
.
6123769
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochándose}}
=== Forma verbal ===
;1: {{gerundio|malanocharse|irregular=|se=s}}.
{{uso|admite doble sintaxis como «están malanochándose» o «se están malanochando»}}
== Referencias y notas ==
<references />
jesmr4vzj6xv4yyo79sxiph9m3f7jbb
malanocharen
0
851988
6123749
5536318
2026-07-25T20:22:29Z
TMCbot
164594
.
6123749
wikitext
text/x-wiki
{{desambiguación|malanocharan|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anocharen}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=3p|t=futuro|m=subjuntivo}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
4u29up84vrx1r1bzp0yvwf0prw1zh64
malanóchate
0
851991
6123778
3936961
2026-07-25T20:22:58Z
TMCbot
164594
.
6123778
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anóchate}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=tú|t=imperativo|afirmativo=s|enclítico=s|pencl=te}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|malanochate|nota1=vos}}.
== Referencias y notas ==
<references />
okqhmfyip7o82yui52izt4gfdz7iycp
malanochaos
0
851992
6123743
3591354
2026-07-25T20:22:23Z
TMCbot
164594
.
6123743
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochaos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=vosotros|t=imperativo|afirmativo=s|enclítico=s|pencl=os}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
48c5r3yn2admqc55azlln9jp3np2xef
malanochémonos
0
851993
6123775
3936959
2026-07-25T20:22:55Z
TMCbot
164594
.
6123775
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochémonos}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=nosotros|t=exhortativo|afirmativo=s|enclítico=s|pencl=nos}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|malanochemos}}.
== Referencias y notas ==
<references />
1hpyxsynfqhjiaq97wd9wsillwgc0qk
malanóchese
0
851994
6123780
3936963
2026-07-25T20:23:00Z
TMCbot
164594
.
6123780
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anóchese}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=usted|t=imperativo|afirmativo=s|enclítico=s|pencl=se}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|malanóchate|nota1=tú}}.
== Referencias y notas ==
<references />
nez1pe0ddbgvqc25z1967q9ue9jn52q
malanóchense
0
851995
6123779
3936962
2026-07-25T20:22:59Z
TMCbot
164594
.
6123779
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anóchense}}
=== Forma verbal ===
;1: {{forma verbo|malanocharse|p=ustedes|t=imperativo|afirmativo=s|enclítico=s|pencl=se}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|malanochaos|nota1=vosotros}}.
== Referencias y notas ==
<references />
t83x49tsag5l0qqdrohdsqeoone20qu
malanochado
0
851996
6123740
5760212
2026-07-25T20:22:20Z
TMCbot
164594
.
6123740
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochado}}
=== Forma verbal ===
{{es.adj}}
;1: {{participio|malanocharse|irregular=|leng=es}}.
== Referencias y notas ==
<references />
dv7hcf5ynmux8lx7y08t59kv525efro
malanochada
0
851999
6123739
3591348
2026-07-25T20:22:19Z
TMCbot
164594
.
6123739
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-anochada}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|malanochado|femenino|v=malanocharse|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
gn7zzpwa3g16hm6stitr3tb5zxmi3bx
coincidencias
0
857929
6123608
6082841
2026-07-25T18:54:21Z
TMCbot
164594
.
6123608
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|coincidencia}}.
== Referencias y notas ==
<references />
aqs6cfow5kuzcm49o4b2w2ey9b5q5sn
malaventuranzas
0
858657
6123781
3591396
2026-07-25T20:23:01Z
TMCbot
164594
.
6123781
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-aventuranzas}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|malaventuranza}}.
== Referencias y notas ==
<references />
h0gnxnzfgljy8jrc9jz8g7qaumaoh8u
6123961
6123781
2026-07-25T20:38:23Z
Tmagc
158167
6123961
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mala-venturanzas}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|malaventuranza}}.
== Referencias y notas ==
<references />
srh5pnbqwwsnxo0rkxur2u9b0ye0d7o
malaventuras
0
859039
6123782
3591398
2026-07-25T20:23:03Z
TMCbot
164594
.
6123782
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-aventuras}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|malaventura}}.
== Referencias y notas ==
<references />
jlpowg3b1op8gweimx865z8pkaz5b6z
6123959
6123782
2026-07-25T20:37:52Z
Tmagc
158167
6123959
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mala-venturas}}
=== Forma sustantiva femenina ===
;1: {{forma sustantivo plural|malaventura}}.
== Referencias y notas ==
<references />
2brdavzjt1745zpououv06rj6r72oa2
postoperatorios
0
860102
6123966
4581597
2026-07-25T20:42:46Z
Tmagc
158167
6123966
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=post-operatorio}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|postoperatorio|género=|número=plural}}.
== Referencias y notas ==
<references />
idsf3p79nuzk51g5dys8siazciel4p1
postoperatorias
0
860104
6123800
4581596
2026-07-25T20:23:21Z
TMCbot
164594
.
6123800
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=post-operatorias}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|postoperatorio|género=femenino|número=plural}}.
== Referencias y notas ==
<references />
iyfrxkl3mqa8s7fwu1csovhdo8b8wig
postoperatoria
0
860105
6123799
4581595
2026-07-25T20:23:20Z
TMCbot
164594
.
6123799
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=post-operatoria}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|postoperatorio|género=femenino|número=}}.
== Referencias y notas ==
<references />
kqrbr9ul8ql5ugfdli4p9izupdeps37
atolondrar
0
873775
6123598
5800182
2026-07-25T17:43:39Z
Tmagc
158167
6123598
wikitext
text/x-wiki
{{desambiguación}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|confijo|a|tolondro|ar}}
=== {{verbo transitivo|es}} ===
;1: {{plm|aturdir}}, [[atontar]] (causar aturdimiento).<ref name="drae">{{DRAE2001}}</ref>
{{uso|utcp}}
=== Conjugación ===
{{es.v}}
=== Véase también ===
* [[atolondrarse]]
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
q5w5q8s0lisx55u2bvbetnn5lhgk5og
conexionarse
0
874189
6123594
5808851
2026-07-25T17:36:29Z
Tmagc
158167
6123594
wikitext
text/x-wiki
{{desambiguación}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|pronominal|conexionar}}.
=== {{verbo pronominal|es}} ===
;1: {{plm|conexionar}} (uso pronominal de).<ref name="drae">{{DRAE2001}}</ref>
=== Conjugación ===
{{es.v}}
== Referencias y notas ==
<references />
i44ncxxgwka4tyj4k0cb3tvicjxbep3
malhumorar
0
876482
6123791
5807199
2026-07-25T20:23:13Z
TMCbot
164594
.
6123791
wikitext
text/x-wiki
{{desambiguación}}
{{esbozo}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-humorar}}
=== Etimología ===
{{etimología}}
=== {{verbo transitivo|es}} ===
;1: <ref name="drae">{{DRAE2001}}</ref>
{{uso|utcp}}
=== Conjugación ===
{{es.v}}
=== Véase también ===
* [[malhumorarse]]
=== Traducciones ===
{{trad-arriba}}
{{t|ca|a1=1|t1=malhumorar}}
{{trad-abajo}}
== Referencias y notas ==
<references />
4q4j90t4y6jqsgtkob5h7qjnidy2zam
malhumorarse
0
878779
6123792
5804738
2026-07-25T20:23:14Z
TMCbot
164594
.
6123792
wikitext
text/x-wiki
{{desambiguación}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-humorarse}}
=== Etimología ===
{{etimología}}
=== {{verbo pronominal|es}} ===
;1: {{plm|malhumorar}} (uso pronominal de ...)
=== Conjugación ===
{{es.v}}
=== Traducciones ===
{{trad-arriba}}
{{t|ca|a1=1|t1=malhumorar-se}}
{{trad-abajo}}
== Referencias y notas ==
<references />
0yrrt00t7ftx7w6depyexrmigmyvowu
subentenderse
0
881444
6123891
5796883
2026-07-25T20:24:55Z
TMCbot
164594
.
6123891
wikitext
text/x-wiki
{{desambiguación}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-entenderse}}
=== Etimología ===
{{etimología}}
=== {{verbo pronominal|es}} ===
;1: {{plm|subentender}} (uso pronominal de ...)
=== Conjugación ===
{{es.v|nucleopres1=subent#ie#nd}}
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
n5p7dvue81pcrrt9m5fbkj20mzndk8o
malhumoraos
0
894951
6123790
3592041
2026-07-25T20:23:11Z
TMCbot
164594
.
6123790
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-humoraos}}
=== Forma verbal ===
;1: {{forma verbo|malhumorarse|p=2p|t=imperativo|afirmativo=sí|enclítico=sí|pencl=os}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no os ''[[malhumoréis]]''»
== Referencias y notas ==
<references />
niine20ttg9hk90q0m9k3oju114ioje
malhumorate
0
894952
6123793
3592060
2026-07-25T20:23:15Z
TMCbot
164594
.
6123793
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-humorate}}
=== Forma verbal ===
;1: {{forma verbo|malhumorarse|p=2sv|t=imperativo|afirmativo=sí|enclítico=sí|pencl=te}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no te ''[[malhumorés]]''»
== Referencias y notas ==
<references />
iu0drbtvfc9u3lqyza5sytlfck3l1f1
malhumórate
0
894953
6123794
3592075
2026-07-25T20:23:16Z
TMCbot
164594
.
6123794
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-humórate}}
=== Forma verbal ===
;1: {{forma verbo|malhumorarse|p=2s|t=imperativo|afirmativo=sí|enclítico=sí|pencl=te}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no te ''[[malhumores]]''»
== Referencias y notas ==
<references />
t4715c8qinnlbqjg5ws4y8u2jn0ovju
malhumórense
0
894954
6123795
3592076
2026-07-25T20:23:17Z
TMCbot
164594
.
6123795
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-humórense}}
=== Forma verbal ===
;1: {{forma verbo|malhumorarse|p=2pu|t=imperativo|afirmativo=sí|enclítico=sí|pencl=se}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no se ''[[malhumoren]]''»
== Referencias y notas ==
<references />
dmoj1drbf0a7owjnsztsdo0q2jpvfn2
subentendete
0
897831
6123892
3719018
2026-07-25T20:24:56Z
TMCbot
164594
.
6123892
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-entendete}}
=== Forma verbal ===
;1: {{forma verbo|subentenderse|p=2sv|t=imperativo|afirmativo=sí|enclítico=sí|pencl=te}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no te ''[[subentendás]]''»
== Referencias y notas ==
<references />
iznzrb8ew0pvd5oz8hi47jwjmq1pqam
subentendiéndose
0
897832
6123893
3719028
2026-07-25T20:24:57Z
TMCbot
164594
.
6123893
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-entendiéndose}}
=== Forma verbal ===
;1: {{gerundio|subentender|se=s}}.
== Referencias y notas ==
<references />
9orosie5c2dc6zjreprpnaorsj13f6d
subentiéndanse
0
897833
6123894
3719048
2026-07-25T20:24:58Z
TMCbot
164594
.
6123894
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-entiéndanse}}
=== Forma verbal ===
;1: {{forma verbo|subentenderse|p=2pu|t=imperativo|afirmativo=sí|enclítico=sí|pencl=se}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no se ''[[subentiendan]]''»
== Referencias y notas ==
<references />
kw2bgxvmnylq40586fqq2h7nrdarude
subentiéndete
0
897834
6123895
3719049
2026-07-25T20:24:59Z
TMCbot
164594
.
6123895
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-entiéndete}}
=== Forma verbal ===
;1: {{forma verbo|subentenderse|p=2s|t=imperativo|afirmativo=sí|enclítico=sí|pencl=te}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]]: «no te ''[[subentiendas]]''»
== Referencias y notas ==
<references />
iam1ri3y7z8omomfmms5dv5u6up2owo
haver
0
899188
6124057
6095699
2026-07-26T02:22:36Z
Tmagc
158167
6124057
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|ayuda=havêr|audio=LL-Q7026 (cat)-Unjoanqualsevol-haver.wav|aunota1=El Prat de Llobregat|v=heure|v2=haure}}
=== Etimología 1 ===
{{etimología|leng=ca|la|habeo|tener|alt=habēre}}, y este {{etim|leng=ca|itc-pro|*χab/f-ē-}}, {{etim|leng=ca|ine-pro|*gʰh₁b(ʰ)-}} o bien {{l+|ine-pro|*ghabh-}}.
==== {{verbo auxiliar|ca}} ====
;1: {{plm|haber}}.<ref name=gdlc>{{GDLC}}</ref>
==== {{verbo transitivo|ca}} ====
;2: {{plm|tener}}.
==== {{sustantivo|ca|masculino}} ====
{{ca.sust|m}}
;3: {{plm|posesión}}.<ref name=gdlc />
{{sinónimo|leng=ca|possessió}}.
;4: {{plm|crédito}}.<ref name=gdlc />
==== Locuciones ====
{{trad-arriba|locuciones}}
* {{l|ca|haver de}}
* {{l|ca|haver-hi}}
{{trad-abajo}}
==== Conjugación ====
{{ca.v}}
==== Información adicional ====
{{derivad|leng=ca|havedor}}.
== {{lengua|lad}} ==
{{pron-graf|leng=lad|g1=חאב׳יר}}
=== Etimología 1 ===
{{etimología|leng=lad|he|חבר}}.
==== {{sustantivo masculino|lad}} ====
;1: {{plm|amigo}}, {{l|lad|camarada}} o {{l|lad|compadre}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología 1 ===
{{etimología|leng=pt|roa-opt|aver|haber}}, y este {{etim|leng=pt|la|habeo|tener|alt=habēre}}, {{etim|leng=pt|itc-pro|*χab/f-ē-}}, {{etim|leng=pt|ine-pro|*gʰh₁b(ʰ)-}} o bien {{l+|ine-pro|*ghabh-}}.
==== {{verbo auxiliar|pt}} ====
;1: {{plm|haber}}.<ref name=au>{{Aulete}}</ref>
{{uso|leng=pt|formal}}.
{{sinónimo|leng=pt|ter|nota1=coloquial}}.
==== {{verbo impersonal|pt}} ====
;2: {{plm|existir}} o {{l|es|haber}}.<ref name=au />
{{sinónimo|leng=pt|existir|ter}}.
{{antónimo|leng=pt|inexistir}}.
==== {{verbo intransitivo|pt}} ====
;3: {{plm|acontecer}}, {{l|es|haber}}, {{l|es|ocurrir}} o {{l|es|suceder}}.<ref name=au />
{{sinónimo|leng=pt|acontecer|ocorrer|produzir-se|realizar-se|sobrevir|suceder}}.
==== {{verbo transitivo|pt}} ====
;4: {{plm|poseer}} o {{l|pt|tener}}.<ref name=au />
{{uso|leng=pt|anticuado}}.
{{sinónimo|leng=pt|deter|estar com|possuir|ter}}.
;5: {{plm|recuperar}}.<ref name=au />
{{sinónimo|leng=pt|reaver|recuperar}}.
==== {{sustantivo masculino|pt}} ====
{{pt.sust}}
;6: {{plm|deuda}} (pendiente).<ref name=au />
{{sinónimo|leng=pt|débito|dívida}}.
==== Locuciones ====
{{trad-arriba|locuciones}}
* {{l|pt|bem haja}}
* {{l|pt|haja o que houver}}
* {{l|pt|haja vista}}
* {{l|pt|haver às mãos}}
* {{l|pt|haver como}}
* {{l|pt|haver de}}
* {{l|pt|haver mister}}
* {{l|pt|haver muito}}
* {{l|pt|haver por bem}}
* {{l|pt|mal haja}}
* {{l|pt|não há de quê}}
{{trad-abajo}}
==== Conjugación ====
{{pt.v}}
==== Información adicional ====
{{derivad|leng=pt|reaver}}
== Referencias y notas ==
<references />
82b7ho4rhrm8csyanwchxrt1lttsso8
6124058
6124057
2026-07-26T02:24:31Z
Tmagc
158167
/* Conjugación */
6124058
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca|ayuda=havêr|audio=LL-Q7026 (cat)-Unjoanqualsevol-haver.wav|aunota1=El Prat de Llobregat|v=heure|v2=haure}}
=== Etimología 1 ===
{{etimología|leng=ca|la|habeo|tener|alt=habēre}}, y este {{etim|leng=ca|itc-pro|*χab/f-ē-}}, {{etim|leng=ca|ine-pro|*gʰh₁b(ʰ)-}} o bien {{l+|ine-pro|*ghabh-}}.
==== {{verbo auxiliar|ca}} ====
;1: {{plm|haber}}.<ref name=gdlc>{{GDLC}}</ref>
==== {{verbo transitivo|ca}} ====
;2: {{plm|tener}}.
==== {{sustantivo|ca|masculino}} ====
{{ca.sust|m}}
;3: {{plm|posesión}}.<ref name=gdlc />
{{sinónimo|leng=ca|possessió}}.
;4: {{plm|crédito}}.<ref name=gdlc />
==== Locuciones ====
{{trad-arriba|locuciones}}
* {{l|ca|haver de}}
* {{l|ca|haver-hi}}
{{trad-abajo}}
==== Conjugación ====
{{ca.v|nota=Esta conjugación es para el uso como auxiliar, para el uso transitivo véase [[heure]] o [[haure]].}}
==== Información adicional ====
{{derivad|leng=ca|havedor}}.
== {{lengua|lad}} ==
{{pron-graf|leng=lad|g1=חאב׳יר}}
=== Etimología 1 ===
{{etimología|leng=lad|he|חבר}}.
==== {{sustantivo masculino|lad}} ====
;1: {{plm|amigo}}, {{l|lad|camarada}} o {{l|lad|compadre}}.
== {{lengua|pt}} ==
{{pron-graf|leng=pt}}
=== Etimología 1 ===
{{etimología|leng=pt|roa-opt|aver|haber}}, y este {{etim|leng=pt|la|habeo|tener|alt=habēre}}, {{etim|leng=pt|itc-pro|*χab/f-ē-}}, {{etim|leng=pt|ine-pro|*gʰh₁b(ʰ)-}} o bien {{l+|ine-pro|*ghabh-}}.
==== {{verbo auxiliar|pt}} ====
;1: {{plm|haber}}.<ref name=au>{{Aulete}}</ref>
{{uso|leng=pt|formal}}.
{{sinónimo|leng=pt|ter|nota1=coloquial}}.
==== {{verbo impersonal|pt}} ====
;2: {{plm|existir}} o {{l|es|haber}}.<ref name=au />
{{sinónimo|leng=pt|existir|ter}}.
{{antónimo|leng=pt|inexistir}}.
==== {{verbo intransitivo|pt}} ====
;3: {{plm|acontecer}}, {{l|es|haber}}, {{l|es|ocurrir}} o {{l|es|suceder}}.<ref name=au />
{{sinónimo|leng=pt|acontecer|ocorrer|produzir-se|realizar-se|sobrevir|suceder}}.
==== {{verbo transitivo|pt}} ====
;4: {{plm|poseer}} o {{l|pt|tener}}.<ref name=au />
{{uso|leng=pt|anticuado}}.
{{sinónimo|leng=pt|deter|estar com|possuir|ter}}.
;5: {{plm|recuperar}}.<ref name=au />
{{sinónimo|leng=pt|reaver|recuperar}}.
==== {{sustantivo masculino|pt}} ====
{{pt.sust}}
;6: {{plm|deuda}} (pendiente).<ref name=au />
{{sinónimo|leng=pt|débito|dívida}}.
==== Locuciones ====
{{trad-arriba|locuciones}}
* {{l|pt|bem haja}}
* {{l|pt|haja o que houver}}
* {{l|pt|haja vista}}
* {{l|pt|haver às mãos}}
* {{l|pt|haver como}}
* {{l|pt|haver de}}
* {{l|pt|haver mister}}
* {{l|pt|haver muito}}
* {{l|pt|haver por bem}}
* {{l|pt|mal haja}}
* {{l|pt|não há de quê}}
{{trad-abajo}}
==== Conjugación ====
{{pt.v}}
==== Información adicional ====
{{derivad|leng=pt|reaver}}
== Referencias y notas ==
<references />
0teh9rn9oiitgvxo0dzqzp6vovydv4s
malagradecido
0
908535
6123956
5750488
2026-07-25T20:35:30Z
Tmagc
158167
6123956
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-agradecido}}
=== Etimología ===
{{etimología|compuesto|mal|agradecido}}.
=== {{adjetivo|es}} ===
{{es.adj}}
;1: Que olvida los favores y bienes que se le hacen o paga con malas acciones a cambio.
{{sinónimo|desagradecido|ingrato|mezquino|nota3=por extensión|ruin|nota4=por extensión|traidor}}
=== Traducciones ===
{{trad-arriba}}
<!-- formato: {{t+|idioma|<acepción#>|palabra}} p. ej. {{t+|fr|1|facile}} -->
<!--{{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 />
6e0j1ipqgfh98xyrhrnpqib4gxpo4u0
malhechor
0
911507
6123783
5948256
2026-07-25T20:23:04Z
TMCbot
164594
.
6123783
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-hechor}}
=== Etimología ===
{{etimología|osp|malfechor}},<ref name="dlc">{{DLC1914|642}}</ref> a su vez del latín ''[[malefactor]]'' (acusativo ''malefactōrem''), derivado del verbo ''[[malefacio]]'', compuesto de ''[[male#Latín|male]]'' ("mal") y ''[[facio]]'' ("hacer").
=== {{adjetivo|es}} ===
{{es.adj}}
;1: Que [[comete]] un [[delito]], y [[especialmente]] que los comete por [[hábito]].<ref name="dlc" />
{{uso|utcs}}.<ref name="dlc" />
=== Véase también ===
* [[bienhechor]]
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
0tiqa0zaofc3bn41esijdjcgmj5ktdq
malhechores
0
911527
6123786
4534933
2026-07-25T20:23:07Z
TMCbot
164594
.
6123786
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|fone=|ayuda=mal-hechores}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|malhechor|género=masculino|número=plural}}.
== Referencias y notas ==
<references />
k9et8yeap9zmvfi9ks3os56kbt9l3et
malhechora
0
911528
6123784
4534931
2026-07-25T20:23:05Z
TMCbot
164594
.
6123784
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|fone=|ayuda=mal-hechora}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|malhechor|género=femenino|número=singular}}.
== Referencias y notas ==
<references />
sv8fyogkbxf7dd842blh1kifxd815l7
malhechoras
0
911529
6123785
4534932
2026-07-25T20:23:06Z
TMCbot
164594
.
6123785
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|fone=|ayuda=mal-hechoras}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|malhechor|género=femenino|número=plural}}.
== Referencias y notas ==
<references />
rus3xnd10xj64l1k8tkhm1lnvvhm571
hospitare
0
911708
6124146
6036087
2026-07-26T04:21:38Z
TMCbot
164594
.
6124146
wikitext
text/x-wiki
== {{lengua|it}} ==
{{pron-graf|leng=it}}
=== {{verbo transitivo|it}} ===
;1: {{grafía obsoleta|leng=it|ospitare}}.
=== Conjugación ===
{{it.v|a}}
== {{lengua|la}} ==
{{pron-graf|leng=la|ayuda=hospitāre}}
=== Forma verbal ===
;1: {{f.v|leng=la|hospitor|2s|pres|ind|act=x|pron=tu}}.
;2: {{imperativo latín|hospitor|s|pres act}}.
;3: {{infinitivo|hospito|pra|alt=hospitō}}.
;4: {{imperativo latín|hospito|s|pres pas|alt=hospitō}}.
;5: {{f.v|leng=la|hospito|2s|pres|ind|alt=hospitō|pas=x|pron=tu}}.
== Referencias y notas ==
<references />
eezm6i8me8tw076qk9fd6jlcxfuwq1j
caler
0
913342
6124006
6071361
2026-07-25T22:50:51Z
Tmagc
158167
/* {{lengua|ca}} */
6124006
wikitext
text/x-wiki
{{desambiguación|câler}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|calere|alt=calēre}}.
=== {{verbo intransitivo|es}} ===
;1: {{plm|convenir}}, [[importar]].<ref name="drae1925">{{DLE1925}}</ref>
{{uso|desusado}}
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== {{lengua|an}} ==
{{pron-graf|leng=an}}
=== Etimología ===
{{etimología|leng=an}}
=== {{verbo impersonal|an}} ===
;1: {{plm|tener que}}.
== {{lengua|ca}} ==
{{pron-graf|leng=ca|2pron1=valencia|1pron1=noroccidental}}
=== {{verbo terciopersonal|ca}} ===
;1: {{variante|leng=ca|caldre}}.
=== Conjugación ===
{{ca.v|impers=36}}
== {{lengua|roa-oca}} ==
{{pron-graf|leng=roa-oca}}
=== Etimología ===
{{etimología|leng=roa-oca}}
=== {{sustantivo masculino|roa-oca}} ===
;1: {{plm|importancia}}.<ref name="iec">{{IEC}}</ref>
== {{lengua|fr}} ==
{{pron-graf|leng=fr|1fone1=ka.le|h1=calai|h2=calé|h3=calée|h4=calées|h5=calés|h6=calez|p1=câler|p2=caller}}
=== Etimología 1 ===
{{etimología|leng=fr|frm|caler}}.
==== {{verbo transitivo|fr}} ====
;1 {{csem|leng=fr|náutica}}: {{plm|descender}} (la {{l|es|vela}}).
=== Etimología 2 ===
{{etimología|leng=fr|sufijo|cale|er}}.
==== {{verbo transitivo|fr}} ====
;1: {{plm|acuñar}} (una puerta).
;2: {{plm|obstruir}} maquinaria o similar; {{l|es|atrasar}} un {{l|es|motor}}.
;3: {{plm|llenar}} alguien.
;4: {{plm|sincronizar}}.
==== {{verbo intransitivo|fr}} ====
;5: {{plm|atrasarse}}. (Dicho de conductores y motores.)
;6: {{plm|tener}} {{l|es|alimento}}s {{l|es|suficiente}}s (en el cuerpo).
==== Locuciones ====
* {{l+|fr|caler la voile}}
==== Conjugación ====
{{fr.v}}
==== Información adicional ====
{{derivad|décaler|recaler}}
== {{lengua|frm}} ==
{{pron-graf|leng=frm|g1=caller}}
=== Etimología ===
{{etimología|leng=frm}}
=== {{verbo transitivo|frm}} ===
;1 {{csem|leng=frm|náutica}}: {{plm|descender}} (la {{l|es|vela}}).
;2 {{csem|leng=frm|cinegética}}: {{plm|tender}} un {{l|es|filete}}.
;3: {{plm|moderar}}, {{l|es|temperar}} (un {{l|es|objetivo}}).
{{uso|leng=frm|figurado}}.
;4: {{plm|dejar}} {{l|es|caer}} (un objetivo).
=== {{verbo intransitivo|frm}} ===
;5 {{csem|leng=frm|náutica}}: {{plm|anclar}}.
;6: {{plm|caer}}. (Dicho de vientos).
;7: {{plm|calmarse}}. (Dicho de personas.)
=== Conjugación ===
{{frm.v.conj.er|cal}}
== {{lengua|ia}} ==
{{pron-graf|leng=ia}}
=== Etimología ===
{{etimología|leng=ia}}
=== {{verbo intransitivo|ia}} ===
;1: {{plm|fulgurar}}.
== {{lengua|la}} ==
{{pron-graf|leng=la}}
=== Forma verbal ===
;1: {{f.v|leng=la|calo|1s|pres|sub|alt=calō|nopron=x|pas=x}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc|1fone1=kaˈle|v1=chaler}}
=== Etimología ===
{{etimología|leng=oc|pro|caler}}, y este del latín {{l+|la|caleo|calēre}}. Cognado del catalán {{l+|ca|caldre}}, {{l+|ca|caler}}, el francés {{l+|fr|chaloir}}, el francoprovenzal {{l+|frp|chalêr}}
=== {{verbo impersonal|oc}} ===
;1: {{plm|tener que}}.
{{sinónimo|leng=oc|faler}}.
;2: {{plm|importar}}.
== {{lengua|pcd}} ==
{{pron-graf|leng=pcd|1fone1=kale}}
=== Etimología ===
{{etimología|leng=pcd}}
=== {{verbo intransitivo|pcd}} ===
;1 {{csem|leng=pcd|zoología}}: {{plm|meterse}} {{l|es|bajo}}. (Dicho de cuadrúpedos.)
=== Información adicional ===
{{derivad|calage|cabrioter}}
== {{lengua|pro}} ==
{{pron-graf|leng=pro}}
=== Etimología ===
{{etimología|leng=pro|la|caleo|alt=calēre}}.
=== {{verbo intransitivo|pro}} ===
;1: {{plm|caer}}.
=== Información adicional ===
{{derivad|se caler}}
== Referencias y notas ==
<references />
g6kef8qilxh9ke25nuj9od4z3ywmqpl
6124007
6124006
2026-07-25T22:51:13Z
Tmagc
158167
/* {{verbo terciopersonal|ca}} */
6124007
wikitext
text/x-wiki
{{desambiguación|câler}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|calere|alt=calēre}}.
=== {{verbo intransitivo|es}} ===
;1: {{plm|convenir}}, [[importar]].<ref name="drae1925">{{DLE1925}}</ref>
{{uso|desusado}}
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== {{lengua|an}} ==
{{pron-graf|leng=an}}
=== Etimología ===
{{etimología|leng=an}}
=== {{verbo impersonal|an}} ===
;1: {{plm|tener que}}.
== {{lengua|ca}} ==
{{pron-graf|leng=ca|2pron1=valencia|1pron1=noroccidental}}
=== {{verbo|ca|terciopersonal}} ===
;1: {{variante|leng=ca|caldre}}.
=== Conjugación ===
{{ca.v|impers=36}}
== {{lengua|roa-oca}} ==
{{pron-graf|leng=roa-oca}}
=== Etimología ===
{{etimología|leng=roa-oca}}
=== {{sustantivo masculino|roa-oca}} ===
;1: {{plm|importancia}}.<ref name="iec">{{IEC}}</ref>
== {{lengua|fr}} ==
{{pron-graf|leng=fr|1fone1=ka.le|h1=calai|h2=calé|h3=calée|h4=calées|h5=calés|h6=calez|p1=câler|p2=caller}}
=== Etimología 1 ===
{{etimología|leng=fr|frm|caler}}.
==== {{verbo transitivo|fr}} ====
;1 {{csem|leng=fr|náutica}}: {{plm|descender}} (la {{l|es|vela}}).
=== Etimología 2 ===
{{etimología|leng=fr|sufijo|cale|er}}.
==== {{verbo transitivo|fr}} ====
;1: {{plm|acuñar}} (una puerta).
;2: {{plm|obstruir}} maquinaria o similar; {{l|es|atrasar}} un {{l|es|motor}}.
;3: {{plm|llenar}} alguien.
;4: {{plm|sincronizar}}.
==== {{verbo intransitivo|fr}} ====
;5: {{plm|atrasarse}}. (Dicho de conductores y motores.)
;6: {{plm|tener}} {{l|es|alimento}}s {{l|es|suficiente}}s (en el cuerpo).
==== Locuciones ====
* {{l+|fr|caler la voile}}
==== Conjugación ====
{{fr.v}}
==== Información adicional ====
{{derivad|décaler|recaler}}
== {{lengua|frm}} ==
{{pron-graf|leng=frm|g1=caller}}
=== Etimología ===
{{etimología|leng=frm}}
=== {{verbo transitivo|frm}} ===
;1 {{csem|leng=frm|náutica}}: {{plm|descender}} (la {{l|es|vela}}).
;2 {{csem|leng=frm|cinegética}}: {{plm|tender}} un {{l|es|filete}}.
;3: {{plm|moderar}}, {{l|es|temperar}} (un {{l|es|objetivo}}).
{{uso|leng=frm|figurado}}.
;4: {{plm|dejar}} {{l|es|caer}} (un objetivo).
=== {{verbo intransitivo|frm}} ===
;5 {{csem|leng=frm|náutica}}: {{plm|anclar}}.
;6: {{plm|caer}}. (Dicho de vientos).
;7: {{plm|calmarse}}. (Dicho de personas.)
=== Conjugación ===
{{frm.v.conj.er|cal}}
== {{lengua|ia}} ==
{{pron-graf|leng=ia}}
=== Etimología ===
{{etimología|leng=ia}}
=== {{verbo intransitivo|ia}} ===
;1: {{plm|fulgurar}}.
== {{lengua|la}} ==
{{pron-graf|leng=la}}
=== Forma verbal ===
;1: {{f.v|leng=la|calo|1s|pres|sub|alt=calō|nopron=x|pas=x}}.
== {{lengua|oc}} ==
{{pron-graf|leng=oc|1fone1=kaˈle|v1=chaler}}
=== Etimología ===
{{etimología|leng=oc|pro|caler}}, y este del latín {{l+|la|caleo|calēre}}. Cognado del catalán {{l+|ca|caldre}}, {{l+|ca|caler}}, el francés {{l+|fr|chaloir}}, el francoprovenzal {{l+|frp|chalêr}}
=== {{verbo impersonal|oc}} ===
;1: {{plm|tener que}}.
{{sinónimo|leng=oc|faler}}.
;2: {{plm|importar}}.
== {{lengua|pcd}} ==
{{pron-graf|leng=pcd|1fone1=kale}}
=== Etimología ===
{{etimología|leng=pcd}}
=== {{verbo intransitivo|pcd}} ===
;1 {{csem|leng=pcd|zoología}}: {{plm|meterse}} {{l|es|bajo}}. (Dicho de cuadrúpedos.)
=== Información adicional ===
{{derivad|calage|cabrioter}}
== {{lengua|pro}} ==
{{pron-graf|leng=pro}}
=== Etimología ===
{{etimología|leng=pro|la|caleo|alt=calēre}}.
=== {{verbo intransitivo|pro}} ===
;1: {{plm|caer}}.
=== Información adicional ===
{{derivad|se caler}}
== Referencias y notas ==
<references />
6eimugnxpdeqz8qxxglkk4gnctd30l2
malagradecida
0
928587
6123734
5279561
2026-07-25T20:22:13Z
TMCbot
164594
.
6123734
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-agradecida}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|malagradecido|género=femenino|número=singular}}.
== Referencias y notas ==
<references />
jgta99vgyk5qm2mcm1rfk9ujsnr2z45
malagradecidas
0
928588
6123735
5279562
2026-07-25T20:22:14Z
TMCbot
164594
.
6123735
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-agradecidas}}
=== Forma adjetiva ===
;1: {{forma adjetivo|leng=es|malagradecido|género=femenino|número=plural}}.
== Referencias y notas ==
<references />
kfu2q13jvr1xv33m4ijb9d2ibug7x8m
-os
0
940061
6124080
5974763
2026-07-26T04:19:59Z
TMCbot
164594
.
6124080
wikitext
text/x-wiki
{{desambiguación|os|ós}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma de sufijo flexivo ===
;1: {{forma|leng=es|tipo=sufijo|-o|Plural de|num=1}}.
== {{lengua|eo}} ==
{{pron-graf|leng=eo|fone=os}}
=== {{sufijo|eo}} ===
;1: Conjuga los verbos a [[futuro]].
{{ejemplo|Mi amos|trad=Amaré.}}
== Referencias y notas ==
<references />
1sc1aevbt3lk9i93735kfll10r1qg2j
coinquinar
0
957644
6123673
6090083
2026-07-25T18:55:52Z
TMCbot
164594
.
6123673
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|coinquino|alt=coinquinō, coinquināre}} ("[[ensuciar]], [[manchar]], [[contaminar]]").<ref name="dle">{{DRAE2001}}</ref>
=== {{verbo transitivo|es}} ===
;1: {{plm|deslustrar}}, [[infectar]], [[contaminar]] algo, o [[manchar]] el [[buen]] [[nombre]] de alguien.<ref name="dle" />
{{uso|desusado}}, se empleaba también como [[verbo pronominal|pronominal]] con el sentido de [[perder]] la buena [[reputación]] o [[fama]].
{{relacionado|cohonder|manchar|ensuciar|inficionar}}.
=== Conjugación ===
{{es.v}}
=== Información adicional ===
{{cognados|coinquinar|inquina|inquinar|inquinamento|perinquina|perinquinoso}}.
=== Traducciones ===
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
qso5j6c4em4ftpxcsnercmgyxbytzfh
coinquináis
0
958321
6123708
6082923
2026-07-25T18:56:40Z
TMCbot
164594
.
6123708
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=presente|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
o51v7roksquwafxenzvft7dht9gjiwu
coinquinamos
0
958322
6123670
6082891
2026-07-25T18:55:48Z
TMCbot
164594
.
6123670
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=nosotros|t=presente|m=indicativo|pronominal=}}.
;2: {{forma verbo|coinquinar|p=nosotros|t=pret ind|m=indicativo|pronominal=}}.
== Referencias y notas ==
<references />
724wbec3kw3glwq46rjh7uw62s4f2p6
coinquino
0
958323
6123705
6082920
2026-07-25T18:56:36Z
TMCbot
164594
.
6123705
wikitext
text/x-wiki
{{desambiguación|coinquinó||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=presente|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
3f38zrjiudutrgfo38e0qq5wqkp2189
coinquinabas
0
958324
6123664
6082885
2026-07-25T18:55:40Z
TMCbot
164594
.
6123664
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2stv|t=pret imp|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
l85cn1l6f2ca872l7q9c53x5lmmgx58
coinquinás
0
958325
6123711
6082926
2026-07-25T18:56:44Z
TMCbot
164594
.
6123711
wikitext
text/x-wiki
{{desambiguación|coinquinas||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2sv|t=presente|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
rd6y9ey4gf2cg7mseshu9iwl1tjlej8
coinquina
0
958326
6123660
6090082
2026-07-25T18:55:34Z
TMCbot
164594
.
6123660
wikitext
text/x-wiki
{{desambiguación|coinquiná|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3s|t=presente|m=indicativo|pronominal=}}.
;2: {{forma verbo|coinquinar|2s|imperativo|afirmativo=s}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
a6flz4vcx4er49vbistb7t687wjt90z
coinquinan
0
958327
6123671
6082892
2026-07-25T18:55:49Z
TMCbot
164594
.
6123671
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3p|t=presente|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
fsk02udj3dtj92virm4xgpyq0029i43
coinquinas
0
958328
6123694
6082912
2026-07-25T18:56:21Z
TMCbot
164594
.
6123694
wikitext
text/x-wiki
{{desambiguación|coinquinás||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2s|t=presente|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
1n8d8my1485ya42o5axqwujrqsyel8p
coinquinaba
0
958329
6123661
6082882
2026-07-25T18:55:35Z
TMCbot
164594
.
6123661
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=pret imp|m=indicativo|pronominal=}}.
;2: {{forma verbo|coinquinar|p=3s|t=pret imp|m=indicativo|pronominal=}}.
== Referencias y notas ==
<references />
70ujcms12g4s5sx7oc9y9nu6oaftjre
coinquinábamos
0
958330
6123707
6082922
2026-07-25T18:56:39Z
TMCbot
164594
.
6123707
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1p|t=pret imp|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
r2t7my1qacx86unq99wykww42dsl9mq
coinquinabais
0
958331
6123662
6082883
2026-07-25T18:55:37Z
TMCbot
164594
.
6123662
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=pret imp|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
smnnyosu35ift7ws2gvpcxpgk2j7g8f
coinquinaban
0
958332
6123663
6082884
2026-07-25T18:55:38Z
TMCbot
164594
.
6123663
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3p|t=pret imp|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
pfg1zugakkoo1xw8pd8rwwm40fx700n
coinquiné
0
958333
6123713
6082928
2026-07-25T18:56:47Z
TMCbot
164594
.
6123713
wikitext
text/x-wiki
{{desambiguación|coinquine||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=pret ind|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
i46299bj7h8m436u9shg1h1iu1syw3o
coinquinaste
0
958334
6123699
6082916
2026-07-25T18:56:27Z
TMCbot
164594
.
6123699
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2stv|t=pret ind|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
km2vjzlhavzhqen577ajgt8d702a8bc
coinquinó
0
958335
6123716
6082929
2026-07-25T18:56:52Z
TMCbot
164594
.
6123716
wikitext
text/x-wiki
{{desambiguación|coinquino||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3s|t=pret ind|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
bkpky82tvafr8wxpjpuzjvkcrvook5f
coinquinaron
0
958336
6123683
6082901
2026-07-25T18:56:06Z
TMCbot
164594
.
6123683
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3p|t=pret ind|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
l46wdibh01ybfp9c0t8yf205txmkobx
coinquinasteis
0
958337
6123700
6082917
2026-07-25T18:56:29Z
TMCbot
164594
.
6123700
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=pret ind|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
o8wwg3ggpi7gvtswh0brpmwh1tzvy8o
coinquinarás
0
958338
6123686
6082904
2026-07-25T18:56:10Z
TMCbot
164594
.
6123686
wikitext
text/x-wiki
{{desambiguación|coinquinaras||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2stv|t=futuro|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
jwcigy6j9php0miuwcbr1gvhiikn06v
coinquinaré
0
958339
6123687
6082905
2026-07-25T18:56:11Z
TMCbot
164594
.
6123687
wikitext
text/x-wiki
{{desambiguación|coinquinare||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=futuro|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
jnaz5yrcva6qs23d8wwprnfz27x0gzs
coinquinaremos
0
958340
6123680
6082899
2026-07-25T18:56:01Z
TMCbot
164594
.
6123680
wikitext
text/x-wiki
{{desambiguación|coinquináremos||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1p|t=futuro|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
97vbvx9fns5puydcwe3ts90na0bw1pk
coinquinará
0
958341
6123684
6082902
2026-07-25T18:56:07Z
TMCbot
164594
.
6123684
wikitext
text/x-wiki
{{desambiguación|coinquinara||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3s|t=futuro|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
hzl0hysdsbpq3phs5z104llty97y4on
coinquinaréis
0
958342
6123688
6082906
2026-07-25T18:56:12Z
TMCbot
164594
.
6123688
wikitext
text/x-wiki
{{desambiguación|coinquinareis||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=futuro|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
0xc3l83rig8g42j3gxdoaxfv9epf9fo
coinquinaría
0
958343
6123689
6082907
2026-07-25T18:56:14Z
TMCbot
164594
.
6123689
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=condicional|pronominal=}}.
;2: {{forma verbo|coinquinar|p=3s|t=condicional|pronominal=}}.
== Referencias y notas ==
<references />
mj8q57be8iq1nv2jd70sdd4ul0923bn
coinquinarán
0
958344
6123685
6082903
2026-07-25T18:56:08Z
TMCbot
164594
.
6123685
wikitext
text/x-wiki
{{desambiguación|coinquinaran||}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3p|t=futuro|m=indicativo|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
mfdmb44tszb9fmnquou7l73uuoct10c
coinquinarías
0
958345
6123693
6082911
2026-07-25T18:56:19Z
TMCbot
164594
.
6123693
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2stv|t=condicional|m=|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
1ddvz08yok0ynkh8o8wwa0i6yt8hb78
coinquinarían
0
958346
6123692
6082910
2026-07-25T18:56:18Z
TMCbot
164594
.
6123692
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3p|t=condicional|m=|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
811bnct265a4vmv0902hf9b0o81u36p
coinquinaríamos
0
958347
6123691
6082909
2026-07-25T18:56:17Z
TMCbot
164594
.
6123691
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1p|t=condicional|m=|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
38jhf50z81oinwpe2gsi8qrhnvvi40u
coinquinaríais
0
958348
6123690
6082908
2026-07-25T18:56:15Z
TMCbot
164594
.
6123690
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=condicional|m=|pronominal=|nopron=|leng=es}}.
== Referencias y notas ==
<references />
h6bdyd1pfumf99evtnv5h0v3o0cdfp2
coinquines
0
958349
6123704
6082919
2026-07-25T18:56:35Z
TMCbot
164594
.
6123704
wikitext
text/x-wiki
{{desambiguación|coinquinés|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2s|t=presente|m=subjuntivo|pronominal=}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''coinquines''».
== Referencias y notas ==
<references />
2wj30vg54hkw2z8mfvblgah1dl7098o
coinquine
0
958350
6123701
6090087
2026-07-25T18:56:30Z
TMCbot
164594
.
6123701
wikitext
text/x-wiki
{{desambiguación|coinquiné|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|1s|t=presente|m=subjuntivo|pronominal=}}.
;2: {{forma verbo|coinquinar|3s|presente|subjuntivo|pronominal=}}.
;3: {{forma verbo|coinquinar|p=usted|m=imperativo|pronominal=}}.
== Referencias y notas ==
<references />
3rgm9l73r2f8nhqml86fn1sycsfw0m9
coinquinés
0
958351
6123715
6090090
2026-07-25T18:56:50Z
TMCbot
164594
.
6123715
wikitext
text/x-wiki
{{desambiguación|coinquines|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=vos|t=presente|m=subjuntivo|pronominal=}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''coinquinés''».
== Referencias y notas ==
<references />
i485tgyea8bofkjaw046xho6nnkw7lz
coinquinéis
0
958352
6123714
6090089
2026-07-25T18:56:48Z
TMCbot
164594
.
6123714
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=presente|m=subjuntivo|pronominal=}}.
{{uso}} se emplea también para el [[imperativo]] negativo: «no ''coinquinéis''».
== Referencias y notas ==
<references />
9gup6f02yx99ykfx0ejt4nh8c38vuqc
coinquinemos
0
958353
6123702
6082918
2026-07-25T18:56:32Z
TMCbot
164594
.
6123702
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|1p|t=presente|m=subjuntivo|pronominal=}}.
;2: {{forma verbo|coinquinar|p=nosotros|t=exhortatorio|pronominal=}}.
== Referencias y notas ==
<references />
c2l4qf0ojpp6i6x63qlrnzq0fqewb52
coinquinen
0
958354
6123703
6090088
2026-07-25T18:56:33Z
TMCbot
164594
.
6123703
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|3p|t=presente|m=subjuntivo|pronominal=}}.
;2: {{forma verbo|coinquinar|p=ustedes|t=imperativo|pronominal=}}.
== Referencias y notas ==
<references />
dl77l6a3qc3au85to388u95g0h2hlpm
coinquinara
0
958355
6123674
6090084
2026-07-25T18:55:53Z
TMCbot
164594
.
6123674
wikitext
text/x-wiki
{{desambiguación|coinquinará|}}
== {{lengua|es}} ==
{{pron-graf|v=coinquinase|p=coinquinare|pnota=[[futuro]] del [[subjuntivo]], desusado}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=imperfecto|m=subjuntivo|pronominal=}}.
;2: {{forma verbo|coinquinar|p=3s|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
s12h66m3ls30we10gef5h6j677qv13l
coinquinaras
0
958356
6123677
6082896
2026-07-25T18:55:57Z
TMCbot
164594
.
6123677
wikitext
text/x-wiki
{{desambiguación|coinquinarás}}
== {{lengua|es}} ==
{{pron-graf|v1=coinquinases|p1=coinquinares}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=2stv|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
ivblrf1cmu5wgtou8vz5g1ajo0dd4dt
coinquinarais
0
958357
6123675
6082894
2026-07-25T18:55:54Z
TMCbot
164594
.
6123675
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v1=coinquinaseis|p1=coinquinareis}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=2p|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
keu6s4d4i92r72c21tjgiv5dwl3oozu
coinquináramos
0
958358
6123709
6082924
2026-07-25T18:56:42Z
TMCbot
164594
.
6123709
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v1=coinquinásemos|p1=coinquináremos}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=1p|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
qsuh4bwt84x4mk4narahxekap4zrrav
coinquinaran
0
958359
6123676
6082895
2026-07-25T18:55:56Z
TMCbot
164594
.
6123676
wikitext
text/x-wiki
{{desambiguación|coinquinarán}}
== {{lengua|es}} ==
{{pron-graf|v1=coinquinasen|p1=coinquinaren}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=3p|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
btf20jzjp27d1t6lkypwf8jvgaqv2j6
coinquinase
0
958360
6123695
6090086
2026-07-25T18:56:22Z
TMCbot
164594
.
6123695
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v=coinquinara|p=coinquinare|pnota=[[futuro]] del [[subjuntivo]], desusado}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=imperfecto|m=subjuntivo|pronominal=}}.
;2: {{forma verbo|coinquinar|p=3s|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
ldzrrxyek4cyonf24or1vjp3figgznm
coinquinases
0
958361
6123698
6082915
2026-07-25T18:56:26Z
TMCbot
164594
.
6123698
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v1=coinquinaras|p1=coinquinares}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=2stv|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
hlblt5b39vq5qvo9vs8zoqskus990ep
coinquinásemos
0
958362
6123712
6082927
2026-07-25T18:56:46Z
TMCbot
164594
.
6123712
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v1=coinquináramos|p1=coinquináremos}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=1p|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
2m1t7vkjqaziqzgr8xs8hvj08ehe9hl
coinquinasen
0
958363
6123697
6082914
2026-07-25T18:56:25Z
TMCbot
164594
.
6123697
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v1=coinquinaran|p1=coinquinaren}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=3p|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
9lzaz8i0udpjy8cs6kjl17milqmlvhq
coinquinaseis
0
958364
6123696
6082913
2026-07-25T18:56:24Z
TMCbot
164594
.
6123696
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|v1=coinquinarais|p1=coinquinareis}}
=== Forma flexiva ===
==== Forma verbal ====
;1: {{forma verbo|coinquinar|p=2p|t=imperfecto|m=subjuntivo|pronominal=}}.
== Referencias y notas ==
<references />
k3inj9bso80e6hro39qe58fh8p63hwv
coinquinare
0
958365
6123678
6082897
2026-07-25T18:55:59Z
TMCbot
164594
.
6123678
wikitext
text/x-wiki
{{desambiguación|coinquinara|coinquinaré}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1s|t=futuro|m=subjuntivo|pronominal=}}.
{{uso|anticuado}}
;2: {{forma verbo|coinquinar|p=3s|t=futuro|m=subjuntivo|pronominal=}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
omaadjclorbh1ojh741fm2ys7qt15ee
coinquinares
0
958366
6123682
6082900
2026-07-25T18:56:04Z
TMCbot
164594
.
6123682
wikitext
text/x-wiki
{{desambiguación|coinquinaras|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2stv|t=futuro|m=subjuntivo|pronominal=}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
3jqfcqikg3ejedfhsjpk0dtxwc6z5cf
coinquináremos
0
958367
6123710
6082925
2026-07-25T18:56:43Z
TMCbot
164594
.
6123710
wikitext
text/x-wiki
{{desambiguación|coinquináramos|coinquinaremos}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=1p|t=futuro|m=subjuntivo|pronominal=}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
bdg96jb09gl7zgfs79mq463c4kshx1r
coinquinareis
0
958368
6123679
6082898
2026-07-25T18:56:00Z
TMCbot
164594
.
6123679
wikitext
text/x-wiki
{{desambiguación|coinquinarais|coinquinaréis}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=2p|t=futuro|m=subjuntivo|pronominal=}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
4808cpct520w19korfjal1wvfg5xa00
coinquinad
0
958369
6123665
6082886
2026-07-25T18:55:41Z
TMCbot
164594
.
6123665
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=vosotros|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
== Referencias y notas ==
<references />
96qy8raruuhw5rqyn3i1al0gxx1d0b8
coinquiná
0
958370
6123706
6082921
2026-07-25T18:56:37Z
TMCbot
164594
.
6123706
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=vos|t=imperativo|afirmativo=s|enclítico=|pencl=}}.
{{uso}} para el negativo se emplea el presente del [[subjuntivo]].
{{relacionado|coinquina|nota1=tú}}.
== Referencias y notas ==
<references />
170ig8n6uoxxflmwud53141qklaod9b
coinquinando
0
958371
6123672
6082893
2026-07-25T18:55:50Z
TMCbot
164594
.
6123672
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|}}
=== Forma verbal ===
;1: {{gerundio|coinquinar|pronominal=|irregular=|se=}}.
== Referencias y notas ==
<references />
hxsswuux51hwx7vtc0a98ww1zvkzqyd
coinquinaren
0
958372
6123681
6090085
2026-07-25T18:56:03Z
TMCbot
164594
.
6123681
wikitext
text/x-wiki
{{desambiguación|coinquinaran|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma verbal ===
;1: {{forma verbo|coinquinar|p=3p|t=futuro|m=subjuntivo|pronominal=}}.
{{uso|anticuado}}
== Referencias y notas ==
<references />
ssfg0detplq9kd08lb7errmlw3c6xkg
coinquinados
0
958373
6123669
6082890
2026-07-25T18:55:47Z
TMCbot
164594
.
6123669
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|coinquinado|plural|v=coinquinar|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
cb67crl1d8brqrtfbxoad1nsq42qzzb
coinquinado
0
958374
6123668
6082889
2026-07-25T18:55:45Z
TMCbot
164594
.
6123668
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf|}}
=== Forma verbal ===
{{es.adj}}
;1: {{participio|coinquinar|irregular=|pronominal=|leng=es}}.
== Referencias y notas ==
<references />
pw4v6xpv6xjn1m4oxftk498cduak5l5
coinquinadas
0
958375
6123667
6082888
2026-07-25T18:55:44Z
TMCbot
164594
.
6123667
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|coinquinado|femenino|plural|v=coinquinar|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
csxvp9jdfq34jst21yzv513lp3olelg
coinquinada
0
958376
6123666
6082887
2026-07-25T18:55:43Z
TMCbot
164594
.
6123666
wikitext
text/x-wiki
== {{lengua|es}} ==
{{pron-graf}}
=== Forma adjetiva y de participio ===
;1: {{forma participio|coinquinado|femenino|v=coinquinar|adjetivo=|irregular=|pronominal=}}.
== Referencias y notas ==
<references />
aal17onn8pgry3c1oxikd2698gpk0e9
2.000.000
0
971985
6124083
5834472
2026-07-26T04:20:03Z
TMCbot
164594
.
6124083
wikitext
text/x-wiki
== {{lengua|mul}} ==
{{pron-graf|leng=mul|ea=2 000 000|e2=2,000,000|e3=2000000}}
=== {{símbolo|mul}} ===
;1: Símbolo del [[número]] [[dos millones]]; dos veces un [[millón]].
== Referencias y notas ==
<references />
mwdh25ps2kgcpv7q7czqio3rzi8q5d3
40 000
0
971986
6124084
5284539
2026-07-26T04:20:04Z
TMCbot
164594
.
6124084
wikitext
text/x-wiki
== {{lengua|mul}} ==
{{pron-graf|leng=mul|ea=40.000|e2=40,000|e3=40000}}
=== {{símbolo|mul}} ===
;1: Símbolo del [[número]] [[cuarenta mil]]; cuarenta veces [[mil]].
== Referencias y notas ==
<references />
jpcvbtv9d16nkbsp7bs2vfal2ydn512
10 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
0
971987
6124082
5284097
2026-07-26T04:20:01Z
TMCbot
164594
.
6124082
wikitext
text/x-wiki
== {{lengua|mul}} ==
{{pron-graf|leng=mul|ea=10.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000|e2=10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 000,000,000,000,000}}
=== {{símbolo|mul}} ===
;1: Un [[gúgol]]; 10 elevado a la 100; 10<sup>100</sup>.
== Referencias y notas ==
<references />
n4y4gkf21ipxej2nuvesood828nbyw9
Nehemijām
0
972203
6124086
4844055
2026-07-26T04:20:06Z
TMCbot
164594
.
6124086
wikitext
text/x-wiki
== {{lengua|lv}} ==
{{pron-graf|leng=lv|fone=ne.he.miˈjam}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=lv|Nehemija|dativo|plural}}.
;2: {{forma sustantivo|leng=lv|Nehemija|instrumental|plural}}.
== Referencias y notas ==
<references />
0qiazjgb8879mfljyd19oc4fycv33o4
argiak
0
997774
6124132
4982566
2026-07-26T04:21:16Z
TMCbot
164594
.
6124132
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|absolutivo definido|plural}}.
;2: {{forma sustantivo|leng=eu|argi|ergativo definido|singular}}.
== Referencias y notas ==
<references />
eprsg6mfdt0l8w3bqunwmlgwob94vej
argiek
0
997784
6124091
4982425
2026-07-26T04:20:19Z
TMCbot
164594
.
6124091
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|ergativo definido|plural}}.
== Referencias y notas ==
<references />
4v5b1okpnp4v78lmq5ziw4vxdier0i4
argiei
0
997785
6124090
4982426
2026-07-26T04:20:17Z
TMCbot
164594
.
6124090
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|dativo definido|plural}}.
== Referencias y notas ==
<references />
tgkmy4gaqmzs9ikryt9podj15qwca9p
argien
0
997786
6124140
4982427
2026-07-26T04:21:30Z
TMCbot
164594
.
6124140
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|genitivo definido|plural}}.
== Referencias y notas ==
<references />
aionxyrhsqw9erkpzkeaoigadja4xuf
argiekin
0
997787
6124139
4982428
2026-07-26T04:21:29Z
TMCbot
164594
.
6124139
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|comitativo definido|plural}}.
== Referencias y notas ==
<references />
4crk52hrgzmfl6m1hlh8xyq495lds29
argientzat
0
997788
6124142
4982430
2026-07-26T04:21:33Z
TMCbot
164594
.
6124142
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|benefactivo definido|plural}}.
== Referencias y notas ==
<references />
5umllajx7k5lgzseq83xgwy52zt46gy
argiengatik
0
997789
6124141
4982431
2026-07-26T04:21:31Z
TMCbot
164594
.
6124141
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|causativo definido|plural}}.
== Referencias y notas ==
<references />
n94wzby1xpb1qnz89mppysfv52cl3gy
argiez
0
997790
6124133
4982432
2026-07-26T04:21:18Z
TMCbot
164594
.
6124133
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|instrumental definido|plural}}.
== Referencias y notas ==
<references />
db9o244ee5spt3sef83x4e9lt23n1qu
argietan
0
997791
6124143
4982433
2026-07-26T04:21:34Z
TMCbot
164594
.
6124143
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma sustantiva ===
;1: {{forma sustantivo|leng=eu|argi|inesivo definido|plural}}.
== Referencias y notas ==
<references />
ti947enh6o9advw69ucnh4y6ea8oufl
argietako
0
997792
6124172
4982434
2026-07-26T05:15:22Z
Tmagc
158167
6124172
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma flexiva ===
==== Forma sustantiva ====
;1: {{forma sustantivo|leng=eu|argi|separativo definido|plural}}.
== Referencias y notas ==
<references />
b56xm5m6eoym11tjazngg2zj6m3n8x0
argietara
0
997793
6124171
4982435
2026-07-26T05:14:58Z
Tmagc
158167
6124171
wikitext
text/x-wiki
== {{lengua|eu}} ==
{{pron-graf|leng=eu}}
=== Forma flexiva ===
==== Forma sustantiva ====
;1: {{forma sustantivo|leng=eu|argi|adlativo definido|plural}}.
== Referencias y notas ==
<references />
ouusar1ece05np97uyhqjqbjd37ole2
cew
0
1010431
6124144
5313736
2026-07-26T04:21:35Z
TMCbot
164594
.
6124144
wikitext
text/x-wiki
== {{lengua|zza}} ==
{{pron-graf|leng=zza|fono=ɑɾ.pɑ}}
=== Etimología ===
{{etimología|leng=zza}}
=== {{sustantivo|zza}} ===
;1 {{csem|plantas|alimentos|leng=zza}}: {{plm|cebada}}.
== Referencias y notas ==
<references />
bzalfaoyu0oxhilamieg6qtrm6jbhzq
Usuario discusión:Tmagc
3
1016821
6124033
6123199
2026-07-26T00:44:09Z
26agcp
138617
Sección nueva: /* Conjugación en catalán */
6124033
wikitext
text/x-wiki
{{{{ns:3}}:{{ROOTPAGENAME}}/Archivo plantilla}}
== Conjugación en inglés ==
Hola. Encontré unos errores en el módulo de conjugación de verbos en inglés (ej.: [[swim]]): el futuro y condicional simple se muestran con la forma de participio ("will swum", etc.) en lugar de la de infinitivo. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 02:14 8 ene 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Corregido, gracias. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 02:58 8 ene 2026 (UTC)
::@[[Usuario:Tmagc|Tmagc]] Excelente. Solo que para el verbo [[can]] habría que desactivar esos dos tiempos. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 03:19 8 ene 2026 (UTC)
:::@[[Usuario:26agcp|26agcp]] Hecho. Si ves más verbos defectivos así, avisame. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:29 8 ene 2026 (UTC)
::::@[[Usuario:Tmagc|Tmagc]] Hace falta un parámetro para desactivar el imperativo en verbos como can, shall, must.
::::En otro tema, las formas arcaicas del presente y pretérito de indicativo (terminadas en -est, -st) se usan solo con el pronombre thou. Pero por la forma en que se muestran en la tabla pareciera que se usan con you. No sé si sería mejor moverlas a una nueva columna o agregar una nota para aclarar su uso. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 00:56 12 ene 2026 (UTC)
:::::@[[Usuario:26agcp|26agcp]] Listo. Ahora con <nowiki>|fut=no, |cond=no, |imper=no</nowiki> se pueden desactivar esos tiempos. En cuanto a las formas arcaicas terminadas en -est, -st, lo mejor sería moverlas a las tablas del inglés medio o inglés antiguo, el día en que se hagan. Mientras tanto, pondría en el encabezado algo como "you (thou)" para salir del paso. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 21:40 13 ene 2026 (UTC)
== Usuaria:19Tarrestnom65 ==
Buenas tardes, Tmagc, muchas gracias por el mensaje. Me preocupaba haberme creado enemigos, cosa que es muy mala cuando intentas editar. Agradezco muchísimo la idea de la base de datos. Yo los vocablos los saco de un libro en el que están puestos en un glosario, con la definición, pero no es un diccionario y por ejemplo no indica mucho más a parte de decir en algunos el posible origen. Trabajamos últimamente sobre zonas donde usan castellano churro que tiene ciertos términos curiosos. De todos modos, aunque no dejo en saco roto tu propuesta, que me gusta, hoy mismo hemos empezado la preparación de un proyecto que tenemos que tener terminado para principios de marzo y durante al menos lo que queda de mes nos centraremos en esto. En febrero miro de elaborar una hoja de cálculo con las palabras, definiciones y demás información que tenga, ¿podría servirte eso? Seguimos en contacto. Muchísimas gracias por la sugerencia y por vuestra dedicación al proyecto. Un saludo.[[Usuario:19Tarrestnom65|19Tarrestnom65]] ([[Usuario discusión:19Tarrestnom65|discusión]]) 18:29 9 ene 2026 (UTC)
:@[[Usuario:19Tarrestnom65|19Tarrestnom65]] En principio sí. El proceso de leer y analizar el libro y extraer las palabras es obviamente una tarea demasiado larga pero si te resulta más fácil organizar las palabras de otro modo yo puedo convertirla al formato de este sitio. Deberías contar con, además de las palabras y las definiciones, las marcas gramaticales de clase, género, etc., las marcas de uso o ámbito y opcionalmente la etimología. Cuando tengas un par de decenas avisame así puedo hacer una prueba primero. Y no busco enemigos, lo único que no quiero es que cada usuario nuevo que venga al sitio se convierta en un problema más del que nos tengamos que preocupar. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 19:55 9 ene 2026 (UTC)
== Tiempos compuestos en italiano/francés ==
Hola de nuevo. Encontré un error en los módulos para estos idiomas.
En italiano, cuando se forman los tiempos compuestos con el auxiliar essere, el participio debe concordar en género y número con el sujeto. Por ejemplo, ''eravamo arrivat'''i'''''. Mientras que cuando se usa avere, el participio es invariante: ''avevamo arrivato''.
En francés ocurre lo mismo (debe haber concordancia cuando se usa être): ''nous sommes arrivé'''s'''''. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 12:12 18 ene 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Hecho, creo. Asumo que todos los participios en plural se forman reemplazando la o por la i en el italiano, y concatenando una s final en francés. En cuanto al género, muestro solamente el masculino por una cuestión de economía. Gracias por avisar. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:37 18 ene 2026 (UTC)
== Plural en locuciones ==
Hola @[[Usuario:Tmagc|Tmagc]]. Noté que en entradas de locuciones, como [[plot twist]] o [[árbol de Navidad]], en el plural nuevo que añadiste genera los enlaces [[plot]] [[twists]] por separado, en vez de [[plot twists]], que sería lo correcto. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:05 13 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] Eliminamos hace tiempo los plurales de locuciones, más que nada para desincentivar el farmeo excesivo e incentivar a que los usuarios se centren en agregar el contenido propiamente dicho, antes que generar automáticamente entradas de formas flexivas en masa sin siquiera revisar nada. Por lo que esa entrada debería ser eliminada. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:13 13 feb 2026 (UTC)
::¿En todos los casos? Porque en algunos idiomas hay palabras que son técnicamente locuciones porque tienen espacio entre ambos términos, pero que dichos términos por separado no tienen significado alguno (como si Sri Lanka tuviera plural me entiendes). [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:16 13 feb 2026 (UTC)
:::@[[Usuario:PFSV-UY|PFSV-UY]] No eliminamos las locuciones, eliminamos las formas flexivas de locuciones como entradas independientes. [[Sri Lanka]] es una entrada válida que no tiene plural, y por lo tanto la plantilla no generará forma flexiva alguna al invocarse <del><nowiki>{{es.sust|s}}</nowiki></del> (perdón, en español no mostramos la plantilla de flexión para los nombres propios). [[árbol de Navidad]] vale, pero no [[árboles de Navidad]]. Estoy revisando tus contribuciones y veo que agregaste unas cuantas formas flexivas de locuciones en klingon. Cuando implemente la nueva plantilla, recopilaré dichas entradas y le pediré a @[[Usuario:Peter Bowman|Peter Bowman]] que las elimine, tal como ocurrió con los demás idiomas. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:19 13 feb 2026 (UTC)
::::Pero no entiendes lo que me refiero: hay locuciones que tienen plural en su idioma (imagínate [[palabra1 palabra2-plural]], que no tendría sentido [[palabra1]] [[palabra2-plural]] ya que [[palabra2-plural]] no existe como palabra con dicho plural (o a veces en la locución cambia de tipo de plural, ej. si la locución forma una palabra sobre profesión (plural pu') y la palabra que recibe el plural por separado tiene el plural mey. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:25 13 feb 2026 (UTC)
:::::Considero que la decisión es muy centrada en el español o idiomas indoeuropeos y no considera locuciones como unidad léxica única inseparable, en lugar de locuciones nominales típicas de los idiomas occidentales. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:27 13 feb 2026 (UTC)
:::::@[[Usuario:PFSV-UY|PFSV-UY]] Si ese es el caso del klingon, optaría por tratar a todas las entradas como sustantivos y no como locuciones para no confundir a los (futuros) bots de mantenimiento que implemente. Y así, puedo configurar la plantilla {{ep|tlh.sust}} para que no fragmente los plurales de las locuciones. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:28 13 feb 2026 (UTC)
:::::@[[Usuario:PFSV-UY|PFSV-UY]] En efecto, somos indoeurocéntricos o romanocéntricos porque fuera de las lenguas romances no tenemos ecosistemas vivos, por lo tanto no puedo esquematizar lo que no conozco. Pero podemos ser flexibles en ese punto, no veo por qué no. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:30 13 feb 2026 (UTC)
::::::Creo que tratarlas como sustantivos (aunque técnicamente son locuciones sustantivas) sería un buen punto medio, así no se generan plurales sin sentido que podrían ser engañosos (como el ejemplo que te di). Agradezco la comprensión. Me preguntaba si tu solución es que se mantengan las entradas del plural como si fueran sustantivos normales, o si tu solución es simplemente para que aparezcan en la entrada principal, sin entrada flexiva. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:37 13 feb 2026 (UTC)
== Klingon fonología ==
El klingon tiene un sistema fonético exacto letra a letra que no cambia en lo absoluto. Entiendo que ahora no estás enfocado tanto en la pronunciación y más en la flexión, pero podríamos incluirlo eventualmente así como incluímos al toki pona en su momento. En [https://es.wikipedia.org/wiki/Idioma_klingon#Fonología este artículo] se encuentra la tabla fonética del idioma, suficiente como para poder hacer el módulo. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 03:03 16 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] veo que la g aparece en los digrafos "gh" y "ng". No puede aparecer sola? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:13 16 feb 2026 (UTC)
:Misma observación para la h. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:14 16 feb 2026 (UTC)
::No, la g sólo aparece en los digrafos, lo mismo pasa con la h (supongo que es una rareza a propósito del conlang), nunca aparecen fuera de esos dígrafos. Si estás preocupado sobre qué pasa si en una entrada la g o h está sola, no te preocupes, es una señal de que esa entrada no debe existir. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 03:30 16 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] Dónde debo acentuar las palabras? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:58 16 feb 2026 (UTC)
:: La regla de acentuación es bastante lógica pero depende de si la palabra es un sustantivo o un verbo:<br>* '''Sustantivos''': El acento cae en la última sílaba de la raíz (ignorando sufijos). Sin embargo, si un sufijo termina en ' (el saltillo), el acento se desplaza hacia esa sílaba.<br>* '''Verbos''': El acento cae normalmente en la propia raíz verbal. Pero si hay un sufijo que termina en ' y está separado de la raíz por al menos otro sufijo, ese sufijo con ' también se acentúa.<br>Como tiene estas reglas, no estoy seguro de si sea automatizable. Como opción podríamos hacer un sistema simplificado sin acentuación por el momento. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 04:47 16 feb 2026 (UTC)
:::@[[Usuario:PFSV-UY|PFSV-UY]] Si tenemos una lista con todos los sufijos, se puede automatizar. Sino, podemos hacerlo sin acentuación por el momento. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 04:50 16 feb 2026 (UTC)
::::[https://klingon.wiki/En/SuffixType Aquí] está la lista de sufijos. Recuerda que solamente vamos a considerar los sufijos que terminan en ', ya que son los únicos que cambian la regla general. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 05:01 16 feb 2026 (UTC)
:::::@[[Usuario:PFSV-UY|PFSV-UY]] El acento cae en la última sílaba de la raíz, por lo tanto necesito separar los sufijos antes de acentuar. Es decir, no puedo ignorar el resto. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 05:16 16 feb 2026 (UTC)
::::::Claro. Si es un sufijo sin ', no se cuenta y se acentúa en la última palabra antes de esa, si es con ', esa cuenta como última palabra y se acentúa. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 05:50 16 feb 2026 (UTC)
:::::Solo para asegurarme, decime que no tenemos casos de falsos sufijos, análogos a los casos de falsos prefijos en español. Es decir, palabras que terminen con esa secuencia y que superficialmente aparenten llevar el sufijo, pero que no lo lleven en absoluto. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 05:18 16 feb 2026 (UTC)
::::::No tengo el conocimiento del 100% de las palabras de Klingon, pero no es algo para nada común y no puedo recordar un ejemplo. Si tal caso llegase a existir, se podría simplemente agregar de forma manual. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 05:56 16 feb 2026 (UTC)
== Latín tardío ==
Hola. Me preguntaba si se podría añadir «latín tardío» a la lista de ámbitos de Wikcionario:Lista de etiquetas, para que esta pueda ser detectada por el auto cat. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 06:17 20 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] Por ahora, las variantes del latín están consideradas como idiomas aparte. El motivo de no unificarlas es que de ser así debería unificarlas también en la etimología, puesto que todavía no tengo tiempo para crear un nuevo submódulo e importar los códigos de idioma solamente etimológicos, tal como se hizo en en.wikt. Si en el futuro lo hago, se unificaría todo y efectivamente pasarían las variantes a ser consideradas ámbitos. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:05 20 feb 2026 (UTC)
::Sí, y me parece bien que estén separados personalmente (claramente no son el mismo idioma), pero no parece haber un código aparte para latín tardío como lo hay con el latín vulgar o el neolatín, por eso preguntaba. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 14:20 20 feb 2026 (UTC)
:::@[[Usuario:PFSV-UY|PFSV-UY]] Ya modifiqué tus ediciones. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 14:21 20 feb 2026 (UTC)
::::Ya veo. No conocía la etiqueta la-lat. Eso está mucho mejor. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 14:23 20 feb 2026 (UTC)
== Palabras asturianas acabadas en -au/-eu/-ou ==
¡Hola! En principio, y de manera general, las palabras que terminan en asturianu en diptongo decreciente con glide velar, es decir, /aw, ew, ow/ son en general agudas, por lo que ortográficamente llevan acento gráfico en la vocal abierta, -áu, -éu, -óu (excepto si son monosílabos, claro, como llau, prau, feu, mou), y suele corresponderse a las terminaciones castellanas "-ado, -edo/-eo, *-odo/-oo"; este último, /ow/ es muy raro en el asturiano estándar y apenas si aparece en mou (modo), protozóu, y alguna palabra dialectal incorporada al estándar, como fou (bellota) o ḥou (hondonada en el terreno); sí es habitual en el asturiano occidental, básicamente en la terminación de tercera persona singular del pretérito perfecto: falóu, cantóu, comenzóu, etc. (en el estándar y asturiano centrooriental, faló, cantó, comenzó, etc.).
Sin ser este diptongo tónico, así a bote pronto sólo me parece que existen palabras acabadas en -eu, como las dichas de gluteu, mediterraneu, contemporaneu, yerbaceu y similares. Quizá pueda existir alguna terminada en -au, muy raro sería en -ou, pero no me parece que haya en ninguno de los dos casos. Todo sería hacer una búsqueda en el DALLA, en la búsqueda avanzada de "que finen en", para encontrar alguna (eso sí, habría que buscar por -bau, -cau, -dau, etc., porque si buscamos directamente por -au, da como respuesta "demasiados resultados" -no diferencia o no tienen en cuenta la acentuación gráfica).
Una cosa con respecto a los adjetivos tipo mediterraneu, contemporaneu y similares: aunque esta es la forma estándar y única admitida, hay escritores que usan las formas adaptando la -e- a -i-, es decir, mediterraniu, contemporaniu, yerbaciu, etc. (y lógicamente en toda su flexión: mediterrania, mediterranios...), ya que realmente la pronunciación patrimonial es trasformar esa -e- en una -i- y hacer diptongo con la vocal siguiente (una escritora, Esther Prieto, autora del manual ''Gramática del asturianu. Guía de consulta rápida'' (ISBN: 978-84-10345-75-1), que recientemente viene de publicar su segunda edición, así lo menciona). Cuidado, porque palabras como craniu y llinia son siempre con -i- en asturiano. [[Usuario:Limotecariu|Limotecariu]] ([[Usuario discusión:Limotecariu|discusión]]) 15:49 22 feb 2026 (UTC)
:@[[Usuario:Limotecariu|Limotecariu]] Gracias por la información. De momento, solo detecto -eu porque los otros casos me parecerían muy raros, ni siquiera tendrían equivalente etimológico en castellano. El mero hecho de que sean muy raros hace que sea incluso conveniente que haya que completar las formas a mano, por precaución. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:14 22 feb 2026 (UTC)
== Plantillas de pronombres ==
Hola. Noté que las nuevas plantillas de pronombres ({{ep|es.pron}}, {{ep|la.pron}}, etc.) no se ven bien en la vista móvil: hacen falta las etiquetas al principio de cada renglón (supongo que deberían decir nom., acus., dat., etc.) y ocultar el renglón donde están los encabezados (tal como se hace en los módulos de flexión con <code>class="pc"</code>). [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 01:40 28 feb 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Gracias por avisar. Como veo que será muy poco práctico hacerlo fuera de un módulo, preferiría quitar la doble vista y que quede como funcionaban antes las plantillas de flexión: saliendo de la pantalla y que haya que deslizarse. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 01:47 28 feb 2026 (UTC)
== Pronunciación en portugués ==
Hola. Por alguna razón, no se genera la pronunciación de las palabras en portugués con la plantilla pron-graf (ej.: [[coração]]), a pesar de que ya estaba implementada. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 01:19 20 mar 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Sí, desactivé el módulo porque lo había roto en una gran migración "interna" que hice a finales del año pasado. Como no me gustaba la estructura calcada de en.wikt, reescribí todos los módulos de acuerdo a mi criterio, pero por alguna razón había cosas del portugués y creo que del francés que no terminaban de funcionar igual de bien que como estban. Igual gracias por recordármelo, lo voy a revisar. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 01:26 20 mar 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Ya restauré el módulo y corregí la mayoría de errores que tenía ([[Módulo:generar-pron/pt/test]]). En esta nueva versión, solamente se generan dos pronunciaciones, una general para Brasil y otra para Portugal. Anteriormente se generaban ocho pronunciaciones (o dieciséis), pero decidí reducirlas porque: 1. es antiestético una tabla de pronunciación tan grande 2. la mayoría de diferencias eran nimias y fonéticas (no fonológicas), mientras que decidí restringirlo a la fonología porque la fonética del portugués es bastante complicada e irregular como para tratarla con un módulo. Quedan algunos detalles con las vocales, sobre todo cuándo deben ser abiertas o cerradas y cuando deben formar diptongo o hiato, que espero corregirlos en un futuro. PEro en lo grueso ya se puede usar. Ahora en un rato corrijo la posición de los audios. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:18 4 abr 2026 (UTC)
== Edición errónea ==
Hola!, asumiré que fué un error de edición del bot [[Special:Diff/60745321|acá]]. Procedí a revertirla. De tal modo, creo no es apropiado que se editen páginas de usuario, sin antes consultarlo con el usuario en cuestión. Un gran saludo! — <span style="text-shadow:grey 0.8em 0,5em ;font-family:serif">[[User:Mazbel|ℳazbel]] <sup><nowiki>[</nowiki>[[User talk:Mazbel|Talk]]<nowiki>]</nowiki></sup></span> 17:51 2 abr 2026 (UTC)
:Hola, @[[Usuario:Tmagc|Tmagc]]. Aparte de lo que indica Mazbel, ediciones como [[Especial:Diff/6076166|esta]] o [[Especial:Diff/6076138|esta]] no son simple cosmética, alteran el contenido y/o su presentación. Convendría revisar lo que ha hecho el bot y revertir esos cambios. Un saludo, [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 19:51 2 abr 2026 (UTC)
:@[[Usuario:Mazbel|Mazbel]] @[[Usuario:Peter Bowman|Peter Bowman]] El motivo de las ediciones es simplemente eliminar los [[Especial:Errores de sintaxis|errores de sintaxis]], conviene que queden todos o casi todos en 0. Discrepo con lo que dicen, el motivo de retirar los tags es que evidentemente están mal colocados y no tengo tiempo para acomodar cada par, el sistema solamente me dice vagamente qué etiqueta produce el error, no dónde ni cómo. Si tienen una solución mejor, procedan. Pero no reviertan simplemente para volver a dejar los 1k errores de sintaxis que teníamos. Y no me echen ahora la culpa a mí de las irresponsabilidades que cometieron en el pasado, gran favor les estoy haciendo en arreglarlas. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:31 2 abr 2026 (UTC)
::@[[Usuario:Tmagc|Tmagc]]: aunque la página especial se llame "errores", generalmente no lo son, raramente tienen repercusión alguna. Si alguien decidió en su día subrayar un texto o formatear una línea de código, tendría sus motivos; no puedes editar arbitrariamente (hasta donde sé, no hay ningún problema en emplear etiquetas <u> o <code>) discusiones pasadas solo con el pretexto de vaciar una lista de mantenimiento. Voy a ignorar tu tono victimista y jactancioso y sí, debes tomarte el tiempo en hacerlo bien, de lo contrario es mejor que no lo hagas, que ya lo revisará otro. En la página de Mazbel eliminaste contenido válido, y a saber cuántas páginas más habrán resultado afectadas. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 22:41 2 abr 2026 (UTC)
::@[[Usuario:Peter Bowman|Peter Bowman]] Te faltó mencionar que el problema de la anidación se extendió al espacio principal y muchas páginas de allí se vieron afectadas, sobre todo por no haber cerrado el contenedor de {{ep|trad-arriba}}, aparte de que había también algunos tags mal puestos. Puesto que no hay módulo que arroje error por ello, y que no hay una forma de excluir o limitar los errores de sintaxis a páginas del espacio principal, mantengo mi postura. Tener las listas en 0 sirve como una herramienta adicional para poder traquear errores graves de formato en el espacio principal y en espacios no de discusión, cuando no hay módulo que pueda hacerlo. Obviamente sé que no todos los errores son importantes, si pensara eso hubiese vaciado las páginas que contienen etiquetas obsoletas o hubiese vaciado páginas con el otro error de "Existe una regla de estilo para el color de fondo a nivel de línea sin un color de texto correspondiente", tan bobo no soy. Para el resto, no me queda claro a qué te referís con lo de que lo "revisará otro", quién más hace mantenimiento en el sitio? Veré de revisar un poco pero me parece un disparate: primero revertir todo porque me he metido con cosillas de usuarios que ni siquiera participan del proyecto en pos de facilitar la tarea de mantenimiento (explicado primera frase de la respuesta), segundo que me carguen a mí la responsabilidad de arreglar las PU cuando a los usuarios afectados les llegará la notificación y pueden optar por arreglar ellos el formato de sus propias páginas, pueden colaborar también, no (el usuario que vino ni siquiera se ocupó de revisar los errores de sus PU's, qué fácil es quejarse así)? Y tercero, porque hay errores que a mi juicio son imposibles de solucionar sin eliminar las etiquetas, requeriría ir a buscar a cada uno de los usuarios y preguntarles cuál fue su intención en ese momento de haber usado la etiqueta para saber en dónde hay que cerrarla. Todavía no me termina de cerrar tu propuesta. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:03 2 abr 2026 (UTC)
:::@[[Usuario:Tmagc|Tmagc]]: de acuerdo, hay cosas que conviene corregir antes que otras, ahí viene bien que el sistema las categorice por su prioridad. De vez en cuando reviso esas listas en plwiktionary y, francamente, cuando veo resultados en el espacio de usuario (o su discusión), casi siempre los ignoro, que cada cual se haga responsable de poner orden en su propia casa (y si renderiza mal, pues es su problema). Mi observación anterior incidía en el hecho de que borraste etiquetas válidas tratando de corregir otras que no lo eran. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 09:50 3 abr 2026 (UTC)
== re:votación reciente sobre firmas ==
Hola Tmagc, gracias por el aviso. ¿Podrías reemplazar mis firmas previas por mi firma actual? Ya que ahora la he modificado. Ejecuté el esnípet del artículo de Mediawiki y no me arroja resultados, así que asumo que ahora está corregida ;). — <span style="background:#7EE6CB;color:#5A3696;padding:1px 2px;border-radius:2px">[[User:Genoskill|<span style="font-weight:bold">Genoskill</span>]]</span> ([[User talk:Genoskill|discusión]]) 00:34 17 abr 2026 (UTC)
:@[[Usuario:Genoskill|Genoskill]] Puedo modificar tus firmas. Personalmente me disgusta tu elección porque la combinación de colores queda con poco contraste en el modo oscuro; de ahí el "error" que arroja MediaWiki. La idea es no tapar los escombros con la alfombra porque generalmente cuando salta el error es porque se fuerza un color de fondo que probablemente quedará mal en el otro modo. Pero si eso es lo que querés, así lo voy a hacer. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 00:39 17 abr 2026 (UTC)
:PD: Me desdigo parcialmente, cambié de monitor y no se ve tan mal. Lo que pasa es que en el monitor que trabajo tengo luz cálida xd. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 00:41 17 abr 2026 (UTC)
::{{ping|Tmagc}} Ahora que la pruebo en el modo oscuro se ve feísima, jaja. No había probado ese modo antes porque mi tema predeterminado es MonoBook, el cual no tiene modo oscuro. Creo que con mi último ajuste ahora estaría aceptable. De todas formas, ignora mi preferencia y reemplaza mis firmas previas con lo que estimes expedito.— <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]]) 02:01 17 abr 2026 (UTC)
== Eliminación de mis entradas. ==
Hola. Hace unos meses probé a añadir algunas entradas con la ortografía reintegrada del gallego. Fueron eliminadas por ti, y no tengo clara la razón. Fueron suprimidas porque no te gusta el gallego reintegrado, o fue porque el formato era incorrecto? Tengo previsto añadir más entradas con la ortografía reintegrada del gallego y me gustaría que no fuesen eliminadas en el futuro. Gracias. [[Usuario:Kyning|Kyning]] ([[Usuario discusión:Kyning|discusión]]) 14:58 20 may 2026 (UTC)
:@[[Usuario:Kyning|Kyning]] Hola, gracias por contactarme antes de seguir adelante. No me queda claro cómo el concepto de "gallego reintegracionista" tendría cabida en un diccionario. Si nos tomamos en serio la postura, no debería ser lo mismo que portugués, ergo, todas las palabras y grafías "reintegracionistas", irían en realidad bajo el código "pt" y no bajo el código "gl"? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:00 20 may 2026 (UTC)
== Tumba ==
Es comprensible que mi agregado de quinta acepción a Tumba, en
https://es.wiktionary.org/wiki/Especial:Seguimiento?hidepreviousrevisions=1&hidecategorization=1&hideWikibase=1&hideWikifunctions=1&limit=250&days=3&urlversion=2
te haya parecido una muy mala broma, pero de ninguna manera es el caso.
Parece ser tan poco común como acepción que ni siquiera Google la encuentra,
pero es rigurosamente así y puedes oír un buen ejemplo en la segunda canción del disco de PANCHO VIERA - Canciones desde el cuartel, que puedes encontrar en Youtube pero no se me permite publicar directamente el enlace externo.
En otras circunstancias nadie quiere usar el término, pero el conocimiento es conveniente. [[Usuario:Rafael.amen|Rafael.amen]] ([[Usuario discusión:Rafael.amen|discusión]]) 12:09 21 may 2026 (UTC)
== Re: pronunciación ==
Hola, sí, adelante. Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 14:33 21 may 2026 (UTC)
:Hola. Sobre las sílabas, la estructura más común es V, VC, CV, CVC. Los grupos consonánticos son raros; VCC es menos común y CVCC casi no aparece.
:En cuanto a las secuencias vocálicas, en principio son hiáticas, aunque /i/ y /u/ átonas pueden diptongarse en habla rápida.
:Y sobre el acento, lo más frecuente es que sea grave, pero no es totalmente predecible: también hay palabras agudas, esdrújulas e incluso algunas sobreesdrújulas. Las entradas sin tilde en la categoría están asumidas como graves. Según Viegas el acento siempre recae en la penúltima sílaba.
:Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 17:05 21 may 2026 (UTC)
::Hola. Es un tema confuso porque las fuentes no son consistentes. Lo que puedo decir:
::r equivale a /ɾ/
::rr parece ser /ɾ̥/, aunque en Living Dictionaries transcriban esto como /ɬ/. En el Yagankúta equivale a /ɾ/. Yo sigo el alfabeto de Aguilera, así que rr sería dos r seguidas o una r geminada, si es que existe.
::rh es /ɻ/ (Salas, Wikipedia en inglés) o /ɹ/ (Yagankúta, Aguilera). Ambos símbolos se han usado para el mismo sonido.
::ř solo aparece en el Yagankúta y el Yapimata, y sí, representa algo como /ɻʃ/ o /ɹʃ/.
::La discrepancia entre Wikipedia en español e inglés seguro refleja esa misma inconsistencia entre fuentes. Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 17:57 22 may 2026 (UTC)
== Módulo yagán ==
Hola, encontré un problema con el módulo: trata las consonantes geminadas como dos consonantes separadas. En yagán las consonantes geminadas son frecuentes, así que afecta a muchas entradas. ¿Se puede ajustar? Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 21:55 22 may 2026 (UTC)
:Hola. Por ejemplo šönnu o töllúša. En estas palabras las consonantes dobles (nn, ll, mm, pp, tt, kk, ss, šš, ff si es que ocurre) deberían tratarse como geminadas, no como dos sílabas separadas. Por ejemplo, töllúša es /tə.lːu.ɕa/ no /təl.lu.ɕa/" [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 16:37 23 may 2026 (UTC)
== Transliteración y diacríticos en etimología ==
Por un rato ya, he estado viendo cómo implementar en la plantilla de etimología la transliteración automática y la redirección de términos con diacríticos a su forma de diccionario, similar a como se hace en Wiktionary.
* <code><nowiki>{{etimología|la|āctor}}</nowiki></code> en lugar de <code><nowiki>{{etimología|la|actor|diacrítico=āctor}}</nowiki></code>
* <code><nowiki>{{etim|ar|قَطِيفَة}}</nowiki></code> en lugar de <code><nowiki>{{etim|ar|قطيفة|diacrítico=قَطِيفَة|tr=qaṭīfah}}</nowiki></code>
(<code>alt=</code> se ignoraría ya que puede ser usado de otras formas)
Estaba viendo cómo hacerlo hasta que me di cuenta de que tú ya lo habías hecho, solo que en las tablas de declinación. Entonces quería ver si tú, que ya conoces el código, veías viable su implementación (y si podrías hacerlo).
En los ejemplos usé el árabe, pero creo que ese ejemplo aún no se podría realizar, un ejemplo mejor sería el griego antiguo que ya tenemos su transliteración en las tablas de declinación. [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 14:56 2 jul 2026 (UTC)
:@[[Usuario:Raos10|Raos10]] Pues es un trabajo importante para hacer. En principio unificaria las funciones que haya ahora a submódulos, por ejemplo Módulo:normalizar/xx. El tema es que en varios idiomas las convenciones son las mismas, por ejemplo los idiomas que usan el cirílico suelen escribirse igual que el ruso y entonces podríamos hacer Módulo:normalizar/Cyrl, Módulo:normalizar/Latn, etc. Entonces: si existe función especifica para un idioma, esta debe sobreescribir las funciones fe los scripts. Sino la hay, hay que detectar el script y usar la función de script correspondiente. Habría que estudiar el tema con más profundidad, yo creo que para Cyrl y alfabeto griego podría ser la misma normalización para casi todo. Sin embargo sería mals idea normalizar Latn y habría que hacerlo únicamente a nivel de idioma. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:02 2 jul 2026 (UTC)
:Posdata: además en el caso del latín para con las lenguas romances, creo que de todas formas quedaría manual puesto que lo correcto sería mostrar el genitivo/infinitivo (las formas que se heredaron) y enlazar al nominativo/1sp (formas canónicas). [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:02 3 jul 2026 (UTC)
::Una disculpa, había estado algo ocupado. Sí, es un tema que se tiene que premeditar. He continuado tratando de descifrar cómo lo hace Wiktionary y he encontrado que es algo bastante enrevesado, pero supongo que es natural si se busca adaptarse de mejor manera a cada idioma...
::Creo que es mejor crear módulos separados para cada función en vez de agruparlos en un solo módulo (creo que a eso te referías con lo del módulo "normalizar"). Es decir, un módulo para transliterar y otro para separar diacríticos. Así como dijiste, habría módulos por Escritura o Idioma; el de Escritura sería el ''fallback'' por si no hay datos específicos de idioma y el objeto de idioma lo permite. Así como Wiktionary, esos datos y métodos estarían en los objetos de Escrituras e Idiomas; también habría una función que detecte la Escritura, esto sería especialmente útil para idiomas que tengan varias escrituras.
::Para idiomas que tienen reglas más sencillas, Wiktionary pone directamente las reglas en las propiedades del objeto de idioma en vez de tener un módulo completo, creo que esto tiene sentido. Así p. ej., simplemente se dice que los símbolos [´, ¨] se quitan, excepto del carácter [ü]. Y ya el método en el objeto de idioma determina si ejecuta las reglas, llama al módulo específico de Idioma o llama al módulo de la Escritura. Según ellos mismos, tienen muchas casos en que las reglas podrían eliminarse y que simplemente se llame al módulo de la Escritura, así que tal vez deberíamos revisar antes de copiar todo (o no).
::(Tal vez ya lo sabías y estoy repitiendo lo que dijiste, pero es para evitar obviar y me ayuda a tenerlo más claro jaja)
::Sobre lo que dices del latín, sí, lo más correcto sería escribir manualmente la forma de diccionario y utilizar "alt=", pero lo de quitar los diacríticos y transliterar aún estaría habilitado. [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 19:31 22 jul 2026 (UTC)
== Sobre el borrado de «[[:Plantilla:xib-pron]]» ==
Hola, he sido notificado por la [[Usuario discusión:CarpetanoComplutense#Notificación de borrado rápido en «Plantilla:xib-pron»|eliminación]] de esta plantilla que creé ayer. Me disculpo por que no cumpliera con la política de borrado; estaba tratando de exportar [https://ca.wiktionary.org/wiki/Plantilla:xib-pron otra plantilla del Wikcionario en catalán] para la interpretación AFI de las palabras en [[:Categoría:Íbero|lengua ibérica]], pero no había contado con que se pudiera integrar perfectamente en ''[[Plantilla:pron-graf|pron-graf]]''.
Resulta que también había pensado en transferir [https://ca.wiktionary.org/wiki/M%C3%B2dul:xib-trans este módulo] para la transliteración a escritura ibérica nororiental, pero también he observado que ''[[Plantilla:pron-graf|pron-graf]]'' dispone de apartados para [[Plantilla:pron-graf#Transliteraciones|transliteraciones]] y [[Plantilla:pron-graf#Escrituras alternativas|escrituras alternativas]]. En este sentido, para no cometer el mismo error que con la plantilla que creé ayer, ¿debería tratar de integrarlo en uno de esos apartados?
Muchas gracias. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 16:22 19 jul 2026 (UTC)
:@[[Usuario:CarpetanoComplutense|CarpetanoComplutense]] Ya agregué el módulo [[Módulo:generar-pron/xib]] para que sea invocado automáticamente por [[Módulo:pron-graf]]. {{ep|pron-graf}} es lo que debe usarse para la pronunciación. En cuanto a la transliteración, como no tiene script en Unicode, prefiero que no aparezca dentro de {{ep|pron-graf}}, aunque sería posible crear {{ep|xib.esc}} similar a como se hizo con {{ep|egy.jero}} para cubrir ese propósito como en [[ḫd]]. Por lo demás deberías ver cómo se implementó el resto de módulos para el resto de idiomas y replicarlo. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:31 19 jul 2026 (UTC)
::Entendido, muchas gracias por la respuesta. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 16:52 19 jul 2026 (UTC)
== Sobre los formadores antroponímicos en lengua ibérica ==
Hola, he visto que transferiste el elemento ''[[inte-]]'' a una nueva página. Agradezco la modificación, ya que en este caso particular solo ha sido atestiguado al principio de ciertos antropónimos (''Indíbil'' y quizás ''Indortes'', ''Indalecio'' e ''Indalo'') y, por lo tanto, es bastante acertado agregarle un guión en esa posición.
Sin embargo, tengo una duda sobre algunas raíces ibéricas que tengo pensado añadir. Existen otras que pueden encontrarse tanto al principio como al final del nombre, como bien puede ser ''bilos'' en ''[[Talskubilos]]'' y ''[[Bilostibaś]]''. ¿Debería crear 2 páginas diferentes (''[[-bilos]]'' y ''[[bilos-]]'') en esos casos?
Muchas gracias. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 21:37 21 jul 2026 (UTC)
:@[[Usuario:CarpetanoComplutense|CarpetanoComplutense]] En principio sí. Si no existe solo ([[bilos]], sin ser parte de compuestos) sería prefijo, infijo, o sufijo. Si no, sería válido agregarlo como raíz. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 22:27 21 jul 2026 (UTC)
::Efectivamente, hay algunos elementos como este que solo han sido hallados en nombres, nunca por separado. Con lo cual, crearé sendas páginas. Gracias por la aclaración. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 22:50 21 jul 2026 (UTC)
== Conjugación en catalán ==
Hola. Hay un error en este módulo de conjugación: el pretérito perifrástico (tanto en indicativo como en subjuntivo) se debe formar con el auxiliar + la forma de infinitivo (no la del participio). Ejemplos: vaig eixir, vagi eixir, vaja eixir. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 00:44 26 jul 2026 (UTC)
n5pq50a8pykh2awupsqg6dhgddkqss1
6124170
6124033
2026-07-26T05:11:50Z
Tmagc
158167
/* Conjugación en catalán */ Respuesta
6124170
wikitext
text/x-wiki
{{{{ns:3}}:{{ROOTPAGENAME}}/Archivo plantilla}}
== Conjugación en inglés ==
Hola. Encontré unos errores en el módulo de conjugación de verbos en inglés (ej.: [[swim]]): el futuro y condicional simple se muestran con la forma de participio ("will swum", etc.) en lugar de la de infinitivo. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 02:14 8 ene 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Corregido, gracias. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 02:58 8 ene 2026 (UTC)
::@[[Usuario:Tmagc|Tmagc]] Excelente. Solo que para el verbo [[can]] habría que desactivar esos dos tiempos. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 03:19 8 ene 2026 (UTC)
:::@[[Usuario:26agcp|26agcp]] Hecho. Si ves más verbos defectivos así, avisame. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:29 8 ene 2026 (UTC)
::::@[[Usuario:Tmagc|Tmagc]] Hace falta un parámetro para desactivar el imperativo en verbos como can, shall, must.
::::En otro tema, las formas arcaicas del presente y pretérito de indicativo (terminadas en -est, -st) se usan solo con el pronombre thou. Pero por la forma en que se muestran en la tabla pareciera que se usan con you. No sé si sería mejor moverlas a una nueva columna o agregar una nota para aclarar su uso. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 00:56 12 ene 2026 (UTC)
:::::@[[Usuario:26agcp|26agcp]] Listo. Ahora con <nowiki>|fut=no, |cond=no, |imper=no</nowiki> se pueden desactivar esos tiempos. En cuanto a las formas arcaicas terminadas en -est, -st, lo mejor sería moverlas a las tablas del inglés medio o inglés antiguo, el día en que se hagan. Mientras tanto, pondría en el encabezado algo como "you (thou)" para salir del paso. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 21:40 13 ene 2026 (UTC)
== Usuaria:19Tarrestnom65 ==
Buenas tardes, Tmagc, muchas gracias por el mensaje. Me preocupaba haberme creado enemigos, cosa que es muy mala cuando intentas editar. Agradezco muchísimo la idea de la base de datos. Yo los vocablos los saco de un libro en el que están puestos en un glosario, con la definición, pero no es un diccionario y por ejemplo no indica mucho más a parte de decir en algunos el posible origen. Trabajamos últimamente sobre zonas donde usan castellano churro que tiene ciertos términos curiosos. De todos modos, aunque no dejo en saco roto tu propuesta, que me gusta, hoy mismo hemos empezado la preparación de un proyecto que tenemos que tener terminado para principios de marzo y durante al menos lo que queda de mes nos centraremos en esto. En febrero miro de elaborar una hoja de cálculo con las palabras, definiciones y demás información que tenga, ¿podría servirte eso? Seguimos en contacto. Muchísimas gracias por la sugerencia y por vuestra dedicación al proyecto. Un saludo.[[Usuario:19Tarrestnom65|19Tarrestnom65]] ([[Usuario discusión:19Tarrestnom65|discusión]]) 18:29 9 ene 2026 (UTC)
:@[[Usuario:19Tarrestnom65|19Tarrestnom65]] En principio sí. El proceso de leer y analizar el libro y extraer las palabras es obviamente una tarea demasiado larga pero si te resulta más fácil organizar las palabras de otro modo yo puedo convertirla al formato de este sitio. Deberías contar con, además de las palabras y las definiciones, las marcas gramaticales de clase, género, etc., las marcas de uso o ámbito y opcionalmente la etimología. Cuando tengas un par de decenas avisame así puedo hacer una prueba primero. Y no busco enemigos, lo único que no quiero es que cada usuario nuevo que venga al sitio se convierta en un problema más del que nos tengamos que preocupar. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 19:55 9 ene 2026 (UTC)
== Tiempos compuestos en italiano/francés ==
Hola de nuevo. Encontré un error en los módulos para estos idiomas.
En italiano, cuando se forman los tiempos compuestos con el auxiliar essere, el participio debe concordar en género y número con el sujeto. Por ejemplo, ''eravamo arrivat'''i'''''. Mientras que cuando se usa avere, el participio es invariante: ''avevamo arrivato''.
En francés ocurre lo mismo (debe haber concordancia cuando se usa être): ''nous sommes arrivé'''s'''''. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 12:12 18 ene 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Hecho, creo. Asumo que todos los participios en plural se forman reemplazando la o por la i en el italiano, y concatenando una s final en francés. En cuanto al género, muestro solamente el masculino por una cuestión de economía. Gracias por avisar. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:37 18 ene 2026 (UTC)
== Plural en locuciones ==
Hola @[[Usuario:Tmagc|Tmagc]]. Noté que en entradas de locuciones, como [[plot twist]] o [[árbol de Navidad]], en el plural nuevo que añadiste genera los enlaces [[plot]] [[twists]] por separado, en vez de [[plot twists]], que sería lo correcto. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:05 13 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] Eliminamos hace tiempo los plurales de locuciones, más que nada para desincentivar el farmeo excesivo e incentivar a que los usuarios se centren en agregar el contenido propiamente dicho, antes que generar automáticamente entradas de formas flexivas en masa sin siquiera revisar nada. Por lo que esa entrada debería ser eliminada. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:13 13 feb 2026 (UTC)
::¿En todos los casos? Porque en algunos idiomas hay palabras que son técnicamente locuciones porque tienen espacio entre ambos términos, pero que dichos términos por separado no tienen significado alguno (como si Sri Lanka tuviera plural me entiendes). [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:16 13 feb 2026 (UTC)
:::@[[Usuario:PFSV-UY|PFSV-UY]] No eliminamos las locuciones, eliminamos las formas flexivas de locuciones como entradas independientes. [[Sri Lanka]] es una entrada válida que no tiene plural, y por lo tanto la plantilla no generará forma flexiva alguna al invocarse <del><nowiki>{{es.sust|s}}</nowiki></del> (perdón, en español no mostramos la plantilla de flexión para los nombres propios). [[árbol de Navidad]] vale, pero no [[árboles de Navidad]]. Estoy revisando tus contribuciones y veo que agregaste unas cuantas formas flexivas de locuciones en klingon. Cuando implemente la nueva plantilla, recopilaré dichas entradas y le pediré a @[[Usuario:Peter Bowman|Peter Bowman]] que las elimine, tal como ocurrió con los demás idiomas. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:19 13 feb 2026 (UTC)
::::Pero no entiendes lo que me refiero: hay locuciones que tienen plural en su idioma (imagínate [[palabra1 palabra2-plural]], que no tendría sentido [[palabra1]] [[palabra2-plural]] ya que [[palabra2-plural]] no existe como palabra con dicho plural (o a veces en la locución cambia de tipo de plural, ej. si la locución forma una palabra sobre profesión (plural pu') y la palabra que recibe el plural por separado tiene el plural mey. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:25 13 feb 2026 (UTC)
:::::Considero que la decisión es muy centrada en el español o idiomas indoeuropeos y no considera locuciones como unidad léxica única inseparable, en lugar de locuciones nominales típicas de los idiomas occidentales. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:27 13 feb 2026 (UTC)
:::::@[[Usuario:PFSV-UY|PFSV-UY]] Si ese es el caso del klingon, optaría por tratar a todas las entradas como sustantivos y no como locuciones para no confundir a los (futuros) bots de mantenimiento que implemente. Y así, puedo configurar la plantilla {{ep|tlh.sust}} para que no fragmente los plurales de las locuciones. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:28 13 feb 2026 (UTC)
:::::@[[Usuario:PFSV-UY|PFSV-UY]] En efecto, somos indoeurocéntricos o romanocéntricos porque fuera de las lenguas romances no tenemos ecosistemas vivos, por lo tanto no puedo esquematizar lo que no conozco. Pero podemos ser flexibles en ese punto, no veo por qué no. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 18:30 13 feb 2026 (UTC)
::::::Creo que tratarlas como sustantivos (aunque técnicamente son locuciones sustantivas) sería un buen punto medio, así no se generan plurales sin sentido que podrían ser engañosos (como el ejemplo que te di). Agradezco la comprensión. Me preguntaba si tu solución es que se mantengan las entradas del plural como si fueran sustantivos normales, o si tu solución es simplemente para que aparezcan en la entrada principal, sin entrada flexiva. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 18:37 13 feb 2026 (UTC)
== Klingon fonología ==
El klingon tiene un sistema fonético exacto letra a letra que no cambia en lo absoluto. Entiendo que ahora no estás enfocado tanto en la pronunciación y más en la flexión, pero podríamos incluirlo eventualmente así como incluímos al toki pona en su momento. En [https://es.wikipedia.org/wiki/Idioma_klingon#Fonología este artículo] se encuentra la tabla fonética del idioma, suficiente como para poder hacer el módulo. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 03:03 16 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] veo que la g aparece en los digrafos "gh" y "ng". No puede aparecer sola? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:13 16 feb 2026 (UTC)
:Misma observación para la h. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:14 16 feb 2026 (UTC)
::No, la g sólo aparece en los digrafos, lo mismo pasa con la h (supongo que es una rareza a propósito del conlang), nunca aparecen fuera de esos dígrafos. Si estás preocupado sobre qué pasa si en una entrada la g o h está sola, no te preocupes, es una señal de que esa entrada no debe existir. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 03:30 16 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] Dónde debo acentuar las palabras? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 03:58 16 feb 2026 (UTC)
:: La regla de acentuación es bastante lógica pero depende de si la palabra es un sustantivo o un verbo:<br>* '''Sustantivos''': El acento cae en la última sílaba de la raíz (ignorando sufijos). Sin embargo, si un sufijo termina en ' (el saltillo), el acento se desplaza hacia esa sílaba.<br>* '''Verbos''': El acento cae normalmente en la propia raíz verbal. Pero si hay un sufijo que termina en ' y está separado de la raíz por al menos otro sufijo, ese sufijo con ' también se acentúa.<br>Como tiene estas reglas, no estoy seguro de si sea automatizable. Como opción podríamos hacer un sistema simplificado sin acentuación por el momento. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 04:47 16 feb 2026 (UTC)
:::@[[Usuario:PFSV-UY|PFSV-UY]] Si tenemos una lista con todos los sufijos, se puede automatizar. Sino, podemos hacerlo sin acentuación por el momento. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 04:50 16 feb 2026 (UTC)
::::[https://klingon.wiki/En/SuffixType Aquí] está la lista de sufijos. Recuerda que solamente vamos a considerar los sufijos que terminan en ', ya que son los únicos que cambian la regla general. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 05:01 16 feb 2026 (UTC)
:::::@[[Usuario:PFSV-UY|PFSV-UY]] El acento cae en la última sílaba de la raíz, por lo tanto necesito separar los sufijos antes de acentuar. Es decir, no puedo ignorar el resto. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 05:16 16 feb 2026 (UTC)
::::::Claro. Si es un sufijo sin ', no se cuenta y se acentúa en la última palabra antes de esa, si es con ', esa cuenta como última palabra y se acentúa. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 05:50 16 feb 2026 (UTC)
:::::Solo para asegurarme, decime que no tenemos casos de falsos sufijos, análogos a los casos de falsos prefijos en español. Es decir, palabras que terminen con esa secuencia y que superficialmente aparenten llevar el sufijo, pero que no lo lleven en absoluto. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 05:18 16 feb 2026 (UTC)
::::::No tengo el conocimiento del 100% de las palabras de Klingon, pero no es algo para nada común y no puedo recordar un ejemplo. Si tal caso llegase a existir, se podría simplemente agregar de forma manual. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 05:56 16 feb 2026 (UTC)
== Latín tardío ==
Hola. Me preguntaba si se podría añadir «latín tardío» a la lista de ámbitos de Wikcionario:Lista de etiquetas, para que esta pueda ser detectada por el auto cat. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 06:17 20 feb 2026 (UTC)
:@[[Usuario:PFSV-UY|PFSV-UY]] Por ahora, las variantes del latín están consideradas como idiomas aparte. El motivo de no unificarlas es que de ser así debería unificarlas también en la etimología, puesto que todavía no tengo tiempo para crear un nuevo submódulo e importar los códigos de idioma solamente etimológicos, tal como se hizo en en.wikt. Si en el futuro lo hago, se unificaría todo y efectivamente pasarían las variantes a ser consideradas ámbitos. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 13:05 20 feb 2026 (UTC)
::Sí, y me parece bien que estén separados personalmente (claramente no son el mismo idioma), pero no parece haber un código aparte para latín tardío como lo hay con el latín vulgar o el neolatín, por eso preguntaba. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 14:20 20 feb 2026 (UTC)
:::@[[Usuario:PFSV-UY|PFSV-UY]] Ya modifiqué tus ediciones. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 14:21 20 feb 2026 (UTC)
::::Ya veo. No conocía la etiqueta la-lat. Eso está mucho mejor. [[Usuario:PFSV-UY|PFSV-UY]] ([[Usuario discusión:PFSV-UY|discusión]]) 14:23 20 feb 2026 (UTC)
== Palabras asturianas acabadas en -au/-eu/-ou ==
¡Hola! En principio, y de manera general, las palabras que terminan en asturianu en diptongo decreciente con glide velar, es decir, /aw, ew, ow/ son en general agudas, por lo que ortográficamente llevan acento gráfico en la vocal abierta, -áu, -éu, -óu (excepto si son monosílabos, claro, como llau, prau, feu, mou), y suele corresponderse a las terminaciones castellanas "-ado, -edo/-eo, *-odo/-oo"; este último, /ow/ es muy raro en el asturiano estándar y apenas si aparece en mou (modo), protozóu, y alguna palabra dialectal incorporada al estándar, como fou (bellota) o ḥou (hondonada en el terreno); sí es habitual en el asturiano occidental, básicamente en la terminación de tercera persona singular del pretérito perfecto: falóu, cantóu, comenzóu, etc. (en el estándar y asturiano centrooriental, faló, cantó, comenzó, etc.).
Sin ser este diptongo tónico, así a bote pronto sólo me parece que existen palabras acabadas en -eu, como las dichas de gluteu, mediterraneu, contemporaneu, yerbaceu y similares. Quizá pueda existir alguna terminada en -au, muy raro sería en -ou, pero no me parece que haya en ninguno de los dos casos. Todo sería hacer una búsqueda en el DALLA, en la búsqueda avanzada de "que finen en", para encontrar alguna (eso sí, habría que buscar por -bau, -cau, -dau, etc., porque si buscamos directamente por -au, da como respuesta "demasiados resultados" -no diferencia o no tienen en cuenta la acentuación gráfica).
Una cosa con respecto a los adjetivos tipo mediterraneu, contemporaneu y similares: aunque esta es la forma estándar y única admitida, hay escritores que usan las formas adaptando la -e- a -i-, es decir, mediterraniu, contemporaniu, yerbaciu, etc. (y lógicamente en toda su flexión: mediterrania, mediterranios...), ya que realmente la pronunciación patrimonial es trasformar esa -e- en una -i- y hacer diptongo con la vocal siguiente (una escritora, Esther Prieto, autora del manual ''Gramática del asturianu. Guía de consulta rápida'' (ISBN: 978-84-10345-75-1), que recientemente viene de publicar su segunda edición, así lo menciona). Cuidado, porque palabras como craniu y llinia son siempre con -i- en asturiano. [[Usuario:Limotecariu|Limotecariu]] ([[Usuario discusión:Limotecariu|discusión]]) 15:49 22 feb 2026 (UTC)
:@[[Usuario:Limotecariu|Limotecariu]] Gracias por la información. De momento, solo detecto -eu porque los otros casos me parecerían muy raros, ni siquiera tendrían equivalente etimológico en castellano. El mero hecho de que sean muy raros hace que sea incluso conveniente que haya que completar las formas a mano, por precaución. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:14 22 feb 2026 (UTC)
== Plantillas de pronombres ==
Hola. Noté que las nuevas plantillas de pronombres ({{ep|es.pron}}, {{ep|la.pron}}, etc.) no se ven bien en la vista móvil: hacen falta las etiquetas al principio de cada renglón (supongo que deberían decir nom., acus., dat., etc.) y ocultar el renglón donde están los encabezados (tal como se hace en los módulos de flexión con <code>class="pc"</code>). [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 01:40 28 feb 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Gracias por avisar. Como veo que será muy poco práctico hacerlo fuera de un módulo, preferiría quitar la doble vista y que quede como funcionaban antes las plantillas de flexión: saliendo de la pantalla y que haya que deslizarse. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 01:47 28 feb 2026 (UTC)
== Pronunciación en portugués ==
Hola. Por alguna razón, no se genera la pronunciación de las palabras en portugués con la plantilla pron-graf (ej.: [[coração]]), a pesar de que ya estaba implementada. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 01:19 20 mar 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Sí, desactivé el módulo porque lo había roto en una gran migración "interna" que hice a finales del año pasado. Como no me gustaba la estructura calcada de en.wikt, reescribí todos los módulos de acuerdo a mi criterio, pero por alguna razón había cosas del portugués y creo que del francés que no terminaban de funcionar igual de bien que como estban. Igual gracias por recordármelo, lo voy a revisar. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 01:26 20 mar 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Ya restauré el módulo y corregí la mayoría de errores que tenía ([[Módulo:generar-pron/pt/test]]). En esta nueva versión, solamente se generan dos pronunciaciones, una general para Brasil y otra para Portugal. Anteriormente se generaban ocho pronunciaciones (o dieciséis), pero decidí reducirlas porque: 1. es antiestético una tabla de pronunciación tan grande 2. la mayoría de diferencias eran nimias y fonéticas (no fonológicas), mientras que decidí restringirlo a la fonología porque la fonética del portugués es bastante complicada e irregular como para tratarla con un módulo. Quedan algunos detalles con las vocales, sobre todo cuándo deben ser abiertas o cerradas y cuando deben formar diptongo o hiato, que espero corregirlos en un futuro. PEro en lo grueso ya se puede usar. Ahora en un rato corrijo la posición de los audios. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:18 4 abr 2026 (UTC)
== Edición errónea ==
Hola!, asumiré que fué un error de edición del bot [[Special:Diff/60745321|acá]]. Procedí a revertirla. De tal modo, creo no es apropiado que se editen páginas de usuario, sin antes consultarlo con el usuario en cuestión. Un gran saludo! — <span style="text-shadow:grey 0.8em 0,5em ;font-family:serif">[[User:Mazbel|ℳazbel]] <sup><nowiki>[</nowiki>[[User talk:Mazbel|Talk]]<nowiki>]</nowiki></sup></span> 17:51 2 abr 2026 (UTC)
:Hola, @[[Usuario:Tmagc|Tmagc]]. Aparte de lo que indica Mazbel, ediciones como [[Especial:Diff/6076166|esta]] o [[Especial:Diff/6076138|esta]] no son simple cosmética, alteran el contenido y/o su presentación. Convendría revisar lo que ha hecho el bot y revertir esos cambios. Un saludo, [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 19:51 2 abr 2026 (UTC)
:@[[Usuario:Mazbel|Mazbel]] @[[Usuario:Peter Bowman|Peter Bowman]] El motivo de las ediciones es simplemente eliminar los [[Especial:Errores de sintaxis|errores de sintaxis]], conviene que queden todos o casi todos en 0. Discrepo con lo que dicen, el motivo de retirar los tags es que evidentemente están mal colocados y no tengo tiempo para acomodar cada par, el sistema solamente me dice vagamente qué etiqueta produce el error, no dónde ni cómo. Si tienen una solución mejor, procedan. Pero no reviertan simplemente para volver a dejar los 1k errores de sintaxis que teníamos. Y no me echen ahora la culpa a mí de las irresponsabilidades que cometieron en el pasado, gran favor les estoy haciendo en arreglarlas. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:31 2 abr 2026 (UTC)
::@[[Usuario:Tmagc|Tmagc]]: aunque la página especial se llame "errores", generalmente no lo son, raramente tienen repercusión alguna. Si alguien decidió en su día subrayar un texto o formatear una línea de código, tendría sus motivos; no puedes editar arbitrariamente (hasta donde sé, no hay ningún problema en emplear etiquetas <u> o <code>) discusiones pasadas solo con el pretexto de vaciar una lista de mantenimiento. Voy a ignorar tu tono victimista y jactancioso y sí, debes tomarte el tiempo en hacerlo bien, de lo contrario es mejor que no lo hagas, que ya lo revisará otro. En la página de Mazbel eliminaste contenido válido, y a saber cuántas páginas más habrán resultado afectadas. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 22:41 2 abr 2026 (UTC)
::@[[Usuario:Peter Bowman|Peter Bowman]] Te faltó mencionar que el problema de la anidación se extendió al espacio principal y muchas páginas de allí se vieron afectadas, sobre todo por no haber cerrado el contenedor de {{ep|trad-arriba}}, aparte de que había también algunos tags mal puestos. Puesto que no hay módulo que arroje error por ello, y que no hay una forma de excluir o limitar los errores de sintaxis a páginas del espacio principal, mantengo mi postura. Tener las listas en 0 sirve como una herramienta adicional para poder traquear errores graves de formato en el espacio principal y en espacios no de discusión, cuando no hay módulo que pueda hacerlo. Obviamente sé que no todos los errores son importantes, si pensara eso hubiese vaciado las páginas que contienen etiquetas obsoletas o hubiese vaciado páginas con el otro error de "Existe una regla de estilo para el color de fondo a nivel de línea sin un color de texto correspondiente", tan bobo no soy. Para el resto, no me queda claro a qué te referís con lo de que lo "revisará otro", quién más hace mantenimiento en el sitio? Veré de revisar un poco pero me parece un disparate: primero revertir todo porque me he metido con cosillas de usuarios que ni siquiera participan del proyecto en pos de facilitar la tarea de mantenimiento (explicado primera frase de la respuesta), segundo que me carguen a mí la responsabilidad de arreglar las PU cuando a los usuarios afectados les llegará la notificación y pueden optar por arreglar ellos el formato de sus propias páginas, pueden colaborar también, no (el usuario que vino ni siquiera se ocupó de revisar los errores de sus PU's, qué fácil es quejarse así)? Y tercero, porque hay errores que a mi juicio son imposibles de solucionar sin eliminar las etiquetas, requeriría ir a buscar a cada uno de los usuarios y preguntarles cuál fue su intención en ese momento de haber usado la etiqueta para saber en dónde hay que cerrarla. Todavía no me termina de cerrar tu propuesta. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 23:03 2 abr 2026 (UTC)
:::@[[Usuario:Tmagc|Tmagc]]: de acuerdo, hay cosas que conviene corregir antes que otras, ahí viene bien que el sistema las categorice por su prioridad. De vez en cuando reviso esas listas en plwiktionary y, francamente, cuando veo resultados en el espacio de usuario (o su discusión), casi siempre los ignoro, que cada cual se haga responsable de poner orden en su propia casa (y si renderiza mal, pues es su problema). Mi observación anterior incidía en el hecho de que borraste etiquetas válidas tratando de corregir otras que no lo eran. [[Usuario:Peter Bowman|Peter Bowman]] ([[Usuario discusión:Peter Bowman|discusión]]) 09:50 3 abr 2026 (UTC)
== re:votación reciente sobre firmas ==
Hola Tmagc, gracias por el aviso. ¿Podrías reemplazar mis firmas previas por mi firma actual? Ya que ahora la he modificado. Ejecuté el esnípet del artículo de Mediawiki y no me arroja resultados, así que asumo que ahora está corregida ;). — <span style="background:#7EE6CB;color:#5A3696;padding:1px 2px;border-radius:2px">[[User:Genoskill|<span style="font-weight:bold">Genoskill</span>]]</span> ([[User talk:Genoskill|discusión]]) 00:34 17 abr 2026 (UTC)
:@[[Usuario:Genoskill|Genoskill]] Puedo modificar tus firmas. Personalmente me disgusta tu elección porque la combinación de colores queda con poco contraste en el modo oscuro; de ahí el "error" que arroja MediaWiki. La idea es no tapar los escombros con la alfombra porque generalmente cuando salta el error es porque se fuerza un color de fondo que probablemente quedará mal en el otro modo. Pero si eso es lo que querés, así lo voy a hacer. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 00:39 17 abr 2026 (UTC)
:PD: Me desdigo parcialmente, cambié de monitor y no se ve tan mal. Lo que pasa es que en el monitor que trabajo tengo luz cálida xd. Saludos. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 00:41 17 abr 2026 (UTC)
::{{ping|Tmagc}} Ahora que la pruebo en el modo oscuro se ve feísima, jaja. No había probado ese modo antes porque mi tema predeterminado es MonoBook, el cual no tiene modo oscuro. Creo que con mi último ajuste ahora estaría aceptable. De todas formas, ignora mi preferencia y reemplaza mis firmas previas con lo que estimes expedito.— <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]]) 02:01 17 abr 2026 (UTC)
== Eliminación de mis entradas. ==
Hola. Hace unos meses probé a añadir algunas entradas con la ortografía reintegrada del gallego. Fueron eliminadas por ti, y no tengo clara la razón. Fueron suprimidas porque no te gusta el gallego reintegrado, o fue porque el formato era incorrecto? Tengo previsto añadir más entradas con la ortografía reintegrada del gallego y me gustaría que no fuesen eliminadas en el futuro. Gracias. [[Usuario:Kyning|Kyning]] ([[Usuario discusión:Kyning|discusión]]) 14:58 20 may 2026 (UTC)
:@[[Usuario:Kyning|Kyning]] Hola, gracias por contactarme antes de seguir adelante. No me queda claro cómo el concepto de "gallego reintegracionista" tendría cabida en un diccionario. Si nos tomamos en serio la postura, no debería ser lo mismo que portugués, ergo, todas las palabras y grafías "reintegracionistas", irían en realidad bajo el código "pt" y no bajo el código "gl"? [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 15:00 20 may 2026 (UTC)
== Tumba ==
Es comprensible que mi agregado de quinta acepción a Tumba, en
https://es.wiktionary.org/wiki/Especial:Seguimiento?hidepreviousrevisions=1&hidecategorization=1&hideWikibase=1&hideWikifunctions=1&limit=250&days=3&urlversion=2
te haya parecido una muy mala broma, pero de ninguna manera es el caso.
Parece ser tan poco común como acepción que ni siquiera Google la encuentra,
pero es rigurosamente así y puedes oír un buen ejemplo en la segunda canción del disco de PANCHO VIERA - Canciones desde el cuartel, que puedes encontrar en Youtube pero no se me permite publicar directamente el enlace externo.
En otras circunstancias nadie quiere usar el término, pero el conocimiento es conveniente. [[Usuario:Rafael.amen|Rafael.amen]] ([[Usuario discusión:Rafael.amen|discusión]]) 12:09 21 may 2026 (UTC)
== Re: pronunciación ==
Hola, sí, adelante. Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 14:33 21 may 2026 (UTC)
:Hola. Sobre las sílabas, la estructura más común es V, VC, CV, CVC. Los grupos consonánticos son raros; VCC es menos común y CVCC casi no aparece.
:En cuanto a las secuencias vocálicas, en principio son hiáticas, aunque /i/ y /u/ átonas pueden diptongarse en habla rápida.
:Y sobre el acento, lo más frecuente es que sea grave, pero no es totalmente predecible: también hay palabras agudas, esdrújulas e incluso algunas sobreesdrújulas. Las entradas sin tilde en la categoría están asumidas como graves. Según Viegas el acento siempre recae en la penúltima sílaba.
:Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 17:05 21 may 2026 (UTC)
::Hola. Es un tema confuso porque las fuentes no son consistentes. Lo que puedo decir:
::r equivale a /ɾ/
::rr parece ser /ɾ̥/, aunque en Living Dictionaries transcriban esto como /ɬ/. En el Yagankúta equivale a /ɾ/. Yo sigo el alfabeto de Aguilera, así que rr sería dos r seguidas o una r geminada, si es que existe.
::rh es /ɻ/ (Salas, Wikipedia en inglés) o /ɹ/ (Yagankúta, Aguilera). Ambos símbolos se han usado para el mismo sonido.
::ř solo aparece en el Yagankúta y el Yapimata, y sí, representa algo como /ɻʃ/ o /ɹʃ/.
::La discrepancia entre Wikipedia en español e inglés seguro refleja esa misma inconsistencia entre fuentes. Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 17:57 22 may 2026 (UTC)
== Módulo yagán ==
Hola, encontré un problema con el módulo: trata las consonantes geminadas como dos consonantes separadas. En yagán las consonantes geminadas son frecuentes, así que afecta a muchas entradas. ¿Se puede ajustar? Saludos. [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 21:55 22 may 2026 (UTC)
:Hola. Por ejemplo šönnu o töllúša. En estas palabras las consonantes dobles (nn, ll, mm, pp, tt, kk, ss, šš, ff si es que ocurre) deberían tratarse como geminadas, no como dos sílabas separadas. Por ejemplo, töllúša es /tə.lːu.ɕa/ no /təl.lu.ɕa/" [[Usuario:Egaina|Egaina]] ([[Usuario discusión:Egaina|discusión]]) 16:37 23 may 2026 (UTC)
== Transliteración y diacríticos en etimología ==
Por un rato ya, he estado viendo cómo implementar en la plantilla de etimología la transliteración automática y la redirección de términos con diacríticos a su forma de diccionario, similar a como se hace en Wiktionary.
* <code><nowiki>{{etimología|la|āctor}}</nowiki></code> en lugar de <code><nowiki>{{etimología|la|actor|diacrítico=āctor}}</nowiki></code>
* <code><nowiki>{{etim|ar|قَطِيفَة}}</nowiki></code> en lugar de <code><nowiki>{{etim|ar|قطيفة|diacrítico=قَطِيفَة|tr=qaṭīfah}}</nowiki></code>
(<code>alt=</code> se ignoraría ya que puede ser usado de otras formas)
Estaba viendo cómo hacerlo hasta que me di cuenta de que tú ya lo habías hecho, solo que en las tablas de declinación. Entonces quería ver si tú, que ya conoces el código, veías viable su implementación (y si podrías hacerlo).
En los ejemplos usé el árabe, pero creo que ese ejemplo aún no se podría realizar, un ejemplo mejor sería el griego antiguo que ya tenemos su transliteración en las tablas de declinación. [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 14:56 2 jul 2026 (UTC)
:@[[Usuario:Raos10|Raos10]] Pues es un trabajo importante para hacer. En principio unificaria las funciones que haya ahora a submódulos, por ejemplo Módulo:normalizar/xx. El tema es que en varios idiomas las convenciones son las mismas, por ejemplo los idiomas que usan el cirílico suelen escribirse igual que el ruso y entonces podríamos hacer Módulo:normalizar/Cyrl, Módulo:normalizar/Latn, etc. Entonces: si existe función especifica para un idioma, esta debe sobreescribir las funciones fe los scripts. Sino la hay, hay que detectar el script y usar la función de script correspondiente. Habría que estudiar el tema con más profundidad, yo creo que para Cyrl y alfabeto griego podría ser la misma normalización para casi todo. Sin embargo sería mals idea normalizar Latn y habría que hacerlo únicamente a nivel de idioma. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:02 2 jul 2026 (UTC)
:Posdata: además en el caso del latín para con las lenguas romances, creo que de todas formas quedaría manual puesto que lo correcto sería mostrar el genitivo/infinitivo (las formas que se heredaron) y enlazar al nominativo/1sp (formas canónicas). [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 20:02 3 jul 2026 (UTC)
::Una disculpa, había estado algo ocupado. Sí, es un tema que se tiene que premeditar. He continuado tratando de descifrar cómo lo hace Wiktionary y he encontrado que es algo bastante enrevesado, pero supongo que es natural si se busca adaptarse de mejor manera a cada idioma...
::Creo que es mejor crear módulos separados para cada función en vez de agruparlos en un solo módulo (creo que a eso te referías con lo del módulo "normalizar"). Es decir, un módulo para transliterar y otro para separar diacríticos. Así como dijiste, habría módulos por Escritura o Idioma; el de Escritura sería el ''fallback'' por si no hay datos específicos de idioma y el objeto de idioma lo permite. Así como Wiktionary, esos datos y métodos estarían en los objetos de Escrituras e Idiomas; también habría una función que detecte la Escritura, esto sería especialmente útil para idiomas que tengan varias escrituras.
::Para idiomas que tienen reglas más sencillas, Wiktionary pone directamente las reglas en las propiedades del objeto de idioma en vez de tener un módulo completo, creo que esto tiene sentido. Así p. ej., simplemente se dice que los símbolos [´, ¨] se quitan, excepto del carácter [ü]. Y ya el método en el objeto de idioma determina si ejecuta las reglas, llama al módulo específico de Idioma o llama al módulo de la Escritura. Según ellos mismos, tienen muchas casos en que las reglas podrían eliminarse y que simplemente se llame al módulo de la Escritura, así que tal vez deberíamos revisar antes de copiar todo (o no).
::(Tal vez ya lo sabías y estoy repitiendo lo que dijiste, pero es para evitar obviar y me ayuda a tenerlo más claro jaja)
::Sobre lo que dices del latín, sí, lo más correcto sería escribir manualmente la forma de diccionario y utilizar "alt=", pero lo de quitar los diacríticos y transliterar aún estaría habilitado. [[Usuario:Raos10|Raos10]] ([[Usuario discusión:Raos10|discusión]]) 19:31 22 jul 2026 (UTC)
== Sobre el borrado de «[[:Plantilla:xib-pron]]» ==
Hola, he sido notificado por la [[Usuario discusión:CarpetanoComplutense#Notificación de borrado rápido en «Plantilla:xib-pron»|eliminación]] de esta plantilla que creé ayer. Me disculpo por que no cumpliera con la política de borrado; estaba tratando de exportar [https://ca.wiktionary.org/wiki/Plantilla:xib-pron otra plantilla del Wikcionario en catalán] para la interpretación AFI de las palabras en [[:Categoría:Íbero|lengua ibérica]], pero no había contado con que se pudiera integrar perfectamente en ''[[Plantilla:pron-graf|pron-graf]]''.
Resulta que también había pensado en transferir [https://ca.wiktionary.org/wiki/M%C3%B2dul:xib-trans este módulo] para la transliteración a escritura ibérica nororiental, pero también he observado que ''[[Plantilla:pron-graf|pron-graf]]'' dispone de apartados para [[Plantilla:pron-graf#Transliteraciones|transliteraciones]] y [[Plantilla:pron-graf#Escrituras alternativas|escrituras alternativas]]. En este sentido, para no cometer el mismo error que con la plantilla que creé ayer, ¿debería tratar de integrarlo en uno de esos apartados?
Muchas gracias. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 16:22 19 jul 2026 (UTC)
:@[[Usuario:CarpetanoComplutense|CarpetanoComplutense]] Ya agregué el módulo [[Módulo:generar-pron/xib]] para que sea invocado automáticamente por [[Módulo:pron-graf]]. {{ep|pron-graf}} es lo que debe usarse para la pronunciación. En cuanto a la transliteración, como no tiene script en Unicode, prefiero que no aparezca dentro de {{ep|pron-graf}}, aunque sería posible crear {{ep|xib.esc}} similar a como se hizo con {{ep|egy.jero}} para cubrir ese propósito como en [[ḫd]]. Por lo demás deberías ver cómo se implementó el resto de módulos para el resto de idiomas y replicarlo. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 16:31 19 jul 2026 (UTC)
::Entendido, muchas gracias por la respuesta. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 16:52 19 jul 2026 (UTC)
== Sobre los formadores antroponímicos en lengua ibérica ==
Hola, he visto que transferiste el elemento ''[[inte-]]'' a una nueva página. Agradezco la modificación, ya que en este caso particular solo ha sido atestiguado al principio de ciertos antropónimos (''Indíbil'' y quizás ''Indortes'', ''Indalecio'' e ''Indalo'') y, por lo tanto, es bastante acertado agregarle un guión en esa posición.
Sin embargo, tengo una duda sobre algunas raíces ibéricas que tengo pensado añadir. Existen otras que pueden encontrarse tanto al principio como al final del nombre, como bien puede ser ''bilos'' en ''[[Talskubilos]]'' y ''[[Bilostibaś]]''. ¿Debería crear 2 páginas diferentes (''[[-bilos]]'' y ''[[bilos-]]'') en esos casos?
Muchas gracias. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 21:37 21 jul 2026 (UTC)
:@[[Usuario:CarpetanoComplutense|CarpetanoComplutense]] En principio sí. Si no existe solo ([[bilos]], sin ser parte de compuestos) sería prefijo, infijo, o sufijo. Si no, sería válido agregarlo como raíz. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 22:27 21 jul 2026 (UTC)
::Efectivamente, hay algunos elementos como este que solo han sido hallados en nombres, nunca por separado. Con lo cual, crearé sendas páginas. Gracias por la aclaración. [[Usuario:CarpetanoComplutense|CarpetanoComplutense]] ([[Usuario discusión:CarpetanoComplutense|discusión]]) 22:50 21 jul 2026 (UTC)
== Conjugación en catalán ==
Hola. Hay un error en este módulo de conjugación: el pretérito perifrástico (tanto en indicativo como en subjuntivo) se debe formar con el auxiliar + la forma de infinitivo (no la del participio). Ejemplos: vaig eixir, vagi eixir, vaja eixir. [[Usuario:26agcp|26agcp]] ([[Usuario discusión:26agcp|discusión]]) 00:44 26 jul 2026 (UTC)
:@[[Usuario:26agcp|26agcp]] Solucionado, gracias por avisar. [[Usuario:Tmagc|Tmagc]] ([[Usuario discusión:Tmagc|discusión]]) 05:11 26 jul 2026 (UTC)
oifgb8njfp3wef262gcg1i4bll7apia
posadolescente
0
1016924
6123977
5717944
2026-07-25T20:58:20Z
Tmagc
158167
Tmagc trasladó la página [[posadolecente]] a [[posadolescente]]
5717944
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|la|adolescens}}, participio de presente de {{l+|la|adolescere}}, "[[madurar]], [[hacer]]se [[adulto]]", de {{l+|la|ad}} y {{l+|la|alescere}}, "[[crecer]]", y este incoativo de {{l+|la|alere}}, "[[criar]]", del protoindoeuropeo {{l+|ine-pro|*h₂el-}}- y {{l+|la|post}} del latín "después".
=== {{sustantivo masculino|es}} ===
=== {{adjetivo|es}} ===
{{es.adj|ng}}
;1: Joven recién pasado la adolescencia.
{{uso|utcs}}.
=== Véase también ===
{{w|Adultez emergente y adultez temprana}}
=== Traducciones ===
{{trad-arriba}}
{{t|en|a1=1|t1=postadolescent}}
{{trad-abajo}}
== Referencias y notas ==
<references />
ckdj421a0qrtnx8l7wdqtif1ipwc1kr
6123979
6123977
2026-07-25T20:59:08Z
Tmagc
158167
6123979
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-adolescente}}
=== Etimología ===
{{etimología|prefijo|pos|adolescente}}.
=== {{sustantivo masculino y femenino|es}} ===
{{es.sust|mf}}
;1: Joven recién pasado la adolescencia.
{{uso|utca}}
=== Véase también ===
{{w|Adultez emergente y adultez temprana}}
=== Traducciones ===
{{trad-arriba}}
{{t|en|a1=1|t1=postadolescent}}
{{trad-abajo}}
== Referencias y notas ==
<references />
s8dpxaoe1npv1rc31bzcw3l8w1gkytp
6123980
6123979
2026-07-25T20:59:52Z
Tmagc
158167
6123980
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-adolescente}}
=== Etimología ===
{{etimología|prefijo|pos|adolescente}}.
=== {{sustantivo masculino y femenino|es}} ===
{{es.sust|mf}}
;1: Joven que transita la [[posadolescencia]].
{{uso|utca}}
=== Traducciones ===
{{trad-arriba}}
{{t|en|a1=1|t1=postadolescent}}
{{trad-abajo}}
== Referencias y notas ==
<references />
8j1f5kd71gr5u3lf906jbmypor61et1
Módulo:generar-pron/es
828
1027433
6123963
6121473
2026-07-25T20:40:24Z
Tmagc
158167
6123963
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 [[Apéndice:ES:Referencia/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",
"infra",
"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",
"bien",
"cis",
"con",
"des", -- pero no dis
"en",
"in",
"mal",
"pan",
"pos",
"sin",
"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.."h?[lraeiouáéíóú]") then -- sub + l/r/vocal
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
mzji5gp77d375i570mzjrhqlyhphiet
6123983
6123963
2026-07-25T21:08:21Z
Tmagc
158167
6123983
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 gsubb = m_str.gsubb
local gsubrep = m_str.gsubrep
local split = m_str.split
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 [[Apéndice:ES:Referencia/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",
"infra",
"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",
"bien",
"cis",
"con",
"des", -- pero no dis
"en",
"in",
"mal",
"pan",
"pos",
"sin",
"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 find(tit, "^"..pref.."h?[lraeiouáéíóú]") then -- sub + l/r/vocal
trazar("es-prefijos")
end
end
for _,pref in ipairs(PREFIJOS_AEO) do
if find(tit, "^"..pref.."h?[iu]") then
trazar("es-prefijos")
end
end
for _,pref in ipairs(PREFIJOS_I) do
if find(tit, "^"..pref.."h?[aeouáéóú]") then
trazar("es-prefijos")
end
end
for _,pref in ipairs(PREFIJOS_NS) do
if find(tit, "^"..pref.."h?[aeiouáéíóú]") then
trazar("es-prefijos")
end
end
for _,pref in ipairs(PREFIJOS_R) do
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
lmtmh4qa9guor689uipg67uv9v7qlb4
10.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000
0
1028280
6124173
5284448
2026-07-26T05:15:36Z
Tmagc
158167
6124173
wikitext
text/x-wiki
== {{lengua|mul}} ==
{{pron-graf|leng=mul|ea=10 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000|e2=10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 000,000,000,000,000}}
=== {{símbolo|mul}} ===
;1: Un [[gúgol]]; 10 elevado a la 100; 10<sup>100</sup>.
== Referencias y notas ==
<references />
1jb0gbgubw6natblk0vkwhpbrako96k
10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 000,000,000,000,000
0
1028281
6124081
5284580
2026-07-26T04:20:00Z
TMCbot
164594
.
6124081
wikitext
text/x-wiki
== {{lengua|mul}} ==
{{pron-graf|leng=mul|ea=10.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000|e2=10 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000}}
=== {{símbolo|mul}} ===
;1: Un [[gúgol]]; 10 elevado a la 100; 10<sup>100</sup>.
== Referencias y notas ==
<references />
8kqpjd28cf08m7el60zelqvw05nt3hz
Módulo:etimología
828
1030792
6123721
6122093
2026-07-25T19:04:38Z
Tmagc
158167
6123721
Scribunto
text/plain
local export = {}
local insert = table.insert
local concat = table.concat
local m_str = require("Módulo:string")
local sub = m_str.sub
local len = m_str.len
local gsub = m_str.gsub
local find = m_str.find
local upper = m_str.upper
local lower = m_str.lower
local ucfirst = function(s) return upper(sub(s, 1, 1))..sub(s, 2) end
local lcfirst = function(s) return lower(sub(s, 1, 1))..sub(s, 2) end
local obtener_idioma = require("Módulo:lenguas").cod_a_idioma
local generar_error = require("Módulo:traza")
local sortkey = require("Módulo:sortkey").generarSortkey
-- por ahora sin uso
--local function normalizar_cat(x)
-- if x == "latín" then
-- return "latino"
-- end
-- return x
--end
-- Equivalente de l+
local function l_iteracion(p, Idioma, num, tr, alt, glosa, glosa_alt, nl, nlglosa)
if not p then
return ""
end
local t = {}
if p:find("[^a-zA-ZÀ-ž-]+$") then
generar_error("etimo")
end
if nl then
insert(t, alt and " "..alt or " ''"..p.."''")
else
insert(t, " [["..p.."#"..Idioma..(num and " "..num or "").."|''"..(alt and alt or p).."'']]")
end
if num then
insert(t, "<sub>"..num.."</sub>")
end
if glosa then
if nlglosa then
glosa = "[["..glosa.."#Español|\'"..(glosa_alt and glosa_alt or glosa).."\']]"
else
glosa = "\'"..(glosa_alt and glosa_alt or glosa).."\'"
end
end
if tr or glosa then
insert(t, " (")
if tr then
insert(t, "''"..tr.."''")
if glosa then
insert(t, ", "..glosa)
end
else
insert(t, glosa)
end
insert(t, ")")
end
return concat(t)
end
local function l_palabras(t, args, i_, l_, k_, sufijo)
local i = i_ or 2
local l = l_ or #args
local k = k_ or 1
local poner_coma = false
while i <= l do
if poner_coma then
if i == #args then
if (args["e"] and args["e"] ~= "") or find(args[i], "^%-?[ií]") then
insert(t, " e")
else
insert(t, " y")
end
else
insert(t, ",")
end
end
insert(t, l_iteracion(args[i], args["Idioma"], args["num"][k], args["tr"][k], args["alt"][k], args["glosa"][k], args["glosa-alt"][k], args["nl"][k], args["nlglosa"][k]))
if sufijo then
insert(t, sufijo) -- caso de las marcas registradas
end
i = i + 1
k = k + 1
poner_coma = true
end
end
local function compuesto(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Compuesto")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
insert(t, " de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por composición|"..sk.."]]")
if args["nota"] == "acronímico" then
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por composición acronímica|"..sk.."]]")
elseif args["nota"] == "cruce" then
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por cruce|"..sk.."]]")
end
end
return concat(t)
end
local function cruce(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Cruce")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
insert(t, " de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por cruce|"..sk.."]]")
end
return concat(t)
end
local function acronimo(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Acrónimo")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
insert(t, " de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por composición acronímica|"..sk.."]]")
end
return concat(t)
end
local function expresiva(args)
local t = {}
insert(t, "Voz [[expresión|expresiva]]")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen expresivo|"..sk.."]]")
end
return concat(t)
end
local function regresiva(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Derivación regresiva de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por derivación regresiva|"..sk.."]]")
end
return concat(t)
end
local function metatesis(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Metátesis"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por metátesis|"..sk.."]]")
end
return concat(t)
end
local function paronomasia(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Paronomasia"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por paronomasia|"..sk.."]]")
end
return concat(t)
end
local function fonetica(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Alteración fonética"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por alteración fonética|"..sk.."]]")
end
return concat(t)
end
local function acortamiento(args)
local t = {}
insert(t, "Acortamiento")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
if args[2] and args[2] ~= "" then
insert(t, " de")
l_palabras(t, args)
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por acortamiento|"..sk.."]]")
end
return concat(t)
end
local function apocope(args)
local t = {}
insert(t, "Apócope")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
if args[2] and args[2] ~= "" then
insert(t, " de")
l_palabras(t, args)
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por acortamiento|"..sk.."]]")
end
return concat(t)
end
local function sincopa(args)
local t = {}
insert(t, "Síncopa")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
if args[2] and args[2] ~= "" then
insert(t, " de")
l_palabras(t, args)
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por acortamiento|"..sk.."]]")
end
return concat(t)
end
local function aferesis(args)
local t = {}
insert(t, "Aféresis")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
if args[2] and args[2] ~= "" then
insert(t, " de")
l_palabras(t, args)
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por acortamiento|"..sk.."]]")
end
return concat(t)
end
local function abreviatura(args)
local t = {}
insert(t, "Abreviatura")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
if args[2] and args[2] ~= "" then
insert(t, " de")
l_palabras(t, args)
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Abreviaturas|"..sk.."]]")
end
return concat(t)
end
local function sigla(args)
local t = {}
insert(t, "Sigla")
if args["nota"] and args["nota"] ~= "" then
insert(t, " ("..args["nota"]..")")
end
if args[2] and args[2] ~= "" then
insert(t, " de")
l_palabras(t, args)
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Siglas|"..sk.."]]")
end
return concat(t)
end
local function diminutivo(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Diminutivo"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
-- insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijo diminutivo|"..sk.."]]")
end
return concat(t)
end
local function aumentativo(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Aumentativo"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
-- insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijo aumentativo|"..sk.."]]")
end
return concat(t)
end
local function sufijo(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
if sub(args[3], 1, 1) ~= "-" then
args[3] = "-"..args[3]
end
local t = {}
insert(t, "De")
l_palabras(t, args, 2, 2, 1)
insert(t, " y el sufijo")
l_palabras(t, args, 3, 3, 2)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el sufijo "..args[3].."|"..sk.."]]")
end
return concat(t)
end
local function prefijo(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
local L = len(args[2])
if sub(args[2], L, L) ~= "-" then
args[2] = args[2].."-"
end
local t = {}
insert(t, "Del prefijo")
l_palabras(t, args, 2, 2, 1)
if find(args[3], "^%-?[ií]") then
insert(t, " e")
else
insert(t, " y")
end
l_palabras(t, args, 3, 3, 2)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por prefijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el prefijo "..args[2].."|"..sk.."]]")
end
return concat(t)
end
local function infijo(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
if sub(args[3], 1, 1) ~= "-" then
args[3] = "-"..args[3]
end
local L = len(args[3])
if sub(args[3], L, L) ~= "-" then
args[3] = args[3].."-"
end
local t = {}
insert(t, "De")
l_palabras(t, args, 2, 2, 1)
insert(t, " y el infijo")
l_palabras(t, args, 3, 3, 2)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por infijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el infijo "..args[3].."|"..sk.."]]")
end
return concat(t)
end
local function confijo(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
local L = len(args[2])
if sub(args[2], L, L) ~= "-" then
args[2] = args[2].."-"
end
local t = {}
insert(t, "Del prefijo")
l_palabras(t, args, 2, 2, 1)
if args[4] and args[4] ~= "" then
insert(t, ",")
l_palabras(t, args, 3, 3, 2)
if sub(args[4], 1, 1) ~= "-" then
args[4] = "-"..args[4]
end
insert(t, " y el sufijo")
l_palabras(t, args, 4, 4, 3)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por prefijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el prefijo "..args[2].."|"..sk.."]]")
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el sufijo "..args[4].."|"..sk.."]]")
end
else
if sub(args[3], 1, 1) ~= "-" then
args[3] = "-"..args[3]
end
insert(t, " y el sufijo")
l_palabras(t, args, 3, 3, 2)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por prefijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el prefijo "..args[2].."|"..sk.."]]")
--insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijación|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el sufijo "..args[3].."|"..sk.."]]")
end
end
return concat(t)
end
local function onomatopeya(args)
local t = {}
insert(t, "Onomatopéyica")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen onomatopéyico|"..sk.."]]")
end
return concat(t)
end
local function incierta(args)
local t = {}
insert(t, "De origen incierto")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen incierto|"..sk.."]]")
end
return concat(t)
end
local function eponimo(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Epónimo: "..args[2])
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen epónimo|"..sk.."]]")
end
return concat(t)
end
local function pronominal(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "De")
l_palabras(t, args, 2, 2, 1)
insert(t, " con el [[pronombre reflexivo]] [[átono]]")
return concat(t)
end
local function femenino(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
if args[3] and sub(args[3],1,1) ~= "-" then
args[3] = "-"..args[3]
end
local t = {}
insert(t, "De")
l_palabras(t, args, 2, 2, 1)
insert(t, " y el [[sufijo flexivo]]")
if args[3] then
if sub(args[3],1,1) ~= "-" then
args[3] = "-"..args[3]
end
l_palabras(t, args, 3, 3, 2)
else
insert(t, " -a")
end
insert(t, " para el femenino")
return concat(t)
end
local function masculino(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
if args[3] and (sub(args[3],1,1) ~= "-") then
args[3] = "-"..args[3]
end
local t = {}
insert(t, "De")
l_palabras(t, args, 2, 2, 1)
insert(t, " y el [[sufijo flexivo]]")
if args[3] then
if sub(args[3],1,1) ~= "-" then
args[3] = "-"..args[3]
end
l_palabras(t, args, 3, 3, 2)
else
insert(t, " -o")
end
insert(t, " para el masculino")
return concat(t)
end
local function plural(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
if args[3] and sub(args[3],1,1) ~= "-" then
args[3] = "-"..args[3]
end
local t = {}
insert(t, "De")
l_palabras(t, args, 2, 2, 1)
insert(t, " y el [[sufijo flexivo]]")
if args[3] then
if sub(args[3],1,1) ~= "-" then
args[3] = "-"..args[3]
end
l_palabras(t, args, 3, 3, 2)
else
insert(t, " -s")
end
insert(t, " para el plural")
return concat(t)
end
local function participio(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Participio"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijo participio|"..sk.."]]")
end
return concat(t)
end
local function participio_activo(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Participio activo"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Participios activos lexicalizados|"..sk.."]]")
end
return concat(t)
end
local function participio_pasivo(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Participio pasivo"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Participios pasivos lexicalizados|"..sk.."]]")
end
return concat(t)
end
local function lexicalizacion(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Lexicalización"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por lexicalización|"..sk.."]]")
end
return concat(t)
end
local function denominal(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Denominal"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijo denominal|"..sk.."]]")
end
return concat(t)
end
local function deadjetival(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Deadjetival"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijo deadjetival|"..sk.."]]")
end
return concat(t)
end
local function deverbal(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Deverbal"..(args["nota"] and " ("..args["nota"]..")" or "").." de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por sufijo deverbal|"..sk.."]]")
end
return concat(t)
end
local function calco(args)
assert(args[2] and args[3], "El número de argumentos recibidos es insuficiente")
local t = {}
local id = (obtener_idioma(args[2]))[1]
local Id = ucfirst(id)
insert(t, "Calco"..(args["nota"] and " ("..args["nota"]..")" or "").." del "..id)
if (not args["glosa"][1]) and args[4] then -- En la versión anterior hacía esto sólo para esta función, por qué?
args["glosa"][1] = args[4]
end
insert(t, l_iteracion(args[3], Id, args["num"][1], args["tr"][1], args["alt"][1], args["glosa"][1], args["glosa-alt"][1], args["nl"][1], args["nlglosa"][1]))
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras formadas por calco|"..sk.."]]")
insert(t, "[[Categoría:"..args["LENG"]..":Palabras provenientes del "..id.."|"..sk.."]]")
end
return concat(t)
end
local function marca(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
local L = #args
if L > 2 then
insert(t, "De las marcas registradas")
else
insert(t, "De la marca registrada")
end
args["nl"][1] = true
l_palabras(t, args, 2, L, 1, "<sup>®</sup>")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de marcas registradas|"..sk.."]]")
end
return concat(t)
end
local function dialecto_de_ojo(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Dialecto del ojo "..(args["nota"] and " ("..args["nota"]..")" or "").." para")
l_palabras(t, args)
return concat(t)
end
local function artificial(args)
generar_error("invento")
local t = {}
if args[2] then
insert(t, "Término artificial, inventado por "..args[2])
else
insert(t, "Palabra artificial")
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras artificales|"..sk.."]]")
end
return concat(t)
end
local function autor(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Acuñado por "..args[2])
return concat(t)
end
local function popularizado_por(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Populariazado por "..args[2])
return concat(t)
end
local function metaforica(args)
local t = {}
insert(t, "De origen metafórico")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen metafórico|"..sk.."]]")
end
return concat(t)
end
local function metonimica(args)
local t = {}
insert(t, "De origen metonímico")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen metonímico|"..sk.."]]")
end
return concat(t)
end
local function biblica(args)
local t = {}
insert(t, "De origen bíblico")
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de origen bíblico|"..sk.."]]")
end
return concat(t)
end
local function sumadepartes(args)
error("Parámetro obsoleto (utilice “no aplica” en su lugar)")
end
local function raiz(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
if args[3] then
insert(t, args[3].." de la raíz")
args[3] = nil
else
insert(t, "De la raíz")
end
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras de la raíz "..args[2].."|"..sk.."]]")
end
return concat(t)
end
local function grafia(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Grafía alternativa de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras endógenas".."|"..sk.."]]")
end
return concat(t)
end
local function variante(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Variante de")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras endógenas".."|"..sk.."]]")
end
return concat(t)
end
local function vease(args)
assert(args[2], "El número de argumentos recibidos es insuficiente")
local t = {}
insert(t, "Véase")
l_palabras(t, args)
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
insert(t, "[[Categoría:"..args["LENG"]..":Palabras endógenas".."|"..sk.."]]")
end
return concat(t)
end
local function noaplica(args)
local s = args["tit"]
s = gsub(s, "%S+", "[[%0]]")
s = gsub(s, "%]%s+%[", "] + [")
return s
end
local function origen(args, cat)
assert(args[1], "El número de argumentos recibidos es insuficiente")
local t = args[1] == "endo" and {"De "} or {"Del "}
local i = 1
local L = 1
for k,v in pairs(args) do -- no puedo hacer #args porque hay huecos entre medio
if type(k) == "number" and k > L then
L = k
end
end
local idioma = ""
local idioma_d = ""
local Idioma = ""
while true do
local nuevo_idioma = nil
if args[3*i-2] == "sufijo" then
nuevo_idioma = "sufijo"
if args[3*i-1] and sub(args[3*i-1], 1, 1) ~= "-" then
args[3*i-1] = "-"..args[3*i-1]
end
elseif args[3*i-2] == "prefijo" then
nuevo_idioma = "prefijo"
if args[3*i-1] then
local L_ = len(args[3*i-1])
if sub(args[3*i-1], L_, L_) ~= "-" then
args[3*i-1] = args[3*i-1].."-"
end
end
elseif args[3*i-2] == "endo" or args[3*i-2] == "ENDO" or args[3*i-2] == "endógeno" or args[3*i-2] == "endógena" then
nuevo_idioma = "endo"
assert(args[3*i-1], "el número de argumentos recibidos es insuficiente")
else
nuevo_idioma = obtener_idioma(args[3*i-2])[1]
end
local nuevo_idioma_d = nuevo_idioma..(args["d"][i] and " ("..args["d"][i]..")" or "")
if nuevo_idioma_d ~= idioma_d then
idioma = nuevo_idioma
idioma_d = nuevo_idioma_d
Idioma = ucfirst(idioma)
if i > 1 then
insert(t, idioma == "endo" and " de " or " del ")
end
if idioma ~= "endo" then
insert(t, idioma_d)
end
end
if idioma ~= "endo" then
insert(t, l_iteracion(args[3*i-1], Idioma, args["num"][i], args["tr"][i], args["alt"][i], args["glosa"][i] and args["glosa"][i] or args[3*i], args["glosa-alt"][i], args["nl"][i], args["nlglosa"][i]))
else
insert(t, l_iteracion(args[3*i-1], args["Idioma"], args["num"][i], args["tr"][i], args["alt"][i], args["glosa"][i] and args["glosa"][i] or args[3*i], args["glosa-alt"][i], args["nl"][i], args["nlglosa"][i]))
end
if args["ns"] == 0 then
local sk = sortkey(args["tit"], args["leng"], args["idioma_obj"])
if cat then
if idioma == "sufijo" then
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el sufijo "..args[3*i-1].."|"..sk.."]]")
elseif idioma == "prefijo" then
insert(t, "[[Categoría:"..args["LENG"]..":Palabras con el prefijo "..args[3*i-1].."|"..sk.."]]")
elseif idioma == "endo" then
insert(t, "[[Categoría:"..args["LENG"]..":Palabras endógenas".."|"..sk.."]]")
else
insert(t, "[[Categoría:"..args["LENG"]..":Palabras provenientes del "..idioma.."|"..sk.."]]")
end
end
end
i = i + 1
if 3*i-2 > L then
break
end
if 3*i-2 >= L-2 then
if (args["e"] and args["e"] ~= "") or (args[3*i-2] == args[3*i-5] and args[3*i-1] and find(args[3*i-1], "^%-?i")) then
insert(t, " e")
else
insert(t, " y")
end
else
insert(t, ",")
end
end
return concat(t)
end
local callbacks = {
["compuesto"] = compuesto,
["compuesta"] = compuesto,
["COMP"] = compuesto,
["cruce"] = cruce,
["acronimo"] = acronimo,
["acrónimo"] = acronimo,
["voz expresiva"] = expresiva,
["expresiva"] = expresiva,
["EXPR"] = expresiva,
["derivación regresiva"] = regresiva,
["regresiva"] = regresiva,
["REG"] = regresiva,
["metátesis"] = metatesis,
["trasposición"] = metatesis,
["vesre"] = metatesis,
["MET"] = metatesis,
["fone"] = fonetica,
["FONE"] = fonetica,
["fonética"] = fonetica,
["alteración fonética"] = fonetica,
["adición"] = fonetica,
["epéntesis"] = fonetica,
["prótesis"] = fonetica,
["metaplasmo"] = fonetica,
["FON"] = fonetica,
["acortamiento"] = acortamiento,
["apócope"] = apocope,
["apocope"] = apocope,
["síncopa"] = sincopa,
["sincopa"] = sincopa,
["síncope"] = sincopa,
["sincope"] = sincopa,
["aféresis"] = aferesis,
["aferesis"] = aferesis,
["abreviación"] = abreviatura,
["abreviatura"] = abreviatura,
["sigla"] = sigla,
["siglas"] = sigla,
["supresión"] = acortamiento,
["acort"] = acortamiento,
["ACORT"] = acortamiento,
["diminutivo"] = diminutivo,
["dimi"] = diminutivo,
["DIMI"] = diminutivo,
["aumentativo"] = aumentativo,
["aume"] = aumentativo,
["AUME"] = aumentativo,
["sufijo"] = sufijo,
["SUF"] = sufijo,
["prefijo"] = prefijo,
["PREF"] = prefijo,
["infijo"] = infijo,
["INF"] = infijo,
["confijo"] = confijo,
["circunfijo"] = confijo,
["CIRCUNF"] = confijo,
["CONF"] = confijo,
["onomatopeya"] = onomatopeya,
["onomatopéyico"] = onomatopeya,
["onomatopéyica"] = onomatopeya,
["paronomasia"] = paronomasia,
["paranomasia"] = paronomasia,
["onom"] = onomatopeya,
["ONOM"] = onomatopeya,
["incierto"] = incierta,
["incierta"] = incierta,
["INC"] = incierta,
["epónimo"] = eponimo,
["epónima"] = eponimo,
["epon"] = eponimo,
["EPON"] = eponimo,
["pronominal"] = pronominal,
["PRON"] = pronominal,
["femenino"] = femenino,
["masculino"] = masculino,
["FEM"] = femenino,
["plural"] = plural,
["PLUR"] = plural,
["participio"] = participio,
["part"] = participio,
["PART"] = participio,
["participio activo"] = participio_activo,
["participio_activo"] = participio_activo,
["participio pasivo"] = participio_pasivo,
["participio_pasivo"] = participio_pasivo,
["lexicalización"] = lexicalizacion,
["lexi"] = lexicalizacion,
["LEXI"] = lexicalizacion,
["denominal"] = denominal,
["denom"] = denominal,
["DENOM"] = denominal,
["deadjetival"] = deadjetival,
["deadj"] = deadjetival,
["DEADJ"] = deadjetival,
["deverbal"] = deverbal,
["deverb"] = deverbal,
["DEVERB"] = deverbal,
["calco"] = calco,
["CALC"] = calco,
["marca"] = marca,
["dialecto de ojo"] = dialecto_de_ojo,
["dialecto del ojo"] = dialecto_de_ojo,
--["endógeno"] = endogena,
--["endógena"] = endogena,
--["endo"] = endogena,
--["ENDO"] = endogena,
["grafía"] = grafia,
["grafia"] = grafia,
["variante"] = variante,
["véase"] = vease,
["vease"] = vease,
["artificial"] = artificial,
["invento"] = artificial,
["autor"] = autor,
["acuñado"] = autor,
["pop"] = popularizado_por,
["popularizado"] = popularizado_por,
["metafórico"] = metaforica,
["metafórica"] = metaforica,
["meta"] = metaforica,
["META"] = metaforica,
["metonímico"] = metonimica,
["metonímica"] = metonimica,
["meto"] = metonimica,
["METO"] = metonimica,
["bíblico"] = biblica,
["bíblica"] = biblica,
["suma de partes"] = sumadepartes,
["suma"] = sumadepartes,
["raíz"] = raiz,
["raiz"] = raiz,
["no aplica"] = noaplica,
}
-- Entrada para {{etimología}}
function export.mostrar(frame)
local title_ = mw.title.getCurrentTitle()
local title = title_.fullText -- no sirve parent_frame:getTitle()
if title == "Plantilla:etimología" then
return "Use esta plantilla en el espacio principal."
end
local params = {
[1] = {},
["e"] = {},
["leng"] = {},
["d"] = {lista=true},
["glosa"] = {lista=true},
["glosa-alt"] = {lista=true},
["nl"] = {lista = true},
["nolink"] = {alias_de="nl"},
["nlglosa"] = {lista = true},
["nolinkglosa"] = {alias_de="nl"},
["num"] = {lista=true},
["núm"] = {alias_de="num"},
["tr"] = {lista=true},
["transcripción"] = {alias_de="tr"},
["tl"] = {alias_de="tr"},
["transliteración"] = {alias_de="tr"},
["alt"] = {lista=true},
["diacrítico"] = {alias_de="alt"},
["nota"] = {},
["tilde"] = {},
["texto-prefijo"] = {},
["otro"] = {},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local e = false
for k,v in ipairs(args) do
if type(v) == "string" and find(v, "[%[%]%{%}%|%=]") then
e = true
break
end
end
for k,v in pairs(args) do
if type(v) == "string" and find(v, "[%[%]%{%}%|%=]") then
e = true
break
end
end
if (args[1] and (find(args[1], " para") or find(args[1], " y"))) or
(args[2] and (find(args[2], " para") or find(args[2], " y"))) then
generar_error("sufijopara")
end
if e then
generar_error("etimo")
end
if args["tilde"] and args["tilde"] ~= "" then
generar_error("tilde")
end
if args["texto-prefijo"] and args["texto-prefijo"] ~= "" then
generar_error("texto-prefijo")
end
if args["otro"] and args["otro"] ~= "" then
generar_error("otro")
end
if not args["leng"] then
args["leng"] = "es"
end
args["LENG"] = args["leng"]:upper()
args["idioma_obj"] = obtener_idioma(args["leng"])
args["idioma"] = args["idioma_obj"][1]
args["Idioma"] = ucfirst(args["idioma"])
args["ns"] = mw.title.getCurrentTitle().namespace
args["tit"] = mw.title.getCurrentTitle().fullText
if not args[1] then
if find(args["tit"], "%S%s+%S") then
return noaplica(args)
else
return frame:extensionTag('span', "''Si puedes, incorpórala: [[Plantilla:etimología|ver cómo]]''"..(args["ns"] == 0 and "[[Categoría:"..args["LENG"]..":Palabras de etimología sin precisar]]" or ""), {class ="notheme", style ="color: green; font-size: 90%;"})
end
end
local cb = callbacks[args[1]]
if not cb or (cb == prefijo and args[4] and args[4] ~= "") then
return origen(args, true)
end
return cb(args)
end
-- Entrada para {{etim}}
function export.mostrar_etim(frame)
local title_ = mw.title.getCurrentTitle()
local title = title_.fullText -- no sirve parent_frame:getTitle()
if title == "Plantilla:etim" then
return "Use esta plantilla en el espacio principal."
end
local params = {
[1] = {},
["e"] = {},
["leng"] = {},
["d"] = {lista=true},
["glosa"] = {lista=true},
["glosa-alt"] = {lista=true},
["nl"] = {lista = true},
["nolink"] = {alias_de="nl"},
["nlglosa"] = {lista = true},
["nolinkglosa"] = {alias_de="nl"},
["num"] = {lista=true},
["núm"] = {alias_de="num"},
["tr"] = {lista=true},
["transcripción"] = {alias_de="tr"},
["tl"] = {alias_de="tr"},
["transliteración"] = {alias_de="tr"},
["alt"] = {lista=true},
["diacrítico"] = {alias_de="alt"},
["nota"] = {},
["tilde"] = {},
["texto-prefijo"] = {},
["otro"] = {},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local e = false
for k,v in ipairs(args) do
if type(v) == "string" and find(v, "[%[%]%{%}%|%=]") then
e = true
break
end
end
for k,v in pairs(args) do
if type(v) == "string" and find(v, "[%[%]%{%}%|%=]") then
e = true
break
end
end
if e then
generar_error("etimo")
end
if args["tilde"] and args["tilde"] ~= "" then
generar_error("tilde")
end
if args["texto-prefijo"] and args["texto-prefijo"] ~= "" then
generar_error("texto-prefijo")
end
if args["otro"] and args["otro"] ~= "" then
generar_error("otro")
end
if not args["leng"] then
args["leng"] = "es"
end
args["LENG"] = args["leng"]:upper()
if not args[1] then
error("El número de parámetros recibidos es insuficiente.")
end
args["idioma_obj"] = obtener_idioma(args["leng"])
args["idioma"] = args["idioma_obj"][1]
args["Idioma"] = ucfirst(args["idioma"])
args["ns"] = mw.title.getCurrentTitle().namespace
args["tit"] = mw.title.getCurrentTitle().fullText
local cb = callbacks[args[1]]
if not cb or (cb == prefijo and args[4] and args[4] ~= "") then
return lcfirst(origen(args, false))
end
return lcfirst(cb(args))
end
function export.etimologia2(frame)
local parent_frame = frame:getParent()
local args = parent_frame.args
local x = args[1]
local PALABRA = "['“”«»‘’\"%[%]%{%}%|a-zA-ZÀ-ž%*%-=]+"
local PREFIJO = "['“”«»‘’\"%[%]%{%}%|a-zA-ZÀ-ž%*%-=]+%-['%]]*"
local SUFIJO = "['%[]*%-['“”«»‘’\"%[%]%{%}%|a-zA-ZÀ-ž%*%-=]+"
if not x or x == "" then
generar_error("vacia")
return frame:extensionTag('span', "''Si puedes, incorpórala: [[Plantilla:etimología|ver cómo]]''"..(args["ns"] == 0 and "[[Categoría:"..args["LENG"]..":Palabras de etimología sin precisar]]" or ""), {class ="notheme", style ="color:green; font-size:90%"})
end
if find(x, "^ *[Dd]e *"..PALABRA.."[%.,:; ]*$") or find(x, "^ *[vV]er *"..PALABRA.."[%.,:; ]*$") or find(x, "^ *[vV].ase *"..PALABRA.."[%.,:; ]*$") then
generar_error("endo")
return x
end
if find(x, "^ *[Dd]el *"..PALABRA.." *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[Dd]el *"..PALABRA.." *"..PALABRA.." *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[Dd]el "..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[Dd]e *origen *"..PALABRA.."[%.,:; ]*$") then
generar_error("origen")
return x
end
if find(x, "^ *[dD]el *prefijo *"..PALABRA.." *y *el *sufijo *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[dD]e *"..PREFIJO.." *[%+y]* *"..SUFIJO.."[%.,:; ]*$") then
generar_error("confijo2")
return x
end
if find(x, "^ *[dD]el *prefijo *"..PALABRA.." *,? *"..PALABRA.." *y *el *sufijo *"..PALABRA.."[%.,:; ]*$") then
generar_error("confijo3")
return x
end
if find(x, "^ *[dD]el *prefijo *"..PALABRA.." *y *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[dD]e *"..PREFIJO.." *[%+y]* *"..PALABRA.."[%.,:; ]*$") then
generar_error("prefijo")
return x
end
if find(x, "^ *[dD]e *"..PALABRA.." *,? *y *el *sufijo *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[dD]e *"..PALABRA.." *%+* *"..SUFIJO.."[%.,:; ]*$") then
generar_error("sufijo")
return x
end
if find(x, "^ *[dD]?e?l? *[Dd]iminutivo *de *"..PALABRA.."[%.,:; ]*$") or find(x, "^ *[dD]e *"..PALABRA.." *,? *y *el *sufijo diminutivo *"..PALABRA.."[%.,:; ]*$") then
generar_error("diminutivo")
return x
end
if find(x, "^ *[dD]?e?l? *[Aa]umentativo *de *"..PALABRA.."[%.,:; ]*$") or find(x, "^ *[dD]e *"..PALABRA.." *,? *y *el *sufijo aumentativo *"..PALABRA.."[%.,:; ]*$") then
generar_error("aumentativo")
return x
end
if find(x, "^ *[cC]ompuesto *de *"..PALABRA.." *y *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[cC]omposici.n *de *"..PALABRA.." *y *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[dD]e *"..PALABRA.." *,? *y *"..PALABRA.."[%.,:; ]*$") then
generar_error("compuesto")
return x
end
if find(x, "^ *[pP]?o?r? *[cC]alco *[Dd]el *"..PALABRA.." *"..PALABRA.."[%.,:; ]*$") then
generar_error("calco")
return x
end
if find(x, "^ *[pP]?o?r? *[mM]et.tesis *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[tT]ran?sposici.n *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[vV]esre *[Dd]e *"..PALABRA.."[%.,:; ]*$") then
generar_error("meta")
return x
end
if find(x, "^ *[pP]?o?r? *[Aa]lteraci.n *[fF]on.tica *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Pp]r.tesis *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Pp]aragoge *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[eE]p.ntesis *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Mm]etaplasmo *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[aA]dici.n *[Dd]e *"..PALABRA.."[%.,:; ]*$") then
generar_error("fone")
return x
end
if find(x, "^ *[pP]?o?r? *[Aa]cortamiento *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Aa]p.cope *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Ss].ncopa *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[aA]f.resis *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Aa]breviaci.n *[Dd]e *"..PALABRA.."[%.,:; ]*$")
or find(x, "^ *[pP]?o?r? *[Aa]breviatura *[Dd]e *"..PALABRA.."[%.,:; ]*$") then
generar_error("abrev")
return x
end
if find(x, "^ *[Dd]?e? *o?r?i?g?e?n? *[Oo]nomatop?.?y?i?c?.? *$") then
generar_error("onom")
return x
end
if find(x, "^ *[Dd]?e? *o?r?i?g?e?n? *[Ee]xpresiv.? *$") then
generar_error("expr")
return x
end
if find(x, "^ *[Dd]?e? *o?r?i?g?e?n? *[Ii]nciert.? *$") then
generar_error("incerta")
return x
end
generar_error("otro")
return x
end
return export
sdhzpeyrehwlxan71okf4jyuzqy9t5u
abalienatio
0
1037551
6123584
5486791
2026-07-25T16:27:31Z
Tmagc
158167
6123584
wikitext
text/x-wiki
== {{lengua|la}} ==
{{pron-graf|leng=la|ayuda=ab-aliēnātiō}}
=== Etimología ===
{{etimología|leng=la}}.
=== {{sustantivo femenino|la}} ===
;1: {{plm|abalienación}}, [[enajenación]].
;2: {{plm|abandono}}.
;3: {{plm|desunión}}, [[división]].
;4: {{plm|aversión}}.
=== Declinación ===
{{la.sust|3.abaliēnātiō}}
== Referencias y notas ==
<references />
5t3a3bydy10gnm2fr43p5nrhh4a0dnt
6123585
6123584
2026-07-25T16:27:46Z
Tmagc
158167
/* Declinación */
6123585
wikitext
text/x-wiki
== {{lengua|la}} ==
{{pron-graf|leng=la|ayuda=ab-aliēnātiō}}
=== Etimología ===
{{etimología|leng=la}}.
=== {{sustantivo femenino|la}} ===
;1: {{plm|abalienación}}, [[enajenación]].
;2: {{plm|abandono}}.
;3: {{plm|desunión}}, [[división]].
;4: {{plm|aversión}}.
=== Declinación ===
{{la.sust|abaliēnātiō.3}}
== Referencias y notas ==
<references />
pe2lwatofo0j885qbeveu9jhzbwbyan
desprolijo
0
1039738
6123988
5761552
2026-07-25T22:04:03Z
Tmagc
158167
6123988
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}} <!--- En el caso del español u otro idioma regular (consultar Plantilla:pron-graf), la plantilla se deja en blanco y la pronunciación se generará automáticamente. Si la palabra es irregular, use el parámetro |ayuda. Ejemplo: rally -> {{pron-graf|ayuda=ralí}}. Si el idioma es considerado irregular, como el inglés, especifique en la plantilla cada transcripción fonética manualmente. Adicionalmente se puede especificar si hay alguna transliteración, grafía alternativa, etc. -->
=== Etimología ===
{{etimología}}. <!-- Para una palabra de otro idioma, utilice {{etimología|(CÓDIGO DE IDIOMA)|(PALABRA)|(SIGNIFICADO)}}. Para elegir otra opción u otro tipo de etimología, consulte la página Plantilla:etimología -->
==== {{adjetivo|es}} ====
{{es.adj}}
<!-- definiciones: borrar todo lo que no sea necesario -->
;1: Sin [[prolijidad]]; sin [[esmero]] ni [[cuidado]].
{{ámbito|Argentina|Bolivia|Chile|Paraguay|Uruguay}}
;2: Dicho de una persona: falto de [[dedicación]], esmero, y cuidado.
{{ámbito|Argentina|Uruguay}}
;3: {{plm|desordenado}}, [[desorganizado]].
{{á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}}
<!-- 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 />
j0jjih4ay41n3xglts4l4g1rl9u8pmw
infraestructura
0
1051002
6123902
5704364
2026-07-25T20:32:25Z
TMCbot
164594
.
6123902
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-estructura}}
=== Etimología ===
{{etimología|prefijo|infra|estructura}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1 {{csem|construcción}}: Parte de un edificio que está en el subsuelo.
;2 {{csem|construcción|arquitectura|ingeniería}}: Conjunto de elementos y servicios necesarios para el funcionamiento de un sistema, fundamentalmente edilicio.
;3 {{csem|política|historia|filosofía}}: En el marxismo, la base material de la sociedad que determina la estructura social, el desarrollo y el cambio social.
{{antónimo|superestructura}}
==== Véase también ====
{{w}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
8nxo8aktfizmgg9gsf6zagacmixf29x
Módulo:flex/ca
828
1055674
6123986
6119216
2026-07-25T21:55:40Z
Tmagc
158167
6123986
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"tenir$"}, { -- y mantenir
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr]r([~#]?)$") or find(nucleo, "[srxz]([~#]?)$")) and nexosufijo == "s" then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr]r([~#]?)$") and nexosufijo == "" then
return nucleo.."~e~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
ro29ojndppe88y13cxti11f6s7uts2a
6124035
6123986
2026-07-26T00:48:40Z
Tmagc
158167
6124035
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"tenir$"}, { -- y mantenir
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[srxz]([~#]?)$")) and nexosufijo == "s" then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" then
return nucleo.."~e~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
polqvwejnnq7nz60alruzhfwhu4f6k5
6124045
6124035
2026-07-26T01:54:45Z
Tmagc
158167
6124045
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[srxz]([~#]?)$")) and nexosufijo == "s" then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" then
return nucleo.."~e~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
g4wqdwfb6vkhqfw7hg4mdx4x07whm0i
6124047
6124045
2026-07-26T01:58:48Z
Tmagc
158167
6124047
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" then
return nucleo.."~e~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
jen5qq4cp3b2ftyh0vzz6zoivukkjp8
6124050
6124047
2026-07-26T02:08:24Z
Tmagc
158167
6124050
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
b6gtekiena8icdo3ad392b2kwkub3xb
6124053
6124050
2026-07-26T02:15:58Z
Tmagc
158167
6124053
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
ijy5z5byfilj2cqf3w293xealqhmrcr
6124055
6124053
2026-07-26T02:19:40Z
Tmagc
158167
6124055
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -2).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
r5dzklguior6s54gnzs7cqwpiqblpm0
6124056
6124055
2026-07-26T02:20:24Z
Tmagc
158167
6124056
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
es_puro = true
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit.."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
elln2iktr1smgzncnvsry4avzgb4fdc
6124061
6124056
2026-07-26T02:29:03Z
Tmagc
158167
6124061
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
bza4i9fyftioe12cpx9sjadnpwnqbjn
6124066
6124061
2026-07-26T02:34:49Z
Tmagc
158167
6124066
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)(s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)(s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
nc05gk2a8xu8z87wsar3iss5vwgv8jh
6124076
6124066
2026-07-26T02:52:42Z
Tmagc
158167
6124076
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em", "et", "es", "ens", "us", "es"}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" or pron == "'s" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" or pron == "'s" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" or pron == "'s" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" or pron == "'s" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
kv8wcdsj4n0uerlmmy20y00dqxtzz5k
6124077
6124076
2026-07-26T02:54:45Z
Tmagc
158167
6124077
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em ", "et ", "es ", "ens ", "us ", "es "}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" or pron == "'s" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" or pron == "'s" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" or pron == "'s" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" or pron == "'s" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
0tme94zm68lcfh10f4qvh29qh95bfic
6124162
6124077
2026-07-26T04:42:21Z
Tmagc
158167
6124162
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em ", "et ", "es ", "ens ", "us ", "es "}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
{"metre", {"^metre$"}, {
part = {"mes"},
}},
{"admetre", {"metre$"}, {
part = {"mès"},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" or pron == "'s" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" or pron == "'s" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" or pron == "'s" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" or pron == "'s" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
o36410w5cai2l2qpr9q5shacbukuorv
6124167
6124162
2026-07-26T04:55:03Z
Tmagc
158167
6124167
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em ", "et ", "es ", "ens ", "us ", "es "}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopres = {"aix"},
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
{"metre", {"^metre$"}, {
part = {"mes"},
}},
{"admetre", {"metre$"}, {
part = {"mès"},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" or pron == "'s" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" or pron == "'s" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" or pron == "'s" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" or pron == "'s" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
iu1k0x5nzj3kg8vsjks2xwce99fid3h
6124168
6124167
2026-07-26T04:57:47Z
Tmagc
158167
6124168
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em ", "et ", "es ", "ens ", "us ", "es "}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopres = {"eix-eix-aix"},
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
{"metre", {"^metre$"}, {
part = {"mes"},
}},
{"admetre", {"metre$"}, {
part = {"mès"},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" or pron == "'s" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" or pron == "'s" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" or pron == "'s" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" or pron == "'s" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, v in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = v
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
resultante[form..s] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
fn7tn1346h980mwmgs39asm0i5oztoq
6124169
6124168
2026-07-26T05:10:40Z
Tmagc
158167
6124169
Scribunto
text/plain
local export = {}
local unpack = unpack or table.unpack
local insert = table.insert
local concat = table.concat
local max = math.max
local m_table = require("Módulo:tabla")
local maxindex = m_table.maxIndex
local deepcopy = m_table.deepCopy
local deepequals = m_table.deepEquals
local insert_if_not = m_table.insertIfNot
local merge = m_table.merge
local size = m_table.size
local m_str = require("Módulo:string")
local find = m_str.find
local gsub = m_str.gsub
local gsub1 = m_str.gsub1
local gsubb = m_str.gsubb
local match = m_str.match
local sub = m_str.sub
local len = m_str.len
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 combinar_copulativa = m_flex.combinar_copulativa
local sobreescribir_formas = m_flex.sobreescribir_formas
local formatear_formas = m_flex.formatear_formas
local comprobar_defectivo = m_flex.comprobar_defectivo
local renderizar_encabezado = m_flex.renderizar_encabezado
local renderizar_tabla = m_flex.renderizar_tabla
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 unaccented_vowel = "aeiouïüAEIOUÏÜ"
local accented_vowel = "àèéíòóúÀÈÉÍÒÓÚ"
local vowel = unaccented_vowel .. accented_vowel
local cons = "bcdfghjklmnpqrstvwxyzçBCDFGHJKLMNPQRSTVWXYZÇ·"
local V = "[" .. vowel .. "]"
local AV = "[" .. accented_vowel .. "]"
local NAV = "[^" .. accented_vowel .. "]"
local UAV = "[" .. unaccented_vowel .. "]"
local C = "[" .. cons .. "]"
-- local LETRA = "[" .. vowel .. cons .. "]"
local espacios = "%s"
local espacios_o_guiones = "%-‐%s"
local ESPACIO = "["..espacios.."]"
local ESPACIO_O_GUION = "["..espacios_o_guiones.."]"
local LETRA = "[^"..espacios.."]"
local quitar_tilde =
{
["á"] = "a",
["é"] = "e",
["í"] = "i",
["ó"] = "o",
["ú"] = "u",
["à"] = "a",
["è"] = "e",
["ì"] = "i",
["ò"] = "o",
["ù"] = "u",
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["Á"] = "A",
["É"] = "E",
["Í"] = "I",
["Ó"] = "O",
["Ú"] = "U",
["À"] = "A",
["È"] = "E",
["Ì"] = "I",
["Ò"] = "O",
["Ù"] = "U",
["A"] = "A",
["E"] = "E",
["I"] = "I",
["O"] = "O",
["U"] = "U",
}
local tildar = {
["a"] = "à",
["e"] = "è",
["i"] = "í",
["o"] = "ò",
["u"] = "ú",
["ï"] = "í",
["A"] = "À",
["E"] = "È",
["I"] = "Í",
["O"] = "Ò",
["U"] = "Ú",
["Ï"] = "Í",
}
local function es_locucion(tit, cop)
return find(tit, LETRA..ESPACIO_O_GUION..LETRA) or (cop ~= nil and find(tit, LETRA..ESPACIO_O_GUION..LETRA))
end
local function try(p, rx, repl1, repl2)
local p2, sust = gsubb(p, rx, "~%0~")
if sust then
if not repl1 then
return {m={p2}, p={}, f={}, fp={}}
end
local a, sust = gsubb(p, rx, repl1)
if not repl2 then
return {m={p2}, p={a}, f={}, fp={}}
end
local b, sust2 = gsubb(p, rx, repl2)
if sust2 then
return {m={p2}, p={a, b}, f={}, fp={}}
end
return {m={p2}, p={a}, f={}, fp={}}
end
return nil
end
-- https://salt.gva.es/auto/ajuda-salt/puntuacio/plural_dels_substantius.html
local function forma_plural(word, genere, forzar_s)
local no_forzar_s = not forzar_s
local plural = try(word, "s[cpt]$", "~%0s~", no_forzar_s and "~%0os~" or nil)
or try(word, "xt$", "~xts~", no_forzar_s and "~xtos~" or nil)
or try(word, "ig$", "~igs~", no_forzar_s and "~jos~" or nil)
or try(word, "[aio]ç$", (genere == "ng" and no_forzar_s) and "~%0os~" or ((genere == "f" or forzar_s) and "~%0s~" or "~%0os~"), (genere == "ng" and no_forzar_s) and "~%0ces~" or nil)
or try(word, "([^g][aeou])í$", "~%1ïns~")
or try(word, "("..AV..")n?$", function(a) return "~"..quitar_tilde[a].."ns~" end)
or try(word, "[aou]n$", "~%1s~") -- estas también son agudas
or try(word, "^("..C.."*"..V..")n?$", "~%1ns~") -- no considero diptongos
or try(word, "^"..NAV.."*([aeiou])([^aeio]+[ei]n)$", function(a, b) return "~"..tildar[a]..b.."s~" end)
or try(word, "[aàeèéiíïoòóuú].-[aeiou]s$", nil) -- llanas o esdrújulas en -s
or try(word, "([eèóú])s$", function(a) return "~"..quitar_tilde[a].."sos~" end)
or try(word, "([^gq][au])ís$", "~%1ïsos~")
or try(word, "oís$", "~oïssos~")
or try(word, "("..AV..")s$", function(a) return "~"..quitar_tilde[a].."ssos~" end)
or try(word, "^("..C.."*"..V..")s$", "~%1ssos~") -- por las dudas no considero diptongos
or try(word, "^("..C.."*"..V..C.."+)s$", "~%1sos~")
or try(word, "ca$", "~ques~")
or try(word, "ga$", "~gues~")
or try(word, "ça$", "~ces~")
or try(word, "ja$", "~ges~")
or try(word, "([gq])ua$", "~%1ües~")
or try(word, "a$", "~es~")
or try(word, "x$", ((not genere or genere == "m") and not find(word, AV) and no_forzar_s) and "~xos~" or "~xs~")
or try(word, "ç$", forzar_s and "~çs~" or (genere == "f" and "~ces~" or "~ços~"))
or try(word, "ch$", forzar_s and "~chs~" or "~ches~")
or try(word, C.."[^"..vowel.."s]".."$", "~%0s~")
or try(word, "z$", "~zos~") -- REVISAR
or try(word, "[^s]$", "~%0s~")
if not plural then
return {m={word}, p={}, f={}, fp={}}
end
return plural
end
local function forma_femenina(head)
if find(head, "aire$")
or find(head, "ç$") -- audaz, feliz, dulce, etc.
or (find(head, V..".+[ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or (find(head, "[aeo][ae]l$") and not find(head, AV)) -- -al, -el agudo (tiene qe tener más de una sílaba)
or find(head, "[^f]il$") -- -il agudo o llano
or find(head, V..".+ar$") -- escolar (varias sílabas y aguda)
or find(head, "[aeo]ar$") -- escolar (varias sílabas y aguda)
or find(head, "rior$") -- anterior
or find(head, V..".+[ae]nt$") -- constant
or find(head, "ble$") -- constant
or find(head, "a$") -- constant
then
return head
end
local fem = head
fem = gsub(fem, "([aeo])í$", "%1ïna")
fem = gsub(fem, "([^gq]u)í$", "%1ïna")
fem = gsub(fem, "([aeio])u$", "%1va")
-- fem = gsub(fem, "([aeiou])l$", "%1l·la") muy dudoso (cf [[cérvol]]), no recuerdo qué quise hacer acá
fem = gsub(fem, "[àèìòùáéíóú]$", function(v) return quitar_tilde[v].."na" end)
fem = gsub(fem, "o$", "a")
fem = gsub(fem, "ce$", "ça")
fem = gsub(fem, "que$", "ca")
fem = gsub(fem, "qüe$", "qua")
fem = gsub(fem, "ge$", "ja")
fem = gsub(fem, "gue$", "ga")
fem = gsub(fem, "güe$", "gua")
fem = gsub(fem, "e$", "a")
fem = gsub(fem, "p$", "ba")
fem = gsub(fem, "f$", "va")
if find(fem, "g$") then
fem = gsub(fem, "leg$", "loga")
fem = gsub(fem, "oig$", "oja")
fem = gsub(fem, "ig$", "tja")
elseif find(fem, "[ei]n$") and not find(fem, "[àèéíòóú]") then
fem = gsub(fem, "a([^aeio]+[ei]n)$", "à%1a")
fem = gsub(fem, "e([^aeio]+[ei]n)$", "è%1a")
fem = gsub(fem, "i([^aeio]+[ei]n)$", "í%1a")
fem = gsub(fem, "o([^aeio]+[ei]n)$", "ò%1a")
fem = gsub(fem, "u([^aeio]+[ei]n)$", "ú%1a")
elseif find(fem, "s$") then
fem = gsub(fem, "[aà]s$", "assa")
fem = gsub(fem, "ès$", "esa")
fem = gsub(fem, "és$", "essa")
fem = gsub(fem, "ís$", "issa")
fem = gsub(fem, "[oò]s$", "ossa")
fem = gsub(fem, "ós$", "osa")
fem = gsub(fem, "ús$", "usa")
end
fem = gsub(fem, "([aiïu])t$", "%1da")
fem = gsub(fem, "a(%l)i$", "à%1ia")
fem = gsub(fem, "i(%l)i$", "í%1ia")
if fem == head and not find(head, "a$") then
fem = head .. "a"
end
return fem
end
local function flexionar_palabra(p, g, s)
if g ~= "mf" then
return forma_plural(p, g, s)
end
local flex = forma_plural(p, "m", s)
local fem = forma_femenina(p)
local flex_f = forma_plural(fem, "f", s)
if not deepequals(flex, flex_f) then
flex.f = flex_f.m
flex.fp = flex_f.p
end
return flex
end
local function flexion_sust_adj(palabras, g, forzar_s, copulativa)
local a, separador, b
if copulativa == true or copulativa == false then
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO_O_GUION..")("..LETRA.."+)$")
else
a, separador, b = match(palabras, "^("..LETRA.."+)("..ESPACIO..")("..LETRA.."+)$")
end
if b then
if copulativa == nil then
error("Especifique si la estructura es copulativa o no usando el parámetro booleano \"cop\"")
end
local flex1 = flexionar_palabra(a, g, forzar_s)
local flex2 = copulativa and flexionar_palabra(b, g, forzar_s) or {m={b}, p={}, f={}, fp={}}
flex1.p = flex1.p[1] and flex1.p or flex1.m
flex1.f = flex1.f[1] and flex1.f or flex1.m
flex1.fp = flex1.fp[1] and flex1.fp or flex1.p
flex2.p = flex2.p[1] and flex2.p or flex2.m
flex2.f = flex2.f[1] and flex2.f or flex2.m
flex2.fp = flex2.fp[1] and flex2.fp or flex2.p
local flex = combinar_copulativa(flex1, flex2, separador)
if deepequals(flex.fp, flex.p) and deepequals(flex.f, flex.m) then
flex.f = {}
flex.fp = {}
if deepequals(flex.p, flex.m) then
flex.p = {}
end
end
return flex
elseif copulativa == true then
error("Solo se admiten estructuras copulativas de exactamente dos palabras")
end
-- sino, flexiono solo la primera palabra
local p, resto
if copulativa == false then
p, resto = match(palabras, "^(%-?[^"..espacios_o_guiones.."]+)(.-)$")
else
p, resto = match(palabras, "^("..LETRA.."+)(.-)$")
end
local flex = flexionar_palabra(p, g, forzar_s)
for _,arr in pairs(flex) do
for i,e in ipairs(arr) do
arr[i] = e..resto
end
end
return flex
end
local function formatear_sust_adj(frame, title, ns, args, cat_pref)
local modo = args[1]
local cats = {}
local enc
if modo then
if find(modo, "^inv") then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif sub(modo, 1, 1) == "s" then
enc = "singularia tantum"
insert(cats, cat_pref.." solo en singular")
elseif sub(modo, 1, 1) == "p" then
enc = "pluralia tantum"
insert(cats, cat_pref.." solo en plural")
end
if enc then
return renderizar_encabezado(
frame,
args["alt"] or title,
enc,
args["n"],
{},
ns == 0 and cats or {}
)
end
end
local cop -- = modo == "irreg" and false or args["cop"] falla...
if modo == "irreg" then
cop = false
else
cop = args["cop"]
end
local flex_ = flexion_sust_adj(title, modo, args["s"], cop)
local flex, irr = sobreescribir_formas(flex_, args, true)
if not flex.p[1] and not flex.f[1] and not flex.fp[1] then
enc = "invariable"
insert(cats, cat_pref.." invariables")
elseif irr then
enc = f("#irregular#")
insert(cats, cat_pref.." irregulares")
elseif modo and sub(modo, 1, 1) == "n" then
flex.f = {}
flex.fp = {}
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." irregulares")
elseif (not flex.f[1] and not flex.fp[1] and modo == "mf") then
enc = "invariable en género"
insert(cats, cat_pref.." invariables en género")
--insert(cats, cat_pref.." regulares")
elseif es_locucion(title, args["cop"]) then
if args["cop"] then
enc = "copulativa"
insert(cats, cat_pref.." copulativas")
else
enc = "no copulativa"
insert(cats, cat_pref.." no copulativas")
end
else
insert(cats, cat_pref.." regulares")
end
return renderizar_encabezado(
frame,
args["alt"] or f(flex.m[1]),
enc,
args["n"],
{{"plural", flex.p},
{"femenino", flex.f},
{"femenino plural", flex.fp},
{"comparativo", args["comp"]},
{"superlativo", args["sup"]}},
ns == 0 and cats or {}
)
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
local valido = {
["m"] = true,
["f"] = true,
["mf"] = true,
["n"] = true,
["ng"] = true,
["inv"] = true,
["s"] = true,
["p"] = true,
["irreg"] = true
}
assert(valido[args[1]], "Especifique el género del sustantivo en el primer parámetro: m, f, mf, ng, inv, s, p, irreg")
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones sustantivas" or "CA:Sustantivos")
end
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] = {},
[2] = {alias_de="p"},
[3] = {alias_de="f"},
[4] = {alias_de="fp"},
["alt"] = {},
["s"] = {tipo = "bool"},
["forzars"] = {alias_de = "s"},
["noes"] = {alias_de = "s"},
["es"] = {tipo = "bool"},
["forzares"] = {alias_de = "es"},
["nos"] = {alias_de = "es"},
["m"] = {lista = true},
["p"] = {lista = true},
["mp"] = {alias_de = "p"},
["plural"] = {alias_de = "p"},
["masculinoplural"] = {alias_de = "p"},
["f"] = {lista = true},
["femenino"] = {alias_de = "f"},
["fp"] = {lista = true},
["femeninoplural"] = {alias_de = "fp"},
["n"] = {},
["nota"] = {alias_de = "n"},
["comp"] = {lista = true},
["comparativo"] = {alias_de = "comp"},
["sup"] = {lista = true},
["superlativo"] = {alias_de = "sup"},
["cop"] = {tipo = "bool"},
["copulativa"] = {alias_de = "cop"},
}
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
args[1] = args[1] or "mf"
return formatear_sust_adj(frame, title, ns, args, es_locucion(title, args["cop"]) and "CA:Locuciones adjetivas" or "CA:Adjetivos")
end
local sufijos = {
["ar"] = { -- ar
["ger"] = {"ant"},
["part"] = {"at"},
["ind_pres"] = {"o", "es", "a", "em", "eu", "en",
"e", nil, nil, "am", "au", nil,
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ava", "aves", "ava", "àvem", "àveu", "aven"},
["ind_perf"] = {"í", "ares", "à", "àrem", "àreu", "aren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"aré", "aràs", "arà", "arem", "areu", "aran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"e", "es", "e", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"às", "esses", "às", "éssem", "ésseu", "essen",
"ara", "assis", "ara", "àssim", "àssiu", "assin",
nil, "asses", nil, "àssem", "àsseu", "assen",
nil, "ares", nil, "àrem", "àreu", "aren"},
["cond"] = {"aria", "aries", "aria", "aríem", "aríeu", "arien"},
["imper"] = {nil, "a", "i", "em", "eu", "in",
nil, nil, "e", nil, "au", "en"}
},
["er"] = { -- er
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"eré", "eràs", "erà", "erem", "ereu", "eran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"eria", "eries", "eria", "eríem", "eríeu", "erien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
["ir"] = { -- ir
["ger"] = {"int"},
["part"] = {"it"},
["ind_pres"] = {"o", "s", "", "im", "iu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil,},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "ires", "í", "írem", "íreu", "iren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"iré", "iràs", "irà", "irem", "ireu", "iran"},
["subj_pres"] = {"i", "is", "i", "im", "iu", "in",
"a", "es", "a", "iguem", "igueu", "en",},
["subj_imp"] = {"ís", "issis", "ís", "íssim", "íssiu", "issin",
"ira", "isses", "ira", "íssem", "ísseu", "issen",
nil, "ires", nil, "írem", "íreu", "iren",},
["cond"] = {"iria", "iries", "iria", "iríem", "iríeu", "irien"},
["imper"] = {nil, "", "i", "im", "iu", "in",
nil, nil, "a", "iguem", nil, "en",},
},
["re"] = { -- -re, -dre
["ger"] = {"ent"},
["part"] = {"ut"},
["ind_pres"] = {"o", "s", "", "em", "eu", "en",
"i", nil, nil, nil, nil, nil,
"", nil, nil, nil, nil, nil},
["ind_imp"] = {"ia", "ies", "ia", "íem", "íeu", "ien"},
["ind_perf"] = {"í", "eres", "é", "érem", "éreu", "eren"},
["ind_perf_alt"] = {"é", "aste", "aste", "ó", "amos", "asteis"},
["ind_fut"] = {"ré", "ràs", "rà", "rem", "reu", "ran"},
["subj_pres"] = {"i", "is", "i", "em", "eu", "in",
"a", "es", "a", nil, nil, "en"},
["subj_imp"] = {"és", "essis", "és", "éssim", "éssiu", "essin",
"era", "esses", "era", "éssem", "ésseu", "essen",
nil, "eres", nil, "érem", "éreu", "eren",},
["cond"] = {"ria", "ries", "ria", "ríem", "ríeu", "rien"},
["imper"] = {nil, "", "i", "em", "eu", "in",
nil, nil, "a", nil, nil, "en"}
},
}
local pronombres = {"me", "te", "te", "se", "nos", "os", "se"}
local auxiliar = {
["inf_comp"] = {"haver"},
["ger_comp"] = {"havent"},
["ind_perf_comp"] = {"he", "has", "ha", "hem", "heu", "han",
nil, nil, nil, "havem", "haveu", nil,},
["ind_peri"] = {"vaig", "vas", "va", "vem", "vau", "van",
nil, "vares", nil, "vàrem", "vàreu", "varen",},
["ind_pluperf"] = {"havia", "havies", "havia", "havíem", "havíeu", "havien"},
["ind_anter"] = {"haguí", "hagueres", "hagué", "haguérem", "haguéreu", "hagueren",
"vaig haver", "vas haver", "va haver", "vem haver", "vau haver", "van haver",
nil, "vares haver", nil, "vàrem haver", "vàreu haver", "varen haver",},
["ind_fut_comp"] = {"hauré", "hubràs", "haurà", "haurem", "haureu", "hauran"},
["cond_comp"] = {"hauria", "hauries", "hauria", "hauríem", "hauríeu", "haurien",
"haguera", "hagueres", "haguera", "haguérem", "haguéreu", "hagueren",},
["subj_perf"] = {"hagi", "hagis", "hagi", "hàgim", "hàgiu", "hagin",
"haja", "hages", "haja", "hàgem", "hàgeu", "hagen",},
["subj_peri"] = {"vagi", "vagis", "vagi", "vàgim", "vàgiu", "vagin",
"vaja", "vages", "vaja", "vàgem", "vàgeu", "vagen",},
["subj_pluperf"] = {"hagués", "haguessis", "hagués", "haguéssim", "haguéssiu", "haguessin",
"haguera", "haguesses", "haguera", "haguéssem", "haguésseu", "haguessen",
nil, "hagueres", nil, "haguérem", "haguéreu", "hagueren",},
["subj_anter"] = {"vagi haver", "vagis haver", "vagi haver", "vàgim haver", "vàgiu haver", "vagin haver",
"vaja haver", "vages haver", "vaja haver", "vàgem haver", "vàgeu haver", "vagen haver",},
}
local JO, TU, ELL, NOSALTRES, VOSALTRES, ELLS = 1, 2, 3, 4, 5, 6
local tostr = {"1", "2", "3", "4", "5", "6"}
local PRONOMBRES = {"jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès"}
local PRONOMBRES_SUBJ = {"que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès"}
local PRONOMBRES_IMP = {"―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres)", "(vostès)"}
local IMPERSONALES = {"", "", "", "(això)", "", "", "(ells)"}
local IMPERSONALES_SUBJ = {"", "", "", "(que això)", "", "", "(que elss)"}
local REFLEXIVOS_ANTEPUESTOS = {"em ", "et ", "es ", "ens ", "us ", "es "}
local REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS = {"m'", "t'", "s'", "ens ", "us ", "s'"}
local REFLEXIVOS_POSPUESTOS = {"-me", "-te", "-se", "-nos", "-vos", "-se"}
local REFLEXIVOS_POSPUESTOS_CONTRAIDOS = {"'m", "'t", "'s", "-nos", "-vos", "'s"}
local formas_no_personales = {
["ger"] = true,
["part"] = true,
["inf"] = true,
}
local formas_personales = {
["ind_pres"] = true,
["ind_imp"] = true,
["ind_perf"] = true,
["ind_fut"] = true,
["subj_pres"] = true,
["subj_imp"] = true,
["cond"] = true,
["imper"] = true,
}
local formas_no_personales_compuestas = {
["inf_comp"] = true,
["ger_comp"] = true,
}
local formas_personales_compuestas = {
["ind_perf_comp"] = true,
["ind_pluperf"] = true,
["ind_peri"] = true,
["ind_anter"] = true,
["ind_fut_comp"] = true,
["cond_comp"] = true,
["subj_perf"] = true,
["subj_pluperf"] = true,
["subj_peri"] = true,
["subj_anter"] = true,
}
local formas = merge(formas_no_personales, formas_personales)
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
if find(conj, "^subj") then
return IMPERSONALES_SUBJ[p]
end
return IMPERSONALES[p]
else
if find(conj, "^subj") then
return PRONOMBRES_SUBJ[p]
elseif find(conj, "^imper") then
return PRONOMBRES_IMP[p]
end
return PRONOMBRES[p]
end
end
local paradigmas_regulares = {
["ar"] = {
{"adequar", {"quar$"}, {
nexo = "qu"
}},
{"averiguar", {"guar$"}, {
nexo = "gu"
}},
{"evacuar", {"[^aeiougq]uar$"}, {
nexo = "u",
}},
{"emproar", {"oar$"}, {
nexo = "o",
}},
{"desmaiar", {"[aeou]iar$"}, {
nexo = "I",
}},
{"acariciar", {"[^aeiou]iar$"}, {
nexo = "i",
}},
{"pujar", {"[aeiou]jar$"}, {
nexo = "J",
}},
{"viatjar", {"jar$"}, {
nexo = "j",
}},
{"alçar", {"çar$"}, {
nexo = "ç",
}},
{"educar", {"car$"}, {
nexo = "c",
}},
{"jugar", {"gar$"}, {
nexo = "g",
}},
{"amar", {"ar$"}, {
}},
},
["er"] = {
{"vèncer", {"cer$"}, {
nexo = "c",
}},
{"témer", {"er$"}, {
}},
},
["ir"] = {
{"fugir", {"fugir$"}, { -- NO es irregular, es un cambio ortográfico. Lo que pasa es que es el único que no es inco.
nexo = "g",
}},
{"trair", {"air$"}, {
nexo = "a"
}},
{"trair", {"eir$"}, {
nexo = "e"
}},
{"trair", {"oir$"}, {
nexo = "o"
}},
{"trair", {"uir$"}, {
nexo = "u"
}},
{"argüir", {"üir$"}, {
nexo = "ü"
}},
{"partir", {"ir$"}, {
}},
},
["re"] = {
{"concebre", {"bre$"}, {
nexo = "b"
}},
{"abatre", {"re$"}, {
}},
},
["ur"] = {
{"dur", {"dur$"}, { -- para que no tire error el módulo
}},
}
}
-- partir: paradigma modelo inco
-- dormir: paradigma modelo puro
local verbos_puros = {
"ajupir$", "buixir$", "bullir$", "cruixir$", "dormir$", "funyir$", "grunyir$", "munyir$", "pudir$", "punyir$",
"retrunyir$", "^sentir$", "pressentir$", "^ressentir$", "collir$", "cosir$", "^eixir$", "[^t]eixir$", "escopir$", "fugir$",
"morir$", "^obrir$", "reobrir$", "entreobrir$", "^omplir$", "[^c]omplir$", "pruir$", "^sortir$", "[^a][^s]sortir$", "tossir$"}
local verbos_mixtos = {
"acudir$", "arrupir$", "brumir$", "brunzir$", "consumir$", "^resumir$", "presumir$", "mentir$", "percudir$", "consentir$",
"lluir$"}
-- los que quedan son incoativos
local paradigmas_irregulares = {
["ar"] = {
{"aguar", {"^aguar$"}, {
nexo = "GU",
}},
{"anar", {"^anar$"}, { -- cuidado con mandar
nucleopres = {"vaj-vaj"},
ind_pres = {{"vaig"}, {"vas"}, {"va"}, nil, nil, {"van"}},
ind_fut = {{"aniré", "iré"}, {"aniràs", "iràs"}, {"anirà", "irà"}, {"anirem", "irem"}, {"anireu", "ireu"}, {"aniran", "iran"}},
cond = {{"aniria", "iria"}, {"aniries", "iries"}, {"aniria", "iria"}, {"aniríem", "iríem"}, {"aniríeu", "iríeu"}, {"anirien", "irien"}},
imper = {nil, {"vés"}},
}},
{"dar", {"^dar$", "^desdar$"}, { -- no pueden ir otros verbos como "andar o quedar"
nucleo = "d",
ind_pres = {{"do"}, {"das"}, {"da"}, nil, nil, {"dan"}},
subj_pres = {{"de"}, {"des"}, {"de"}, nil, nil, {"den"}},
imper = {nil, {"da"}, {"de"}, nil, {"deu"}, {"den"}}
}},
{"estar", {"^estar$"}, {
ind_pres = {{"estic"}, {"estàs"}, {"està"}, nil, nil, {"estan"}},
subj_pres = {{"estigui", "estiga"}, nil, {"estigui", "estiga"}},
ind_perf = {{"estiguí"}, {"estigueres"}, {"estigué"}, {"estiguérem"}, {"estiguéreu"}, {"estigueren"}},
nucleopres = {"estig"},
part = {"estat"}, -- necesario sobrescribir por la asignación de núcleos
imper = {nil, {"estigues"}, {"estigui", "estiga"}, nil, {"estigueu"}}
}},
},
["er"] = {
-- caler regular imeprs
{"soler", {"^soler$"}, {
nucleopres = {"g"},
}},
{"voler", {"voler$"}, {
nucleopres = {"vulg"},
nucleoperf = {"volg"},
ind_pres = {{"vull"}},
imper = {nil, {"vulgues"}, nil, nil, {"vulgueu"}},
nucleofut = {"voldr"},
}},
{"valer", {"ler$"}, {
nucleopres = {"g"},
nucleofut = {"ldr"},
}},
{"atènyer", {"^atènyer$", "^empènyer$", "^espènyer$"}, {
nucleo = "èny",
part = {"ès"},
}},
{"estrènyer", {"strènyer$"}, {
part = {"stret"},
nucleoperf = {"streng", "streny"},
}},
{"fènyer", {"fènyer$", "plànyer$", "pertànyer$"}, {
nucleo = "ny",
part = {"ngut", "nyut"},
nodial = true,
}},
-- júnyer es junyir
{"saber", {"saber$"}, {
ind_pres = {{"sé"}},
nucleofut = {"sabr"},
subj_pres = {{"sàpiga", "sàpia"}, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}},
imper = {nil, {"sàpigues", "sàpies"}, {"sàpiga", "sàpia"}, {"sapiguem", "sapiem"}, {"sapigueu", "sapieu"}, {"sàpiguen", "sàpien"}}
}},
{"conèixer", {"conèixer$"}, {
part = {"conegut"},
nucleopres = {"coneg"},
}},
{"créixer", {"créixer$"}, {
part = {"crescut"},
nucleoperf = {"cresqu", "REG"},
subj_pres = {{"creixi", "cresca"}, {"creixis", "cresques"}, {"creixi", "cresca"}, {"creixem", "cresquem"}, {"creixeu", "cresqueu"}, {"creixin", "cresquen"}},
imper = {nil, nil, {"creixi", "cresca"}, {"creixem", "cresquem"}, nil, {"creixin", "cresquen"}}
}},
{"merèixer", {"merèixer$", "^irèixer"}, {-- cambia la tilde
nucleo = "rèix",
part = {"rescut"},
nucleoperf = {"resqu", "REG"},
subj_pres = {{"reixi", "resca"}, {"reixis", "resques"}, {"reixi", "resca"}, {"reixem", "resquem"}, {"reixeu", "resqueu"}, {"reixin", "resquen"}},
imper = {nil, nil, {"reixi", "resca"}, {"reixem", "resquem"}, nil, {"reixin", "resquen"}}
}},
{"parèixer", {"parèixer$"}, {--REV, aparèixer
nucleopres = {"pareg"},
}},
{"néixer", {"néixer$", "péixer$"}, {
nucleo = "éix",
nucleopres = {"eix-eix-aix"},
nucleopresa = {"aix"},
part = {"ascut"},
ind_imp = {nucleo = "aix"},
nucleoperf = {"asqu", "aix"},
nucleofut = {"aix"},
nodial = true,
}},
{"néixer", {"nàixer$", "pàixer$"}, {
nucleo = "àix",
part = {"ascut"},
nucleoperf = {"asqu", "aix"},
subj_pres = {{"asca", "aixi"}, {"asques", "aixis"}, {"asca", "aixi"}, {"aixem", "asquem"}, {"aixeu", "asqueu"}, {"asquen", "aixin"}},
imper = {nil, nil, {"asca"}, {"aixem", "asquem"}, nil, {"asquen"}},
nodial = true,
}},
{"poder", {"poder$"}, {
nucleopres = {"pug"},
nucleoperf = {"pog"},
nucleofut = {"podr"},
imper = {nucleo = false}
}},
{"caber", {"caber$"}, { -- es cabre
nucleo = false,
}},
{"córrer", {"córrer$"}, {
part = {"corregut"},
ind_pres = {{"corro", "córrec", "corri", "corr"}},
subj_pres = {{"corri", "córrega"}, {"corris", "córregues"}, {"corri", "córrega"}, {"correm", "córregem"}, {"correu", "córregeu"}, {"corrin", "córreguen"}},
nucleoperf = {"correg"},
}},
{"haver", {"haver$"}, { -- aux
nucleopres = {"haj-haj-hàj"},
ind_pres = {{"he"}, {"has"}, {"ha"}, {"hem"}, {"heu"}, {"han"}},
part = {"hagut"},
nucleofut = {"haur"},
nucleoperf = {"hag"},
cond = {nucleo = {"haur", "hag"}},
imper = {nucleo = false}
}},
{"ser", {"^ser$"}, {
part = {"sigut"},
ind_pres = {{"soc"}, {"ets"}, {"és"}, {"som"}, {"sou"}, {"són"}},
ind_imp = {{"era"}, {"eres"}, {"era"}, {"érem"}, {"éreu"}, {"eren"}},
ind_perf = {{"fui"}, {"fores"}, {"fou"}, {"fórem"}, {"fóreu"}, {"foren"}},
subj_pres = {nucleo = "sig"},
subj_imp = {nucleo = "fo"},
imper = {nil, {"sigues"}, {"sigui", "siga"}, {"siguem", "sigam"}, {"sigeu", "sigau"}, {"siguin", "siguen"}}
}},
{"ésser", {"^ésser$", "^esser$"}, {
ger = {"essent"},
part = {"estat"},
nucleo = false,
}},
{"fer", {"^fer$"}, {
part = {"fet"},
ind_pres = {{"faig", "faç"}, {"fas"}, {"fa"}, nil, nil, {"fan"}},
ind_imp = {nucleo = "fe"},
ind_perf = {{"fiu"}, {"feres"}, {"feu"}, {"férem"}, {"féreu"}, {"feren"}},
imper = {nil, {"fes", "fe"}, nil, nil, {"feu", "feis"}},
nucleofut = {"far"},
nucleopres = {"faç-faç"}
}},
-- esprémer no forma paradigma
},
["ir"] = {
{"obrir", {"obrir$"}, {
part = {"obert"},
}},
{"cosir", {"collir$", "osir$", "tossir$", "escopir$", "sortir$"}, {
nucleopres = {"u-u"},
}},
{"complir", {"omplir$"}, {
part = {"omplert", "omplit"},
}},
{"eixir", {"^eixir$", "^deseixir$"}, {
nucleopres = {"i-i"}
}},
{"reeixir", {"reeixir$"}, {
nucleopres = {"ï-ï"},
nodial = true
}},
{"establir", {"establir$"}, {
part = {"establert", "establit"},
}},
-- pruir reg.
{"dir", {"^dir$", "^adir$", "contradir$", "desdir$", "entredir$", "interdir$", "maldir$", "predir$", "^redir$"}, {
nucleo = "d",
ger = {"dient"},
part = {"dit"}, -- necesario sobreescribirlo para que no genere *dig
nucleopres = {"dig-diu-dig"},
ind_imp = {nucleo = "de"},
ind_pres = {nil, nil, nil, {"diem"}, {"dieu"}},
subj_pres = {nil, nil, nil, {"diguem"}, {"digueu"}},
imper = {nil, {"digues"}, nil, {"diguem"}, {"digueu"}}
}},
{"venir", {"^venir$"}, {
ind_pres = {nil, nil, {"ve"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
{"prevenir", {"^advenir$", "^avenir$", "contravenir$", "convenir$", "desavenir$", "entrevenir$", "esdevenir$", "intervenir$", "obvenir$", "pervenir$", "prevenir$", "provenir$", "^revenir$", "sobrevenir$", "subvenir$"}, {
nucleo = "ven",
pres = {nil, nil, {"vé"}},
part = {"vingut"},
nucleopres = {"ving"},
nucleoperf = {"ving", "veng"},
nucleofut = {"vindr"},
imper = {nil, {"vine"}}
}},
-- vestir, llegir, servir
{"tenir", {"^tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "ten"}, nil, nil, {"tingueu", "teniu"}}
}},
{"mantenir", {"tenir$"}, {
nucleopres = {"ting"},
nucleoperf = {"ting", "teng"},
nucleofut = {"tindr", "tendr"},
part = {"tingut", "tengut"},
ind_pres = {nil, nil, {"té"}},
imper = {nil, {"tingues", "tén"}, nil, nil, {"tingueu", "teniu"}}
}},
{"morir", {"morir$"}, {
part = {"mort"},
}},
{"imprimir", {"imprimir$"}, {
part = {"imprès"},
}},
-- oir
},
["re"] = {
{"caldre", {"caldre$", "doldre$", "^oldre$", "soldre$", "valdre$"}, {
nucleopres = {"g"}
}},
{"coldre", {"oldre$"}, { -- moldre, absoldre, dissoldre, toldre
part = {"olt"},
nucleopres = {"g"},
}},
{"romandre", {"^romandre$"}, {
part = {"romàs"},
nucleopres = {"g"},
}},
{"encendre", {"encendre$", "tendre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"én"}},
imper = {nil, {"én"}},
}},
{"vendre", {"^vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"}
}},
{"advendre", {"vendre$"}, {
part = {"venut", "vengut"},
nucleopres = {"g"},
nucleoperf = {"veng", "ven"},
ind_pres = {nil, nil, {"vèn"}},
imper = {nil, {"vèn"}},
}},
{"fendre", {"^"..C.."*endre$"}, {
nucleo = "end",
part = {"es"},
nucleopres = {"g"},
}},
{"defendre", {"endre$"}, {
nucleo = "end",
part = {"ès"},
nucleopres = {"g"},
ind_pres = {nil, nil, {"èn"}},
imper = {nil, {"èn"}},
}},
{"enfondre", {"^enfondre$"}, {
part = {"enfús"},
nucleopres = {"g"}
}},
{"pondre", {"pondre$"}, {
part = {"post"},
nucleopres = {"g"}
}},
{"fondre", {"^"..C.."*ondre$"}, {
nucleo = "ond",
part = {"os", "us"},
nucleopres = {"g"}
}},
{"difondre", {"ondre$"}, {
part = {"ós"},
nucleopres = {"g"}
}},
{"caure", {"caure$"}, {
nucleopres = {"caig"},
nucleopresa = {"cai"},
ind_imp = {nucleo = "que"},
}},
{"plaure", {"plaure$"}, {
nucleopres = {"g"},
nucleopresa = {"pla"},
}},
{"raure", {"^raure$"}, {
nucleopres = {"g"},
nucleopresa = {"ra"},
part = {"ragut", "ras"}
}},
{"beure", {"beure$", "deure$", "lleure$"}, {
nucleo = "eu",
nucleopres = {"g"},
nucleopresa = {"ev"},
ind_imp = {nucleo = "ev"},
}},
{"creure", {"creure$", "seure$"}, {
nucleo = "eu",
nucleopresa = {"ei"},
nucleopres = {"g"},
}},
{"jeure", {"jeure$", "jaure$"}, {
v = "jeure",
part = {"jagut"},
nucleofut = {"jau"},
nucleopresa = {"jai"},
ind_pres = {{"jec", "jac"}},
nucleopres = {"g"},
ind_imp = {nucleo = "jeu"},
}},
{"treure", {"treure$", "traure$"}, {
part = {"tret"},
nucleofut = {"trau"},
nucleopresa = {"trai"},
nucleoperf = {"trag"},
ind_imp = {nucleo = "tre"},
ind_pres = {{"trec", "trac"}},
nucleopres = {"g"},
}},
{"veure", {"veure$"}, {
part = {"vist"},
nucleopres = {"vej"},
nucleopresa = {"vei"},
nucleoperf = {"vei"},
ind_perf = {{"viu"}},
ind_pres = {{"veig"}},
imper = {nil, {"veges", "ves", "ve"}},
}},
{"escriure", {"scriure$"}, {
part = {"scrit"},
nucleopres = {"g"},
nucleopresa = {"scrivi"},
nucleoperf = {"scrig", "scriv"},
ind_imp = {nucleo = "scriv"},
subj_imp = {nucleo = "scrig"},
}},
{"riure", {"riure$"}, {
part = {"rigut", "rist"},
nucleopresa = {"ri"},
nucleopres = {"g"},
ind_imp = {nucleo = "re"},
}},
{"viure", {"viure$"}, {
part = {"viscut"},
nucleopres = {"visc"},
nucleopresa = {"vivi"},
ind_pres = {{"visc"}},
ind_imp = {nucleo = "viv"},
}},
{"cloure", {"cloure$"}, { -- REVISAR: tiene dos participios según la etimología
part = {"clos"},
nucleopres = {"g"},
nucleopresa = {"clo"},
}},
{"moure", {"moure$", "ploure$"}, {
part = {"mogut"},
nucleopres = {"g"},
nucleopresa = {"mov"},
ind_imp = {nucleo = "mov"},
}},
{"noure", {"noure$"}, {
part = {"nogut"},
nucleopres = {"g"},
nucleopresa = {"no"},
}},
{"vindre", {"^vindre$"}, {
part = {"vingut", "vengut"},
nucleopres = {"ving-ven-ving"},
nucleopresa = {"veni"},
ind_imp = {nucleo = "veni"},
imper = {nil, {"vine"}},
}},
{"metre", {"^metre$"}, {
part = {"mes"},
}},
{"admetre", {"metre$"}, {
part = {"mès"},
}},
},
["ur"] = {
{"dur", {"dur$"}, {
nucleo = "du",
sufijo = "re",
nucleopres = {"g"},
part = {"dut"},
ind_pres = {nil, {"duus", "dus"}, {"duu", "du"}},
imper = {nil, {"duu", "du"}}
}},
}
}
local function combinar_nexo_sufijo(nexo, sufijo, sufijo_inf, forma)
if not nexo then
return sufijo
end
if sufijo_inf == "ar" then
if sufijo == "" then
if nexo == "gu" then
return nil
end
if nexo == "qu" then
return nil
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[evacuar]], [[lloar]]
end
if nexo == "i" then
return nexo.."~i~" -- [[acariciar]]
end
if nexo == "J" then
return "~ig~" -- [[pujar]]
end
if nexo == "GU" then
return "#gúu#" -- [[aguar]]
end
end
if sufijo == "i" and forma == "ind_pres" then
if nexo == "gu" then
return nil
end
end
if find(sufijo, "^í") then
if nexo == "I" then
return "~"..sufijo.."~"
end
end
if find(sufijo, "^i[ns]?$") then
if nexo == "I" then
return "~ï~"..sub(sufijo, 2)
end
if nexo == "i" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "GU" then
return "gu#ï#"..sub(sufijo, 2)
end
end
if find(sufijo, "^"..UAV.."[ns]?$") then
if nexo == "GU" then
return "#gú#"..sufijo
end
end
if find(sufijo, "^[eiéí]") then
if nexo == "gu" or nexo == "GU" then
return "g~ü~"..sufijo
end
if nexo == "qu" then
return "q~ü~"..sufijo
end
if nexo == "ç" then
return "~c~"..sufijo
end
if nexo == "c" then
return "~qu~"..sufijo
end
if nexo == "g" then
return "~gu~"..sufijo
end
if nexo == "j" or nexo == "J" then
return "~g~"..sufijo
end
end
else -- ER/RE/IR
if sufijo == "" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~ig~" -- [[fugir]]
end
if nexo == "u" or nexo == "o" then
return nexo.."~u~" -- [[lluir]]
end
end
if sufijo == "s" then
if nexo == "b" then
return "~p~"..sufijo
end
if nexo == "c" then
return "~ce~"..sufijo
end
if nexo == "g" then
return nexo.."~e~"..sufijo
end
if nexo == "u" then
return nexo.."~u~"..sufijo, nexo..sufijo -- [[lluir]]
end
end
if find(sufijo, "^i") and forma ~= "ind_fut" and forma ~= "cond" and forma ~= "ger" then
if nexo == "a" or nexo == "e" or nexo == "o" or nexo == "u" then
return nexo.."~ï~"..sub(sufijo, 2)
end
if nexo == "ü" then
return "~uï~"..sub(sufijo, 2)
end
end
if find(sufijo, "^[aouáóúàòù]") then
if nexo == "c" then
return "~ç~"..sufijo
end
if nexo == "g" then
return "~j~"..sufijo
end
end
end
if nexo == "I" then
return "i"..sufijo
end
if nexo == "J" then
return "j"..sufijo
end
if nexo == "GU" then
return "gu"..sufijo
end
return nexo..sufijo
end
local function combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, p, sufijo_inf)
if not nucleo or not nexosufijo then
return nil
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[aeiouï]ss?#?$") then -- passar, envasar, expressar, etc.
return (gsub(nucleo, "([aeiouï])s?(s#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if sufijo_inf == "ar" and forma == "ind_pres" and nexosufijo == "" and find(nucleo, "[eiï]n#?$") then -- encadenar, eliminar
return (gsub(nucleo, "([eiï])(n#?)$", function(a, b) return "~"..tildar[a]..b.."~" end))
end
if find(nucleo, "d#?$") and sufijo_inf == "re" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "d(#?)$", "%1")
end
if find(nucleo, "[aeio]u#?$") and sufijo_inf == "re" and forma ~= "ind_pres" and forma ~= "imper" and forma ~= "ind_fut" and forma ~= "cond" then
nucleo = gsub(nucleo, "([aeio])u(#?)$", "%1%2")
end
if find(nucleo, "[ao]#?$") and forma == "ind_imp" and find(nexosufijo, "^i"..UAV.."*[mns]?$") then
return nucleo..(gsub(nexosufijo, "^i", "~ï~"))
end
if find(nucleo, "e#?$") and forma == "ind_imp" and find(nexosufijo, "^íe") then
return gsub(nucleo, "e(#?)$", "è%1")..(gsub(nexosufijo, "^íe", "~i~e"))
end
if find(nucleo, "o([~#]?)$") and forma == "subj_imp" and find(nexosufijo, "^([~#]?)[eé]") then -- [[ser]]
return nucleo..(gsub(nexosufijo, "^([~#]?)[eé]", "%1"))
end
if find(nucleo, "[nv]i#") and find(nexosufijo, "^e") and sufijo_inf == "re" then -- escriure, viure
return nucleo..sub(nexosufijo, 2)
end
if find(nucleo, "[bdg]#?$") and (nexosufijo == "o" or nexosufijo == "i") and forma == "ind_pres" then
return nil
end
if find(nucleo, "b#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "b(#?)$", "~p~%1"))..nexosufijo
end
if find(nucleo, "d#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "d(#?)$", "~t~%1"))..nexosufijo
end
if find(nucleo, "g#?$") and (nexosufijo == "" or nexosufijo == "s") then
return (gsub(nucleo, "g(#?)$", "~c~%1"))..nexosufijo
end
if find(nucleo, "g#$") and find(nexosufijo, "^igu") then
return (gsub(nucleo, "g#$", "gu#"))..sub(nexosufijo, 4)
end
if find(nucleo, "g#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "g#$", "gu#"))..nexosufijo
end
if find(nucleo, "j#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "j#$", "g#"))..nexosufijo
end
if find(nucleo, "gu#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "gu#$", "gü#"))..nexosufijo
end
if find(nucleo, "ç#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "ç#$", "c#"))..nexosufijo
end
if find(nucleo, "c#$") and find(nexosufijo, "^[eiéí]") then
return (gsub(nucleo, "c#$", "qu#"))..nexosufijo
end
if find(nucleo, "[ií]([~#]?)$") and find(nexosufijo, "^([~#]?)[ií]") then
return nucleo..(gsub(nexosufijo, "^([~#]?)[ií]", "%1"))
end
if find(nucleo, "[bdfgkprtvaeiou]r#$") and find(nexosufijo, "^"..V.."r") then
return nucleo..sub(nexosufijo, 3)
elseif (find(nucleo, "[bcdgptr][lr]([~#]?)$") or find(nucleo, "[çjsxz]([~#]?)$")) and nexosufijo == "s" and (p == TU or p == ELL) then
return nucleo.."~es~"
elseif find(nucleo, "[bcdgptr][lr]([~#]?)$") and nexosufijo == "" and (p == TU or p == ELL) then
return nucleo.."~e~"
elseif find(nucleo, "ss$") and nexosufijo == "" then
return sub(nucleo, 1, -3).."~s~"
end
return nucleo..nexosufijo
end
local function combinar_prefijo_nucleonexosufijo(prefijo, nucleonexosufijo)
if not prefijo or not nucleonexosufijo then
return nil
end
return prefijo..nucleonexosufijo
end
local function agregar_forma(conjugado, conjinfo, forma)
conjinfo[forma] = conjinfo[forma] or {}
local sufijo_inf = conjinfo.sufijo_inf
local sufijos_ = conjinfo[forma].sufijos and sufijos[sufijo_inf][conjinfo[forma].sufijos] or sufijos[sufijo_inf][forma]
local nucleos
if conjinfo[forma].nucleo == nil then
if forma == "inf" then
conjugado[forma] = {conjinfo.v}
return
elseif forma == "ger" then
nucleos = conjinfo.nucleopresa
elseif forma == "part" then
nucleos = conjinfo.nucleoperf
elseif forma == "ind_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres2, conjinfo.nucleopres2, conjinfo.nucleopresa, conjinfo.nucleopresa, conjinfo.nucleopres2}
elseif forma == "subj_pres" then
nucleos = {conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopres3, conjinfo.nucleopres1}
elseif forma == "imper" then
nucleos = {{}, conjinfo.nucleopres2, conjinfo.nucleopres1, conjinfo.nucleopres3, conjinfo.nucleopresa, conjinfo.nucleopres1}
elseif forma == "ind_fut" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "cond" then
nucleos = {conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut, conjinfo.nucleofut}
elseif forma == "ind_perf" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
elseif forma == "subj_imp" then
nucleos = {conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf, conjinfo.nucleoperf}
else
local n = conjinfo.nucleo_inf
nucleos = {n, n, n, n, n, n}
end
elseif conjinfo[forma].nucleo == false then
nucleos = {{}, {}, {}, {}, {}, {}}
else
local ns = type(conjinfo[forma].nucleo) ~= "table" and {conjinfo[forma].nucleo} or conjinfo[forma].nucleo
for i,_ in ipairs(ns) do
ns[i] = "#"..ns[i].."#"
end
nucleos = {ns, ns, ns, ns, ns, ns}
end
local nexo = conjinfo[forma].nexo or conjinfo.nexo_inf
local prefijo = conjinfo.prefijo
if formas_no_personales[forma] then
if conjinfo[forma][1] then
for _, fm in ipairs(conjinfo[forma]) do
insert_if_not(conjugado[forma], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
for _,nucleo in ipairs(nucleos) do
local nexosufijo = combinar_nexo_sufijo(find(nucleo, "~eix~") and "" or nexo, sufijos_[1], sufijo_inf, forma)
insert_if_not(conjugado[forma], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(nucleo, nexosufijo, forma, -1, sufijo_inf)))
end
end
return
end
for i = JO, ELLS do
local p = tostr[i]
if conjinfo[forma][i] then
for _, fm in ipairs(conjinfo[forma][i]) do
insert_if_not(conjugado[forma..p], "#"..combinar_prefijo_nucleonexosufijo(prefijo, fm).."#")
end
else
local k = i
while sufijos_[k] do
for _, n in ipairs(nucleos[i]) do
if (not find(n, "~eix~") and not conjinfo.nodial) or k <= 6 then -- de momento, desactivo las formas dialectales si el verbo es inco
local nexosufijo = combinar_nexo_sufijo(find(n, "~eix~") and "" or nexo, sufijos_[k], sufijo_inf, forma)
insert_if_not(conjugado[forma..p], combinar_prefijo_nucleonexosufijo(prefijo, combinar_nucleo_nexosufijo(n, nexosufijo, forma, i, sufijo_inf)))
end
end
k = k + 6
end
end
end
end
local function formatear_conjugacion(res, fmtinfo, forma)
local adv = fmtinfo.adv
local pron = fmtinfo.pron
local art = fmtinfo.art
local resto = fmtinfo.resto
local resto_pl = fmtinfo.resto_pl
local arr = res[forma]
local t = {}
local tiempo, i = match(forma, "^(.*)(%d)$")
if not i then
i = 1
tiempo = forma
end
i = tonumber(i)
local rest_ = i < NOSALTRES and resto or resto_pl
local rest_pl_ = resto_pl
for _, v in ipairs(arr) do
local hs = auxiliar[tiempo]
local v2, v3
local rest = rest_
local rest_pl = rest_pl_
if hs then
rest = " "..v..rest
rest_pl = " "..v..rest_pl
v = auxiliar[tiempo][i]
if auxiliar[tiempo][i+6] then
v2 = auxiliar[tiempo][i+6]
end
if auxiliar[tiempo][i+12] then
v3 = auxiliar[tiempo][i+12]
end
end
if forma == "inf" or forma == "inf_comp" then
insert(t, adv..v..pron..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..v..pron..art..f_links(rest_pl))
end
elseif forma == "ger" or forma == "ger_comp" then
local vpron = v..pron
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
if rest_pl ~= rest then
insert(t, adv..f(vpron)..art..f_links(rest_pl))
end
elseif forma == "part" then
insert(t, adv..f_links(v)..f_links(rest))
if (rest_pl ~= rest) then
insert(t, adv..f_links(v)..f_links(rest_pl))
end
elseif forma == "imper" then
local vpron = v
if pron == "se" or pron == "'s" then
local enc = find(v, V.."$") and v..REFLEXIVOS_POSPUESTOS_CONTRAIDOS[i] or v..REFLEXIVOS_POSPUESTOS[i]
vpron = enc
end
insert(t, adv..(art == "" and f_links(vpron) or f(vpron))..art..f_links(rest))
else
local vpron
if pron == "se" or pron == "'s" then
vpron = find(v, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v or REFLEXIVOS_ANTEPUESTOS[i]..v
else
vpron = v
end
local vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
if v2 then
if pron == "se" or pron == "'s" then
vpron = find(v2, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v2 or REFLEXIVOS_ANTEPUESTOS[i]..v2
else
vpron = v2
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
if v3 then
if pron == "se" or pron == "'s" then
vpron = find(v3, "^"..V) and REFLEXIVOS_ANTEPUESTOS_CONTRAIDOS[i]..v3 or REFLEXIVOS_ANTEPUESTOS[i]..v3
else
vpron = v3
end
vpronart = vpron..art
insert(t, adv..(art == "" and f_links(vpronart) or f(vpronart))..f_links(rest))
end
end
end
res[forma] = t
return
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 = {
["paradigma"] = {lista = true},
["impersonal"] = {},
["impers"] = {alias_de = "impersonal"},
["plural"] = {},
["nucleopres"] = {lista = true},
["núcleopres"] = {alias_de = "nucleopres"},
["nucleopresa"] = {lista = true},
["núcleopresa"] = {alias_de = "nucleopresa"},
["nucleoperf"] = {lista = true},
["núcleoperf"] = {alias_de = "nucleoperf"},
["nucleofut"] = {lista = true},
["núcleofut"] = {alias_de = "nucleofut"},
["nota"] = {},
}
local conjugado = {}
for forma,_ in pairs(formas_no_personales) do
params[forma] = {tipo=parsear_arreglo}
conjugado[forma] = {}
end
for forma,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
params[forma..s] = {tipo=parsear_arreglo}
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)
local adv, r1 = match(tit, "^([sSnN][ío]"..ESPACIO..")(.*)$")
adv = adv or ""
r1 = r1 or tit
local v, pron, art, resto
v, pron, art, resto = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)( .-)$")
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art, resto = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)( .-)$")
end
if not resto then
v, pron, art = match(r1, "^("..LETRA.."*dur)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*[aei]r)('?s?e?)%-?(l?[oai]?s?)$")
end
if not art then
v, pron, art = match(r1, "^("..LETRA.."*re)('?s?e?)%-?(l?[oai]?s?)$")
end
if not resto then
resto = ""
end
local resto_pl = args["plural"] and match(args["plural"], "^[sSnN]?[ío]?"..ESPACIO.."?"..LETRA.."+( .-)$") or resto
assert(v and v ~= "", "Forma canónica no reconocida")
local sufijo_inf = match(v, "[aeiur][re]$")
assert(sufijo_inf)
local paradigmas_reconocidos = {}
local es_inco
local es_puro
local es_irregular
for N = 1, max(1,
maxindex(args["paradigma"]),
maxindex(args["nucleopres"]),
maxindex(args["nucleopresa"]),
maxindex(args["nucleoperf"]),
maxindex(args["nucleofut"])) do
local conjinfo = {}
local encontre_irreg = false
for _,p in ipairs(paradigmas_irregulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
local rxx = match(v, rx)
if args["paradigma"][N] == p[1] or rxx then
conjinfo = deepcopy(p[3])
conjinfo.rxx = rxx
es_irregular = true
paradigmas_reconocidos[p[1]] = true
encontre_irreg = true
break
end
end
if encontre_irreg then
break
end
end
local encontre_reg = false
for _,p in ipairs(paradigmas_regulares[sufijo_inf]) do
for _,rx in ipairs(p[2]) do
if args["paradigma"][N] == p[1] or find(v, rx) then
if size(p[3]) == 0 then
paradigmas_reconocidos[p[1]] = true
end
for k, z in pairs(p[3]) do
if not conjinfo[k] then -- no puede sobreescribir la información del paradigma irregular
conjinfo[k] = z
paradigmas_reconocidos[p[1]] = true
end
end
encontre_reg = true
break
end
end
if encontre_reg then
break
end
end
assert(encontre_reg, "paradigma no reconocido")
conjinfo.nucleo_inf = conjinfo.nucleo
conjinfo.nexo_inf = conjinfo.nexo or ""
conjinfo.sufijo_inf = conjinfo.sufijo or sufijo_inf
local v_ = gsub(v, "dur$", "dure") -- excepción: en dur no coincide nucleo + sufijo con el verbo entero, necesito forzarlo a que coincida para buscar el prefijo correctamente
if conjinfo.nucleo_inf == nil then -- puede ser false
if conjinfo.rxx then
conjinfo.nucleo_inf = sub(conjinfo.rxx, 1, max(len(conjinfo.rxx) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
else
conjinfo.nucleo_inf = sub(v_, 1, max(len(v_) - len(conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
end
if type(conjinfo.nucleo_inf) == "string" then
if not conjinfo.prefijo then
conjinfo.prefijo = sub(v_, 1, max(len(v_) - len(conjinfo.nucleo_inf..conjinfo.nexo_inf..conjinfo.sufijo_inf), 0)) -- no busco regex porque pueden haberse cambiado
end
conjinfo.prefijo = gsub(conjinfo.prefijo, AV, quitar_tilde)
conjinfo.nucleo_inf = gsub(conjinfo.nucleo_inf, AV, quitar_tilde)
else
conjinfo.prefijo = ""
end
conjinfo.nucleopres = args["nucleopres"][N] and {args["nucleopres"][N]} or (conjinfo.nucleopres and conjinfo.nucleopres or {})
conjinfo.nucleopresa = args["nucleopresa"][N] and {args["nucleopresa"][N]} or (conjinfo.nucleopresa and conjinfo.nucleopresa or {})
conjinfo.nucleoperf = args["nucleoperf"][N] and {args["nucleoperf"][N]} or (conjinfo.nucleoperf and conjinfo.nucleoperf or {})
conjinfo.nucleofut = args["nucleofut"][N] and {args["nucleofut"][N]} or (conjinfo.nucleofut and conjinfo.nucleofut or {})
conjinfo.nucleopres1 = {}
conjinfo.nucleopres2 = {}
conjinfo.nucleopres3 = {}
local function esta_en_clase(verbo, arr)
for _,a in ipairs(arr) do
if find(verbo, a) then
return true
end
end
return false
end
-- si conjinfo.nucleo_inf == false, no conjugo nada
if conjinfo.nucleo_inf then
if conjinfo.nucleopres[1] == nil and conjinfo.sufijo_inf == "ir" then
if esta_en_clase(v, verbos_mixtos) then
conjinfo.nucleopres[1] = "INCO"
conjinfo.nucleopres[2] = "PURO"
elseif esta_en_clase(v, verbos_puros) then
conjinfo.nucleopres[1] = "PURO"
else
conjinfo.nucleopres[1] = "INCO"
end
end
local function parsear_nucleo(nucl_)
if not nucl_ then
return conjinfo.nucleo_inf
end
local nucl, marca = match(nucl_, "^(.*)([{%[].-[}%]])$")
if not marca then
nucl = nucl_
marca = ""
end
if nucl == "g" then
local aux = conjinfo.nucleo_inf
local sust1, sust2
aux, sust1 = gsubb(aux, "d$", "#g#")
aux, sust2 = gsubb(aux, "([aeio])u$", "%1#g#")
if not sust1 and not sust2 then
aux = aux.."#g#"
end
return aux..marca
end
if nucl == "i" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#i#%2")..marca
end
if nucl == "ï" then
return gsub(conjinfo.nucleo_inf, "^(.*)ei?(.-)$", "%1#ï#%2")..marca
end
if nucl == "u" then
return gsub(conjinfo.nucleo_inf, "^(.*)ou?(.-)$", "%1#u#%2")..marca
end
if nucl == "PURO" or nucl == "REG" then
return conjinfo.nucleo_inf..marca
end
if nucl == "INCO" then
return conjinfo.nucleo_inf..conjinfo.nexo_inf.."~eix~"..marca
end
if nucl == conjinfo.nucleo_inf then
return nucl..marca
end
return "#"..nucl.."#"..marca
end
local a, b, c
if conjinfo.nucleopres[1] then
for i,n_ in ipairs(conjinfo.nucleopres) do
a, b, c = match(n_, "^(.-)%-(.-)%-(.-)$")
if not c then
a, b = match(n_, "^(.-)%-(.-)$")
end
if not b then
a = n_
end
if find(a, "^INCO") then
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
es_inco = true
else
insert_if_not(conjinfo.nucleopres1, parsear_nucleo(a))
insert_if_not(conjinfo.nucleopres2, parsear_nucleo(b))
insert_if_not(conjinfo.nucleopres3, c and parsear_nucleo(c) or ((a and not b) and parsear_nucleo(a) or conjinfo.nucleo_inf))
es_puro = true
end
end
else
insert_if_not(conjinfo.nucleopres1, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres2, conjinfo.nucleo_inf)
insert_if_not(conjinfo.nucleopres3, conjinfo.nucleo_inf)
end
if not conjinfo.nucleoperf[1] and (a or c) and es_puro and not es_inco then
conjinfo.nucleoperf = deepcopy(conjinfo.nucleopres3)
elseif conjinfo.nucleoperf[1] then
for i,n_ in ipairs(conjinfo.nucleoperf) do
conjinfo.nucleoperf[i] = parsear_nucleo(n_)
conjinfo.hay_nucleoperf = true
end
else
insert_if_not(conjinfo.nucleoperf, conjinfo.nucleo_inf)
end
if conjinfo.nucleofut[1] then
for i,n_ in ipairs(conjinfo.nucleofut) do
conjinfo.nucleofut[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleofut, conjinfo.nucleo_inf)
end
if conjinfo.nucleopresa[1] then
for i,n_ in ipairs(conjinfo.nucleopresa) do
conjinfo.nucleopresa[i] = parsear_nucleo(n_)
end
else
insert_if_not(conjinfo.nucleopresa, conjinfo.nucleo_inf)
end
conjinfo.nucleo_inf = {conjinfo.nucleo_inf}
else
conjinfo.nucleo_inf = {}
end
conjinfo.v = v
for forma,_ in pairs(formas) do
agregar_forma(conjugado, conjinfo, forma)
end
end
local resultante = sobreescribir_formas(conjugado, args)
local defectivo = comprobar_defectivo(resultante, {"^imper"}, tostr)
local part_no_adj = {}
for _,e in ipairs(resultante.part) do
if find(e, 'PART') or not find(e, 'ADJ') then
insert(part_no_adj, gsub1(e, '%b{}', ''))
end
end
local inf_ = deepcopy(resultante.inf)
local fmtinfo = {adv=adv, pron=pron, art=art, resto=resto, resto_pl=resto_pl,impers=args["impersonal"]}
for form,_ in pairs(formas_no_personales) do
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_no_personales_compuestas) do
resultante[form] = part_no_adj
formatear_conjugacion(resultante, fmtinfo, form)
end
for form,_ in pairs(formas_personales) do
for i,s in ipairs(tostr) do
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
for form,_ in pairs(formas_personales_compuestas) do
for i,s in ipairs(tostr) do
if form:find("peri$") then
resultante[form..s] = inf_
else
resultante[form..s] = part_no_adj
end
formatear_conjugacion(resultante, fmtinfo, form..s)
end
end
local impers = args["impersonal"]
resultante = formatear_formas(resultante, function (x)
return obtener_pronombre(x, impers)
end)
local cs, cs1, cs2, fila_pronombres_ind, fila_pronombres_subj, fila_pronombres_cond, fila_pronombres_imper, mostrar_imper
if impers == "3" then
if args["indirecto"] then
error("no implementado aún")
else
fila_pronombres_ind = {"", "(això)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", color=COLOR_IMPER, header=true, class="pc"}
end
cs = 2
elseif impers == "36" then
fila_pronombres_ind = {"", "(això)", "(ells)", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "(això)", "(ells)", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "(que això)", "(que ells)", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "(això)", "(ells)", color=COLOR_IMPER, header=true, class="pc"}
cs = 3
else
fila_pronombres_ind = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_IND, header=true, class="pc"}
fila_pronombres_cond = {"", "jo", "tu", "el, ella, vostè", "nosaltres", "vosaltres, vós", "ells, elles, vostès", color=COLOR_COND, header=true, class="pc"}
fila_pronombres_subj = {"", "que jo", "que tu", "que el, que ella, que vostè", "que nosaltres", "que vosaltres, que vós", "que ells, que elles, que vostès", color=COLOR_SUBJ, header=true, class="pc"}
fila_pronombres_imper = {"", "―", "(tu)", "(vostè)", "(nosaltres)", "(vosaltres, vós)", "(vostès)", color=COLOR_IMPER, header=true, class="pc"}
cs = 7
mostrar_imper = true
end
cs1 = math.floor(cs / 2)
cs2 = cs - cs1
local t = {}
t[1] = {{"Formas no personales (verboides)", colspan=cs}, color=COLOR_H, header=true}
if impers == "3" then
resultante.inf[1] = resultante.inf[1]..", "..resultante.inf_comp[1]
resultante.ger[1] = resultante.ger[1]..", "..resultante.ger_comp[1]
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
else
resultante.inf.colspan = cs1-1
resultante.ger.colspan = cs1-1
resultante.part.colspan = cs1-1
resultante.inf_comp.colspan = cs2
resultante.ger_comp.colspan = cs2
t[2] = {{"Infinitivo", header=true, color=COLOR_NP}, resultante.inf, resultante.inf_comp}
t[3] = {{"Gerundio", header=true, color=COLOR_NP}, resultante.ger, resultante.ger_comp}
t[4] = {{"Participio", header=true, color=COLOR_NP}, resultante.part}
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
t[5] = {{"Formas personales", colspan=cs}, color=COLOR_H, header=true}
t[6] = {{"Modo indicativo", colspan=cs}, color=COLOR_IND, header=true}
t[7] = fila_pronombres_ind
t[8] = {{"Presente", color=COLOR_IND, header=true}, ic("ind_pres")}
t[9] = {{"Pretérito imperfecto", color=COLOR_IND, header=true}, ic("ind_imp")}
t[10] = {{"Pretérito perfecto", color=COLOR_IND, header=true}, ic("ind_perf")}
t[11] = {{"Pretérito perifrástico", color=COLOR_IND, header=true}, ic("ind_peri")}
t[12] = {{"Pretérito pluscuamperfecto", color=COLOR_IND, header=true}, ic("ind_pluperf")}
t[13] = {{"Pretérito perfecto compuesto", color=COLOR_IND, header=true}, ic("ind_perf_comp")}
t[14] = {{"Futuro", color=COLOR_IND, header=true}, ic("ind_fut")}
t[15] = {{"Futuro compuesto", color=COLOR_IND, header=true}, ic("ind_fut_comp")}
t[16] = {{f("Pretérito anterior{†}"), color=COLOR_IND, header=true}, ic("ind_anter")}
t[17] = {{"Modo condicional", colspan=cs}, color=COLOR_COND, header=true}
t[18] = fila_pronombres_cond
t[19] = {{"Condicional simple", color=COLOR_COND, header=true}, ic("cond")}
t[20] = {{"Condicional compuesto", color=COLOR_COND, header=true}, ic("cond_comp")}
t[21] = {{"Modo subjuntivo", colspan=cs}, color=COLOR_SUBJ, header=true}
t[22] = fila_pronombres_subj
t[23] = {{"Presente", color=COLOR_SUBJ, header=true}, ic("subj_pres")}
t[24] = {{"Pretérito imperfecto", color=COLOR_SUBJ, header=true}, ic("subj_imp")}
t[25] = {{"Pretérito perfecto", color=COLOR_SUBJ, header=true}, ic("subj_perf")}
t[26] = {{"Pretérito perifrástico", color=COLOR_SUBJ, header=true}, ic("subj_peri")}
t[27] = {{"Pretérito pluscuamperfecto", color=COLOR_SUBJ, header=true}, ic("subj_pluperf")}
t[28] = {{f("Pretérito anterior{†}"), color=COLOR_SUBJ, header=true}, ic("subj_anter")}
t[29] = {{"Modo imperativo", colspan=cs}, color=COLOR_IMPER, header=true}
t[30] = fila_pronombres_imper
if mostrar_imper then
t[31] = {{"Presente", color=COLOR_IMPER, header=true}, ic("imper")}
else
t[31] = {{"Como verbo "..(impers == "3" and "impersonal" or "terciopersonal")..", ''"..tit.."'' CARECE de imperativo", color=COLOR_IMPER, header=true, colspan=cs}}
end
t[32] = {{f("Leyenda: † arcaico, x no normativo, PART se usa más como participio, ADJ se usa más como adjetivo, ~■~ cambio ortográfico, #■# irregularidad"), colspan=cs}}
args["nota"] = args["nota"] or ""
if args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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 args["impersonal"] == "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
t[33] = {{args["nota"] and args["nota"] or "", colspan=cs}}
local paradigmas_t = {}
local cats = {}
if es_inco and es_puro then
paradigmas_reconocidos["acudir"] = true
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
elseif es_inco then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = true
paradigmas_reconocidos["dormir"] = nil
elseif es_puro then
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = true
end
if es_irregular then
insert(cats, "CA:Verbos irregulares")
paradigmas_reconocidos["amar"] = nil
paradigmas_reconocidos["temer"] = nil
paradigmas_reconocidos["acudir"] = nil
paradigmas_reconocidos["partir"] = nil
paradigmas_reconocidos["dormir"] = nil
paradigmas_reconocidos["abatre"] = nil
else
insert(cats, "CA:Verbos regulares")
end
for p, _ in pairs(paradigmas_reconocidos) do
insert(paradigmas_t, p)
insert(cats, "CA:Verbos del paradigma "..p)
end
impers = impers or ""
if impers == "3" or find(impers, "^u[tm]c3$") then
insert(cats, "CA:Verbos impersonales")
end
if impers == "36" or find(impers, "^u[tm]c36$") then
insert(cats, "CA:Verbos terciopersonales")
end
if find(impers, "^ind") then
insert(cats, "CA:Verbos de objeto indirecto")
end
if defectivo then
insert(cats, "CA:Verbos defectivos")
end
local inc_enc
if sufijo_inf == "ar" then
insert(cats, "CA:Verbos de la primera conjugación")
elseif sufijo_inf == "er" then
insert(cats, "CA:Verbos de la segunda conjugación")
elseif sufijo_inf == "ir" then
insert(cats, "CA:Verbos de la tercera conjugación")
if not es_inco and not es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
elseif es_inco and es_puro then
insert(cats, "CA:Verbos incoativos")
insert(cats, "CA:Verbos puros")
inc_enc = "incoativo/puro"
elseif es_inco then
insert(cats, "CA:Verbos incoativos")
inc_enc = "incoativo"
elseif es_puro then
insert(cats, "CA:Verbos puros")
inc_enc = "puro"
end
else
insert(cats, "CA:Verbos de la cuarta conjugación")
end
local q_t = {es_irregular and "irregular" or "regular", inc_enc}
return renderizar_tabla(
frame,
"'''Conjugación de ''"..tit..(tit == "haver" and " (AUXILIAR, VER NOTA)" or "").."'''''  paradigma"..(#paradigmas_t > 1 and "s" or "")..": "..concat(paradigmas_t, ", ").." ("..concat(q_t, ", ")..")",
t,
ns == 0 and cats or {})
end
return export
iyib4nvb1t34ezgk9d6kyxeufw7uxr3
infraesbozo
0
1058723
6123901
5862964
2026-07-25T20:32:24Z
TMCbot
164594
.
6123901
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=infra-esbozo}}
=== Etimología ===
{{etimología|prefijo|infra|esbozo}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|wiki}}: Entrada que no tiene suficiente contenido como para constituir un [[esbozo]] de artículo o anexo válido.
==== Véase también ====
{{w|Wikipedia:Infraesbozo|Infraesbozo}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
f8p6buu0o3ng1qhbukebuytdwu6zdv6
waffle
0
1065443
6123591
6123509
2026-07-25T17:34:31Z
CitationsFreak
149699
añadí categoría
6123591
wikitext
text/x-wiki
== {{lengua|en}} ==
=== Etimología ===
{{etimología|leng=en|nl|wafel}}
==== {{sustantivo|en}} ====
{{en.sust|c}}
;1: {{csem|leng=en|alimentos}} [[wafle]]
==== Véase también ====
{{w|leng=en}}
== Referencias y notas ==
<references />
tvdy3o1bfkioblzpb0t295ciq4j8a7n
6123592
6123591
2026-07-25T17:35:30Z
CitationsFreak
149699
/* Etimología */ -- y dos puntos
6123592
wikitext
text/x-wiki
== {{lengua|en}} ==
=== Etimología ===
{{etimología|leng=en|nl|wafel}}
==== {{sustantivo|en}} ====
{{en.sust|c}}
;1: {{csem|leng=en|alimentos}}: [[wafle]]
==== Véase también ====
{{w|leng=en}}
== Referencias y notas ==
<references />
ia81m0p0rm5j7mnfhpp8qjxvuot16zb
6123593
6123592
2026-07-25T17:35:56Z
CitationsFreak
149699
/* {{sustantivo|en}} */
6123593
wikitext
text/x-wiki
== {{lengua|en}} ==
=== Etimología ===
{{etimología|leng=en|nl|wafel}}
==== {{sustantivo|en}} ====
{{en.sust|c}}
;1 {{csem|leng=en|alimentos}}: [[wafle]]
==== Véase también ====
{{w|leng=en}}
== Referencias y notas ==
<references />
qet2verklpschbe381e3k8xpkz1byu1
abalienaciones
0
1065459
6123582
2026-07-25T16:20:13Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=ab-alienaciones}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo|abalienación|plural}}. == Referencias y notas == <references />»
6123582
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=ab-alienaciones}}
=== Forma flexiva ===
==== Forma sustantiva ====
;1: {{forma sustantivo|abalienación|plural}}.
== Referencias y notas ==
<references />
d5msxuh32ed766mmt78rkem3ituywia
subiectum
0
1065460
6123583
2026-07-25T16:23:30Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|la}} == {{pron-graf|leng=la}} === Etimología === {{etimología|leng=la}}. ==== {{sustantivo neutro|la}} ==== ;1: {{plm|sujeto}}. ==== Declinación ==== {{la.sust|subiectum.2}} == Referencias y notas == <references />»
6123583
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|la}} ==
{{pron-graf|leng=la}}
=== Etimología ===
{{etimología|leng=la}}.
==== {{sustantivo neutro|la}} ====
;1: {{plm|sujeto}}.
==== Declinación ====
{{la.sust|subiectum.2}}
== Referencias y notas ==
<references />
n26qicfmfeu72ttrh4zdsnk9m0a57me
pormenores
0
1065461
6123586
2026-07-25T16:37:21Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Forma flexiva === ==== Forma sustantiva ==== ;1: {{forma sustantivo|pormenor|plural}}. == Referencias y notas == <references />»
6123586
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Forma flexiva ===
==== Forma sustantiva ====
;1: {{forma sustantivo|pormenor|plural}}.
== Referencias y notas ==
<references />
tqzmq14r07id7ofjiit7csmzzj7qf4f
bicicleteada
0
1065462
6123589
2026-07-25T17:10:54Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|deverbal|bicicletear}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: Evento en donde se reúnen varias personas a la intemperie para iniciar un recorrido en bicicleta. {{sinónimo|pedaleada}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123589
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|deverbal|bicicletear}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1: Evento en donde se reúnen varias personas a la intemperie para iniciar un recorrido en bicicleta.
{{sinónimo|pedaleada}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
lz7roqgvcjca6vpwoc8bv1y2ha4om9h
tolondro
0
1065463
6123599
2026-07-25T17:46:31Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|osp|torondo|chichón}}, {{etim|la|turunda}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: Bulto o [[chichón]] que se levanta en alguna parte del cuerpo, especialmente en la cabeza, de resultas de un golpe. {{sinónimo|chichón|bollo|tolondrón|burujón|turumbón|bodoque|chibola|chindondo|cototo}} ;2: {{plm|aturdido}}. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Refe…»
6123599
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|osp|torondo|chichón}}, {{etim|la|turunda}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Bulto o [[chichón]] que se levanta en alguna parte del cuerpo, especialmente en la cabeza, de resultas de un golpe.
{{sinónimo|chichón|bollo|tolondrón|burujón|turumbón|bodoque|chibola|chindondo|cototo}}
;2: {{plm|aturdido}}.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
t5438e5tuzirotctj06u8pn7ot4foho
6123600
6123599
2026-07-25T17:47:12Z
Tmagc
158167
6123600
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|osp|torondo|chichón}}, {{etim|la|turunda}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1: Bulto o [[chichón]] que se levanta en alguna parte del cuerpo, especialmente en la cabeza, de resultas de un golpe.
{{sinónimo|chichón|bollo|tolondrón|burujón|turumbón|bodoque|chibola|chindondo|cototo}}
==== {{adjetivo|es}} ====
{{es.adj}}
;2: {{plm|aturdido}}.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
6qamr7nib27uxc5ydzpkdu18r2334if
cointeresado
0
1065464
6123719
2026-07-25T18:59:58Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=co-interesado}} === Etimología === {{etimología|prefijo|co|interesado}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: Interesado juntamente con otro u otros en un todo del cual han de participar.<ref>{{DLE1925}}</ref> {{uso|utcs}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123719
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=co-interesado}}
=== Etimología ===
{{etimología|prefijo|co|interesado}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Interesado juntamente con otro u otros en un todo del cual han de participar.<ref>{{DLE1925}}</ref>
{{uso|utcs}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
ffnvinglmu5c1czhqkrlstg23h8ywob
asambleísmo
0
1065465
6123722
2026-07-25T19:13:33Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|v=asamblearismo}} === Etimología === {{etimología|sufijo|asamblea|ismo}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: Tendencia a querer resolver todas las disputas por medio de asambleas. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123722
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|v=asamblearismo}}
=== Etimología ===
{{etimología|sufijo|asamblea|ismo}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1: Tendencia a querer resolver todas las disputas por medio de asambleas.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
0ql3613x9dg4giiilghgl81c5rqok7m
asamblearismo
0
1065466
6123723
2026-07-25T19:13:57Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1: {{variante|asambleísmo}}.<ref>{{FBBVA}}</ref> ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123723
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1: {{variante|asambleísmo}}.<ref>{{FBBVA}}</ref>
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
hact3pfcedgk81ngd185fwr85kh3pfo
malaconsejado
0
1065467
6123954
2026-07-25T20:34:58Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=mal-aconsejado}} === Etimología === {{etimología|compuesto|mal|aconsejado}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1: Que obra desatinadamente llevado de malos consejos. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123954
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-aconsejado}}
=== Etimología ===
{{etimología|compuesto|mal|aconsejado}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Que obra desatinadamente llevado de malos consejos.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
ahrfuyqlj3atvgv6cp0gkv64jtp6ajh
6123955
6123954
2026-07-25T20:35:10Z
Tmagc
158167
6123955
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=mal-aconsejado}}
=== Etimología ===
{{etimología|compuesto|mal|aconsejado}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Que obra desatinadamente llevado de malos consejos.<ref>{{DLE1925}}</ref>
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
m4swpndb4mkajyg1hqez79j8fyzhgze
postestructuralismo
0
1065468
6123962
2026-07-25T20:39:37Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=post-estructuralismo}} === Etimología === {{etimología|prefijo|post|estructuralismo}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|filosofía}}: {{variante|posestructuralismo}}. == Referencias y notas == <references />»
6123962
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=post-estructuralismo}}
=== Etimología ===
{{etimología|prefijo|post|estructuralismo}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|filosofía}}: {{variante|posestructuralismo}}.
== Referencias y notas ==
<references />
bmm31qxao1nqirsjkpd9fmn8akawfrp
posthumanismo
0
1065469
6123964
2026-07-25T20:41:15Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=post-humanismo}} === Etimología === {{etimología|prefijo|post|humanismo}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|filosofía}}: {{variante|poshumanismo}}. == Referencias y notas == <references />»
6123964
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=post-humanismo}}
=== Etimología ===
{{etimología|prefijo|post|humanismo}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|filosofía}}: {{variante|poshumanismo}}.
== Referencias y notas ==
<references />
tbkj44j6ouagh4byi37ncnwm2rc0wi5
poshumanismo
0
1065470
6123965
2026-07-25T20:42:09Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=pos-humanismo}} === Etimología === {{etimología|prefijo|pos|humanismo}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|filosofía}}: Cualquiera de las corrientes de pensamiento que aspiran a una superación del humanismo en el sentido de las ideas y las imágenes provenientes del Renacimiento clásico. ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} =…»
6123965
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-humanismo}}
=== Etimología ===
{{etimología|prefijo|pos|humanismo}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|filosofía}}: Cualquiera de las corrientes de pensamiento que aspiran a una superación del humanismo en el sentido de las ideas y las imágenes provenientes del Renacimiento clásico.
==== Véase también ====
{{w}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
tcnngd7qb1aa8pnax8afitpnu19ls85
postoperatorio
0
1065471
6123967
2026-07-25T20:43:33Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=post-operatorio}} === Etimología === {{etimología|prefijo|post|operatorio}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|medicina|cirugía}}: Relacionado con el período posterior a la operación. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123967
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=post-operatorio}}
=== Etimología ===
{{etimología|prefijo|post|operatorio}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1 {{csem|medicina|cirugía}}: Relacionado con el período posterior a la operación.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
hqln9xt6cdvgh6cbk827w4uhjorz5er
6123968
6123967
2026-07-25T20:43:52Z
Tmagc
158167
6123968
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=post-operatorio}}
=== Etimología ===
{{etimología|prefijo|post|operatorio}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1 {{csem|medicina|cirugía}}: {{variante|posoperatorio}}.
== Referencias y notas ==
<references />
h9unw1fq0wxjrwrm52jgnxpf8o9wfb0
posoperatorio
0
1065472
6123969
2026-07-25T20:44:24Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=pos-operatorio|v=post-operatorio}} === Etimología === {{etimología|prefijo|pos|operatorio}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|medicina|cirugía}}: Relacionado con el período posterior a la operación. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123969
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-operatorio|v=post-operatorio}}
=== Etimología ===
{{etimología|prefijo|pos|operatorio}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1 {{csem|medicina|cirugía}}: Relacionado con el período posterior a la operación.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
gkuopm7ys7svr7o0a786yuezcquf343
6123970
6123969
2026-07-25T20:44:32Z
Tmagc
158167
6123970
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-operatorio|v=postoperatorio}}
=== Etimología ===
{{etimología|prefijo|pos|operatorio}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1 {{csem|medicina|cirugía}}: Relacionado con el período posterior a la operación.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
jaq8yyt0eko9ht4w68s22ye21uie9u5
subacetato
0
1065473
6123971
2026-07-25T20:47:08Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=sub-acetato}} === Etimología === {{etimología|prefijo|sub|acetato}}. ==== {{sustantivo masculino|es}} ==== {{es.sust}} ;1 {{csem|química}}: {{plm|acetato}} que contiene un exceso en su constituyente básico. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123971
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acetato}}
=== Etimología ===
{{etimología|prefijo|sub|acetato}}.
==== {{sustantivo masculino|es}} ====
{{es.sust}}
;1 {{csem|química}}: {{plm|acetato}} que contiene un exceso en su constituyente básico.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
0oc2ig3t4i4tufc9w6miss2ganeact2
subacuático
0
1065474
6123972
2026-07-25T20:48:53Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=sub-acuático}} === Etimología === {{etimología|prefijo|sub|acuático}}. ==== {{adjetivo|es}} ==== {{es.adj}} ;1 {{csem|natación}}: Dicho de las carreras en donde los nadadores deben recorrer la pileta entera sin salir a tomar aire. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123972
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acuático}}
=== Etimología ===
{{etimología|prefijo|sub|acuático}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1 {{csem|natación}}: Dicho de las carreras en donde los nadadores deben recorrer la pileta entera sin salir a tomar aire.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
63gkg1b8a8oppalctm6k4sccmlqdqn8
6123973
6123972
2026-07-25T20:49:13Z
Tmagc
158167
/* {{adjetivo|es}} */
6123973
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-acuático}}
=== Etimología ===
{{etimología|prefijo|sub|acuático}}.
==== {{adjetivo|es}} ====
{{es.adj}}
;1: Que ocurre por debajo del agua.
;2 {{csem|natación}}: Dicho de las carreras en donde los nadadores deben recorrer la pileta entera sin salir a tomar aire.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
kbxkge8e49ut1a30l7sg6uwjy8u3stc
subestación
0
1065475
6123974
2026-07-25T20:52:39Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=sub-estación}} === Etimología === {{etimología|prefijo|sub|estación}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|eléctricidad}}: Central eléctrica que está subordinada a otra central de mayor jerarquía. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123974
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-estación}}
=== Etimología ===
{{etimología|prefijo|sub|estación}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1 {{csem|eléctricidad}}: Central eléctrica que está subordinada a otra central de mayor jerarquía.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
jxf4hg57of4gi9vxia6v2ayq10se2ai
subinspección
0
1065476
6123975
2026-07-25T20:53:53Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=sub-inspección}} === Etimología === {{etimología|prefijo|sub|inspección}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: Cargo del [[subinspector]].<ref name=d>{{DLE1925}}</ref> ;2: Oficina del [[subinspector]].<ref name=d /> ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123975
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-inspección}}
=== Etimología ===
{{etimología|prefijo|sub|inspección}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1: Cargo del [[subinspector]].<ref name=d>{{DLE1925}}</ref>
;2: Oficina del [[subinspector]].<ref name=d />
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
mnarbf419z8rq58l4owhov70mqb8bx5
subinspector
0
1065477
6123976
2026-07-25T20:54:43Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=sub-inspector}} === Etimología === {{etimología|prefijo|sub|inspector}}. ==== {{sustantivo masculino y femenino|es}} ==== {{es.sust|mf}} ;1 {{csem|ocupaciones}}: Jefe inmediato después del inspector. ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123976
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=sub-inspector}}
=== Etimología ===
{{etimología|prefijo|sub|inspector}}.
==== {{sustantivo masculino y femenino|es}} ====
{{es.sust|mf}}
;1 {{csem|ocupaciones}}: Jefe inmediato después del inspector.
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
cea6cf81y788j4cqa926o347ggkhutp
posadolescencia
0
1065479
6123981
2026-07-25T21:00:49Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf|ayuda=pos-adolescencia}} === Etimología === {{etimología|prefijo|pos|adolescencia}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1: Período posterior a la adolescencia y anterior a la madurez definitiva. ==== Véase también ==== {{w|Adultez emergente y adultez temprana}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123981
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|ayuda=pos-adolescencia}}
=== Etimología ===
{{etimología|prefijo|pos|adolescencia}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1: Período posterior a la adolescencia y anterior a la madurez definitiva.
==== Véase también ====
{{w|Adultez emergente y adultez temprana}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
2r0sf6lb5oiqmnl2olhe0wlgvu5b1vx
choquear
0
1065480
6123990
2026-07-25T22:12:03Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|choque|ear}}. ==== {{verbo transitivo|es}} ==== ;1: {{variante|shoquear}}. {{uso|umep}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123990
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|sufijo|choque|ear}}.
==== {{verbo transitivo|es}} ====
;1: {{variante|shoquear}}.
{{uso|umep}}
==== Conjugación ====
{{es.v}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
lx0okdiarg799v053hefpkdgl8u4fcw
adequar
0
1065481
6123991
2026-07-25T22:13:38Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|adecuar}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6123991
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|adecuar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
lrj5xz6cgc6mp77c8llzp7kh5exox6q
shoquear
0
1065482
6123992
2026-07-25T22:25:30Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|sufijo|shock|ear}}. ==== {{verbo transitivo|es}} ==== ;1: {{plm|sorprender}}, [[impresionar]], [[pasmar]]. {{uso|coloquial|umep}} {{ámbito|América}} ==== Conjugación ==== {{es.v}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6123992
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|sufijo|shock|ear}}.
==== {{verbo transitivo|es}} ====
;1: {{plm|sorprender}}, [[impresionar]], [[pasmar]].
{{uso|coloquial|umep}}
{{ámbito|América}}
==== Conjugación ====
{{es.v}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
feekdn6encd2nf5farqiiywdwxwe7z3
6123994
6123992
2026-07-25T22:25:47Z
Tmagc
158167
6123994
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf|v=choquear}}
=== Etimología ===
{{etimología|sufijo|shock|ear}}.
==== {{verbo transitivo|es}} ====
;1: {{plm|sorprender}}, [[impresionar]], [[pasmar]].
{{uso|coloquial|umep}}
{{ámbito|América}}
==== Conjugación ====
{{es.v}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
bzzdzs4vfhnqewuib73at4xpunk98j2
esglaiar
0
1065483
6123996
2026-07-25T22:30:00Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la-vul|*exgladiāre}}, {{etim|leng=ca|la|gladius}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|sobresaltar}}, [[asustar]]. {{uso|leng=ca|umep}} ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6123996
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la-vul|*exgladiāre}}, {{etim|leng=ca|la|gladius}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|sobresaltar}}, [[asustar]].
{{uso|leng=ca|umep}}
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
oe7f4l4c0hsm9jks8xwbiso91mc92f5
canviar
0
1065484
6123997
2026-07-25T22:31:15Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|cambiar}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6123997
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|cambiar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
e3na7h18v2fq7wnhfser2z0dm9fo9m2
torçar
0
1065485
6123999
2026-07-25T22:40:05Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|torcer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6123999
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|torcer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
2onmv35cijujal6sryfj0qaq8doy5wh
caldre
0
1065486
6124003
2026-07-25T22:48:54Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo|ca|terciopersonal}} ==== ;1: Ser necesario. ==== Conjugación ==== {{ca.v|impers=36}} == Referencias y notas == <references />»
6124003
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo|ca|terciopersonal}} ====
;1: Ser necesario.
==== Conjugación ====
{{ca.v|impers=36}}
== Referencias y notas ==
<references />
huzo796z37y4ry1kmfscbaroys3ajad
6124004
6124003
2026-07-25T22:49:33Z
Tmagc
158167
/* {{verbo|ca|terciopersonal}} */
6124004
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo|ca|terciopersonal}} ====
;1: Ser (algo) necesario, [[precisarse]], [[requerirse]].
==== Conjugación ====
{{ca.v|impers=36}}
== Referencias y notas ==
<references />
oz7kyhfiro17pnk068z7x7p0dyegzmr
6124005
6124004
2026-07-25T22:49:45Z
Tmagc
158167
/* {{verbo|ca|terciopersonal}} */
6124005
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo|ca|terciopersonal}} ====
;1: Ser (algo) necesario, [[precisar]]se, [[requerir]]se.
==== Conjugación ====
{{ca.v|impers=36}}
== Referencias y notas ==
<references />
8jsn85byd094l8m69w3v22uqy6naikg
pertànyer
0
1065487
6124009
2026-07-25T23:09:06Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|roa-oca|tànyer}}, {{etim|la|tangere|leng=ca}} con influjo de {{l+|la|pertineo|alt=pertinēre}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|pertenecer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124009
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|roa-oca|tànyer}}, {{etim|la|tangere|leng=ca}} con influjo de {{l+|la|pertineo|alt=pertinēre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|pertenecer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
5wb7ncm5exehrl00sac6cde83cbuc3u
conèixer
0
1065488
6124010
2026-07-25T23:11:22Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|roa-oca|conòixer}}, {{etim|la-vul|leng=ca|*conōscere}}, {{etim|leng=ca|la|cognoscere|alt=cognōscere}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|conocer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124010
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|roa-oca|conòixer}}, {{etim|la-vul|leng=ca|*conōscere}}, {{etim|leng=ca|la|cognoscere|alt=cognōscere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|conocer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
etx9288k2g5dpzy0ym3dgohq4pc3x53
créixer
0
1065489
6124011
2026-07-25T23:13:32Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|crescere|alt=crēscere}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|crecer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124011
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|crescere|alt=crēscere}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|crecer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
4hmvchf4gnfnqppy14lq7zeuvi7etw8
córrer
0
1065490
6124013
2026-07-25T23:15:29Z
Tmagc
158167
Página creada con «{{desambiguación|correr}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|currere}}. ==== {{verbo|ca|transitivo|intransitivo}} ==== ;1: {{plm|correr}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124013
wikitext
text/x-wiki
{{desambiguación|correr}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|currere}}.
==== {{verbo|ca|transitivo|intransitivo}} ====
;1: {{plm|correr}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
61oqh23zd7xan0pg6jw85w31grkaatf
cabre
0
1065491
6124018
2026-07-25T23:20:35Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|fone|caber}}, {{etim|leng=ca|capere}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|caber}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124018
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|fone|caber}}, {{etim|leng=ca|capere}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|caber}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
2v65snbdpvqb1u796ixybysw9xlivh5
6124019
6124018
2026-07-25T23:20:47Z
Tmagc
158167
6124019
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|fone|caber}}, {{etim|leng=ca|la|capere}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|caber}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
s5n2m3jkbhbz3sj35fy34z7o1vczp9f
esprémer
0
1065492
6124021
2026-07-25T23:25:15Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|exprimir}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124021
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|exprimir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
lll1t62frt8bxd484231czqjn0rdm3i
omplir
0
1065493
6124024
2026-07-25T23:31:55Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|impleo|alt=implēre}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|henchir}}, [[llenar]]. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124024
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|impleo|alt=implēre}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|henchir}}, [[llenar]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
j0hmn0nfx4vjzx7qpja0od0l8yg03kf
lluir
0
1065494
6124027
2026-07-25T23:53:43Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología 1 === {{etimología|leng=ca|la|luceo|alt=lūcēre}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|resplandecer}}, [[brillar]]. ;2: {{plm|distinguirse}}. ==== Conjugación ==== {{ca.v}} === Etimología 2 === {{etimología|leng=ca|la|luo|alt=luere}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|redimir}}. {{uso|leng=ca|obsoleto}} ==== Conjugación ==== {{ca.v|ger=no|part=no|ind_pres=n…»
6124027
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|luceo|alt=lūcēre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|resplandecer}}, [[brillar]].
;2: {{plm|distinguirse}}.
==== Conjugación ====
{{ca.v}}
=== Etimología 2 ===
{{etimología|leng=ca|la|luo|alt=luere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|redimir}}.
{{uso|leng=ca|obsoleto}}
==== Conjugación ====
{{ca.v|ger=no|part=no|ind_pres=no|ind_imp=no|ind_perf=no|ind_fut=no|subj_pres=no|subj_imp=no|cond=no|imper=no}}
== Referencias y notas ==
<references />
j6hkec27ma0qhqlz8ul0t5hr430w3k8
6124028
6124027
2026-07-25T23:54:17Z
Tmagc
158167
/* {{verbo transitivo|ca}} */
6124028
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|luceo|alt=lūcēre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|resplandecer}}, [[brillar]].
;2: {{plm|distinguirse}}.
==== Conjugación ====
{{ca.v}}
=== Etimología 2 ===
{{etimología|leng=ca|la|luo|alt=luere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|luir}}, [[redimir]].
{{uso|leng=ca|obsoleto}}
==== Conjugación ====
{{ca.v|ger=no|part=no|ind_pres=no|ind_imp=no|ind_perf=no|ind_fut=no|subj_pres=no|subj_imp=no|cond=no|imper=no}}
== Referencias y notas ==
<references />
obdgxvga9vwz9ulrii2rrr0qpg8e3nw
6124029
6124028
2026-07-25T23:55:01Z
Tmagc
158167
/* {{verbo transitivo|ca}} */
6124029
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|luceo|alt=lūcēre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|resplandecer}}, [[brillar]].
;2: {{plm|distinguirse}}.
==== Conjugación ====
{{ca.v}}
=== Etimología 2 ===
{{etimología|leng=ca|la|luo|alt=luere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|luir}}, [[redimir]] a alguien de un impuesto.
{{uso|leng=ca|obsoleto}}
==== Conjugación ====
{{ca.v|ger=no|part=no|ind_pres=no|ind_imp=no|ind_perf=no|ind_fut=no|subj_pres=no|subj_imp=no|cond=no|imper=no}}
== Referencias y notas ==
<references />
pig92jjventzngeitf0ytbe5esu2eml
brunzir
0
1065495
6124030
2026-07-26T00:17:04Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|zumbar}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124030
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|zumbar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
nk6w6bgh6soqnkshvxbktn9fx8j9dlv
6124031
6124030
2026-07-26T00:24:03Z
Tmagc
158167
/* Etimología */
6124031
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|onom}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|zumbar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
b22h19w554k3ouxzht5c7csd1z5gzd5
aparèixer
0
1065496
6124032
2026-07-26T00:36:34Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|aparecer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124032
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|aparecer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
mmuhlcw5yr8jg8f1zdv5f97iigeq9ti
coquilla
0
1065497
6124034
2026-07-26T00:47:29Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|es}} == {{pron-graf}} === Etimología === {{etimología|fr|coquille|coraza}}. ==== {{sustantivo femenino|es}} ==== {{es.sust}} ;1 {{csem|deporte|boxeo}}: Especie de armazón que protege la zona pélvica de los golpes bajos. ==== Véase también ==== {{w}} ==== Traducciones ==== {{trad-arriba}} {{trad-abajo}} == Referencias y notas == <references />»
6124034
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|es}} ==
{{pron-graf}}
=== Etimología ===
{{etimología|fr|coquille|coraza}}.
==== {{sustantivo femenino|es}} ====
{{es.sust}}
;1 {{csem|deporte|boxeo}}: Especie de armazón que protege la zona pélvica de los golpes bajos.
==== Véase también ====
{{w}}
==== Traducciones ====
{{trad-arriba}}
{{trad-abajo}}
== Referencias y notas ==
<references />
1md0femzc8z9fwzd1zly5b9bhpbqya2
pudir
0
1065498
6124037
2026-07-26T00:56:36Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|osp}} == {{pron-graf|leng=osp}} === Etimología === {{etimología|leng=osp|la-vul|*pūtīre}}, {{etim|leng=osp|la|puteo|alt=pūtēre}}. ==== {{verbo intransitivo|osp}} ==== ;1: {{plm|heder}}, [[apestar]]. == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la-vul|*pūtīre}}, {{etim|leng=ca|la|puteo|alt=pūtēre}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|heder}}, [[apestar]]. ==== Conjugaci…»
6124037
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|osp}} ==
{{pron-graf|leng=osp}}
=== Etimología ===
{{etimología|leng=osp|la-vul|*pūtīre}}, {{etim|leng=osp|la|puteo|alt=pūtēre}}.
==== {{verbo intransitivo|osp}} ====
;1: {{plm|heder}}, [[apestar]].
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la-vul|*pūtīre}}, {{etim|leng=ca|la|puteo|alt=pūtēre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|heder}}, [[apestar]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
o50ok7tas45a8wl6v21e92pr9xkcqcp
vindre
0
1065499
6124038
2026-07-26T00:58:25Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{variante|venir|leng=ca}}. {{ámbito|leng=ca|occidental}} ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124038
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{variante|venir|leng=ca}}.
{{ámbito|leng=ca|occidental}}
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
n5emexzijpnjrb09zvsxxbgyrj2cc4n
Discusión:caligüeva
1
1065500
6124040
2026-07-26T01:38:00Z
~2026-41363-10
183697
Sección nueva: /* La expresión "Calid Wave" jamás ha existido en el inglés, Heat wave o Hot wave son las correctas */
6124040
wikitext
text/x-wiki
== La expresión "Calid Wave" jamás ha existido en el inglés, Heat wave o Hot wave son las correctas ==
La expresión "Calid Wave" jamás ha existido en el inglés, Heat wave o Hot wave son más correctas [[Especial:Contribuciones/~2026-41363-10|~2026-41363-10]] ([[Usuario discusión:~2026-41363-10|discusión]]) 01:38 26 jul 2026 (UTC)
lu8hmlodmfsygr1yetglpy19kuaeehw
punyir
0
1065501
6124041
2026-07-26T01:46:12Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|pungere}}. ==== {{verbo|ca|transitivo|intransitivo}} ==== ;1: {{plm|cargar}}, [[gastar]], [[molestar]] a alguien. {{ámbito|leng=ca|Islas Baleares}} ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124041
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|pungere}}.
==== {{verbo|ca|transitivo|intransitivo}} ====
;1: {{plm|cargar}}, [[gastar]], [[molestar]] a alguien.
{{ámbito|leng=ca|Islas Baleares}}
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
830mihu4z4r9oqz3qpo8n2gwx7dicv8
collir
0
1065502
6124042
2026-07-26T01:49:58Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|colligere}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|cosechar}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124042
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|colligere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|cosechar}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
6m6ptdnt8b24g3q8jfqe0l4fpvaf77h
mantenir
0
1065503
6124043
2026-07-26T01:51:47Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|mantener}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124043
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|mantener}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
oi028tj6599u5d11xzow76oqv8nymju
obrir
0
1065504
6124049
2026-07-26T02:02:56Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|aperio|alt=aperīre}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|abrir}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124049
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|aperio|alt=aperīre}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|abrir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
kewpyutbwdv4tyetmgc3e6hxr59p4as
complir
0
1065505
6124052
2026-07-26T02:13:52Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca|intransitivo}} ==== ;1: {{plm|cumplir}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124052
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca|intransitivo}} ====
;1: {{plm|cumplir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
1h5ws9fs9tf50bena3a4ayvmop6nnq9
tossir
0
1065506
6124054
2026-07-26T02:17:37Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|tussio|alt=tussīre}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|toser}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124054
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|tussio|alt=tussīre}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|toser}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
5mwbcit04a8amm3cmexd9rpvak6hx73
haure
0
1065507
6124060
2026-07-26T02:25:51Z
Tmagc
158167
Página creada con «== {{lengua|ca}} == {{pron-graf|leng=ca}} ==== {{verbo transitivo|ca}} ==== ;1: {{variante|leng=ca|haver}} (poseer).<ref name="GDLC">{{GDLC}}</ref> {{ámbito|leng=ca|occidental}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124060
wikitext
text/x-wiki
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
==== {{verbo transitivo|ca}} ====
;1: {{variante|leng=ca|haver}} (poseer).<ref name="GDLC">{{GDLC}}</ref>
{{ámbito|leng=ca|occidental}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
9u0ez2tpph1h8b0i9rj7p8nk3yppf4f
confondre
0
1065508
6124062
2026-07-26T02:30:29Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|confundir}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124062
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|confundir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
e2sg73vavsoz00sez6l26sq32b2r3ew
cloure
0
1065509
6124067
2026-07-26T02:36:20Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|cerrar}}. ;2: {{plm|finalizar}}, [[concluir]]. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124067
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|cerrar}}.
;2: {{plm|finalizar}}, [[concluir]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
k9m26xf5wdxix4qs51w1g34nohnitng
6124068
6124067
2026-07-26T02:37:14Z
Tmagc
158167
/* {{lengua|ca}} */
6124068
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|claudo|alt=claudere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|cerrar}}.
;2: {{plm|finalizar}}, [[concluir]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
eq3p0mmva3vk2yubnh4v19i0z9wme4l
complaure
0
1065510
6124069
2026-07-26T02:38:52Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|complacer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124069
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|complacer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
6akwd2xmzwoii56y9tgax5m28y902mh
treure
0
1065511
6124070
2026-07-26T02:42:01Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|fone|traure}}. ==== {{verbo|ca|transitivo}} ==== ;1: {{plm|sacar}}, [[quitar]]. ;2: Hacer [[desaparecer]]. ==== {{verbo|ca|intransitivo}} ==== ;3: {{plm|vomitar}}. {{uso|leng=ca|coloquial}} ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124070
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|fone|traure}}.
==== {{verbo|ca|transitivo}} ====
;1: {{plm|sacar}}, [[quitar]].
;2: Hacer [[desaparecer]].
==== {{verbo|ca|intransitivo}} ====
;3: {{plm|vomitar}}.
{{uso|leng=ca|coloquial}}
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
f8ujz3omkvv2e2wvghvdypkfot8d2wk
traure
0
1065512
6124071
2026-07-26T02:43:40Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la-vul|*tracere}}, {{etim|leng=ca|la|trahere}}. ==== {{verbo|ca|transitivo|intransitivo}} ==== ;1: {{variante|treure}}. {{ámbito|leng=ca|occidental}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124071
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la-vul|*tracere}}, {{etim|leng=ca|la|trahere}}.
==== {{verbo|ca|transitivo|intransitivo}} ====
;1: {{variante|treure}}.
{{ámbito|leng=ca|occidental}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
l0lyxfffnpfyruwq8l97ki7qr7wjnqa
pondre
0
1065513
6124075
2026-07-26T02:49:56Z
Tmagc
158167
Página creada con «{{desambiguación|pondré}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca|la|pono|ponēre}}. ==== {{verbo|ca|transitivo}} ==== ;1: {{plm|ovar}} (un ave). ==== Conjugación ==== {{ca.v}} ==== Véase también ==== * [[pondre's]] == Referencias y notas == <references />»
6124075
wikitext
text/x-wiki
{{desambiguación|pondré}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca|la|pono|ponēre}}.
==== {{verbo|ca|transitivo}} ====
;1: {{plm|ovar}} (un ave).
==== Conjugación ====
{{ca.v}}
==== Véase también ====
* [[pondre's]]
== Referencias y notas ==
<references />
k4cn28nb0sunveofobgkx3mpmudhpnk
pondre's
0
1065514
6124078
2026-07-26T02:55:38Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo pronominal|ca}} ==== ;1: {{plm|ponerse}}, [[desaparecer]]. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124078
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo pronominal|ca}} ====
;1: {{plm|ponerse}}, [[desaparecer]].
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
tanbyiprq5g9v2gkerhdjsxdwn8mafv
escriure
0
1065515
6124160
2026-07-26T04:35:09Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|escribir}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124160
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|escribir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
3x3q3ur3kiuhf62ydf5rkcp98nxa6oe
prometre
0
1065516
6124161
2026-07-26T04:35:40Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|prometer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124161
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|prometer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
2ezupjoc31qqhuhd2asaxvaqz97y4c8
admetre
0
1065517
6124163
2026-07-26T04:43:27Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|admitir}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124163
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|admitir}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
3i9gpnrpcjxo9oq2pryr1qzyuclx21p
metre
0
1065518
6124164
2026-07-26T04:47:55Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología 1 === {{etimología|leng=ca|la|mittere}}. ==== {{verbo transitivo|ca}} ==== ;1: {{plm|poner}}, [[colocar]]. {{uso|leng=ca|obsoleto}} {{sinónimo|posar}} ==== Conjugación ==== {{ca.v}} === Etimología 2 === {{etimología|leng=ca|grc|μέτρον}}. ==== {{sustantivo masculino|ca}} ==== {{ca.sust|m}} ;1 {{csem|pesos y medidas|leng=ca}}: {{plm|metro}}. == Referencias y notas == <refer…»
6124164
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología 1 ===
{{etimología|leng=ca|la|mittere}}.
==== {{verbo transitivo|ca}} ====
;1: {{plm|poner}}, [[colocar]].
{{uso|leng=ca|obsoleto}}
{{sinónimo|posar}}
==== Conjugación ====
{{ca.v}}
=== Etimología 2 ===
{{etimología|leng=ca|grc|μέτρον}}.
==== {{sustantivo masculino|ca}} ====
{{ca.sust|m}}
;1 {{csem|pesos y medidas|leng=ca}}: {{plm|metro}}.
== Referencias y notas ==
<references />
t3x3kxoxb049j952x41v8530lpewdax
nàixer
0
1065519
6124165
2026-07-26T04:50:13Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{variante|leng=ca|néixer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124165
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{variante|leng=ca|néixer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
do47j83so8wwidggvdhkbtoyo67qzkz
néixer
0
1065520
6124166
2026-07-26T04:51:01Z
Tmagc
158167
Página creada con «{{desambiguación|}} == {{lengua|ca}} == {{pron-graf|leng=ca}} === Etimología === {{etimología|leng=ca}}. ==== {{verbo intransitivo|ca}} ==== ;1: {{plm|nacer}}. ==== Conjugación ==== {{ca.v}} == Referencias y notas == <references />»
6124166
wikitext
text/x-wiki
{{desambiguación|}}
== {{lengua|ca}} ==
{{pron-graf|leng=ca}}
=== Etimología ===
{{etimología|leng=ca}}.
==== {{verbo intransitivo|ca}} ====
;1: {{plm|nacer}}.
==== Conjugación ====
{{ca.v}}
== Referencias y notas ==
<references />
8zdtd1yem1isfspl3d28dldsb0r3x0k