Susquehanna is a conlang manager to help manage constructed languages.
You can find the source code on Github!
Devlog:
1/27/2023
Apologies about not posting about 0.0.2! I just completely forgot to make a devlog entry, at least I remembered this time! Here's what's new:
- New icons!
- Lexicon is now editable! Now you can add word to your conlang!
- Phonology tab revamp! I noticed that it was impossible to add diacritics with 0.0.1 and 0.0.2, so I fixed that!
- Sounds are now removable from phonologies!
I don't really have much else interesting to share, I plan on making the lexicon tab have more fields that are editable, as right now
the logs start yelling about every word. There's also currently a bug where homonyms and synonyms will be added to a word multiple times, so
I'll have to fix that before adding more fields to display in the Lexicon. I plan on getting the Orthography tab up and running before I release 0.0.3,
so stay tuned for that! Looking forwards, I plan on adding the Grammar tab to 0.0.4, and then after that just keep adding new features to each tab. I'm
hoping that by the end of 2023, Susquehanna will be a fully functional, all-in-one conlang manager!
1/12/2023
That was quicker than expected! I am very pleased to announce the first public release of Susquehanna! Here's what's new:
- .language file revamp! Now only one file is needed to store all of a language's information!
- A brand new PHOSYS parser! In the future, this might just end up as it's own standalone download!
- The ability to save languages is here! Whenever editing, simply press "Apply Changes" to save it!
- Added ability to edit phonologies!
First thing to get to: PHOSYS has changed quite a bit since I was talking about it back on Christmas.
When I was working on encoding phonology to a file, I realized that the phonology system would somehow have to
be attached to the file, as otherwise it wouldn't be able to display. As I started to get phonologies into PHOSYS
files, I realized that the way I had planned for storing languages didn't quite make sense if I wanted them to be sharable.
Why have 6 different files for one language, when they can be all combined into one? I didn't think the built-in Java
Properties files would cut it, but I figured that PHOSYS files probably would. There were a few issues with this, mainly with
unnamed data like the tabledata. These are now marked with a special blank tag, but they now need a
: to work properly. As such, the PHOSYS file from the Christmas dev log
will no longer parse correctly. Furthermore, phonology systems now need to be in a tablelist tag instead of just
floating around, as otherwise there would be no way to tell what is supposed to be the name for the language
and what is supposed to be the name for the phonology system. Attached is a new version of the IPA PHOSYS
file.
- ===PHOSYS Start===
- ===Tablelist Start===
- tablelistName:IPA
- diacriticList:̥,̬,ʰ,̹,̜,̟,̠,̈,̽,̩,̯,˞,̤,̰,̼,ʷ,ʲ,ˠ,ˤ,̴,̝,̞,̘,̙,̪,̺,̻,̃,ⁿ,ˡ,̚,̋,́,̄,̀,̏,̌,̂,᷄,᷅,᷈,ˈ,ˌ,ː,ˑ,̆,|,‖,.,‿,͡
- ===PhonoTable Start===
- tableName:IPA Consonants
- columnNames:Bilabial,Labiodental,Dental,Alveolar,Postalveolar,Retroflex,Palatal,Velar,Uvular,Pharyngeal,Glottal
- soundsPerCell:2
- rowNames:Plosive,Nasal,Trill,Tap or Flap,Fricative,Lateral Fricative,Approximant,Lateral Approximant
- :pb****td**ʈɖcɟkɡqɢ*#ʔ#
- :*m*ɱ***n***ɳ*ɲ*ŋ*ɴ####
- :*ʙ*****r******##*ʀ**##
- :***ⱱ***ɾ***ɽ**##****##
- :ɸβfvθðszʃʒʂʐçʝxɣχʁħʕhɦ
- :####**ɬɮ**********####
- :***ʋ***ɹ***ɻ*j*ɰ****##
- :####***l***ɭ*ʎ*ʟ**####
- ===PhonoTable End===
- ===PhonoTable Start===
- tableName:IPA Vowels
- columnNames:Front,Central,Back
- soundsPerCell:2
- rowNames:Close,Near Close,Close Mid,Mid,Open Mid,Close Open,Other
- :iyɨʉɯu
- :ɪʏ***ʊ
- :eøɘɵɤo
- :**ə***
- :ɛœɜɞʌɔ
- :æ*ɐ***
- :aɶ**ɑɒ
- ===PhonoTable End===
- ===PhonoTable Start===
- tableName:IPA Non-Pulmonics
- columnNames:No column names
- soundsPerCell:1
- rowNames:Click,Implosive,Other,.encodingAnomoly
- :ʘǀǃǂǁ#####
- :ɓɗʄɠʛ#####
- :ʍwɥʜʢʡɕʑɺɧ
- :gɚ########
- ===PhonoTable End===
- ===Tablelist End===
- ===PHOSYS End===
1/2/2023
Happy New Years y'all! Displaying PHOSYS files was a bit of a pain, but I finally got it to work! Here's what's new:
- .gitignore is finally fixed on the Github repo!
- Added PHOSYSTable class, a special type of VBox that specifically displays a PhonoSystem.
- Paper texture has been changed
You may be wondering, what the hell is a .gitignore? The .gitignore file specifies which files/directories
Git will ignore when uploading files. For the longest time, I was manually preventing anything in the /target
directory from uploading, as all of the files there should be exactly the same as the ones in /src. However,
because I was doing this manually instead of just using the tool that Git gives for this, there were some files
that just didn't get uploaded to the Github repo, and others that did that shouldn't of. That's fixed now!
The attached photo is of the brand new PHOSYSTable class! This allows the PHOSYS files mentioned last devlog
entry to be displayed in the UI! Right now, I'm aiming for the first public releases to begin sometime in February,
however it looks like it might happen later this month!
12/25/2022
Apologies about the lack of updates here! Unfortunatly I got rather sick, so I wasn't able to update here...
However, there's been quite a bit added to Susquehanna recently, so here's a list:
- A font change
- A slight logo change
- Button redesign
- Ability to create and load languages
- Working logs
- PHOSYS files
The thing I'm most excited about is PHOSYS files. PHOSYS is a markup language designed for Susquehanna specifically for
phonology systems! This might not sound all that exciting at first, but let's get into the details!
PHOSYS allows the very easy sharing of phonology systems, along with a theoretically infinite amount of tables. That means that
if you have, say, an alien species that doesn't really have vowels, but has two other things that aren't consonants either, PHOSYS can
support it! As long as each symbol stays at 1 character, there shouldn't be any problems with the arrangement of any vocal tract when creating
a PHOSYS file. The structure of the document is a bit rigid, but despite that it's quite flexible! Here is an example PHOSYS file for IPA:
- ===PHOSYS Start===
- name:IPA
- ===PhonoTable Start===
- tableName:IPA Consonants
- columnNames:Bilabial,Labiodental,Dental,Alveolar,Postalveolar,Retroflex,Palatal,Velar,Uvular,Pharyngeal,Glottal
- soundsPerCell:2
- rowNames:Plosive,Nasal,Trill,Tap or Flap,Fricative,Lateral Fricative,Approximant,Lateral Approximant
- pb****td**ʈɖcɟkɡqɢ*#ʔ#
- *m*ɱ***n***ɳ*ɲ*ŋ*ɴ####
- *ʙ*****r******##*ʀ**##
- ***ⱱ***ɾ***ɽ**##****##
- ɸβfvθðszʃʒʂʐçʝxɣχʁħʕhɦ
- ####**ɬɮ**********####
- ***ʋ***ɹ***ɻ*j*ɰ****##
- ####***l***ɭ*ʎ*ʟ**####
- ===PhonoTable End===
- ===PhonoTable Start===
- tableName:IPA Vowels
- columnNames:Front,Central,Back
- soundsPerCell:2
- rowNames:Close,Near Close,Close Mid,Mid,Open Mid,Close Open,Other
- iyɨʉɯu
- ɪʏ***ʊ
- eøɘɵɤo
- **ə***
- ɛœɜɞʌɔ
- æ*ɐ***
- aɶ**ɑɒ
- ===PhonoTable End===
- ===PhonoTable Start===
- tableName:IPA Non-Pulmonics
- columnNames:No column names
- soundsPerCell:1
- rowNames:Click,Implosive,Other
- ʘǀǃǂǁ#####
- ɓɗʄɠʛ#####
- ʍwɥʜʢʡɕʑɺɧ
- ===PhonoTable End===
- ===PHOSYS End===
Now, lets go through that line-by-line, to see what each part does:
- ===PHOSYS Start=== - Tells Susquehanna that this is in fact a PHOSYS file, and not just some random file
put into the phonoSystems folder
- name:IPA - This sets the name of the phonology system. Useful for picking a system inside the Phonology
tab.
- ===PhonoTable Start=== - Tells Susquehanna that the following data is going to be a PhonoTable, a part of
the phonology system that helps organize various sounds such as consonants or vowels into a category that they can then be compared with
- tableName:IPA Consonants - I'd say this is self-explanitory, sets the name of the table. Useful when view
phonology systems in the Phonology tab.
- columnNames:Bilabial,Labiodental,Dental,Alveolar,Postalveolar,Retroflex,Palatal,Velar,Uvular,Pharyngeal,Glottal
- This sets the names of each column. Useful for displaying tables in the Phonology tab.
- soundsPerCell:2 - Sets the amount of sounds that are in each cell by default. This helps make sure that the table does not end up with
unnamed columns.
- rowNames:Plosive,Nasal,Trill,Tap or Flap,Fricative,Lateral Fricative,Approximant,Lateral Approximant -
This sets the names of each row. Useful for displaying tables in the Phonology tab.
- pb****td**ʈɖcɟkɡqɢ*#ʔ# - This, and lines that look similar to it, define the data of the table. Each row
will be x * y long, where x is the amount of column names, and y is the amount of sounds per cell. When there is a cell that is meant to be empty,
* and # are used. * is used when the sound is
possible to make, but there is no symbol. # is used when a sound is impossible to make.
- ===PhonoTable End=== - This marks the end of a PhonoTable. Used to make sure that the next table is not used
as data for the previous table.
So that's why I'm so excited about PHOSYS files, once I get the Phonology tab done I'll start making public releases!
8/18/2022
Here's a sneak peak at what the UI will look like! I spent the last few weeks learning how to make glossy,
frutigier aero-esque textures. I also got the structure of the files down, which should allow easy sharing in the future!
It should be at a useable state soon!