0Pricing
React Academy · Урок

Использование хука useTranslation

Заменяйте жестко заданные строки вызовами t() и организуйте JSON-файлы переводов.

«Использование хука useTranslation» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Добро пожаловать

В этом уроке Вы научитесь использовать хук useTranslation для доступа к функции t(), переводить строки в компонентах и упорядочивать файлы переводов JSON по пространствам имён.

Хук useTranslation

Вызовите useTranslation() внутри компонента, чтобы получить функцию перевода `t` и экземпляр `i18n`. Если Вы используете переводы с пространствами имён, передайте имя пространства имён.
import { useTranslation } from 'react-i18next';

function Header() {
  const { t } = useTranslation('common');
  return <h1>{t('app_title')}</h1>;
}

Основные ключи переводов

Создайте файл JSON для каждого языка и пространства имён. К ключам-строкам можно обращаться через точку. Плоские ключи просты, а для вложенных ключей используется точечная нотация.
// public/locales/en/common.json
{
  "app_title": "My App",
  "nav": {
    "home": "Home",
    "about": "About"
  }
}

Ключи в точечной нотации

Получайте доступ к вложенным ключам с помощью точечной нотации в функции t(): `t('nav.home')` считывает значение `nav -> home` из JSON.
const { t } = useTranslation('common');
return <a href="/">{t('nav.home')}</a>;

Пространство имён по умолчанию

Настройте `defaultNS` при инициализации i18n, чтобы можно было вызывать useTranslation() без аргументов, а ключи автоматически разрешались в пространстве имён по умолчанию.
i18n.init({ defaultNS: 'common', ... });

// No namespace argument needed
const { t } = useTranslation();
t('app_title'); // resolves in 'common'

Доступ к нескольким пространствам имён

Передайте массив в useTranslation, чтобы получить доступ к нескольким пространствам имён. Добавляйте к ключам префикс с пространством имён и двоеточием.
const { t } = useTranslation(['common', 'auth']);

t('common:app_title');
t('auth:login');

Компонент Trans для содержимого JSX

Если переведённая строка содержит HTML или компоненты React, используйте компонент Trans. Он поддерживает заполнители, сопоставленные с компонентами React.
import { Trans } from 'react-i18next';

// JSON: "tos": "Read our <1>Terms</1>"
<Trans i18nKey="tos">
  Read our <a href="/terms">Terms</a>
</Trans>

Структура файлов переводов

Организуйте файлы JSON по пути `public/locales/{lang}/{ns}.json`. Используйте осмысленные ключи и группируйте их по функциональным возможностям. Избегайте глубоко вложенных ключей — обычно достаточно 2 уровней.
public/
  locales/
    en/
      common.json
      auth.json
      dashboard.json
    tr/
      common.json
      auth.json

Изменение языка во время работы

Используйте `i18n.changeLanguage(lng)`, чтобы программно переключить активный язык. Компоненты React, использующие useTranslation, автоматически перерисуются.
const { i18n } = useTranslation();

<button onClick={() => i18n.changeLanguage('tr')}>Turkish</button>

Определение активного языка

Прочитайте `i18n.language`, чтобы получить текущую активную локаль. Используйте её, чтобы отобразить флаг или выделить кнопку активного языка.
const { i18n } = useTranslation();
return <p>Current lang: {i18n.language}</p>;

Быстрая проверка

Как получить доступ к вложенному ключу перевода «nav.home» из пространства имён «common»?

Итоги

useTranslation предоставляет функцию t(). Организуйте ключи в JSON-файлах пространств имён. Используйте точечную нотацию для вложенных ключей. Переключайте языки с помощью i18n.changeLanguage. Используйте компонент Trans для строк, содержащих JSX.

Далее

Следующий урок: **Формы множественного числа и интерполяция** — Вы научитесь обрабатывать формы множественного числа на основе количества и вставлять динамические значения в переведённые строки.

Часто задаваемые вопросы

Урок «Использование хука useTranslation» бесплатный?

Да — полный текст урока «Использование хука useTranslation» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Использование хука useTranslation»?

Заменяйте жестко заданные строки вызовами t() и организуйте JSON-файлы переводов. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Использование хука useTranslation»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка react-i18next
  2. Использование хука useTranslation
  3. Множественное число и интерполяция
  4. Переключатель языка и отложенная загрузка переводов
← Назад к React Academy