# General Translation Key Concepts: Динамический контент
URL: https://generaltranslation.com/ru/docs/key-concepts/dynamic-content.mdx
---
title: Динамический контент
description: Краткий обзор работы с динамическим контентом в GT.
---
## Обзор
**Динамический контент** — это, как правило, любой контент, который может меняться в зависимости от пользователя, контекста, среды и т. д.
В отличие от него, **статический контент** остается неизменным независимо от пользователя, контекста, среды и т. д.
Кратко:
* Статический контент никогда не меняется (обычный текст, строки и т. д.).
* Динамический контент может меняться (имена, адреса электронной почты, время, язык и т. д.).
**Что такое статический контент?**
Под статическим контентом обычно понимается любой обычный текст, который входит в бандл, отдаваемый пользователям.
Простое практическое правило: если разработчик может увидеть текст или строки в исходном коде, это статический текст.
Например, рассмотрим этот файл:
```jsx title="Landing.jsx" copy
export default function Landing() {
return (
<> Welcome to my app!>
);
}
```
Текст «Welcome to my app!» — это статический контент, потому что он никогда не меняется.
Но что, если мы захотим изменить страницу так, чтобы она реагировала на то, вошел ли пользователь в систему:
```jsx title="Landing.jsx" copy
export default function Landing(user) {
if (user) {
return (
Welcome to my app, {user.name}!
);
}
return (
Welcome to my app!
);
}
```
Хотя эти две фразы отображаются условно, обе по-прежнему считаются статическим текстом.
Помните наше практическое правило: мы можем увидеть этот контент, просто прочитав исходный код в `landing.jsx`.
Однако `{user.name}` считается динамическим контентом, потому что это значение может меняться.
Мы не можем определить, что именно будет показано на экране пользователя, просто прочитав файл `landing.jsx`.
## «Tx или не Tx»
Иногда нужно переводить динамический контент, а иногда — оставлять их без изменений.
Хороший пример — адрес электронной почты или имя пользователя.
Другой пример — баланс банковского счёта или SSN пользователя.
Такие данные (1) обычно не нужно переводить, когда приложение отображается на другом языке, и (2) они могут различаться от пользователя к пользователю.
### Пример
```jsx title="Greeting.jsx" copy
import { T, Var } from 'gt-next'
export default function Greeting(name) {
return (
Hello, {name}!
);
}
```
С точки зрения перевода у этого есть два преимущества:
1. Вам не нужно создавать перевод для каждого возможного имени.
* При использовании `` мы генерируем только один перевод, который будет выглядеть примерно так:
* `¡Hola, ${name}!`
* Если не использовать ``, пришлось бы выполнять перевод по запросу для каждого уникального имени:
* "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
2. Вам также не нужно беспокоиться о том, что сами имена будут заменены их переведённой формой (то есть "¡Hola, Alicia!", "¡Hola, Roberto!", ...).
**Примечание:** Компоненты ``, ``, `` и `` доступны в `gt-next`, `gt-react` и `gt-react-native`.
Как видите, компонент `` следует использовать, чтобы оборачивать любое содержимое, которое должно оставаться неизменным независимо от локали.
Так мы избегаем необходимости создавать переводы для каждого возможного значения динамического контента.
Если обернуть конфиденциальную информацию в компонент ``, можно быть уверенным, что она не будет отправлена в API General Translation.
**Исключения**
Исключения из утверждения выше: (1) случай, когда вложенный компонент `` используется внутри компонента `` (то есть дочерние элементы вложенного компонента `` будут переведены),
или (2) когда данные намеренно передаются в наш API каким-либо другим способом из дочернего элемента компонента `` (то есть через вызов fetch).
Однако это не предполагаемый способ использования компонента `` или API General Translation, и это может негативно сказаться на времени загрузки и производительности.