Динамический контент

Краткий обзор работы с динамическим контентом в GT.

Обзор

Динамический контент — это, как правило, любой контент, который может меняться в зависимости от пользователя, контекста, окружения и т. п. В противоположность этому статический контент остаётся неизменным независимо от пользователя, контекста, окружения и т. п.

«Переводить или не переводить»

Иногда нам нужно переводить динамический контент, а иногда — оставлять его как есть.

Хороший пример — адрес электронной почты или имя пользователя. Другой пример — баланс банковского счёта или SSN пользователя. Такие данные (1) вряд ли требуют перевода при отображении приложения на другом языке и (2) могут отличаться (в данном случае — у каждого пользователя).

Пример

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

export default function Greeting(name) {
    return (
        <T id='greeting'>
            Привет, <Var>{name}</Var>!
        </T>
    );
}

Что касается перевода, это дает две преимущества:

  1. Вам не нужно создавать перевод для каждого возможного имени.
    • Используя <Var>, мы генерируем только один перевод, который по сути будет выглядеть так:
      • ¡Hola, $&#123;name&#125;!
    • Если не использовать <Var>, пришлось бы выполнять перевод по запросу для каждого уникального имени:
      • «¡Hola, Alice!», «¡Hola, Bob!», «¡Hola, Charlie!», «¡Hola, David!», ...
  2. Вам также не придется беспокоиться о том, что сами имена будут преобразованы в переведенные формы: (например, «¡Hola, Alicia!», «¡Hola, Roberto!», ...).

Как видите, компонент <Var> следует использовать для оборачивания любого содержимого, которое должно оставаться неизменным независимо от локали. Так мы избегаем необходимости создавать переводы для каждого возможного значения динамического контента.

Оборачивая конфиденциальную информацию в компонент <Var>, вы можете быть уверены, что эта информация не отправляется в General Translations API.

Исключения

Исключения из вышесказанного: (1) в случае вложенного компонента <T>, использованного внутри компонента <Var> (то есть дочерние элементы вложенного компонента <T> будут переведены), или (2) когда данные намеренно передаются в наш API иным способом внутри дочернего элемента компонента <Var> (например, через вызов fetch). Однако это не является предполагаемым использованием компонента <Var> или General Translations API, и подобные действия могут ухудшить время загрузки и производительность.

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

Динамический контент