The Grammar Editor allows you to write free-form documentation on your language, as well as create grammatical affixes that can be used in the translator.

Affix tables

Using the Insert grammar table generator button, the following code generates a simple affix table:

AFFIX TABLE

rows = Singular, Plural

part-of-speech = n
example-word = dog

NOUN.S = Random
NOUN.P = Random

Result:

rows = indicates the categories to be placed in the rows of the table. Note that each row must be comma separated. part-of-speech = n means means that these affixes apply to nouns. example-word = dog grabs the conlang word for "dog" from the dictionary and applies the affixes to this word inside the table, simply as an example.

NOUN.S = Random creates a random affix for the "Singular" (S) cell, as does NOUN.P for "Plural".

These affixes can now be used in the translator. The affix tag names will be the abbreviated to whatever is capitalized in the code. In this case they are NOUN.S and NOUN.P. But if you wrote rows = SinGular, PLural the affix tag names would be NOUN.SG and NOUN.PL. Numbers may also be a part of the abbreviation.

You can tell the program what the affix will actually be by calling these abbreviated names in the table.

AFFIX TABLE

rows = SinGular, PLural

part-of-speech = n
example-word = dog

NOUN.SG =
NOUN.PL = -s

This mimics English affixes by making the plural an -s suffix, and NOUN.SG = indicates that the singular should be no affix at all. You may specify all or just some of the affixes. There is a lot that can be done with custom affixes - see complete guide here.

You can add another grammatical category on along the columns. In this case we are combining gender (masculine, feminine) with number (singular, plural):

AFFIX TABLE

cols = Masculine, Feminine
rows = Singular, Plural

part-of-speech = n
example-word = dog

NOUN.M.S = Random
NOUN.M.P = Random
NOUN.F.S = Random
NOUN.F.P = Random

In the case you are creating multiple noun genders, you can choose to pull different example words from the dictionary to match the genders, eg:

AFFIX TABLE

cols = Masculine, Feminine
rows = Singular, Plural

part-of-speech = n
example-word M = dog
example-word F = cat

NOUN.M.S = Random
NOUN.M.P = Random
NOUN.F.S = Random
NOUN.F.P = Random

This applies the Masculine Singular and Masculine Plural affix to "dog", and Feminine Singular and Feminine Plural affix to "cat". You will need to know the genders of these words beforehand to do this -- the program will not automatically make "dog" masculine.

You may also translate each cell writing ~ after the affix tag name and before the = sign. Eg:

AFFIX TABLE

cols = Masculine, Feminine
rows = Singular, Plural

part-of-speech = n
example-word M = dog
example-word F = cat

NOUN.M.S ~ dog = Random
NOUN.M.P ~ dogs = Random
NOUN.F.S ~ cat = Random
NOUN.F.P ~ cats = Random

Result:

