# General Translation React SDKs (gt-react, gt-next): declareVar URL: https://generaltranslation.com/zh/docs/react/reference/functions/declare-var.mdx --- title: declareVar description: General Translation gt-react 中 declareVar 的 API 参考,用于在派生内容中标记不可翻译的变量。 --- `declareVar` 函数用于在 [`derive`](/docs/react/reference/functions/derive) 内容中标记不应被翻译的动态内容,并在 运行时 作为变量处理。它是 [``](/docs/react/reference/components/var) 组件对应的字符串形式。 *可用于 `gt-react`、`gt-next`、`gt-tanstack-start` 和 `gt-react-native`。示例从 `gt-react` 导入;请改为从你的框架对应的包中导入。* ## 概览 [#overview] 将动态值包装在一个由 `derive` 分析的函数中。`declareVar` 会把它包装成与 ICU 兼容的占位符,并在运行时解析回原始值。 ```tsx function getGreeting(name) { return 'Hello, ' + declareVar(name); // "Hello, {_gt_, select, other {Brian}}" } gt(`${derive(getGreeting(name))}. How are you?`); // "Hello, Brian. How are you?" ``` *注意:`declareVar` 只能在由 [`derive`](/docs/react/reference/functions/derive) 调用的函数中使用。若要移除用于 string 处理的 ICU 标记,请使用 [`decodeVars`](/docs/react/reference/functions/decode-vars)。* ## 工作方式 [#how-it-works] 当 `declareVar` 包装某个值时,它会: 1. 将该值转换为 ICU `select` 语句格式。 2. 将其标记为动态内容,以便进行翻译处理。 3. 在翻译哈希计算中将其排除。 4. 保留原始值,用于运行时插值。 输出结果是一个兼容 ICU MessageFormat 的字符串: ```tsx declareVar('John'); // → "{_gt_, select, other {John}}" ``` ## 参数 [#parameters] | 参数 | 描述 | 类型 | 可选 | 默认值 | | ----------------------- | --------------- | -------------------------------------------------- | -- | --- | | [`variable`](#variable) | 要标记为变量的动态值。 | `string \| number \| boolean \| null \| undefined` | 否 | — | | [`options`](#options) | 例如 `$name` 等选项。 | `object` | 是 | — | ### `variable` [#variable] **类型** `string | number | boolean | null | undefined` · **必填** 要标记成变量的动态值。 ### `options` [#options] **类型** `object` · **可选** 变量的选项。`options.$name` (`string`) 用于为翻译上下文设置变量名,类似于 [``](/docs/react/reference/components/var) 组件上的 `name` prop。 ## 返回值 [#returns] **类型** `string` 一个包含 ICU 兼容标记的 string,可保留原始值,并在运行时正确解析。 ## 示例 [#examples] ```tsx title="BasicUsage.tsx" import { derive, declareVar, gt } from 'gt-react'; function getGreeting(name) { return `Hello, ${declareVar(name)}!`; } function Component() { const name = 'Brian'; const message = gt(`${derive(getGreeting(name))} Welcome back.`); return

{message}

; } ``` ```tsx title="WithOtherFunctions.tsx" import { declareVar, derive, useGT } from 'gt-react'; function Component({ name1, name2 }) { const gt = useGT(); const message = gt('Hello, {name1}! My name is ' + derive(declareVar(name2)), { name1 }); return

{message}

; // "你好,Brian!我叫 Archie" } ``` ## 注意事项 [#notes] * 仅在由 [`derive`](/docs/react/reference/functions/derive) 调用的函数内使用 `declareVar`。 * 它会添加 ICU 标记,可能会干扰字符串处理;需要时请使用 [`decodeVars`](/docs/react/reference/functions/decode-vars) 提取原始值。 * 变量不会被翻译,并会在运行时保留。 * 关于 JSX 形式,请参见 [``](/docs/react/reference/components/var) 组件。