Viccionari
cawiktionary
https://ca.wiktionary.org/wiki/Viccionari:Portada
MediaWiki 1.43.0-wmf.1
case-sensitive
Media
Especial
Discussió
Usuari
Usuari Discussió
Viccionari
Viccionari Discussió
Fitxer
Fitxer Discussió
MediaWiki
MediaWiki Discussió
Plantilla
Plantilla Discussió
Ajuda
Ajuda Discussió
Categoria
Categoria Discussió
TimedText
TimedText talk
Mòdul
Mòdul Discussió
fer
0
4538
2301924
2207947
2024-04-17T08:52:44Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
{{vegeu|fèr|fér|FER|-fer}}
== {{-ca-}} ==
{{ca-pron|q=verb|é,-r
|f-centr=LL-Q7026 (cat)-Unjoanqualsevol-fer.wav
}}
{{ca-pron|q=adjectiu|é,rr}}
{{homòfons|ca|fe|fé}}
{{-etimologia-|la|ca}} Verb: {{del-lang|roa-oca|ca|far}}~{{m|roa-oca|faire}}, del llatí vulgar {{m|la|*faere}}, de {{m|la|facere}}, {{etim-s|ca|XI}}.
{{-etimologia-|la|ca}} Adjectiu: del llatí {{m|la|ferum|feru(m)}}, acusatiu de {{m|la|ferus}}, segle XIV.
=== Verb ===
{{ca-verb|t-p-i-m}}
# [[formar]], [[construir]]
#: {{ex-us|ca|Faré un vaixell.}}
# Portar a terme una [[acció]].
#: {{ex-us|ca|Feien ganyotes.}}
# En una narració de fets, emprat per a expressar el que ha dit algú.
#: {{ex-us|ca|—No —féu ell.}}
# [[fingir]], [[simular]]
#: {{ex-us|ca|Fer-se el mort.}}
# {{marca|ca|impersonal}} Expressar la qualitat o les condicions del temps atmosfèric.
#: {{ex-us|ca|Fer calor, fer mal dia…}}
# {{marca|ca|impersonal}} Expressar el temps transcorregut.
#: {{ex-us|ca|Fa tres dies, demà farà dos anys…}}
# {{marca|ca|comodí}} Amb un pronom, expressar un altre verb [[implícit]] o que hom no el vol [[repetir]].
#: {{ex-us|ca|Quan menjava xocolata, ho feia d’amagat.}}
==== Conjugació ====
En els sentits impersonals és defectiu en tercera persona.
{{ca-conj}}
{{-sin-}}
* Verbs comodí col·loquials: [[fotre]], [[fúmer]], [[cardar]], [[barrufar]]
{{-der-}}
* [[contrafer]], [[contrafet]], [[desfer]], [[desfet]], [[estrafer]], [[estrafet]], [[fet]], [[perfer]], [[preufet]], [[quefer]], [[refer]], [[refet]]
{{-comp-}}
* [[fer bitlles]]
* [[fer d'alguna cosa]] = tenir una [[professió]] determinada
* [[fer el beneit]]
* [[fer el fet]]
* [[fer el llit]]
* [[fer el savi]]
* [[fer-ho]]
* [[fer i desfer]]
* [[fer la barba]] = afaitar, raure, la barba
* [[fer la bassa]] = netejar la bassa.
* [[fer les cartes]]
* [[fer l'adormit]]
* [[fer l'empegueït]]
* [[fer l'escandall]] = determinar el cost aproximat de quelcom
* [[fer plat]]
* [[fer-se amb algú]] = tenir [[relació]]
* [[fer-se sa coa]] {{q|balear}}
* [[fer-s'ho]]
* fer [[sol]], vent... = haver-hi un determinat fenomen atmosfèric
* [[fer un capmàs]]
* [[ja l'hem feta, com En Parreta]] {{q|mallorquí}}
* [[ja l'hem feta, com Na Beta]] {{q|menorquí}}
* [[no fer ni deixar fer]]
* [[pensat i fet]]
* [[què hi farem?]]
* [[què s'hi farà?]]
* [[no en faràs altra]]
* [[no fa ni fot]]
* [[no fa ni fila]]
* [[no tenir un «fes-te enllà» amb ningú]]
* [[saber fer de tot, fora cals d'olla]] {{q|mallorquí}}
* [[si fa no fa]]
* [[si fa o no fa]]
{{-trad-}}
{{t-inici|Portar a terme una acció}}
* {{de}}: {{trad|de|machen}}
* {{en}}: {{trad|en|do}}, {{trad|en|make}}
* {{ar}}: {{trad|ar|يصنع}}
* {{ast}}: {{trad|ast|facer}}
* {{eu}}: {{trad|eu|egin}}
* {{es}}: {{trad|es|hacer}}, {{trad|es|dar}}
* {{sk}}: {{trad|sk|robiť}}
* {{eo}}: {{trad|eo|fari}}
* {{fi}}: {{trad|fi|valmistaa}}
* {{fr}}: {{trad|fr|faire}}
* {{fur}}: {{trad|fur|fâ}}
* {{gl}}: {{trad|gl|facer}}
* {{el}}: {{trad|el|κάνω}}
* {{it}}: {{trad|it|fare}}
* {{la}}: {{trad|la|facere}}
* {{csc}}: {{trad|csc|FER}}
* {{oc}}: {{trad|oc|far}}, {{trad|oc|har}} {{q|gascó}}, {{trad|oc|hèr}} {{q|gascó pirinenc}}
* {{pl}}: {{trad|pl|robić}}, {{trad|pl|zrobić}}
* {{pt}}: {{trad|pt|fazer}}
* {{rm}}: {{trad|rm|far}}
* {{ro}}: {{trad|ro|face}}
* {{rom}}: {{trad|rom|kerel}}
* {{ru}}: {{trad|ru|делать}}
* {{sc}}: {{trad|sc|fàchere}}
* {{scn}}: {{trad|scn|fari}}
* {{sv}}: {{trad|sv|göra}}
* {{cs}}: {{trad|cs|dělat}}
{{t-final}}
{{t-inici|Verb comodí}}
* {{en}}: {{trad|en|get}}
* {{an}}: {{trad|an|fer}}
* {{es}}: {{trad|es|hacer}}
* {{fr}}: {{trad|fr|faire}}
{{t-final}}
=== Adjectiu ===
{{ca-adj}}
# [[salvatge|Salvatge]], no domesticat.
{{-trad-}}
{{t-inici|Salvatge, no domesticat}}
* {{en}}: {{trad|en|fierce}}, {{trad|en|wild}}
* {{es}}: {{trad|es|fiero}}
* {{fr}}: {{trad|fr|féroce}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|fre}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
== {{-roa-oca-}} ==
{{-etimologia-|la|roa-oca}} Verb: del llatí {{m|la|facere}}. Adjectiu: del llatí {{m|la|feru}}.
=== Verb ===
{{entrada|roa-oca|verb}}
# {{e|ca|fer}}
==== Conjugació ====
{{roa-oca-conj|fer}}
{{-var-}}
* {{e|roa-oca|far}}, {{e|roa-oca|faire}}
=== Adjectiu ===
{{entrada|roa-oca|adj}}
# {{e|ca|fer}}
=== Vegeu també ===
* {{roa-oca-dicc|dcvb|faraudo}}
== {{-fr-}} ==
{{-pronafi-}} {{pron|fr|/fɛʁ/}} {{àudio simple|Fr-fer.ogg|titre=du fer|àudio (du fer)}}
=== Nom ===
{{fr-nom|m}}
# [[ferro]]
{{-rel-}}
{{taula periòdica/fr}}
4hue58sskxd6vvajyo1x4v7ee7t9wg4
vista
0
4940
2301902
2201206
2024-04-16T14:22:59Z
Pablussky
8432
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron
|f-centr=LL-Q7026 (cat)-Marvives-vista.wav
}}
{{-etimologia-}} De {{m|ca|veure}}, {{etim-s|ca|XIII}}.
=== Nom ===
{{ca-nom|f}}
# [[sentit|Sentit]] que permet percebre mitjançant els [[ull]]s
# Allò que és percebut des d'un punt concret.
#: {{ex-us|ca|la '''vista''' des de la finestra}}
# [[part|Part]] d'un [[judici]]
{{-der-}}
* [[vistós]]
* [[entrevista]]
{{-comp-}}
* ser curt de vista = ser miop i en sentit figurat, no copsar
* tenir vista = ser perspicaç
* [[amor]] a primera vista = enamorament ràpid i sense conèixer abans a la persona
* a simple vista = primerament, pel que sembla
{{-sin-}}
* [[audiència]]
* [[escena]], [[panorama]]
* [[paisatge]], [[panorama]], [[perspectiva]]
* [[ull]]
* [[visió]]
{{-trad-}}
{{t-inici|Sentit que permet percebre mitjançant els ulls}}
* {{af}}: {{trad|af|sig}}
* {{de}}: {{trad|de|Sehvermögen|n}}
* {{en}}: {{trad|en|sight}}
* {{ar}}: {{trad|ar|نَظَر|m}}
* {{hy}}: {{trad|hy|տեսողություն}}
* {{eu}}: {{trad|eu|ikusmen}}
* {{bg}}: {{trad|bg|зре́ние|n}}
* {{es}}: {{trad|es|vista}}
* {{da}}: {{trad|da|syn|n}}
* {{sk}}: {{trad|sk|zrak|m}}
* {{sl}}: {{trad|sl|vid|m}}
* {{eo}}: {{trad|eo|vido}}
* {{et}}: {{trad|et|nägemine}}
* {{fo}}: {{trad|fo|sjón|f}}
* {{fr}}: {{trad|fr|vue}}, {{trad|fr|vision|f}}
* {{gl}}: {{trad|gl|vista|f}}
* {{ka}}: {{trad|ka|მხედველობა}}
* {{el}}: {{trad|el|όραση|f}}
* {{grc}}: {{trad|grc|ὄψις|f}}, {{trad|grc|ὅρασις|f}}
* {{he}}: {{trad|he|ראייה|f}}
* {{hi}}: {{trad|hi|नज़र|f}}
* {{hu}}: {{trad|hu|látás}}
* {{id}}: {{trad|id|tampak}}
* {{ga}}: {{trad|ga|amharc|m}}
* {{it}}: {{trad|it|vista}}
* {{ja}}: {{trad|ja|視覚}}
* {{la}}: {{trad|la|visus|m}}
* {{csc}}: {{trad|csc|MIRAR}}
* {{nl}}: {{trad|nl|zicht|n}}
* {{no}}: {{trad|no|syn|n}}
* {{oc}}: {{trad|oc|vista|f}}, {{trad|oc|vision|f}}
* {{pl}}: {{trad|pl|wzrok|m}}, {{trad|pl|widzenie|n}}
* {{pt}}: {{trad|pt|vista|f}}, {{trad|pt|visão|f}}
* {{ro}}: {{trad|ro|vedere|f}}, {{trad|ro|văz|n}}
* {{ru}}: {{trad|ru|зре́ние|n}}
* {{sa}}: {{trad|sa|दृष्टि|f}}
* {{sh}}: {{trad|sh|вид}}, {{trad|sh|vid|m}}
* {{sw}}: {{trad|sw|taswira}}
* {{sv}}: {{trad|sv|syn|c}}
* {{th}}: {{trad|th|สายตา}}
* {{tr}}: {{trad|tr|görüş}}
* {{cs}}: {{trad|cs|zrak|m}}, {{trad|cs|vidění|n}}
* {{uk}}: {{trad|uk|зір|m}}
* {{ur}}: {{trad|ur|نظر|f}}
* {{uz}}: {{trad|uz|koʻrish}}
* {{vi}}: {{trad|vi|thị lực}}
* {{vo}}: {{trad|vo|logasien}}
* {{zh}}: {{trad|zh|視力}}
{{t-final}}
{{t-inici|Allò que és percebut des d'un punt concret}}
* {{af}}: {{trad|af|gesig}}
* {{de}}: {{trad|de|Sicht|f}}
* {{en}}: {{trad|en|view}}
* {{ar}}: {{trad|ar|مَشْهَد|m}}
* {{es}}: {{trad|es|vista}}
* {{fi}}: {{trad|fi|näköala}}
* {{fr}}: {{trad|fr|vue}}
* {{gl}}: {{trad|gl|vista|f}}
* {{el}}: {{trad|el|θέαμα|n}}
* {{grc}}: {{trad|grc|ὅραμα|n}}, {{trad|grc|θέαμα|n}}
* {{he}}: {{trad|he|מראה|m}}
* {{hi}}: {{trad|hi|दर्शन|m}}
* {{hu}}: {{trad|hu|látvány}}
* {{id}}: {{trad|id|nampak}}
* {{it}}: {{trad|it|vista}}
* {{la}}: {{trad|la|visus|m}}
* {{nl}}: {{trad|nl|aanblik}}
* {{pl}}: {{trad|pl|widok|m}}
* {{pt}}: {{trad|pt|vista|f}}
* {{ro}}: {{trad|ro|vedere|f}}
* {{ru}}: {{trad|ru|вид|m}}
* {{sh}}: {{trad|sh|vidik|m}}, {{trad|sh|prizor|m}}
* {{sv}}: {{trad|sv|anblick|c}}, {{trad|sv|syn|c}}
* {{cs}}: {{trad|cs|pohled|m}}
* {{uk}}: {{trad|uk|вид|m}}
* {{vi}}: {{trad|vi|tầm nhìn}}
* {{zh}}: {{trad|zh|視野}}
{{t-final}}
=== Verb ===
{{ca-verb-forma|veure}}
# {{ca-forma-conj|veure|part|f|s}}
=== Verb ===
{{ca-verb-forma|vestir}}
# {{marca-nocat|ca|valencià}} {{ca-forma-conj|vestir|1|pres|subj}}
# {{marca-nocat|ca|valencià}} {{ca-forma-conj|vestir|3|pres|subj}}
# {{marca-nocat|ca|valencià}} {{ca-forma-conj|vestir|3|imp}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|avist|viats|visat|vista}}
== {{-es-}} ==
{{es-pron}}
{{-etimologia-|la|es}} Del llatí tardà {{m|la|*vista}}, de {{m|la|vidēre|trad=veure}}.
=== Nom ===
{{es-nom|f}}
# [[#ca|vista]]
{{-sin-}}
* {{q|sentit}} {{e|es|visión}}
* {{q|allò que es veu des d'un punt concret}} {{e|es|paisaje}}
{{-comp-}}
* {{e|es|vista cansada}}: [[presbícia]]
=== Verb ===
{{es-verb-forma|ver}}
# {{es-forma-conj|ver|part|f|s}}
=== Verb ===
{{es-verb-forma|vestir}}
# {{es-forma-conj|vestir|1|pres|subj}}
# {{es-forma-conj|vestir|3|pres|subj}}
# {{es-forma-conj|vestir|3|imp}}
=== Miscel·lània ===
* {{es-sil}}
* {{anagrames|es|vitas|vitás}}
=== Vegeu també ===
* {{DRAE}}
{{catllengua|es|dret}}
== {{-it-}} ==
{{it-pron}}
=== Verb ===
{{entrada|it|verb-forma}}
# {{forma-conj|it|vedere|part|passat|f|s}}
=== Miscel·lània ===
* {{it-sil}}
m3rekjptfz4dda1hztwsmxyj1rnph5y
ser
0
6639
2301934
2285974
2024-04-17T10:50:35Z
Vriullop
219
/* {{-ca-}} */ +nom
wikitext
text/x-wiki
{{vegeu|Ser}}
== {{-ca-}} ==
{{ca-pron|q=verb|ê,-r|centr=é,-r|gir=è,-r
|f-centr=LL-Q7026 (cat)-Unjoanqualsevol-ser.wav
}}
{{ca-pron|q=nom|ê|centr=é|gir=è|bal=ê,-r}}
{{homòfons|ca|ce|sé|se}}
{{-etimologia-}} Reducció de {{m|ca|ésser}} per analogia amb les formes conjugades en present, futur i condicional, {{etim-s|ca|XIII}}.
=== Verb ===
{{ca-verb|i-a|i=ser-hi}}
# [[ésser]], [[existir]]
==== Conjugació ====
{{ca-conj}}
{{-var-}}
* [[ésser]] {{q|culte}}, [[esser]] {{q|gironí|mallorquí|menorquí}}, [[sere]] {{q|septentrional}}
{{-sin-}}
* [[constituir]], [[representar]]
{{-notes-}}
* Històricament ha predominat la forma {{m|ca||ésser}}, tot i que alguns autors clàssics també usaven {{m|ca||ser}}.
* En la primera meitat del segle XX, {{m|ca||ésser}} era la forma literària i {{m|ca||ser}} la forma oral.
* Actualment predomina {{m|ca||ser}}, mentre que {{m|ca||ésser}} s’usa en registres cultes.
* Com a substantiu es manté {{m|ca||ésser}}.
{{ésser-estar}}
{{-trad-}}
{{t-inici|Ésser, existir}}
* {{de}}: {{trad|de|sein}}
* {{en}}: {{trad|en|be}}
* {{eu}}: {{trad|eu|egon}}
* {{br}}: {{trad|br|bezañ}}
* {{es}}: {{trad|es|ser}}
* {{eo}}: {{trad|eo|esti}}
* {{fr}}: {{trad|fr|être}}
* {{el}}: {{trad|el|είμαι}}
* {{hi}}: {{trad|hi|होना}}
* {{it}}: {{trad|it|essere}}
* {{nl}}: {{trad|nl|zijn}}
* {{oc}}: {{trad|oc|èsser}}, {{trad|oc|èstre}}, {{trad|oc|estar}} {{q|gascó}}, {{trad|oc|èster}} {{q|gascó}}
* {{pl}}: {{trad|pl|być}}
* {{pt}}: {{trad|pt|ser}}
* {{ro}}: {{trad|ro|fi}}
* {{rom}}: {{trad|rom|si}}
* {{ru}}: {{trad|ru|бьіть}}
* {{sw}}: {{trad|sw|kuwa}}
* {{tr}}: {{trad|tr|bulunmak}}
* {{cs}}: {{trad|cs|být}}
* {{zh}}: {{trad|zh|是}}
{{t-final}}
=== Nom ===
{{ca-nom|m}}
# [[ésser]]
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|res|rés|ers}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot|decat}}
* {{tesaure}}
== {{-es-}} ==
{{es-pron}}
=== Verb ===
{{es-verb|a-i|present=soy|passat=fui}}
# [[#ca|ser]]
=== Nom ===
{{es-nom|m}}
# [[ésser]]
=== Miscel·lània ===
* {{es-sil}}
* {{anagrames|es|res}}
=== Vegeu també ===
* {{DRAE}}
== {{-oc-}} ==
{{pronafi|oc|/seɾ/}}
=== Nom ===
{{oc-nom|m}}
# [[tarda]]
# [[vespre]]
{{-var-}}
* [[sera#oc|sera]]
{{-sin-}}
* {{e|oc|serada}}
* {{e|oc|vèspre}}
* {{e|oc|vesprada}}
== {{-pl-}} ==
{{pronafi|pl|/sεr/}}
=== Nom ===
{{entrada|pl|nom|g=m-in}}
# [[formatge]]
==== Declinació ====
{{pl-decl-nom
|ser|sery
|sera|serów
|serowi|serom
|ser|sery
|serem|serami
|serze|serach
|serze|sery}}
{{catllengua|pl|Aliments}}
b2lfr6h20o1u9wl7b4o3yzpo6sbr1gn
ésser
0
8230
2301944
2275976
2024-04-17T11:07:15Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
{{vegeu|esser|èsser}}
== {{-ca-}} ==
{{ca-pron|q=verb|é,-r|sept=/ˈɛ.sə/|alg=/ˈe.sar/}}
{{ca-pron|q=nom
|f-centr=LL-Q7026 (cat)-Unjoanqualsevol-ésser.wav
}}
{{homòfons|ca|essa}}
{{-etimologia-|la|ca}} Del llatí vulgar {{m|la|*essere}}, del clàssic {{m|la|esse}}, {{etim-s|ca|XII}}.
=== Verb ===
{{ca-verb|i-a|i=ésser-hi}}
# [[ser|Ser]], [[existir]].
==== Conjugació ====
{{ca-conj}}
{{-var-}}
* [[ser]]
* [[esser]] {{q|gironí|mallorquí|menorquí}}
==== Notes ====
{{ésser-estar}}
{{-trad-}}
{{t-vegeu|ser}}
=== Nom ===
{{ca-nom|m}}
# [[existència]]
# Allò que [[existeix]].
# [[individu|Individu]] viu.
{{-sin-}}
* {{q|que existeix}}: [[ens]], [[entitat]], [[organisme]]
* {{q|individu}}: [[ànima]], [[cap]], [[habitant]], [[individu]], [[persona]], [[subjecte]], [[tipus]]
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
* {{tesaure}}
hgs6hwnw5weol96ptvzd425vk75710u
fúmer
0
10669
2301927
2274455
2024-04-17T09:00:28Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|-r}}
{{-etimologia-}} Formació analògica de {{m|ca|fumut}} com a suposat participi, eufemisme de {{m|ca|fotut}}, de {{m|ca|fotre}},
=== Verb ===
{{ca-verb|t}}
# {{marca|ca|català central|septentrional}} {{def-meta|Eufemisme de [[fotre]].}}
==== Conjugació ====
{{ca-conj|occ=no|bal=no|alg=no|alt=no}}
{{-var-}}
* [[fumbre]]
{{-sin-}}
* [[clavar]], [[etzibar]], [[pegar]], [[plantar]], [[propinar]], [[fotre]], [[cardar]]
{{-trad-}}
{{t-vegeu|Eufemisme|fotre}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|fèmur|ferum|furem}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|dcvb|optimot}}
* {{tesaure}}
fguntscmla36i5y85y28dfb0jxik0lq
júnyer
0
10670
2301929
2199201
2024-04-17T09:02:50Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|-r}}
{{-etimologia-}} {{Del-lang|la|ca|iungere}}.
=== Verb ===
{{ca-verb|t-i}}
# {{marca|ca|antic}} {{forma-a|ca|junyir}}
==== Conjugació ====
Pràcticament usat només en infinitiu, l’ús de les formes conjugades és rar.
{{ca-conj|alg=no|nocc=no|alt=no}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
6psrcpmxgzez5if9794wvqv1jth5vxx
desconèixer
0
11435
2301920
2208684
2024-04-17T08:41:52Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|desconéixer}}
== {{-ca-}} ==
{{ca-pron|ê}}
{{etim-comp|ca|des-|conèixer}}.
=== Verb ===
{{ca-verb|t}}
# No [[conèixer]], [[ignorar]].
==== Conjugació ====
{{ca-conj}}
{{-sin-}}
* [[ignorar]].
{{-var-}}
* [[desconéixer]] (''valencià'')
{{-trad-}}
{{t-inici}}
* {{gl}}: {{trad|gl|descoñecer}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
hh7dp48wanefq2zi1gm1trhhfae14ol
acórrer
0
11977
2301917
2209107
2024-04-17T08:33:19Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|acorrer}}
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-}} {{Del-lang|la|ca|accurrere}}, {{etim-s|ca|XIV}}.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|arcaic}} [[avergonyir|Avergonyir]] i [[confondre]].
# Acudir per a [[socórrer]].
==== Conjugació ====
{{ca-conj|alg=no|alt=no}}
{{-trad-}}
{{t-inici|Avergonyir}}
* {{es}}: {{trad|es|correr}}, {{trad|es|acorrer}}
* {{fr}}: {{trad|fr|confondre}}, couvrir de {{trad|fr|honte}}, {{trad|fr|decontenancer}}
* {{it}}: {{trad|it|confondere}}, {{trad|it|convincere}}, far rimaner {{trad|it|confuso}}
* {{la}}: {{trad|la|rubore}} suffundere
{{t-final}}
{{t-inici|Acudir per a socórrer}}
* {{es}}: {{trad|es|socorrer}}, {{trad|es|acorrer}}
* {{fr}}: {{trad|fr|accourir}}
* {{it}}: {{trad|it|accorrere}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|carreró|correra}}
=== Vegeu també ===
* {{R:CCLFI 1839}}
* {{ca-dicc|diec|gdlc|optimot}}
ti5wensgyytt5w3ybigj06teltt0z1r
transcórrer
0
11988
2301939
2209118
2024-04-17T10:56:06Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{etim-lang|la|ca|transcorrere}}.
=== Verb ===
{{ca-verb|i}}
# Passar el [[temps]], seguir el seu curs una acció.
==== Conjugació ====
{{ca-conj|alg=no}}
{{-trad-}}
{{t-inici}}
* {{en}}: {{trad|en|pass}}, {{trad|en|go by}}
* {{es}}: {{trad|es|transcurrir}}, {{trad|es|trascurrir}}
* {{fr}}: {{trad|fr|passer}}, s’{{trad|fr|écouler}}
* {{it}}: {{trad|it|trascorrere}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
1sah4of3d1bw2p0evcm44l2hnms868b
acréixer
0
12033
2301916
2209123
2024-04-17T08:32:51Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-}} {{Del-lang|la|ca|acrēscěre}}.
=== Verb ===
{{ca-verb|t-p}}
# Fer que augmenti o s'intensifiqui alguna cosa.
==== Conjugació ====
{{ca-conj|alg=no}}
{{-sin-}}
* [[augmentar]]
* [[incrementar]]
{{-trad-}}
{{t-inici}}
* {{en}}: {{trad|en|increase}}
* {{es}}: {{trad|es|acrecer}}
* {{fr}}: {{trad|fr|accroître}}
* {{it}}: {{trad|it|accrescere}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|exercira|creixerà|exercirà|xericaré}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
52eu0emu32dlp8jw779sd3rh1f3p36j
destrènyer
0
19199
2301921
2226948
2024-04-17T08:43:11Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|destrényer}}
== {{-ca-}} ==
{{ca-pron|ê}}
{{etimologia|ca}}
=== Verb ===
{{ca-verb|t}}
# {{sense accepcions}}
==== Conjugació ====
{{ca.v.conj.para39|destr}}
{{-der-}}
* [[destrényer]]
{{-trad-}}
{{t-inici}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
g805p8nzrazhbmw2gozkczi12wiabm9
restrènyer
0
19201
2301932
2226950
2024-04-17T10:37:57Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
{{vegeu|restrényer}}
== {{-ca-}} ==
{{ca-pron|ê}}
{{etim-comp|ca|re-|estrènyer}}.
=== Verb ===
{{ca-verb|t}}
# {{sense accepcions}}
==== Conjugació ====
{{ca.v.conj.para39|restr}}
{{-der-}}
* [[restrényer]]
{{-trad-}}
{{t-inici}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
pu71l4not3msaj44wgikybztc5dxkwz
sobrenàixer
0
19219
2301936
1811951
2024-04-17T10:52:58Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|só}}
{{etim-comp|ca|sobre-|nàixer}}.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|català occidental}} {{forma-a|ca|sobrenéixer}}
==== Conjugació ====
{{ca.v.conj.para57|sobren}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
n96vdrnm926ti5cvbro7yf1i4oytj4a
sobrenéixer
0
19220
2301937
2226962
2024-04-17T10:53:35Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|só}}
{{etim-comp|ca|sobre-|néixer}}.
=== Verb ===
{{ca-verb|i}}
# {{sense accepcions}}
==== Conjugació ====
{{ca.v.conj.para57|sobren}}
{{-sin-}}
* [[sobrenàixer]], en occidental
{{-trad-}}
{{t-inici}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
tnw462s6bsjwq3aoq47f7l72y4r4a4n
pertànyer
0
19223
2301930
2226964
2024-04-17T09:04:51Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-|roa-oca|ca}} De l'antic {{m|roa-oca|tànyer}}, {{del-lang|la|ca|tangere|t=tocar}}, amb influència de {{m|la|pertinere|t=pertànyer}}, {{etim-s|ca|XIII}}.
=== Verb ===
{{ca-verb|i}}
# Ésser alguna cosa [[propietat]] d'algú.
# Ésser part [[integrant]] d'una cosa.
# [[correspondre|Correspondre]] al càrrec o l'obligació d'algú.
==== Conjugació ====
{{ca-conj|alg=no}}
{{-sin-}}
* [[apartendre]] (''alguerès'')
{{-trad-}}
{{t-inici|Ésser propietat}}
* {{de}}: {{trad|de|gehören zu}}
* {{en}}: {{trad|en|belong}}
* {{hy}}: {{trad|hy|պատկանել}}
* {{be}}: {{trad|be|нале́жаць}}
* {{es}}: {{trad|es|pertenecer}}
* {{da}}: {{trad|da|tilhøre}}
* {{sk}}: {{trad|sk|patriť}}
* {{eo}}: {{trad|eo|aparteni al}}
* {{fi}}: {{trad|fi|kuulua}}
* {{fr}}: {{trad|fr|appartenir}}
* {{gl}}: {{trad|gl|pertencer}}
* {{el}}: {{trad|el|ανήκω}}
* {{he}}: {{trad|he|שייך}}
* {{hu}}: {{trad|hu|tartozik}}
* {{it}}: {{trad|it|appartenere}}
* {{lv}}: {{trad|lv|piederēt}}
* {{nl}}: {{trad|nl|toebehoren}}, {{trad|nl|aan}}, {{trad|nl|van}}
* {{no}}: {{trad|no|tilhøre}}
* {{pl}}: {{trad|pl|należeć do}}
* {{pt}}: {{trad|pt|pertencer}}
* {{ru}}: {{trad|ru|принадлежа́ть}}
* {{sh}}: {{trad|sh|pripadati}}
* {{sv}}: {{trad|sv|tillhöra}}
* {{cs}}: {{trad|cs|patřit}}
* {{uk}}: {{trad|uk|нале́жати}}
* {{zh}}: {{trad|zh|屬於}}
{{t-final}}
{{t-inici|Correspondre a algú}}
* {{en}}: {{trad|en|concern}}, {{trad|en|pertain}}
* {{es}}: {{trad|es|pertenecer}}
* {{fr}}: {{trad|fr|appartenir}}
* {{it}}: {{trad|it|spettare}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{R:DLCSalvat|2}}
* {{ca-dicc|diec|gdlc|optimot}}
kdab2y9el04vwb5a2e1jxfsjui78ei7
poder
0
19226
2301931
2227728
2024-04-17T10:08:59Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
{{vegeu|PODER}}
== {{-ca-}} ==
{{ca-pron|q=verb|ê
|f-centr=LL-Q7026 (cat)-Unjoanqualsevol-poder.wav
}}
{{ca-pron|q=nom|podêrr|bal=ê}}
{{ca-pron|q=adverbi|é|bal=-|val=-}}
{{-etimologia-|la|ca}} Del llatí vulgar {{m|la|*pŏtēre}}, del clàssic {{m|la|posse}}, {{etim-s|ca|XII}}. Com a adverbi, des del segle XIII, és un canvi sintàctic del verb usat com a auxiliar expressant un futur de possibilitat ({{m|ca||en podrà prendre}} > {{m|ca||en prendrà poder}}).<ref>Xavier Rull Muruzàbal, «[https://revistes.iec.cat/index.php/ER/article/view/67491.001 ''Poder ara neva tornar''. Els infinitius-adverbis, un tipus de coverbs en català]», ''Estudis Romànics'', vol. 33 (2011)</ref>
=== Verb ===
{{ca-verb|a-t}}
# Tenir la [[facultat]] o [[potència]] per fer alguna cosa, ser capaç de fer-la.
# Tenir [[domini]], [[autoritat]].
# Tenir [[força]] i activitat per a [[obrar]], [[resistir]] o [[sofrir]].
# [[excitar|Excitar]] a algú a que faci o deixi de fer alguna cosa.
# Ser possible o contingent que [[succeir|succeeixi]] alguna cosa.
==== Conjugació ====
{{ca-conj|rizo=ò}}
{{-der-}}
* [[poderejar]]
* [[poguer]], col·loquial
{{-trad-}}
{{t-inici|Tenir la facultat o potència per fer alguna cosa}}
* {{sq}}: {{trad|sq|mund}}
* {{en}}: {{trad|en|can}}
* {{ar}}: {{trad|ar|قَدَرَ}}
* {{an}}: {{trad|an|poder}}
* {{hy}}: {{trad|hy|կարողանալ}}
* {{ast}}: {{trad|ast|poder}}
* {{eu}}: {{trad|eu|ahal izan}}
* {{be}}: {{trad|be|магчы́}}
* {{br}}: {{trad|br|gallout}}
* {{bg}}: {{trad|bg|мо́га}}
* {{es}}: {{trad|es|poder}}
* {{kw}}: {{trad|kw|gallos}}
* {{da}}: {{trad|da|kunne}}
* {{sk}}: {{trad|sk|môcť}}
* {{sl}}: {{trad|sl|moči}}
* {{eo}}: {{trad|eo|povi}}
* {{et}}: {{trad|et|osata}}
* {{fo}}: {{trad|fo|kunna}}
* {{fi}}: {{trad|fi|osata}}
* {{fr}}: {{trad|fr|pouvoir}}
* {{fur}}: {{trad|fur|podê}}
* {{gl}}: {{trad|gl|poder}}
* {{cy}}: {{trad|cy|gallu}}
* {{ka}}: {{trad|ka|შეუძლია}}
* {{el}}: {{trad|el|μπορώ}}, {{trad|el|δύναμαι}}
* {{grc}}: {{trad|grc|δύναμαι}}
* {{hi}}: {{trad|hi|सकना}}
* {{hu}}: {{trad|hu|tud}}
* {{yi}}: {{trad|yi|קענען}}
* {{id}}: {{trad|id|boleh}}
* {{is}}: {{trad|is|geta}}
* {{it}}: {{trad|it|potere}}
* {{ja}}: {{trad|ja|できる}}
* {{lv}}: {{trad|lv|prast}}
* {{lt}}: {{trad|lt|galėti}}
* {{la}}: {{trad|la|valere}}, {{trad|la|possum}}
* {{csc}}: {{trad|csc|PODER}}
* {{lb}}: {{trad|lb|kënnen}}
* {{mk}}: {{trad|mk|може}}
* {{ms}}: {{trad|ms|dapat}}
* {{mt}}: {{trad|mt|seta}}
* {{nl}}: {{trad|nl|kunnen}}
* {{no}}: {{trad|no|kunne}}
* {{oc}}: {{trad|oc|pòder}}, {{trad|oc|podre}}
* {{pl}}: {{trad|pl|móc}}
* {{pt}}: {{trad|pt|poder}}
* {{rm}}: {{trad|rm|pudair}}, {{trad|rm|puder}}, {{trad|rm|pudeir}}
* {{ro}}: {{trad|ro|putea}}
* {{ru}}: {{trad|ru|мочь}}
* {{sc}}: {{trad|sc|podere}}, {{trad|sc|podi}}
* {{sh}}: {{trad|sh|моћи}}, {{trad|sh|moći}}
* {{scn}}: {{trad|scn|putiri}}
* {{sv}}: {{trad|sv|kunna}}
* {{cs}}: {{trad|cs|moci}}
* {{uk}}: {{trad|uk|могти́}}
* {{vec}}: {{trad|vec|poder}}
* {{zh}}: {{trad|zh|會}}
{{t-final}}
{{t-inici|Tenir domini, autoritat}}
* {{en}}: {{trad|en|may}}
* {{es}}: {{trad|es|poder}}
* {{eo}}: {{trad|eo|rajti}}
* {{fr}}: {{trad|fr|pouvoir}}
* {{it}}: {{trad|it|potere}}
* {{csc}}: {{trad|csc|PODER}}
{{t-final}}
{{t-inici|Tenir força i activitat}}
* {{es}}: {{trad|es|poder}}
* {{fr}}: {{trad|fr|pouvoir}}
* {{it}}: {{trad|it|potere}}
* {{la}}: {{trad|la|valere}}
* {{csc}}: {{trad|csc|PODER}}
{{t-final}}
{{t-inici|Excitar a algú a que faci o deixi de fer}}
* {{es}}: {{trad|es|poder}}
* {{fr}}: {{trad|fr|pouvoir}}
* {{it}}: {{trad|it|potere}}
* {{la}}: {{trad|la|posse}}
{{t-final}}
{{t-inici|Ser possible}}
* {{en}}: {{trad|en|may}}
* {{es}}: {{trad|es|poder}}
* {{fr}}: {{trad|fr|pouvoir}}
* {{csc}}: {{trad|csc|PODER}}
{{t-final}}
=== Nom ===
{{ca-nom|m}}
# Capacitat per fer alguna cosa.
# Domini o influència sobre algú o alguna cosa.
{{-sin-}}
* [[atribució]], [[competència]], [[funció]], [[jurisdicció]], [[responsabilitat]]
* [[autoritat]], [[llibertat]], [[llicència]], [[permís]], [[potestat]]
* [[càrrec]]
* [[capacitat]], [[enginy]], [[habilitat]]
* [[causa]], [[causant]], [[força]], [[motor]], [[mòbil]], [[ànima]]
* [[dret]], [[facultat]], [[llibertat]], lliure [[albir]], lliure [[arbitri]]
* [[imperi]], [[mandat]]
* [[potència]]
{{-trad-}}
{{t-inici|Capacitat per fer alguna cosa}}
* {{en}}: {{trad|en|power}}
* {{es}}: {{trad|es|poder}}
* {{fr}}: {{trad|fr|pouvoir}}
* {{it}}: {{trad|it|potere}}
* {{ty}}: {{trad|ty|mana}}
{{t-final}}
=== Adverbi ===
{{entrada|ca|adv}}
# {{marca|ca|col·loquial|central|nord-occidental}} [[potser]]
{{-notes-}}
* La pronúncia tradicional era com el verb, amb grafia arcaica {{m|ca||pudè}}. Ha canviat a vocal tancada per influència del literari {{m|ca||potser}}.<ref>Joan Coromines, citat per Xavier Pàmies, «[https://pamiesxavier.wixsite.com/notes/single-post/2016/08/28/potser-pod%C3%A9 Apunts de llengua (del Diccionari Etimològic)]», ''Notes de traducció''</ref>
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|pedró|perdo|perdó|poder|podré}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
* {{R:CCLFI 1839}}
* {{tesaure}}
{{referències}}
== {{-es-}} ==
{{es-pron}}
=== Verb ===
{{es-verb|t-i|present=puedo}}
# {{e|ca|poder}}
=== Nom ===
{{es-nom|m}}
# {{e|ca|poder}}
=== Miscel·lània ===
* {{es-sil}}
jmft933ktiw1o8sh6pn5ik2mnm4fhaj
tòrcer
0
19262
2301940
2155797
2024-04-17T10:57:33Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|torcer}}
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-|la|ca}} Del llatí vulgar {{m|la|torcere}}, del clàssic {{m|la|torquēre}}, {{etim-s|ca|XIV}}.
=== Verb ===
{{ca-verb|t-i-p}}
# {{forma-a|ca|torçar}}
==== Conjugació ====
{{ca-conj|alg=no}}
{{-der-}}
* [[torcejar]]m [[destòrcer]]
{{-var-}}
* [[torçar]]
* [[torcir]], en alguerès i septentrional
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|rector}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
jjcujqoxwdwcs2lb8rbdfary4w9ez0g
estòrcer
0
19269
2301923
2226973
2024-04-17T08:47:16Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{etimologia|ca}}
=== Verb ===
{{ca-verb|i}}
# {{sense accepcions}}
==== Conjugació ====
{{ca.v.conj.para74|est}}
{{-sin-}}
* [[escapar]], [[fugir]], [[marxar]], [[volar]]
{{-trad-}}
{{t-inici}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|erectors|rectores|retrocés|secretor|torceres|tòrcer-se|retorces|retorcés}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
iq6xxdz5ciwavwll7dyyf4ede2k8px3
volguer
0
23193
2301942
2276094
2024-04-17T11:01:12Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ë|bal=-|val=-|alg=/vulˈɣe/|rima=-}}
{{-etimologia-}} Velarització de {{m|ca|voler}}, {{etim-s|ca|XX}}.
=== Verb ===
{{ca-verb|t}}
# {{marca|ca|col·loquial|especialment|alguerès}} [[voler]]
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|dcvb=voler|optimot|dalg}}
* [https://publicacions.iec.cat/repository/pdf/00000040/00000028.pdf El català de l'Alguer: un model d'àmbit restringit], de l'IEC.
6z8thohobt72u04p5u784s4z5vkspni
calguer
0
23194
2301918
2196907
2024-04-17T08:37:44Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ê|bal=-|val=-}}
{{-etimologia-}} De {{m|ca|caler}} per extensió de l'arrel velaritzada.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|col·loquial}} [[caldre]], [[caler]]
=== Miscel·lània ===
* {{ca-sil}}
== {{-oc-}} ==
{{pronafi|oc|/kalˈɣe/}}
=== Verb ===
{{entrada|oc|verb}}
# [[caldre]]
{{-sin-}}
* [[caler]], [[calre]]
ni3cevmaxvy4h4bjs7pmxrjaouaegz8
capiguer
0
23195
2301919
2196908
2024-04-17T08:39:11Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ê|bal=-|val=-}}
{{-etimologia-}} De {{m|ca|caber}} per extensió de l'arrel velaritzada.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|col·loquial}} [[cabre]] o [[caber]]
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|capgireu}}
tw0r6j4cv0ztdcqs9rw2gxq7m9yz2g0
Equador
0
37487
2301958
2237030
2024-04-17T11:55:28Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
{{vegeu|equador}}
== {{-ca-}} ==
{{map shape|ids=Q736|zoom=3}}
{{ca-pron|ó,rr|bal=ó
|f-val=LL-Q7026 (cat)-Millars-Equador.wav
}}
{{-etimologia-|la|ca}} De la línia de l'[[equador]].
=== Nom propi ===
{{entrada|ca|nom propi|g=m|lema=l'Equador}}
# [[estat|Estat]] de [[Sud-amèrica]] situat a la costa del [[Pacífic]] i fronterer amb [[Colòmbia]] i el [[Perú]]. El nom oficial és República de l'Equador.
==== Gentilicis ====
* [[equatorià]]
==== Notes ====
* Dintre d'un context sempre va precedit de l'article apostrofat: ''l'Equador''.
{{-trad-}}
{{t-inici|República de l'Equador}}
* {{en}}: {{trad|en|Ecuador}}
* {{eu}}: {{trad|eu|Ekuador}}
* {{es}}: {{trad|es|Ecuador|m}}
* {{fr}}: {{trad|fr|Équateur}}
* {{gl}}: {{trad|gl|Ecuador}}
* {{oc}}: {{trad|oc|Eqüator}}
* {{pt}}: {{trad|pt|Equador}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|orqueda}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|esadir|gec=Equador-1|dcvb}}
[[Categoria:Estats americans en català]]
miaenm8esovan8wti43hkvun52oe31g
Albocàsser
0
37822
2301945
2237077
2024-04-17T11:16:45Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{map shape|ids=Q1606574|zoom=10}}
{{ca-pron}}
{{-etimologia-}} D’un nom de persona àrab incert, a partir de {{m|ar|أَبُو|trans=ʾabū|trad=pare}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# [[municipi|Municipi]] de l'[[Alt Maestrat]].
==== Gentilicis ====
* [[albocassí]], [[albocassina]], [[albocassins]], [[albocassines]]
* [[bocassí]], [[bocassina]], [[bocassins]], [[bocassines]]
{{-trad-}}
{{t-inici|Municipi de l'Alt Maestrat}}
* {{es}}: {{trad|es|Albocácer}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|Albocàsser|cabasserol|calabresos|escalabrós}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|dcvb|esadir|oncat}}
* [https://web.archive.org/web/20170823022605/https://www.avl.gva.es/documents/35882/40728/Gentilici.pdf ''Els Gentilicis Valencians''], AVL
{{categoritza|ca|Poblacions valencianes en català}}
n2ku52pllcfv5q8seb6appoq0upr8kv
sers
0
39763
2301935
1071530
2024-04-17T10:51:40Z
Vriullop
219
+ca
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ê|centr=é|gir=è|bal=ê,-r}}
=== Nom ===
{{ca-nom-forma|mp}}
# {{forma-p|ca|ser}}
== {{-oc-}} ==
{{pronafi|oc|/seɾs/}}
=== Nom ===
{{oc-nom-forma|mp}}
# {{forma-p|oc|ser}}
e8pi8ov5uljxqegnefugp3bgqm499av
atracción
0
43290
2301909
2207939
2024-04-16T16:14:43Z
Pablussky
8432
wikitext
text/x-wiki
== {{-es-}} ==
{{es-pron}}
{{etim-lang|la|es|attractio}}.
=== Nom ===
{{es-nom|f}}
# [[atracció]]
{{-rel-}}
* {{e|es|atractivo}}
* {{e|es|atraer}}
=== Miscel·lània ===
* {{es-sil}}
* {{anagrames|es|atracción|concitara|concitará|narcótica|tracciona|traccioná}}
=== Vegeu també ===
* {{DRAE}}
n7kj302i9w29ldjma4g2los8tk3uvp5
fers
0
47323
2301925
2220689
2024-04-17T08:53:13Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|férs|fèrs}}
== {{-ca-}} ==
{{ca-pron|é}}
=== Adjectiu ===
{{ca-adj-forma|mp}}
# {{forma-p|ca|fer}}
=== Miscel·lània ===
* {{anagrames|ca|serf}}
== {{-fr-}} ==
{{-pronafi-}} {{pron|fr|/fɛʁ/}}
=== Nom ===
{{fr-nom-forma|mp}}
# {{forma-p|fr|fer}}
== {{-la-}} ==
{{la-pron}}
=== Verb ===
{{la-verb-forma}}
# {{forma-conj|la|ferō|2|pres|ind|act}}
spmgo586w6t2r41prwv7z0j23w37wxo
equador
0
65674
2301959
2239348
2024-04-17T11:56:06Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
{{vegeu|Equador}}
== {{-ca-}} ==
{{ca-pron|ó,rr|bal=ó
|f-val=LL-Q7026 (cat)-Millars-Equador.wav
}}
{{-etimologia-}} {{Del-lang|la|ca|aequator|trad=que iguala}}, {{etim-s|ca|XIX}}.
=== Nom ===
{{ca-nom|m}}
# Línia imaginària que divideix la Terra perpendicularment al seu eix de rotació, resultant dues meitats.
# (geometria) Cercle que talla perpendicularment per la meitat els meridians de la seva revolució.
{{-trad-}}
{{t-inici|Línia imaginària que divideix la Terra}}
* {{en}}: {{trad|en|equator}}
* {{es}}: {{trad|es|ecuador|m}}
* {{fr}}: {{trad|fr|équateur}}
* {{it}}: {{trad|it|equatore}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|orqueda}}
=== Vegeu també ===
* {{Viquipèdia|Equador (desambiguació)|equador}}
* {{ca-dicc|diec|gdlc|optimot}}
1tbs9c9o4wljw2q6ajyue4bkklnnx4p
taxón
0
69927
2301955
2175070
2024-04-17T11:50:06Z
Leptictidium
282
/* Nom */ Incorrecte
wikitext
text/x-wiki
{{vegeu|taxon}}
== {{-es-}} ==
{{es-pron}}
{{-etim-}} De {{m|es|taxonomía}}.
=== Nom ===
{{es-nom|m}}
# [[tàxon]]
{{-var-}}
* {{q|rarament}} {{e|es|taxon}}
=== Miscel·lània ===
* {{es-sil}}
=== Vegeu també ===
* {{termcat|dicc=18|lang=es|consulta=15 juny 2014}}
* {{DRAE}}
{{catllengua|es|biologia}}
9908c5g8143qtp53ngskrdu9am5usmy
taxon
0
69928
2301941
2015817
2024-04-17T10:59:53Z
Leptictidium
282
/* Nom */ Incorrecte
wikitext
text/x-wiki
{{vegeu|taxón}}
== {{-en-}} ==
{{-pronafi-}} {{pron|en|/ˈtæksɒn/}}
=== Nom ===
{{en-nom|taxa}}
# [[tàxon]]
=== Vegeu també ===
* {{termcat|dicc=18|lang=en|consulta=15 juny 2014}}
== {{-es-}} ==
{{es-pron}}
=== Nom ===
{{es-nom|m|táxones}}
# {{marca|es|rar}} {{forma-a|es|taxón}}
=== Miscel·lània ===
* {{es-sil}}
=== Vegeu també ===
* {{DRAE}}
== {{-sv-}} ==
{{-etimologia-}} Retroformació de [[taxonomi]].
=== Nom ===
{{entrada|sv|nom|g=n}} (plural etimològic [[taxa]])
# (''biologia'') [[tàxon]], [[taxó]]
#: {{ex-us|sv|Klassen kräldjur är ett parafyletiskt '''taxon'''|La classe dels rèptils és un '''tàxon''' parafilètic|inline=1}}
6bqtwdz0tbl023pkc75ij8tw7bu1vge
compliment
0
81374
2301899
2239813
2024-04-16T14:07:47Z
Pablussky
8432
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron
|f-centr=LL-Q7026 (cat)-Marvives-compliment.wav
}}
{{-etimologia-}} De {{comp|ca|complir|-ment}}, {{etim-s|ca|XIV}}.
=== Nom ===
{{ca-nom|m}}
# Realització d'una obligació.
# Afalagaments que es fan perquè una persona se senti ben acollida o per cortesia.
{{-trad-}}
{{t-inici|Realització d'una obligació}}
* {{en}}: {{trad|en|accomplishment}}
* {{es}}: {{trad|es|cumplimiento}}
* {{fr}}: {{trad|fr|accomplissement}}
* {{it}}: {{trad|it|compimento}}, {{trad|it|adempimento}}
{{t-final}}
{{t-inici|Afalagaments}}
* {{en}}: {{trad|en|compliment}}
* {{es}}: {{trad|es|cumplido|m}}
* {{fr}}: {{trad|fr|compliment}}
* {{it}}: {{trad|it|complimento}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
== {{-en-}} ==
{{-pronafi-}} {{pron|en|/kɒmplɪmənt/}} {{q|nom}}, {{pron|en|/kɒmplɪment/}} {{q|verb}}
{{etim-lang|la|en|complementum}}. Doblet de {{doblet|en|complement}}.
=== Nom ===
{{en-nom}}
# [[#ca|compliment]] {{q|afalagament}}
=== Verb ===
{{en-verb}}
# [[complimentar]]
=== Miscel·lània ===
* {{síl|en|com·pli·ment}}
=== Vegeu també ===
* {{collins}}
* {{cambridge}}
fjie6kftlb3x6m1djd7i2d9zl8kh3ly
compliments
0
81375
2301900
1005156
2024-04-16T14:09:15Z
Pablussky
8432
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|or=/kum.pɫiˈmens/|occ=/kom.pɫiˈmens/}}
=== Nom ===
{{ca-nom-forma|mp}}
# {{forma-p|ca|compliment}}
=== Miscel·lània ===
* {{ca-sil}}
== {{-en-}} ==
=== Nom ===
{{entrada|en|nom-forma}}
# {{forma-p|en|compliment}}
=== Verb ===
{{entrada|en|verb-forma}}
# {{en-forma-conj|compliment|3}}
=== Miscel·lània ===
* {{síl|en|com·pli·ments}}
ruvkotrk1pmoj8a8l5ncdud2lgqovl2
equadors
0
109020
2301960
2223203
2024-04-17T11:56:40Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ó,rr|bal=ó}}
=== Nom ===
{{ca-nom-forma|mp}}
# {{forma-p|ca|equador}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|esquadró}}
hoixu5h0d8378byvv44bwqgo0dsrbb4
Betayer
0
216667
2301950
2211603
2024-04-17T11:39:53Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|betaier}}
{{-etimologia-}} Variant de {{m|ca|Bataller}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# {{cognom|ca|motejador}}
=== Miscel·lània ===
* {{ca-sil}}
13l5lhcxkkz42rsbkw9xsjiuqo9c41l
Batayer
0
216670
2301949
2211606
2024-04-17T11:36:06Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|bataier}}
{{-etimologia-}} Variant de {{m|ca|Bataller}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# {{cognom|ca|motejador}}
=== Miscel·lània ===
* {{ca-sil}}
g01a88ghmrwx9f4b0zwekxau87lzb9q
Bor
0
219355
2301953
2211885
2024-04-17T11:42:28Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|bor|bòr|boŕ}}
== {{-ca-}} ==
{{ca-pron|ó,rr}}
{{-etimologia-|xib|ca}} Documentat ''Borr'' i ''Borre'' al segle IX i ''Borro'' al segle XI, probablement de l’ibèric {{m|xib|boŕ}}, nom de persona.
=== Nom propi ===
{{entrada|ca|nom propi}}
# Poble del municipi de [[Bellver]] a la [[Cerdanya]].
# {{cognom|ca}}
# Ciutat del [[Sudan del Sud]].
# Diverses ciutats de [[Rússia]].
# {{marca|ca|mitologia escandinava}} Fill de [[Buri]] i pare d’[[Odín]].
=== Miscel·lània ===
* {{anagrames|ca|obr|orb|rob}}
=== Vegeu també ===
* {{Viquipèdia|Bor (desambiguació)}}
* {{ca-dicc|dcvb|gec|esadir}}
* [http://www.idescat.cat/cognoms/?q=bor Cognoms de la població], Idescat
== {{-de-}} ==
{{-pronafi-}} {{pron|de|/boːɐ̯/}} {{àudio simple|De-at-Bor.ogg|àudio}}
=== Nom ===
{{de-nom|n|Bors|-}}
# [[bor]]
==== Declinació ====
{{de-nom-decl|n|Bors|-}}
{{-rel-}}
{{taula periòdica/de}}
5k2jhzn3h1ym383o5aqxfid87dcnn1u
Boher
0
228159
2301952
2196930
2024-04-17T11:40:56Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|é}}
{{-etimologia-}} Variant de {{m|ca|Bover}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# {{cognom|ca|d’ofici}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|dcvb}}
* [http://www.idescat.cat/cognoms/?id=82206 Cognoms de la població], Idescat
8g7ppfjjeyqe6vct21g9tbmjep7lpkh
Bober
0
228160
2301951
2196931
2024-04-17T11:40:30Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|é}}
{{-etimologia-}} Variant fonètica de {{m|ca|Bover}} per betacisme.
=== Nom propi ===
{{entrada|ca|nom propi}}
# {{cognom|ca|d’ofici}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|optimot}}
* [http://www.idescat.cat/cognoms/?id=294106 Cognoms de la població], Idescat
a3q160xquqroera6jl5upkgdzlgvrdt
Càncer
0
234522
2301956
2233419
2024-04-17T11:52:33Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
{{vegeu|cancer|Cancer|càncer|cáncer|Cáncer}}
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-}} Del llatí {{m|la|cancer}}.
=== Nom propi ===
{{entrada|ca|nom propi|g=m}}
# [[Cranc]]
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{Viquipèdia|Càncer (desambiguació)}}
* {{ca-dicc|gec|gdlc}}
== {{-oc-}} ==
=== Nom propi ===
{{entrada|oc|nom propi}}
# el [[Cranc]]
{{-rel-}}
{{constel·lacions/oc}}
9ej555tttqrixqfbagfrq6w7zcu9xl2
Mòdul:ca-pron/AFI
828
238328
2301915
2300945
2024-04-17T08:29:45Z
Vriullop
219
revisió r final muda o sonora
Scribunto
text/plain
local p = {}
-- dependencies
local listToSet = require("Module:TableTools").listToSet
local track = require('Module:utilitats').track
-- shortcurts for string functions
local str = {}
str.find = mw.ustring.find
str.match = mw.ustring.match
str.gsub = mw.ustring.gsub
str.sub = mw.ustring.sub
str.lower = mw.ustring.lower
str.len = mw.ustring.len
local pagename
-- lects generated, with variant "2"
local lects = {"cen", "cen2", "bal", "bal2", "noc", "noc2", "val", "val2"}
-- additional lects accepted as optional input:
-- Girona "ceng" as variant of "cen", supposedly with respelling
-- Northern "sep" and Algherese "alg", supposedly with IPA
local input_lects = {"cen", "cen2", "ceng", "bal", "bal2", "sep", "alg", "noc", "noc2", "val", "val2"}
local groups_lects = {
ori = {"cen", "cen2", "bal", "bal2"},
occ = {"noc", "noc2", "val", "val2"}
}
local lects_group = {
["cen"] = "ori", ["cen2"] = "ori", ["ceng"] = "ori",
["bal"] = "ori", ["bal2"] = "ori", ["sep"] = "ori", ["alg"] = "ori",
["noc"] = "occ", ["noc2"] = "occ", ["val"] = "occ", ["val2"] = "occ"
}
local vowels = "aàāeèéëêēiíïoòóôōuúü"
local ret_error
local function plainText(text) -- vowels without diacritics
local accents = "[" .. mw.ustring.char(0x0301, 0x0300, 0x0302, 0x0308, 0x0304) .. "]"
-- acute, grave, circumflex, diaresis, macron
local decomposed_text = mw.ustring.toNFD(text)
decomposed_text = str.gsub(decomposed_text, "([aeiou])" .. accents, "%1")
return mw.ustring.toNFC(decomposed_text) -- compose remaining characters (ç, l·l...)
end
local function fixPrefixes(word)
-- Respellings for unassimilated prefixes
-- TODO: review if it should be done by respelling "aero-", etc.
local prefix = {
"a[eé]ro", "ànte", "[aà]nti", "[aà]uto", -- a- is ambiguous as prefix
"bi", "b[ií]li", "bio",
"c[oô]ntra", -- ambiguous co-
"dia", "dodeca",
"[eé]ntre", "equi", "est[eë]reo", -- ambiguous e-(radic)
"f[oó]to",
"g[aà]stro", "gr[eé]co",
"hendeca", "hepta", "hexa", "h[oô]mo",
"[ií]nfra", "[ií]ntra",
"m[aà]cro", "m[ií]cro", "mono", "m[oô]rfo", "m[uú]lti",
"n[eé]o",
"octo", "orto",
"p[eë]nta", "p[oô]li", "pol[ií]tico", "pr[oô]to", "ps[eë]udo", "psico", -- ambiguous pre-(s), pro-
"qu[aà]si", "qu[ií]mio",
"r[aà]dio", -- ambiguous re-
"s[eë]mi", "s[oó]bre", "s[uú]pra",
"t[eë]rmo", "tetra", "tri", -- ambiguous tele-(r)
"[uú]ltra", "[uu]n[ií]",
"v[ií]ce"
}
local prefix_r = {"[eë]xtra", "pr[eé]"}
local prefix_s = {"[aà]ntropo", "c[eé]ntro", "deca", "d[ií]no", "[eë]co",
"[eë]xtra", "hetero", "p[aà]ra", "p[oô]st", "pré", "s[oó]ta", "t[eë]le"
}
local prefix_i = {"pr[eé]", "pr[ií]mo", "pro", "t[eë]le"}
local no_prefix = {"autoic", "autori", "biret", "biri", "bisa", "bisell",
"bisó", "biur", "contrari", "contrau", "diari", "equise", "heterosi",
"monoi", "parasa", "parasit", "preix", "psicosi", "sobrera", "sobreri"
}
-- False prefixes
for _, pr in ipairs(no_prefix) do
if str.find(word, "^" .. pr) then
return word
end
end
-- Double r in prefix + r + vowel
for _, pr in ipairs(prefix_r) do
word = str.gsub(word, "^(" .. pr .. ")r([" .. vowels .. "])", "%1rr%2")
end
word = str.gsub(word, "^eradic", "erradic")
-- Double s in prefix + s + vowel
for _, pr in ipairs(prefix_s) do
word = str.gsub(word, "^(" .. pr .. ")s([" .. vowels .. "])", "%1ss%2")
end
-- Hiatus in prefix + i
for _, pr in ipairs(prefix_i) do
word = str.gsub(word, "^(" .. pr .. ")i(.)", "%1ï%2")
end
-- Both prefix + r/s or i/u
for _, pr in ipairs(prefix) do
word = str.gsub(word, "^(" .. pr .. ")([rs])([" .. vowels .. "])", "%1%2%2%3")
word = str.gsub(word, "^(" .. pr .. ")i(.)", "%1ï%2")
word = str.gsub(word, "^(" .. pr .. ")u(.)", "%1ü%2")
end
-- Voiced s in prefix roots -fons-, -dins-, -trans-
word = str.gsub(word, "^enfons([" .. vowels .. "])", "enfonz%1")
word = str.gsub(word, "^endins([aàeèéiíoòóuú])", "endinz%1")
word = str.gsub(word, "tr([aà])ns([" .. vowels .. "bdghlmv])", "tr%1nz%2")
-- in + ex > ineks/inegz
word = str.gsub(word, "^inex", "inhex")
return word
end
local function restoreDiaereses(word)
-- Some structural forms do not have diaeresis per diacritic savings, let's restore it to identify hiatus
word = str.gsub(word, "([iu])um(s?)$", "%1üm%2") -- Latinisms (-ius is ambiguous but rare)
word = str.gsub(word, "([aeiou])isme(s?)$", "%1ísme%2") -- suffix -isme
word = str.gsub(word, "([aeiou])ist([ae]s?)$", "%1íst%2") -- suffix -ista
word = str.gsub(word, "([aeou])ir$", "%1ír") -- verbs -ir
word = str.gsub(word, "([aeou])int$", "%1ínt") -- present participle
word = str.gsub(word, "([aeo])ir([éà])$", "%1ïr%2") -- future
word = str.gsub(word, "([^gq]u)ir([éà])$", "%1ïr%2")
word = str.gsub(word, "([aeo])iràs$", "%1ïràs")
word = str.gsub(word, "([^gq]u)iràs$", "%1ïràs")
word = str.gsub(word, "([aeo])ir(e[mu])$", "%1ïr%2")
word = str.gsub(word, "([^gq]u)ir(e[mu])$", "%1ïr%2")
word = str.gsub(word, "([aeo])iran$", "%1ïran")
word = str.gsub(word, "([^gq]u)iran$", "%1ïran")
word = str.gsub(word, "([aeo])iria$", "%1ïria") -- conditional
word = str.gsub(word, "([^gq]u)iria$", "%1ïria")
word = str.gsub(word, "([aeo])ir(ie[sn])$", "%1ïr%2")
word = str.gsub(word, "([^gq]u)ir(ie[sn])$", "%1ïr%2")
return word
end
local function fixY(word)
-- hint for Balearic iodització
-- TODO: move to parseRespelling
word = str.gsub(word, "yll", "L")
-- hint for voiced palatal nasal
word = str.gsub(word, "ny", "ñ")
-- y > vowel /i/ else consonant /j/
word = str.gsub(word, "y([^" .. vowels .. "])", "i%1") -- vowel if not next to another vowel
word = str.gsub(word, "([^" .. vowels .. "·%-%.])y", "%1i") -- excluding also syllables separators
return word
end
local function wordRespellings(word, lect)
word = str.gsub(word, "%-([rs]?)", "-%1%1")
word = str.gsub(word, "s%-c([eé])", "-c%1") -- dos-cents... never geminated
word = str.gsub(word, "rç$", "rrs") -- silent r only in plurals -rs
word = fixPrefixes(word) -- internal pause after a prefix
word = restoreDiaereses(word) -- no diaeresis saving
word = fixY(word) -- ny > ñ else y > i vowel or consonant
word = str.gsub(word, "^sc?h([" .. vowels .."])", "xx%1") -- hint xx (scheelita, shigel·la)
word = str.gsub(word, "^s([^" .. vowels .."w])", "es%1") -- epentetic vowel (spin) GEIC 3.3.3.1
word = str.gsub(word, "ch([" .. vowels .."])", "tx%1")
word = str.gsub(word, "([^" .. vowels .. "h])h", "%1") -- anhel, adherir...
-- initial consonant clusters GEIC 2.3.2, GNV 1.3.2.7.1.f
word = str.gsub(word, "^[mp]n", "n")
word = str.gsub(word, "^bd", "d")
if lect ~= "cen" then -- formal doble consonant only in Central (GDLC)
word = str.gsub(word, "^p([st])", "%1") -- psicòleg, ptolemaic
word = str.gsub(word, "^gn", "n") -- gnom
end
return word
end
local function splitVowels(vowels)
local syllables = {{onset = "", vowel = str.sub(vowels, 1, 1), coda = ""}}
vowels = str.sub(vowels, 2)
while vowels ~= "" do
local syll = {onset = "", vowel = "", coda = ""}
syll.onset, syll.vowel, vowels = str.match(vowels, "^([iu]?)(.)(.-)$")
table.insert(syllables, syll)
end
local count = #syllables
if count >= 2 and (syllables[count].vowel == "i" or syllables[count].vowel == "u") then
syllables[count - 1].coda = syllables[count].vowel
syllables[count] = nil
end
return syllables
end
-- Split the word into syllables
local function splitSyllables(remainder, lect)
local valid_onsets = listToSet({
"b", "bl", "br",
"c", "cl", "cr", "ç",
"d", "dr",
"f", "fl", "fr",
"g", "gl", "gr", "gu", "gü",
"h", "hh", -- hint for aspirated h
"i",
"j",
"k", "kl", "kr",
"l", "ll", "L", -- hint for iodització
"m",
"n", "ny", "ñ",
"p", "pl", "pr",
"qu", "qü",
"r", "rr",
"s", "ss",
"t", "tg", "tj", "tr", "tx", "tz",
"u",
"v", "vl",
"w",
"x",
"z",
})
local syllables = {}
while remainder ~= "" do
local consonants, vowels
consonants, remainder = str.match(remainder, "^([^aàāeèéêëēiíïoòóôōuúü]*)(.-)$")
vowels, remainder = str.match(remainder, "^([aàāeèéêëēiíïoòóôōuúü]*)(.-)$")
if vowels == "" then
syllables[#syllables].coda = syllables[#syllables].coda .. consonants
else
local onset = consonants
local first_vowel = str.sub(vowels, 1, 1)
if (str.find(onset, "[gq]$") and (first_vowel == "ü" or (first_vowel == "u" and vowels ~= "u")))
or ((onset == "" or onset == "h") and #syllables == 0 and first_vowel == "i" and vowels ~= "i" )
then
onset = onset .. str.sub(vowels, 1, 1)
vowels = str.sub(vowels, 2)
end
local vsyllables = splitVowels(vowels)
vsyllables[1].onset = onset .. vsyllables[1].onset
for _, s in ipairs(vsyllables) do
table.insert(syllables, s)
end
end
end
-- Shift over consonants from the onset to the preceding coda,
-- until the syllable onset is valid
for i = 2, #syllables do
local current = syllables[i]
local previous = syllables[i-1]
while not (current.onset == "" or valid_onsets[current.onset]) do
local letter = str.sub(current.onset, 1, 1)
current.onset = str.sub(current.onset, 2)
if not str.find(letter, "[·%-%.]") then --syllables separators
previous.coda = previous.coda .. letter
else
break
end
end
end
-- Detect stress
for i, syll in ipairs(syllables) do
if str.find(syll.vowel, "^[àèéêëíòóôú]$") then
syllables.stress = i -- primary stress: the last one stressed
syll.stressed = true
end
end
if not syllables.stress then
local count = #syllables
if count == 1 then
syllables.stress = 1
else
local final = syllables[count]
if final.coda == "" or final.coda == "s" or (final.coda == "n" and (final.vowel == "e" or final.vowel == "i" or final.vowel == "ï")) then
syllables.stress = count - 1
else
syllables.stress = count
end
end
syllables[syllables.stress].stressed = true
end
-- Change stress in infinitive + -se, in Balearic
-- informal in Mallorca and Menorca, not in Eivissa
if lect == "bal2"
and str.sub(pagename, -4) == 'r-se'
then
--and i == syllables.stress -- -ar-se, also entémer-se...
syllables[syllables.stress].stressed = nil
syllables[#syllables].stressed = true
syllables[#syllables].vowel = "ə"
syllables.stress = #syllables
end
-- text of syllable from components
for i, syll in ipairs(syllables) do
syllables[i].text = syll.onset .. syll.vowel .. syll.coda
end
return syllables
end
local function midVowelFixes(syllables)
local post_consonants = syllables[syllables.stress].coda
local post_vowel = ""
local post_letters = post_consonants
if syllables.stress == #syllables - 1 then
post_consonants = post_consonants .. syllables[#syllables].onset
post_vowel = syllables[#syllables].vowel
post_letters = post_consonants .. post_vowel .. syllables[#syllables].coda
end
-- most common cases, other ones are ambiguous
local stressed_vowel = syllables[syllables.stress].vowel
if stressed_vowel == "e" then
if post_vowel == "i" or post_vowel == "u" then
return "è"
elseif str.find(post_consonants, "^l") and not str.find(post_consonants, "^lls?$") and syllables.stress == #syllables then
return "è"
elseif post_consonants == "l" or post_consonants == "ls" or post_consonants == "l·l" then
return "è"
elseif post_letters == "nt" or post_letters == "nts" then
return "é"
elseif str.find(post_letters, "^r[ae]?s?$") then
return "é"
elseif str.find(post_consonants, "^r[dfjlnrstxyz]") then -- except bilabial and velar
return "è"
elseif post_letters == "sos" or post_letters == "sa" or post_letters == "ses" then -- inflection of -ès
return "ê"
elseif str.find(post_letters, "^t[ae]?s?$") then
track("ca-pron/et-final")
return "ê"
end
elseif stressed_vowel == "è" then
if syllables.stress == #syllables and (post_letters == "s" or post_letters == "") then -- -ès, -è
track("ca-pron/è-final")
return "ê"
else
return "è"
end
elseif stressed_vowel == "o" then
if post_vowel == "i" or post_vowel == "u" then
track("ca-pron/oi-ou")
return "ò"
elseif str.sub(post_letters, 1, 1) == "i" and str.sub(post_letters, 1, 2) ~= "ix" then -- diphthong oi except oix
track("ca-pron/oi-diftong")
return "ò"
elseif post_letters == "ma" or post_letters == "mes" then
track("ca-pron/oma")
return "ó"
elseif str.find(post_letters, "^r[ft]s?$") then
track("ca-pron/orC")
return "ò"
elseif str.find(post_letters, "^r[ae]?s?$") then
track("ca-pron/or-final")
return "ó"
elseif post_letters == "rme" or post_letters == "rmes" then
track("ca-pron/orme")
return "ó"
end
end
return stressed_vowel
end
local function replaceContextFree(cons)
cons = str.gsub(cons, "r", "ɾ")
cons = str.gsub(cons, "ɾɾ", "r")
cons = str.gsub(cons, "ss", "s")
cons = str.gsub(cons, "ll", "ʎ") -- pending L by lect
cons = str.gsub(cons, "ñ", "ɲ") -- hint ny > ñ
if str.find(cons, "hh") then
cons = str.gsub(cons, "hh", "h") -- hint hh > /h/
else
cons = str.gsub(cons, "h", "")
end
cons = str.gsub(cons, "[dt]j", "d͡ʒ")
cons = str.gsub(cons, "tx", "t͡ʃ")
cons = str.gsub(cons, "[dt]z", "d͡z")
cons = str.gsub(cons, "ç", "s")
cons = str.gsub(cons, "[cq]", "k")
cons = str.gsub(cons, "l", "ɫ")
cons = str.gsub(cons, "g", "ɡ")
cons = str.gsub(cons, "j", "ʒ")
cons = str.gsub(cons, "x", "ʃ")
cons = str.gsub(cons, "[iy]", "j") -- must be after j > ʒ and fixY
cons = str.gsub(cons, "[uü]", "w")
return cons
end
local function elisionContinguousVowels(syllables, lect)
-- Eastern contigous vowels losses last one in some contexts
-- GIEC 3.4.i: amb vocal final i inicial dels dos components d’un compost:
---- ə+ə ([ae]+[ae]) elisió, però ea > /eə/ amb excepcions
---- altres vocals idèntiques ii, oo, ou
---- i+e travada: anti/poli(e)sportiu, anti(e)stàtic, multi(e)stàndard
local first_stress = 0
local second_stress = 0
for i = 1, syllables.stress do
if syllables[i].stressed then
if first_stress == 0 then
first_stress = i
elseif second_stress == 0 then
second_stress = i
end
end
end
if first_stress > 0 and second_stress > 0 then -- compound or prefixed word with secondary stress
-- not the case of adverbs with -ment (but sóbreabundàntmént), avoiding possible errors
local sec_str_syl = syllables[second_stress].onset .. syllables[second_stress].vowel .. syllables[second_stress].coda
if sec_str_syl == "ment" then
return syllables
end
-- it doesn't work in àntialcoholísme, a single case with -isme to be respelled
-- elision ea only after some prefixes
-- doing it before reduction /eə/
local prefix_vowel = {"centrea", "entrea", "obrea", "sobrea", "telea", "vicea"}
local prefix_ea_match = false
for _, pr in ipairs(prefix_vowel) do
if str.find(pagename, pr) == 1 then
prefix_ea_match = true
end
end
local i = first_stress + 1
while i < second_stress - 1 do -- unstressed between two accents
local current = syllables[i]
local posterior = syllables[i + 1]
local vowel_pair = current.vowel .. current.coda .. posterior.onset .. posterior.vowel
if str.find(vowel_pair, "[ae]e")
or vowel_pair == "aa"
or (vowel_pair == "ea" and prefix_ea_match)
or (vowel_pair == "ie" and posterior.coda == "s")
or vowel_pair == "ii"
or (vowel_pair == "oe" and posterior.coda == "s")
or str.find(vowel_pair, "o[ou]")
then
syllables[i].coda = syllables[i + 1].coda -- re-syllabification
table.remove(syllables, i + 1)
syllables.stress = syllables.stress - 1
end
i = i + 1
end
end
return syllables
end
local function reductionUnstressAE(syllables, lect) -- Eastern: <ae> /ə/
-- TODO: review GIEC 3.3.1.2.b
for i = 1, #syllables do
local current = syllables[i]
local previous = syllables[i - 1] or {onset = "", vowel = "", coda = ""}
local posterior = syllables[i + 1] or {onset = "", vowel = "", coda = ""}
local pre_vowel_pair = previous.vowel .. previous.coda .. current.onset .. current.vowel
local post_vowel_pair = current.vowel .. current.coda .. posterior.onset .. posterior.vowel
local reduction = true
if current.stressed then
reduction = false
--TODO: review, i.e. anorrêa, anorêes, arrêen
elseif pre_vowel_pair == "əe" and not previous.stressed then
--elseif pre_vowel_pair == "əe" then
reduction = false
elseif str.find(post_vowel_pair, "e[aòôɔ]") then
reduction = false
elseif i < syllables.stress -1 and post_vowel_pair == "ee" then
posterior.vowel = "ə" -- avoid əe in next loop
elseif i > syllables.stress and post_vowel_pair == "ee" then
reduction = false
--elseif pre_vowel_pair == "ɔe" then -- ? bòer, côedició > /ɔə/
-- reduction = false
elseif lect == "bal"
and i == #syllables
and previous.stressed
and current.vowel == "e"
and str.find(current.coda, "^k")
then
reduction = false -- no reduction final poststressed -ec in Majorcan, i.e. ànec
end
if reduction then
current.vowel = str.gsub(current.vowel, "[ae]", "ə")
end
end
return syllables
end
local function reductionUnstressO(syllables, lect)
-- Central, Menorca, Eivissa: o àtona > /u/
-- Balear /u/ en una llista de 9 mots (UIB) -- DONE by respelling
-- Alguns parlars mallorquins i occidentals en alguns contextos (GIEC 3.3.4.1.b):
---- seguida de síl·laba tònica i (conill, cosí, coixí, tossir)
---- habitualment precedit de palatoalveolar (Joan, Josep, joventut)
-- Valencià (GNV 1.2.2.3.2.e):
---- estàndard: Josep, Joan
---- acceptable en àmbit local: davant i tònica o C labial (collir, tossir, cobert, obert)
for i = 1, #syllables do
local current = syllables[i]
local posterior = syllables[i + 1] or {onset = "", vowel = "", coda = ""}
if current.vowel == "o" and not current.stressed then
if lect == "bal" then
-- do nothing, vowel harmony don't use to happen in Palma
-- it will be as "bal2" for Menorca and Eivissa
elseif lects_group[lect] == "ori" and current.coda ~= "w" then
current.vowel = "u"
elseif lect == "val2" then
-- do nothing, not systematic, neither Northwestern
-- it seems from Old Catalan in first stage of unstressed reduction
-- DONE by respelling according with the DCVB
end
end
end
return syllables
end
-- Do context-sensitive phonological changes
local function postprocessGeneral(syllables, lect)
local lect_12 = str.sub(lect, 1, 3)
for i = 1, #syllables do
local current = syllables[i]
local previous = syllables[i - 1] or {onset = "", vowel = "", coda = ""}
-- Final -ig, stressed or in compound not adverb: mig, roig, puig, migdiada
if (str.find(current.vowel, "[^i]") and str.find(current.coda, "^jɡs?$")
or current.vowel == "i" and str.find(current.coda, "^ɡs?$"))
and current.stressed and str.sub(pagename, -4) ~= "ment"
then
if lect == "cen2" then
-- iodització final central V+igs: raigs > rajts, fet més endavant
current.coda = str.gsub(current.coda, "(j?)ɡ(s?)", "%1t͡ʃ%2")
else
current.coda = str.gsub(current.coda, "j?ɡ(s?)", "t͡ʃ%1")
end
end
-- Coda consonant losses
if i < #syllables then
current.coda = str.gsub(current.coda, "([ɫn])[td]$", "%1")
current.coda = str.gsub(current.coda, "m[pb]$", "m")
current.coda = str.gsub(current.coda, "s[td]$", "s") -- istme, postgrau
else
current.coda = str.gsub(current.coda, "([ɫn])[td]s", "%1s") -- malalts, accents
current.coda = str.gsub(current.coda, "m[pb]s", "ms") -- camps, tombs
current.coda = str.gsub(current.coda, "mpt(s?)", "mt%1") -- exempt, irredempt
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" or lect == "bal2" then
current.coda = str.gsub(current.coda, "([ɫn])[td]", "%1") -- malalt, cald, -ment, fecund
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" then
current.coda = str.gsub(current.coda, "m[pb]", "m") -- camp, tomb
end
end
end
-- Betacism v > /b/ in onsets, not in codas (ovni, hafni)
-- doing it before assimilations and spirants
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" then
current.onset = str.gsub(current.onset, "v", "b")
end
-- Reduction geminated l·l > /l/
-- doing it before gemination tl > /ll/ and /ʎʎ/ > /ll/
if (lect == "cen2" or lect == "noc2" or lect == "val2")
and current.onset == "ɫ"
then
previous.coda = str.gsub(previous.coda, "ɫ", "")
end
---- Consonant assimilations
-- t + lateral/nasal/plosive assimilation, not tm
if str.find(previous.coda, "t$") and str.find(current.onset, "^ɫ") then
-- tl > /ll/ except cultisms dl /dl/, nor atl /adl/ in Valencian
-- doing it before devoicing d /t/
if lect_12 == "val" then
if not (previous.onset == "" and previous.vowel == "a") then
-- not atles, triatló... but batle, guatla...
previous.coda = lect == "val" and "ɫ" or "" -- /l/ in val2
end
else
previous.coda = "ɫ"
end
elseif str.find(previous.coda, "t$") and str.find(current.onset, "^ʎ") then
if lect_12 == "cen" or lect_12 == "noc" then
-- Central and Northwestern tʎ > /ʎʎ/
previous.coda = str.gsub(previous.coda, "t$", "ʎ")
else
-- Balearic and Valencian: tʎ > /ll/ (inherited) or /ʎ/ (borrowed)
local previous_syl = previous.onset .. previous.vowel .. previous.coda
if str.find(previous_syl, "[bpw]at$") -- batlle, espatlla, guatlla
or str.find(pagename, "[mv]etll") -- ametlla, -vetlla
or (str.find(previous_syl, "tit$") -- titlla
and not str.find(pagename, "estitll")) -- exc. estitll-
or str.find(previous_syl, "m[oɔ]t$") -- motlle
or (str.find(previous_syl, "r[oɔu]t$") -- -rotlle
and lect_12 == "bal")
or (str.find(previous_syl, "ut$") -- butlla, rutlla
and not str.find(pagename, "butll[eo][tf]")) -- exc. butlleta, butlletí, -butllofa
then
previous.coda = "ɫ"
current.onset = "ɫ"
else
previous.coda = ""
end
end
elseif str.find(previous.coda, "t$") and str.find(current.onset, "^n") then
-- tn > /nn/ except cultisms
if not str.find(previous.vowel, "[eɛêë]") then -- except ètnic, etno-...
previous.coda = str.gsub(previous.coda, "t$", "n") -- vietnamita, pitnegre to be fixed
end
elseif previous.coda:find("[dt]$") then -- GIEC 4.4.2.2 plosive assimilations
if current.onset == "k" and lect_12 == "bal" then
-- d/t + k > /kk/ DCVB, not in GDLV, DNV
previous.coda = str.gsub(previous.coda, "[dt]$", "k") -- batcoll, sud-coreà
elseif current.onset == "b"
and lect_12 ~= "val" and previous.stressed == nil
then
-- t + b > /bb/ DCVB & GDLV, not in DNV, not ràtbúf
previous.coda = str.gsub(previous.coda, "t$", "b") -- futbol
elseif current.onset == "v" and lect_12 == "bal" then
-- d/t + v > /bv/ DCVB, not in GDLV, DNV
previous.coda = str.gsub(previous.coda, "[dt]$", "b") -- adverbi, gatvaire
elseif current.onset == "p" and lect_12 == "bal" then
-- t + p > /pp/ DCVB, not in GDLV, DNV
previous.coda = str.gsub(previous.coda, "t$", "p") -- totpoderós
end
end
-- nasal assimilations
if str.find(current.onset, "^[mbp]") then -- nasal + labial > labialized
if str.find(previous.coda, "n$") then
previous.coda = str.gsub(previous.coda, "n$", "m")
elseif str.find(previous.coda, "[bp]$") -- labial + nasal > labialized
and str.find(current.onset, "^m")
and (lect_12 == "cen" or lect_12 == "bal" or lect_12 == "noc")
then
previous.coda = str.gsub(previous.coda, "[bp]$", "m")
end
elseif str.find(current.onset, "^[fv]") then
previous.coda = str.gsub(previous.coda, "[mn]$", "ɱ")
elseif str.find(current.onset, "^[ɡk]") then -- n + velar > velarized
previous.coda = str.gsub(previous.coda, "n$", "ŋ")
elseif str.find(previous.coda, "[ɡk]$") -- velar + n > velarized
and str.find(current.onset, "^n")
and (lect_12 == "cen" or lect_12 == "bal" or lect_12 == "noc")
then
previous.coda = str.gsub(previous.coda, "[ɡk]$", "ŋ")
elseif str.find(current.onset, "^[ʒʎʃɲ]") -- n + palatal > palatalized
or str.find(current.onset, "^t͡ʃ")
or str.find(current.onset, "^d͡ʒ")
then
previous.coda = str.gsub(previous.coda, "n$", "ɲ")
end
if i < #syllables then
current.coda = str.gsub(current.coda, "n[kɡ]", "ŋ") -- sangglaçar, ping-pong, francmaçó...
else
current.coda = str.gsub(current.coda, "n[kɡ]", "ŋk")
end
if i == 1 then
current.onset = str.gsub(current.onset, "ɡn", "ŋn") -- gnom
end
current.coda = str.gsub(current.coda, "[mn]([fv])", "ɱ%1")
current.coda = str.gsub(current.coda, "n([ʃʒ])", "ɲ%1")
current.coda = str.gsub(current.coda, "n(t͡ʃ)", "ɲ%1")
current.coda = str.gsub(current.coda, "n(d͡ʒ)", "ɲ%1")
-- l + palatal > palatalized
-- doing it before fortition of palatal fricatives
if str.find(current.onset, "^[ʎʃɲ]")
or str.find(current.onset, "^t͡ʃ")
or str.find(current.onset, "^d͡ʒ")
then
previous.coda = str.gsub(previous.coda, "ɫ$", "ʎ")
elseif current.onset == "ʒ" and lect_12 == "cen" then
if not (i == 2 and previous.text == "maɫ") -- except prefix mal-
-- endings -àlgia/es, -àlgica/es, -àlgic/s are ambiguous, to be fixed by respelling
and not (i > 2 and i == #syllables - 1 and str.find(previous.text, "aɫ$") and current.text == "ʒi" and str.find(syllables[i + 1].text, "^k?[ae]")) -- except cultisms -àlgia/es, -àlgica/es
and not (i > 2 and i == #syllables and str.find(previous.text, "aɫ$") and str.find(current.text, "ʒiks?")) -- except cultisms -àlgic/s
then
previous.coda = str.gsub(previous.coda, "ɫ$", "ʎ")
end
end
if (lect_12 == "bal" or lect_12 == "val")
and previous.coda == "ʎ" and current.onset == "ʎ"
then
-- no palatal gemination in Balearic and Valencian: Bell-lloc
previous.coda = ""
end
current.coda = str.gsub(current.coda, "ɫʃ", "ʎʃ")
current.coda = str.gsub(current.coda, "ɫ(t͡ʃ)", "ʎ%1")
if lect_12 == "cen" then
current.coda = str.gsub(current.coda, "ɫʒ", "ʎʒ")
end
-- Double sound of letter x > ks/gz (on cultisms, ambiguous in onsets)
-- doing it before fortition ʃ > t͡ʃ
if current.vowel ~= "i" then
current.coda = str.gsub(current.coda, "^ʃs?$", "ks")
end
if previous.coda == "kz" then
previous.coda = "ɡz" -- voicing the group
end
if (previous.onset == "" and (previous.vowel == "e" or previous.vowel == "ɛ")
or str.find(pagename, "hex"))
and ((previous.coda == "" and current.onset == "ʃ") or (previous.coda == "ks" and current.onset == ""))
then
-- ex + (h) vowel > egz
previous.coda = "ɡ"
current.onset = "z"
end
-- Fortition of palatal fricatives
if previous.coda == "ɡ" and current.onset == "ʒ" then
current.onset = "d͡ʒ"
previous.coda = ""
end
if lects_group[lect] == "occ" then
if current.onset == "ʃ"
and previous.coda ~= "j" and (previous.vowel .. previous.coda) ~= "i"
then
-- not hint xx > -ʃʃ, nor <ix>: xiuxiuejar, para-xocs
current.onset = "t͡ʃ"
end
if lect_12 == "noc" then
if current.onset == "ʒ" and (i == 1 or previous.coda ~= '') then
current.onset = "d͡ʒ"
end
elseif lect_12 == "val" then
current.onset = str.gsub(current.onset, "^ʒ", "d͡ʒ")
current.coda = str.gsub(current.coda, "^ʒ", "d͡ʒ")
if previous.vowel == "i" and previous.coda == "" and current.onset == "d͡z" then
current.onset = "z"
end
end
elseif lect == "bal" then -- fortition in -ejar/-ajar
-- GIEC 4.2.3.1: tendència a l’africació del sufix ‑ej(ar)
-- (passejar, festejar, glopejar, plantejar) i en algun altre mot (roja).
-- UIB: s'admet fricativa o africada:
-- assajar, festejar, manejar, rajar, passejar
-- llegir, regir, corregir
-- assajos, batejos, Magí, roja/os, rajola, boja/os, truja i algun altre.
-- FIXME: move to bal2
-- TODO: try only a list of verbs and its forms, others by respelling
-- TODO: currently it does not include all verb forms
if i > 1
and current.vowel == "a" and i == syllables.stress
and str.find(previous.vowel, "[ae]") and previous.coda == ""
then
current.onset = str.gsub(current.onset, "^ʒ", "d͡ʒ")
end
end
current.onset = str.gsub(current.onset, "ʃʃ", "ʃ") -- remove hint
current.coda = str.gsub(current.coda, "ʃʃ", "ʃ")
-- Assimilation s + sibilant
-- GIEC 4.4.3.4:
---- majoria de parlars, elisió: descentrar /s/, desxifrar /ʃ/, desgelar /ʒ/
---- mallorquí i menorquí, africació i geminació: /tts/, /ttʃ/, /ddʒ/
-- UIB-totdret, recomanable allargament, no africació: /ss/, /ʃʃ/, /ʒʒ/
-- done after reduction s-c and exs, and fortition t͡ʃ d͡ʒ
-- done before voicing s > z
if previous.coda:find("s$") then
if current.onset == "s" then
if previous.coda == "s" then
-- elision /ss/ intervocalic except in Balearic
if lect_12 ~= "bal" then
previous.coda = ""
end
else
previous.coda = previous.coda:gsub("s$", "")
end
elseif current.onset == "ʃ" or current.onset == "ʒ" then
if lect_12 == "cen" then
previous.coda = previous.coda:gsub("s$", "")
elseif lect_12 == "bal" then
previous.coda = str.gsub(previous.coda, "s$", current.onset)
end
end
end
-- Voicing or devoicing
local voiced = listToSet({"b", "d", "ɡ", "m", "n", "ɲ", "ɫ", "ʎ", "r", "ɾ", "v", "z", "ʒ"})
local voiceless = listToSet({"p", "t", "k", "f", "s", "ʃ", ""})
local devoicing = {["b"]="p", ["d"]="t", ["ɡ"]="k"}
local voicing = {["p"]="b", ["t"]="d", ["k"]="ɡ", ["f"]="v", ["s"]="z", ["ʃ"]="ʒ"}
local current_initial = str.sub(current.onset, 1, 1)
local previous_final = str.sub(previous.coda, -1)
if voiced[current_initial] and voicing[previous_final] then
previous.coda = str.gsub(previous.coda, previous_final .. "$", voicing[previous_final])
previous.coda = str.gsub(previous.coda, "t͡ʒ", "d͡ʒ")
elseif current_initial == "" and previous_final == "ʃ" then
-- voicing sibilants before a vowel GIEC 4.4.1.2: baix-alemany, Puig-agut
local onset_new = str.gsub(previous.coda, previous_final .. "$", voicing[previous_final])
onset_new = str.gsub(onset_new, "t͡ʒ", "d͡ʒ")
current.onset = str.gsub(onset_new, "j", "")
previous.coda = str.gsub(onset_new, "[^j]", "")
elseif voiceless[current_initial] and devoicing[previous_final] then
previous.coda = str.gsub(previous.coda, previous_final .. "$", devoicing[previous_final])
end
previous.coda = str.gsub(previous.coda, "[bd]s", {["bs"] = "ps", ["ds"] = "ts"})
-- Final devoicing
if i == #syllables then
current.coda = str.gsub(current.coda, "d͡ʒ", "t͡ʃ")
current.coda = str.gsub(current.coda, "d͡z", "t͡s")
current.coda = str.gsub(current.coda, "b", "p")
current.coda = str.gsub(current.coda, "d", "t")
current.coda = str.gsub(current.coda, "ɡ", "k")
current.coda = str.gsub(current.coda, "ʒ", "ʃ")
current.coda = str.gsub(current.coda, "v", "f")
current.coda = str.gsub(current.coda, "z", "s")
end
-- affricate + affricate/fricative (migjorn, puigcerdanenc): GIEC 4.4.3.4.b
if lect ~= "val"
and ((previous.coda == "d͡ʒ" and str.find(current.onset, "ʒ"))
or (previous.coda == "t͡ʃ" and current.onset == "s"))
then
current.onset = previous.coda
previous.coda = ""
end
-- Allophones of r
-- in replaceContextFree(), we converted single r to ɾ and double rr to r
-- doing it before spirant lenitions r+bdg
if i == 1 then
current.onset = str.gsub(current.onset, "^ɾ", "r")
elseif str.find(previous.coda, "[ɫnz]$") then
current.onset = str.gsub(current.onset, "^ɾ", "r")
end
-- GIEC 4.2.6.c: bategant mallorquí, eivissenc, nord-occcidental meridional, valencià
if i < #syllables -- final coda done afterwards depending of hint
and (lect_12 == "cen" or lect == "bal2" or lect == "noc")
then
current.coda = str.gsub(current.coda, "ɾ", "r")
end
-- GNV 1.3.2.1.1.c: reduction of first consonant on ads-, obs-, subs- + C
-- previously devoiced d /t/, b /p/, and reduced sc /ss/ > /s/ (obscé)
if lect == "val2" then
if previous.vowel == "a" then
previous.coda = str.gsub(previous.coda, "ts$", "s")
elseif str.find(previous.vowel, "[ou]") then
previous.coda = str.gsub(previous.coda, "ps$", "s")
end
end
-- Gemination bl, gl: poststressed in Central, any in Balearic
-- doing it before spirant lenition
if str.find(current.onset, "^[bɡ]ɫ")
and previous.coda == ""
and ((previous.stressed and lect_12 == "cen") or lect_12 == "bal")
then
previous.coda = str.sub(current.onset, 1, 1)
end
-- remove respelling bbl/ggl in Western
if lects_group[lect] == "occ" then
local gemin = previous.coda .. current.onset
if gemin == "bbɫ" or gemin == "ɡɡɫ" then
previous.coda = ""
end
end
-- No gemination dd
-- doing it before spirant lenition
if lect_12 == "val" and current.onset == "d" and previous.coda == "d" then
previous.coda = ""
end
-- Spirant lenition
-- doing it before voicing assimilation s > z
-- TODO: review with GIEC 4.4.3.3:
-- en obertura
-- després de vocal, semivocal, ròtica, lateral (exc. ð)
-- fricativa labiodental
-- fricativa alveolar i palatoalveolar
-- africada alveolar i palatoalveolar
-- ...
if i > 1
and str.find(current.onset, "^[bdɡ]")
and not str.find(current.onset, "^d͡")
and not (str.find(current.onset, "^b") and (lect_12 == "bal" or lect == "val")) -- no β in v/b distintion
and not (str.find(previous.coda, "[ɫʎ]$") and str.find(current.onset, "^d")) -- except lateral + d
and not str.find(previous.coda, "[pbtdkɡmɱnɲŋ]$")
and not (str.find(previous.coda, "[rz]$") and lect_12 == "cen")
--and (previous.stressed == nil or current.stressed == nil) -- ?
then
current.onset = str.gsub(current.onset, "[bdɡ]", {["b"] = "β", ["d"] = "ð", ["ɡ"] = "ɣ"})
end
-- iodització ll balear
-- TODO: move hint to "bal2" as informal
if lect_12 == "bal" then
current.onset = str.gsub(current.onset, "L", "j")
current.coda = str.gsub(current.coda, "L", "j")
else
current.onset = str.gsub(current.onset, "L", "ʎ")
current.coda = str.gsub(current.coda, "L", "ʎ")
end
-- iodització final central V+igs: raigs > rajts
-- doing it before removing j and after final devoicing
if lect == "cen2" and i == #syllables then
current.coda = str.gsub(current.coda, "jt͡ʃs$", "jt͡s")
end
-- Remove j before palatal obstruents
if lects_group[lect] == "ori" then
current.coda = str.gsub(current.coda, "j([ʃʒ])", "%1")
current.coda = str.gsub(current.coda, "j(t͡ʃ)", "%1")
current.coda = str.gsub(current.coda, "j(d͡ʒ)", "%1")
if str.find(current.onset, "^[ʃʒ]")
or str.find(current.onset, "^t͡ʃ")
or str.find(current.onset, "^d͡ʒ")
then
previous.coda = str.gsub(previous.coda, "j$", "")
end
elseif lect == "val2" then
if str.find(current.onset, "^ʃ") then
previous.coda = str.gsub(previous.coda, "j$", "")
end
end
-- Ascending diphthong /uj/ > /wi/
-- doing it before reduction o
if lect == "val2"
and current.vowel == "u" and str.find(current.coda, "^j")
and i < #syllables and syllables[i + 1].onset ~= "ʃ"
then
current.onset = current.onset .. "w"
current.vowel = "i"
current.coda = str.gsub(current.coda, "^j", "")
end
-- Vowel assimilation of final a
-- TODO: review, standard v. acceptable
if lect == "val2"
and i == #syllables
and current.vowel == "a" and current.coda == ""
and (previous.vowel == "ɛ" or previous.vowel == "ɔ")
then
current.vowel = previous.vowel
end
-- resyllabling some prefix+V
if i == 2 and current.onset == "" then
if previous.coda == "p" then -- sub-
current.onset = "p"
previous.coda = ""
if lect == "val2" then
current.onset = "β"
end
elseif str.find(previous.coda, "r?t$") then -- nord-, sud-
current.onset = "t"
previous.coda = str.gsub(previous.coda, "t$", "")
end
end
end -- by syllables
-- Elision and reduction of unstressed vowels a,e,o
if lects_group[lect] == "ori" then
syllables = elisionContinguousVowels(syllables, lect)
syllables = reductionUnstressAE(syllables, lect)
syllables = reductionUnstressO(syllables, lect)
end
-- Final consonant losses
local final_coda = syllables[#syllables].coda
final_coda = str.gsub(final_coda, "j(t͡ʃ)s?$", "%1")
final_coda = str.gsub(final_coda, "([ʃs])s", "%1") -- homophone plurals -xs, -çs
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" or (lect == "val" and syllables.stress < #syllables) then
final_coda = str.gsub(final_coda, "ŋk(s?)$", "ŋ%1")
end
if lect == "val2" then
final_coda = str.gsub(final_coda, "ʎs$", "ʎʃ")
end
-- final r, GIEC 4.3.4
-- elision in verbs -ar, -er, -ir; adj or nouns -er, -or stressed
-- coverts most cases, but plenty of exceptions to be fixed
if #syllables > 1 and lect ~= "val" then
if syllables.stress == #syllables then
final_coda = str.gsub(final_coda, "^ɾ(s?)$", "%1") -- no loss with hint rr
elseif str.find(pagename, "àixer$") or str.find(pagename, "ànyer$")
or str.find(pagename, "[éè]ixer$") or str.find(pagename, "[éè]mer$")
or str.find(pagename, "[éè]ncer$") or str.find(pagename, "[éè]nyer$")
or str.find(pagename, "òrcer$") or str.find(pagename, "órrer$")
then
final_coda = str.gsub(final_coda, "^ɾ$", "") -- most unstressed -er verbs
end
end
final_coda = str.gsub(final_coda, "([rɾ])+?", "ɾ") -- remove hint
if lect_12 == "cen" or lect_12 == "noc" or lect_12 == "bal" then
final_coda = str.gsub(final_coda, "([rɾ])ts$", "%1s")
end
-- allophones of r in coda: GIEC 4.2.6.c /r/ in Central, Menorca and most Northwestern
if lect_12 == "cen" or lect == "bal2" or lect == "noc" then
final_coda = str.gsub(final_coda, "ɾ", "r")
else
final_coda = str.gsub(final_coda, "r", "ɾ")
end
syllables[#syllables].coda = final_coda
return syllables
end
local function applySubstitutionSpec(respelling, term)
local from, to = str.match(respelling, "^(.*):(.*)$")
local nsub
if from == "<stress>" then
local mid_vowel_hint = to
local syllables = splitSyllables(term)
local stressed_vowel = syllables[syllables.stress].vowel
if (str.find(mid_vowel_hint, "[èéêë]") and str.find(stressed_vowel, "[eèé]"))
or (str.find(mid_vowel_hint, "[òóô]") and str.find(stressed_vowel, "[oòó]"))
then
syllables[syllables.stress].vowel = mid_vowel_hint
else
ret_error = "no s'ha pogut substituir '" .. mid_vowel_hint
.. "' en la vocal '" .. syllables[syllables.stress].vowel .. "'."
end
local term_syl = {}
for i, syl in ipairs(syllables) do
term_syl[i] = syl.onset .. syl.vowel .. syl.coda
end
term = table.concat(term_syl)
if str.find(pagename, "l·l") then
term = str.gsub(term, "ll", "l·l") -- restore geminated lost in splitSyllables()
end
if str.find(pagename, "-") then
local first = str.match(pagename, "(.+)-")
term = str.gsub(term, first, first .. "-")
end
elseif from == "" then
local plain_to = plainText(to)
if to:sub(-1) == "-" then
-- TODO: add secondary accent
if str.find(term, "-") then
from = str.sub(plain_to, 1, -2)
to = str.sub(to, 1, -2)
else
from = plainText(str.sub(to, 1, -2))
end
term, nsub = str.gsub(term, from, to, 1)
elseif to ~= plain_to then
term, nsub = str.gsub(term, plain_to, to, 1)
else
term = to
end
else
term, nsub = str.gsub(term, from, to, 1)
end
if nsub == 0 then
ret_error = "no s'ha trobat '" .. from .. "' a '" .. term .. "'"
end
return term
end
local function canonRespelling(text)
text = mw.text.trim(text)
text = str.gsub(text, "%s+", " ")
local lower_first = str.lower(str.sub(text, 1, 1))
if lower_first == str.lower(str.sub(pagename, 1, 1)) then
text = lower_first .. str.sub(text, 2)
end
return text
end
local function canonPagename(text)
text = str.lower(text)
text = str.gsub(text, "[¡¿!?']", "")
text = str.gsub(text, ", ", "")
text = str.gsub(text, "^%-", "")
text = str.gsub(text, "%-$", "")
return text
end
local function parseRespelling(respelling, term)
term = canonRespelling(term)
if respelling == "-" then
return {omitted = true}
elseif respelling:match("^/(.+)/$") then
return {raw = respelling}
elseif respelling == "+" then
return {term = term}
elseif not str.find(respelling, ":") then
local mid_vowel_hint = str.match(respelling, "^[éèêëóòô]$")
if mid_vowel_hint then
respelling = "<stress>:" .. mid_vowel_hint
elseif respelling == "ks" then
respelling = "x:ks"
elseif respelling == "xx" then -- xeix <x> /ʃ/ not /t͡ʃ/
term = str.gsub(term, "x(.)", "xx%1") -- initial or interior
term = str.gsub(term, "ixx", "ix") -- not needed
term = str.gsub(term, "([^-])xx", "%1-xx") -- force to onset
return {term = term}
elseif respelling == "rr" then
respelling = "r(s?)$:rr%1"
elseif respelling == "-r" then
respelling = "r(s?)$:%1"
elseif respelling:sub(-1) == "-" then
respelling = ":" .. respelling
elseif str.find(respelling, "[àāéèêëēíóòôōú]")
and str.len(respelling) < str.len(term) / 2
then
respelling = ":" .. respelling
else
return {term = canonRespelling(respelling)}
end
end
if str.find(respelling, ":") then
term = applySubstitutionSpec(respelling, term)
else
term = canonRespelling(respelling)
end
return {term = term}
end
local function preprocessWord(syllables, lect)
-- Fix mid vowel
if syllables.stress then
local stressed_vowel = syllables[syllables.stress].vowel
if str.find(stressed_vowel, "[eèo]") then
syllables[syllables.stress].vowel = midVowelFixes(syllables)
if str.find(syllables[syllables.stress].vowel, "[eo]") then
ret_error = "vocal tònica '" .. stressed_vowel .. "' ambigua."
end
end
if ret_error then
return {}
end
end
local syllables_IPA = {stress = syllables.stress}
for key, val in ipairs(syllables) do
syllables_IPA[key] = {onset = val.onset, vowel = val.vowel, coda = val.coda, stressed = val.stressed}
end
-- Replace letters with IPA equivalents
for i, syll in ipairs(syllables_IPA) do
-- Voicing of s
if syll.onset == "s" and i > 1 and (syllables[i-1].coda == "" or syllables[i-1].coda == "i" or syllables[i-1].coda == "u") then
syll.onset = "z"
end
if str.find(syll.vowel, "^[eèéêëēií]$") then
syll.onset = str.gsub(syll.onset, "tg$", "d͡ʒ")
syll.onset = str.gsub(syll.onset, "[cg]$", {["c"] = "s", ["g"] = "ʒ"})
syll.onset = str.gsub(syll.onset, "[qg]u$", {["qu"] = "k", ["gu"] = "ɡ"})
end
syll.onset = replaceContextFree(syll.onset)
syll.coda = replaceContextFree(syll.coda)
local IPA_vowels = {
["a"] = "a", ["à"] = "a",
["e"] = "e", ["è"] = "ɛ", ["é"] = "e",
["i"] = "i", ["í"] = "i", ["ï"] = "i",
["o"] = "o", ["ò"] = "ɔ", ["ó"] = "o",
["u"] = "u", ["ú"] = "u", ["ü"] = "u",
}
local IPA_vowels_eastern = {
["ê"] = "ɛ", ["ë"] = "ɛ", ["ô"] = "ɔ",
}
local IPA_vowels_mallorcan = {
["ê"] = "ə", ["ë"] = "ɛ", ["ô"] = "ɔ",
}
local IPA_vowels_western = {
["ê"] = "e", ["ë"] = "e", ["ô"] = "o",
}
if lect == "bal" then
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels_mallorcan)
elseif lects_group[lect] == "ori" then
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels_eastern)
elseif lects_group[lect] == "occ" then
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels_western)
end
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels)
syll.text = syll.onset .. syll.vowel .. syll.coda
end
return syllables_IPA
end
local function toIPA(word, lect)
local pronuns = {}
word = wordRespellings(word, lect)
local syllables = splitSyllables(word, lect)
syllables = preprocessWord(syllables, lect)
if ret_error then
return {}
end
-- TODO: process with text instead of table
-- combine syllables
--local combined = {}
--for i, syll in ipairs(syllables) do
-- -- TODO: add primary and seconday accent
-- table.insert(combined, syll.onset .. syll.vowel .. syll.coda)
--end
--local text = table.concat(combined, "·") -- · syllables delimiter
--text = "#" .. text .. "#" -- # word delimiter
--return postprocessGeneral(text, lect)
return postprocessGeneral(syllables, lect)
end
local function generatePhonetic(parsed_respellings)
for lect, termobj in pairs(parsed_respellings) do
if termobj.omitted then
-- leave alone, will handle later
elseif termobj.raw then
termobj.phonetic = termobj.raw
else
termobj.phonetic = toIPA(termobj.term, lect)
end
end
end
local function joinSyllables(syllables)
for i, syll in ipairs(syllables) do
syll.vowel = str.gsub(syll.vowel, "[āēō]", {["ā"] = "a", ["ē"] = "e", ["ō"] = "o"})
syll = syll.onset .. syll.vowel .. syll.coda
if i == syllables.stress then -- primary stress
syll = "ˈ" .. syll
elseif syllables[i].stressed then -- secondary stress
syll = "ˌ" .. syll
end
syllables[i] = syll
end
return "/" .. str.gsub(table.concat(syllables, "."), "%.([ˈˌ.])", "%1") .. "/"
end
-- Main entry point
-- input: 1 table of arguments with respelling or hint, general or by lect,
-- as done by Module:ca-pron from the frame of Template:ca-pron;
-- if void then uses parameter "pagename"
-- output: table of pairs lect=pronunciation generated and formatted for geolects or variants
function p.show(pron, page_name)
pagename = canonPagename(page_name or mw.title.getCurrentTitle().subpageText)
local inputs = {}
-- if 1= specified, do all lects
local input_all = {}
if pron[1] then
input_all = listToSet(mw.text.split(pron[1], " ?, ?"))
for _, lect in ipairs(lects) do
inputs[lect] = pron[1]
end
end
-- then do dialect groups
for group, lects in pairs(groups_lects) do
if pron[group] then
for _, lect in ipairs(lects) do
inputs[lect] = pron[group]
end
end
if pron[group .. "2"] then
for _, lect in ipairs(lects) do
inputs[lect.. "2"] = pron[group .. "2"]
end
end
end
-- then do individual lect settings
for _, lect in ipairs(input_lects) do
if pron[lect] then
inputs[lect] = pron[lect]
elseif str.sub(lect, -1) == "2" and pron[str.sub(lect, 1, -2)] then
inputs[lect] = pron[str.sub(lect, 1, -2)]
end
end
-- if no inputs given, set all lects based on current pagename
if not next(inputs) then
for _, lect in ipairs(lects) do
inputs[lect] = pagename
end
end
-- Parse the arguments
local parsed_respellings = {}
for lect, inputspec in pairs(inputs) do
local input_split_on_comma = mw.text.split(inputspec, " ?, ?")
-- do mid_vowel_hint first
local mid_vowel_hint
for _, input_part in ipairs(input_split_on_comma) do
mid_vowel_hint = str.match(input_part, "^[éèêëóòô]$")
if mid_vowel_hint then
parsed_respellings[lect] = parseRespelling(input_part, pagename)
end
end
for _, input_part in ipairs(input_split_on_comma) do
if lect == "val" and input_part:find("[r-]r$") and input_all[input_part] then
input_part = "+" -- do not apply general r hints to Valencian
end
if input_part ~= mid_vowel_hint then
local respelled = pagename
if parsed_respellings[lect] then -- previously respelled
respelled = parsed_respellings[lect].term or pagename
end
parsed_respellings[lect] = parseRespelling(input_part, respelled)
end
end
end
if ret_error then
return {}, ret_error
end
-- Convert each canonicalized respelling to IPA
generatePhonetic(parsed_respellings)
if ret_error then
return {}, ret_error
end
-- Concatenate formatted results
local ret = {}
for lect, pronun_spec in pairs(parsed_respellings) do
if not pronun_spec.omitted then
ret[lect] = pronun_spec.raw or joinSyllables(pronun_spec.phonetic)
end
end
return ret
end
-- on debug console, call p.show with table of arguments and pagename:
-- =p.show({"ó", bal="-"}, "prova")
return p
3o5m2texzzqe3rizqvgvtcyvn9bqkco
2301933
2301915
2024-04-17T10:45:20Z
Vriullop
219
corr.
Scribunto
text/plain
local p = {}
-- dependencies
local listToSet = require("Module:TableTools").listToSet
local track = require('Module:utilitats').track
-- shortcurts for string functions
local str = {}
str.find = mw.ustring.find
str.match = mw.ustring.match
str.gsub = mw.ustring.gsub
str.sub = mw.ustring.sub
str.lower = mw.ustring.lower
str.len = mw.ustring.len
local pagename
-- lects generated, with variant "2"
local lects = {"cen", "cen2", "bal", "bal2", "noc", "noc2", "val", "val2"}
-- additional lects accepted as optional input:
-- Girona "ceng" as variant of "cen", supposedly with respelling
-- Northern "sep" and Algherese "alg", supposedly with IPA
local input_lects = {"cen", "cen2", "ceng", "bal", "bal2", "sep", "alg", "noc", "noc2", "val", "val2"}
local groups_lects = {
ori = {"cen", "cen2", "bal", "bal2"},
occ = {"noc", "noc2", "val", "val2"}
}
local lects_group = {
["cen"] = "ori", ["cen2"] = "ori", ["ceng"] = "ori",
["bal"] = "ori", ["bal2"] = "ori", ["sep"] = "ori", ["alg"] = "ori",
["noc"] = "occ", ["noc2"] = "occ", ["val"] = "occ", ["val2"] = "occ"
}
local vowels = "aàāeèéëêēiíïoòóôōuúü"
local ret_error
local function plainText(text) -- vowels without diacritics
local accents = "[" .. mw.ustring.char(0x0301, 0x0300, 0x0302, 0x0308, 0x0304) .. "]"
-- acute, grave, circumflex, diaresis, macron
local decomposed_text = mw.ustring.toNFD(text)
decomposed_text = str.gsub(decomposed_text, "([aeiou])" .. accents, "%1")
return mw.ustring.toNFC(decomposed_text) -- compose remaining characters (ç, l·l...)
end
local function fixPrefixes(word)
-- Respellings for unassimilated prefixes
-- TODO: review if it should be done by respelling "aero-", etc.
local prefix = {
"a[eé]ro", "ànte", "[aà]nti", "[aà]uto", -- a- is ambiguous as prefix
"bi", "b[ií]li", "bio",
"c[oô]ntra", -- ambiguous co-
"dia", "dodeca",
"[eé]ntre", "equi", "est[eë]reo", -- ambiguous e-(radic)
"f[oó]to",
"g[aà]stro", "gr[eé]co",
"hendeca", "hepta", "hexa", "h[oô]mo",
"[ií]nfra", "[ií]ntra",
"m[aà]cro", "m[ií]cro", "mono", "m[oô]rfo", "m[uú]lti",
"n[eé]o",
"octo", "orto",
"p[eë]nta", "p[oô]li", "pol[ií]tico", "pr[oô]to", "ps[eë]udo", "psico", -- ambiguous pre-(s), pro-
"qu[aà]si", "qu[ií]mio",
"r[aà]dio", -- ambiguous re-
"s[eë]mi", "s[oó]bre", "s[uú]pra",
"t[eë]rmo", "tetra", "tri", -- ambiguous tele-(r)
"[uú]ltra", "[uu]n[ií]",
"v[ií]ce"
}
local prefix_r = {"[eë]xtra", "pr[eé]"}
local prefix_s = {"[aà]ntropo", "c[eé]ntro", "deca", "d[ií]no", "[eë]co",
"[eë]xtra", "hetero", "p[aà]ra", "p[oô]st", "pré", "s[oó]ta", "t[eë]le"
}
local prefix_i = {"pr[eé]", "pr[ií]mo", "pro", "t[eë]le"}
local no_prefix = {"autoic", "autori", "biret", "biri", "bisa", "bisell",
"bisó", "biur", "contrari", "contrau", "diari", "equise", "heterosi",
"monoi", "parasa", "parasit", "preix", "psicosi", "sobrera", "sobreri"
}
-- False prefixes
for _, pr in ipairs(no_prefix) do
if str.find(word, "^" .. pr) then
return word
end
end
-- Double r in prefix + r + vowel
for _, pr in ipairs(prefix_r) do
word = str.gsub(word, "^(" .. pr .. ")r([" .. vowels .. "])", "%1rr%2")
end
word = str.gsub(word, "^eradic", "erradic")
-- Double s in prefix + s + vowel
for _, pr in ipairs(prefix_s) do
word = str.gsub(word, "^(" .. pr .. ")s([" .. vowels .. "])", "%1ss%2")
end
-- Hiatus in prefix + i
for _, pr in ipairs(prefix_i) do
word = str.gsub(word, "^(" .. pr .. ")i(.)", "%1ï%2")
end
-- Both prefix + r/s or i/u
for _, pr in ipairs(prefix) do
word = str.gsub(word, "^(" .. pr .. ")([rs])([" .. vowels .. "])", "%1%2%2%3")
word = str.gsub(word, "^(" .. pr .. ")i(.)", "%1ï%2")
word = str.gsub(word, "^(" .. pr .. ")u(.)", "%1ü%2")
end
-- Voiced s in prefix roots -fons-, -dins-, -trans-
word = str.gsub(word, "^enfons([" .. vowels .. "])", "enfonz%1")
word = str.gsub(word, "^endins([aàeèéiíoòóuú])", "endinz%1")
word = str.gsub(word, "tr([aà])ns([" .. vowels .. "bdghlmv])", "tr%1nz%2")
-- in + ex > ineks/inegz
word = str.gsub(word, "^inex", "inhex")
return word
end
local function restoreDiaereses(word)
-- Some structural forms do not have diaeresis per diacritic savings, let's restore it to identify hiatus
word = str.gsub(word, "([iu])um(s?)$", "%1üm%2") -- Latinisms (-ius is ambiguous but rare)
word = str.gsub(word, "([aeiou])isme(s?)$", "%1ísme%2") -- suffix -isme
word = str.gsub(word, "([aeiou])ist([ae]s?)$", "%1íst%2") -- suffix -ista
word = str.gsub(word, "([aeou])ir$", "%1ír") -- verbs -ir
word = str.gsub(word, "([aeou])int$", "%1ínt") -- present participle
word = str.gsub(word, "([aeo])ir([éà])$", "%1ïr%2") -- future
word = str.gsub(word, "([^gq]u)ir([éà])$", "%1ïr%2")
word = str.gsub(word, "([aeo])iràs$", "%1ïràs")
word = str.gsub(word, "([^gq]u)iràs$", "%1ïràs")
word = str.gsub(word, "([aeo])ir(e[mu])$", "%1ïr%2")
word = str.gsub(word, "([^gq]u)ir(e[mu])$", "%1ïr%2")
word = str.gsub(word, "([aeo])iran$", "%1ïran")
word = str.gsub(word, "([^gq]u)iran$", "%1ïran")
word = str.gsub(word, "([aeo])iria$", "%1ïria") -- conditional
word = str.gsub(word, "([^gq]u)iria$", "%1ïria")
word = str.gsub(word, "([aeo])ir(ie[sn])$", "%1ïr%2")
word = str.gsub(word, "([^gq]u)ir(ie[sn])$", "%1ïr%2")
return word
end
local function fixY(word)
-- hint for Balearic iodització
-- TODO: move to parseRespelling
word = str.gsub(word, "yll", "L")
-- hint for voiced palatal nasal
word = str.gsub(word, "ny", "ñ")
-- y > vowel /i/ else consonant /j/
word = str.gsub(word, "y([^" .. vowels .. "])", "i%1") -- vowel if not next to another vowel
word = str.gsub(word, "([^" .. vowels .. "·%-%.])y", "%1i") -- excluding also syllables separators
return word
end
local function wordRespellings(word, lect)
word = str.gsub(word, "%-([rs]?)", "-%1%1")
word = str.gsub(word, "s%-c([eé])", "-c%1") -- dos-cents... never geminated
word = str.gsub(word, "rç$", "rrs") -- silent r only in plurals -rs
word = fixPrefixes(word) -- internal pause after a prefix
word = restoreDiaereses(word) -- no diaeresis saving
word = fixY(word) -- ny > ñ else y > i vowel or consonant
word = str.gsub(word, "^sc?h([" .. vowels .."])", "xx%1") -- hint xx (scheelita, shigel·la)
word = str.gsub(word, "^s([^" .. vowels .."w])", "es%1") -- epentetic vowel (spin) GEIC 3.3.3.1
word = str.gsub(word, "ch([" .. vowels .."])", "tx%1")
word = str.gsub(word, "([^" .. vowels .. "h])h", "%1") -- anhel, adherir...
-- initial consonant clusters GEIC 2.3.2, GNV 1.3.2.7.1.f
word = str.gsub(word, "^[mp]n", "n")
word = str.gsub(word, "^bd", "d")
if lect ~= "cen" then -- formal doble consonant only in Central (GDLC)
word = str.gsub(word, "^p([st])", "%1") -- psicòleg, ptolemaic
word = str.gsub(word, "^gn", "n") -- gnom
end
return word
end
local function splitVowels(vowels)
local syllables = {{onset = "", vowel = str.sub(vowels, 1, 1), coda = ""}}
vowels = str.sub(vowels, 2)
while vowels ~= "" do
local syll = {onset = "", vowel = "", coda = ""}
syll.onset, syll.vowel, vowels = str.match(vowels, "^([iu]?)(.)(.-)$")
table.insert(syllables, syll)
end
local count = #syllables
if count >= 2 and (syllables[count].vowel == "i" or syllables[count].vowel == "u") then
syllables[count - 1].coda = syllables[count].vowel
syllables[count] = nil
end
return syllables
end
-- Split the word into syllables
local function splitSyllables(remainder, lect)
local valid_onsets = listToSet({
"b", "bl", "br",
"c", "cl", "cr", "ç",
"d", "dr",
"f", "fl", "fr",
"g", "gl", "gr", "gu", "gü",
"h", "hh", -- hint for aspirated h
"i",
"j",
"k", "kl", "kr",
"l", "ll", "L", -- hint for iodització
"m",
"n", "ny", "ñ",
"p", "pl", "pr",
"qu", "qü",
"r", "rr",
"s", "ss",
"t", "tg", "tj", "tr", "tx", "tz",
"u",
"v", "vl",
"w",
"x",
"z",
})
local syllables = {}
while remainder ~= "" do
local consonants, vowels
consonants, remainder = str.match(remainder, "^([^aàāeèéêëēiíïoòóôōuúü]*)(.-)$")
vowels, remainder = str.match(remainder, "^([aàāeèéêëēiíïoòóôōuúü]*)(.-)$")
if vowels == "" then
syllables[#syllables].coda = syllables[#syllables].coda .. consonants
else
local onset = consonants
local first_vowel = str.sub(vowels, 1, 1)
if (str.find(onset, "[gq]$") and (first_vowel == "ü" or (first_vowel == "u" and vowels ~= "u")))
or ((onset == "" or onset == "h") and #syllables == 0 and first_vowel == "i" and vowels ~= "i" )
then
onset = onset .. str.sub(vowels, 1, 1)
vowels = str.sub(vowels, 2)
end
local vsyllables = splitVowels(vowels)
vsyllables[1].onset = onset .. vsyllables[1].onset
for _, s in ipairs(vsyllables) do
table.insert(syllables, s)
end
end
end
-- Shift over consonants from the onset to the preceding coda,
-- until the syllable onset is valid
for i = 2, #syllables do
local current = syllables[i]
local previous = syllables[i-1]
while not (current.onset == "" or valid_onsets[current.onset]) do
local letter = str.sub(current.onset, 1, 1)
current.onset = str.sub(current.onset, 2)
if not str.find(letter, "[·%-%.]") then --syllables separators
previous.coda = previous.coda .. letter
else
break
end
end
end
-- Detect stress
for i, syll in ipairs(syllables) do
if str.find(syll.vowel, "^[àèéêëíòóôú]$") then
syllables.stress = i -- primary stress: the last one stressed
syll.stressed = true
end
end
if not syllables.stress then
local count = #syllables
if count == 1 then
syllables.stress = 1
else
local final = syllables[count]
if final.coda == "" or final.coda == "s" or (final.coda == "n" and (final.vowel == "e" or final.vowel == "i" or final.vowel == "ï")) then
syllables.stress = count - 1
else
syllables.stress = count
end
end
syllables[syllables.stress].stressed = true
end
-- Change stress in infinitive + -se, in Balearic
-- informal in Mallorca and Menorca, not in Eivissa
if lect == "bal2"
and str.sub(pagename, -4) == 'r-se'
then
--and i == syllables.stress -- -ar-se, also entémer-se...
syllables[syllables.stress].stressed = nil
syllables[#syllables].stressed = true
syllables[#syllables].vowel = "ə"
syllables.stress = #syllables
end
-- text of syllable from components
for i, syll in ipairs(syllables) do
syllables[i].text = syll.onset .. syll.vowel .. syll.coda
end
return syllables
end
local function midVowelFixes(syllables)
local post_consonants = syllables[syllables.stress].coda
local post_vowel = ""
local post_letters = post_consonants
if syllables.stress == #syllables - 1 then
post_consonants = post_consonants .. syllables[#syllables].onset
post_vowel = syllables[#syllables].vowel
post_letters = post_consonants .. post_vowel .. syllables[#syllables].coda
end
-- most common cases, other ones are ambiguous
local stressed_vowel = syllables[syllables.stress].vowel
if stressed_vowel == "e" then
if post_vowel == "i" or post_vowel == "u" then
return "è"
elseif str.find(post_consonants, "^l") and not str.find(post_consonants, "^lls?$") and syllables.stress == #syllables then
return "è"
elseif post_consonants == "l" or post_consonants == "ls" or post_consonants == "l·l" then
return "è"
elseif post_letters == "nt" or post_letters == "nts" then
return "é"
elseif str.find(post_letters, "^r[ae]?s?$") then
return "é"
elseif str.find(post_consonants, "^r[dfjlnrstxyz]") then -- except bilabial and velar
return "è"
elseif post_letters == "sos" or post_letters == "sa" or post_letters == "ses" then -- inflection of -ès
return "ê"
elseif str.find(post_letters, "^t[ae]?s?$") then
track("ca-pron/et-final")
return "ê"
end
elseif stressed_vowel == "è" then
if syllables.stress == #syllables and (post_letters == "s" or post_letters == "") then -- -ès, -è
track("ca-pron/è-final")
return "ê"
else
return "è"
end
elseif stressed_vowel == "o" then
if post_vowel == "i" or post_vowel == "u" then
track("ca-pron/oi-ou")
return "ò"
elseif str.sub(post_letters, 1, 1) == "i" and str.sub(post_letters, 1, 2) ~= "ix" then -- diphthong oi except oix
track("ca-pron/oi-diftong")
return "ò"
elseif post_letters == "ma" or post_letters == "mes" then
track("ca-pron/oma")
return "ó"
elseif str.find(post_letters, "^r[ft]s?$") then
track("ca-pron/orC")
return "ò"
elseif str.find(post_letters, "^r[ae]?s?$") then
track("ca-pron/or-final")
return "ó"
elseif post_letters == "rme" or post_letters == "rmes" then
track("ca-pron/orme")
return "ó"
end
end
return stressed_vowel
end
local function replaceContextFree(cons)
cons = str.gsub(cons, "r", "ɾ")
cons = str.gsub(cons, "ɾɾ", "r")
cons = str.gsub(cons, "ss", "s")
cons = str.gsub(cons, "ll", "ʎ") -- pending L by lect
cons = str.gsub(cons, "ñ", "ɲ") -- hint ny > ñ
if str.find(cons, "hh") then
cons = str.gsub(cons, "hh", "h") -- hint hh > /h/
else
cons = str.gsub(cons, "h", "")
end
cons = str.gsub(cons, "[dt]j", "d͡ʒ")
cons = str.gsub(cons, "tx", "t͡ʃ")
cons = str.gsub(cons, "[dt]z", "d͡z")
cons = str.gsub(cons, "ç", "s")
cons = str.gsub(cons, "[cq]", "k")
cons = str.gsub(cons, "l", "ɫ")
cons = str.gsub(cons, "g", "ɡ")
cons = str.gsub(cons, "j", "ʒ")
cons = str.gsub(cons, "x", "ʃ")
cons = str.gsub(cons, "[iy]", "j") -- must be after j > ʒ and fixY
cons = str.gsub(cons, "[uü]", "w")
return cons
end
local function elisionContinguousVowels(syllables, lect)
-- Eastern contigous vowels losses last one in some contexts
-- GIEC 3.4.i: amb vocal final i inicial dels dos components d’un compost:
---- ə+ə ([ae]+[ae]) elisió, però ea > /eə/ amb excepcions
---- altres vocals idèntiques ii, oo, ou
---- i+e travada: anti/poli(e)sportiu, anti(e)stàtic, multi(e)stàndard
local first_stress = 0
local second_stress = 0
for i = 1, syllables.stress do
if syllables[i].stressed then
if first_stress == 0 then
first_stress = i
elseif second_stress == 0 then
second_stress = i
end
end
end
if first_stress > 0 and second_stress > 0 then -- compound or prefixed word with secondary stress
-- not the case of adverbs with -ment (but sóbreabundàntmént), avoiding possible errors
local sec_str_syl = syllables[second_stress].onset .. syllables[second_stress].vowel .. syllables[second_stress].coda
if sec_str_syl == "ment" then
return syllables
end
-- it doesn't work in àntialcoholísme, a single case with -isme to be respelled
-- elision ea only after some prefixes
-- doing it before reduction /eə/
local prefix_vowel = {"centrea", "entrea", "obrea", "sobrea", "telea", "vicea"}
local prefix_ea_match = false
for _, pr in ipairs(prefix_vowel) do
if str.find(pagename, pr) == 1 then
prefix_ea_match = true
end
end
local i = first_stress + 1
while i < second_stress - 1 do -- unstressed between two accents
local current = syllables[i]
local posterior = syllables[i + 1]
local vowel_pair = current.vowel .. current.coda .. posterior.onset .. posterior.vowel
if str.find(vowel_pair, "[ae]e")
or vowel_pair == "aa"
or (vowel_pair == "ea" and prefix_ea_match)
or (vowel_pair == "ie" and posterior.coda == "s")
or vowel_pair == "ii"
or (vowel_pair == "oe" and posterior.coda == "s")
or str.find(vowel_pair, "o[ou]")
then
syllables[i].coda = syllables[i + 1].coda -- re-syllabification
table.remove(syllables, i + 1)
syllables.stress = syllables.stress - 1
end
i = i + 1
end
end
return syllables
end
local function reductionUnstressAE(syllables, lect) -- Eastern: <ae> /ə/
-- TODO: review GIEC 3.3.1.2.b
for i = 1, #syllables do
local current = syllables[i]
local previous = syllables[i - 1] or {onset = "", vowel = "", coda = ""}
local posterior = syllables[i + 1] or {onset = "", vowel = "", coda = ""}
local pre_vowel_pair = previous.vowel .. previous.coda .. current.onset .. current.vowel
local post_vowel_pair = current.vowel .. current.coda .. posterior.onset .. posterior.vowel
local reduction = true
if current.stressed then
reduction = false
--TODO: review, i.e. anorrêa, anorêes, arrêen
elseif pre_vowel_pair == "əe" and not previous.stressed then
--elseif pre_vowel_pair == "əe" then
reduction = false
elseif str.find(post_vowel_pair, "e[aòôɔ]") then
reduction = false
elseif i < syllables.stress -1 and post_vowel_pair == "ee" then
posterior.vowel = "ə" -- avoid əe in next loop
elseif i > syllables.stress and post_vowel_pair == "ee" then
reduction = false
--elseif pre_vowel_pair == "ɔe" then -- ? bòer, côedició > /ɔə/
-- reduction = false
elseif lect == "bal"
and i == #syllables
and previous.stressed
and current.vowel == "e"
and str.find(current.coda, "^k")
then
reduction = false -- no reduction final poststressed -ec in Majorcan, i.e. ànec
end
if reduction then
current.vowel = str.gsub(current.vowel, "[ae]", "ə")
end
end
return syllables
end
local function reductionUnstressO(syllables, lect)
-- Central, Menorca, Eivissa: o àtona > /u/
-- Balear /u/ en una llista de 9 mots (UIB) -- DONE by respelling
-- Alguns parlars mallorquins i occidentals en alguns contextos (GIEC 3.3.4.1.b):
---- seguida de síl·laba tònica i (conill, cosí, coixí, tossir)
---- habitualment precedit de palatoalveolar (Joan, Josep, joventut)
-- Valencià (GNV 1.2.2.3.2.e):
---- estàndard: Josep, Joan
---- acceptable en àmbit local: davant i tònica o C labial (collir, tossir, cobert, obert)
for i = 1, #syllables do
local current = syllables[i]
local posterior = syllables[i + 1] or {onset = "", vowel = "", coda = ""}
if current.vowel == "o" and not current.stressed then
if lect == "bal" then
-- do nothing, vowel harmony don't use to happen in Palma
-- it will be as "bal2" for Menorca and Eivissa
elseif lects_group[lect] == "ori" and current.coda ~= "w" then
current.vowel = "u"
elseif lect == "val2" then
-- do nothing, not systematic, neither Northwestern
-- it seems from Old Catalan in first stage of unstressed reduction
-- DONE by respelling according with the DCVB
end
end
end
return syllables
end
-- Do context-sensitive phonological changes
local function postprocessGeneral(syllables, lect)
local lect_12 = str.sub(lect, 1, 3)
for i = 1, #syllables do
local current = syllables[i]
local previous = syllables[i - 1] or {onset = "", vowel = "", coda = ""}
-- Final -ig, stressed or in compound not adverb: mig, roig, puig, migdiada
if (str.find(current.vowel, "[^i]") and str.find(current.coda, "^jɡs?$")
or current.vowel == "i" and str.find(current.coda, "^ɡs?$"))
and current.stressed and str.sub(pagename, -4) ~= "ment"
then
if lect == "cen2" then
-- iodització final central V+igs: raigs > rajts, fet més endavant
current.coda = str.gsub(current.coda, "(j?)ɡ(s?)", "%1t͡ʃ%2")
else
current.coda = str.gsub(current.coda, "j?ɡ(s?)", "t͡ʃ%1")
end
end
-- Coda consonant losses
if i < #syllables then
current.coda = str.gsub(current.coda, "([ɫn])[td]$", "%1")
current.coda = str.gsub(current.coda, "m[pb]$", "m")
current.coda = str.gsub(current.coda, "s[td]$", "s") -- istme, postgrau
else
current.coda = str.gsub(current.coda, "([ɫn])[td]s", "%1s") -- malalts, accents
current.coda = str.gsub(current.coda, "m[pb]s", "ms") -- camps, tombs
current.coda = str.gsub(current.coda, "mpt(s?)", "mt%1") -- exempt, irredempt
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" or lect == "bal2" then
current.coda = str.gsub(current.coda, "([ɫn])[td]", "%1") -- malalt, cald, -ment, fecund
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" then
current.coda = str.gsub(current.coda, "m[pb]", "m") -- camp, tomb
end
end
end
-- Betacism v > /b/ in onsets, not in codas (ovni, hafni)
-- doing it before assimilations and spirants
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" then
current.onset = str.gsub(current.onset, "v", "b")
end
-- Reduction geminated l·l > /l/
-- doing it before gemination tl > /ll/ and /ʎʎ/ > /ll/
if (lect == "cen2" or lect == "noc2" or lect == "val2")
and current.onset == "ɫ"
then
previous.coda = str.gsub(previous.coda, "ɫ", "")
end
---- Consonant assimilations
-- t + lateral/nasal/plosive assimilation, not tm
if str.find(previous.coda, "t$") and str.find(current.onset, "^ɫ") then
-- tl > /ll/ except cultisms dl /dl/, nor atl /adl/ in Valencian
-- doing it before devoicing d /t/
if lect_12 == "val" then
if not (previous.onset == "" and previous.vowel == "a") then
-- not atles, triatló... but batle, guatla...
previous.coda = lect == "val" and "ɫ" or "" -- /l/ in val2
end
else
previous.coda = "ɫ"
end
elseif str.find(previous.coda, "t$") and str.find(current.onset, "^ʎ") then
if lect_12 == "cen" or lect_12 == "noc" then
-- Central and Northwestern tʎ > /ʎʎ/
previous.coda = str.gsub(previous.coda, "t$", "ʎ")
else
-- Balearic and Valencian: tʎ > /ll/ (inherited) or /ʎ/ (borrowed)
local previous_syl = previous.onset .. previous.vowel .. previous.coda
if str.find(previous_syl, "[bpw]at$") -- batlle, espatlla, guatlla
or str.find(pagename, "[mv]etll") -- ametlla, -vetlla
or (str.find(previous_syl, "tit$") -- titlla
and not str.find(pagename, "estitll")) -- exc. estitll-
or str.find(previous_syl, "m[oɔ]t$") -- motlle
or (str.find(previous_syl, "r[oɔu]t$") -- -rotlle
and lect_12 == "bal")
or (str.find(previous_syl, "ut$") -- butlla, rutlla
and not str.find(pagename, "butll[eo][tf]")) -- exc. butlleta, butlletí, -butllofa
then
previous.coda = "ɫ"
current.onset = "ɫ"
else
previous.coda = ""
end
end
elseif str.find(previous.coda, "t$") and str.find(current.onset, "^n") then
-- tn > /nn/ except cultisms
if not str.find(previous.vowel, "[eɛêë]") then -- except ètnic, etno-...
previous.coda = str.gsub(previous.coda, "t$", "n") -- vietnamita, pitnegre to be fixed
end
elseif previous.coda:find("[dt]$") then -- GIEC 4.4.2.2 plosive assimilations
if current.onset == "k" and lect_12 == "bal" then
-- d/t + k > /kk/ DCVB, not in GDLV, DNV
previous.coda = str.gsub(previous.coda, "[dt]$", "k") -- batcoll, sud-coreà
elseif current.onset == "b"
and lect_12 ~= "val" and previous.stressed == nil
then
-- t + b > /bb/ DCVB & GDLV, not in DNV, not ràtbúf
previous.coda = str.gsub(previous.coda, "t$", "b") -- futbol
elseif current.onset == "v" and lect_12 == "bal" then
-- d/t + v > /bv/ DCVB, not in GDLV, DNV
previous.coda = str.gsub(previous.coda, "[dt]$", "b") -- adverbi, gatvaire
elseif current.onset == "p" and lect_12 == "bal" then
-- t + p > /pp/ DCVB, not in GDLV, DNV
previous.coda = str.gsub(previous.coda, "t$", "p") -- totpoderós
end
end
-- nasal assimilations
if str.find(current.onset, "^[mbp]") then -- nasal + labial > labialized
if str.find(previous.coda, "n$") then
previous.coda = str.gsub(previous.coda, "n$", "m")
elseif str.find(previous.coda, "[bp]$") -- labial + nasal > labialized
and str.find(current.onset, "^m")
and (lect_12 == "cen" or lect_12 == "bal" or lect_12 == "noc")
then
previous.coda = str.gsub(previous.coda, "[bp]$", "m")
end
elseif str.find(current.onset, "^[fv]") then
previous.coda = str.gsub(previous.coda, "[mn]$", "ɱ")
elseif str.find(current.onset, "^[ɡk]") then -- n + velar > velarized
previous.coda = str.gsub(previous.coda, "n$", "ŋ")
elseif str.find(previous.coda, "[ɡk]$") -- velar + n > velarized
and str.find(current.onset, "^n")
and (lect_12 == "cen" or lect_12 == "bal" or lect_12 == "noc")
then
previous.coda = str.gsub(previous.coda, "[ɡk]$", "ŋ")
elseif str.find(current.onset, "^[ʒʎʃɲ]") -- n + palatal > palatalized
or str.find(current.onset, "^t͡ʃ")
or str.find(current.onset, "^d͡ʒ")
then
previous.coda = str.gsub(previous.coda, "n$", "ɲ")
end
if i < #syllables then
current.coda = str.gsub(current.coda, "n[kɡ]", "ŋ") -- sangglaçar, ping-pong, francmaçó...
else
current.coda = str.gsub(current.coda, "n[kɡ]", "ŋk")
end
if i == 1 then
current.onset = str.gsub(current.onset, "ɡn", "ŋn") -- gnom
end
current.coda = str.gsub(current.coda, "[mn]([fv])", "ɱ%1")
current.coda = str.gsub(current.coda, "n([ʃʒ])", "ɲ%1")
current.coda = str.gsub(current.coda, "n(t͡ʃ)", "ɲ%1")
current.coda = str.gsub(current.coda, "n(d͡ʒ)", "ɲ%1")
-- l + palatal > palatalized
-- doing it before fortition of palatal fricatives
if str.find(current.onset, "^[ʎʃɲ]")
or str.find(current.onset, "^t͡ʃ")
or str.find(current.onset, "^d͡ʒ")
then
previous.coda = str.gsub(previous.coda, "ɫ$", "ʎ")
elseif current.onset == "ʒ" and lect_12 == "cen" then
if not (i == 2 and previous.text == "maɫ") -- except prefix mal-
-- endings -àlgia/es, -àlgica/es, -àlgic/s are ambiguous, to be fixed by respelling
and not (i > 2 and i == #syllables - 1 and str.find(previous.text, "aɫ$") and current.text == "ʒi" and str.find(syllables[i + 1].text, "^k?[ae]")) -- except cultisms -àlgia/es, -àlgica/es
and not (i > 2 and i == #syllables and str.find(previous.text, "aɫ$") and str.find(current.text, "ʒiks?")) -- except cultisms -àlgic/s
then
previous.coda = str.gsub(previous.coda, "ɫ$", "ʎ")
end
end
if (lect_12 == "bal" or lect_12 == "val")
and previous.coda == "ʎ" and current.onset == "ʎ"
then
-- no palatal gemination in Balearic and Valencian: Bell-lloc
previous.coda = ""
end
current.coda = str.gsub(current.coda, "ɫʃ", "ʎʃ")
current.coda = str.gsub(current.coda, "ɫ(t͡ʃ)", "ʎ%1")
if lect_12 == "cen" then
current.coda = str.gsub(current.coda, "ɫʒ", "ʎʒ")
end
-- Double sound of letter x > ks/gz (on cultisms, ambiguous in onsets)
-- doing it before fortition ʃ > t͡ʃ
if current.vowel ~= "i" then
current.coda = str.gsub(current.coda, "^ʃs?$", "ks")
end
if previous.coda == "kz" then
previous.coda = "ɡz" -- voicing the group
end
if (previous.onset == "" and (previous.vowel == "e" or previous.vowel == "ɛ")
or str.find(pagename, "hex"))
and ((previous.coda == "" and current.onset == "ʃ") or (previous.coda == "ks" and current.onset == ""))
then
-- ex + (h) vowel > egz
previous.coda = "ɡ"
current.onset = "z"
end
-- Fortition of palatal fricatives
if previous.coda == "ɡ" and current.onset == "ʒ" then
current.onset = "d͡ʒ"
previous.coda = ""
end
if lects_group[lect] == "occ" then
if current.onset == "ʃ"
and previous.coda ~= "j" and (previous.vowel .. previous.coda) ~= "i"
then
-- not hint xx > -ʃʃ, nor <ix>: xiuxiuejar, para-xocs
current.onset = "t͡ʃ"
end
if lect_12 == "noc" then
if current.onset == "ʒ" and (i == 1 or previous.coda ~= '') then
current.onset = "d͡ʒ"
end
elseif lect_12 == "val" then
current.onset = str.gsub(current.onset, "^ʒ", "d͡ʒ")
current.coda = str.gsub(current.coda, "^ʒ", "d͡ʒ")
if previous.vowel == "i" and previous.coda == "" and current.onset == "d͡z" then
current.onset = "z"
end
end
elseif lect == "bal" then -- fortition in -ejar/-ajar
-- GIEC 4.2.3.1: tendència a l’africació del sufix ‑ej(ar)
-- (passejar, festejar, glopejar, plantejar) i en algun altre mot (roja).
-- UIB: s'admet fricativa o africada:
-- assajar, festejar, manejar, rajar, passejar
-- llegir, regir, corregir
-- assajos, batejos, Magí, roja/os, rajola, boja/os, truja i algun altre.
-- FIXME: move to bal2
-- TODO: try only a list of verbs and its forms, others by respelling
-- TODO: currently it does not include all verb forms
if i > 1
and current.vowel == "a" and i == syllables.stress
and str.find(previous.vowel, "[ae]") and previous.coda == ""
then
current.onset = str.gsub(current.onset, "^ʒ", "d͡ʒ")
end
end
current.onset = str.gsub(current.onset, "ʃʃ", "ʃ") -- remove hint
current.coda = str.gsub(current.coda, "ʃʃ", "ʃ")
-- Assimilation s + sibilant
-- GIEC 4.4.3.4:
---- majoria de parlars, elisió: descentrar /s/, desxifrar /ʃ/, desgelar /ʒ/
---- mallorquí i menorquí, africació i geminació: /tts/, /ttʃ/, /ddʒ/
-- UIB-totdret, recomanable allargament, no africació: /ss/, /ʃʃ/, /ʒʒ/
-- done after reduction s-c and exs, and fortition t͡ʃ d͡ʒ
-- done before voicing s > z
if previous.coda:find("s$") then
if current.onset == "s" then
if previous.coda == "s" then
-- elision /ss/ intervocalic except in Balearic
if lect_12 ~= "bal" then
previous.coda = ""
end
else
previous.coda = previous.coda:gsub("s$", "")
end
elseif current.onset == "ʃ" or current.onset == "ʒ" then
if lect_12 == "cen" then
previous.coda = previous.coda:gsub("s$", "")
elseif lect_12 == "bal" then
previous.coda = str.gsub(previous.coda, "s$", current.onset)
end
end
end
-- Voicing or devoicing
local voiced = listToSet({"b", "d", "ɡ", "m", "n", "ɲ", "ɫ", "ʎ", "r", "ɾ", "v", "z", "ʒ"})
local voiceless = listToSet({"p", "t", "k", "f", "s", "ʃ", ""})
local devoicing = {["b"]="p", ["d"]="t", ["ɡ"]="k"}
local voicing = {["p"]="b", ["t"]="d", ["k"]="ɡ", ["f"]="v", ["s"]="z", ["ʃ"]="ʒ"}
local current_initial = str.sub(current.onset, 1, 1)
local previous_final = str.sub(previous.coda, -1)
if voiced[current_initial] and voicing[previous_final] then
previous.coda = str.gsub(previous.coda, previous_final .. "$", voicing[previous_final])
previous.coda = str.gsub(previous.coda, "t͡ʒ", "d͡ʒ")
elseif current_initial == "" and previous_final == "ʃ" then
-- voicing sibilants before a vowel GIEC 4.4.1.2: baix-alemany, Puig-agut
local onset_new = str.gsub(previous.coda, previous_final .. "$", voicing[previous_final])
onset_new = str.gsub(onset_new, "t͡ʒ", "d͡ʒ")
current.onset = str.gsub(onset_new, "j", "")
previous.coda = str.gsub(onset_new, "[^j]", "")
elseif voiceless[current_initial] and devoicing[previous_final] then
previous.coda = str.gsub(previous.coda, previous_final .. "$", devoicing[previous_final])
end
previous.coda = str.gsub(previous.coda, "[bd]s", {["bs"] = "ps", ["ds"] = "ts"})
-- Final devoicing
if i == #syllables then
current.coda = str.gsub(current.coda, "d͡ʒ", "t͡ʃ")
current.coda = str.gsub(current.coda, "d͡z", "t͡s")
current.coda = str.gsub(current.coda, "b", "p")
current.coda = str.gsub(current.coda, "d", "t")
current.coda = str.gsub(current.coda, "ɡ", "k")
current.coda = str.gsub(current.coda, "ʒ", "ʃ")
current.coda = str.gsub(current.coda, "v", "f")
current.coda = str.gsub(current.coda, "z", "s")
end
-- affricate + affricate/fricative (migjorn, puigcerdanenc): GIEC 4.4.3.4.b
if lect ~= "val"
and ((previous.coda == "d͡ʒ" and str.find(current.onset, "ʒ"))
or (previous.coda == "t͡ʃ" and current.onset == "s"))
then
current.onset = previous.coda
previous.coda = ""
end
-- Allophones of r
-- in replaceContextFree(), we converted single r to ɾ and double rr to r
-- doing it before spirant lenitions r+bdg
if i == 1 then
current.onset = str.gsub(current.onset, "^ɾ", "r")
elseif str.find(previous.coda, "[ɫnz]$") then
current.onset = str.gsub(current.onset, "^ɾ", "r")
end
-- GIEC 4.2.6.c: bategant mallorquí, eivissenc, nord-occcidental meridional, valencià
if i < #syllables -- final coda done afterwards depending of hint
and (lect_12 == "cen" or lect == "bal2" or lect == "noc")
then
current.coda = str.gsub(current.coda, "ɾ", "r")
end
-- GNV 1.3.2.1.1.c: reduction of first consonant on ads-, obs-, subs- + C
-- previously devoiced d /t/, b /p/, and reduced sc /ss/ > /s/ (obscé)
if lect == "val2" then
if previous.vowel == "a" then
previous.coda = str.gsub(previous.coda, "ts$", "s")
elseif str.find(previous.vowel, "[ou]") then
previous.coda = str.gsub(previous.coda, "ps$", "s")
end
end
-- Gemination bl, gl: poststressed in Central, any in Balearic
-- doing it before spirant lenition
if str.find(current.onset, "^[bɡ]ɫ")
and previous.coda == ""
and ((previous.stressed and lect_12 == "cen") or lect_12 == "bal")
then
previous.coda = str.sub(current.onset, 1, 1)
end
-- remove respelling bbl/ggl in Western
if lects_group[lect] == "occ" then
local gemin = previous.coda .. current.onset
if gemin == "bbɫ" or gemin == "ɡɡɫ" then
previous.coda = ""
end
end
-- No gemination dd
-- doing it before spirant lenition
if lect_12 == "val" and current.onset == "d" and previous.coda == "d" then
previous.coda = ""
end
-- Spirant lenition
-- doing it before voicing assimilation s > z
-- TODO: review with GIEC 4.4.3.3:
-- en obertura
-- després de vocal, semivocal, ròtica, lateral (exc. ð)
-- fricativa labiodental
-- fricativa alveolar i palatoalveolar
-- africada alveolar i palatoalveolar
-- ...
if i > 1
and str.find(current.onset, "^[bdɡ]")
and not str.find(current.onset, "^d͡")
and not (str.find(current.onset, "^b") and (lect_12 == "bal" or lect == "val")) -- no β in v/b distintion
and not (str.find(previous.coda, "[ɫʎ]$") and str.find(current.onset, "^d")) -- except lateral + d
and not str.find(previous.coda, "[pbtdkɡmɱnɲŋ]$")
and not (str.find(previous.coda, "[rz]$") and lect_12 == "cen")
--and (previous.stressed == nil or current.stressed == nil) -- ?
then
current.onset = str.gsub(current.onset, "[bdɡ]", {["b"] = "β", ["d"] = "ð", ["ɡ"] = "ɣ"})
end
-- iodització ll balear
-- TODO: move hint to "bal2" as informal
if lect_12 == "bal" then
current.onset = str.gsub(current.onset, "L", "j")
current.coda = str.gsub(current.coda, "L", "j")
else
current.onset = str.gsub(current.onset, "L", "ʎ")
current.coda = str.gsub(current.coda, "L", "ʎ")
end
-- iodització final central V+igs: raigs > rajts
-- doing it before removing j and after final devoicing
if lect == "cen2" and i == #syllables then
current.coda = str.gsub(current.coda, "jt͡ʃs$", "jt͡s")
end
-- Remove j before palatal obstruents
if lects_group[lect] == "ori" then
current.coda = str.gsub(current.coda, "j([ʃʒ])", "%1")
current.coda = str.gsub(current.coda, "j(t͡ʃ)", "%1")
current.coda = str.gsub(current.coda, "j(d͡ʒ)", "%1")
if str.find(current.onset, "^[ʃʒ]")
or str.find(current.onset, "^t͡ʃ")
or str.find(current.onset, "^d͡ʒ")
then
previous.coda = str.gsub(previous.coda, "j$", "")
end
elseif lect == "val2" then
if str.find(current.onset, "^ʃ") then
previous.coda = str.gsub(previous.coda, "j$", "")
end
end
-- Ascending diphthong /uj/ > /wi/
-- doing it before reduction o
if lect == "val2"
and current.vowel == "u" and str.find(current.coda, "^j")
and i < #syllables and syllables[i + 1].onset ~= "ʃ"
then
current.onset = current.onset .. "w"
current.vowel = "i"
current.coda = str.gsub(current.coda, "^j", "")
end
-- Vowel assimilation of final a
-- TODO: review, standard v. acceptable
if lect == "val2"
and i == #syllables
and current.vowel == "a" and current.coda == ""
and (previous.vowel == "ɛ" or previous.vowel == "ɔ")
then
current.vowel = previous.vowel
end
-- resyllabling some prefix+V
if i == 2 and current.onset == "" then
if previous.coda == "p" then -- sub-
current.onset = "p"
previous.coda = ""
if lect == "val2" then
current.onset = "β"
end
elseif str.find(previous.coda, "r?t$") then -- nord-, sud-
current.onset = "t"
previous.coda = str.gsub(previous.coda, "t$", "")
end
end
end -- by syllables
-- Elision and reduction of unstressed vowels a,e,o
if lects_group[lect] == "ori" then
syllables = elisionContinguousVowels(syllables, lect)
syllables = reductionUnstressAE(syllables, lect)
syllables = reductionUnstressO(syllables, lect)
end
-- Final consonant losses
local final_coda = syllables[#syllables].coda
final_coda = str.gsub(final_coda, "j(t͡ʃ)s?$", "%1")
final_coda = str.gsub(final_coda, "([ʃs])s", "%1") -- homophone plurals -xs, -çs
if lect_12 == "cen" or lect_12 == "noc" or lect == "val2" or (lect == "val" and syllables.stress < #syllables) then
final_coda = str.gsub(final_coda, "ŋk(s?)$", "ŋ%1")
end
if lect == "val2" then
final_coda = str.gsub(final_coda, "ʎs$", "ʎʃ")
end
-- final r, GIEC 4.3.4
-- elision in verbs -ar, -er, -ir; adj or nouns -er, -or stressed
-- coverts most cases, but plenty of exceptions to be fixed
if #syllables > 1 and lect ~= "val" then
if syllables.stress == #syllables then
final_coda = str.gsub(final_coda, "^ɾ(s?)$", "%1") -- no loss with hint rr
elseif str.find(pagename, "àixer$") or str.find(pagename, "ànyer$")
or str.find(pagename, "[éè]ixer$") or str.find(pagename, "[éè]mer$")
or str.find(pagename, "[éè]ncer$") or str.find(pagename, "[éè]nyer$")
or str.find(pagename, "òrcer$") or str.find(pagename, "órrer$")
then
final_coda = str.gsub(final_coda, "^ɾ$", "") -- most unstressed -er verbs
end
end
final_coda = str.gsub(final_coda, "([rɾ])+?", "ɾ") -- remove hint
if lect_12 == "cen" or lect_12 == "noc" or lect_12 == "bal" then
final_coda = str.gsub(final_coda, "([rɾ])ts$", "%1s")
end
-- allophones of r in coda: GIEC 4.2.6.c /r/ in Central, Menorca and most Northwestern
if lect_12 == "cen" or lect == "bal2" or lect == "noc" then
final_coda = str.gsub(final_coda, "ɾ", "r")
else
final_coda = str.gsub(final_coda, "r", "ɾ")
end
syllables[#syllables].coda = final_coda
return syllables
end
local function applySubstitutionSpec(respelling, term)
local from, to = str.match(respelling, "^(.*):(.*)$")
local nsub
if from == "<stress>" then
local mid_vowel_hint = to
local syllables = splitSyllables(term)
local stressed_vowel = syllables[syllables.stress].vowel
if (str.find(mid_vowel_hint, "[èéêë]") and str.find(stressed_vowel, "[eèé]"))
or (str.find(mid_vowel_hint, "[òóô]") and str.find(stressed_vowel, "[oòó]"))
then
syllables[syllables.stress].vowel = mid_vowel_hint
else
ret_error = "no s'ha pogut substituir '" .. mid_vowel_hint
.. "' en la vocal '" .. syllables[syllables.stress].vowel .. "'."
end
local term_syl = {}
for i, syl in ipairs(syllables) do
term_syl[i] = syl.onset .. syl.vowel .. syl.coda
end
term = table.concat(term_syl)
if str.find(pagename, "l·l") then
term = str.gsub(term, "ll", "l·l") -- restore geminated lost in splitSyllables()
end
if str.find(pagename, "-") then
local first = str.match(pagename, "(.+)-")
term = str.gsub(term, first, first .. "-")
end
elseif from == "" then
local plain_to = plainText(to)
if to:sub(-1) == "-" then
-- TODO: add secondary accent
if str.find(term, "-") then
from = str.sub(plain_to, 1, -2)
to = str.sub(to, 1, -2)
else
from = plainText(str.sub(to, 1, -2))
end
term, nsub = str.gsub(term, from, to, 1)
elseif to ~= plain_to then
term, nsub = str.gsub(term, plain_to, to, 1)
else
term = to
end
else
term, nsub = str.gsub(term, from, to, 1)
end
if nsub == 0 then
ret_error = "no s'ha trobat '" .. from .. "' a '" .. term .. "'"
end
return term
end
local function canonRespelling(text)
text = mw.text.trim(text)
text = str.gsub(text, "%s+", " ")
local lower_first = str.lower(str.sub(text, 1, 1))
if lower_first == str.lower(str.sub(pagename, 1, 1)) then
text = lower_first .. str.sub(text, 2)
end
return text
end
local function canonPagename(text)
text = str.lower(text)
text = str.gsub(text, "[¡¿!?']", "")
text = str.gsub(text, ", ", "")
text = str.gsub(text, "^%-", "")
text = str.gsub(text, "%-$", "")
return text
end
local function parseRespelling(respelling, term)
term = canonRespelling(term)
if respelling == "-" then
return {omitted = true}
elseif respelling:match("^/(.+)/$") then
return {raw = respelling}
elseif respelling == "+" then
return {term = term}
elseif not str.find(respelling, ":") then
local mid_vowel_hint = str.match(respelling, "^[éèêëóòô]$")
if mid_vowel_hint then
respelling = "<stress>:" .. mid_vowel_hint
elseif respelling == "ks" then
respelling = "x:ks"
elseif respelling == "xx" then -- xeix <x> /ʃ/ not /t͡ʃ/
term = str.gsub(term, "x(.)", "xx%1") -- initial or interior
term = str.gsub(term, "ixx", "ix") -- not needed
term = str.gsub(term, "([^-])xx", "%1-xx") -- force to onset
return {term = term}
elseif respelling == "rr" then
respelling = "r(s?)$:rr%1"
elseif respelling == "-r" then
respelling = "r(s?)$:%1"
elseif respelling:sub(-1) == "-" then
respelling = ":" .. respelling
elseif str.find(respelling, "[àāéèêëēíóòôōú]")
and str.len(respelling) < str.len(term) / 2
then
respelling = ":" .. respelling
else
return {term = canonRespelling(respelling)}
end
end
if str.find(respelling, ":") then
term = applySubstitutionSpec(respelling, term)
else
term = canonRespelling(respelling)
end
return {term = term}
end
local function preprocessWord(syllables, lect)
-- Fix mid vowel
if syllables.stress then
local stressed_vowel = syllables[syllables.stress].vowel
if str.find(stressed_vowel, "[eèo]") then
syllables[syllables.stress].vowel = midVowelFixes(syllables)
if str.find(syllables[syllables.stress].vowel, "[eo]") then
ret_error = "vocal tònica '" .. stressed_vowel .. "' ambigua."
end
end
if ret_error then
return {}
end
end
local syllables_IPA = {stress = syllables.stress}
for key, val in ipairs(syllables) do
syllables_IPA[key] = {onset = val.onset, vowel = val.vowel, coda = val.coda, stressed = val.stressed}
end
-- Replace letters with IPA equivalents
for i, syll in ipairs(syllables_IPA) do
-- Voicing of s
if syll.onset == "s" and i > 1 and (syllables[i-1].coda == "" or syllables[i-1].coda == "i" or syllables[i-1].coda == "u") then
syll.onset = "z"
end
if str.find(syll.vowel, "^[eèéêëēií]$") then
syll.onset = str.gsub(syll.onset, "tg$", "d͡ʒ")
syll.onset = str.gsub(syll.onset, "[cg]$", {["c"] = "s", ["g"] = "ʒ"})
syll.onset = str.gsub(syll.onset, "[qg]u$", {["qu"] = "k", ["gu"] = "ɡ"})
end
syll.onset = replaceContextFree(syll.onset)
syll.coda = replaceContextFree(syll.coda)
local IPA_vowels = {
["a"] = "a", ["à"] = "a",
["e"] = "e", ["è"] = "ɛ", ["é"] = "e",
["i"] = "i", ["í"] = "i", ["ï"] = "i",
["o"] = "o", ["ò"] = "ɔ", ["ó"] = "o",
["u"] = "u", ["ú"] = "u", ["ü"] = "u",
}
local IPA_vowels_eastern = {
["ê"] = "ɛ", ["ë"] = "ɛ", ["ô"] = "ɔ",
}
local IPA_vowels_mallorcan = {
["ê"] = "ə", ["ë"] = "ɛ", ["ô"] = "ɔ",
}
local IPA_vowels_western = {
["ê"] = "e", ["ë"] = "e", ["ô"] = "o",
}
if lect == "bal" then
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels_mallorcan)
elseif lects_group[lect] == "ori" then
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels_eastern)
elseif lects_group[lect] == "occ" then
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels_western)
end
syll.vowel = str.gsub(syll.vowel, ".", IPA_vowels)
syll.text = syll.onset .. syll.vowel .. syll.coda
end
return syllables_IPA
end
local function toIPA(word, lect)
local pronuns = {}
word = wordRespellings(word, lect)
local syllables = splitSyllables(word, lect)
syllables = preprocessWord(syllables, lect)
if ret_error then
return {}
end
-- TODO: process with text instead of table
-- combine syllables
--local combined = {}
--for i, syll in ipairs(syllables) do
-- -- TODO: add primary and seconday accent
-- table.insert(combined, syll.onset .. syll.vowel .. syll.coda)
--end
--local text = table.concat(combined, "·") -- · syllables delimiter
--text = "#" .. text .. "#" -- # word delimiter
--return postprocessGeneral(text, lect)
return postprocessGeneral(syllables, lect)
end
local function generatePhonetic(parsed_respellings)
for lect, termobj in pairs(parsed_respellings) do
if termobj.omitted then
-- leave alone, will handle later
elseif termobj.raw then
termobj.phonetic = termobj.raw
else
termobj.phonetic = toIPA(termobj.term, lect)
end
end
end
local function joinSyllables(syllables)
for i, syll in ipairs(syllables) do
syll.vowel = str.gsub(syll.vowel, "[āēō]", {["ā"] = "a", ["ē"] = "e", ["ō"] = "o"})
syll = syll.onset .. syll.vowel .. syll.coda
if i == syllables.stress then -- primary stress
syll = "ˈ" .. syll
elseif syllables[i].stressed then -- secondary stress
syll = "ˌ" .. syll
end
syllables[i] = syll
end
return "/" .. str.gsub(table.concat(syllables, "."), "%.([ˈˌ.])", "%1") .. "/"
end
-- Main entry point
-- input: 1 table of arguments with respelling or hint, general or by lect,
-- as done by Module:ca-pron from the frame of Template:ca-pron;
-- if void then uses parameter "pagename"
-- output: table of pairs lect=pronunciation generated and formatted for geolects or variants
function p.show(pron, page_name)
pagename = canonPagename(page_name or mw.title.getCurrentTitle().subpageText)
local inputs = {}
-- if 1= specified, do all lects
local input_all = {}
if pron[1] then
input_all = listToSet(mw.text.split(pron[1], " ?, ?"))
for _, lect in ipairs(lects) do
inputs[lect] = pron[1]
end
end
-- then do dialect groups
for group, lects in pairs(groups_lects) do
if pron[group] then
for _, lect in ipairs(lects) do
inputs[lect] = pron[group]
end
end
if pron[group .. "2"] then
for _, lect in ipairs(lects) do
inputs[lect.. "2"] = pron[group .. "2"]
end
end
end
-- then do individual lect settings
for _, lect in ipairs(input_lects) do
if pron[lect] then
inputs[lect] = pron[lect]
elseif str.sub(lect, -1) == "2" and pron[str.sub(lect, 1, -2)] then
inputs[lect] = pron[str.sub(lect, 1, -2)]
end
end
-- if no inputs given, set all lects based on current pagename
if not next(inputs) then
for _, lect in ipairs(lects) do
inputs[lect] = pagename
end
end
-- Parse the arguments
local parsed_respellings = {}
for lect, inputspec in pairs(inputs) do
local input_split_on_comma = mw.text.split(inputspec, " ?, ?")
-- do mid_vowel_hint first
for _, input_part in ipairs(input_split_on_comma) do
if str.match(input_part, "^[éèêëóòô]$") then
parsed_respellings[lect] = parseRespelling(input_part, pagename)
end
end
for _, input_part in ipairs(input_split_on_comma) do
if lect == "val" and input_part:find("^[r-]r$") and input_all[input_part] then
input_part = "+" -- do not apply general r hints to Valencian
end
if str.match(input_part, "^[éèêëóòô]$") == nil then
local respelled = pagename
if parsed_respellings[lect] then -- previously respelled
respelled = parsed_respellings[lect].term or pagename
end
parsed_respellings[lect] = parseRespelling(input_part, respelled)
end
end
end
if ret_error then
return {}, ret_error
end
-- Convert each canonicalized respelling to IPA
generatePhonetic(parsed_respellings)
if ret_error then
return {}, ret_error
end
-- Concatenate formatted results
local ret = {}
for lect, pronun_spec in pairs(parsed_respellings) do
if not pronun_spec.omitted then
ret[lect] = pronun_spec.raw or joinSyllables(pronun_spec.phonetic)
end
end
return ret
end
-- on debug console, call p.show with table of arguments and pagename:
-- =p.show({"ó", bal="-"}, "prova")
return p
o199hl1vehzhbwhvgedn0z30bp3gb72
sàller
0
364211
2301938
2275787
2024-04-17T10:54:56Z
Vriullop
219
/* {{-ca-}} */ pron auto
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|or=-r|occ=-|rima=}}
{{-etimologia-}} De {{m|ca|sallir}} amb canvi de conjugació.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|septentrional}} [[sortir]]
==== Conjugació ====
{{ca-conj|centr=no|bal=no|alg=no|occ=no}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|ralles|rallés}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|dcvb}}
q59gu18ecahfv8ci7tcht94iil98syo
desésser
0
384434
2301922
2277237
2024-04-17T08:45:09Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|-r}}
{{etim-comp|ca|des-|ésser}}.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|només en infinitiu}} Deixar d’[[ésser]].
{{-trad-}}
{{t-inici}}
* {{eu}}: {{trad|eu|zendu}}
* {{es}}: {{trad|es|[[dejar]] [[de]] [[ser]]}}
* {{fr}}: {{trad|fr|}}
* {{it}}: {{trad|it|}}
{{t-final}}
=== Nom ===
{{ca-nom|m}}
# [[inexistència]], [[no-res]]
{{-trad-}}
{{t-inici}}
* {{es}}: {{trad|es|[[no]] [[ser]]}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil|des·és·ser}}
=== Vegeu també ===
* {{ca-dicc|diec|gdlc|optimot}}
63ks733j2jp9bau4dh676xev2w86agt
Basturs
0
396997
2301948
2253226
2024-04-17T11:35:21Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-|xib|ca}} D’origen ibèric. Vegeu {{m|xib|baś}} i {{m|xib|tuŕś}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# Poble de l'antic terme d'[[Orcau]], municipi d’{{w|Isona i Conca Dellà}}, al [[Pallars Jussà]].
{{-var-}}
* [[Bastús]]
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|arbusts|abstrús}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|dcvb=bastús|optimot}}
b7x8350853bojqk56ppdvg416gcbljy
Clar
0
457167
2301954
2188710
2024-04-17T11:49:35Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
{{vegeu|clar|CLAR}}
== {{-ca-}} ==
{{ca-pron|-r
|f-centr=LL-Q7026 (cat)-Unjoanqualsevol-clar.wav
}}
{{-etimologia-}} De {{m|ca|clar}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# {{cognom|ca}}
{{-der-}}
* [[Claret]], [[Clarís]], [[Clarassó]]
=== Miscel·lània ===
* {{anagrames|ca|lacr}}
=== Vegeu també ===
* {{Wikidata}}
* {{ca-dicc|optimot}}
* [http://www.idescat.cat/cognoms/?q=Clar Cognoms de la població], Idescat
b5oo6iwy8jqa4bkp4byv3rokwvdqnsf
iluso
0
457572
2301904
1883449
2024-04-16T15:24:04Z
Pablussky
8432
wikitext
text/x-wiki
== {{-es-}} ==
{{es-pron}}
{{etim-lang|la|es|illūsus}}, de {{m|la|illudĕre}}.
=== Adjectiu ===
{{es-adj|m}}
# [[il·lús]]
{{-sin-}}
* {{e|es|ingenuo}}
=== Miscel·lània ===
* {{es-sil}}
=== Vegeu també ===
* {{DRAE}}
ge3q4jep6sfjj0xik7l6yjq4am0q9rp
Far
0
496777
2301946
2284402
2024-04-17T11:23:23Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
{{vegeu|far}}
== {{-ca-}} ==
{{ca-pron|or=-r}}
{{-etimologia-}} De {{m|ca|far}}, com a cognom per l’ofici de [[faroner]].
=== Nom propi ===
{{entrada|ca|nom propi}}
# {{marca|ca|amb article|el Far}} {{def-meta|Diversos topònims catalans.}}
## Municipi de l’[[Alt Empordà]] situat al sud-est de [[Figueres]], amb determinant {{w|el Far d'Empordà}}.
# {{cognom|ca}}
{{-var-}}
* {{q|topònim}} [[Alfar]]
* {{q|cognom}} [[Fa]]
{{-der-}}
* {{q|el Far d’Empordà}} [[elfarenc]]
=== Miscel·lània ===
* {{anagrames|ca|fra|arf}}
=== Vegeu també ===
* {{ca-dicc|dcvb}}
* [http://www.idescat.cat/cognoms/?q=Far Cognoms de la població], Idescat
k9ktb1mv2ru316b5zkkb1l7f3yote8o
florèixer
0
535283
2301926
2285148
2024-04-17T08:55:14Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ê}}
{{etim-comp|ca|flor|+èixer}}, calc del castellà {{calc|es|ca|florecer}}, de l'antic {{m|es|florescer}}, {{del-lang|la|es|florescĕre}}, {{etim-s|ca|XIX}}.
=== Verb ===
{{ca-verb|i}}
# {{marca|ca|castellanisme no normatiu}} [[florir]]
#: {{ex-cit|ca|'''Floréixer''' veig aquesta desfulladisa rosa / en les joyoses festes de la paterna llar / en la uberta finestra de la fadrina hermosa / en los ciris encesos del lluminós altar.|ref=Teodor Llorente, ''A ma filla Maria'', 1879}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|dcvb}}
3ssj3mz7mbn57vkpr65heq2pppi6h2j
vúlguer
0
542794
2301943
2273546
2024-04-17T11:02:32Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|or=-|nocc=-r|val=-|rima=-}}
{{-etim-}} Per analogia amb formes com {{m|ca|vulguis}}.
=== Verb ===
{{ca-verb|t}}
# {{marca|ca|nord-occidental}} [[voler]]
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ref-llibre |cognom=Masip i Vallès, Robert; Montardit i Asènsio, Ferran; Prenafeta i Agelet, David |títol=Lo diccionari lleidatà (Edició ampliada) |pàgines=227 |lloc=Juneda |editorial=Fonoll |any=2017 |isbn=978-84-946447-1-9 |capítol=V}}
ok6pt6chl21eju6q98tun7qn8zx04y1
fumut
0
579477
2301928
2285711
2024-04-17T09:02:00Z
Vriullop
219
/* {{-ca-}} */ etim
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-}} Eufemisme de {{m|ca|fotut}} a partir de la pronúncia oriental {{m|ca|*futut}}, de {{m|ca|fotre}}, {{etim-s|ca|XIX}}.
=== Adjectiu ===
{{ca-adj|m}}
# [[fotut]] {{q|eufemisme}}
{{-der-}}
* [[fúmer]]
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|dcvb}}
huhltm2pem9inqxc2axzdf4di3xzvwt
Arànser
0
600630
2301947
2176990
2024-04-17T11:30:08Z
Vriullop
219
/* {{-ca-}} */ corr. pron
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|-r}}
{{-etimologia-}} De {{m|roa-oca|*Arantzari}}, {{del-lang|eu|ca|arantzadi}}, col·lectiu de {{m|eu|arantza|t=espina, arç}}. Doblet de {{doblet|ca|Arinsal}}.
=== Nom propi ===
{{entrada|ca|nom propi}}
# Poble del municipi de {{w|Lles de Cerdanya}}.
{{-var-}}
* [[Aransa]] {{q|arcaic}}
=== Miscel·lània ===
* {{ca-sil}}
* {{anagrames|ca|serrana|arnar-se|arrasen|enrasar|arranes|arranés|arnares}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|dcvb|gec|oncat}}
ogbdx3ud76xlms3vh6wg1pfvvdi0a6n
Dniéper
0
613981
2301957
2227628
2024-04-17T11:53:45Z
Vriullop
219
/* {{-ca-}} */
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|niépērr}}
{{-etimologia-}} {{Del-lang|fr|ca|Dniéper}}, {{del-lang|pl|ca|Dniepr}}, {{del-lang|ru|ca|Днепр}}.
=== Nom propi ===
{{entrada|ca|nom propi|g=m}}
# Riu de [[Rússia]], [[Belarús]] i [[Ucraïna]] fins a la mar Negra.
{{-trad-}}
{{t-inici}}
* {{en}}: {{trad|en|Dnieper}}
* {{be}}: {{trad|be|Дняпро́}}
* {{fr}}: {{trad|fr|Dniepr|m}}
* {{ru}}: {{trad|ru|Днепр}}
* {{uk}}: {{trad|uk|Дніпро́}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|esadir|gec}}
{{catllengua|ca|rius}}
prmwoiwn8hs5yltxiwtmiy0wo72rq0k
duondio
0
622344
2301896
2300691
2024-04-16T12:56:50Z
Balamax
2550
wikitext
text/x-wiki
== {{-eo-}} ==
{{eo-pron}}
{{àudio|LL-Q143 (epo)-Robin van der Vliet-duondio.wav}}
=== Nom ===
{{eo-entrada}}
# [[semidéu]]
=== Miscel·lània ===
* {{síl|eo|du·on·di·o}}
2hj5n0nsa12jofxzkelpp16hj3ejtm7
mamilinció
0
622382
2301897
2024-04-16T14:06:35Z
Aniol
4830
Es crea la pàgina amb «== {{-ca-}} == {{ca-pron}} {{etimologia|ca}} === Nom === {{ca-nom|f}} # {{marca|ca|sexualitat}} Estimulació dels mugrons i mamelles de forma eròtica. [[Categoria:Sexualitat en català]] {{-trad-}} {{t-inici}} {{t-final}} === Miscel·lània === * {{ca-sil}} === Vegeu també === * {{Viquipèdia}} * {{ca-dicc|diec}}».
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{etimologia|ca}}
=== Nom ===
{{ca-nom|f}}
# {{marca|ca|sexualitat}} Estimulació dels mugrons i mamelles de forma eròtica.
[[Categoria:Sexualitat en català]]
{{-trad-}}
{{t-inici}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|diec}}
4d78zkc7jvxj6xrblkazk56tvd6ggwn
2301898
2301897
2024-04-16T14:06:51Z
Aniol
4830
/* Vegeu també */
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{etimologia|ca}}
=== Nom ===
{{ca-nom|f}}
# {{marca|ca|sexualitat}} Estimulació dels mugrons i mamelles de forma eròtica.
[[Categoria:Sexualitat en català]]
{{-trad-}}
{{t-inici}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec}}
958x80hbdt4bkfsqexsjnix27cmo8hx
2301911
2301898
2024-04-17T06:11:26Z
Vriullop
219
/* {{-ca-}} */ etim, trad
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
{{-etimologia-}} Del {{comp|ca|mami-|linctio|lang2=la}}, de {{m|la|lingō|t=llepar}}, per analogia amb {{m|ca|cunnilinció}}.
=== Nom ===
{{ca-nom|f}}
# {{marca|ca|sexualitat}} Estimulació dels mugrons i mamelles de forma eròtica.
{{-trad-}}
{{t-inici}}
* {{en}}: {{trad|en|mammalingus}}
* {{es}}: {{trad|es|mamilingus|m}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{ca-dicc|diec|dnv|gdlc|termcat}}
jlmkns2e9wp279zc1d6mf5ybzpfysf0
vistas
0
622383
2301901
2024-04-16T14:17:32Z
Pablussky
8432
Es crea la pàgina amb «== {{-es-}} == {{es-pron}} === Nom === {{es-nom-forma|fp}} # {{forma-p|es|vista}} === Verb === {{es-verb-forma|ver}} # {{es-forma-conj|ver|part|f|p}} === Verb === {{es-verb-forma|vestir}} # {{es-forma-conj|vestir|2|pres|subj}} === Miscel·lània === * {{es-sil}}».
wikitext
text/x-wiki
== {{-es-}} ==
{{es-pron}}
=== Nom ===
{{es-nom-forma|fp}}
# {{forma-p|es|vista}}
=== Verb ===
{{es-verb-forma|ver}}
# {{es-forma-conj|ver|part|f|p}}
=== Verb ===
{{es-verb-forma|vestir}}
# {{es-forma-conj|vestir|2|pres|subj}}
=== Miscel·lània ===
* {{es-sil}}
dc4lrdww6jgn6v63cno16hrrxasai9l
花
0
622384
2301903
2024-04-16T15:14:11Z
Pablussky
8432
Es crea la pàgina amb «== {{-ja-}} == === Nom === {{ja-lema|nom|はな}} # [[flor]] {{catllengua|ja|biologia}}».
wikitext
text/x-wiki
== {{-ja-}} ==
=== Nom ===
{{ja-lema|nom|はな}}
# [[flor]]
{{catllengua|ja|biologia}}
du8iimj6cvgmk3aw1fjok5ai40p28lw
fístula
0
622385
2301905
2024-04-16T15:39:46Z
Pablussky
8432
Es crea la pàgina amb «{{vegeu|fistula}} == {{-ca-}} == {{ca-pron|rima=}} {{etim-lang|la|ca|fistula}}. === Nom === {{ca-nom|f}} # {{marca|ca|medicina}} Comunicació [[patològic]]a entre una estructura corporal i l'exterior o bé entre dos estructures diferents. #: {{ex-us|ca|una fístula anal, una fístula arteriovenosa}} {{-trad-}} {{t-inici}} * {{en}}: {{trad|en|fistula}} * {{es}}: {{trad|es|fístula}} {{t-final}} === Miscel·lània === * {{ca-sil}} === Vegeu també === * {{Vi...».
wikitext
text/x-wiki
{{vegeu|fistula}}
== {{-ca-}} ==
{{ca-pron|rima=}}
{{etim-lang|la|ca|fistula}}.
=== Nom ===
{{ca-nom|f}}
# {{marca|ca|medicina}} Comunicació [[patològic]]a entre una estructura corporal i l'exterior o bé entre dos estructures diferents.
#: {{ex-us|ca|una fístula anal, una fístula arteriovenosa}}
{{-trad-}}
{{t-inici}}
* {{en}}: {{trad|en|fistula}}
* {{es}}: {{trad|es|fístula}}
{{t-final}}
=== Miscel·lània ===
* {{ca-sil}}
=== Vegeu també ===
* {{Viquipèdia}}
* {{ca-dicc|gdlc|dcvb|diec}}
== {{-es-}} ==
{{es-pron|rima=}}
{{etim-lang|la|es|fistŭla}}, {{etim-s|es|XIII}}.
=== Nom ===
{{es-nom|f}}
# [[#ca|fístula]]
=== Miscel·lània ===
* {{es-sil}}
=== Vegeu també ===
* {{Viquipèdia|lang=es}}
* {{DRAE}}
{{catllengua|es|medicina}}
o3mgq6a8g2kgfi6rvri5avt02qbo780
fístules
0
622386
2301906
2024-04-16T15:39:54Z
Pablussky
8432
Creant formes de [[fístula]] ([[VC:ACC|Accelerat]])
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
=== Nom ===
{{ca-nom-forma|fp}}
# {{forma-p|ca|fístula}}
=== Miscel·lània ===
* {{ca-sil}}
oujmm0hu6gb0w86ftsinobpme6ikr4e
fístulas
0
622387
2301907
2024-04-16T15:40:09Z
Pablussky
8432
Creant formes de [[fístula]] ([[VC:ACC|Accelerat]])
wikitext
text/x-wiki
{{vegeu|fistulas}}
== {{-es-}} ==
{{es-pron}}
=== Nom ===
{{es-nom-forma|fp}}
# {{forma-p|es|fístula}}
=== Miscel·lània ===
* {{es-sil}}
rmzdm24nb2flkwma0dkn06qzis0jl3e
2301908
2301907
2024-04-16T15:40:18Z
Pablussky
8432
wikitext
text/x-wiki
{{vegeu|fistulas}}
== {{-es-}} ==
{{es-pron|rima=}}
=== Nom ===
{{es-nom-forma|fp}}
# {{forma-p|es|fístula}}
=== Miscel·lània ===
* {{es-sil}}
8clpt6m60n1zn4tl7uhetao5hie3blh
demokrata
0
622388
2301910
2024-04-16T16:52:54Z
Flummont
22344
Es crea la pàgina amb «== {{-eu-}} == === Nom === {{eu-nom|an}} # [[demòcrata]] ==== Declinació ==== {{eu-nom-decl|an}}».
wikitext
text/x-wiki
== {{-eu-}} ==
=== Nom ===
{{eu-nom|an}}
# [[demòcrata]]
==== Declinació ====
{{eu-nom-decl|an}}
n38ma5xhadqdm4e9fim28drrwwva7k9
mamilincions
0
622389
2301912
2024-04-17T06:50:54Z
Pau Colominas
5090
Creant formes de [[mamilinció]] ([[VC:ACC|Accelerat]])
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron}}
=== Nom ===
{{ca-nom-forma|fp}}
# {{forma-p|ca|mamilinció}}
=== Miscel·lània ===
* {{ca-sil}}
d3ve8kzapfmor5kgn5f6gar619w0gjf
2301914
2301912
2024-04-17T07:12:03Z
Vriullop
219
/* {{-ca-}} */ pron ó
wikitext
text/x-wiki
== {{-ca-}} ==
{{ca-pron|ó}}
=== Nom ===
{{ca-nom-forma|fp}}
# {{forma-p|ca|mamilinció}}
=== Miscel·lània ===
* {{ca-sil}}
58go56x9acsngs202bq2lw8bil3xbbq
Usuari Discussió:Aniol
3
622390
2301913
2024-04-17T06:52:03Z
Pau Colominas
5090
Es crea la pàgina amb «{{subst:benvinguda}} Espero que t'animis a continuar col·laborant amb el Viccionari :) --~~~~».
wikitext
text/x-wiki
{{Ajuda}}
{{benvinguda-taula}}
<big>'''''Hola {{PAGENAME}}!'''''</big>, sigueu benvingut al Viccionari i al coneixement lliure. Us encoratgem especialment, abans que res, a visitar la '''[[Viccionari:Introducció|introducció]]''' per a un començament fàcil en tres senzills passos [[Fitxer:Smile3 no-blur.svg|15px|somriure|enllaç=]]
Aquesta és la [[w:Ajuda:Pàgines de discussió|pàgina de discussió]] del vostre compte d'usuari, que us servirà per a rebre missatges d'altres col·laboradors. A més, teniu la vostra '''[[Usuari:{{PAGENAME}}|pàgina d'usuari]]''', on podeu posar les vostres dades, interessos, etc. Podeu visitar '''[[Viccionari:Babel]]''' per a indicar quines llengües coneixeu.
Si voleu trobar idees per a contribuir al projecte, visiteu el [[Viccionari:Portal|Portal del Viccionari]], on podreu coordinar-vos amb la resta dels usuaris. Així mateix, disposeu també de [[Viccionari:La taverna|la taverna]], per plantejar-hi els vostres dubtes, suggeriments o comentaris. Podeu signar en les discussions amb el botó de la barra d'edició [[Fitxer:OOjs UI icon signature-ltr.svg|border|link=|alt=Icona per a signar]], o bé amb el codi <code style="background: transparent;"><nowiki>--~~~~</nowiki></code>.
----
Espero que t'animis a continuar col·laborant amb el Viccionari :) --[[Usuari:Pau Colominas|Pau Colominas]] ([[Usuari Discussió:Pau Colominas|discussió]]) 08:52, 17 abr 2024 (CEST)
fyoa8mit2pu0iaqcim48vrbrh4npsoh