Components

<T>

<T> 组件的 API 参考

概述

<T> 组件是 gt-react 中的主要翻译方法。

<T id="example"> // [!code highlight]
    Today, I went to
    {" the store"}
    <p>
        to <b>buy</b> some <i>groceries</i>.
    </p>
</T> 

<T> 组件支持翻译纯文本以及复杂的 JSX 结构。 此外,它还提供了处理变量、复数和特定上下文翻译的功能。

构建时翻译: <T> 的翻译在构建时进行。 这意味着翻译会在部署前完成,以减少延迟。 请确保按照此处的部署指南操作。

参考

属性

PropTypeDefault
context??
string
undefined
id?
string
-
children?
any
-

描述

属性描述
children需要被翻译的内容。可以包含纯文本或 JSX 结构。
id翻译字符串的唯一标识符。确保在应用中实现一致的翻译。
context用于细化翻译的额外上下文。适用于解决歧义短语。

返回值

React.JSX.Element|undefined,包含根据所提供配置渲染的翻译内容或回退内容。


行为

生产环境

在 CD 流程中,任何位于 <T> 内部的子元素都会在你的应用部署前被翻译。 这确保了所有语言环境下的快速加载,但只能翻译构建时已知的内容。

生成后,翻译内容会根据你的配置(1)存储在 CDN,或(2)存储在应用的构建输出中。 之后,翻译后的内容会被提供给你的用户。 如果找不到翻译内容,则会回退到原始内容。

请务必遵循此处的部署指南

开发环境

在开发过程中,<T> 函数会按需翻译内容。 这对于原型设计你的应用在不同语言下的外观非常有用。 请记得在环境中添加 Dev API 密钥以启用此行为。

加载时,除非语言相近(如 en-US 与 en-GB),否则 <T> 会返回 undefined,不过这种行为可以通过渲染设置自定义。 如果发生错误,<T> 会返回原始内容。

在开发环境中按需翻译时,你会看到延迟。 这种延迟在生产构建时不会出现,因为所有内容都会提前翻译好。


示例

基本用法

<T> 组件可以使用 id 和其子元素来翻译简单字符串。 请记住,<T> 组件必须在 <GTProvider> 内部使用,才能访问翻译内容。

SimpleTranslation.jsx
import { T } from 'gt-react';

export default function Greeting() {
    return (
        <T id="greeting"> // [!code highlight]
            Hello, world!
        </T> 
    );
}

使用变量

<T> 组件可以在翻译中包含变量,以实现动态内容。

DynamicGreeting.jsx
import { T, Var } from 'gt-react';

export default function DynamicGreeting(user) {
    return (
        <T id="greeting">
            Hello, <Var>{user.name}</Var>! // [!code highlight]
        </T>
    );
}

使用复数

<T> 组件还支持通过 <Plural> 组件实现复数形式。

ItemCount.jsx
import { T, Plural } from 'gt-react';

export default function ItemCount({ count }) {
    return (
        <T id="item_count">
            <Plural n={count}  
                singular={<>You have an item.</>}  
                plural={<>You have items.</>}  
            />  // [!code highlight]
        </T>
    );
}

限制

<T> 组件不会翻译动态内容。

DynamicContent.jsx
import { T } from 'gt-react';

export default function DynamicContent({greeting}) {
    return (
        <T>
            {greeting} // will create an error // [!code highlight]
        </T>
    );
}

<T> 函数会翻译其后代内容。

Example.jsx
import { T } from 'gt-react';

const ValidTranslation = ({ children }) => (<div><b>{children}</b></div>);

const InvalidTranslation = ({ children }) => (<div><b>No translation</b></div>);

export default function Example() {
    return (
        <T>
            <div><b>This is valid!</b></div> // will be translated // [!code highlight]

            <ValidTranslation> // will be translated // [!code highlight]
                Hello, world! // [!code highlight]
            </ValidTranslation> // [!code highlight]

            <InvalidTranslation /> // will not be translated
        </T>
    );
}

注意: 一个很好的经验法则是,任何字面上位于文件中两个 <T> 之间的内容都会被翻译。 你始终可以添加另一个 <T> 来翻译未被翻译的内容,但不推荐嵌套 <T> 组件。


注意事项

  • <T> 组件用于在你的应用中翻译内容。它是 gt-react 中本地化的主要方式。
  • 使用 <T> 组件可以翻译纯文本或 JSX 结构,包括变量和复数形式。
  • 请确保 <T> 组件被包裹在 <GTProvider> 中,以便访问翻译上下文。

后续步骤

这份指南怎么样?