# gt-next: General Translation Next.js SDK: loadTranslations URL: https://generaltranslation.com/zh/docs/next/api/config/load-translations.mdx --- title: loadTranslations description: loadTranslations() 函数 API 参考 --- ## 概述 使用 `loadTranslations` 指定翻译的加载方式。 默认情况下,你的应用会在生产环境中从 GT CDN 加载翻译。 你可以指定一个 `loadTranslations` 函数,从其他来源加载翻译,例如: * 从应用的打包产物中加载 (最常见) * 从数据库加载 * 从 API 加载 * 从其他 CDN 加载 我们已内置支持从应用打包产物中的本地文件加载翻译。 按照[本指南](/docs/next/guides/local-tx)在你的 Next.js 应用中设置本地翻译。 如果你想手动定义自己的翻译,请参阅[自定义翻译指南](/docs/next/concepts/stand-alone) 以及 [`loadDictionary`](/docs/next/api/config/load-dictionary) 函数。 ## 参考文档 ### 参数 ### 说明 | 类型 | 说明 | | -------- | ------------- | | `locale` | 要加载翻译内容的区域设置。 | ### 返回值 一个 `Promise`,解析结果为一个字典,其中 `id` 映射到给定区域设置的翻译。 *** ## 设置 将 `loadTranslations` 定义为名为 `loadTranslations.js` 或 `loadTranslations.ts` 的文件的默认导出,该文件可放在 `src/` 目录下或项目根目录中。 确保该函数返回一个 Promise,并解析为一个包含给定区域设置翻译内容的对象。 ```js title="src/loadTranslations.js" export default async function loadTranslations(locale) { const translations = await import(`../public/locales/${locale}.json`); return translations.default; }; ``` 如果你想使用其他名称或路径,请在 [`withGTConfig`](/docs/next/api/config/with-gt-config) 中通过 `loadTranslationsPath` 参数传入相对路径。 *** ## 示例 ### 从打包产物中获取翻译 ```js title="src/loadTranslations.js" export default async function loadTranslations(locale) { const translations = await import(`../public/locales/${locale}.json`); return translations.default; }; ``` 配置为使用[本地翻译](/docs/next/guides/local-tx)时,[`gt translate`](/docs/cli/translate) 命令 会将翻译保存到项目文件树中。 ```bash npx gt translate ``` ### 通过 CDN 加载翻译 ```js title="loadTranslations.js" export default async function loadTranslations(locale) { try { const translations = await fetch(`https://your-cdn.com/translations/${locale}.json`); const data = await translations.json(); return data; } catch (e) { console.error(e); return {}; } }; ``` ### 从自有数据库加载翻译 ```js title="loadTranslations.js" export default async function loadTranslations(locale) { try { const translations = await prisma.translation.findUnique({ where: { locale: locale, }, }); return translations; } catch (e) { console.error(e); return {}; } }; ``` **问题:** [`loadTranslations`](/docs/next/api/config/load-translations) 和 [`loadDictionary`](/docs/next/api/config/load-dictionary) 有什么区别? * [`loadTranslations`](/docs/next/api/config/load-translations) 用于为应用定义获取翻译内容时的自定义加载方式。 例如,可以从 CDN、数据库或应用的 打包产物 中加载翻译。 这些翻译通常由机器生成,并由 CLI 工具管理,不太适合用户手动编辑。 * [`loadDictionary`](/docs/next/api/config/load-dictionary) 适用于将 `gt-next` 作为独立库使用的场景。 用户自行提供翻译,不依赖任何翻译基础设施。 *** ## 注意事项 * `loadTranslations` 可让你自定义应用在生产环境中加载翻译的方式。 * 它最常见的用途是添加[本地翻译](/docs/next/guides/local-tx) ## 下一步 * 了解为何你可能需要使用[本地翻译](/docs/next/guides/local-tx) * 参考[自定义翻译指南](/docs/next/concepts/stand-alone)添加你自己的翻译