Below, I have created some documentation of the basics of the utility. SimLibby has created a PDF that, I think, is a lot better from a translator-standpoint as she uses it for exactly that. As such, I recommend using her PDF primarily for documentation. Mine will probably be more technical in nature than most will find helpful. Her documentation is included here.
Download the latest version of DP STBL Editor - last updated January 17 2022
DP STBL Editor is a Stand-alone STBL Text String editor for Windows. It was created in VS 2012, which I believe uses .Net 4.5.
This utility was designed primarily for helping people that need to do a lot of translations for mods like mod creators or translators. It has the capability of bringing the STBL file directly in from a package file, which should help translators who may not have experience using S4PE to extract the STBL files for the language they wish to update.
It has other functions built-in like importing changes from XML files or exported STBL tables as XML and comparing two STBL files to generate an XML file with the differences between them.
This utility uses the standard S4PE naming scheme for opening or saving “.stbl” files. Really, you don’t have to worry about all of this unless you’re generating a new STBL. The program will handle it for you. The STBL resource filename would follow a pattern like this: S4_220557DA_00000000_YYXXXXXXXXXXXXXX
|File name string||Description|
|S4||All Sims 4 exported resources from S4PE have this prefix|
|220557DA||The Resource ID for STBL files in package files. Each resource type in Sims 4 packages have a specific Resource ID. For STBL files, it is always 0x220557DA.|
|80000000 or 00000000||The Group ID for STBL files in package files is always 0x80000000 if “Use High-bit Group” is enabled or 0x00000000 if disabled. The standard per EA is for this to be enabled.|
|YYXXXXXXXXXXXXXX||The Instance ID for STBL files in package files. The “YY” part of this ID tells Sims 4 what language this particular STBL definition is in. The “XXXXXXXXXXXXXX” part of the ID is the same for all languages in the STBL file and is unique across packages. An example for an English language string (YY = 00) and with a unique ID (XXXXXXXXXXXXXX) of “24072D2A2C5142” would give the YYXXXXXXXXXXXXXX value of “0024072D2A2C5142”. The German (YY=08) ID would be “0824072D2A2C5142”.|
To the right of each row is a pen-type icon:
This icon allows opening the specific row in an enhanced editor view.
The existing text for the current row can be copied down to be modified directly by clicking the "Copy Down" button or an entirely new string may be typed into the Text String area instead, if needed. The Instance ID field is read-only for edited rows as the specific value is not allowed to be changed through this method.
The menus at the top of the window have file-specific functionality like opening/importing/exporting, conversion utilities and language options.
The main table in the center of the screen displays the current STBL records loaded. The main table in the center of the screen displays the current STBL records loaded. Right-clicking on these records will open a context-menu
The context menu allows deleting a record, undeleting a deleted record or inserting a new record. Deleted records will show-up with a red-background until saved. Any of these red-background deleted records can be right-clicked on and undeleted to undo the delete. The "Go To Row..." command will allow jumping to a specific row in the currently loaded STBL grid.
Inserting a new record will open a new dialog for creating a new string in the current STBL file. It requires an Instance ID and the text for that Instance ID. The Instance ID may be entered by hand if it’s known, otherwise, the Generate button may be clicked AFTER ENTERING text. The longer the text entered into the string prior to hitting the Generate button, the more likely the generated Instance ID will be unique. Inserted (new) records have a yellow background until the file has been saved.
If Generate is clicked without at least 20 characters being entered into the Text String field, another dialog will pop-up that requires the user to type at least 20 characters to generate a proper ID.
Clicking on the text of an existing STBL record will allow changing of the text to a different value. Changed values show as Green background until the file has been saved.
Open an existing “.stbl” file exported from a package for editing. Open From Package || From a selected package, a list of available STBL files in that package as well as the language they are stored-in will be displayed. Selecting one of these STBL files will open it in the edit view without having to export it from the package first.
|Save||If the STBL was opened from a “.stbl” file and doesn’t have special characters in the name, this will save the file back with the same name it had before. Otherwise, it will be treated as a “Save As” menu option.|
|Save as||Displays a list of language options for saving the STBL file as well as a required Instance ID textbox. The Instance ID will be prefilled if it is known (loaded from a “.stbl” file or from a package) as will the language. Otherwise, both must be entered before the file can be saved.|
|Export To All Languages||The current translation values loaded on the grid will be exported into STBL files for every language. This will create 17 different STBL files in the Editor folder.|
|Import XML||This option will do one of two things. 1) If a STBL file is already opened, the XML is merged into the existing records. Records may be changed, deleted or inserted from the XML and will be color-coded to indicate which they do (Red = Deleted, Green = Changed, Yellow = Inserted). 2) If no STBL file is opened, this just does an insert for all of the new records defined in the XML and allows them to be edited.|
|Export to XML||This allows all current records to be exported into an XML. This XML may then be imported as described in the “Import XML” menu option to update another STBL or create new STBL records. The XML may also be used for conversion as described later.|
|Close||Closes the currently opened STBL file.|
|Create Difference XML||
Description Create Difference XML This allows opening a second STBL file (it must be exported from S4PE or saved previously by DP STBL Tool, it cannot be imported from a package) which will be compared with the currently loaded STBL records. An XML file will be generated with the differences between these two files. The hardest thing for me when doing a new version of a mod is updating all of the languages other than English so they have the same records in the STBL as English does for translators to update. By hand, this was taking me hours previously but I use this menu option to create an XML that allows me to do it much easier now. Here’s a description of how I use this functionality:
This functionality can be used for other things as well, I’m sure. This is how I usually use it, though.
|Batch Apply Difference XML||
This menu option will open a dialog that allows selecting a “difference XML” generated by the utility and selecting a folder containing one or more STBL files within it. From the dialog it is then possible to apply the differences in the “difference XML” to all of those STBL files automatically saving the STBL files with the changes. Note that if the STBL file came from S4PE rather than this editor then it will create new versions of the STBL as the naming is slightly different between the two.
|Export All STBL||
This menu option will open a dialog that allows selecting a Sims 4 Package and then selecting an output folder to write XML files. All STBL files within the selected Package file will be automatically exported into XML files within the selected folder, at that point. This may be helpful for translating multiple languages for the same mod.
This is another “Helper” thing that I use a lot and other mod developers may be able to use as well. Anytime I release a new version of my mod, I include a table with the new strings included within that version for users that don’t know how to manually edit the STBL file (although maybe this utility will help there!) in the forums. Users then edit the table and PM me an updated version of the table with their translations in it. Clicking this menu command brings up a pop-up that allows selection of which type of conversion is needed (XML -> Table or Table -> XML) and a selection of the input and output files for that type of conversion.
I use the XML-to-Table with the PM’s I get back from translators with table data containing translated strings. I create a text file and copy/paste the table and its contents from the PM into it. Then using the Table-to-XML conversion, create an XML file with the translator updates. I can then open the correct STBL for their language and “Import XML”. All of the translated strings should then be imported into the STBL which can then be saved and imported into S4PE.
Limited use for this probably for others, but maybe some mod developers can use it. I sure do! :)
|Set Language||Allows choosing the language for the DP STBL Editor utility. All strings on the forms are globalized. I have it set-up so other languages may be added to my localization file and those languages will then show-up on all of the forms. Currently, if you switch to a language that I have not gotten updated strings for, they’ll show-up in a format like “**buttonOKCaption”. That just lets us know that the strings haven’t been translated yet for the currently selected language.|
|Set UI Color||
Allows defining some different color options to different parts of the UI to give it a different theme depending on the user’s preferences.
After changing a color in one of the UI categories, the "Test Theme" button can be clicked which will apply it to the current dialog panel to give an idea of what the color would look like in the application. It won't actually save color choices until OK is clicked. Default reverts all the colors to the beginning application colors.
|Use High-Bit Group||Allows configuring whether to save STBL files with the Group ID as 0x00000000 or 0x80000000. The default for this is “true” as EA’s standard is for custom mods to use 0x80000000 as their Group-ID.|
Any translators that want to help translate the strings for this utility, they are contained in the Localization.data file. It is an XML file saved with a “.data” extension so can be opened with any text editor. The strings that need to be translated are in the TextValue attribute. If you want to PM me the updated values for these strings, I will get them into the Localization file and it should show-up on the utility afterwards. I thought about putting these into an STBL file, but we’re starting to touch into a looping situation at that point if you need the STBL editor to edit the strings for the STBL editor. :)
Thanks go to: