Skip to content

本地化与关键词

RitsuLib 将本地化明确分为两层:

  • 游戏原版的 LocString 模型键管线 — 模型标题、描述等游戏内文本
  • 框架自带的 I18N 辅助本地化 — Mod 自身的辅助文本

同时提供轻量关键词注册器,用来统一悬浮提示和关键词文本。

游戏原版模型本地化

游戏通过 LocString 和各本地化表来读取模型文本,常见表包括:

  • cardsrelicspowerscharacterscard_keywords

这些键建立在 ModelId.Entry 之上。

RitsuLib 的作用仅限于让模型身份更稳定、更可预测,从而使键更容易编写。具体的模型 ID 规则见 内容注册规则


CreateLocalizationCreateModLocalization

I18N 是 RitsuLib 提供的辅助文本本地化系统,独立于游戏的 LocString

csharp
var i18n = RitsuLibFramework.CreateModLocalization(
    modId: "MyMod",
    instanceName: "MyMod-I18N",
    resourceFolders: ["MyMod.localization"],
    pckFolders: ["res://MyMod/localization"]);

资源合并顺序

I18N 支持三类来源:

  1. 文件系统目录
  2. 嵌入资源
  3. PCK 目录

合并策略是"先到先得":

  • 先加载文件系统目录
  • 嵌入资源只补缺失键
  • PCK 再补剩余缺失键

语言代码归一化

I18N 在加载 JSON 之前会规范化语言代码:

输入归一化结果
enen_usengeng
zhzh_cnzh_hanszhs
jaja_jpjpn

无法解析的语言默认回退到 eng


关键词注册器

ModKeywordRegistry 用于统一定义关键词及其悬浮提示:

csharp
var keywords = RitsuLibFramework.GetKeywordRegistry("MyMod");

keywords.RegisterCardKeywordOwnedByLocNamespace(
    localKeywordStem: "brew",
    iconPath: "res://MyMod/ui/keywords/brew.png");

在代码里使用关键词

常用辅助方法:

方法说明
ModKeywordRegistry.CreateHoverTip(id)创建悬浮提示
ModKeywordRegistry.GetTitle(id)获取标题
ModKeywordRegistry.GetDescription(id)获取描述
keywordId.GetModKeywordCardText()获取卡牌文本
enumerable.ToHoverTips()批量转换为悬浮提示

Card pile 与顶栏按钮的悬浮提示

ModCardPileRegistry / ModTopBarButtonRegistry 注册的合格 id 分别由 GetQualifiedCardPileIdGetQualifiedTopBarButtonId 生成。static_hover_tips 中的键与关键词相同:以注册 id 为 stem,即 {id}.title.description(card pile 另有 {id}.empty)。


Ancient 对话本地化

RitsuLib 内置了 AncientDialogueLocalization,它有两个作用:

  • 提供从本地化键扫描对话的辅助 API
  • 在游戏原版 AncientDialogueSet.PopulateLocKeys 之前,自动为已注册的 Mod 角色追加基于本地化定义的 Ancient 对话

键格式与原版保持一致:

键组件说明
<ancientEntry>.talk.<characterEntry>.<dialogueIndex>-<lineIndex>.ancientAncient 台词
<ancientEntry>.talk.<characterEntry>.<dialogueIndex>-<lineIndex>.char角色台词
可选后缀 r重复对话
可选后缀 .sfx音效
可选后缀 -visit访问覆盖
可选后缀 -attackArchitect 专用攻击者覆盖

推荐分工

用途工具
游戏模型的文本(标题、描述)游戏原版 LocString
Mod 自有辅助文本(设置页、说明)I18N
可复用关键词定义ModKeywordRegistry
Ancient 对话本地化键 + AncientDialogueLocalization