如何钓鱼本地化API

如何钓鱼本地化API

1How to Fish Localization API是“如何钓鱼”模组的共享依赖API。它允许兼容模组加载自身的语言文件,并在游戏语言变更时更新它们的用户界面。

说明:本描述为中英双语版本,中文内容位于英文内容下方。

注意:本描述为中英双语。中文部分位于英文部分下方。


How to Fish Localization API(英语)

How to Fish Localization API 是供 How to Fish 模组使用的共享依赖 API。它让兼容模组加载自己的语言文件,并在游戏语言切换后更新模组 UI。

主要功能

  • 让每个兼容模组加载自己的外部 JSON 本地化文件。
  • 读取 How to Fish 当前语言,并在语言切换后触发 LanguageChanged 事件。
  • 当前语言或 key 缺失时回退到英语。
  • 为 HowToFish.ModMenu 和 HTFModManager 中的兼容配置项提供标签本地化。

给玩家

这是一个 API/依赖模组,本身不会添加玩法内容。 当其他 How to Fish 模组要求安装 How to Fish Localization API 时,请安装它。

配置项标签兼容属于可选功能。没有注册本地化数据的模组不会被修改。

给模组作者

在项目中引用 HowtoFishLocalizationAPI.dll,并添加 BepInEx 硬依赖:

using System.IO;
using System.Reflection;
using BepInEx;
using HowtoFishLocalizationAPI.Api;

[BepInPlugin(PluginInfo.PLUGIN_GUID, "My Mod", "1.0.0")]
[BepInDependency(HowtoFishLocalizationAPI.PluginInfo.PLUGIN_GUID)]
public sealed class MyPlugin : BaseUnityPlugin
{
    private ModLocalizer _localizer;

    private void Awake()
    {
        string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        _localizer = LocalizationApi.For(PluginInfo.PLUGIN_GUID);
        _localizer.RegisterJson(Path.Combine(directory, "MyMod.Localization.json"));
        LocalizationApi.LanguageChanged += OnLanguageChanged;
    }

    private void OnLanguageChanged(string language)
    {
        // 在这里刷新模组已经创建的 UI 文本。
    }
}

从模组 DLL 自己所在的目录加载 JSON。这样即使模组管理器生成了不同的插件文件夹名,也能正确找到语言文件:

using System.IO;
using System.Reflection;
using HowtoFishLocalizationAPI.Api;

internal static class I18n
{
    private const string FileName = "MyMod.Localization.json";
    private static readonly ModLocalizer Localizer = Load();

    internal static string Text(string key, params object[] args)
    {
        return Localizer.GetLocalizedText(key, args);
    }

    private static ModLocalizer Load()
    {
        string directory = Path.GetDirectoryName(
            Assembly.GetExecutingAssembly().Location);
        ModLocalizer localizer = LocalizationApi.For(PluginInfo.PLUGIN_GUID);
        localizer.RegisterJson(Path.Combine(directory, FileName));
        return localizer;
    }
}

在模组 UI 文本中使用 I18n.Text("your.key")args 参数是可选的,使用标准 string.Format 占位符。

配置项标签

兼容的配置管理器使用以下 key 格式:

modmenu.config.<Section>.<Key>

例如,Controls / OpenWallet 配置项使用 modmenu.config.Controls.OpenWallet。配置行创建时会应用对应标签;缺少 key 时保留原始配置项名称。

本地化文件示例:

{
  "en": {
    "mod.name": "My Mod",
    "mod.description": "A short description of my mod.",
    "modmenu.config.General.Enabled": "General / Enabled"
  },
  "zh-CN": {
    "mod.name": "我的模组",
    "mod.description": "我的模组简介。",
    "modmenu.config.General.Enabled": "常规 / 启用"
  }
}

每个本地化文件都必须包含 en 对象。当前语言或目标 key 缺失时,API 会尝试 en;如果英语中仍缺少该 key,则直接返回 key 本身。

支持的语言代码

  • 英语:en
  • 瑞典语:sv
  • 简体中文:zh-CN
  • 繁体中文:zh-TW
  • 法语:fr
  • 德语:de
  • 意大利语:it
  • 日语:ja
  • 韩语:ko
  • 波兰语:pl
  • 巴西葡萄牙语:pt-BR
  • 俄语:ru
  • 拉丁美洲西班牙语:es-MX
  • 欧洲西班牙语:es-ES
  • 土耳其语:tr
  • 乌克兰语:uk

兼容性

  • 游戏:How to Fish 1.0.4+
  • ModMenu:0.3.3+
  • HFModManager:1.0.1

安装方法

  1. 下载并安装 BepinEx 5 5.4.23.5
  2. 将模组解压到游戏根目录即可,压缩包内置 BepInEx\plugins 路径。

Bug 提交 & 新功能建议

