@TechUI/Locales 简介
TechUI Locales (国际化资源包) 是 TechUI 生态系统的语言数据仓库,也是驱动整个框架实现全球化的核心依赖。
与传统的 i18n 方案(一次性加载庞大的 JSON)不同,@techui/locales 采用 "Code-Splitting"(代码分割) 与 "Lazy-Loading"(懒加载) 的设计哲学。它将语言包封装为独立的 JavaScript 模块,配合 TechUI 的核心引擎,实现了毫秒级的环境侦测与按需加载。
一句话总结:按需加载、自动侦测、轻量级的高性能多语言方案。
支持的语言环境
目前官方内置了三种标准语言环境,覆盖了绝大多数业务场景:
| 语言代码 | 描述 | 对应模块路径 |
|---|---|---|
| cn | 简体中文 (Simplified Chinese) | @techui/locales/cn |
| hk | 繁体中文 (Hong Kong Traditional) | @techui/locales/hk |
| en | 英语 (English) | @techui/locales/en |
核心特性 性能优先
异步按需加载 (Async Lazy Load)
这是该库最大的亮点。
- 智能策略:当用户处于中文环境时,系统只会网络请求
cn.js。 - 零浪费:英文或繁体中文的资源完全不会被加载到浏览器中。这显著减少了首屏的资源体积 (Bundle Size) 和内存占用,让应用启动更快。
自动侦测 (Auto Detection)
您无需编写复杂的 if/else 逻辑来判断加载哪个语言包。初始化时,系统会自动按以下优先级“嗅探”用户偏好:
- 本地锁定 (Local Storage):用户之前是否手动切换过语言?
- 浏览器环境 (Navigator):浏览器的首选语言是什么?
- 默认兜底:如果都未匹配,则回退到简体中文 (
cn)。
模块化结构 (Modular)
在包内部,我们采用了 Plugin 分包结构。虽然您引入的是一个 cn 包,但其源码是由 universal (通用)、components (组件)、business (业务) 等多个微模块聚合而成。这意味着官方在维护庞大的翻译库时,依然能保持条理清晰。
安装与使用
安装
bash
npm install @techui/locales场景一:自动加载 (推荐)
在绝大多数 SPA (单页应用) 中,您不需要在代码中显式引入此包。 只需在 TechUIInit 初始化时,让框架自动去处理。
javascript
// main.js
import TechUIInit from "techui-prime";
// ✅ 无需 import "@techui/locales/..."
// 框架内部会自动根据当前环境,动态 import() 对应的语言文件
TechUIInit({
// ...配置项
});场景二:手动/静态引入 (特殊需求)
如果您处于内网环境(无法请求动态 chunks),或者希望将特定语言包死打包进主 bundle 中,可以显式引入:
javascript
// main.js
// ⚠️ 强制引入英文包,不再进行自动侦测和网络请求
import "@techui/locales/en";
import TechUIInit from "techui-prime";
// 初始化时会直接使用内存中已注册的 'en' 数据
TechUIInit({ ... });语言切换与锁定
为了保持极致的轻量化,TechUI 做了一个权衡设计:不支持热重载 (No Hot-Swap)。 这意味着切换语言必须刷新页面。我们提供了配套的工具函数来处理这一流程。
标准切换逻辑
javascript
import { lockLang } from "@techui/utils"; // 工具函数来自 utils 包
const switchLanguage = (langCode) => {
// 1. 锁定用户偏好
// 将 'en', 'hk', 'cn' 写入 LocalStorage
lockLang(langCode);
// 2. 刷新页面
// 页面重载后,Init 函数会优先读取 lockLang 写入的配置
location.reload();
};查看更多细节
TechUI多语言,有独立的章节介绍,请跳转至 i18n 章节进行查看