PolyGlot

Version 3.0

i. Overview/Welcome
ii. What's New
1---- Installation
2---- Basic Functionality
    - Parts of Speech
    - Conjugations/Declensions
    - Auto-generation of Conjugations/Declensions
    - Word Classes
    - Word Quickentry
    - Saving
    - Language Properties
    - Phonology
    - Romanization
    - IPA Conversion Tool
    - Images in Text
    - Family Window
    - Using the Check Lexicon Tool
    - Importing Swadesh Lists
3---- Importing and Exporting to/from Excel or CSV
4---- Etymology Engine
5---- Statistics Report
6---- Logographic Dictionary
7---- Publishing to PDF
8---- Interactive IPA Window
9---- Quiz Generation Tool
10---- Language Reversion (Disaster Recovery)
11---- Grammar Guide
12---- New Features
13---- Upcoming Features
14---- Known Bugs
15---- Additional Resources

16---- Copyright and contact info

WELCOME/OVERVIEW


Welcome to PolyGlot, an open source tool set that helps to build constructed languages! PolyGlot is a project that I have been working on for some time, and it continues to become more stable and capable with each release. If you have ideas, find bugs, or have any comments at all, please feel free to email me at draquemail@gmail.com or post them on PolyGlot's issues page!

WHAT’S NEW


Hey, all! Welcome to version 3.0 of PolyGlot! I have put a massive amount of effort into this one, so I hope that everyone enjoys it. Two elements have been my focus this time more than anything else.

1) PolyGlot is now upgraded past Java 8. This means that I can not compile to runnable images, and you will no longer have to worry about having Java on your system* to run the program. It can now be run after it is downloaded, regardless of whether you have the JVM installed. It also fixes a lot of bugs surrounding fonts and general OS integration that have been left to languish in Java 8. This will make for a much smoother ride as we go forward. It also means that you will need to download the correct version PolyGlot for your OS, so please be aware. The dmg file is for OSX, the deb file for Linux, and the exe for Windows. Each may be used to install for your respective system.

2) I have done a LOT of work on the Auto Conjugation system. There were a couple of frustrating bugs that have been ironed out, but there is also a significant new feature. The Simplified Auto-conjugation window is now available to be selected. If you have a single transformation per word form that is applied universally, then this feature will make life many, many times simpler for you. Additionally, there are buttons on this screen which will automatically set up prefix and postfix style conjugation patterns in regex for you. On both the Simplified and Classic Auto-conjugation screens is a menu button which opens the conjugation test window. This will allow you to apply the selected rule to any text it is given, with debug-information below which lays out the exact path PolyGlot took to conjugate your word. For anyone looking to create complex conjugation rules, this tool should be invaluable.

Additional features include an integrated Swadesh list import tool and a recovery tool. The Swadesh import feature will allow you to pull template words into your lexicon which are based on a list of very basic words. Additionally, you may write your own list which can be read and populated from later. The recovery tool protects your files in the case that your computer loses power or freezes just as it is saving your work. If this happens, you will be prompted to load from a local recovery file the next time PolyGlot opens.

* With the exception of print to PDF and CSV functionality. The libraries used for this are firmly entrenched in J8, though I am hoping it will eventually move forward.

FEATURES:
  • Swadesh import list tool added
  • Simplified Auto-conjugation Window implemented
  • Conjugation test window implemented
  • Conjugation rules debugging tool added (makes complex rules worlds easier to create)
  • Platform dependent installers implemented
  • Mid-save-freeze recovery system added
  • More advanced CSV styes supported (quote encapsulation, etc.)
  • Went through all labels and displays to find typos (yikes. way too many)
  • Auto-gen Override automatically selected if no conjugation rules exist for word
  • Save dialog appears at more reasonable time when opening new file (if one is already open)
  • Upgraded to Java 12.
  • Build time added to about screen
  • Created packaging system/instruction readme to make it easier for other devs looking to work on PolyGlot
  • Increase code compliance/clean up nonstandard naming schemes
  • Expanded testing significantly
  • Massive refactors/code cleanup under the hood... hopefully will help make future bugs less frequent and easier to find
  • Quality of life adjustments made to lexicon filter


BUGS FIXED:
  • LINUX COMPATIBILITY RESTORED!
  • Lexicon "Conjugations" call changes Conjugation/Declension Auto-generation Rule Order
  • Combo box text will print over edge of box if too long
  • PolyGlot sometimes fails to save user selected font after having been loaded properly (displays correctly until closed/reopened)
  • Reversion of complex conjugation rules on close of window
  • Add/remove buttons have swapped position on Grammar chapter list...
  • Hitting Ctrl+S to save results in PolyGlot saving two times
  • Font size in menu Options not functioning properly
  • Description text in Print to PDF menu remains gray even after it has been updated by user
  • Margin click in IPA tool erases characters
  • HTML is printed into PDFs under certain circumstances
  • Significant problems with logography section. Lots of old/bad code ripped out/replaced.
  • Load image from clipboard in logography section broken on OSX
  • Correct conlang label in grammar section dropdown (always says "Charis," regardless of user selected font)
  • Screen refresh on load of file does not fire on some screens
  • Pasting tab character into grammar text field persistently breaks its contents
  • Checkboxes on phonology screen did not respect style or font size of PolyGlot/user options
  • Ctrl + S caused PolyGlot to save file twice
  • Some menus ignored user selected menu font size
  • Character macros were applied to all fields instead of exclusively to conlang fields
  • The search filter used to pop behind the menu at times

INSTALLATION


As of version 3.0, the installation of PolyGlot has become mostly automated. Simply download the appropriate installer for your operating system (Windows: exe, Linux: deb, OSX:dmg) and open to install! PolyGlot no longer has a frontend, and to run the base program, there is no need to install Java at all (although for some features, a java runtime may be required).


BASIC FUNCTIONALITY



