本地翻译
如何为你的 Next.js 应用设置本地翻译
什么是本地翻译?
本地翻译是存储在你应用程序包中的翻译内容,而不是从 CDN(内容分发网络)获取。
假设你已经在 CD 流程中添加了 gtx-cli translate
命令。
这将为你的应用生成 JSON 格式的翻译文件。
最后一步是将这些翻译从我们的 API 导出到你的应用中,以便可以使用它们。
有两种方式可以实现这一点:
- 在你应用的包中: 翻译生成后,将其保存到你的应用程序包中。
- 在 CDN(默认): 在运行时从 CDN 获取翻译内容。
默认情况下,gt-next
会从 General Translation CDN 获取翻译内容,并且当你使用我们的 API 翻译应用时,翻译内容会自动保存到我们的 CDN。
概述
本指南将向你展示如何在你的 Next.js 应用程序包中存储翻译内容,而不是使用像我们这样的外部 CDN。 这意味着翻译内容将存放在你的应用代码中,从而避免依赖外部基础设施。
在本指南中,我们将为你详细介绍:
使用本地翻译的权衡。
如何为你的 Next.js 应用设置本地翻译。
权衡
有哪些好处?
-
更快的加载速度: 本地翻译直接从你的应用中提供, 这意味着它们的加载速度会比通过 CDN 提供的翻译更快。
-
不依赖外部服务: 你的应用加载翻译的能力不依赖于 CDN 的可用性。 使用
gt-next
时,如果找不到某个语言环境的翻译,应用会自动回退到默认语言并显示原始内容。
有哪些缺点?
-
包体积增加: 本地翻译会增加你的应用包体积,因为它们会和你的应用一起被提供。 这意味着你的应用在客户端的加载时间可能会变长。
-
内容管理: 如果你想编辑某个翻译(例如,你不喜欢内容在另一种语言中的表达方式), 每次更改后都必须重新部署你的应用以包含新的翻译。
设置
前提条件
确保您已经使用 GT 设置了您的 Next.js 应用程序。 如果没有,请先完成快速开始指南。
步骤
在 ./src
目录下添加一个 loadTranslations.[js|ts]
文件,内容如下:
export default async function loadTranslations(locale: string) {
const t = await import(`../public/_gt/${locale}.json`);
return t.default;
}
export default async function loadTranslations(locale) {
const t = await import(`../public/_gt/${locale}.json`);
return t.default;
}
在项目根目录中运行以下命令,当询问是否要将翻译保存在 GT CDN 上时,选择"No"选项。
npx gtx-cli configure
当询问翻译目录的路径时,输入 ./public/_gt
。
或者,您可以手动配置 gt.config.json
文件以使用本地翻译。
有关更多信息,请参阅 CLI 配置 文档。
现在,当您运行翻译命令时,翻译将自动下载并包含在您的代码库中。
npx gtx-cli translate
然后 loadTranslations
函数将用于将这些翻译加载到您的应用程序中。
就是这样!您的应用程序现在将只从本地文件加载翻译。
进一步自定义
您可以进一步自定义 loadTranslations
函数,以从其他来源加载翻译,例如您的数据库或您自己的 CDN。
有关更多信息,请参阅 loadTranslations()
文档。
注意事项
- 本地翻译是一种替代从 CDN 获取翻译的方法。
- 使用本地翻译有其优缺点,相关内容在权衡部分进行了讨论。
后续步骤
- 查看
loadTranslations()
以获取有关编写自定义翻译加载器的更多信息。
这份指南怎么样?