轻量、可靠、经线上项目验证的多语言(i18n)方案

解决的痛点

做多语言版本游戏时,常见做法是代码里写一堆 if/else 或把字符串硬编码在 Label 上——改文案要翻代码、换语言得重新发包,而且编辑器里根本看不到真实效果。本插件把多语言做成「挂组件 + 配表」的模式,所见即所得。

主要功能

  • 文本多语言(i18nLabel):给 Label 节点挂上 i18nLabel,属性面板填一个 key(如 "1"),编辑器里立即显示当前语言文本;支持 {0}{1} 占位符,可在代码里传参。普通文本(cc.Label)与富文本(cc.RichText,i18nRichLabel)均支持。对应的配置文件路径:resources/i18n/txt/i18n.js

  • 图片多语言(i18nSprite):给 Sprite 节点挂上 i18nSprite,按 key 自动从 resources/i18n/sprite/{语言}/{key} 加载对应语言图片。静态摆放与运行时动态赋值都支持,切换语言一并刷新。

  • 运行时 API(language 工具类)language.getStr(key, txt?, ...args) 取文本,传入 cc.Label / cc.RichText 组件则在切换语言时自动更新该文本;language.getSprite(key, sprite?) 取精灵图,传入 cc.Sprite 组件则切换语言时自动更新该图片,不传则仅加载当前语言图片一次;language.set(lang) 切换语言,所有已注册文本/图片立即刷新。

  • 编辑器内即时预览:面板一键切换语言,场景中全部 i18nLabel / i18nSprite 实时刷新,无需运行游戏即可核对文案与图片。

  • 开箱即用示例:内置 i18nDemo.prefabTestLanguage.ts,点开即可看到编辑器方式与代码方式的完整用法。挂入场景直接运行,即可体验语言切换功能。

关于富文本:富文本(i18nRichLabel)完全支持,但默认未放入「多语言」右键菜单——绝大多数界面用普通文本,若把富文本也做成菜单项,反而每次挂组件都多一步选择、拖慢拼 UI。需要时给 RichText 节点手动挂载 i18nRichLabel 即可,用法与 i18nLabel 一致。

为什么可靠

  • 已在线上正式项目中实战验证,稳定可用。

  • 支持「无侵入」接入:已有界面无需改结构,给节点挂上组件、填好 key 即可,不改动原有业务逻辑——游戏开发完成后也能补做多语言。

  • 首次启用自动从内置资源初始化 resources/i18nscript/i18n(含示例与配置),无需手动拷贝。
    插件审核中。。敬请期待~