When you first open PolyGlot, you'll see the welcome screen with the primary modules listed to the left as buttons. These modules contain the most basic elements of language creation. Here, you can open an existing PolyGlot library or simply click one of the modules and begin to edit a blank language file.




Most of the windows can be optionally popped out to be worked on independently. This can be very helpful when looking to use both the lexicon and grammar guides together to translate a section of text. To do so, simply right click on the a given module's menu button and click the "Pop Window Out" option.



If you click the Lexicon button, you'll see an empty dictionary. If you have an Excel sheet with a language that preexists, you can skip to section 2, which goes over how to import them. Otherwise, keep reading to see how to start your dictionary! Below is the screen you'll see most often when editing your word list. I have loaded Lodenkur, my own conlang, as an example.



Adding and removing words is done with the + and - buttons beneath the word list on the left. On the right are all of the word properties. Below is what the window looks like after creating a new word. Creating parts of speech and classes of words (gender, for example) must be done before assigning values to these fields. Both are covered elsewhere in this document.




The current word is illegal, as the ConWord field is completely blank. The reason for the illegality is displayed in the error box, with the offending field highlighted in red. You can set other constraints to word legality elsewhere, but the ConWord being more than a blank space is one unalterable rule.

The NatLang field is where you put the natural language synonym(s), if any, for the word. The part of speech dropbox allows you to give a part of speech to the word.

The pronunciation field can be filled in manually, but it is more typical for users to define phonemic orthographies which will auto-populate this field. If you select the checkbox beneath the pronunciation field, pronunciation auto-generation will be overridden for the currently selected word, allowing words with exceptional pronunciations.

The Override Lexical Rules checkbox will tell PolyGlot that you wish to enter a word which breaks typical rules, and will unlock the lexicon list, even if the word would otherwise be illegal.

In the definition field, you can write a more freeform definition of your word. This is particularly useful for words that have no direct translation.

The Conjugations and Logographs buttons open windows to functionality that is described in full later in this document.



If you click the Search/Filter bar along the top of the Lexicon window, a filter menu slides down (shown above). Here, you can filter words by any of their main properties. The ConWord filter field will filter not only on words' base forms, but also any declensions/conjugations of words. Fields are compatible with regex expressions. Only word roots that have been used in the etymology engine will show up in the drop-down. Once all filter criteria are entered, hit enter or click the Filter button to apply it to the Lexicon.


- Parts of Speech
  

In this module, you define your language's parts of speech. . Every word you create in PolyGlot may be assigned a type from the list that you define. Nouns, verbs, adjectives and any other types of words your language uses should be created here. Once created, they will populate in the drop down boxes of the main screen. You can name the types and add notes as is appropriate. Types can be added and deleted with the respective buttons on the above screen.

It is worth noting that classes of words (such as gender) should not be created here. Their creation is handled elsewhere in PloyGlot and covered later in this document.
The name field allows you to give the type a name.

The notes field is useful for defining types that are nonstandard.

The pattern field allows you to restrict the forms that words of a given type may take via a regular expression. For example, the pattern ".*ru$" would tell PolyGlot that all words of a given type must end in the characters "ru". The pattern shown in the above illustration enforces the rule that verbs must end with the character for "lo" in Lodenkur.

The Conjugations/Declensions setup and the Conjugations/Declensions Auto-generation are advanced features covered in the next section of this guide.


The Pronunciation Mandatory checkbox tells PolyGlot to enforce pronunciations as mandatory for this type.

The Definition Mandatory checkbox tells PolyGlot to enforce definitions as mandatory for this type.

IPA Conversion Tool

Occasionally it may be useful to convert entire paragraphs of text into an IPA standard. The IPA Conversion Tool can be used to easily do this. Open the tool by clicking Tools->IPA Conversion Tool.


Once you open the window, simply begin typing and you will see the phonetic translation appear below.


Images in Text

PolyGlot supports images within text boxes, which can be very helpful in communicating complex concepts or providing graphical examples. These images are supported by the Publish to PDF functionality as well.


To insert an image, simply right click in the text field, and either browse for the image, or simply copy/paste it in!


The image will appear in the text box and save in your language file.

Conjugations/Declensions


Conjugations and declensions are one of the more complex features of PolyGlot. They are used to store alternate forms of words. Most commonly, verbs will be conjugated to show present vs. past tense, but there are many different ways that a conjugation can encode meaning in a language. It is in the cases of a more complex system of conjugation/declension that the system in PolyGlot shines.




To edit the conjugations/declensions associated with a word type, select the type and click the "Conjugations/Declensions Setup" button on the Types window. The example below is not of Lodenkur, but an arbitrary language, to give a better idea of how to use regular expressions (which Lodenkur lacks the correct character set to represent currently).

NOTE: Entire conjugations can be copy/pasted from one part of speech to another by right clicking on them or in the white space of the conjugation list, saving significant time in languages with complex and related conjugation setups.



In the types window, I selected "verb," and clicked the Conjugations/Declensions button. In the window that appeared, I used the circled + button to add two declension headers. "Tense" and "speaker Gender."



Using the indicated + button, I first create three dimensions for the Tense header, then select "Certainty" and add two dimensions to it. Note that "mandatory" is selected for the "past" dimension. This means that all conjugations/declensions for words of the verb type that include the the past dimension of the conjugation "tense" will be required on words of type verb.




Back on the Lexicon window, a word of type verb is selected. This is the type that conjugations have been created for. From here, click on the "Conword Declensions" button.



Here, every word form defined for a word's part of speech can be seen. If auto-generation of the forms is defined, each space should be filled in with the appropriately generated word form. To the top of the screen, the dimensions for the columns and the rows may be selected (if there are two or more dimensions). If there are three or more dimensions, the dimensions not chosen in either of the dropdowns is represented by a tab that can be selected. Non-dimensional word forms are displayed on their own tab, as are deprecated forms which had previously been saved. If you wish to override auto-generation rules for a word that is an exception, select the Auto-gen Override check box to the lower left, and edit the existing values as you see fit.




