本地翻译

如何为你的 Next.js 应用设置本地翻译

什么是本地翻译?

本地翻译是存储在你应用程序包中的翻译内容,而不是从 CDN(内容分发网络)获取。

假设你已经在 CD 流程中添加了 gtx-cli translate 命令。 这将为你的应用生成 JSON 格式的翻译文件。 最后一步是将这些翻译从我们的 API 导出到你的应用中,以便可以使用它们。

有两种方式可以实现这一点:

  • 在你应用的包中: 翻译生成后,将其保存到你的应用程序包中。
  • 在 CDN(默认): 在运行时从 CDN 获取翻译内容。

默认情况下,gt-next 会从 General Translation CDN 获取翻译内容,并且当你使用我们的 API 翻译应用时,翻译内容会自动保存到我们的 CDN。

概述

本指南将向你展示如何在你的 Next.js 应用程序包中存储翻译内容,而不是使用像我们这样的外部 CDN。 这意味着翻译内容将存放在你的应用代码中,从而避免依赖外部基础设施。

在本指南中,我们将为你详细介绍:

使用本地翻译的权衡。

如何为你的 Next.js 应用设置本地翻译。


权衡

有哪些好处?

  1. 更快的加载速度: 本地翻译直接从你的应用中提供, 这意味着它们的加载速度会比通过 CDN 提供的翻译更快。

  2. 不依赖外部服务: 你的应用加载翻译的能力不依赖于 CDN 的可用性。 使用 gt-next 时,如果找不到某个语言环境的翻译,应用会自动回退到默认语言并显示原始内容。

有哪些缺点?

  1. 包体积增加: 本地翻译会增加你的应用包体积,因为它们会和你的应用一起被提供。 这意味着你的应用在客户端的加载时间可能会变长。

  2. 内容管理: 如果你想编辑某个翻译(例如,你不喜欢内容在另一种语言中的表达方式), 每次更改后都必须重新部署你的应用以包含新的翻译。


设置

前提条件

确保您已经使用 GT 设置了您的 Next.js 应用程序。 如果没有,请先完成快速开始指南

步骤

./src 目录下添加一个 loadTranslations.[js|ts] 文件,内容如下:

src/loadTranslations.ts
export default async function loadTranslations(locale: string) {
  const t = await import(`../public/_gt/${locale}.json`);
  return t.default;
}
src/loadTranslations.js
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() 以获取有关编写自定义翻译加载器的更多信息。

这份指南怎么样?