Components

T

Справочник API по компоненту <T>

Обзор

Компонент <T> — основной способ перевода в gt-next.

<T>
    Сегодня я ходил в
    {" магазин"}
    <p>
        , чтобы <b>купить</b> <i>продукты</i>.
    </p>
</T>

Компонент <T> поддерживает перевод как простого текста, так и сложных JSX‑структур. Кроме того, он предоставляет возможности для работы с переменными, формами множественного числа и контекстными переводами.

Перевод на этапе сборки: Переводы с использованием <T> выполняются на этапе сборки. Это означает, что перевод выполняется до развертывания, чтобы снизить задержку. Обязательно следуйте руководству по быстрому развертыванию.


Справка

Свойства

Prop

Type

Описание

PropОписание
childrenСодержимое для перевода. Может включать обычный текст или структуры JSX.
idУникальный идентификатор переводимой строки. Обеспечивает единообразие перевода во всём приложении.
contextДополнительный контекст для уточнения перевода. Полезен для разрешения неоднозначных формулировок.

Возвращает

React.JSX.Element | undefined — отрисованный перевод или запасной контент в соответствии с указанной конфигурацией.


Поведение

Продакшен

Во время CD любые дочерние элементы внутри <T> будут переведены до развертывания приложения. Это обеспечивает быструю загрузку для всех локалей, но переводится только контент, известный на этапе сборки.

После генерации переводы либо (1) сохраняются в CDN, либо (2) включаются в сборочный артефакт вашего приложения — в зависимости от конфигурации. Затем переведенный контент отдается пользователям. Если перевод не найден, будет показан исходный контент.

Обязательно следуйте руководству по деплою.

Разработка

Во время разработки функция <T> будет переводить контент по требованию. Это полезно для прототипирования того, как ваше приложение будет выглядеть на разных языках. Не забудьте добавить Dev API key в переменные окружения, чтобы включить это поведение.

Во время загрузки <T> вернёт undefined, если только языки не близки (en-US и en-GB); это поведение можно настроить параметрами рендера. Если произойдёт ошибка, <T> вернёт исходный контент.

В режиме разработки вы заметите задержку при переводе по требованию. Этой задержки не будет в production-сборках, если только контент не переводится по требованию явно, то есть при использовании <Tx> или tx.


Примеры

Базовое использование

<T> переведёт своё содержимое.

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

export default function Greeting() {
    return (
        <T>
            Привет, мир!
        </T>
    );
}

С переменными

Вы можете использовать компонент <Var>, чтобы пометить дочерние элементы как переменные. Так можно выделить содержимое, которое не должно переводиться. Обычно <Var> оборачивает динамическое содержимое.

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

export default function DynamicGreeting(user) {
    return (
        <T>
            Здравствуйте, <Var>{user.name}</Var>!
        </T>
    );
}

Работа с множественным числом

Компонент <T> также поддерживает склонение по числу через компонент <Plural>.

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

export default function ItemCount({ count }) {
    return (
        <T>
            <Plural n={count} 
                singular={<>У вас один товар.</>} 
                plural={<>У вас есть товары.</>} 
            />
        </T>
    );
}

Ограничения

Компонент <T> не переводит динамический содержимый контент.

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

export default function DynamicContent({greeting}) {
    return (
        <T>
            {greeting} {/* приведёт к ошибке */}
        </T>
    );
}

Функция <T> переводит свои дочерние узлы.

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

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

const InvalidTranslation = ({ children }) => (<div><b>Без перевода</b></div>);

export default function Example() {
    return (
        <T>
            <div><b>Это корректно!</b></div> {/* будет переведено */}

            
            <ValidTranslation>
                Привет, мир!  {/* будет переведено */}
            </ValidTranslation> 

            <InvalidTranslation /> {/* переведено не будет */}
        </T>
    );
}

Примечание: Хорошее практическое правило: любой контент, который находится непосредственно между двумя <T> в файле, будет переведён. Вы всегда можете добавить ещё один <T>, чтобы перевести контент, который не переводится, хотя вложенные компоненты <T> не рекомендуются.


Примечания

  • Компонент <T> предназначен для перевода содержимого в вашем приложении. Это основной способ локализации в gt-next.
  • Используйте компонент <T> для перевода простого текста или JSX‑структур, включая переменные и множественное число.
  • Если вы используете компонент <T> на клиенте, убедитесь, что он обёрнут в <GTProvider>, чтобы получить доступ к контексту перевода.

Следующие шаги

  • Для переводов по запросу ознакомьтесь с компонентом <Tx>.
  • Изучите более продвинутые возможности в разделе справки по <T>.
  • Для перевода строк ознакомьтесь с tx, getGT и useGT.

Насколько полезно это руководство?

T