# node: 本地译文存储 URL: https://generaltranslation.com/zh/docs/node/guides/local-tx.mdx --- title: 本地译文存储 description: 将译文存储在应用 bundle 中,而不是从 CDN 获取 --- ## 什么是本地译文? 默认情况下,`gt-node` 会在 runtime 从 General Translation CDN 拉取译文。启用本地译文后,你可以将翻译文件直接 bundle 到应用中,无需发起任何外部请求。 **默认行为:** GT 默认使用 CDN 存储。只有在你确实需要本地存储带来的特定优势时,才切换到本地存储。 ## 权衡取舍 ### 本地译文的优势 * **响应更快**:无需在 runtime 发起网络请求来获取译文 * **不依赖外部服务**:即使 CDN 不可用,你的应用也能独立运行 * **支持离线使用**:译文是 deployment 产物的一部分 ### 本地译文的缺点 * **bundle 体积增加**:每增加一个受支持的区域设置,都会增大 deployment 体积 * **更新时需要重新部署**:修改译文后需要重新进行一次 deployment ## 设置 ### 第 1 步:创建加载函数 编写一个加载函数,根据区域设置加载翻译 JSON 文件: ```js title="loadTranslations.js" import { readFile } from 'fs/promises'; import path from 'path'; export default async function loadTranslations(locale) { const filePath = path.join(process.cwd(), 'translations', `${locale}.json`); const data = await readFile(filePath, 'utf-8'); return JSON.parse(data); } ``` ### 第 2 步:将其传给 `initializeGT` ```js title="server.js" import { initializeGT } from 'gt-node'; import loadTranslations from './loadTranslations.js'; initializeGT({ defaultLocale: 'en', locales: ['en', 'es', 'fr', 'ja'], projectId: process.env.GT_PROJECT_ID, loadTranslations, }); ``` ### 第 3 步:配置 CLI 运行配置命令,然后选择本地存储: ```bash npx gt configure ``` 出现提示后: * **保存到 CDN?** 选择 "No" * **译文目录:** 输入 `./translations` ### 第 4 步:生成译文 ```bash npx gt translate ``` 这会将翻译文件下载到 `translations/` 目录中。 ## 集成到 build 流程中 将译文生成添加到 build 脚本中,确保译文始终保持最新: ```json title="package.json" { "scripts": { "build": "npx gt translate && " } } ``` ### CI/CD 处理流水线 ```yaml title=".github/workflows/deploy.yml" - name: Generate Translations run: npx gt translate - name: Build Application run: npm run build ``` ## 常见问题 ### 缺少翻译文件 请始终在 build 前先生成译文: ```bash # ❌ 构建时未生成译文 node server.js # ✅ 先生成译文 npx gt translate && node server.js ``` ### 文件路径错误 确保加载函数中的路径与 CLI 的输出目录一致: ```js // ❌ 路径错误 const filePath = path.join(process.cwd(), 'public', `${locale}.json`); // ✅ 与您配置的目录匹配 const filePath = path.join(process.cwd(), 'translations', `${locale}.json`); ``` 本地存储更适合译文较为稳定、无需频繁更新的应用。 ## 下一步 * [CLI `translate` 命令](/docs/cli/translate) — 翻译生成参考文档 * [CLI 配置](/docs/cli/reference/config) — 配置输出目录和存储模式 * [字符串翻译模式](/docs/node/guides/strings) — 了解如何翻译内容