翻译动态内容

如何在 Next.js 服务器组件中翻译动态内容

概述

本指南将带您了解如何在 Next.js 服务器组件中使用 <Tx> 组件tx() 函数来翻译动态内容。

在本指南结束时,您将学会如何正确使用这些组件和函数的语法。

我们将涵盖以下内容:

什么是动态内容?

什么时候应该翻译动态内容?

如何使用 <Tx> 组件

如何使用 tx() 函数

示例

生产环境注意事项

常见陷阱

什么是动态内容?

动态内容是指在构建时无法确定的内容。

这些内容可以包括变量、用户名、输入字段等。

例如,以下就是动态内容:

const username = 'John Doe';
<p>Your username is {username}</p>

何时应翻译动态内容?

在大多数情况下,你可以使用 Variable ComponentsBranching Components 来处理动态内容。

这些组件专为配合 <T> 组件处理动态内容而设计,因此我们建议尽可能使用它们。

然而,在某些情况下,你需要按需翻译动态内容。

例如,如果你有一条由用户创建的聊天消息,并希望以不同的语言显示它,你可以使用 gt-next 实现按需翻译。

如何使用 <Tx> 组件

<Tx> 组件仅可用于 Next.js 的服务端组件。 这是因为它会使用 API 密钥调用 General Translation API,而出于安全原因,该密钥只在服务端可用。

import { Tx } from 'gt-next';

const message = 'Hello, world!';
<Tx>{message}</Tx>

只需将你想要翻译的任意 JSX 内容包裹在 <Tx> 组件中即可。

<Tx> 组件会按需翻译内容,并以异步方式渲染翻译后的内容。

更多信息请参见 API 参考

如何使用 tx() 函数

tx() 函数仅可在 Next.js 服务器组件中使用。 这是因为它通过 API 密钥调用 General Translation API,而该密钥出于安全原因只在服务器端可用。

tx() 函数是一个服务端函数,可用于动态翻译字符串。

import { tx } from 'gt-next/server';

const message = 'Hello, world!';
const translatedMessage = await tx(message);

tx() 函数返回一个 promise,解析后得到翻译后的字符串。

查看更多信息,请参阅 API 参考

示例

渲染动态内容

import { Tx } from 'gt-next';

export default function ChatMessage({ message }: { message: ReactNode }) {
  return (
    <Tx>{message}</Tx>
  );
}

翻译字符串

import { tx } from 'gt-next/server';

export default async function ChatMessage({ message }: { message: string }) {
  const translatedMessage = await tx(message);
  return (
    <div>{translatedMessage}</div>
  );
}

生产环境注意事项

<Tx> 组件和 tx() 函数在开发环境和生产环境中的行为是相同的。

无论你使用哪种类型的 API 密钥,行为都是一致的。 在这两种情况下,翻译都是实时按需完成的。

常见陷阱

不必要地使用 <Tx>tx()

只有在你确实无法使用 <T> 组件配合 变量组件分支组件 时,才应该使用 <Tx> 组件或 tx() 函数。

在不需要的情况下使用 <Tx>tx() 会浪费资源,并且会很快用完你的 API 配额。

此外,由于翻译是按需完成的,你的内容渲染速度也会变慢。

这份指南怎么样?