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 button, the following code generates a simple affix table:

TABLE TYPE = affix
part-of-speech = n
example-word = dog

rows = SinGular, PLural

SG = Random
PL = 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.

SG = Random creates a random affix for the “SinGular” cell, as does PL for “PLural”. When using "Insert Grammar Table" button, grammatical properties (like Singular and Plural) need to be spelled correctly so that the correct abbreviations are applied. This enables the Smart Translator to work.

Note: the Smart Translator is still a work in progress; it only accurately translates certain kinds of sentences. You can turn the Smart Translator off and manually add affixes and grammar words to do a word-for-word (and affix-for-affix) translation.

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

TABLE TYPE = affix
part-of-speech = n
example-word = dog

rows = SinGular, PLural

SG =
PL = -s

Result:

This mimics English affixes by making the plural an -s suffix, and 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):

TABLE TYPE = affix
part-of-speech = n
example-word = dog

cols = Masculine, Feminine
rows = SinGular, PLural

M.SG = Random
M.PL = Random
F.SG = Random
F.PL = 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:

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

cols = Masculine, Feminine
rows = SinGular, PLural

M.SG = Random
M.PL = Random
F.SG = Random
F.PL = 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:

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

cols = Masculine, Feminine
rows = SinGular, PLural

M.SG ~ dog = Random
M.PL ~ dogs = Random
F.SG ~ cat = Random
F.PL ~ cats = Random

Result:

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

TABLE TYPE = affix
part-of-speech = n
example-word = dog

cols = SinGular, PLural

SG = -s
PL = 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:

TABLE TYPE = word
part-of-speech = det

cols = Masculine, Feminine
rows = SinGular, PLural

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:

TABLE TYPE = word
part-of-speech = det

cols = Masculine, Feminine
rows = SinGular, PLural

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

Some confusion can arise with English pronouns, due to the fact that gender is only expressed in some of its pronouns. 3rd person has three genders: “he”, “she” and “it”. However, all other pronouns are completely gender neutral: “I”, “we”, “you”, and even the 3rd person plural “they”.

Furthermore, there is no singular vs plural distinction in the 2nd person: “you” is used for both singular and plural. However, 1st person has a singular and plural form (“I” vs “we”) as does 3rd person (“he/she/it” vs “they”).

This inconsistency means English pronouns can't be divided neatly into the rows and columns. The simplest thing may be to put every pronoun own its own row, like this:

TABLE TYPE = word
part-of-speech = pron

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

1.SG ~ I = Random
2.SG ~ you = Random
3.M.SG ~ he = Random
3.F.SG ~ she = Random
3.N.SG ~ it = Random
1.PL ~ we = Random
2.PL ~ you = Random
3.PL ~ they = Random

However this is still not the full picture! English has different set of pronouns for “cases”, i.e. who is doing the verb (I, he, we, etc.) vs who the verb is done-to (me, him, us, etc.). Linguists call these the Nominative vs Accusative case, respectively. So you may choose to add an axis for Nominative and Accusative case:

TABLE TYPE = word
part-of-speech = pron

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

1.SG.NOM ~ I = Random
1.SG.ACC ~ me = Random
2.SG.NOM ~ you = Random
2.SG.ACC ~ you = Random
3.M.SG.NOM ~ he = Random
3.M.SG.ACC ~ him = Random
3.F.SG.NOM ~ she = Random
3.F.SG.ACC ~ her = Random
3.N.SG.NOM ~ it = Random
3.N.SG.ACC ~ it = Random
1.PL.NOM ~ we = Random
1.PL.ACC ~ us = Random
2.PL.NOM ~ you = Random
2.PL.ACC ~ you = Random
3.PL.NOM ~ they = Random
3.PL.ACC ~ them = Random

If you want to make a different pronoun system to English, you need to decide if want your conlang pronouns to fit neatly into the rows and columns of a table, or if there will be some level of irregularity, like English. Next, regardless of whether they fit neatly into a table or not, you will need to figure out how each conlang pronoun translates to its English equivalent(s). Here is one possibility using a regular "neat fit" system where every conlang pronoun expresses person (1st, 2nd or 3rd) and gender (masculine or feminine) but not number (singular vs plural):

TABLE TYPE = word
part-of-speech = pron

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

M.1 ~ I/we (masculine) = Random
M.2 ~ you (masculine) = Random
M.3 ~ he/they (masculine) = Random
F.1 ~ I/we (feminine) = Random
F.2 ~ you (feminine) = Random
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 curly 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-PL:N}} will add the plural form for nouns (assuming your language has this affix).

(Be aware that although the affix abbreviation would have been PL = in the table, its part-of-speech is added to the end so that it becomes -PL:N when it's attached to the word. This is because there could be a plural affix for a different part-of-speech which differs from the noun affix.)

{{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.

Regular tables

Regular tables can be inserted inside a code-block using Markdown-style formatting:

| Heading 1    | Heading 2 | Heading 3     |
|--------------|:---------:|--------------:|
| left aligned | centred   | right aligned |
| normal text  | **bold**  | *italic*      |

Result:

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.