If you don't want to save any of the deprecated values, they can be summarily deleted from all words that are a particular part of speech at once. On the Conjugation setup page, click the "Clear Deprecated Values" button to do this.


NON-DIMENSIONAL CONJUGATIONS

Some languages have non dimensional conjugations, such as gerunds. To create these, simply select the non-dimensional check-box as shown in the picture above.

Non-dimensional conjugations will be single forms, unattached to dimensional forms such as tense.

Auto-generation of Conjugations/Declensions


One of the more complex features to PolyGlot is the Auto-generation system for conjugations and declensions. This section goes through a basic setup to create a conjugation system. The dictionary used here as an example is included along with PolyGlot as the file exampleAutoGen.pgt. For those of you unfamiliar with regular expressions, links to excellent tutorials exist in the Additional Resources section of this document. Additionally, there are example dictionaries included with the download of PolyGlot (in the Example Lexicons folder) which may be helpful with some common patterns. For those of you who who are into infixes, examples are given on how to set this up!




Before auto-generation rules can be created, conjugations/declensions for a type must exist (as explained in Conjugations/Declensions). Once this is done, go to the Types tab, select the part of speech to create auto-generation rules for, and click the Conj/Decl Auto-generation button.




Before continuing, consider how much complexity you will need for your word forms. Is conjugation a one step affair in your language? Is it a simple swap of one pattern on the end or beginning of your words? If so, consider using the Simplified version of the auto-generation tool, which can be switched to by clicking the radio button illustrated above (which exists on the top of the auto-generation window).

Simplified Auto-Generation Setup





The Simplified Auto-Generation screen allows for fast and simple creation of basic auto-conjugation settings. If your language has simple rules for the generation of word forms, you may find this tool less cumbersome than the classic view. The left side of the window is taken up by a list of all conjugations. Only past and present exist in the example given. To the right are a few options.

First is the Disable Wordform checkbox. Selecting this tells PolyGlot to ignore this particular conjugation. This can be useful in cases where conjugations are created dimensionally in ways that you do not need. For example, perhaps both tense and certainty of actions are encoded in your language, but all actions in the past have positive certainty. In this case, you would select Disable Wordform for the conjugation past-uncertain.

Second is the Regex Pattern field. Regex (regular expressions) represent a powerful tool which can identify patterns. These are used in PolyGlot. Simple prefix/suffix cases are covered here, but if you would like to get more ambitious, please check out the links in Additional Resources. Here, the "$" character is placed in the regex field. This character represents the end of a word, so it will result in a suffix being added.

The last field is the Replacement Text field. Text placed here will replace any parts of the original word which match the regex pattern above. Here, the very end of the word (which does not include any characters) will be replaced with "-PASTO". Because the $ character only matches the end of a word itself rather than characters within it, it will add "-PASTO" as a suffix when conjugating the past tense.

The two buttons on the bottom are Prefix Template and Postfix Template. These will populate the regex field with a pattern telling PolyGlot to conjugate the currently selected conjugation/declension by either adding the replacement text to the beginning or the end of a base word, respectively.

Classic Auto-Generation Setup






The Classic Auto-Generation setup is significantly more complex than the simplified menu. It is both more powerful and has a steeper learning curve. If your language has complex conjugation or declension rules however, this will give you the power you need to implement it. If you are using the Classic Auto-Generation, please also take note of the Test Menu. It will prove invaluable to making certain that your rules behave in the manner which you expect them to.

A number of controls are presented here. In the leftmost column, you see every possible conjugation of the selected word type (verb in this example case). The verb selected to create a conjugation rule is past tense verbs that are certain and positive. Every possible combination of conjugations is present in this list. A combination can be disabled by clicking the "Disable Wordform" checkbox.
To create transformation rules click the + button beneath the rules column. In the example picture, one rule, "Past, Cert, Pos rule" has been created. The rightmost section of the window contains the rule's properties. Of note is that you may create as many rules as you like for each conjugation. They will be applied in the order that they appear in the rules list. Their order can be adjusted using the up and down arrow buttons immediately to the right of the Rules list.
The rule's name can be set to anything, and is just label to help remember what precisely it applies to. The rule regex immediately below its name dictates which words the rule applies to. In the example, I use the regex ".*" which applies to everything. If you used the match regex ".*ru$", the rule would only be applied to rules ending with "ru". Regex is a very powerful system, but can be confusing at first. There are links at the end of this document which lead to helpful guides with it if you are unfamiliar.

Beneath this is the Transformations table. Each rule may have as many transformations as you like. They will be applied as with the rules themselves, they are applied in the order which they appear. For conjugations with complex transformations, this can make things much simpler. Here, there is only one rule. As you can see, PolyGlot natively applies any script directly to the column to allow for natively legible characters (scripts must be imported as fonts, which is covered elsewhere in this document). The left column is the Regex value for the transformation. This is the section of the word that PolyGlot will target to replace. In my example it looks for the character "lo" in my script at the end of words. The right column contains the text that will replace the text targeted in the left column.

Here is the complete logic that this rule will result in when PolyGlot looks to create conjugations for verbs:
  • Is this word a verb? If so, continue.
  • Create a Past Certain Positive conjugation field for the word
  • Are rules available which the word matches the rule regex fits? If so, apply those rules to the word
  • For each rule which applies to the word, apply each transformation in the order they appear
  • For each transformation, target matching regex text and overwrite it with the replacement text
  • The resulting text is your fully conjugated word-form.




By right clicking, rules can be copied and pasted from one conjugation form to another. Multiple rules can be selected at once to copy or delete.





Once these steps are complete, I return to the Lexicon tab, create a verb, and click the Conword Declensions button.




