User:Atap

The Beyond Skyrim Wiki — Hosted by UESP
Revision as of 20:37, 22 May 2024 by Atap (talk | contribs)
Jump to: navigation, search

Workspace page for Atap

Skyrim and other Creation Engine games utilize an in-built localization system to support multiple languages. Historically, this system has been misunderstood by the modding community, who have opted to directly translate plugins rather than localize them. This article documents this system and how to localize plugins.

To localize plugins the third party tools xEdit and xTranslator are both necessary.

Advantages Over Direct Translation

The vast majority of translations available on NexusMods and other sites are created by copying a mod's plugin file (esm, esp, or esl) and directly replacing the text inside. The translated plugin file then overwrites the mod's original plugin file, and the translated text appears in game. This method (referred to as 'direct translation' in this article, though there is no commonly accepted name for it) is perfectly functional, but has some notable shortcomings. The largest by far is that translations are not preserved through updates. Any change to the original mod's plugin file must be forwarded to the translated plugin, either by re-translating the original or recreating all changes in the previously translated plugin. This is both time consuming and leaves much room for error. Localizing a plugin ensures that only changed, added, or deleted records will need their translations to be modified.

Another major issue involves distributing mods intended to include multiple languages. If utilizing the direct translation method, one must include multiple plugin files in their mod and a mod installer (FOMod or similar program) for the user to select what language they intend on installing. This results in the user downloading multiple large, unused plugin files, and has the same version control issues as documented above. In contrast, localized plugins automatically adjust to the game language and have a much smaller footprint in regards to unused files.


Localizing a Plugin

The .STRINGS format

Each plugin must have three files for each language: a .STRINGS file, a .ILSTRINGS file, and a .DLSTRINGS file. The vast majority of in game text is stored in the .STRINGS file. Subtitles for dialogue are stored in .ILSTRINGS files, and book or journal entry text is stored in .DLSTRINGS files. More technical information on the format can be found on the UESP, but this information is not necessary for localization.

It is necessary to create each of these files for all languages Skyrim supports. Without them, upon switching to a supported language without the necessary .STRINGS files the game or Creation Kit will crash. Skyrim (and Skyrim Special Edition) support the following languages. English, French, Spanish (Spain), Italian, German, Polish, Russian, Chinese (Traditional) (labeled as Chinese), and Japanese. Fallout 4 includes Chinese (Simplified), which it labels as Chinese. Traditional Chinese is thus labeled traditional.

.STRINGS files are named in the following format: PluginName_language.STRINGS. For example, the file containing the German subtitles for the plugin BSMBonemoldSet would have the name BSMBonemoldSet_german.ILSTRINGS. This format is not case sensitive but is necessary for the game to locate and read the files. The file path for .STRINGS files is \Data\Strings in the game folder, though by default all .STRINGS are packaged in .bsa files and thus this folder is not visible.

.STRINGS files cannot be compressed when packaged in Bethesda Software Archive (.bsa) files. If they are, they cannot be read and the game will crash on start up. Ensure that they are packaged in an uncompressed .bsa, even if this involves splitting a mod into multiple archives to compress other files.

As localized plugins require .STRINGS to open, ensure that the proper .bsa files are loaded in the Creation Kit's CreationKitPrefs.ini file before attempting to load a localized plugin utilizing .bsa files rather than loose files. Otherwise, the Creation Kit will fail to load the plugin, resulting in error messages.

Converting Direct Translations to .STRINGS

Dummy Translations

Because the game will crash if loaded in a language that any localized plugin is missing the strings for, it is necessary for all 9 languages' strings to be included with your localized plugin, even if you do not have translations for all 9 languages. To accomplish this, copies of the English (or another language) strings can be renamed to fill the missing language strings. Of course, this will not create translations for these languages, but it will allow for safe plug and play no matter the user's language. Once these "dummy translations" are made, even without full translations, it is good practice to ensure that any base translations are forwarded. For instance, a mod that edits Skyrim's worldspace will overwrite any localized name and revert it to read "Skyrim" in game. To fix any instances of translations reverting due to overwrites, load xEdit and apply a filter for all overwrites in the plugin. Then, having set xEdit's language to the language of the dummy plugin, copy any localized text from the overwritten plugin into the overwriting plugin. When saving in xEdit, make sure not to save the plugin, just the .strings for whatever language you have edited.


Filtering Tree Refs for LOD

After copying all tree references for LOD into your esp, it is ideal to filter these references so that only those with LOD billboards are preserved. The easiest way to obtain a list of which tree records lack billboards is to run xLODGen with your LOD reference plugin loaded. Select the worldspace where the references are added, and only tick the box for "Tree LOD". Generate LOD. The program's log will proceed to list every tree record in the worldspace both with and without LOD. Copy the list of records that lack billboards and save it in a new file. You can now open your LOD reference plugin in xEdit and remove the record types you've listed from your esp. Depending on the area you're copying from, you can reduce the esp's references between 50% and 90%. As references without LOD billboards will not be seen in LOD only cells, these references do nothing but bloat the esp needlessly.