text:
Wiktionary:About Tagalog

This page lists several considerations for Tagalog entries to supplement Entry layout and other general policies.

A very simple example
This displays the basic layout of a Tagalog entry. Here is an example for :

Etymology
Borrowed from.

Noun

 * 1) dictionary

Spelling
Tagalog is written in the Latin script and Baybayin, but the latter is rarely used. Tagalog uses the 28-letter Filipino alphabet, basically the same as the English alphabet, but with the addition of Ñ and Ng.

Tagalog has undergone various spelling reforms, of note are the 2007 and 2014 reforms. This mostly deals with alternative spellings.

2007 reform
The Komisyon sa Wikang Filipino (KWF) passed a reform in 2007, that mostly affected variant spellings loanwords featuring vowel pairs starting with I or U, which were replaced with Y and W respectively when these letters are inserted. Such spellings were treated as standard variants before 1977 and between 1987 and 2007. These reforms remain in force as of 2014.

Spellings affected by this reform should be marked with tl-superseded spelling of.

2014 reforms
The KWF released new spelling rules in 2014, that is generally applicable to Tagalog, but is also applied to the other languages of the Philippines. A notable change is the full adoption of the Filipino alphabet, further permitting recent loanwords to be borrowed with little to no alteration in spelling.

The reforms generally affects primarily compounds, alternative forms and loanwords. Changes are the deprecation of many variant spellings starting with is of Spanish loanwords starting with es, reserving the initial syllable is to English borrowings (e.g., ) and variant spellings featuring the exchanging of E and I and and O and U (others are still standard), the standardization of spellings using the letters F, J, Ñ, V and X where the previous standard spelling transcribed them to Abakada (except in proper nouns e.g. Espanyol -> Español, pederalismo -> federalismo, Ipugaw -> Ifugaw, lebel -> level, seks -> sex), permitting of recent loanwords to be borrowed into the language with few to no alterations in spelling, and codification of rules when compounds are to be written with a space or with a hyphen. Several early Spanish (usually pre-1972) borrowings that have exchanged vowels remained standard (e.g. ). The spelling rules above is used in writing the entries listed at Diksiyonaryo.ph, which is detailed below.

Every effort must be done to determine the most common form, by searching Google Books, or looking up contemporary Tagalog print dictionaries such as the Diksiyunaryong Pilipino-Ingles (Sagalongos 1968), the Diksiyunaryo-tesauro Pilipino-Ingles (Panganiban 1972) and the English-Tagalog Dictionary (Fr. English 1985). Some of these dictionaries list forms that has since been superseded under the spelling reforms. New spellings introduced by KWF that did not displace previous spellings can either be added as alternative forms or turned into the main entry for the term in question, depending on the most current usage.

As of 2021, these rules are in effect, except and  has been deprecated in favor of the older and more common forms  and. Filipino when referring to the Filipino language remains standard.

Spellings deprecated in the 2014 reform are marked with tl-superseded spelling of, plus accompanying usage notes regarding the spelling.

English loanwords
Spelling of English loanwords are one problematic aspect of modern Tagalog spelling, due to the prevalence of Tagalog-English code-switching or "Taglish". It is common to insert English words or constructions wholesale into Tagalog sentences, and some English loanwords that have an attested phonetic spelling are being increasingly spelled and/or pronounced in their original (e.g. from ). Phonetic spellings, if attested, should be preferred as lemma, but editors should try to use their best judgment.

Capitalization
Tagalog generally follows the same capitalization rules as English, and this generally applies to:
 * terms from proper nouns
 * names of religions
 * nationalities and ethnicities
 * names of holidays and festivities
 * names of academic and scientific ideas (especially when derived from proper nouns)
 * names of days and months

Lemma entries
There are special considerations for Tagalog lemmas of adjectives and verbs:

 * Adjectives: Root word (for simple or "passive" adjectives) and singular form (for adjectives formed with ). Plural forms of adjectives formed by adding to a noun root, and reduplicated forms of simple adjectives are not lemma (except reduplicated adjectives with idiomatic meanings)
 * Verbs: All possible affixed infinitives, not the bare root. Some small Tagalog dictionaries use the root word as the verb lemma, but since Tagalog is agglutinative in nature, the roots only become verbs when affixes are added. Most Tagalog dictionaries lists verbs by all the possible affixed forms, and the roots generally being nouns or adjectives (see talk). In addition, some list both bare roots and affixed infinitives as verbs.

Conjugation
(verbs only)

Alternative forms
As a descriptive dictionary, Tagalog entries in Wiktionary should also list alternative forms, that are soft redirects to the standard spelling, such as:

 * Dialectal spellings (e.g. Batangas Tagalog spellings)
 * Historical, alternative, or superseded spellings
 * Common misspellings.

Tagalog entries are generally written in Latin script and without diacritics (except the Ñ found in proper nouns). Historically, baybayin is used, in Old Tagalog and early modern Tagalog, and is recommended, but not mandatory for most Tagalog entries, especially modern borrowings. Baybayin forms are not listed in this section, but on the headword.

The main Tagalog entry should generally follow the KWF orthography in use since 2014, which is explained in.

Etymology
Many native Tagalog words are homographs, which may derive from different ways, so there may be multiple "Etymology" headers

[Part of speech]
Tagalog descends from Old Tagalog, but is treated in Wiktionary as Tagalog written in baybayin and as an etymology-only language. Going further, Tagalog descends from Proto-Philippine, Proto-Malayo-Polynesian, and Proto-Austronesian, which is not attested, but reconstructed from evidence on related languages.

Tagalog words may derive from these methods:

 * Words formed from affixes
 * Compounds and blends
 * Borrowings and inheritance
 * Neologisms

Affixed words
The origin of Tagalog words formed by adding affixes can be added using affix (abbreviated af), which is preferred over the older templates prefix and suffix. For infixes, use infix. For example:

 * - tl
 * - tl
 * - tl
 * - tl

Compounds and blends
Words that are compounds and blends can be specified using the af and blend templates. For example:

 * - tl
 * - tl

Loanwords and inherited terms
Tagalog words that are inherited or borrowed fall in three major categories: inherited terms (from Proto-Philippine, Proto-Malayo-Polynesian, and Proto-Austronesian), early borrowings (from Sanskrit, Malay, Arabic, Chinese, Tamil), and modern borrowings (from Spanish, English and others, including borrowings from early modern Spanish). In detail:

 * Inherited terms - terms inherited from the reconstructed ancestors of Tagalog: Proto-Philippine, Proto-Malayo-Polynesian, and Proto-Austronesian. Words from those are tagged with inh. Some entries may refer to Proto-Central Philippine, but this proto-language is not yet supported by Wiktionary.
 * Early borrowings - terms borrowed before any institution of Spanish rule. This include borrowings from Hokkien and Classical Malay (which also gives words that can be traced to Sanskrit, Arabic, or Persian), and there are some early borrowings from other Philippine languages as well (most notably Kapampangan and Visayan languages). These should be tagged with der (for Sanskrit, Classical Malay) or bor (for all others, unless borrowed via an intermediate language like Classical Malay or Kawi).
 * Modern borrowings - terms borrowed since Western contact and colonization, and modern Philippine history. Words were borrowed from Spanish since Spanish colonization, English since American colonization, and other languages from different times in history and contacts with other cultures. There were also borrowing from other Philippine languages to fill lexical gaps, or as slang. Early Spanish borrowings, especially from early modern Spanish, are usually corrupted as they were borrowed into Tagalog. Words borrowed since the 16th century are generally indicated with bor.

Spanish or English in origin? This is a perennial question encountered when dealing with modern Tagalog borrowings of Latinate origin where the etymon can either be English or Spanish. This is due to several factors:

 * Historical ignorance about Spanish. Contrary to claims Spanish becoming extinct after the Spanish-American War, Spanish continued to exist in the Philippines, as a de facto and de jure official language up to around 1987, when it was relegated to an auxiliary or optional language. Spanish was a second languages for learned Filipinos during the American era, until English was introduced into the educational system of that time; most fluent Filipino Spanish-language speakers died out by the end of World War II. Tagalog received Spanish loanwords during the American era to translate concepts introduced at that era or to add a Hispanic flavor to the language. Spanish being also called Kastila (Castilian), when used in the restricted sense of "Spanish language spoken in Spain", also contributes to this myth.
 * Similarity in English and Spanish vocabularies. Both Spanish and English have similar vocabularies due to borrowings from Latin and coinages from classical roots. Filipinos who are not well aware of Spanish may tend to view most Spanish loans which have a English cognate to be just "Hispanized" English.
 * The purist-modernist controversy that plagued Tagalog during its early stage as national language. In an attempt to translate newer concepts into Tagalog, there were two competing camps in Surian ng Wikang Pambansa, purists and modernists. Purists preferred coining new words from existing Tagalog or indigenous roots, and modernists preferred borrowing from other languages (usually Spanish). At that era came an influx of Spanish loanwords (excluding pseudo-loans), competing with indigenous coinages, but as knowledge of Spanish decreased, Filipinos who came of age that time began to falsely assume the new Spanish loanwords were just being formed out of the English when what was actually happening is that the English is translated into Spanish and the translation is borrowed.

KWF guidance makes it clear Spanish remains the preferred source of modern borrowings. Spanish remains a common source of enrichment for Tagalog (and most Philippine languages too), in a similar position Latin is to English, and Spanish terms continue to trickle into the language. Most Spanish borrowings in Tagalog should be readily obvious, but for others, consulting an English-Spanish translating dictionary is needed. Such guidance is also helpful in finding pseudo-loans (explained below).

