Динамический контент
Краткий обзор работы с динамическим контентом в GT.
Обзор
Динамический контент — это, как правило, любой контент, который может меняться в зависимости от пользователя, контекста, окружения и т. п. В противоположность этому статический контент остаётся неизменным независимо от пользователя, контекста, окружения и т. п.
«Переводить или не переводить»
Иногда нам нужно переводить динамический контент, а иногда — оставлять его как есть.
Хороший пример — адрес электронной почты или имя пользователя. Другой пример — баланс банковского счёта или SSN пользователя. Такие данные (1) вряд ли требуют перевода при отображении приложения на другом языке и (2) могут отличаться (в данном случае — у каждого пользователя).
Пример
import { T, Var } from 'gt-next'
export default function Greeting(name) {
return (
<T id='greeting'>
Привет, <Var>{name}</Var>!
</T>
);
}Что касается перевода, это дает две преимущества:
- Вам не нужно создавать перевод для каждого возможного имени.
- Используя
<Var>, мы генерируем только один перевод, который по сути будет выглядеть так:¡Hola, ${name}!
- Если не использовать
<Var>, пришлось бы выполнять перевод по запросу для каждого уникального имени:- «¡Hola, Alice!», «¡Hola, Bob!», «¡Hola, Charlie!», «¡Hola, David!», ...
- Используя
- Вам также не придется беспокоиться о том, что сами имена будут преобразованы в переведенные формы: (например, «¡Hola, Alicia!», «¡Hola, Roberto!», ...).
Как видите, компонент <Var> следует использовать для оборачивания любого содержимого, которое должно оставаться неизменным независимо от локали.
Так мы избегаем необходимости создавать переводы для каждого возможного значения динамического контента.
Оборачивая конфиденциальную информацию в компонент <Var>, вы можете быть уверены, что эта информация не отправляется в General Translations API.
Исключения
Исключения из вышесказанного: (1) в случае вложенного компонента <T>, использованного внутри компонента <Var> (то есть дочерние элементы вложенного компонента <T> будут переведены),
или (2) когда данные намеренно передаются в наш API иным способом внутри дочернего элемента компонента <Var> (например, через вызов fetch).
Однако это не является предполагаемым использованием компонента <Var> или General Translations API, и подобные действия могут ухудшить время загрузки и производительность.
Насколько полезно это руководство?