Hi there! You can find the script and its usage instructions here: Tongues Script Description I'm DMing a D&D campaign and wanted my players to actually speak some weird words while using other languages than Common and yet other users of the language get to understand them. I created this simple script which replaces words written by a same length word from the languages specific vocabulary lists. I had this idea after World of Warcraft's cross-faction communication system which translates your words when they are displayed to an opposite faction's player as they "don't understand your language". I wanted to share in order to other groups take advantage of this. The final result is a pseudo-translator which sends the translated text to everyone but whispers the orginal text to those who can speak the language used to translate. Note: the original text is always whispered to the GM, which could cause replication if you are also tagged as a character's controller since the script whispers both the GM and the characters. I hope someone find this useful! Changelog v1.0.0 - Release v2.0.0 - Improved parsing (special thanks to The Aaron) Now languages are loaded and parsed on script startup or whenever created, changed or deleted. Tongues will look for any handout prefixed with "Tongues: ". Restricted !tongues --create [name] command to only GMs. This command now also automatically prefixes languages handouts Added new examples & screenshots. v2.1.0 - Improved character parsing The script now searches for full names when checking the speakers of a language, no more nicknames, now you must write the full name of the character. Leaving empty rows on a language list doesn't causes the script to malfunction. If no vocabulary exists (empty rows) for a language, every word will be translated by sequences of '?' depending on word length. Will not send whispers to characters without any player in its "Can Be Edited & Controlled By" field, avoiding replication of whispers for GMs when talking through an NPC. v3.0.0 - Improved translation via hash (special thanks to Corin S.) Tongues now uses a hash to translate words, resulting in getting always the same translation to a given word. May cause weird translated sentences if not enough vocabulary is available. v4.0.0 - Dictionary, ignoring text and language knowledge Dictionary functionality which allows translation of specific sets of words to a given translation (ex: [Hello, Goodbye: Hellobye] will translate every "Hello" or "Goodbye" to "Hellobye") . This feature also supports sentences (ex: [You will burn in hell: Ag naz logash] ). New languages created by the command --create have a new template with a functional example. Translation is done from top to bottom, that means if [Hello: Hi] is declared before [Hello: Hey], only the first one will apply as every "Hello" will be translated to "Hi" first. Text between two $ symbols are ignored by the script. (ex: A message such as "Hi $John$ how are $you today$" will translate as "Az John jag nag you today"). Ignored text will be displayed in grey color when translating. Tongues now supports knowledge of a language, when writting down the speakers of language you must specify their level of knowledge with a ":" next to its name followed by a percentage (ex: Mannimarco:100%, Goblin Warrior: 50%) . This affects both speaking and understanding of a language. Every word has a difficulty between 1 and 100, a language speaker only will speak/understand those words that meet their % of knowledge. Any words not translated by the speaker (character who is sending the message doesn't have enough knowledge) will display in blue color when translating. Any words not understood by the listener (character who is reading the message doesn't have enough knowledge) will display in red color when translating. If you don't want to use this feature just give every speaker a knowledge of 100%. Read me inside Github is updated including the new features. v4.0.1 - Fixed GM Notes parsing Fixed an issue when parsing GM Notes not seprated by space after comma. Also, when speakers are written without a knowledge value after a ":" the script defaults the knowledge level to 100. Preventing parsing errors when swaping to the new version or just don't want to use the knowledge feature and keep GM Notes cleaner. v4.1.0 - Non-english characters parsing Now tongues parses every Unicode letter as a valid character for translation. v4.3.1 - New configuration commands Github's repository readme has a new section with all the available commands with their usage and examples. New command: !tongues --ability which creates/updates a token macro named "Tongues" for all the languages the selected character knows. New command: !tongues --set (language:knowledge%) which adds or updates the selected character's name on the provided language handout. You can optionally provide a knowledge % for the provided language, which will be added to the character's name on the handout. New command: !tongues --unset (language) which removes the selected character's name from the provided language handout. Both !tongues --set and - -unset commands after adding or removing a character from the handout will seek for an ability macro named "Tongues" on the selected character, if found, a command !tongues --ability will be executed for the character affected. v4.4.0 - New configuration command for GMs New command: !tongues --speaker (name) which saves the name to be used as the speaker's name when a !tongues (language) (message) command is issued by a GM without a token selected. This speaker name is saved across API Sandbox restarts so you will find that once you used this command once, the script will always remember your last saved name. Speaker name defaults to John Smith on fresh scripts. v4.5.1 - New configuration commands and bugfixes Fixed a bug with !tongues --set which caused a "null" entry when used on a language not yet spoken by anyone. Fixed
a bug where a token without an associated character will display
"character" as a name. Now the script tries to use the token's name if
no character is found. If the token name is blank it will use the saved
speaker name instead. New command: !tongues --config (parameter:true/false) which allows to allow or disable the new features. !tongues --config show Will display your current configuration settings. !tongues --config reset Will reset your script data to a fresh start. Useful when updating your version in order to avoid compatibility problems. !tongues --config showTokenName:true/ false While
true will display the token's name rather than the character's name. Defaults to false on fresh scripts. !tongues --config displayLanguageName:true / false While true it will display the language name on the translated message. While false only the GM and characters which know the spoken language will see the language name. Defaults to true on fresh scripts. v4.5.2 - Bugfixes & One-Click Install Hopefully fixed all the bugs related to handout parsing. I've been asked to add the script to One-Click install feature and I'm working on it. Examples & Screenshots I'm also leaving a few screenshots of some languages I configured for my own game for you to take as example: Disclaimer: my english is not perfect since i'm not a native speaker