Pseudo-Hispanisms. Editors should be aware about siyokoy words (pseudo-loans from Spanish or pseudo-Hispanisms); such words mostly began appearing after World War II as the number of fluent Spanish-speaking Filipinos declined. Tagalog pseudo-Hispanisms fall under three common forms:

 * False Spanish: (e.g. (created by analogy with words like ; actual Spanish is, which is borrowed as )
 * English-Spanish hybrids, usually created by replacing an English morpheme (usually Latin- or Greek-derived suffixes) with its equivalent Spanish or adding final vowels that are typical of Spanish loans: (e.g. by swapping English  with Spanish,  by swapping English  with Spanish ,  by swapping English  with Spanish , and  by adding a final O to English )
 * Coinages from Spanish elements where the claimed Spanish doesn't exists or has a very different meaning (e.g., which is "garbage collector" in Tagalog but "garbage dump" in Spanish; is analyzed as +)

According to the Manwal, English borrowings that are pronounced like as if they are Spanish are also treated as pseudo-Hispanisms, but such can be better explained as isms. Examples are certain English borrowings with a final consonant (usually L) where they have been borrowed into Tagalog with ultimate stress as if they are Spanish (which does stress words in the ultimate when ending in consonants except N or S, and no accents are provided elsewhere), as well as some English borrowings spelled with LL, re-read as Spanish LL and rendered as /lj/ (e.g., ).

Pseudo-Hispanic words or forms are usually excluded from KWF Diksiyonaryo in favor of existing native words of the same meaning or actual Spanish loans, but as Wiktionary is a descriptive work, these are covered as well. Such terms should be easy to filter out by consulting an English-Spanish translating dictionary.

Adding to that, there is another category of Spanish-sounding words which are Tagalog coinages, created by adding a Spanish-derived suffix to another Spanish loanword to experiment with translating English or cover another aspect of the word or sense being borrowed. Some of these words have been treated the same as pseudo-loans, or as affixed forms (either as actual etymology or surface analysis).

Etymologies of Spanish pseudo-loans should generally explain how it was coined and/or what influenced it. In the case of English-Spanish hybrids, the original English should be specified. Spanish pseudo-loans can also be explicitly tagged with pseudo-loan, or categorized manually by adding below the entry.

Other ways of foreign derivation
In some other cases, Tagalog terms can be calques (loan translations) and semantic loans. Phono-semantic matchings are rare.

 * Calque. A foreign expression is borrowed into Tagalog by translating its parts, e.g. from English . calque is used in such words.
 * Semantic loan. One of the senses is borrowed into Tagalog from another word with similar meaning, e.g., in the sense "period in office", is semantically borrowed from English . semantic loan is used in such cases.

Pronunciation
See Tagalog phonology and IPA for Tagalog for detailed information about the sounds of Tagalog.

IPA transcriptions of Tagalog can be created automatically through tl-IPA template or entered manually using IPA. Pronunciations specific to certain Tagalog accents or dialects are marked with a before the IPA transcription, e.g. Batangas dialect pronunciations are marked Batangas. The pronunciation provided is assumed to be the standard unless marked.

Hyphenations of words should generally follow KWF guidelines; see Appendix:Tagalog spellings. In general, Tagalog words are hyphenated by syllable.

Core
Tagalog entries can have these headers:

 * Part of speech: Adjective, Adverb, Conjunction, Contraction, Interjection, Noun, Numeral, Particle, Pronoun, Proper noun, Verb
 * Morphological features: Circumfix, Infix, Prefix, Suffix
 * Symbols and characters: Diacritical mark, Letter, Number, Punctuation mark, Symbol
 * Phrases: Phrase, Prepositional phrase, Proverb

Headwords should preferably use standard templates using Module:tl-headword as back-end. Accented forms as a pronunciation guide, which are helpful to distinguish homographs, and Baybayin forms, are generally inserted there.

 * Adjectives: tl-adj
 * Adverbs: tl-adv
 * Nouns: tl-noun
 * Proper nouns: tl-proper noun
 * Verbs: tl-verb
 * Other parts of speech: tl-head

Diacritics
Diacritics are normally not used in written Tagalog, but are used for headwords in most Tagalog dictionaries to distinguish homographs. If no diacritics are provided, the word is assumed to be stressed in the second to last syllable.

Tagalog uses stress and/or final glottal stops to distinguish homographs, and is represented by marking a vowel with an:

 * acute: primary or secondary stress, except on the second-to-final syllable.
 * circumfix: primary stress and final glottal stop on last syllable.
 * grave: final glottal stop

These diacritics are also used to determine the pronunciation generated by tl-IPA.

In historical dictionaries (like the Diccionario de terminos comunes tagalo-hispano), the circumfix and the grave are often interchanged.

Labels
Dialectal, archaic or obsolete entries or senses should be marked.

Conjugation/inflection
Place here verb or adjective conjugation or inflection tables (find at Category:Tagalog verb inflection-table templates), and inflections of ma- adjectives (see tl-infl-adj).

Derived terms
List here the words that are morphological derivatives of the word in the same language. In Tagalog, affixed words (salitang maylapi) and compound words (salitang tambalan) that are lemma are considered derived terms. These section is usually found on nouns or adjectives that serve as the root of many other words.

Related terms
List here words that are etymologically related but are not derived words.

Inflected forms
In Tagalog, verb forms inflected by aspect, and plural form of adjectives (i.e most reduplicated forms of simple adjectives, and partially reduplicated forms of ma- adjectives) are non-lemmas. Entries for those are formatted as follows, and are soft redirects to the lemma forms.

Historical, alternative, superseded or nonstandard spellings
Tagalog has undergone spelling reforms, which results to multiple spellings of the same word throughout history. Entries to historical, alternative, superseded or nonstandard spellings do not have any definitions, and serve as a soft redirect to the modern form. Baybayin forms are also considered alternate forms.

Example for :

Particle

Example for

Nouns
Use tl-noun for the headword. There are no special parameters to add for nouns, except for the accented form used to aid in pronunciation.

Proper nouns
Use tl-proper noun for the headword. There are no special parameters to add for proper nouns.

Verbs
Use tl-verb for the headword. The headword should also include the three basic aspects of the verb and the verb type[s]. See Template:tl-verb/documentation for all the list of possible verb types. Verb entries generally should include a conjugation section, with an appropriate conjugation table template (e.g. tl-conj, or templates for each individual conjugation such as tl-infl-um, tl-infl-in, etc.).

An example for :

Verb

 * 1) to stand

Adjectives
Tagalog adjectives may belong to:

 * passive adjectives (root word, but with stress on last syllable)
 * ma- adjectives ( plus root word)
 * all other adjectives (compound adjectives, proper adjectives)

There is no support yet to add forms by degree of comparison, but since there are lots of forms per degree, they can better be added in an inflection box.

Particles
Tagalog particles, such as, , , and , should use tl-head as headword.

About the language
Tagalog is an Austronesian language, and one of the Philippine languages. It is a Central Philippine language, and is closely related to the Bikol languages (Bikol Central, Iriga Bicolano/Rinconada) and the Visayan languages (Cebuano, Hiligaynon, Waray-Waray, Aklanon, etc.) Its standardized form, Filipino, is based on the Tagalog dialects spoken in Manila and Central Luzon, and serves as the national language and one of the two official languages of the Philippines (the second being English). Filipino was intended to be a autonomous standard variety of Tagalog enriched with borrowings from the Philippine regional languages in addition to Spanish, English and other foreign languages, but this effort has stalled.

There is no comprehensive dialectology for Tagalog, but it is generally divided into these dialects:

 * Manila (standard)
 * Central Luzon (Bulacan, Bataan, Nueva Ecija)
 * Lubang Island
 * Marinduque
 * Southern Tagalog (Batangas, Tayabas)
 * Rizal-Laguna (including Teresa-Morong)

From the beginning of Wiktionary to around 2011, Filipino is treated as a separate language from Tagalog, but since the two are basically the same language in vocabulary, pronunciation and grammar, the former has been merged.

Categories
Words are correctly categorized under their respective part of speech, generated by the head template.
 * Category:Tagalog language - the root of all Tagalog entries

 * Part of speech categories:
 * Category:Tagalog nouns
 * Category:Tagalog proper nouns
 * Category:Tagalog verbs
 * Category:Tagalog adjectives
 * Category:Tagalog adverbs
 * Category:Tagalog prefixes
 * Category:Tagalog infixes
 * Category:Tagalog suffixes
 * Category:Tagalog circumfixes
 * Category:Tagalog interfixes
 * Category:Tagalog interjections
 * Category:Tagalog conjunctions
 * Category:Tagalog prepositions
 * Category:Tagalog phrasebook - for common expressions, like maraming salamat and walang anuman, helpful for foreign travelers.
 * Category:Tagalog proverbs
 * Category:Tagalog idioms - for common Tagalog idiomatic expressions
 * Category:Tagalog onomatopoeias - for words imitating sounds
 * Category:Tagalog terms by usage - for words by usage

For requested entries: see Requested entries (Tagalog).

Translations
As general practice, translations to Tagalog should link to lemmas. Baybayin forms or alternative/nonstandard spellings do not get listed, with exceptions. Translations should generally be ordered by their commonality, and marked for specific usage if applicable.

Translations of English verbs should list all possible forms, marked and arranged for their conjugation type (actor, object, directional, etc.). If there is only one translation, they don't need to be marked.

Resources

 * KWF Diksiyonaryo ng Wikang Filipino (2021), Komisyon sa Wikang Filipino (KWF). Lists Tagalog entries only. Reference template: R:KWF Diksiyonaryo
 * Diksiyonaryo.ph | Pambansang Diksiyonaryo (2018) by the University of the Philippines' Sentro ng Wikang Filipino (SWF). Most entries should preferably have a link to Diksiyonaryo.ph in the “References” or “Further reading” section by adding R:Pambansang Diksiyonaryo. Further notes:
 * Etymologies are provided in brackets.
 * Part of speech (abbreviated) is marked in Tagalog. Labels used are:
 * pdd (padamdam) - exclamation
 * pnb (pang-abay) - adverb. Some adverbs under the Diksiyonaryo falls under the category of particles instead (e.g., )
 * pnd (pandiwa) - verb
 * png (pangngalan) - noun
 * pnh (panghalip) - pronoun
 * pnk (pang-angkop) - ligature
 * pnu (pang-ukol) - preposition
 * pnr (pang-uri) - adjective
 * pnt (pangatnig) - conjunction
 * pnl (panlapi) - affix; prefix; suffix; circumfix; infix
 * ptk (pantukoy) - article; determiner
 * Verbs lemmas are roots, with all known affixed forms non-lemma.
 * Diksiyonaryo.ph also list words in the other languages of the Philippines, as well as English, Chinese (any dialects, romanized) and Old Tagalog, and are clearly marked as such. Abbreviations of each language used are:
 * Abaknon (Abk)
 * Abyan (Aby)
 * Agta/Aeta/Ayta (Agt)
 * Agutayanen (Agu)
 * Aklanon (Akl)
 * Agusanon-Manobo (AM)
 * Ata (Ata)
 * Apayaw (Apa)
 * Arabe/Arabic (Ara)
 * Ayta-Magbubukun (Ayt Mbk)
 * Ayta-Magbubukun (Ayt-Mbk)
 * Ayta-Magkunana (Ayt Mgk)
 * Ayta-Magkunana (Ayt-Mgk)
 * Bagobo (Bag)
 * Bajaw/Sama-Badjao (Baj)
 * Balangaw (Bal)
 * Bantoanan (Ban)
 * Bengali/Bangladeshi Bengali (Ben)
 * Bago Igorot (Bgo)
 * Bikol (Bik)
 * Bilaan (Bil)
 * Bisaya (Bis, generally the same as Cebuano)
 * Bontok (Bon)
 * Batak (Btk)
 * Buhid (Buh)
 * Bukidnon (Buk)
 * Buntuanon (Bun)
 * Chabacano/Chavacano (Cha)
 * Tsino/Chinese (Chi)
 * Cuyonen (Cuy)
 * Espanyol/Spanish (Esp))
 * Filipino/Modern Tagalog (Fil)
 * French (Fre)
 * German (Ger)
 * Griyego/Greek (Gri)
 * Hanunuo (Han)
 * Jewish Hebrew (Heb)
 * Higa-onon (Hgn)
 * Hiligaynon/Ilonggo (Hil)
 * Hindi/Indian (Hin)
 * Ibanag (Iba)
 * Ibaloy (Iby)
 * Ifugaw (Ifu)
 * Igorot (Igo)
 * Iloko (Ilk)
 * Ilongot (Ilt)
 * Ingles/English (Ing)
 * Isneg (Isn)
 * Italian (Ita)
 * Itneg (Itn)
 * Ivatan (Iva)
 * Japanese (Jap)
 * Jama Mapun (JM)
 * Kalinga (Kal)
 * Kankaney (Kan)
 * Kalagan (Klg)
 * Kapampangan (Kap)
 * Karaw (Kar)
 * Koreano/Korean (Kor)
 * Latin (Lat)
 * Maguindanao (Mag)
 * Malay (Mal)
 * Mangyan (Man)
 * Mexican/Aztec Nahuatl (Mex)
 * Mangguangan (Mgn)
 * Mamanwa (Mmw)
 * Mandaya (Mnd)
 * Manobo Agusan (Mnb Agu)
 * Manobo Cotobato (Mnb Cot)
 * Manobo (Mnb)
 * Mansaka (Mns)
 * Misamis Occidental (MOc)
 * Maranaw (Mrw)
 * Norwego/Norwegian (Nor)
 * Palawan (Pal)
 * Pangasinan/Pangasinense (Pan)
 * Portuguese (Por)
 * Rombloanon (Rom)
 * Ruso/Russian (Rus)
 * Sanskrit (San)
 * Sulod (Sld)
 * Sebwano/Cebuano (Seb)
 * Samal (Sma)
 * Sanskrit (Snk)
 * Subanon (Sub)
 * Swahili (Swa)
 * Tagalog/Classical Tagalog (Tag)
 * Sinaunang Tagalog/Old Tagalog (ST)
 * Tagbanwa (Tbw)
 * Tausug (Tau)
 * Tboli (Tbo)
 * Teduray/Tiruray (Ted)
 * Tagakawlo (Tgk)
 * Thai (Tha)
 * Tibetan (Tib)
 * Tinggian (Tin)
 * Tiruray (Tir)
 * Tsino/Chinese (Tsi)
 * Tuaran Dusun (Tua-Dus)
 * Turkish (Tur)
 * Waray (War)
 * Yakan (Yak)
 * Zambal (Zam)
 * Tagalog Pinoy Dictionary (reference or further reading template: R:tl:Pinoy Dictionary), Tagalog-English dictionary maintained by Cyberspace.ph, which also has dictionaries for Cebuano (Cebuano-English, ), Hiligaynon (Hiligaynon-English), and Ilocano (English-Ilocano). More extensive than the KWF Diksiyonaryo, as it lists almost every affixed word formed from most noun and adjective roots, but lacks etymologies and doesn't use accents.
 * Jose Villa Panganiban, Diksiyunaryo-tesauro Pilipino-Ingles (1973) (reference template: R:Diksiyunaryo-tesauro Pilipino-Ingles)
 * Vocabulario de la lengua tagala.
 * 1835 edition (Tagalog-Spanish dictionary. public domain). (Citation: R:Vocabulario de la lengua tagala)
 * 1860 edition - Tagalog words listed first (Citation: R:Vocabulario de la lengua tagala 1860).
 * Diccionario Hispano-tagalo - Spanish-Tagalog dictionary by Pedro Serrano Laktaw (Citation: R:Diccionario hispano-tagalo). Handy for finding Spanish loanwords.
 * Vocabulario tagalo-castellano - Tagalog-Spanish phrasebook (Citation: R:Vocabulario tagalo-castellano)
 * Talinghagang Bukambibig (1999), a monolingual list of common Tagalog idioms and some slang. Citation: R:Talinghagang bukambibig
 * Full texts of major Tagalog works of literature. You can find some that are in the public domain on Wikibooks or Wikisource, but many are incomplete, filled with unnecessary commentary or vandalism, or unmaintained. Finding them on a textbook is recommended, but the quote should date to the original time they are written or translated.:
 * Florante at Laura
 * Ibong Adarna
 * Noli me Tangere
 * El filibusterismo

