I’ve been working on a project in the Conlang Critic Discord with some friends for a while now, and I’d like to summarize what we’ve been doing and why here. We’ve been working on creating a constructed language (conlang) with the end goal of each of us going off and evolving it in our own separate ways. Our goal in this project is really to create a microcosm of the natural process of language development.
One of the questions you, as the reader, might be asking is “why?” To which I say “why not?” This is a tool I use to define, explore and challenge my fundamental understanding of reality. I don’t expect anything I do with this tool to be useful to anyone other than myself. I just want to create something by throwing things at the wall and seeing what makes sense for me. If other people like it or end up benefitting from it I consider that icing on the cake.
A language is a surprisingly complicated thing. There’s lots of nuance and culture encoded into it, not even counting things like metaphors and double-meanings. Creating my own languages lets me break that complicated thing into its component parts, then use that understanding to help increase my knowledge of natural languages.
So, like I mentioned earlier, I’ve been working on a conlang with some friends, and here’s what we’ve been creating.
mapatei is the language spoken by a primitive culture of people we call maparaja (people of the language). It is designed to be very simple to understand, speak and learn.
The phonology of mapltapei is simple. It has 5 vowels and 17 consonants. The sounds are written mainly in International Phonetic Alphabet.
The vowels are:
|International Phonetic Alphabet||Written as||Description / Bad Transcription for English speakers|
The long vowels (anything with the funny looking bar/macron on top of them) also mark for stress, or how “intensely” they are spoken.
The consonants are:
|International Phonetic Alphabet||Written as||Description / Bad Transcription for English speakers|
|m||m||the m in mother|
|n||n||the n in money|
|ᵐb||mb||a combination of the m in mother and the b in baker|
|ⁿd||nd||as in handle|
|ᵑg||ng||as in finger|
|p||p||the p in spool|
|t||t||the t in stool|
|k||k||the k in school|
|pʰ||ph||the ph in pool|
|tʰ||th||the th in tool|
|kʰ||kh||the kh in cool|
|ɸ~f||f||the f in father|
|s||s||the s in sock|
|w||w||the w in water|
|l||l||the l in lie|
|j||j or y||the y in young|
|r~ɾ||r||the r in rhombus|
The structure of words is based on syllables. Syllables are formed of a pair of maybe a consonant and always a vowel. There can be up to two consecutive vowels in a word, but each vowel gets its own syllable. If a word is stressed, it can only ever be stressed on the first syllable.
Here are some examples of words and their meanings (the periods in the words mark the barriers between syllables):
|mapatei word||Intentional Phonetic Alphabet||Meaning|
|ero||e.ro||can, to be able to|
There are only a few parts of speech: nouns, pronouns, verbs, determiners, numerals, prepositions and interjections.
Nouns describe things, people, animals, animate objects (such as plants or body parts) and abstract concepts (such as days). Nouns in mapatei are divided into four classes (this is similar to how languages like French handle the concept of grammatical gender): human, animal, animate and inanimate.
Here are some examples of a few nouns, their meaning and their noun class:
|mapatei word||International Phonetic Alphabet||Class||Meaning|
|okha||o.kʰa||human||female human, woman|
Nouns can also be singular or plural. Plural nouns are marked with the -ja suffix. See some examples:
|singular mapatei word||plural mapatei word||International Phonetic Alphabet||Meaning|
|ra||raja||ra.ja||person / people|
|meko||mekoja||me.ko.ja||ant / ants|
|kindu||kinduja||kiː.ⁿdu.ja||liver / livers|
|fīfo||fīfoja||(ɸ~f)iː.(ɸ~f)o.ja||moon / moons|
Pronouns are nouns that replaces a noun or noun phrase with a special meaning. Examples of pronouns in English are words like I, me, or you. This is to avoid duplication of people’s names or the identity of the speaker vs the listener.
|Pronouns||singular||plural||Rough English equivalent|
|1st person||ngōe||tha||I/me, we|
|2nd person||sīto||khē||you, y’all|
|3rd person human||rā||foli||he/she, they|
|3rd person animal||mi||wāto||they|
|3rd person animate||sa||wāto||they|
|3rd person inanimate||li||wāto||they|
Verbs describe actions, existence or occurrence. Verbs in mapatei are conjugated in terms of tense (or when the thing being described has/will happen/ed in relation to saying the sentence) and the number of the subject of the sentence.
|future||māu $verb||māu $verb-ja|
For example, consider the verb ōwo (oː.wo) for to love:
|ōwo - to love||singular||plural|
|future||māu ōwo||māu ōwoja|
Determiners are words that can function both as adjectives and adverbs in English do. A determiner gives more detail or context about a noun/verb. Determiners follow the things they describe, like French or Toki Pona. Determiners must agree with the noun they are describing in class and number.
See these examples:
a big human: ra sura
moving cats: māoja wuwa
a short name: fōmbu uwiisa
long days: lundoseja khāngandiwato
Also consider the declensions for uri (u.ri), or dull
There are two kinds of numerals in mapltatei, cardinal (counting) and ordinal (ordering) numbers. Numerals are always in seximal.
|cardinal (base 6)||mapatei|
|11||rupe jo āre|
|12||rupe jo mawo|
|13||rupe jo piru|
|14||rupe jo kīfe|
|15||rupe jo tamu|
Ordinal numbers are formed by reduplicating (or copying) the first syllable of cardinal numbers and decline similarly for case. Remember that only the first syllable can be stressed, so any reduplicated syllable must become unstressed.
|ordinal (base 6)||mapatei|
|11th||ruperu jo ārea|
|12th||ruperu jo mawoma|
|13th||ruperu jo pirupi|
|14th||ruperu jo kīfeki|
|15th||ruperu jo tamuki|
Cardinal numbers are optionally declined for case when used as determiners with the following rules:
Numeral declension always happens last, so the inanimate nifth (seximal 100 or decimal 36) is thelitheli.
Here’s a few examples:
three pigs: ondoko pirumi
the second person: ra mawomara
one tree: kho āremi
the nifth day: lundose thelitheli
Prepositions mark any other details about a sentence. In essence, they add information to verbs that would otherwise lack that information.
fa: with, adds an auxiliary possession to a sentence
ri: possession, sometimes indicates ownership
I eat with my wife: wā ngōe fa epi ri ngōe
ngi: the following phrase is on top of the thing being described
ka: then (effect)
If I set this dog on the rock, then the house is good: ēsa adunga ngōe pā āwu ngi, ka iri sare eserili
Interjections have the following meanings:
Usually they act like vocatives and have free word order. As a determiner they change meta-properties about the noun/verb like negation.
wo: no, not
|No! Don’t eat that!||wo! wā wo ūto|
|I don’t eat ants||wā wo ngōe mekoja|
mapltapei has a VSO word order for sentences. This means that the verb comes first, followed by the subject, and then the object.
|the/a child runs||kepheku rako||kepheku.VERB rako.NOUN.human|
|The child gave the fish a flower||indofu rako ora āsu||indo.VERB.past rako.NOUN.human ora.NOUN.animal āsu.NOUN.animate|
|I love you||ōwo ngōe sīto||ōwo.VERB ngōe.PRN sīto.PRN|
|I do not want to eat right now||wā wo ngōe oko mbeli||wā.VERB wo.INTERJ ngōe.PRN oko.PREP mbeli.DET.singular.inanimate|
|I have a lot of love, and I’m happy about it||urii ngōe erua fomboewato, jo iri ngōe phajera lo li||urii.VERB ngōe.PRN eruaja.NOUN.plural.inanimate fomboewato.DET.plural.inanimate, jo.CONJ iri.VERB ngōe.PRN phajera.DET.singular.human lo.PREP li.PRN|
|The tree I saw yesterday is gone now||pōkhufu kho ngōe, oko iri māndosa mbe||pōkhu.VERB.past kho.NOUN.animate ngōe.PRM, oko.PREP iri.VERB māndo.DET.animate mbe.PRN|
As I mentioned earlier, I’ve been working on some code here to handle things like making sure words are valid. This includes a word validator which I am very happy with.
Words are made up of syllables, which are made up of letters. In code:
type Letter* = object of RootObj case isVowel*: bool of true: stressed*: bool of false: discard value*: string Syllable* = object of RootObj consonant*: Option[Letter] vowel*: Letter stressed*: bool Word* = ref object syllables*: seq[Syllable]
Letters are parsed out of strings using this code. It’s an interator, so users have to manually loop over it:
import unittest import mapatei/letters let words = ["pirumi", "kho", "lundose", "thelitheli", "fōmbu"] suite "Letter": for word in words: test word: for l in word.letters: discard l
This test loops over the given words (taken from the dictionary and enlightening test cases) and makes sure that letters can be parsed out of them.
Next, syllables are made out of letters, so syllables are parsed using a finite state machine with the following transition rules:
|Present state||Next state for vowel||Next state for consonant||Next state for end of input|
Some other hacking was done in the code, but otherwise it is a fairly literal translation of that truth table.
And finally we can check to make sure that each word only has a head-initial stressed syllable:
type InvalidWord* = object of Exception proc parse*(word: string): Word = var first = true result = Word() for syll in word.syllables: if not first and syll.stressed: raise newException(InvalidWord, "cannot have a stressed syllable here") if first: first = false result.syllables.add syll
And that’s enough to validate every word in the dictionary. Future extensions will include automatic conjugation/declension as well as going from a stream of words to an understanding of sentences.
Creating a language from scratch is surprisingly hard work. These resources helped me a lot though.
Thanks for reading this! I hope this blogpost helps to kick off mapatei development into unique and more fleshed out derivative conlangs. Have fun!
Special thanks to jan Misali for encouraging this to happen.
This article was posted on 2019-09-22. Facts and circumstances may have changed since publication. Please contact me before jumping to conclusions if something seems wrong or unclear.
Tags: #mapatei #protolang