Here, all of the forms for the word "walk" have been automatically generated. If you would like to turn off auto-generation for a particular word which is a unique exception, click the Auto-gen Override check box on the word's Conjugations/Declensions screen.



FILTERING CONJUGATION RULES BY CLASS

Often times it can be useful to filter conjugation rules by the value of a word's class. For example, perhaps female nouns decline differently than male nouns. If this is the case, defined class values (Classes covered in the next section) will appear in a filter box when creating rules. To apply a rule to words of all class values, simply choose "All." To apply it to specific class values, deselect all and select the values to filter for. NOTE: every value checked must match for the rule's transformations to be applied to a given word.

Auto-Generation Test Menu



The auto-generation test menu is an invaluable too when creating more complex conjugation and declension rules. It provides both a test bed for the generation process and complex debug output to show you exactly what is taking place when the new word forms are generated. To access this menu, click the Test button in the upper right-hand corner of the Auto-Conjugation Setup window.

In the example setup, there are two conjugations: past and present. Shown are rules for the past conjugation. Selected is the rule "male starts with b." The match class value is set to male, and the regex match is set to "b.*", so this rule will apply only to words of class male that start with the character 'b'. Within the rule are three transformation rules. First, appending "-PASTO" to the end of the word. Second, replacing the 'b' that the word begins with with "MALE-". Third, replacing the trailing 'O' character (added by the first transformation) with a '-'.

Clicking the Test button will allow us to test the entire past conjugation.



In the example above, the test case "butt" was entered into the Test Conjugation/Declension window. The word was set to "male" in the match by class value panel. This lets PolyGlot know to treat your test word's gender class as male. When the -> Test -> button is clicked, your word will be conjugated and placed in the text field to the right. We can see that the new word form has been generated as "MALE-utt-PAST-".

Below this is the applied rules breakdown. This gives detailed information on each rule that was or was not applied. It will tell you why a rule was or was not applied. Additionally, it will walk through the application and results of every transformation, allowing you to see exactly how your final word form was generated.

Word Classes


Word class is most familiar as grammatical gender. Classes can be added to words by clicking the Lexical Classes button on the main menu. This functionality replaces the hard coded Gender module in prior versions. As many classes as you like, with as many values as you find necessary may be added to words. If your language used gender, it will automatically be converted to a word class, and you will notice no difference in your language.


In this example, I have added two classes, gender and distance. To the distance class, I have added three values: touching, near, and far. To the right, all of the parts of speech for this language are listed. Only nouns are checked, so the distance class will only be applied to nouns.


Next, I create another class called "secret word." I'm making a language here where some words can have secret synonyms that only some people know. I need an extra text field to store this value in. Notice in the picture above, that the Free Text Field value is selected for the secret word class.


If I create a noun in the Lexicon now, we will see the relevant classes appear in the word's properties, as seen above. I can change the gender or distance to any of their class' values, and I can put whatever text I like in the secret word field.

Word Quickentry


The Word Quickentry window allows users to very quickly add words to their dictionaries. It is designed to be used entirely with the keyboard without any need to use the mouse until all entries are complete. To open the quickentry window, click the Q button on the Lexicon between the + and - buttons.




Here we see the quickentry screen. All of the basic word properties can be seen here. The Con Word field is highlighted red, as it is a required field. If you have your language set to require Local Word or Type, those fields will be highlighted as well. Each of the fields can be navigated via the Tab key. Once all the fields have been completed to your liking, hitting the Enter/Return key will save the word to your dictionary, blank the fields, and reselect the first field to begin the process again.




Not all languages will use every field. If your language does not use one of the fields, you can un-check the field's active box to disable it. In the example above, the Pronunciation has been disabled. This means that the Tab key will skip selecting it, and speed up your entries.

Once you are done, simply close the window or hit the Done button.

As a note, the quickentry window will enforce rules that the user has set. It will not allow a word that lacks a type if types are set to mandatory. It will not allow a duplicate Con Word is mandatory uniqueness is set.

Saving/Opening/New




Saving, opening, and creating of new dictionaries can be handled through the File menu. Appropriate key combinations will also achieve these tasks from anywhere in the program. Recently opened files are listed here as well.

Language Properties



This screen allows various properties of the ConLang to be modified. Below are explanations for each.


-Language Name
The name of your constructed language.

- Local Language
The natural language that you are using while writing your dictionary/language rules.

- Author/Copyright Info
Here you can include any information that you the creator want packaged with your language, including personal contact information, copyright information, etc.

- Conlang Font
Many ConLangs use nonstandard character sets, and it is sometimes easiest to simply create a font yourself and map these characters to standard Unicode characters. To load a font, click the Conlang Font button and select from the list of locally installed fonts. All Conlang fields will appear in the appropriate font. As a note, if you wish to send your saved dictionary to a friend who is also using PolyGlot, you must also send them the font, or they will receive an error message when they load your dictionary, and see standard characters, rather than your custom font.

If you would prefer to directly import your conlang font file, or if you are having versioning issues with it (see warning below), you can import them directly from the menu. Simply click Tools->Import Font, and PolyGlot will load it without the need to install it to your OS at all.

LINUX WARNING:
If you use a font with ligatures, please use the manual load option (tools->import font) to import your font. Due to a persistent bug in Java, loading in the typical way will cause your ligatures to be ignored. This will be addressed in future releases of PolyGlot.

NOTE: Not all fonts are freely licensed for commercial use. If you're working on a language you intent to use commercially, please check that the font you're using is free to use in that context. Link to a good source of free fonts at the bottom of this document.

- Local Font
This will allow you to change the font that your local language is displayed in. In some cases, certain diacritic marks are useful to have access to when creating romanizations or other scenarios.

- Refresh Fonts
If you install a new version of a font, this button will need to be clicked to refresh which version PolyGlot uses. This is because fonts are embedded into languages (ensuring that friends you send your language to will be able to see them properly even without installing your fonts).