title: Wiktionary:About Tagalog


text: Gorbachovian

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Gorbachovian


text:
occipito-

Etymology
From.

Prefix

 * 1)  Of or pertaining to the occiput.

Translations

 * Spanish: occipito-

title: occipito-


text:
hermafroditt

Etymology
From.

Noun

 * 1) a hermaphrodite

Etymology
From.

Noun

 * 1) a hermaphrodite

title: hermafroditt


text:
half-pant

Etymology
.

Noun

 * 1)  Shorts.

title: half-pant


text:
írásmű

Noun

 * 1) writing a piece of writing

title: írásmű


text:
írásművek

Etymology
From the írásműv- stem of.

title: írásművek


text: IVTs

title: IVTs


text: Template:grc-decl-1st-ηνη-pax/documentation


text: Yasmeena

title: Yasmeena


text:
अन्ना लोग

Etymology
From +.

Noun

 * 1)  South Indians

title: अन्ना लोग


text: hermafroditter

title: hermafroditter


text:
babu English

Proper noun

 * 1)  A variety of Indian English characterized by excessive formality, politeness, ornamentation, and an indirect manner of communication.

title: babu English


text:
benami

Etymology
Borrowed from  /, defined in the  of 1988.

Noun

 * 1)  Property that is transacted under the name of a proxy to conceal the identity of the buyer.
 * 2)  A person owning such property.

title: benami


text: hermafrodittene

title: hermafrodittene


text:
bhadralok

Etymology
Borrowed from, from  +.

Noun

 * 1)  A class of rich high-caste (Brahmin) landlords in Bengal formed during the British Raj.

title: bhadralok


text: DMZs

title: DMZs


text: hermafrodittar

title: hermafrodittar


text: hermafrodittane

title: hermafrodittane


text:
Module:grc-decl/decl

local module_path = 'Module:grc-decl/decl'

local m_classes = mw.loadData(module_path .. '/classes') local m_paradigms = mw.loadData(module_path .. '/staticdata/paradigms') local m_dialect_groups = mw.loadData(module_path .. '/staticdata/dialects') local m_decl_data = require(module_path .. '/data') local m_accent = require('Module:grc-accent')

local usub = mw.ustring.sub local decompose = mw.ustring.toNFD local compose = mw.ustring.toNFC

-- Equivalent to mw.ustring.len. local function ulen(str) local _, length = string.gsub(str, '[\1-\127\194-\244][\128-\191]*', '') return length end

-- Basic string functions can be used when there are no character sets or -- quantifiers. local ufind = mw.ustring.find local ugsub = mw.ustring.gsub

local export = { inflections = m_decl_data.inflections, adjinflections = m_decl_data.adjinflections, adjinflections_con = m_decl_data.adjinflections_con, }

local function quote(text) return "“" .. text .. "”" end

local function get_accent_info(form) -- Get position of accent (nth vowel from beginning of word). local accent = {} local is_suffix = form:sub(1, 1) == '-' accent.position, accent.type = m_accent.detect_accent(form) -- Position: position of accent from beginning of word (number) or nil. -- Accent: accent name (string) or nil. -- Form must have an accent, unless it is a suffix. if not is_suffix and not next(accent) then error('No accent detected on ' .. quote(form) ..				'. Please add an accent by copying this template and placing ' ..				quote('/') .. ' for acute or ' .. quote('~') ..				' for circumflex after the vowel that should be accented: grc.') end -- Accent term as proxy for distinguishing between oxytone and perispomenon. accent.term = m_accent.get_accent_term(form) return accent, is_suffix end

local form_redirects = { AS = 'NS', VS = 'NS', DD = 'GD', AD = 'ND', VD = 'ND', AP = 'NP', VP = 'NP', }

local form_metatable = { __index = function (self, form_code) if type(form_code) ~= 'string' then return nil end if form_redirects[form_code] then return self[form_redirects[form_code]] elseif form_redirects[form_code:sub(2)] then return self[form_code:sub(1, 1) .. form_redirects[form_code:sub(2)]] -- If this is a neuter form but not in the nominative case, -- use the corresponding masculine form. elseif form_code:match('N[^N].') then return self['M' .. form_code:sub(2)] end end, }

local function add_redirects(form_table) return setmetatable(form_table, form_metatable) end

local function add_forms(args) if not args.irregular then --add stem to forms local function add_stem(forms) return forms:gsub('%$', args.stem) end -- args.suffix indicates that this is a paradigm for an unaccented suffix, -- such as -εια. if args.indeclinable then for k, v in pairs(args.ctable) do				if k:find('[NGDAV][SDP]') then -- only format case-number forms args.ctable[k] = args[2] end end elseif args.suffix and not next(args.accent) then for k, v in pairs(args.ctable) do				if k:find('[NGDAV][SDP]') then -- only format case-number forms args.ctable[k] = add_stem(v) end end else -- If the term is not a suffix and no accent was detected, then -- get_accent_info above must throw an error, -- or else there will be an uncaught error here. local add_circumflex = args.accent.type == 'circumflex' local recessive = -3 -- Force recessive accent in the Lesbian dialect. local accent_position = args.dial == 'les' and recessive or args.accent.position -- Circumflex on monosyllabic DS and AS in consonant-stem third- -- declension nouns: for example, Τρῷ and Τρῶ, DS and AS of Τρώς. local DS_AS = args.accent_alternating == true -- Added by "kles" function: for example, Περίκλεις. local VS = args.recessive_VS and recessive local synaeresis = args.synaeresis local add_accent = m_accent.add_accent local function add_accent_to_forms(forms, code) return ugsub(forms,					'[^/]+',					function(form)						return add_accent(form, code == 'VS' and VS or accent_position, {								synaeresis = synaeresis, circumflex = (code == 'DS' or code == 'AS') and DS_AS or add_circumflex, short_diphthong = true, force_antepenult = args.force_antepenult, })					end) end for k, v in pairs(args.ctable) do				if k:find('[NGDAV][SDP]') then -- only format case-number forms args.ctable[k] = add_accent_to_forms(add_stem(v), k)				end end end end end

local gender_codes = { 'M', 'F', 'N' } local case_codes = { 'N', 'G', 'D', 'A', 'V' } local number_codes = { 'S', 'D', 'P' } local function handle_noun_overrides(form_table, override_table) for _, case in ipairs(case_codes) do		for _, number in ipairs(number_codes) do local key = case .. number if override_table[key] then require('Module:debug').track('grc-decl/form-override') end form_table[key] = override_table[key] or form_table[key] end end end

local function handle_adjective_overrides(form_table, override_table) for _, gender in ipairs(gender_codes) do		for _, case in ipairs(case_codes) do			for _, number in ipairs(number_codes) do local key = gender .. case .. number if override_table[key] then require('Module:debug').track('grc-adecl/form-override') end form_table[key] = override_table[key] or form_table[key] end end end end

--[=[	Gets stem-ending combinations from Module:grc-decl/decl/data and Module:grc-decl/decl/staticdata. Called a single time to get forms of a noun, and two or three times by make_decl_adj for each of the genders of an adjective. ]=] function export.make_decl(args, decl, root, is_adjective) if not export.inflections[decl] then error('Inflection type ' .. quote(decl) .. ' not found in ' .. module_path .. "/data.") end if args.adjective and args.irregular then error('Irregular adjectives are not handled by make_decl.') end if not root then error('No root for ' .. args[1] .. '.') end args.stem = root export.inflections[decl](args) args.gender[1] = args.gender[1] or args.ctable['g'] args.declheader = args.declheader or args.ctable['decl'] add_forms(args) if not is_adjective then handle_noun_overrides(args.ctable, args) end add_redirects(args.ctable) end

