# General Translation React SDKs (gt-react, gt-next, gt-react-native): Быстрый старт с TanStack Start URL: https://generaltranslation.com/ru/docs/react/tanstack-start-quickstart.mdx --- title: Быстрый старт с TanStack Start description: Добавьте General Translation в приложение TanStack Start с помощью gt-tanstack-start и переведите свой первый текст. related: links: - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/managing-locales - /docs/react/guides/formatting-variables --- `gt-tanstack-start` добавляет в приложения TanStack Start автоматическую интернационализацию. Вы инициализируете General Translation в точке входа маршрутизатора, определяете локаль запроса и гидратируете [`GTProvider`](/docs/react/reference/components/gt-provider) из загрузчика маршрута. Используйте этот Быстрый старт для приложений TanStack Start. Для обычного React SPA используйте [Быстрый старт для React](/docs/react/react-quickstart). **Предупреждение:** `gt-tanstack-start` — экспериментальный пакет, в котором возможны обратно несовместимые изменения. Пока он не рекомендуется для использования в production. ## Быстрый старт [#quickstart] Установите пакеты, создайте файл конфигурации и загрузчик переводов, добавьте middleware для запросов, инициализируйте маршрутизатор, настройте корневой маршрут, пометьте содержимое для перевода и сгенерируйте переводы. ### 1. Установите `gt-tanstack-start` Установите `gt-tanstack-start` и `gt-react` как зависимости, а [`gt` CLI](/docs/cli/quickstart) — как зависимость для разработки. `gt-react` нужно установить напрямую, чтобы CLI мог обнаруживать компоненты [``](/docs/react/reference/components/t) в исходном коде. ```bash npm install gt-tanstack-start gt-react && npm install gt --save-dev ``` ```bash yarn add gt-tanstack-start gt-react && yarn add --dev gt ``` ```bash bun add gt-tanstack-start gt-react && bun add --dev gt ``` ```bash pnpm add gt-tanstack-start gt-react && pnpm add --save-dev gt ``` `gt-tanstack-start` поддерживает только ESM. Используйте синтаксис `import` вместо CommonJS `require()`. ### 2. Создайте `gt.config.json` Создайте файл `gt.config.json` в корне проекта. В нём задаются исходный язык, целевые локали и путь, по которому сохраняются файлы перевода. ```json title="gt.config.json" { "defaultLocale": "en", "locales": ["es", "ja"], "files": { "gt": { "output": "src/_gt/[locale].json" } } } ``` * `defaultLocale` — язык, на котором написано ваше приложение. * `locales` — языки, на которые нужно переводить. Выберите их из [поддерживаемых локалей](/docs/platform/dashboard/reference/supported-locales). * `files.gt.output` — путь, куда CLI записывает файлы перевода. Храните их в `src/`, чтобы Vite мог их импортировать; файлы в `public/` не будут резолвиться. ### 3. Создайте загрузчик переводов Создайте файл `loadTranslations.ts`, который импортирует файл перевода для локали при выполнении приложения. ```ts title="loadTranslations.ts" export default async function loadTranslations(locale: string) { const translations = await import(`./src/_gt/${locale}.json`); return translations.default; } ``` ### 4. Добавьте middleware для запросов Создайте `src/start.ts` и зарегистрируйте [`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) как глобальное middleware для запросов. При определении собственного экземпляра start сохраните CSRF-middleware из TanStack Start. ```ts title="src/start.ts" import { createCsrfMiddleware, createStart } from '@tanstack/react-start'; import { gtMiddleware } from 'gt-tanstack-start'; const csrfMiddleware = createCsrfMiddleware({ filter: ({ handlerType }) => handlerType === 'serverFn', }); export const startInstance = createStart(() => ({ requestMiddleware: [csrfMiddleware, gtMiddleware], })); ``` Middleware задает локаль, регион и параметры интернационализации для каждого запроса, чтобы серверные функции использовали нужный язык. На следующем шаге завершите инициализацию, прежде чем запускать сервер разработки. ### 5. Инициализируйте General Translation и настройте корневой маршрут Один раз вызовите [`initializeGT`](/docs/react/tanstack-start/setup#initialize) на уровне модуля в `src/router.tsx`. Добавьте импорты и инициализатор в существующий файл маршрутизатора: ```tsx title="src/router.tsx" import { initializeGT } from 'gt-tanstack-start'; import gtConfig from '../gt.config.json'; import loadTranslations from '../loadTranslations'; initializeGT({ ...gtConfig, loadTranslations }); ``` Затем определите локаль с помощью [`getLocale`](/docs/react/tanstack-start/reference/functions/get-locale) и загрузите снимок переводов в загрузчике `src/routes/__root.tsx`. Передайте `locale` и `translations` в [`GTProvider`](/docs/react/reference/components/gt-provider). ```tsx title="src/routes/__root.tsx" import { HeadContent, Scripts, createRootRoute, } from '@tanstack/react-router'; import { GTProvider, getLocale, getTranslationsSnapshot, LocaleSelector, } from 'gt-tanstack-start'; export const Route = createRootRoute({ loader: async () => { const locale = getLocale(); return { locale, translations: await getTranslationsSnapshot(locale), }; }, shellComponent: RootDocument, }); function RootDocument({ children }: { children: React.ReactNode }) { const { locale, translations } = Route.useLoaderData(); return ( {children} ); } ``` [`getLocale`](/docs/react/tanstack-start/reference/functions/get-locale) считывает локаль из области запроса на сервере, а на клиенте — инициализированную локаль браузера. [`GTProvider`](/docs/react/reference/components/gt-provider) требует оба параметра: `locale` и `translations`. **Предупреждение:** Эти файлы перевода (`src/_gt/[locale].json`) не появятся, пока вы их не создадите. Локаль по умолчанию по-прежнему отображается, но при выборе целевой локали в переключателе языка будет возвращаться HTTP 500, пока файлы не будут созданы. Сначала выполните [`npx gt generate`](/docs/cli/reference/commands/generate) (API key не требуется) или [`npx gt translate`](/docs/cli/reference/commands/translate) (с учетными данными), чтобы создать их. ### 6. Пометьте содержимое для перевода Оберните JSX в компонент [``](/docs/react/reference/components/t), чтобы переводить его на месте. Импортируйте [``](/docs/react/reference/components/t) и [`useGT`](/docs/react/reference/hooks/use-gt) из `gt-react`, чтобы CLI обнаруживал их при сканировании исходного кода. ```tsx title="src/routes/index.tsx" import { createFileRoute } from '@tanstack/react-router'; import { T, useGT } from 'gt-react'; export const Route = createFileRoute('/')({ component: Home }); function Home() { const gt = useGT(); return (

Welcome to my app

This content is translated automatically.

); } ``` [`useGT()`](/docs/react/reference/hooks/use-gt) сразу возвращает функцию перевода, поэтому вызывайте её так: `const gt = useGT();`. ### 7. Сгенерируйте переводы Запустите CLI, чтобы перевести проект с помощью API General Translation. ```bash npx gt translate ``` Добавьте команду в скрипт сборки, чтобы production-сборки всегда содержали актуальные переводы: ```json title="package.json" { "scripts": { "build": "npx gt translate && vite build" } } ``` **Примечание:** для [`npx gt translate`](/docs/cli/reference/commands/translate) требуются идентификатор проекта и production API key, заданные в переменных окружения `GT_PROJECT_ID` и `GT_API_KEY`. Выполните [`npx gt auth`](/docs/cli/reference/commands/auth) или перейдите в [Dashboard](/docs/platform/dashboard/get-started), чтобы получить их. ## Next steps - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/managing-locales - /docs/react/guides/formatting-variables