- Alphabetical Order
This allows you to create a custom alphabetical order for the characters used in your language. Simply list the characters in your alphabetical order in this text box, and PolyGlot will respect it when reordering words in the dictionary. Any characters not provided here will be ordered in standard fashion (as decided by your operating system). Here, I have set the alphabetic order to follow qwerty. This will order the dictionary and any alphabetically ordered fields with the order you provide.

- Kerning
The default value for kerning is set to 0. Making this larger or smaller (into negatives) allows you to edit space between characters.
WARNING: Kerning values over 0.0 will cause PolyGlot to ignore ligatures. This is due to a problem with Java rendering that will not likely be fixed. If you are using a custom font, adjust spacing there.






The last element of the Properties tab is the language check box settings. Here, you can tell PolyGlot to enforce rules within your lexicon.
  • If Part of Speech Mandatory is selected, all words must have a part of speech set to be saved.
  • If Word Uniqueness is set, homonyms within your conlang will be forbidden.
  • To disable regex functionality in the pronunciations (thereby allowing ignore case to apply to them as well), click the Disable Orthographic Regex option.
  • If Local Mandatory is set, all words must have a Local Word property set to be saved.
  • To organize your lexicon by local word synonyms, select the Local Word Lex Display option.
  • If Local Uniqueness is set, no two constructed words may contain identical text for their Local Word property.
  • The Ignore Case check box will make all features (excepting the pronunciation options) ignore upper vs. lower case characters in your dictionary.
  • If your language uses Right to Left style writing, select the Enforce RTL checkbox. This will make instances of your conlang appear/be written in the correct direction through the program.
  • If you check the Override Regex Font box, all fields which can accept regex values will use the local language font, allowing you to create more complex regex values without worrying about how particular symbols are displayed on your screen.
If you create a word that violates any rules that you have chosen to enforce, PolyGlot will prevent you from selecting other words until it is corrected, and display an error message telling you what to do to correct this.

Family Window  




NOTE: The Lexical Families window is currently being revamped. In future versions it will likely be replaced entirely. This section of the manual is unedited from the last version.

The Lexical Family window is primarily a lexical organization tool, but can be helpful in many ways. To access the window, click Lexical Families within the Tools menu.



The Families window gives a hierarchical tree view on the left, with a name, a list of words in a family, and notes associated with the family. This tool is particularly useful for keeping track of groupings of words that derive from one another, or that are in some way connected, whether through connotation, denotation, or any other family related information. The nature of a the relationship can be recorded easily in the Notes field.




In this example, I have created two entries in the thesaurus node ("body" and "death") which represent families of words within Lodenkur. I have done this by clicking the + button in the lower left-hand corner of the window and changing the names of the families on the right once selected. After this, the newly created "body" node was selected on the left. Words have been added to the list of family words. This has been done by selecting words in the main window's lexicon, and clicking the circled + button on the right. Multiple instances of the same word cannot be added to the same family.

The words added here are for a living body and an inanimate body. They are both logically and lexically related, so I have grouped them together.




Here, I have created a subfamily, "limbs." This was done by selecting the "body" family, then clicking the + button in the lower left-hand corner. To this family, the words for "arm" and "leg" have been added because they are lexically related to one another. The word for "hand" has been added because it is logically related.




There are times when it is useful to see all words in a family, including those that are in all subfamilies. To do this, click the "include subfamilies" check box. In the example, all words from within the "body" and the "limbs" families are included. As a note, words cannot be deleted from the "Words in family" list while this box is checked.




Of note is that when a word is selected in the Families Window, it will be auto-selected in the dictionary lexicon. This can be useful for vocabularies that have not been wholly committed to memory.

Using the Check Lexicon Tool


The Check Lexicon tool allows you to easily check over your lexicon to see if you have mistakenly left entries which break patterns you have established for your language. It can check for the following cases:
  • Words missing Part of Speech (if set mandatory in Language Properties)
  • Non-Unique words (if set illegal in Language Properties)
  • Coverage of characters used in the script alphabet section
  • Proper generation of pronunciation (if set up)
  • Proper generation of Romanized word form (if set up)
  • Completion of definition (if required by part of speech)
  • Completion of pronunciation (if required by part of speech)
  • Word matches pattern associated with given part of speech
Check your lexicon by clicking Tools->Check Lexicon. Each word will be checked, and a window will appear with a list of all words containing problems. Selecting a word will display the problems associated with the word and select it on the main Lexicon screen to allow you to correct the problems or to select the override option if the entry represents an exception to your rules.

Importing Swadesh Lists



The Swadesh List tool can be helpful when beginning a language and looking for a place to start. Swadesh lists are lists of the most fundamental words in many early languages. If these are completed, deriving newer words and expanding your language may prove to be much easier. PolyGlot comes with a few predefined Swadesh lists. Selecting Tools->Swadesh Lists and selecting either Original or Modern will automatically copy a series of words to your lexicon which are empty, save for their local language fields being filled in with the English values.

Additionally, you may choose to load a custom Swadesh list. If this option is selected, an open file dialog will appear. Simply select any line delimited plaintext or unicode text file to import. (Note: Comma delimited will not work correctly, these files must be delimited by a new line or carriage return between each word to be imported).

Importing/Exporting to/from Excel (or CSV files)


As many conlangers use excel sheets and CSV files to store their languages, this is one of the most useful features for migrating a language into a PolyGlot library! If you have a conlang that is currently stored in an excel or CSV file, you can import it via the excel/CSV import tool included in PolyGlot. To access this tool, click Tools->Import From File Sheet in the menu. As of PolyGlot 3.0, all csv features outlined in standardized csv formatting are supported.

NOTE: CSV functionality requires Java 8 installation due to library limitations. This will likely be changed in the future, but if you use this functionality without Java 8 installed, you will be prompted to install it.




