Shyla Posted May 31, 2023 Posted May 31, 2023 Hello everyone! We want to share a nifty tutorial related to localization for members of the modding community! Update 1.2 now has support for string override tables, which will allow you to make modifications to change typos, grammar, and glossary linking. While we always strive to have good localization, we understand it is a very complicated process and often leaves mistakes. Using override tables gives users the ability to change any string in the game. We hope these changes will help our community with support string overrides for entire languages that we did not localize to. Please note that the instructions only work for Steam, but the string table override mods should function on the Windows Store (GamePass) version of Pentiment if placed in the appropriate folder. Start from an existing StringTableBundle Find the language string table bundle file for the language that you wish to modify. These are JSON files that exist in the Pentiment_Data folder of the local install path of the application. You can get properties about the Pentiment application in Steam and click "Local Files" and then click the "Browse..." button. Navigate to the Petiment_Data\StreamingAssets\localized directory there you should see directories for every localization that we support. Open the appropriate localization and included "text" directory to find the lang.stringtablebundle file. Open this file up in any text editor and you will see a JSON object that contains every string for this language. Change the StringTableBundle After you have a bundle that you wish to edit. Make any string changes that you wish to reflect in the game. As mentioned above this can be direct string changes to each string in the game. You will often need to locate the string via a search or if you're not sure you can enable the debug settings on the Steam version of the application using the console command "QA" this will enable labels next to all conversations in the game as well as display helpful information about which conversation and cutscene is playing at the current time. This can help you locate the string that you wish to modify. Start the Pentiment application Hide the ` (Tilde) key and open the debug console. Type "QA" (without quote) and hit Enter You should now see the conversation NodeID numbers which coincides with a string ID number within a given string table within the string table bundle. In addition to making changes to the direct strings for a localization you also can add markup to your strings for added functionality. The markup tags that you can add directly are: <i>Italic Text</i> <red>Red Rubrication</red> <blue>Blue Rubrication</blue> <green>Green Rubrication</green> <shake>Shaking Text</shake> <frantic>Frantic Text</frantic> <whisper>Whisper Text</whisper> In addition to being able to add procedural markup, you may also modify how the procedural glossary system parses the text by manually tagging the entry with the following markup. This is some text about <link=g:lex_talionis>Lex Talionis</link> that you should know If you want a full list of all of the glossary terms in the game that you can link to, you can search in the Pentiment_Data\StreamingAssets\design\gamedata\bundle.gamedatabunde and search for Game.GameData.GlossaryTermGameData and use the term's DebugName in this markup. If you want to prevent text from being tagged by the procedural glossary system you may also add the <XG> tag to a block of text. This is text that is parsed for glossary terms <xg>this text is not</xg> and this text is. Save a mod folder After you've made the changes you wish to make you must save a folder that is the parent of this string table override. The path where this is located is in a hidden AppData directory. Navigate to the directory C;\Users\<username>\AppData\LocalLow\Obsidian Entertainment\Pentiment If needed create a new directory called "mods" here and navigate within that directory. Create a new folder under mods and name it something unique for your mode like "eng_glossary_fix1" Under your mod name folder add a new localized directory Under the localized directory add a folder that matches the localization name (Step2 of Start from Existing StringTableBundle) In that localization directory save your new string table bundle whatever you want but with the appropriate .stringtablebundle extension. Launch the game executable and the strings should now be updated! The full path for a mod should be marked as follows. C:\Users\<username>\AppData\LocalLow\Obsidian Entertainment\Pentiment\mods\<mymodname>\localized\<localizationname>\<stringtable_name>.stringtablebundle Make a new language Since you can update every string in the game you could potentially update every string for example in the game to a new language! To do this you follow all of the steps above edit every string in the game to be translated to the new language. In addition to the .stringtable file you must also create a new language.xml file that you put in the same directory. That file is a small data file that tells the game information about this language. Name: Debug name of the language Folder: This is the folder name where we should look for the .stringtablebundle file for a language this should be a new directory. This is also the folder where this file is located. Charset: What font/character set this language should use. Due to the custom way fonts are handled in the game may only choose the following options.x Latin: Pentiment Custom Latin Fonts (Default if missing) Japanese: NotoSerifJA (https://fonts.google.com/noto/specimen/Noto+Serif+JP?query=Noto+Serif+JA) Hangul: NotoSerifKR (https://fonts.google.com/noto/specimen/Noto+Serif+KR) Cyrillic: Alice (https://fonts.google.com/specimen/Alice) Hanzi: NotoSerifSC (https://fonts.google.com/noto/specimen/Noto+Serif+SC?query=Noto+Serif+SC) GUIString: The display name for the language in the dropdown Save this language XML file in your mod's localized\<localizationfolder>\language.xml (in this case this is the AppData\mods\ukrainian\localized\ukuk directory as an example) Relaunch the game and this language should now appear in the dropdown in options. Additional considerations If a character is not on the specified charset fonts specified in the language, the glyph will fallback to a last chance font which may look incorrect or not render at all. Most of the characters we use for our game are precached, but characters that we don't use will need to be computed when the character is first rendered which may cause performance issues. To reduce conflicts with other string overrides you only need to include the string bundle, string table, and id that you are changing. This is a minimum string change for the GUI table to change the new string.
Recommended Posts