如果你有任何问题或新功能建议,请通过 GitHub Issues 提交,也可以通过 Discord:iceboxcool,或邮箱 764884112@qq.comibox2333@gmail.com 联系我。


如果你喜欢我的模组,请支持我一下吧!

ko-fi 爱发电


How to Fish Localization API(中文)

How to Fish Localization API 是供 How to Fish 模组使用的共享依赖 API。它让兼容模组加载自己的语言文件,并在游戏语言切换后更新模组 UI。

主要功能

  • 让每个兼容模组加载自己的外部 JSON 本地化文件。
  • 读取 How to Fish 当前语言,并在语言切换后触发 LanguageChanged 事件。
  • 当前语言或 key 缺失时回退到英语。
  • 为 HowToFish.ModMenu 和 HTFModManager 中的兼容配置项提供标签本地化。

给玩家

这是一个 API/依赖模组,本身不会添加玩法内容。 当其他 How to Fish 模组要求安装 How to Fish Localization API 时,请安装它。

配置项标签兼容属于可选功能。没有注册本地化数据的模组不会被修改。

给模组作者

在项目中引用 HowtoFishLocalizationAPI.dll,并添加 BepInEx 硬依赖:

using System.IO;
using System.Reflection;
using BepInEx;
using HowtoFishLocalizationAPI.Api;

[BepInPlugin(PluginInfo.PLUGIN_GUID, "My Mod", "1.0.0")]
[BepInDependency(HowtoFishLocalizationAPI.PluginInfo.PLUGIN_GUID)]
public sealed class MyPlugin : BaseUnityPlugin
{
    private ModLocalizer _localizer;

    private void Awake()
    {
        string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        _localizer = LocalizationApi.For(PluginInfo.PLUGIN_GUID);
        _localizer.RegisterJson(Path.Combine(directory, "MyMod.Localization.json"));
        LocalizationApi.LanguageChanged += OnLanguageChanged;
    }

    private void OnLanguageChanged(string language)
    {
        // 在这里刷新模组已经创建的 UI 文本。
    }
}

从模组 DLL 自己所在的目录加载 JSON。这样即使模组管理器生成了不同的插件文件夹名,也能正确找到语言文件:

using System.IO;
using System.Reflection;
using HowtoFishLocalizationAPI.Api;

internal static class I18n
{
    private const string FileName = "MyMod.Localization.json";
    private static readonly ModLocalizer Localizer = Load();

    internal static string Text(string key, params object[] args)
    {
        return Localizer.GetLocalizedText(key, args);
    }

    private static ModLocalizer Load()
    {
        string directory = Path.GetDirectoryName(
            Assembly.GetExecutingAssembly().Location);
        ModLocalizer localizer = LocalizationApi.For(PluginInfo.PLUGIN_GUID);
        localizer.RegisterJson(Path.Combine(directory, FileName));
        return localizer;
    }
}

在模组 UI 文本中使用 I18n.Text("your.key")args 参数是可选的,使用标准 string.Format 占位符。

配置项标签

兼容的配置管理器使用以下 key 格式:

modmenu.config.<Section>.<Key>

例如,Controls / OpenWallet 配置项使用 modmenu.config.Controls.OpenWallet。配置行创建时会应用对应标签;缺少 key 时保留原始配置项名称。

本地化文件示例:

{
  "en": {
    "mod.name": "My Mod",
    "mod.description": "A short description of my mod.",
    "modmenu.config.General.Enabled": "General / Enabled"
  },
  "zh-CN": {
    "mod.name": "我的模组",
    "mod.description": "我的模组简介。",
    "modmenu.config.General.Enabled": "常规 / 启用"
  }
}

每个本地化文件都必须包含 en 对象。当前语言或目标 key 缺失时,API 会尝试 en;如果英语中仍缺少该 key,则直接返回 key 本身。

支持的语言代码

  • 英语:en
  • 瑞典语:sv
  • 简体中文:zh-CN
  • 繁体中文:zh-TW
  • 法语:fr
  • 德语:de
  • 意大利语:it
  • 日语:ja
  • 韩语:ko
  • 波兰语:pl
  • 巴西葡萄牙语:pt-BR
  • 俄语:ru
  • 拉丁美洲西班牙语:es-MX
  • 欧洲西班牙语:es-ES
  • 土耳其语:tr
  • 乌克兰语:uk

兼容性

  • 游戏:How to Fish 1.0.4+
  • ModMenu:0.3.3+
  • HFModManager:1.0.1

安装方法

  1. 下载并安装 BepinEx 5 5.4.23.5
  2. 将模组解压到游戏根目录即可,压缩包内置 BepInEx\plugins 路径。

Bug 提交 & 新功能建议

如果你有任何问题或新功能建议,请通过 GitHub Issues 提交,也可以通过 Discord:iceboxcool,或邮箱 764884112@qq.comibox2333@gmail.com 联系我。