User:Atap

The Beyond Skyrim Wiki — Hosted by UESP
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[edit]

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[edit]

The .STRINGS format[edit]

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 a crash.

Converting Direct Translations to .STRINGS and Dummy Translations[edit]