If your affixes use complicated Regex rules, you may wish explain them in plain English by writing a single double quote (") immediately below each rule.

AFFIX TABLE

cols = Singular, Plural

part-of-speech = n
example-word = dog

NOUN.S = -s
NOUN.P = IF #C.*C# THEN -z ELSE -a
"If the word begins and ends in a consonant, add -z to the end.
Otherwise add -a to the end

Result:

Word tables

Words generated in Word Table automatically get pushed into the main dictionary.

Same as with affix tables, you can specify what the word will be using the equals sign:

WORD TABLE

cols = Masculine, Feminine
rows = SinGular, PLural

part-of-speech = article

M.SG = el
F.SG = la
M.PL = los
F.PL = las

And you can specify exactly what each word translates to in the dictionary using the ~ sign after the name:

WORD TABLE

cols = Masculine, Feminine
rows = SinGular, PLural

part-of-speech = article

M.SG ~ the (masculine singular definite article) = el
F.SG ~ the (masculine singular definite article) = la
M.PL ~ the (masculine singular definite article) = los
F.PL ~ the (masculine singular definite article) = las

Pronoun tables

Pronoun tables can be a little tricky because of the way English fuses gender into some pronouns but not all; there is only one 1st person singular pronoun, "I", but there are three 3rd person singular pronouns: "he", "she" and "it". And these genders don't carry over into the plural 3rd person, which is just "they".

To make an English pronoun table in Vulgar, you have to combine properties all onto one axis like this:

WORD TABLE

rows = 1st person SinGular, 2nd person SinGular, 3rd person Masculine SinGular, 3rd person Feminie SinGular, 3rd person Neutral SinGular, 1st person PLural, 2nd person PLural, 3rd person PLural

part-of-speech = pron

1SG ~ I = Random
2SG ~ you = Random
3MSG ~ he = Random
3FSG ~ she = Random
3NSG ~ it = Random
1PL ~ we = Random
2PL ~ you = Random
3PL ~ they = Random

But English has different set of pronouns for who is doing the verb (I, he, we, etc.) vs who the verb is done-to (me, him, us, etc.). These are known Nominative and Accusative cases. So you may choose to add an axis for these cases:

WORD TABLE

rows = 1st person SinGular, 2nd person SinGular, 3rd person Masculine SinGular, 3rd person Feminie SinGular, 3rd person Neutral SinGular, 1st person PLural, 2nd person PLural, 3rd person PLural
cols = NOMinative, ACCusative

part-of-speech = pron

1SG.NOM ~ I = Random
1SG.ACC ~ me = Random
2SG.NOM ~ you = Random
2SG.ACC ~ you = Random
3MSG.NOM ~ he = Random
3MSG.ACC ~ him = Random
3FSG.NOM ~ she = Random
3FSG.ACC ~ her = Random
3NSG.NOM ~ it = Random
3NSG.ACC ~ it = Random
1PL.NOM ~ we = Random
1PL.ACC ~ us = Random
2PL.NOM ~ you = Random
2PL.ACC ~ you = Random
3PL.NOM ~ they = Random
3PL.ACC ~ them = Random

If you want to make a different system, you need to decide what properties you want to express in your pronouns, and decide if they neatly fit into a 2/3 dimensional table or if they need to be combined into one axis, like English. If it's the former, you will need to figure out what these words translate to. Here is one possibility:

WORD TABLE

cols = Masculine, Feminine
rows = 1st person, 2nd person, 3rd person

part-of-speech = pron

NOUN.M.1 ~ I/we (masculine) = Random
NOUN.M.2 ~ you (masculine) = Random
NOUN.M.3 ~ he/they (masculine) = Random
NOUN.F.1 ~ I/we (feminine) = Random
NOUN.F.2 ~ you (feminine) = Random
NOUN.F.3 ~ she/they (feminine) = Random

Other tricks

Getting words from the dictionary

In the body of the grammar editor, you may pull conlang words from the dictionary using double brackets around the English word, eg: ((man)) will be replaced with the conlang word for man. This is helpful if you don't know the word ahead of time. You can also apply affixes to this, eg: ((man-NOUN.PL)) will be replaced with the plural version of man.

((Langname)) can be used to pull the language's name.

Boxed sections

Create boxed off sections in your grammar by typing three dashes --- in the Grammar Editor.

Gloss translations

Code blocks also allow you to create gloss translations (word-for-word and morpheme-to-morpheme translations):

Example:

te wunua molengo-su
CASE house old-1SG.POSS
my old house

Result:

The 1st line is the of the code is the conlang translation, the 2nd line is the gloss, and the last line (optional) is the plain Enlgish translation. The 1st and 2nd line should have the exact same number of spaces in order for the word-for-word translation. You can optionally put intermediary translations before the last line.

Note: even though this uses affix tags in a similar fashion to other areas in Vulgar, this section does not do the translation for you. Why? Because Vulgar's affix tag system only partially replicates a proper linguistic gloss. For instance, you can encode an circumfix into a single affix tag. However in a true gloss, the convention is to show a morpheme-to-morpheme correlation, which means the circumfix tag should be shown at the beginning at the end of the word:

Manual translations also allow you to mark the morpheme boundaries in the conlang word, and follow other glossing conventions.