Difference between revisions of "User:Atap"
(→The .STRING format) |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
== Advantages Over Direct Translation == | == Advantages Over Direct Translation == | ||
− | The vast majority of translations available on | + | 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. | 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. | ||
Line 15: | Line 15: | ||
− | == The . | + | == 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 [https://en.uesp.net/wiki/Skyrim_Mod:String_Table_File_Format the UESP], but this information is not necessary for localization. | 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 [https://en.uesp.net/wiki/Skyrim_Mod:String_Table_File_Format 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 | + | 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 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. | ||
Line 24: | Line 24: | ||
.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. | .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 | + | 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 == | == 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. | ||
+ | |||
+ | == Cleaning Plugins Intended for Merge == | ||
+ | Though there are plenty of guides for cleaning plugins intended for players, the process of cleaning plugins for development is not well explained. These two processes differ significantly, and submitting a plugin cleaned for play for merge can result in issues worse than submitting a "dirty" plugin. Still, the best practice is to submit cleaned plugins for merge, and this guide is intended to detail the steps to do so. '''This process should only be done once work on a plugin is complete and tested. Though it will render the plugin ideal for merging, it may cause issues if the plugin is loaded into the game and played. If you are not making plugins for a collaborative team that will be merged into a master plugin, this guide is not for you.''' | ||
+ | |||
+ | This guide makes heavy use of xEdit. Version should not be a huge concern, but ensure no matter what version you are using to not use the QuickAutoClean tool. This tool is great in ensuring a plugin is safe for play but creates bloat when an autocleaned plugin is merged into its master. | ||
+ | |||
+ | Overwritten records | ||
+ | By far the most common dirty edits are edits to existing references from plugins that your plugin loads as a master. In order to filter | ||
+ | |||
+ | == Worldspace Limitations == | ||
+ | In the years following Skyrim's release, much has been learned via trial and error regarding the limitations of the game's engine. This article intends to shine a light on some of these issues so that they do not need to be rediscovered. |
Latest revision as of 17:19, 27 May 2024
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.
Contents
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 error messages.
Converting Direct Translations to .STRINGS[edit]
Dummy Translations[edit]
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.
Cleaning Plugins Intended for Merge[edit]
Though there are plenty of guides for cleaning plugins intended for players, the process of cleaning plugins for development is not well explained. These two processes differ significantly, and submitting a plugin cleaned for play for merge can result in issues worse than submitting a "dirty" plugin. Still, the best practice is to submit cleaned plugins for merge, and this guide is intended to detail the steps to do so. This process should only be done once work on a plugin is complete and tested. Though it will render the plugin ideal for merging, it may cause issues if the plugin is loaded into the game and played. If you are not making plugins for a collaborative team that will be merged into a master plugin, this guide is not for you.
This guide makes heavy use of xEdit. Version should not be a huge concern, but ensure no matter what version you are using to not use the QuickAutoClean tool. This tool is great in ensuring a plugin is safe for play but creates bloat when an autocleaned plugin is merged into its master.
Overwritten records By far the most common dirty edits are edits to existing references from plugins that your plugin loads as a master. In order to filter
Worldspace Limitations[edit]
In the years following Skyrim's release, much has been learned via trial and error regarding the limitations of the game's engine. This article intends to shine a light on some of these issues so that they do not need to be rediscovered.