# gt-react: General Translation React SDK: decodeVars URL: https://generaltranslation.com/zh/docs/react/api/strings/decode-vars.mdx --- title: decodeVars description: decodeVars() 字符串函数的 API 参考文档 --- {/* 自动生成:请勿直接编辑。请改为编辑 content/docs-templates/ 中的 template。 */} ## 概述 由于 `declareVar` 会向源文本中添加与 ICU 兼容的标记,因此可能会对现有的字符串处理逻辑造成影响。 `decodeVars` 函数用于从包含 `declareVar` 标记的字符串中提取原始值。 ```jsx function getGreeting({ name }) { const greeting = "Hello, " + declareVar(name); // "Hello, {_gt_, select, other {Brian}}" const decodedGreeting = decodeVars(greeting); // "Hello, Brian" <- 该字符串与从未调用过 `declareVar` 时的结果相同 return decodedGreeting; } ``` 因为 `declareVar` 只会影响已编码的字符串,所以它仅用于源字符串,对已翻译的字符串不起作用。 **字符串处理:** 如果你需要用现有的字符串处理逻辑来处理包含 `declareVar` 标记的字符串,请使用 `decodeVars`。 ## 参考 ### 参数 | 名称 | 类型 | 说明 | | ----------- | -------- | ---------------------------------- | | `icuString` | `string` | 包含由 `declareVar` 调用生成的 ICU 标记的字符串。 | ### 返回值 一个移除了 ICU 标记并保留原始变量值的字符串。 *** ## 示例 ### 基本用法 从字符串中的变量标记提取原始值。 ```jsx copy import { declareVar, decodeVars } from 'gt-react'; const encodedVar = declareVar(name); // "{_gt_, select, other {Alice}}" const decodedVar = decodeVars(encodedVar); // "Alice" ``` ### 多个变量 `decodeVars` 可与多个变量一起使用。 ```jsx copy import { declareVar, decodeVars } from 'gt-react'; const name1 = "Alice"; const name2 = "Bob"; const encodedVar = "Hello, " + declareVar(name1) + "! My name is " + declareVar(name2); // "Hello, {_gt_, select, other {Alice}}! My name is {_gt_, select, other {Bob}}" const decodedVar = decodeVars(encodedVar); // "Hello, Alice! My name is Bob" ``` *** ## 注意事项 * 仅在需要处理包含 `declareVar` 标记的字符串时,才使用 `decodeVars` * 该函数专门用于处理由 `declareVar` 创建的 ICU MessageFormat 模式 * 原始变量值会按编码前的样子完整保留 * 不会影响翻译处理,只会移除用于字符串操作的标记 * `decodeVars` 不是通用的 ICU MessageFormat 解析器,不应用于任意 ICU 字符串 ## 后续步骤 * 关于如何标记动态内容,请参阅 [`declareVar`](/docs/react/api/strings/declare-var) * 关于如何创建静态函数调用,请参阅 [`derive`](/docs/react/api/strings/derive) * 关于字符串编码与解码的模式,请参阅 [`msg`](/docs/react/api/strings/msg)