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]]&nbsp;<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 &lt;u&gt; o &lt;code&gt;) 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]]&nbsp;<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 &lt;u&gt; o &lt;code&gt;) 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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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.."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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 "").."'''''&emsp;&emsp;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/&#126;2026-41363-10|&#126;2026-41363-10]] ([[Usuario discusión:&#126;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