# gt-next: General Translation Next.js SDK: Переменные компоненты URL: https://generaltranslation.com/ru/docs/next/guides/variables.mdx --- title: Переменные компоненты description: Как использовать переменные компоненты для динамического содержимого в переводах --- {/* СОЗДАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого измените шаблон в content/docs-templates/. */} Переменные компоненты позволяют безопасно включать динамический контент в компоненты [``](/docs/next/api/components/t). Они обрабатывают форматирование и локализацию локально, не отправляя данные в API перевода, поэтому отлично подходят для конфиденциальной информации, такой как имена пользователей, номера счетов и финансовые данные. ## Доступные компоненты * [``](/docs/next/api/components/var): Необработанный динамический контент без форматирования * [``](/docs/next/api/components/num): Числа с форматированием по локали * [``](/docs/next/api/components/currency): Денежные значения с символами валют и форматированием * [``](/docs/next/api/components/datetime): Дата и время в формате, соответствующем локали ## Быстрый старт Переменные компоненты работают внутри [``](/docs/next/api/components/t) и обрабатывают динамический контент: ```jsx import { T, Var, Num, Currency, DateTime } from 'gt-next'; function UserProfile({ user }) { return (

Welcome back, {user.name}!

You have {user.itemCount} items.

Balance: {user.balance}

Last login: {user.lastLogin}

); } ``` ## Как работают переменные компоненты Переменные компоненты решают проблему динамического контента следующим образом: 1. **Оборачивают динамические значения**, чтобы их можно было использовать внутри [``](/docs/next/api/components/t) 2. **Локально форматируют данные** с помощью встроенных API интернационализации браузера 3. **Сохраняют конфиденциальность данных** — содержимое никогда не отправляется в API перевода 4. **Обеспечивают локализацию** на основе текущей локали пользователя ```jsx // ❌ Это не работает — динамический контент внутри

Hello {username}

// ✅ Это работает — динамический контент обёрнут

Hello {username}

``` ## Руководство по компонентам ### Var — Необработанный динамический контент Используйте [``](/docs/next/api/components/var) для любого динамического контента, которому не требуется специальное форматирование: ```jsx // Информация о пользователе

Hello, {user.name}!

Your account ID is {user.accountId}

// Условный рендеринг Dashboard: {isAdmin ? : } ``` ### Num — Форматирование чисел Используйте [``](/docs/next/api/components/num) для чисел, которые должны форматироваться в соответствии с правилами локали: ```jsx // Базовое форматирование чисел You have {itemCount} items in your cart. // Автономное использование (эквивалент number.toLocaleString()) {totalItems} // Настраиваемые параметры форматирования Distance: {distance} km ``` ### Currency — Денежные суммы Используйте [``](/docs/next/api/components/currency) для денежных сумм: ```jsx // Базовое форматирование валюты (по умолчанию "USD") Your total is {total}. // Другие валюты Price: {price} // Произвольное форматирование {roundedAmount} ``` ### DateTime — Дата и время Используйте [``](/docs/next/api/components/datetime) для отображения даты и времени: ```jsx // Базовое форматирование даты Order placed on {orderDate} // Форматирование времени Last updated: {timestamp} // Произвольный формат даты {eventDate} ``` ## Конфиденциальность и безопасность ### Данные остаются локальными Переменные компоненты выполняют всё форматирование локально, используя [Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) браузера. **Динамический контент не отправляется в API перевода**, поэтому они идеально подходят для: * Имен пользователей и личных данных * Номеров аккаунтов и идентификаторов * Финансовых данных и балансов * Конфиденциальных временных меток и дат ```jsx // Безопасно — конфиденциальные данные остаются локально Баланс счёта: {balance} Последний вход: {lastLoginTime} ``` ### Важное исключение Будьте осторожны с вложенными компонентами [``](/docs/next/api/components/t) внутри переменных компонентов: ```jsx // ⚠️ Содержимое внутреннего БУДЕТ отправлено на перевод Hello, world! {/* Это переводится */} {privateData} {/* Это остаётся локальным */} ``` ## Автономное использование Переменные компоненты можно использовать вне [``](/docs/next/api/components/t) для чистого форматирования: ```jsx // Работают аналогично соответствующим методам .toLocale*() {count} // count.toLocaleString() {price} // форматирование цены {date} // date.toLocaleDateString() ``` ## Типичные проблемы ### Игнорирование параметров локализации Для [``](/docs/next/api/components/currency) обязательно передайте проп `currency`, чтобы указать валюту. Это гарантирует, что при отображении значения будут использоваться корректный символ валюты и правильное форматирование: ```jsx // ❌ По умолчанию используется USD — может не соответствовать ожиданиям пользователей The item costs {price} // ✅ Явно укажите валюту The item costs {price} ``` У других компонентов также есть необязательные свойства, которые позволяют настраивать форматирование: ```jsx // Базовое форматирование {count} товаров в наличии // Пользовательское форматирование {percentage} процент выполнения // Форматирование даты Последнее обновление: {lastUpdate} ``` ## Что дальше * [Руководство по компонентам ветвления](/docs/next/guides/branches) — добавьте условную логику в переводы * [Руководство по переводу строк](/docs/next/guides/strings) — переводите обычный текст без JSX * Справочник по API: * [`` Component](/docs/next/api/components/var) * [`` Component](/docs/next/api/components/num) * [`` Component](/docs/next/api/components/currency)