You are viewing a potentially older version of this package. View all versions.
ResoniteModding-BepisLocaleLoader-1.1.0 icon

BepisLocaleLoader

Loads locale files for Plugins

Date uploaded a week ago
Version 1.1.0
Download link ResoniteModding-BepisLocaleLoader-1.1.0.zip
Downloads 52
Dependency string ResoniteModding-BepisLocaleLoader-1.1.0

This mod requires the following mods to function

ResoniteModding-BepisLoader-1.4.1 icon
ResoniteModding-BepisLoader

A mod loader which allows using BepInEx with Resonite

Preferred version: 1.4.1

README

BepisLocaleLoader

A Resonite mod that Loads locale files for Plugins.

Installation (Manual)

  1. Install BepisLoader for Resonite.
  2. Download the latest release ZIP file (e.g., ResoniteModding-BepisLocaleLoader-1.0.0.zip) from the Releases page.
  3. Extract the ZIP and copy the plugins folder to your BepInEx folder in your Resonite installation directory:
    • Default location: C:\Program Files (x86)\Steam\steamapps\common\Resonite\BepInEx\
  4. Start the game. If you want to verify that the mod is working you can check your BepInEx logs.

Example config using ConfigDescription

private static ConfigEntry<bool> exampleConfigItem;
public override void Load()
{
  exampleConfigItem = Config.Bind("General", "exampleConfigItem", false, new ConfigDescription("exampleConfigItem Description", null, new ConfigLocale("Settings.dev.author.myPlugin.config.Key", "Settings.dev.author.myPlugin.config.Description")));
}

Adding Locale Strings Manually

You can register a single localized string in code with:

LocaleLoader.AddLocaleString(
    "Settings.BepInEx.Core.Config",
    "Reset Configuration",
    force: true,
    authors: "YourName"
);
  • rawString → The key used to look up the string.
  • localeString → The localized text to display.
  • force → If true, always overwrites existing entries.
  • authors → Optional, comma-separated string of authors. Defaults to plugin authors or "BepInEx".

Loading Locale Files from a Plugin

Place a Locale folder next to your plugin DLL (e.g. MyPlugin/Locale/en.json).
Files should follow the LocaleData JSON structure:

{
  "localeCode": "en-US",
  "authors": ["MyName"],
  "messages": {
    "Settings.dev.author.myPlugin": "My Plugin",
    "Settings.dev.author.myPlugin.Breadcrumb": "My Plugin Settings Breadcrumb Title",
    "Settings.dev.author.myPlugin.config.Key": "Example Config Key",
    "Settings.dev.author.myPlugin.config.Description": "Example Config Description."
  }
}

String Shorthand: .T()

To make localization calls cleaner, LocaleLoader defines extension methods .T() that wrap AsLocaleKey and LocaleString.

Examples:

// Basic key lookup
"Settings.MyPlugin.Option".T();

// Key with formatting arguments
"Settings.MyPlugin.Welcome".T("Hello {name}!", "name", userName);

// Multiple arguments
"Settings.MyPlugin.Stats".T(
    ("kills", killCount),
    ("deaths", deathCount)
);

// With format string
"Settings.MyPlugin.Formatted".T("{kills}/{deaths}", 
    ("kills", killCount), 
    ("deaths", deathCount)
);

// Continuous locale updates (useful for dynamic UI)
"Settings.MyPlugin.Timer".T(
    continuous: true, 
    arguments: new Dictionary<string, object> { { "time", elapsedTime } }
);

When to Use force: true

  • Use force: false (default) when you want to avoid overwriting existing locales (safe for mods adding only new keys).
  • Use force: true when your plugin should override existing translations (e.g. testing, fixes, or ensuring your text is applied).

Debugging

  • Loaded plugin locales are tracked in LocaleLoader.PluginsWithLocales.
  • Logs show which files are loaded and how many messages were registered.
  • Errors during JSON parsing will be logged with details.