词元发现
“词条发现”是 SDK 判断哪些内容需要翻译的方式——它会根据您编写界面的方式自动完成。共有四个基本构件,分别对应不同形态的内容。
t()——内联字符串
核心方法。传入源文本,它会返回当前语言的译文(如果该语言尚未就绪,则返回源文本本身)。可选的 category 用于将相关短语分组,并作为上下文传给机器翻译;params 用于填充 {placeholders}。
const t = useT();
// t(phrase, category?, params?)
t('Hello, {name}!', 'Greetings', { name }); <Translate>——内容块
包裹一段标记区域后,SDK 会将其分词为一个内容块(每个文本节点成为一个短语),并在每次语言区域变化时重新翻译整个内容块。它通过由内容和类别派生的稳定 ID 作为键,因此同一个内容块在多次渲染和重新加载之间都能被识别。
<Translate category="Home">
<p>Welcome to our store. Browse the catalog in your language.</p>
</Translate> <Phrase>——一个带标记的句子
当句子包含内联标记或插值时,<Phrase> 会将其作为单个可翻译单元保留——因此“Hi Sarah, you have 3 items”会被翻译成一句自然的完整句子,而不是零散的片段。它支持参数和复数处理。
<Phrase category="Cart" params={{ name: 'Sarah', count: 3 }}>
Hi %name%, you have %count% items in your cart.
</Phrase> 占位符标记。请将插值写作 {name}。在框架已占用 { } 的标记中(JSX、Vue、Svelte),请改用 %name%——SDK 在捕获短语时会将其还原为 {name}。
<DontTranslate> — 保持原样
品牌名称、代码、标识符、地址——标记一个永不翻译的区域。它会渲染为 translate="no",并且会被发现流程完全跳过。
<p>Welcome! <DontTranslate>This sentence always stays in English.</DontTranslate> Thanks for visiting!</p> 只有使用写入密钥才能进行发现。在浏览器中,您发布的是只读密钥,因此 SDK 不会注册任何内容——它只会获取已存在的翻译。注册属于开发阶段的操作。请参阅密钥与环境。