- Import File

This is the Excel/CSV file that you are importing data from. Simply click the browse button and select your excel spreadsheet file here.


- First Row Is Labels

If the first row in your dictionary file is used for labels, click this. This will tell PolyGlot to skip the first row before beginning the import.


- Column Mapping

This is the meat and potatoes of the import tool. Here, you map columns from your excel sheet to fields in PloyGlot. The column number (rather than the column title) should be used for mapping. Remember, in Excel, column numbers begin at 0, rather than 1. If you have more columns than are provided for in PolyGlot, multiple columns can be imported to a single PolyGlot field. Simply enter the column numbers separated by commas.

It's worth noting that for imported word classes (gender, and other inherent attributes) will be labeled as CLASS1, CLASS2, CLASS3, etc. These can be easily renamed to their appropriate values post import from the main menu by clicking the Lexical Classes button.

- Delimiter
    The delimiter character is the character used to separate columns in a CSV file. If you are importing from an excel file or the CSV file you're using has commas as delimiters, you may ignore this field.

- Excel Sheet

   If you use multiple sheets for your dictionary, you will have to import them one at a time. The sheet that you are importing from is set here. If you do not use multiple sheets, simply leave it to its default value of 0.

Etymology Engine





The Etymology Engine allows you to create and visually graph complex systems of etymology and lexical lineage within your language. To access it, select the word you would like to work on in the Lexicon section of PolyGlot and click the Etymology button (pictured above).



On the screen above, we can enter etymological parents to our selected word. The top left menu for Internal Parents allows parents to be added from within your language. The dropdown will populate with all the words from your language. Once a word is selected, the visualization to the right will update and a new (empty) dropdown will appear in case you want to add additional parents. If the word you add as a parent has its own etymological roots, this will be reflected in the diagram.
NOTE: PolyGlot will prevent you from adding words as their own parents, or creating logical loops. A word may never be its own ancestor.

To the bottom left is the External Parents interface. Here, you can add and remove etymological parents which exist outside your current language. Click the + button to add additional parents.

In both the internal and external menus, a - button will appear next to all current parents. Click it will delete that parent from the currently selected word. Notes/images can be added in a free text menu as well.

Phonemic Orthography




The above image shows the Phonemic Orthography guide. This can be found by clicking the Phonology and Text menu button on the left of PolyGlot's menu. It is the first of the three menus. New rows can be added with the Add button, and selected columns can be deleted with the Delete button. The Character(s) row represents one character or a series of characters that make up a sound or phoneme. The Pronunciation column represents the sound or phoneme associated with the contents of the Character(s) column of the same row. This allows PolyGlot to auto-generate pronunciations for you when you create new words, and can save a lot of time. Both columns are compatible with regular expressions (explained below).

Of note is that both upper and lower cases must be entered into the pronunciation guide unless both the Ignore Case option and the Disable Proc Regex options are selected.

The order that the sets appear in represents their priority. Higher position means higher priority. In the example, you can see that the pair "gh->j" is higher than both "g->guh" and "h->h". This means that if PolyGlot encounters "gh", it will attempt to create a valid pronunciation using the "gh->j" rule before either of the others. By selecting a row and clicking the up or down arrow to the right of the guide, you can move a set to higher or lower priorities in the guide.

In addition to the basic functionality, the pronunciation guide is compatible with regular expressions. For example, if you added the pair "^th" -> "θ", it would replace "th" only when it appeared at the beginning of a word. This allows for deep orthographies to be easily be created. Links in the references section of this document lead to good regular expression tutorials.

The last element of the pronunciation guide is the Recurse Patterns button. This enables a powerful function in PolyGlot, which will comb through a word multiple times, applying new pronunciations so long as there are more transformations defined in the left column that might apply. Clicking this will also enable lookahead and lookbehind in regex patterns.

WORD OF WARNING: Please be sure to type in the "Character(s)" field in the exact same way as you are going to be entering your words. I have encountered users that have accidentally entered lookalike characters into the left-hand column. This will mean that you cannot properly use the autopopulate feature. Keep in mind that just because it looks correct does not mean that it actually is.




Back in the Dictionary menu, the pronunciation of our new word has auto-populated! For more complex languages that use IPA pronunciation standards, or other symbols, this can save a lot of tedious work.

Word Romanization




Romanization works identically to the pronunciation system. It is disabled by default. When enabled, a text box containing romanized words will appear on the Lexicon screen.

Character Replacement (Macros)




This section will allow you to easily type words with diacritic marks without having to cramp your fingers. In the example, k is transformed to a K̿. This will be applied in all PolyGlot fields that you type into, and be copied/pasted elsewhere.

Statistics Report


To generate a statistics report on your language, click Tools-> Language Statistics on the main menu. An HTML report will be generated and displayed. Of note is that this might take a a few moments to run. The report calculates some fairly complex statistics, and has to do a lot of comparison to build the full report. Don't assume the program has frozen if it takes some time. The report currently provides:

Language name: exactly what it sounds like
Count of words in conlang lexicon: a count of all words in your language
Count of words by type: a line given for each word type with a count of these words in your language
Breakdown of words starting with letter: Gives a count for each letter of words that begin with it
Breakdown of words ending with letter: Gives a count for each letter of words that end with it
Breakdown of characters across all words: counts instances of each character as used in all words
Breakdown of phonemes across all words: counts instances of each phoneme as used in all words
Heat map of letter combination frequency: This is a heat map of letter combinations used in your language. The fewer instances, the bluer a combination tile


Below are examples of the visual charts which the generated by the statistics report:





Logographic Dictionary


The logographic dictionary tool in PolyGlot allows for the creation of highly complex character sets. It can handle true logographies, where each symbol is directly correlated with a single word, or systems such as Chinese, which associate multiple readings with a single character, and build more complex characters out of radicals. Once created, these characters can be tied directly to words in a lexicon. It is found on the left as one of the main modules in PolyGlot.




