# gt-react: General Translation React SDK: 编译器 URL: https://generaltranslation.com/zh/docs/react/concepts/compiler.mdx --- title: 编译器 description: gt CLI 如何在构建时处理你的 React 源文件 --- `gt` CLI 内置了一个编译器,会在构建时分析你的 React 源文件。它能检测出常见的翻译错误,还可以选择自动用翻译组件包装 JSX。 ## 功能 ### 动态内容检测 检测翻译组件中未包裹的动态内容: ```jsx // ❌ 无效 - 动态内容未包裹 Hello {userName} // ✅ 有效 - 动态内容已包裹在变量组件中 Hello {userName} ``` ### 函数调用校验 检测传给翻译函数的非字面量参数: ```jsx const gt = useGT(); // ❌ 无效 - 模板字面量和字符串拼接 gt(`Hello ${name}`) gt("Hello " + name) // ✅ 有效 - 带变量替换的字符串字面量 gt("Hello, {name}!", { name }) ``` ## 自动 JSX 注入 启用自动 JSX 注入后,编译器会自动用翻译组件包裹可翻译的 JSX 文本,因此你不必再为每段文本手动添加 `` 组件。 ### 启用自动 JSX 注入 将 `enableAutoJsxInjection` 添加到 `gt.config.json` 中: ```json title="gt.config.json" { "files": { "gt": { "output": "public/_gt/[locale].json", "parsingFlags": { "enableAutoJsxInjection": true } } } } ``` ### 注入前后对比 如果不使用自动 JSX 注入,你需要手动包裹文本: ```jsx import { T } from 'gt-react'; function Welcome() { return (

Welcome to our app

); } ``` 启用自动 JSX 注入后,你只需编写普通的 JSX,剩下的交给编译器处理: ```jsx function Welcome() { return

Welcome to our app

; } ``` 编译器会检测可翻译的文本,并在你运行 `npx gt translate` 时自动将其包裹。 ### 编译器会保留的内容 * **用户编写的 `` 组件**会原样保留——编译器不会重复包裹你的代码 * **其他 GT 组件**,如 ``、``、`` 和 ``,也会被原样保留 * **字符串属性** (例如 `placeholder`、`alt`) 不会受影响——只有 JSX 子元素会被包裹 * **非文本内容** (如数字和布尔值) 会被忽略