

Allows modders to provide localization for their mods using the game's localization system.
If you are not a mod developer, you can most likely ignore this mod.
The only exception is if you are manually installing mods (instead of using the Thunderstore mod manager)
in which case download this mod and put it into your BepInEx plugins folder.
SideLoader already has its own localization table patcher, and it does not support different languages. My current workaround to that is not perfect, you may have to restart the game after changing language.
Add this mod as dependency to your mod's Thunderstore manifest.
Example:
"dependencies": [
"BepInEx-BepInExPack_Outward-5.4.18",
"Faeryn-LocalizationExtension-1.1.0"
]
Add one or more language files to your mod's lang folder (you will have to create it).
The files should be in the following format: languagekey.ext, where
English, French, German, Italian, Spanish, zeChinese, zeJapanese, zeKorean, zePolish, zePortuguese, zeRussian, zeTurkishcfg is supported.Example:
MyMod.zip
|- plugins
| |- MyMod.dll
| -- lang
| |- English.cfg
| |- Spanish.cfg
| -- French.cfg
|- icon.png
|- manifest.json
-- README.md
The contents of a cfg file is a list of key-value pairs separated by =. Keys are WITHOUT your mod's GUID. For example:
some.key=Some Value
some.key.with_parameter=Some Key With {1} Parameter {2}
Empty lines and lines starting with # or ; are ignored so you can also add comments.
*Note: Parameter numbering starts from 1, not 0. *
Then you can use the game's localization manager for texts in your mod, like so:
LocalizationManager.Instance.GetLoc($"{YourMod.GUID}.some.key");
Or with parameters:
LocalizationManager.Instance.GetLoc($"{YourMod.GUID}.some.key.with_parameter", "param1", "param2");
In case you don't provide a language file for each language, you should also add a file named default.txt into the lang folder
containing the name of your fallback language (which will be used for unsupported languages). Default is English if the file is missing.
For item localization, the key should be in the following format:
/item/[itemID]/name
/item/[itemID]/description
Where [itemID] is the ID of the item in question. Note that this will override the name and description specified in the SideLoader item definition.
Example:
/item/-1234567/name=Example Item
/item/-1234567/description=An item that serves as a good example
Enchantments added by SideLoader require the following key format:
/Enchantment_[enchantmentID]
/DESC_Enchantment_[enchantmentID]
Where [enchantmentID] is the ID of the enchantment in question. Note that this will override the name and description specified in the SideLoader enchantment definition.
Example:
/Enchantment_-1234567=Example Enchantment
/DESC_Enchantment_-1234567=This is an example enchantment
By default, general localization entries are prefixed by mod GUID. If you, for some reason, need to override existing entries,
then the / prefix can be used. For example:
/examplekey
This will override the general localization entry examplekey.
Note: Currently this works reliably only for vanilla Outward entries. Overriding other mods' entries may or may not work.
It is possible to localize other SideLoader mods that do not use LocalizationExtension. Only items and enchantments can be localized this way,
using the aforementioned override mechanism.
If the target mod uses LocalizationExtension, then the additional languages will be added seamlessly. Trying to override existing
languages (for example the original mod has German language support, and you are also adding a German language file) may or may not work.
Simply create a mod, as described in the General usage section while excluding the mod dll (or any SideLoader resource):
ModName_Localization.zip
|- plugins
| -- lang
| |- English.cfg
| |- Spanish.cfg
| -- French.cfg
|- icon.png
|- manifest.json
-- README.md
In the manifest file include the original mod too, as dependency:
"dependencies": [
"BepInEx-BepInExPack_Outward-5.4.18",
"Faeryn-LocalizationExtension-1.1.0",
"OtheMod-OtherAuthor-1.0.0"
]
This way your mod will be compatible with the original mod even as new versions are released, since you are only patching the localization tables.
Note: It's a good idea to distinguish your localization mod from the original, for example by adding your language suffix to the name "OtherMod_SP", and making sure the description is clear about the fact that this is only a localization patch, NOT the full mod.
# or ;)/ prefix)