StringList Files (enUS)
|Affixes.stl||Prefix and suffix names (e.g., "of the Lion")|
|Powers.stl||Class spell descriptions|
|AttributeDescriptions.stl||Attribute modifier descriptions|
|Items.stl||Item names (anything that can go in your inventory)|
|ItemTypeNames.stl||Item type names (e.g., "Melee")|
|ItemDescriptions.stl||Misc. item descriptions (e.g., crafting plans)|
|ItemSets.stl||Item set names (e.g., "Bul-Kathos' Children")|
|ItemEnhancements.stl||Item Enhance names|
|Recipes.stl||Recipe names for cube|
|Gizmos.stl||Misc game items (e.g., "Resplendent Chest")|
|RareNameStrings_P*.stl||Rare item name prefixes (e.g., "Lord's")|
|RareNameStrings_S*.stl||Rare item name suffixes (e.g., "Focus")|
|Monsters.stl||Monster and NPC names|
|MonsterNames.stl||Monster name pre/suffixes|
For each StringList above, you can view the "Current" (default), "All", or "Changes".
- Current: Shows only the current values. Also shows the version number when the key was added. Does not show anything that has been deleted.
- All: Shows all of the values for every single version. New values from the current patch are shown in green. Values that have been deleted and are no longer active are shown in red.
- Changes: Shows only the values that have changed in the current patch. New values are shown in green. Values that have been deleted this patch are shown in red. Also shows the previous values.
Click on the link to download a zip file containing all of the raw StringList files for version 8296. The older version 8059, version 7841, version 7728 and version 7338 are still available as well. The fields in each "*.stl" file are delimited using the tilde ('~') character. This character was chosen as it is not used in any of the StringList text (unlike commas, quotes, and apostrophes).
The StringList files are used by Diablo 3 to convert Non-NLS keys into language specific strings.
What is a Non-NLS key?
It is a language independent string that represents something. That "something" could be an item, a spell name, a spell description, etc.
For example, the Non-NLS key "Amethyst_04" corresponds to "Flawless Amethyst" in US English (which has a locale of "enUS").
That very same key will be mapped to "Améthyste Parfaite" for a French speaker (playing a version of the game that has been localized in French).
What does "Non-NLS" even mean?
The term NLS is an acronym for National Language Support. Consequently, the term "Non-NLS" means a string that is language-independent and that will need to be mapped into a localized string before it is displayed to the user.
In the case if the Diablo 3 Non-NLS keys, they look a lot like their US English counterparts. That is not surprising since Blizzard is based in the US and as such, will pick Non-NLS key names which are easy to identify.
So what is the purpose of these files?
These files reveal all of the text that is shown to the user at any point during the game. They include the name of all item types, all affixes, all mobs, all spells, all NPC conversations, etc. In short, they can reveal a lot of useful information about Diablo 3!
While the list above is not (yet) complete, it does provide changes between versions. That is, changes that have been made to these strings in the beta patches.
How is this possible?
To obtain the differences between versions, I simply extracted all of the core StringList files from the "enUS_Text" MPQ file. I then loaded all of this data into a database. I proceeded to extract each file one at a time from the "enUS\d3-update-enUS-XXXX.MPQ" patch MPQs. I then checked for differences between the new version and the old version (both updates and deletes), and then loaded those into the same database with the new version number. Finally, I formatted this data into a not-so-nice looking HTML table for your viewing pleasure.
How is this information stored in the MPQ files?
Check out the StringList (*.stl) section for complete details on the inner workings of the StringList files.