The logograph dictionary if very similar to the Lexicon in PolyGlot. The list to the left displays all currently created logographs, and can be added to/deleted from with the +/- buttons. The Name and Notes fields have the same function as those in the Lexicon. The Filter/Search fields in the top are applied in real time, as with the Lexicon.

The Strokes field accepts only integer values. This represents the number of strokes that a logograph takes to write. The Is Radical checkbox is used to mark whether the current logograph is used as a radical in the construction of more complex logographs. If this is selected, you will be able to add the character to the Radicals list of other words.

The Readings list allows you to record various readings/pronunciations for a given logograph. As each line is added, it can be freely edited.

The Related Words list is non editable. This is generated by PolyGlot after fetching a list of all words to which an association with the logograph has been added.

Logographs are created based on user defined images. To load an image into a logograph's properties, create a new logograph in the Logograph List and click the Load Image button. The same button can be used to replace an existing image. Additionally, the Clipboard button can be used to load an image as a logograph directly from the clipboard.

Under Radicals, clicking the + button once will bring up the Logograph Radicals selection tool. Once this is open, clicking + a second time will result in the radical being added to the currently selected logograph.




Here, three test logographs have been entered, and using the Logographic Radicals selector (opened the first time + was clicked), the radicals TEST 1 and TEST 2, which make up TEST 3 have been added to the logograph.




To associate logographs with a word, click on the Logographs button while the word is selected in the Lexicon.




The Associated Logographs window (left) will appear after the Logographs button is hit on the Lexicon. The first time the + button is hit, the Associate Logograph window will open, allowing you to search for and select the correct logograph to associate with your word. Once you have selected it, click the + button again to add it to your list of words. The - button can be clicked to remove words. Editing is disabled in the Associate Logograph window.

In the Associated Logographs window, the Details/Edit button can be clicked to open up the logograph editing window for that single logograph.

Publishing To PDF


The Publish to PDF screen presents a series of options that will be applied to a PDF document generated from your language file. The document will be fully formatted and is a clean, presentable way to package your language for distribution. To access this feature, click File -> Publish to PDF or Ctrl+P (Option+P on macs). All images, fonts, and assets used by your language will be embedded directly in the PDF file, so you will not have to distribute anything with it to ensure that the PDF displays correctly on any given computer. As a note, sound files included in the grammar section currently cannot be embedded in the PDF. This is being looked into for future releases.

NOTE: CSV functionality requires Java 8 installation due to library limitations. This will likely be changed in the future, but if you use this functionality without Java 8 installed, you will be prompted to install it.


The window pictured above allows you to publish with various options described below.

The top option is the location that the PDF document should be generated in. Click Select location to specify this.

The Title, Subtitle and Cover Image will make up the first page of your document. None of these fields are required, but if no Title is given, the document will be given a header of your language’s name. Additionally, any copyright information that you have included for your language will be printed here.

Next, a Table of Contents is generated and printed. This is created automatically, and provides links to the various sections of your document that you have chosen to print. Clicking on any of the chapter or subchapter titles here will make the PDF reader jump directly to them.

The third page is devoted to any foreword text that you have provided. This section is optional, and the page will be skipped if none is provided.

If Print Orthography is selected, a section will be devoted to a chart which shows character(s) paired with their appropriate pronunciations.

If Print Gloss Key is selected, a section will be devoted to a chart which displays parts of speech in your language linked with their appropriate glosses.

If Print CONLANG -> LOCAL LANGUAGE is selected, a dictionary will be generated in the alphabetic order of your conlang, with each word having a formatted entry that gives its type (by gloss if defined), its pronunciation (if one exists), its definition, and any synonyms that you have provided.

The Print LOCAL LANGUAGE -> CONLANG option functions identically to the one above, except that the dictionary is based on local language words, and in the alphabetic order that the user’s machine defaults to.

The Print Grammar option tells PolyGlot to include all chapters that you have written in your Grammar Guide. Formatting choices such as preserving inline conlang fonts and color are preserved. The Grammar Guide will have its own chapter in the ToC, with subchapters listed beneath it representing the sections created within your guide.

The Print Logographs option is not currently available. If you use logographs in your language and need this to be integrated with the logographic engine in PolyGlot, drop me a line, and I’ll make it happen. As of now, I don’t believe there are any users leveraging this functionality.

The Print Page Number option will add a footer to your document which gives current and total page count for the entirety of the document.

The Print All Conjugations option will print a labeled list of all conjugations under the definitions of words which have them as appropriate for their part of speech.

The Print Etymology Trees option will print graphical etymology trees for all words which have etymologies defined.

Interactive IPA Window



The International Phonetic Alphabet is a series of characters created with the goal of representing each unique sound that can be part of spoken language. If you’re looking to try out new sounds or find combinations of sounds that build a coherent orthography for a new language, this can be very useful. Try playing around and finding which sounds flow into one another and before long, you’ll have the sound and feel of a new language. It can be accessed by clicking Tools->Interactive IP Chart.

The Interactive IPA chart is a useful tool for establishing the orthography of your language. It is separated by tabs into Vowels, Pulmonic Consonants, Non-Pulmonic Consonants, and Other/Affricates. If you click on any of the characters, PolyGlot will play the associated sound and copy the character into the textbox in the bottom of the window.

Two IPA sound libraries are accessible through PolyGlot, the set found on Wikimedia commons, and the set produced by the UCLA Phonetics Lab. You can select which you would prefer in the dropdown which appears at the top of this screen.

Quiz Generation Tool


The Quiz Generation Tool allows you to create flash-card style quizzes based on the contents of your lexicon. It is a very useful tool for increasing your own fluency and familiarity with your languages, or languages that you've downloaded.
NOTE: This section includes screenshots from prior versions of PolyGlot. The functionality is identical.

To access the quiz generation tool, on the main menu, click Quiz Generator.


Once you are in the Quiz Generation screen, you will see a number of options. At the top is a filter, which functions identically to the one found on the lexicon screen. Using this filter, you can restrict what kinds of words are randomly selected to be put into the quiz. Below this are the controls for the quiz itself. The quiz length is how many questions will be included in the quiz. Below this is a series of check boxes, each representing one of the attributes on a word. Questions generated will quiz based on only the selected attributes. At least one must be selected to generate a quiz. Once the parameters are complete, click the Take Quiz button to begin.


Once the quiz has been begun, you can move forward and backward through the questions using the Next and Previous buttons. Skipped questions can be returned to and answered later. The current question by number is displayed in the bottom left.


Once a question is answered, it cannot be reanswered. It will be marked as correct/incorrect at the bottom of the screen, and the correct answer will always be marked in green (incorrect answers marked in red). After you reach the end of the quiz, the Next button will become a Finish button. You will be given the option to retake the test, and if you choose to, be given the further option to trim the test down to only the questions you missed the first time around. This can be very helpful to reinforce the areas that you are currently having trouble with.

Language Reversion


The language reversion tool allows you to roll your language file back to a previously saved state. This can be enormously helpful in the case of disaster recovery, or if you accidentally made/saved a bulk operation on your lexicon.


The reversion menu can be accessed by clicking Tools->Revert Language, as shown above.


In the reversion menu, you will see prior saves (limit of prior saves retained found in options menu, with 0 as infinite). They are listed in in descending order of save time/date. To revert to any given state, select it and click the Revert To button.

If you modify and save from this point, a new reversion point will be created rather than saving over the existing one you loaded. Once a reversion point is created, it is fixed in time.


PolyGlot defaults to saving 10 prior save versions. Versions older than this will be discarded. You can increase or decrease this number in the PolyGlot options menu (Tools->Options). The value 0 means that PolyGlot will not limit the number of saved versions. Take care when setting the value to 0. If you have a large language file and save frequently, this can make the size of your language save file balloon quickly.

Grammar Guide


The Grammar Guide allows you to organize gramatical rules of your language in easy to read and traverse chapters/sections. It it a powerful tool which allows complex formatting of text to best describe grammar to users. To access it, click the Grammar button on the main menu.



This window is one of the more complex elements of PolyGlot, but also one of the most powerful.

On the left is the chapter and section tree. By clicking the Chapter button, a new chapter is added below the currently selected position. Chapters cannot be nested. The + button adds new sections to the currently selected chapter. The - button deletes a chapter or section. Delete with care, PolyGlot has no undo! Chapters and sections can be moved up and down sequentially using the up and down arrow buttons to the right of the list.

The name field allows you to name your chapter/section.

The text field allows you to write out grammar rules. Text format can be modified by highlighting text, changing the values of the font menu above the text box, and clicking Apply. If your language uses RTL writing, it will display as such here when you select your conlang's font in the font dropdown.

The Spoken Example menu allows you to record and play back speech in your conlang. This is especially useful when your language uses particular tones or inflections that it is difficult to describe in simple text.

New Features


All new features/updates can be found on the github page for this project: https://github.com/DraqueT/PolyGlot/issues?q=is%3Aopen+label%3Aenhancement+sort%3Aupdated-desc

Upcoming Features (not in order of planned implementation)


All upcoming features can be seen here. If there’s a feature you would like to see, feel free to create a new ticket for it here!

Known Bugs


Up to date list of all bugs and issues here: https://github.com/DraqueT/PolyGlot/labels/bug

Additional Resources


The following sites are excellent for creating your own fonts for use within PolyGlot, and all fonts created with them should be fully compatible. The custom font for Lodenkur, Kukun Linear A, was created with Fontstruct.
    The following sites are invaluable to anyone getting into language construction for the first time. Please check them out! The first two are resources to read through yourself, and the last is a community of very friendly people who are passionate about creating and refining constructed languages.
    Regular expressions can be pretty complex, but are immensely powerful. Below are a few links that are very helpful in learning good RegEx practices.
    Not all fonts are licensed to use freely. Check out the links below if you're looking for some that are.

Copyright, Contact, and Legal Info


This program is copyright(©) Draque Thompson 2014-2019.


Additional assistance and design of the todo list: Joseph Cramsey josephcsoftware@gmail.com https://joeycramsey.bandcamp.com
PolyGlot uses the open source library Apache POI for excel parsing/writing.
PolyGlot uses the Masahiko SAWAI Font Chooser.
PolyGlot uses font Digital7 by Style7 (http://www.styleseven.com/)
PolyGlot uses IPA pronunciations sounds from the Wikimedia Commons, created by Peter Isotalo, User:Denelson83, UCLA Phonetics Lab Archive 2003, User:Halibutt, User:Pmx and User:Octane, and covered under the GNU Free Documentation License
PolyGlot uses IPA pronunciations from the Wikimedia Commons (referenced and linked here)
PolyGlot uses font Charis, Copyright (c) 1997-2014, SIL International (http://scripts.sil.org/) with Reserved Font Names "Charis" and "SIL"
PolyGlot uses iText7, which is created and owned by iText Software (http://itextpdf.com) and licensed under the AGPL license
PolyGlot uses glyph manipulating code written by Stanislav Lapitsky (http://java-sl.com/)
PolyGlot uses the HTML parsing library jsoup by Jonathan Hedley
PolyGlot uses the SuperCSV library (dev led by Kasper Graversen)

This program is free to distribute. Neither it nor its internal code may be sold for a profit or bundled with for profit software. Basically, don't be a dick about this.



Draque Thompson can be contacted via email: draquemail@gmail.com

Please send questions, concerns, and ideas for anything that you would like to see implemented!