-- String (comparative ending), function (input: root; output: comparative), -- false (the declension has no comparative form), or nil (use the if-statements -- to determine a comparative form). local decl_to_comp = { ['1&3-ᾰν'] = 'ᾰ́ντερος', ['1&3-εν'] = 'έντερος', ['1&3-εσσ'] = 'έστερος', -- hopefully this is general? ['1&3-ups'] = 'ῠ́τερος', ['3rd-cons'] = function(root) local last2 = usub(root, -2) if last2 == 'ον' then return root .. 'έστερος' elseif last2 == 'εσ' then return root:gsub('εσ$', 'έστερος') else return false end end, ['1&3-οτ'] = false, ['3rd-εσ'] = 'έστερος', ['3rd-εσ-open'] = 'έστερος', ['1&2-alp-con'] = 'εώτερος', -- I assume—though I can't find examples ['1&2-eta-con'] = 'εώτερος', }

local function retrieve_comp(root, decl_type) local data = decl_to_comp[decl_type] if not data then return data elseif type(data) == 'string' then return root .. data elseif type(data) == 'function' then return data(root) else error('Data for ' .. decl_type .. ' is invalid.') end end

-- Constructs an adverb, comparative, and superlative. function export.make_acs(args) -- input: -- strings local root, decl_type = args.root, args.decl_type -- tables local accent, atable = args.accent, args.atable -- output: local comp = retrieve_comp(root, decl_type) local super, adv if comp == nil then local alpha_nonultima = decl_type == '1&2-alp' and accent.term ~= 'oxytone' and accent.term ~= 'perispomenon' local last3 = usub(root, -3) if alpha_nonultima and last3 == 'τερ' then comp = '(' .. atable['MNS'] .. ')' adv = atable['NNS'] -- ?			-- comp = nil elseif alpha_nonultima and last3 == 'τᾰτ' then super = '(' .. atable['MNS'] .. ')' adv = atable['NNP'] -- ?			-- super = nil elseif decl_type:find('ντ') then comp = nil -- participles super = nil elseif (m_accent.get_weight(root, 1) == "light" or decl_type:find('att$')) then comp = root .. 'ώτερος' else comp = root .. 'ότερος' end end atable.adv = adv -- Actually neuter accusative singular. This is correct for -τερος and -- for μείζων; also for all comparatives in -ων? or args.comparative and atable.NNS -- actually neuter accusative plural or args.superlative and atable.NNP or atable.MGP and atable.MGP:gsub('ν$', 'ς'):gsub('ν<', 'ς<') atable.comp = comp atable.super = super or comp and comp:gsub('ερος$', 'ᾰτος') -- Remove comparative and superlative if adjective is a comparative or superlative. -- Parameters that trigger this condition are |deg=comp, |deg=super, and the -- deprecated |form=comp. if args.comparative or args.superlative then atable.comp, atable.super = nil, nil end for _, form in ipairs { 'adv', 'comp', 'super' } do		if args[form] == "-" then atable[form] = nil elseif args[form] then atable[form] = args[form] end end end

--	noun_table contains case-number forms.	adjective_table will contain gender-case-number forms.	override_table contains gender-case-number forms that will override the	forms in noun_table. local function transfer_forms_to_adjective_table(adjective_table, noun_table, gender_code) for case_and_number_code, form in pairs(noun_table) do adjective_table[gender_code .. case_and_number_code] = form end end

--[=[	Interprets the table for the adjective's inflection type in Module:grc-decl/decl/staticdata. ]=] function export.make_decl_adj(args, ct) if args.irregular then return export.inflections['irreg-adj'](args) end --		Two possibilities, with the indices of the table of endings		and the stem augmentation that they use:			- masculine–feminine (1, a1), neuter (2, a2)			- masculine (1, a1), feminine (2, a2), neuter (3, a1) -- Masculine or masculine and feminine forms. export.make_decl(args, ct[1], args.root .. (ct.a1 or ''), true) transfer_forms_to_adjective_table(args.atable, args.ctable, 'M') -- Feminine or neuter forms. if ct[2] then export.make_decl(args, ct[2], args.fstem or (args.root .. (ct.a2 or '')), true) transfer_forms_to_adjective_table(args.atable, args.ctable, 'F') end export.make_decl(args, ct[3], args.root .. (ct.a1 or ''), true) transfer_forms_to_adjective_table(args.atable, args.ctable, 'N') add_redirects(args.atable) args.ctable = nil export.make_acs(args) handle_adjective_overrides(args.atable, args) args.adeclheader = ct.adeclheader or 'Declension' end

-- This function requires NFC forms for Module:grc-decl/decl/classes, -- but NFD forms for Module:grc-decl/decl/data. function export.get_decl(args) if args.indeclinable then if not args[2] then error("Specify the indeclinable form in the 2nd parameter.") end args.decl_type, args.root = 'indecl', '' return elseif args.irregular then if args.gender[1] == "N" then args.decl_type, args.root = 'irregN', '' else args.decl_type, args.root = 'irreg', '' end return elseif not (args[1] and args[2]) then error("Use the 1st and 2nd parameters for the nominative and genitive singular.") end local infl_info = m_classes.infl_info.noun args[1] = compose(args[1]) args[2] = compose(args[2]) local arg1, arg2 = args[1], args[2] local nom_without_accent = compose(m_accent.strip_tone(arg1)) local gen_without_accent = compose(m_accent.strip_tone(arg2)) local decl_types_by_genitive_ending, decl_type, root local nominative_matches = {} for i = -infl_info.longest_nominative_ending, -1 do		local nominative_ending = usub(nom_without_accent, i)		local decl_types_by_genitive_ending = infl_info[nominative_ending] -- If decl_types_by_genitive_ending is a string, then it is the key of		-- another table in infl_info, a nominative ending with a macron or -- breve (ι → ῐ). if type(decl_types_by_genitive_ending) == "string" then decl_types_by_genitive_ending = infl_info[decl_types_by_genitive_ending] end if decl_types_by_genitive_ending then table.insert(nominative_matches, decl_types_by_genitive_ending) root = usub(nom_without_accent, 1, -1 - ulen(nominative_ending)) for i = -6, -1 do				local genitive_ending = usub(gen_without_accent, i)				local name = decl_types_by_genitive_ending[genitive_ending] if name then decl_type = name break end end if decl_type then break end end end args.accent, args.suffix = get_accent_info(arg1) if decl_type and root then if args.contracted == 'false' and not decl_type:find('open') then decl_type = decl_type .. '-open' end args.decl_type, args.root = decl_type, decompose(root) return elseif gen_without_accent:find('ος$') then local root = decompose(usub(gen_without_accent, 1, -3)) if args.gender[1] == "N" or ufind(root, 'α[̆̄]τ$') and not (args.gender[1] == "M" and args.gender[2] == "F") then args.decl_type, args.root = '3rd-N-cons', root else args.decl_type, args.root = '3rd-cons', root end return end if nominative_matches[1] then local m_table = require 'Module:table' local fun, grc = require 'Module:fun', require 'Module:languages'.getByCode 'grc' local make_sort_key = fun.memoize(			function (term)				return (grc:makeSortKey(term))			end) if nominative_matches[2] then local new_nominative_matches = {} for _, matches in ipairs(nominative_matches) do				for k, v in pairs(matches) do					new_nominative_matches[k] = v				end end nominative_matches = new_nominative_matches else nominative_matches = nominative_matches[1] end local gens = require 'Module:fun'.map(			function (gen)				return quote("-" .. gen)			end,			m_table.keysToList( nominative_matches, function (gen1, gen2) local sort_key1, sort_key2 = make_sort_key(gen1), make_sort_key(gen2) if sort_key1 == sort_key2 then return gen1 < gen2 else return sort_key1 < sort_key2 end end)) local agreement if #gens > 1 then agreement = { "Declensions were", "s ", " do" } else agreement = { "A declension was", " ", " does" } end gens = table.concat(gens, ", ") error(agreement[1] .. " found that matched the ending of the nominative form " .. quote(arg1) ..				", but the genitive ending" .. agreement[2] .. gens ..				agreement[3] .. " not match the genitive form " .. quote(arg2) .. ".") else for nom, gens in pairs(m_classes.ambig_forms) do if arg1:find(nom .. "$") then for gen, _ in pairs(gens) do if arg2:find(gen .. "$") then error("No declension found for nominative " .. quote(arg1) .. " and genitive " .. quote(arg2) ..								". There are two declensions with nominative " .. quote("-" .. nom) ..								" and genitive " .. quote("-" .. gen) ..								". To indicate which one you mean, mark the vowel length of the endings with a macron or breve.") end end end end error("Can’t find a declension type for nominative " .. quote(arg1) .. " and genitive " .. quote(arg2) .. ".") end end

-- This function requires NFC forms for Module:grc-decl/decl/classes, -- but NFD forms for Module:grc-decl/decl/data. function export.get_decl_adj(args) if args.irregular then args.decl_type, args.root = 'irreg', '' return elseif not args[1] then error('Use the 1st and 2nd parameters for the masculine and the ' ..			'feminine or neuter nominative singular, or the first parameter ' ..			' alone for the 3rd declension stem.') end args[1] = compose(args[1]) if args[2] then args[2] = compose(args[2]) end local arg1, arg2 = args[1], args[2] local mstrip = compose(m_accent.strip_tone(arg1)) local fstrip if arg2 then fstrip = compose(m_accent.strip_tone(arg2)) else args.accent, args.suffix = get_accent_info(arg1) args.decl_type, args.root = '3rd-cons', decompose(mstrip) return end local infl_info = m_classes.infl_info.adj -- See if last three or two characters of masc have an entry. local masc, decl for i = -infl_info.longest_masculine_ending, -2 do		local ending = usub(mstrip, i)		local data = infl_info[ending] if data then masc = ending decl = data break end end -- Allows redirecting, so that macrons or breves can be omitted for instance. if type(decl) == "string" then decl = infl_info[decl] end if decl then -- Look for a feminine ending that matches the end of the feminine form. local fem, name for feminine, decl_name in pairs(decl) do if fstrip:find(feminine .. '$') then fem = feminine name = decl_name:gsub("%d$", "") break end end if fem then args.accent, args.suffix = get_accent_info(arg1) -- The only indication that λέγων, λέγουσᾰ (stem λεγοντ-) and -- ποιῶν, ποιοῦσᾰ (stem ποιουντ-) have different stems is the -- accentuation of the masculine form. if name == '1&3-οντ' and args.accent.term == 'perispomenon' then name = '1&3-οντ-con' end if not export.adjinflections[name] then error('Inflection recognition failed. Function for generated inflection code ' ..						quote(name) .. ' not found in ' .. module_path .. "/data.") end args.decl_type, args.root = name, decompose(mstrip:gsub(masc .. "$", ""))			return else -- No declension type found. local fems = {} local is_neuter = false for fem in pairs(decl) do				if fem == "ον" then is_neuter = true end table.insert(fems, quote("-" .. fem)) end fems = table.concat(fems, ", ") local agreement = { "A declension was", " ", " does" } if #fems > 1 then agreement = { "Declensions were", "s ", " do" } end error(agreement[1] .. " found that matched the ending of the masculine " .. quote(arg1) ..					", but the corresponding feminine" .. (is_neuter and " and neuter" or "") .. " ending" .. agreement[2] .. fems ..					agreement[3] .. " not match the feminine " .. quote(arg2) .. ".") end end error("Can’t find a declension type for masculine " .. quote(arg1) .. " and feminine or neuter " .. quote(arg2) .. ".") end

--	Returns a table containing the inflected forms of the article,	to be placed before each inflected noun form. function export.infl_art(args) if args.dial == 'epi' or args.adjective or args.no_article then return {} end local art = {} local arttable if args.gender[1] then arttable = m_paradigms.art_att[args.gender[1]] else error('Gender not specified.') end for code, suffix in pairs(arttable) do		if (args.gender[1] == "M" and args.gender[2] == "F") and m_paradigms.art_att.M[code] ~= m_paradigms.art_att.F[code] then art[code] = m_paradigms.art_att.M[code] .. ', ' .. m_paradigms.art_att.F[code] else art[code] = suffix end end if args.gender[1] == 'F' then if m_dialect_groups['nonIA'][args.dial] then art['NS'] = 'ᾱ̔' -- 104.1-4 art['GS'] = 'τᾶς' art['DS'] = 'τᾷ' art['AS'] = 'τᾱ̀ν' end if args.dial == 'the' or args.dial == 'les' then art['DS'] = 'τᾶ' -- 39 elseif args.dial == 'boi' or args.dial == 'ara' or args.dial == 'ele' then art['DS'] = 'ται' -- 104.3 end if m_dialect_groups['nonIA'][args.dial] then art['GP'] = 'τᾶν' -- 104.6 end if args.dial == 'ato' then art['DP'] = 'τῆσῐ(ν)' -- 104.7 elseif args.dial == 'ion' then art['DP'] = 'τῇσῐ(ν)' -- 104.7 end if m_dialect_groups['buck78'][args.dial] then art['AP'] = 'τᾰ̀ς' -- 104.8 elseif args.dial == 'kre' or args.dial == 'arg' then art['AP'] = 'τὰνς' elseif args.dial == 'les' then art['AP'] = 'ταῖς' elseif args.dial == 'ele' then art['AP'] = 'ταὶρ' end if args.dial == 'kre' or args.dial == 'les' or args.dial == 'kyp' then art['NS'] = 'ᾱ̓' -- 57 art['NP'] = 'αἰ' elseif args.dial == 'ele' then art['NS'] = 'ᾱ̓' art['NP'] = 'ταὶ' elseif args.dial == 'boi' then art['NP'] = 'τὴ' -- 104.5 elseif m_dialect_groups['west'][args.dial] then --boeotian is covered above art['NP'] = 'ταὶ' end elseif args.gender[1] == 'M' or args.gender[1] == 'N' then if args.dial == 'the' then art['GS'] = 'τοῖ' -- 106.1 art['DS'] = 'τοῦ' -- 23 art['ND'] = 'τοὺ' art['GP'] = 'τοῦν' end if args.dial == 'les' then art['DS'] = 'τῶ' -- 106.2 elseif args.dial == 'boi' or args.dial == 'ara' or args.dial == 'ele' or args.dial == 'eub' then art['DS'] = 'τοι' -- 106.2 end if args.dial == 'ato' or args.dial == 'ion' then art['DP'] = 'τοῖσῐ(ν)' -- 106.4 end if args.gender[1] == 'M' then if m_dialect_groups['buck78'][args.dial] then art['AP'] = 'τὸς' -- 106.5 elseif args.dial == 'kre' or args.dial == 'arg' then art['AP'] = 'τὸνς' elseif args.dial == 'les' then art['AP'] = 'τοῖς' elseif args.dial == 'ele' then art['AP'] = 'τοὶρ' elseif m_dialect_groups['severe'][args.dial] or args.dial == 'boi' then art['AP'] = 'τὼς' end if args.dial == 'kre' or args.dial == 'les' or args.dial == 'kyp' then art['NS'] = 'ὀ' -- 57 art['NP'] = 'οἰ' elseif args.dial == 'ele' then art['NS'] = 'ὀ' art['NP'] = 'τοὶ' elseif m_dialect_groups['west'][args.dial] or args.dial == 'boi' then art['NP'] = 'τοὶ' end end if args.dial == 'ele' then art['GD'] = 'τοίοις' --		elseif args.dial == 'ara' then --			art['GD'] = 'τοιυν' end end return art end local lang = require("Module:languages").getByCode("grc") local function tag(text) return require("Module:script utilities").tag_text("-" .. text, lang) end

local function print_detection_table(detection_table, labels, noun) local out = require('Module:array') local function sort(item1, item2) -- Put 'longest_nominative_ending' and 'longest_masculine_ending' first. if item1:find '^longest' or item2:find '^longest' then return item1:find '^longest' ~= nil end local sort1, sort2 = (lang:makeSortKey(item1)), (lang:makeSortKey(item2)) local decomp_length1, decomp_length2 = ulen(decompose(item1)), ulen(decompose(item2)) if sort1 == sort2 then -- Sort ᾱ or ᾰ before α. if decomp_length1 > decomp_length2 then return true else return false end else return sort1 < sort2 end end for key1, value1 in require("Module:table").sortedPairs(detection_table, sort) do		if key1:find '^longest' then out:insert('* ' .. key1:gsub('_', ' ') .. ': ' .. value1 .. ' characters') else table.insert(out, "\n* " .. labels[1] .. " " .. tag(key1)) if type(value1) == "string" then out:insert(" → " .. tag(value1)) elseif type(value1) == "table" then for key2, value2 in require("Module:table").sortedPairs(value1, sort) do					-- mw.log(len(key1), len(key2)) out:insert("\n** " ..							(noun and labels[2] or key2 == "ον" and "neuter" or "feminine") ..							" " .. tag(key2) .. ": ") if noun then out:insert(" ") end end end end end return out:concat end

function export.show_noun_categories(frame) return print_detection_table(m_classes.infl_info.noun, { "nominative", "genitive" }, true) end

function export.show_adj_categories(frame) return print_detection_table(m_classes.infl_info.adj, { "masculine", "feminine or neuter" }) end

return export

title: Module:grc-decl/decl


text:
Chanakya

Etymology

From. was an Indian economist, philosopher, political scientist, and royal advisor of the 4th century He is traditionally identified as the person named Kauṭilya or Vishnugupta who authored the , a political treatise. He engineered the collapse of and put  into power, establishing the.

Noun

 * 1)  A shrewd politician or, in general, a cunning person; a Machiavelli.

Usage notes
Chanakya usually has a more positive connotation than.

Translations

 * Assamese: চাণক্য
 * Hindi:, ,
 * Malayalam: ,
 * Prakrit:
 * Maharastri Prakrit: 𑀘𑀸𑀡𑀓𑁆𑀓
 * Sauraseni Prakrit: 𑀘𑀸𑀡𑀓𑁆𑀓
 * Sanskrit:, ,

title: Chanakya


text:
Module:grc-decl/decl/data

local module_path = 'Module:grc-decl/decl'

local m_decl_static_data = mw.loadData(module_path .. '/classes') local m_paradigms = mw.loadData(module_path .. '/staticdata/paradigms') local m_dialect_groups = mw.loadData(module_path .. '/staticdata/dialects') local m_table = require('Module:table') local m_accent = require('Module:grc-accent') local m_links = require('Module:links') local m_str_utils = require("Module:string utilities") local check_type = require('libraryUtil').checkType local grc = require('Module:languages').getByCode('grc') local grk_pro = require('Module:languages').getByCode('grk-pro')

local codepoint = m_str_utils.codepoint local to_NFC = mw.ustring.toNFC local to_NFD = mw.ustring.toNFD local ufind = m_str_utils.find local umatch = m_str_utils.match local usub = m_str_utils.sub

local export = { inflections = {}, adjinflections = m_decl_static_data.adjinflections, adjinflections_con = m_decl_static_data.adjinflections_con, }

local function ine(var) if var == '' then return nil else return var end end

local function quote(text) return '“' .. text .. '”' end

local function mention(alt) return m_links.full_link({ alt = alt, lang = grc }, 'term') end

local function proto_mention(alt) return m_links.full_link({ alt = alt, lang = grk_pro }, 'term') end

local dental_lookup = { ['τ'] = '*-ts', ['δ'] = '*-ds', ['θ'] = '*-tʰs', }

-- Copy tables loaded with mw.loadData, removing metatables. local function deepcopy(orig) return m_table.deepcopy(orig, true) end

-- Return one of the three options, or an error message. -- suffix is true if args[1] does not contain an accent mark and begins in a hyphen. local function accent_switch(accent_term, if_oxytone, if_perispomenon, otherwise, error_message, unaccented_suffix) local value -- accent_term can be nil if this is a paradigm for an unaccented_suffix. check_type('accent_term', 1, accent_term, 'string', unaccented_suffix) if accent_term == 'oxytone' then value = if_oxytone elseif accent_term == 'perispomenon' then value = if_perispomenon else value = otherwise end return value or error_message and error(error_message) end

local function uncontracted_error(contracted, dialect, nom_ending) if contracted == false and (dialect == 'att' or dialect == 'koi' or dialect == 'byz') then --Special:WhatLinksHere/Wiktionary:Tracking/grc-decl/uncontracted error require('Module:debug').track('grc-decl/uncontracted error') mw.log('In the Attic, Koine, or Byzantine dialects, nouns in ' ..			quote(nom_ending) .. ' are contracted. Remove ' ..			quote('con') .. ' from the ' ..			quote('form') .. ' parameter or change the dialect.') end end

local function nonrecessive_error(accent_term, error_message) if accent_term == 'oxytone' or accent_term == 'perispomenon' then error(error_message) end end

local function some(t, func) for _, item in ipairs(t) do		if func(item) then return true end end return false end

local function dial_condition(actual_dialect, dialect1, dialect2) if not actual_dialect then return false end if type(dialect1) == "string" then return actual_dialect == dialect1 or			dialect2 and actual_dialect == dialect2 or			m_dialect_groups[dialect1] and m_dialect_groups[dialect1][actual_dialect] elseif type(dialect1) == "table" then return some(dialect1, function(dialect)				return dial_condition(actual_dialect, dialect)			end) end end

local function dial_form_multi(args, forms, dialects) local actual_dialect = args.dial if not actual_dialect then return end local ctable = args.ctable -- Forms is an array of tables containing individual forms in	-- the same dialect or dialects: -- { , } -- Dialects is a sequence of strings or tables: -- " "	--		or -- { " ", " ", ... }	if dialects then if dial_condition(actual_dialect, dialects) then for _, form in ipairs(forms) do				if type(form[2]) == 'string' then ctable[form[1]] = form[2] end end end -- Forms is a sequence of tables: -- { ,, } --		or -- { ,, { , , ... } }	elseif type(forms) == 'table' then for _, form_data in ipairs(forms) do			if dial_condition(actual_dialect, form_data[3]) and type(form_data[2]) == 'string' then ctable[form_data[1]] = form_data[2] end end end end

local function dial_form(args, f, suffix, dialect1, dialect2) if dial_condition(args.dial, dialect1, dialect2) then args.ctable[f] = suffix end end

-- Should Aeolic be moved here? local function dial_forms_first(args) dial_form_multi(args, {			{ 'GD', '$αι(ῐ)ν/$ῃῐν' },			{ 'GP', '$ᾱ́ων/$έ͜ων/$ῶν' },			{ 'DP', '$ῃσῐ(ν)/$ῃς/$αις' },		},		'epi') dial_form_multi(args, {		{ 'GP', '$έων/$ῶν', 'ion' },		{ 'DS', '$η', 'boi' }, -- 104.3		{ 'DS', '$αι', { 'ara', 'ele' } },		{ 'DS', '$ᾱ', { 'the', 'les' } },		{ 'GD', '$αίαιρ', 'ele' },		{ 'GP', '$έων/$ῶν', 'ion' }, -- 104.6		{ 'GP', '$ᾶν', 'nonIA' },		{ 'GP', '$ᾱ́ων', 'boi' },		{ 'DP', '$ῃσῐ(ν)', 'ion' }, -- 104.7, ato must be dealt with separately		{ 'DP', '$αισῐ(ν)', 'les' },		{ 'DP', '$ᾱσῐ(ν)', 'ato' },		{ 'DP', '$ῃσῐ(ν)', 'ion' },		{ 'AP', '$ᾰς', 'buck78' }, -- 104.8		{ 'AP', '$ᾰνς', { 'kre', 'arg' } },		{ 'AP', '$αις', 'les' },		{ 'AP', '$αιρ', 'ele' }, }) end

local function dial_forms_first_oxy(args) dial_form_multi(args, {			{ 'DP', '$ῇσῐ(ν)/$ῇς/$αῖς' },			{ 'GD', '$αῖ(ῐ)ν/$ῇῐν' },			{ 'GP', '$ᾱ́ων/$έ͜ων/$ῶν' },		},		'epi') dial_form_multi(args, {		{ 'DS', '$η', 'boi' }, -- 104.3		{ 'DS', '$αι', { 'ara', 'ele' } },		{ 'DS', '$ᾱ', { 'the', 'les' } },

{ 'GP', '$έων/$ῶν', 'ion' }, -- 104.6 { 'GP', '$ᾶν', 'nonIA' }, { 'GP', '$ᾱ́ων', 'boi' },

{ 'DP', '$ῃσῐ(ν)', 'ion' }, -- 104.7, ato must be dealt with separately { 'DP', '$αισῐ(ν)', 'les' }, { 'DP', '$ᾶσῐ(ν)', 'ato' },

{ 'AP', '$ᾰς', 'buck78' }, -- 104.8 { 'AP', '$ᾰνς', { 'kre', 'arg' } }, { 'AP', '$αις', 'les' }, { 'AP', '$αιρ', 'ele' },

{ 'GD', '$αίαιρ', 'ele' }, }) end

export.inflections['1st-alp'] = function(args) local suffix = accent_switch(args.accent.term, '', '_con', '_pax', nil, args.suffix) args.ctable = deepcopy(m_paradigms['alp' .. suffix]) if args.accent.term == 'oxytone' then dial_forms_first_oxy(args) else if args.adjective then args.ctable['GP'] = '$ων' end if args.accent.term ~= 'perispomenon' then dial_forms_first(args) end end end

--[=[	Only difference from "1st-alp-pax" and "1st-eta-pax" is that because of the "-prx", Module:grc-decl/decl doesn't shift the accent to the end of the stem in all forms. Used only in 1st-and-2nd-declension adjectives. ]=] -- export.inflections['1st-alp-prx'] = export.inflections['1st-alp-pax']

-- export.inflections['1st-eta-prx'] = export.inflections['1st-eta-pax']

export.inflections['1st-eta'] = function(args) local suffix = accent_switch(args.accent.term, '', '_con', '_pax', nil, args.suffix) args.ctable = deepcopy(m_paradigms['eta' .. suffix]) if args.accent.term == 'oxytone' then dial_form(args, 'DP', '$ῆσῐ(ν)', 'ato') -- Assuming this applies for perispomenon as well as oxytone. dial_forms_first_oxy(args) elseif args.accent.term ~= 'perispomenon' then if args.adjective then args.ctable['GP'] = '$ων' end dial_form(args, 'DP', '$ησῐ(ν)', 'ato') dial_forms_first(args) end end

-- Always recessive, except in adjectives or derivatives of them. local function short_alpha(code) return function(args) if code == 'als' then -- Ionic and Epic have eta, not alpha, in all forms except the -- nominative and accusative singular. if args.dial == 'ion' or args.dial == 'epi' then mw.logObject(args, 'args') short_alpha('ets')(args) return end elseif code ~= 'ets' then error('Invalid code ' .. tostring(code)) end local accent_on_ultima = args.adjective and '_prx' or nil local suffix = accent_switch(args.accent.term,			accent_on_ultima, accent_on_ultima, '_prx',			'First-declension feminine nouns with nominative singular in ' ..				'short alpha must have recessive accent.', args.suffix) args.ctable = deepcopy(m_paradigms[code .. suffix]) dial_forms_first(args) if code == 'als' then dial_form(args, 'DP', '$ᾱσῐ(ν)', 'ato') else dial_form(args, 'DP', '$ησῐ(ν)', 'ato') end end end

export.inflections['1st-als'] = short_alpha('als')

export.inflections['1st-ets'] = short_alpha('ets')

export.inflections['1st-M-alp'] = function(args) local suffix = accent_switch(args.accent.term, nil, '_con', '_pax',		'Oxytone masculine first declension not supported.', args.suffix) args.ctable = deepcopy(m_paradigms['M_alp' .. suffix]) if args.accent.term ~= 'perispomenon' then dial_forms_first(args) dial_form_multi(args, {			{ 'GS', '$ᾱο/$ε͜ω/$ω', 'epi' },			{ 'GS', '$εω/$ω', 'ion' },			{ 'GS', '$ᾱ', 'nonIA' },			{ 'GS', '$ᾱο', 'boi' },			{ 'GS', '$ᾱυ', 'ark' }, }) end end

export.inflections['1st-M-eta'] = function(args) local suffix = accent_switch(args.accent.term, '', '_con', '_pax', nil, args.suffix) args.ctable = deepcopy(m_paradigms['M_eta' .. suffix]) -- ἰδιώτης, genitive singular ἰδιώτεω, not *ἰδιωτέω, -- at least in Herodotus 1.123. if args.dial == 'ion' or args.dial == 'epi' then args.synaeresis = true end if args.accent.term == 'oxytone' then dial_forms_first_oxy(args) dial_form_multi(args, {			{ 'GS', '$ᾶο/$έ͜ω/$ῶ', 'epi' },			{ 'GS', '$έω/$ῶ', 'ion' },			{ 'GS', '$ᾶ', 'nonIA' },			{ 'GS', '$ᾶο', 'boi' },			{ 'GS', '$ᾶυ', 'ark' }, }) elseif args.accent.term ~= 'perispomenon' then dial_forms_first(args) dial_form_multi(args, {			{ 'GS', '$ᾱο/$ε͜ω/$ω', 'epi' },			{ 'GS', '$εω/$ω', 'ion' },			{ 'GS', '$ᾱ', 'nonIA' },			{ 'GS', '$ᾱο', 'boi' },			{ 'GS', '$ᾱυ', 'ark' }, }) end if args['voc'] == 'α' or usub(args.stem, -1) == 'τ' then args.ctable['VS'] = '$ᾰ' end end

local function dial_forms_second(args) dial_form_multi(args, {			{ 'GS', '$ου/$οῖο/$οιο/$όο/$οο' },			{ 'GD', '$οιῐν' },			{ 'DP', '$οισῐ(ν)/$οις' },		},		'epi') dial_form_multi(args, {		{ 'GS', '$οιο', 'dor' },		{ 'GS', '$οι', 'the' }, -- 106.1		{ 'GS', '$ω', 'severe', 'boi' },		{ 'GS', '$ων', 'kyp' },		{ 'DS', '$ω', 'les' }, -- 106.2		{ 'DS', '$ου', 'the' },		{ 'DS', '$οι', { 'ele', 'boi' } },		{ 'DS', '$οι', { 'ara', 'eub' } },		{ 'DP', '$οισῐ(ν)/$οις', { 'ato', 'ion' } }, -- 106.4		{ 'DP', '$οισῐ(ν)', 'les' },		{ 'AP', '$ως', 'severe' }, -- 106.5		{ 'AP', '$ος', 'buck78' },		{ 'AP', '$ονς', { 'kre', 'arg' } },		{ 'AP', '$οις', 'les' },		{ 'AP', '$οιρ', 'ele' },		{ 'GD', '$οίοιρ', 'ele' }, -- 106.6		{ 'ND', '$ου', 'the' }, -- 23		{ 'GP', '$ουν', 'the' }, }) end

local function dial_forms_second_oxy(args) dial_form_multi(args, {			{ 'GS', '$οῦ/$οῖο/$όο' },			{ 'GD', '$οῖῐν' },			{ 'DP', '$οῖσῐ(ν)/$οῖς' },		},		'epi') dial_form_multi(args, {		{ 'GS', '$οῖο', 'dor' },		{ 'GS', '$οῖ', 'the' }, -- 106.1		{ 'GS', '$ῶ', 'severe', 'boi' },		{ 'GS', '$ῶν', 'kyp' },		{ 'DS', '$ω', 'les' }, -- 106.2		{ 'DS', '$οῦ', 'the' },		{ 'DS', '$οῖ', { 'ele', 'boi' } },		{ 'DS', '$οῖ', { 'ara', 'eub' } },		{ 'DP', '$οῖσῐ(ν)/$οῖς', { 'ato', 'ion' } }, -- 106.4		{ 'DP', '$οισῐ(ν)', 'les' },		{ 'AP', '$ώς', 'severe' }, -- 106.5		{ 'AP', '$ός', 'buck78' },		{ 'AP', '$όνς', { 'kre', 'arg' } },		{ 'AP', '$οίς', 'les' },		{ 'AP', '$οίρ', 'ele' },		{ 'GD', '$οίοιρ', 'ele' }, -- 106.6		{ 'ND', '$ού', 'the' }, -- 23		{ 'GP', '$οῦν', 'the' }, }) end

-- For nouns like λόγος and ἔργον. local function second_basic(gender) return function(args) local suffix = accent_switch(args.accent.term, '', nil, '_prx',			'Perispomenon basic second-declension nouns not supported.', args.suffix) args.ctable = deepcopy(m_paradigms['second' .. (gender or '') .. suffix]) if args.accent.term == 'oxytone' then dial_forms_second_oxy(args) else dial_forms_second(args) end end end

export.inflections['2nd'] = second_basic

export.inflections['2nd-N'] = second_basic('_N')

local function second_contracted(gender) return function(args) local suffix = accent_switch(args.accent.term, nil, '', '_pax',			'Oxytone contracted second-declension nouns are not supported.', args.suffix) if gender == '_N' and suffix == '_pax' then error('Paroxytone contracted neuter second-declension nouns are not supported') end args.ctable = deepcopy(m_paradigms['second' .. (gender or '') .. '_con' .. suffix]) end end

export.inflections['2nd-con'] = second_contracted

export.inflections['2nd-N-con'] = second_contracted('_N', true)

local function second_Attic(gender) return function(args) local suffix = accent_switch(args.accent.term, '', '_con', '_prx', nil, args.suffix) if gender == '_N' and suffix == '_con' then error('Perispomenon Attic declension neuter nouns are not supported.') end args.force_antepenult = true args.ctable = deepcopy(m_paradigms['second' .. (gender or '') .. '_att' .. suffix]) end end

export.inflections['2nd-att'] = second_Attic

export.inflections['2nd-N-att'] = second_Attic('_N')

--	In order:		- vowel before ντ at end of stem, or declension category		- masculine nominative singular ending		- neuter nominative singular ending		- segment preceding ῐ in dative plural local nt = { ['ο'] = { 'ων', 'ον', 'ουσ' },			-- ἔχων (ἔχω) ['1&3-ουντ'] = { 'ους', 'ον', 'ουσ' },	-- δούς (δίδωμι) ['ου'] = { 'ων', 'ουν', 'ουσ' },		-- ποιῶν (ποιέω), δηλῶν (δηλόω) ['ε'] = { 'εις', 'εν', 'εισ' },			-- θείς (τίθημι), ἀχθείς (ἄγω) ['ω'] = { 'ων', 'ων', 'ωσ' },			-- ζῶν (ζάω) }

-- Get nominative singular and dative plural (minus ῐ(ν)) for ντ-stems. local function handle_nt(base, decl_type, gender, is_neuter, is_neuter_noun, is_adjective, arg1, arg2) local NS, DP	local m_data = mw.loadData('Module:grc-utilities/data') base = to_NFD(base) -- Here we must match α, ε, ο, υ, ω, or ου (with any number of	-- diacritics) followed by ντ. local whole_match, vowel, diacritic = umatch(base,		'((ου)(' .. m_data.combining_diacritic .. '*)ντ)$') if not whole_match then whole_match, vowel, diacritic = umatch(base,			'(([αεουω])(' .. m_data.combining_diacritic .. '*)ντ)$') end if not whole_match then error('Something is wrong with the stem ' .. base .. '.') end local nom_base = base:gsub(whole_match, '') -- Declension type has priority over vowel because δούς (δοντ-) and -- λαβών (λαβόντ-) have the same stem vowel, but different masculine -- nominative singulars. local data = nt[decl_type] or nt[vowel] if data then if is_adjective then NS = nom_base .. (is_neuter and data[2] or data[1]) end DP = nom_base .. data[3] else local macron, breve = m_data.diacritics.macron, m_data.diacritics.breve if diacritic == macron or diacritic == breve or diacritic == '' then if vowel then local intermediate_base = nom_base .. vowel DP = intermediate_base .. macron .. 'σ' if is_adjective then if is_neuter then NS = intermediate_base .. breve .. 'ν' else NS = intermediate_base .. macron .. 'ς' end end else error('Failed to generate nominative singular and dative plural for ' ..					quote(arg1) .. ', ' .. quote(arg2) .. '.') end else error('Invalid diacritic ' ..				(type(diacritic) == 'string' and string.format("U+%X", codepoint(diacritic)) or tostring(diacritic)) ..				') in the stem ' .. base .. '.')		end	end	if not adjective and not gender[1] then		gender[1] = 'M'		gender.M = true	end	return NS, DP end local finals = {	['β'] = 'ψ',	['γ'] = 'ξ',	['κ'] = 'ξ',	['κτ'] = 'ξ',	['π'] = 'ψ',	['φ'] = 'ψ',	['χ'] = 'ξ',	--	['τ'] = ,	['δ'] = ,	['θ'] = ,	-- }

local function new_gender(gender) return { gender, [gender] = true } end

-- is_neuter: boolean -- accent_alternating: boolean local function third_nom(args, is_neuter, accent_alternating) -- strings local arg1, arg2, base = args[1], args[2], to_NFC(args.stem) local ctable = args.ctable -- output local NS, DS, AS, DP = ctable.NS, ctable.DS, ctable.AS, ctable.DP	-- boolean local adjective = args.adjective -- tables local gender, notes = args.gender, args.notes --	local notes = {		labial = 'Nominative singular ' ..			mention('-ψ') ..			(('φβ'):find(last1) and ' is a neutralization of ' or ' is a respelling of ') ..			mention(last1) ..			' + the nominative singular suffix ' ..			mention('-ς') .. '.',		velar_dental = 'Nominative singular ' ..			mention('-ξ') ..			' is a neutralization of ' ..			mention(last2) ..			' + the nominative singular suffix ' ..			mention('-ς') .. '.',		'Nominative singular ' ..			mention('-ξ') ..			(umatch('χγ', last1) and ' is a neutralization of ' or ' is a respelling of ') ..			mention(last1) ..			' + the nominative singular suffix ' ..			mention('-ς') .. '.'	}	-- local identifying_ending local chars, char2 = umatch(base, '(.(.))$') -- '[πβφκγχρνσω]$', '[κν]τ$', '[τδθ]' if chars == 'ντ' or chars == 'κτ' then identifying_ending = chars else identifying_ending = char2 end local NS_ending = finals[identifying_ending] if NS_ending then NS = base:gsub(identifying_ending .. "$", NS_ending) DP = NS	end if not (NS or DP) then local decl_type = args.decl_type local last1, last2 = usub(base, -1), usub(base, -2) local nom_base = usub(base, 1, -2) local is_neuter_noun = is_neuter and not adjective if identifying_ending == 'ντ' then -- May also add gender. NS, DP = handle_nt(base, decl_type, gender, is_neuter,				is_neuter_noun, adjective, arg1, arg2) elseif ('τδθ'):find(identifying_ending) then DP = nom_base .. 'σ' if not adjective then if usub(base, -3) == 'τητ' or ('δθ'):find(last1) then if not gender[1] then gender = new_gender('F') end elseif last2 == 'ητ' or last2 == 'ωτ' then if not gender[1] then gender = new_gender('M') end elseif last2 == 'ᾰτ' or last2 == 'ᾱτ' then if not gender[1] then gender = new_gender('N') end end end if is_neuter then if last2 == 'οτ' then NS = nom_base .. 'ς' else NS = nom_base end else if last2 == 'οτ' then NS = base:gsub('οτ', 'ως') else NS = nom_base .. 'ς' end end if arg1:find('ς$') then table.insert(notes,					'Nominative singular ' ..							mention('-ς') ..							' arose by reduction of the original cluster ' ..							proto_mention(dental_lookup[last1]) .. '.') end elseif ('ρν'):find(identifying_ending) then local vowel = usub(base, -2, -2) if last1 == 'ρ' then DP = base .. 'σ' else DP = nom_base .. 'σ' end if is_neuter then NS = base elseif vowel == 'ε' then NS = usub(base, 1, -3) .. 'η' .. last1 elseif vowel == 'ο' then NS = usub(base, 1, -3) .. 'ω' .. last1 elseif vowel == 'ῑ' then --ῥίς etc. NS = nom_base .. 'ς' elseif (vowel == 'ᾰ' and gender[1] ~= 'N') then NS = usub(base, 1, -3) .. 'ᾱς' else NS = base end local last3 = usub(base, -3) if last3 == 'γον' or last3 == 'δον' then gender[1] = gender[1] or 'F'			elseif ufind(last2, '[ᾰᾱα]ρ') then gender[1] = gender[1] or 'N'			else gender[1] = gender[1] or 'M'			end elseif identifying_ending == 'σ' then DP = base if is_neuter_noun then NS = nom_base .. 'ς' else NS = usub(base, 1, -3) .. 'ης' end DS = '$ῐ̈' elseif identifying_ending == 'ω' then -- m_paradigms.lp_prx.NS is nil. Is the condition correct? if NS == m_paradigms.lp_prx.NS then DS = nom_base .. 'ῳ/$ῐ̈' AS = '$/$ᾰ' else DS = '$ῐ̈́' AS = '$/$ᾰ́' end DP = nom_base .. 'ωσ' NS = nom_base .. 'ως' gender[1] = gender[1] or 'M'		else error('Stem does not end in a consonant: ' .. base) end end -- This overrides any assignment done above. Better to improve the code -- above or prevent it from assigning NS. if not adjective then NS = arg1 end if DP then if accent_alternating then DP = DP .. 'ῐ́(ν)' else DP = DP .. 'ῐ(ν)' end end ctable.DS, ctable.AS = DS, AS	ctable.NS, ctable.DP = NS, DP	args.gender = gender end

local function dial_forms_third(args) if not args.ctable.DP then require('Module:debug').track('grc-decl/no dative plural') mw.log("no DP: " .. args[1] .. ", " .. args[2]) end dial_form_multi(args, {			{ 'DP', args.ctable['DP'] and args.ctable['DP'] .. '/$εσσῐ(ν)/$εσῐ(ν)' or '$εσσῐ(ν)/$εσῐ(ν)' },			{ 'GD', '$οιῐν' },		},		'epi') dial_form_multi(args, {		{ 'DP', '$εσσῐ(ν)', 'dor' },		{ 'AS', '$ᾰν', 'kyp' },		{ 'DP', '$εσσῐ(ν)', { 'les', 'the' } },		{ 'DP', '$εσσῐ(ν)', 'boi' },		{ 'DP', '$οις', { 'lok', 'ele' } },		{ 'AP', '$ες', { 'ark', 'ele' } },		{ 'AP', '$ᾰς/$ᾰνς', 'kre' }, }) end

local function dial_forms_third_oxy(args) dial_form_multi(args, {			{ 'GD', '$οῖῐν' },			{ 'DP', args.ctable['DP'] and args.ctable['DP'] .. '/$εσσῐ(ν)/$εσῐ(ν)' or '$εσσῐ(ν)/$εσῐ(ν)' },		},		'epi') dial_form_multi(args, {		{ 'DP', '$εσσῐ(ν)', 'dor' },		{ 'AS', '$ᾰν', 'kyp' },		{ 'DP', '$εσσῐ(ν)', { 'les', 'the' } },		{ 'DP', '$εσσῐ(ν)', 'boi' },		{ 'DP', '$οῖς', { 'lok', 'ele' } },		{ 'AP', '$ες', { 'ark', 'ele' } },		{ 'AP', '$ᾰς/$ᾰνς', 'kre' }, }) end

-- For instance, μείζων. local function third_comparative(args, neuter) local short_stem, count = args.stem:gsub('ον$', '') if count ~= 1 then error('Stem failure.') end if neuter then dial_form(args, 'NP', '$ᾰ/' .. short_stem .. 'ω', 'att') else dial_form_multi(args, {				{ 'AS', '$ᾰ/' .. short_stem .. 'ω'},				{ 'NP', '$ες/' .. short_stem .. 'ους' },				{ 'AP', '$ᾰς/' .. short_stem .. 'ους' },			}, 'att') end end

-- These nouns are monosyllabic, but unlike most they do not accent the ending -- of the genitive–dative dual and genitive plural: παίδων, not *παιδῶν. local monosyllabic_exceptions = { ['παῖς'] = true, ['δμώς'] = true, ['θώς'] = true, ['Τρώς'] = true, ['δᾴς'] = true, ['φῶς'] = true, ['οὖς'] = true, } -- Other exceptions: contracted forms like ἔαρος > ἦρος (not *ἠρός). -- The source for this is Smyth § 252. local function third(neuter) return function (args) if args.decl_type:find('ντ$') and m_accent.syllables(args[1], 'eq', 1) then -- Special:WhatLinksHere/Wiktionary:Tracking/grc-decl/monosyllabic nt require('Module:debug').track('grc-decl/monosyllabic nt') end -- This tracks monosyllabic nouns or adjectives that have alternating accent -- position. Masculine and neuter participles (with stems in -ντ) and -- suffixes do not. local accent_alternating = not (args.suffix or args.stem:find('ντ$')) and m_accent.syllables(args[1], 'eq', 1) args.accent_alternating = accent_alternating local accent_on_ultima = accent_alternating and '' or '_prx' local suffix = accent_switch(args.accent.term, accent_on_ultima, accent_on_ultima, '_prx', nil, args.suffix) args.ctable = deepcopy(m_paradigms[(neuter and 'N_' or '') .. 'lp' .. suffix]) if not (args.NS and args.DP) then third_nom(args, neuter, accent_alternating) end if args.comparative then third_comparative(args, neuter) end if not neuter then local last_two = usub(args.stem, -2) if last_two == 'ῐδ' or last_two == 'ῐτ' or last_two == 'ῑθ' then if args.accent.term ~= 'oxytone' then dial_form(args, 'AS', args.ctable['AS'], 'epi', 'ion') -- i.e. -χάριν; also poetic args.ctable['AS'] = args['AS'] or usub(args.stem, 1, -2) .. 'ν' end args.ctable['VS'] = args['VS'] or usub(args.stem, 1, -2) elseif last_two == 'ντ' and (args.decl_type == '1&3-εσσ' or not args.adjective) then args.ctable['VS'] = args['VS'] or usub(args.stem, 1, -2) elseif args.accent.term ~= 'oxytone' and args.accent.term ~= 'perispomenon' and ufind(args.stem, '[ρν]$') then args.ctable['VS'] = args['VS'] or args.stem -- What's an example of this? elseif usub(args.stem, -1) == 'ε' then args.ctable['VS'] = args['VS'] or args.stem .. 'ς' end if args.accent.term == 'perispomenon' then args.ctable['NS'] = args[1] end end if accent_alternating then dial_forms_third_oxy(args) if monosyllabic_exceptions[to_NFC(args[1])] then -- Remove accent marks: that is, make the form be accented on the -- stem. args.ctable.GD = m_accent.strip_tone(args.ctable.GD) args.ctable.GP = m_accent.strip_tone(args.ctable.GP) end else dial_forms_third(args) end end end

export.inflections['3rd-cons'] = third(false) export.inflections['3rd-N-cons'] = third(true)

local function dial_forms_es(args, neuter) dial_form_multi(args, {		{ 'GS', '$εος', { 'nonIA' } },		{ 'GS', '$ιος', 'buck9' },		{ 'GS', '$εος/$ευς', { 'ion', 'epi' } },		{ 'DS', '$ει/$εῐ̈', { 'epi', 'ion' } },		{ 'ND', '$ει/$εε', { 'ion', 'epi' } },		{ 'GD', '$έοιν', { 'nonIA', 'ion' } },		{ 'GD', '$ίοιν', 'buck9' },		{ 'NP', neuter and '$εᾰ' or '$εις/$εες', { 'ion', 'epi' } },		{ 'GP', '$έων', { 'nonIA', 'ion', 'epi' } },		{ 'GP', '$ίων', 'buck9' }, }) if not neuter then dial_form_multi(args, {			{ 'AS', '$εᾰ', { 'nonIA', 'ion', 'epi' } },			{ 'AP', '$εᾰς', { 'nonIA', 'ion', 'epi' } },			{ 'AP', '$ιᾰς', 'buck9' }, }) end end

local function dial_forms_es_oxy(args, neuter) dial_form_multi(args, {		{ 'GS', '$έος', 'nonIA' },		{ 'GS', '$ίος', 'buck9' },		{ 'GS', '$έος/$εῦς', { 'ion', 'epi' } },		{ 'DS', '$εῖ/$έῐ̈', { 'epi', 'ion' } },		{ 'ND', '$εῖ/$έε', { 'ion', 'epi' } },		{ 'GD', '$έοιν', { 'nonIA', 'ion' } },		{ 'GD', '$ίοιν', 'buck9' },		{ 'NP', neuter and '$έᾰ' or '$εῖς/$έες', { 'ion', 'epi' } },		{ 'GP', '$έων', { 'nonIA', 'ion', 'epi' } },		{ 'GP', '$ίων', 'buck9' }, }) if not neuter then dial_form_multi(args, {			{ 'AS', '$έᾰ', { 'nonIA', 'ion', 'epi' } },			{ 'AS', '$ίᾰ', 'buck9' },			{ 'AP', '$έᾰς', { 'nonIA', 'ion', 'epi' } },			{ 'AP', '$ίᾰς', 'buck9' }, }) end end

-- Adjectives with these endings have persistent accent (Smyth 292c): -- εὐώδης, εὐῶδες. local persistent_es = { ['ώδης'] = true, ['ώλης'] = true, ['ώρης'] = true, ['ήρης'] = true, }

-- How to deal with τριήρων, not *τριηρῶν (Smyth 264)? local function es_adj(gender_code, open) return function(args) uncontracted_error(args.contracted or not open, args.dial, '-ης') local suffix = accent_switch(args.accent.term, '', nil, '_prx',			'Perispomenon third-declension forms in -ης not supported.', args.suffix) args.ctable = deepcopy(m_paradigms[(gender_code or ) .. 'es_adj' ..			suffix .. (open and '_open' or )]) -- Most adjectives of this type have recessive accent. Set accent to -- antepenult. if not args.suffix and not persistent_es[to_NFC(usub(args[1], -4))] then args.accent.position = -3 end if args.accent.term == 'oxytone' then dial_forms_es_oxy(args, gender_code == 'N_') else dial_forms_es(args, gender_code == 'N_') end if gender_code ~= 'N_' then dial_form(args, 'NS', '$εῖς', 'boi', 'the') end end end

export.inflections['3rd-εσ'] = es_adj

export.inflections['3rd-N-εσ'] = es_adj('N_')

export.inflections['3rd-εσ-open'] = es_adj(nil, true)

export.inflections['3rd-N-εσ-open'] = es_adj('N_', true)

local function neuter_os(open) return function(args) nonrecessive_error(args.accent.term,			'Third-declension neuter nouns in -ος must be accented recessively') uncontracted_error(args.contracted or not open, args.dial, '-ος') args.ctable = deepcopy(m_paradigms['N_es_prx' .. (open and '_open' or '')]) dial_forms_es(args, true) end end

export.inflections['3rd-N-ος'] = neuter_os

export.inflections['3rd-N-ος-open'] = neuter_os(true)

local function neuter_as(open) return function(args) nonrecessive_error(args.accent.term,			'Third-declension neuter nouns in -ας must be accented recessively') uncontracted_error(args.contracted or not open, args.dial, '-ᾰς') args.ctable = deepcopy(m_paradigms['N_as_prx' .. (open and '_open' or '')]) end end

export.inflections['3rd-N-ᾰσ'] = neuter_as

export.inflections['3rd-N-ᾰσ-open'] = neuter_as(true)

local function kles(open) return function(args) local dialect = args.dial uncontracted_error(args.contracted or not open, dialect, '-κλης') if dialect == 'ion' or dialect == 'epi' then open = true end args.ctable = deepcopy(m_paradigms['kles' .. (open and '_open' or '')]) args.number = { 'S', S = true } args.recessive_VS = true if open then dial_form_multi(args, {					{ 'GS', '$κλῆος/$κλέος' },					{ 'DS', '$κλῆῐ̈/$κλέῐ̈' },					{ 'AS', '$κλῆᾰ/$κλέᾱ' },				},				{ 'epi', 'ion' }) else dial_form_multi(args, {				{ 'GS', '$κλέος', 'nonIA' },				{ 'GS', '$κλεῖος', 'boi' }, }) end end end export.inflections['3rd-κλῆς'] = kles

export.inflections['3rd-κλῆς-open'] = kles(true)

-- Needs dialectal forms. local function weak_i(gender_code) return function(args) nonrecessive_error(args.accent.term,			'Third-declension nouns with stem in short ῐ must be accented recessively.') args.ctable = deepcopy(m_paradigms[(gender_code or '') .. 'weak_i_prx']) args.synaeresis = true -- Or Ionic or both? dial_form_multi(args, {				{ 'DS', '$ει/$εῐ̈' },				{ 'ND', '$ει/$εε' },				{ 'NP', '$εις/$εες' },			},			'epi') end end

export.inflections['3rd-weak-ι'] = weak_i

export.inflections['3rd-N-weak-ι'] = weak_i('N_')

local function dial_forms_weak_u(args, neuter) dial_form_multi(args, {		{ 'GS', '$έος', { 'epi', 'ion' } },		{ 'GD', '$έοιῐν', 'epi' },		{ 'DP', '$έεσσῐ(ν)/$έεσῐ(ν)/$εσῐ(ν)', 'epi' },		{ 'DP', '$έεσσῐ(ν)', 'dor' }}) if args.adjective then args.ctable['GS'] = '$έος' args.ctable['ND'] = '$έε' end if not neuter then dial_form_multi(args, {			{ 'NP', '$έες', 'epi' }, -- What about nonIA and ion?			{ 'AP', '$έᾰς', { 'nonIA', 'ion', 'epi' } }, }) end end

local function dial_forms_weak_u_prx(args, neuter) dial_form_multi(args, {		{ 'GS', '$εος', { 'epi', 'ion' } },		{ 'GD', '$έοιῐν', 'epi' },		{ 'DP', '$έεσσῐ(ν)/$έεσῐ(ν)/$εσῐ(ν)', 'epi' },		{ 'DP', '$έεσσῐ(ν)', 'dor' }, }) if args.adjective then args.ctable['GS'] = '$εος' args.ctable['ND'] = '$εε' args.ctable['GP'] = '$έων' end if not neuter then dial_form_multi(args, {			{ 'NP', '$εες' },			{ 'AP', '$εᾰς' },		}, 'epi') end end

local function weak_u (gender) return function(args) local suffix = accent_switch(args.accent.term, '', nil, '_prx', nil, args.suffix) args.ctable = deepcopy(m_paradigms[(gender or '') .. 'weak_u' .. suffix]) if not args.adjective then args.synaeresis = true end local neuter = gender == 'N_' if args.accent.term == 'oxytone' then dial_forms_weak_u(args, neuter) else dial_forms_weak_u_prx(args, neuter) end end end

export.inflections['3rd-weak-υ'] = weak_u

export.inflections['3rd-N-weak-υ'] = weak_u('N_')

export.inflections['3rd-pure-ι'] = function(args) nonrecessive_error("Nouns in -ῐς cannot be accented on the ultima") args.ctable = deepcopy(m_paradigms.pure_i_prx) dial_form_multi(args, {			{ 'GS', '$ῐος/$ηος' },			{ 'DS', '$ῐῐ/$ῑ/$ηῐ̈/$ει' },			{ 'GD', '$ῐ́οιῐν' },			{ 'NP', '$ῐες/$ηες' },			{ 'DP', '$ῐ́εσσῐ(ν)/$εσῐ(ν)/$ῐσῐ(ν)' },			{ 'AP', '$ῐᾰς/$ηᾰς/$ῑς' },		},		'epi') dial_form(args, 'DP', '$ῐ́εσσῐ(ν)', 'dor') end

export.inflections['3rd-N-pure-ι-prx'] = function(args) args.ctable = deepcopy(m_paradigms.N_pure_i_prx) end export.inflections['3rd-N-pure-ι-pax'] = export.inflections['3rd-N-pure-ι-prx']

local function pure_u_short(gender_code) return function(args) -- No error message needed. local suffix = accent_switch(args.accent.term, '', nil, '_prx', nil, args.suffix) if gender_code == 'N_' and args.accent.term == 'oxytone' then error('Neuter nouns in short -ῠ must be accented recessively.') end args.ctable = deepcopy(m_paradigms[(gender_code or '') .. 'pure_u' .. suffix]) dial_form_multi(args, {				{ 'GD', '$ῠ́οιῐν' },				{ 'DP', '$ῠ́εσσῐ(ν)/$ῠσῐ(ν)/$ῠσσῐ(ν)' },			},			'epi') dial_form(args, 'DP', '$ῠ́εσσῐ(ν)', 'dor') end end export.inflections['3rd-pure-υ'] = pure_u_short

export.inflections['3rd-N-pure-υ'] = pure_u_short('N_')

export.inflections['3rd-pure-υ-long'] = function(args) local suffix = accent_switch(args.accent.term, '', '_con', '_prx', nil, args.suffix) args.ctable = deepcopy(m_paradigms['pure_u_long' .. suffix]) dial_form(args, 'DP', '$ῠ́εσσῐ(ν)', 'dor') dial_form_multi(args, {			{ 'DP', accent_switch(args.accent.term, '$ῠ́εσσῐ(ν)/$ῠσῐ(ν)/$ῠσσῐ(ν)', '$ῠ́εσσῐ(ν)', '$ῠ́εσσῐ(ν)/$ῡσῐ(ν)/$ῡσσῐ(ν)', nil, args.suffix) },			{ 'GD', '$ῠ́οιῐν' },		},		'epi') end

local function third_eus(contracted) return function(args) -- Maybe only Attic actually? local dialect = args.dial if contracted and not (dialect == 'att' or dialect == 'koi' or dialect == 'byz') then error('Only Attic, Koine, or Byzantine Greek have contracted declined forms for nouns in -ευς.') end if dialect == 'kyp' or dialect == 'boi' then args.ctable = deepcopy(m_paradigms.eus_hwos) elseif dialect == 'les' or dialect == 'epi' then args.ctable = deepcopy(m_paradigms.eus_hos) dial_form_multi(args, {					{ 'GS', '$ῆος/$έος' },					{ 'DS', '$ῆῐ̈/$έῐ̈' },					{ 'AS', '$ῆᾰ/$έᾰ' },					{ 'GD', '$ήοιῐν' },					{ 'DP', '$ήεσσῐ(ν)/$εῦσῐ(ν)' },				},				'epi') elseif dialect == 'the' or dialect == 'ele' then args.ctable = deepcopy(m_paradigms.eus_eios) else if contracted then args.ctable = deepcopy(m_paradigms.eus_con) table.insert(args.titleapp, 'contracted') else args.ctable = deepcopy(m_paradigms.eus) end dial_form_multi(args, {				{ 'DP', '$έεσσῐ(ν)', 'dor' }, -- this is somewhat conjectured				{ 'GS', '$έος', { 'nonIA', 'ion' } },				{ 'DS', '$εῖ', 'att' },				{ 'AS', '$έᾰ', { 'nonIA', 'ion' } },				{ 'AS', '$ῆ', { 'doric', 'del' } },				{ 'AS', '$έᾰ', { 'lok', 'kre' } },				{ 'NP', '$έες/$εῖς', 'ion' },				{ 'NP', '$εῖς', 'nonIA' },				{ 'NP', '$ῆς', { 'koa', 'lak' } },				{ 'NP', '$ῆς', 'ara' },				{ 'NP', '$έες', 'kre' },				{ 'NP', '$εῖς', 'late' },				{ 'AP', '$έᾰς', { 'nonIA', 'ion' } },				{ 'NS', '$ής', 'ara' },				{ 'AS', '$ήν', 'ara' }, }) --				Contraction only for nouns with vowel before -ευς. local diacritics = mw.loadData('Module:grc-utilities/data').diacritics local macron, breve = diacritics.macron, diacritics.breve if ufind(args.stem, '[αεηιουω][' .. macron .. breve .. ']?$') then dial_form_multi(args, {						{ 'GS', '$έως/$ῶς' },						{ 'AS', '$έᾱ/$ᾶ' },						{ 'GP', '$έων/$ῶν' },						{ 'AP', '$έᾱς/$ᾶς' },					},					'att') table.insert(args.notes, 'The first form is uncontracted, the second contracted.') elseif contracted then error('Forms with a stem ending in ' ..						require('Module:grc-utilities').tag(usub(args.stem, -1)) ..						' do not have contracted forms.') end end end end

export.inflections['3rd-ευς'] = third_eus(false)

export.inflections['3rd-ευς-con'] = third_eus(true)

export.inflections['3rd-οι'] = function(args) args.ctable = deepcopy(m_paradigms.oi) args.number = { 'S', S = true } dial_form_multi(args, {		{ 'GS', '$ῶς', 'sever' },		{ 'AS', '$οῦν', 'ion' }, }) end

-- irregular masculine or feminine nouns export.inflections['irreg'] = function(args) local params = m_decl_static_data.irregular.noun.masculine_feminine if args.gender.N then return export.inflections['irregN'](args) end local noun = not args.adjective -- Would DP (dual–plural) ever be used? local number = args.number local param_code if number.F then param_code = 'full' elseif number.S then if number.P then param_code = 'SP' else param_code = 'S'		end elseif number.D then if number.P then param_code = 'DP' else param_code = 'D'		end elseif number.P then param_code = 'P'	else error('Could not decide which table of forms to use.') end local forms = params[param_code] args.declheader = 'irreg' local ctable = {} local found_forms = false for i = 2, args.maxindex do		local code = forms[i] local arg1 = ine(args[i]) if code then local arg2 = ine(args[code]) if arg1 and arg2 then error('Two forms specified for ' .. code .. ': ' .. arg1 .. ' and ' .. arg2 '.') end local number_code = code:sub(2, 2) if arg1 or arg2 then if number[number_code] then found_forms = true else error('The number ' .. number_code .. ' is not specified in the form parameter.') end end ctable[code] = arg1 or arg2 elseif arg1 then local abbr = { S = 'singular', D = 'dual', P = 'plural', }			local numbers = require('Module:table').serialCommaJoin(require('Module:fun').map(function(code) return abbr[code] or code end, number),				{ dontTag = true }) local singular = not number[2] error('Parameter ' .. i .. ' has been given, but only ' .. #forms ..				' parameters are needed because the number' .. (singular and '' or 's') ..				' specified in the form parameter ' .. (singular and 'is ' or 'are ') ..				 numbers .. '.') end end if not found_forms then error('No displayable forms found.') end args.ctable = ctable end

-- irregular neuter nouns export.inflections['irregN'] = function(args) --neuter irregular nouns local params = m_decl_static_data.irregular.noun.neuter local number = args.number local param_code if number.F then param_code = 'full' elseif number.P then if number.S then param_code = 'SP' elseif number.D then param_code = 'DP' else param_code = 'P'		end elseif number.D then param_code = 'D'	elseif number.S then param_code = 'S'	else error('Could not decide which table of forms to use.') end local forms = params[param_code] local ctable = {} for i = 2, args.maxindex do		local code = forms[i] local arg1 = args[i] if code then local arg2 = args[code] if arg1 and arg2 then error('Two forms given for form ' .. code .. ': ' .. arg1 ..					' in parameter ' .. i .. ' and ' .. arg2 ..					' in parameter ' .. code ..					'. Choose one or put both in the same parameter separated by slashes.') end ctable[code] = arg1 or arg2 elseif arg1 then error('Parameter ' .. i .. ', ' .. arg1 .. ', does not have a case and number assigned to it.') end end for form, source in pairs(forms.redirects) do		ctable[form] = args[form] or ctable[source] end args.ctable = ctable end

-- irregular adjectives export.inflections['irreg-adj'] = function(args) local params = m_decl_static_data.irregular.adjective local number = args.number local param_code if number.F then param_code = 'full' elseif number.P then if number.S then param_code = 'SP' else param_code = 'P'		end elseif number.S then param_code = 'S'	else error('Could not decide which table of forms to use.') end local forms = params[param_code] local atable = {} for i = 2, args.maxindex do		local code = forms[i] local arg1 = ine(args[i]) if code then local arg2 = ine(args[code]) if arg1 and arg2 then error('Two forms given for form ' .. code .. ': ' .. arg1 ..					' in parameter ' .. i .. ' and ' .. arg2 ..					' in parameter ' .. code ..					'. Choose one or put both in the same parameter separated by slashes.') end atable[code] = arg1 or arg2 else if arg1 then error('No gender, case, and number assigned to parameter ' ..						i .. ': ' .. tostring(arg1) .. '. Only ' ..						#forms .. ' parameters are needed.') end end end for form, source in pairs(forms.redirects) do		atable[form] = args[form] or atable[source] end if number.D then for target_case, source_case in pairs { A = 'N', V = 'N', D = 'G' } do			for _, gender in ipairs { 'M', 'F', 'N' } do local target = gender .. target_case .. 'D' atable[target] = args[target] or atable[target] or atable[gender .. source_case .. 'D'] local target = gender .. 'VP' atable[target] = args[target] or atable[target] or atable[gender .. 'NP'] end end end args.atable = atable end

export.inflections['indecl'] = function(args) args.ctable = deepcopy(m_paradigms.indecl) args.stem = { args[2] } end

return export

title: Module:grc-decl/decl/data


text:
Module:grc-decl/decl/documentation

This module contains functions that use the declension information in the submodules data and staticdata to determine the declension type, generate the inflected forms, and add the forms of the definite article.

title: Module:grc-decl/decl/documentation