# General Translation React SDKs (gt-react, gt-next, gt-react-native): Перевод с помощью словарей
URL: https://generaltranslation.com/ru/docs/react/guides/translating-with-dictionaries.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как переводить строки из общего словаря с помощью хука useTranslations от General Translation.

Словарь хранит ваши переводимые строки в одном месте и обращается к ним по id, а не встраивает их прямо в компоненты. Это подходит командам, которые предпочитают централизованно управлять текстами или переходят с библиотеки i18n на основе ключей. В большинстве приложений вместо этого можно использовать [`<T>`](/docs/react/guides/translating-jsx) и [`useGT`](/docs/react/guides/translating-strings).

## Укажите словарь [#provide]

То, как вы регистрируете словари для каждой локали, зависит от фреймворка.

<Tabs items={['React', 'Next.js', 'TanStack Start', 'React Native']}>
  <Tab value="React">
    Передайте словари в [`GTProvider`](/docs/react/reference/components/gt-provider) через проп [`dictionaries`](/docs/react/reference/components/gt-provider#dictionaries) вместе с обязательными [`locale`](/docs/react/reference/components/gt-provider#locale) и [`translations`](/docs/react/reference/components/gt-provider#translations).

    ```tsx
    <GTProvider locale={locale} translations={translations} dictionaries={dictionaries}>
      <App />
    </GTProvider>;
    ```
  </Tab>

  <Tab value="Next.js">
    В Next.js словари [`dictionaries`](/docs/react/reference/components/gt-provider#dictionaries) не передаются в [`GTProvider`](/docs/react/reference/components/gt-provider). Создайте файл словаря в корне проекта и зарегистрируйте его с помощью конфигурационного плагина или позвольте системе обнаружить его автоматически.

    ```json title="dictionary.json"
    {
      "home": { "title": "Welcome back" }
    }
    ```

    ```ts title="next.config.ts"
    import { withGTConfig } from 'gt-next/config';

    export default withGTConfig(nextConfig, { dictionary: './dictionary.json' });
    ```
  </Tab>

  <Tab value="TanStack Start">
    Передайте словари в [`GTProvider`](/docs/react/reference/components/gt-provider) через проп [`dictionaries`](/docs/react/reference/components/gt-provider#dictionaries) вместе с обязательными [`locale`](/docs/react/reference/components/gt-provider#locale) и [`translations`](/docs/react/reference/components/gt-provider#translations).

    ```tsx
    <GTProvider locale={locale} translations={translations} dictionaries={dictionaries}>
      <App />
    </GTProvider>;
    ```
  </Tab>

  <Tab value="React Native">
    Передайте словари в [`GTProvider`](/docs/react/reference/components/gt-provider) через проп [`dictionaries`](/docs/react/reference/components/gt-provider#dictionaries) вместе с активной [`locale`](/docs/react/reference/components/gt-provider#locale).

    ```tsx
    <GTProvider locale={locale} dictionaries={dictionaries}>
      <App />
    </GTProvider>;
    ```
  </Tab>
</Tabs>

## Поиск записей с помощью `useTranslations` [#use-translations]

Вызовите [`useTranslations`](/docs/react/reference/hooks/use-translations), чтобы получить функцию для поиска, а затем передайте id записи. Подставляйте значения через объект параметров.

<Tabs items={['React', 'Next.js', 'TanStack Start', 'React Native']}>
  <Tab value="React">
    ```tsx
    import { useTranslations } from 'gt-react';

    function Greeting() {
      const t = useTranslations();
      return <h1>{t('home.title')}</h1>;
    }
    ```
  </Tab>

  <Tab value="Next.js">
    ```tsx title="Синхронные компоненты"
    import { useTranslations } from 'gt-next';

    function Greeting() {
      const t = useTranslations();
      return <h1>{t('home.title')}</h1>;
    }
    ```

    ```tsx title="Асинхронные компоненты App Router"
    import { getTranslations } from 'gt-next/server';

    async function Greeting() {
      const t = await getTranslations();
      return <h1>{t('home.title')}</h1>;
    }
    ```
  </Tab>

  <Tab value="TanStack Start">
    ```tsx title="Компоненты"
    import { useTranslations } from 'gt-tanstack-start';

    function Greeting() {
      const t = useTranslations();
      return <h1>{t('home.title')}</h1>;
    }
    ```

    ```ts title="Серверные функции"
    import { createServerFn } from '@tanstack/react-start';
    import { getTranslations } from 'gt-tanstack-start';

    export const loadGreeting = createServerFn({ method: 'GET' }).handler(
      async () => {
        const t = await getTranslations();
        return t('home.title');
      }
    );
    ```

    Зарегистрируйте [`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) перед использованием серверного helper.
  </Tab>

  <Tab value="React Native">
    ```tsx
    import { useTranslations } from 'gt-react-native';

    function Greeting() {
      const t = useTranslations();
      return <Text>{t('home.title')}</Text>;
    }
    ```
  </Tab>
</Tabs>

Передайте [`rootId`](/docs/react/reference/hooks/use-translations#root-id), чтобы все обращения выполнялись с этим префиксом. Это работает одинаково во всех фреймворках (`getTranslations('home')` в серверном коде Next.js и TanStack Start):

```tsx
const t = useTranslations('home');
t('title'); // разрешает home.title
```

*Примечание: поиск id, которого нет в словаре, приводит к ошибке, поэтому следите, чтобы id и записи словаря были синхронизированы.*

## Чтение вложенных объектов [#objects]

Используйте `.obj(id)`, чтобы получить вложенную группу записей — например, для перебора набора меток.

```tsx
const t = useTranslations();
const labels = t.obj('nav.links');
```

## Next steps

- /docs/react/guides/translating-strings
- /docs/react/guides/translating-jsx
- /docs/react/guides/handling-plurals-and-branches
- /docs/react/guides/formatting-variables

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
