Dictionary Translations

useTranslations

Справочник по API хука useTranslations

Обзор

useTranslations используется для доступа к строкам переводов из словаря переводов.

Его следует использовать внутри компонента, обёрнутого в <GTProvider>.

const d = useTranslations(); // Получаем функцию перевода
d('greeting.hello'); // передаём id для получения перевода

Для асинхронных компонентов см. getTranslations.

getTranslations и useTranslations используют словарь для хранения всего переводимого контента. Это отличается от использования компонента <T> для перевода. Если вы собираетесь использовать для перевода только компоненты <T>, этот документ вам не понадобится.

Справочные материалы

Параметры

Prop

Type

Описание

СвойствоОписание
idНеобязательный префикс, добавляемый ко всем ключам переводов. Полезен при работе с вложенными значениями словаря.

Возвращает

Функцию перевода d, которая по идентификатору возвращает переведённую версию соответствующей записи

(id: string, options?: DictionaryTranslationOptions) => React.ReactNode
НазваниеТипОписание
idstringИдентификатор записи, подлежащей переводу
options?DictionaryTranslationOptionsПараметры перевода для настройки поведения d.

Примеры

Базовое использование словаря

Каждая запись в вашем словаре будет переведена.

dictionary.jsx
const dictionary = {
  greeting: "Привет, Боб", 
};
export default dictionary;

Когда нам нужно обратиться к этим записям (на клиенте), мы вызываем useTranslations. Она возвращает функцию, принимающую ключ перевода из словаря.

TranslateGreeting.jsx
import { useTranslations } from 'gt-next';

export default async function TranslateGreeting() {
  const d = useTranslations(); 
  return (
    <p>
      {d('greeting')} // Привет, Алиса // [!code highlight]
    </p>
  );
}

Использование переменных

Чтобы передать значения, нужно (1) задать идентификатор и (2) сослаться на него при вызове функции d.

В этом примере мы используем {} для передачи переменных в переводы. В словаре мы задаём идентификатор {userName}.

dictionary.jsx
const dictionary = {
  greeting: "Привет, {userName}!", 
};
export default dictionary;
src/server/TranslateGreeting.jsx
import { useTranslations } from 'gt-next';

export default async function TranslateGreeting() {
  const d = useTranslations();
  
  // Привет, Алиса!
  const greetingAlice = d('greeting', { userName: "Alice" }); 

  return (
    <p>
      {greetingAlice}
    </p>
  );
}

Использование префиксов

Мы можем использовать префиксы, чтобы переводить только часть словаря.

dictionary.jsx
const dictionary = {
  prefix1: { 
    prefix2: { 
      greeting: "Привет, Боб",
    }
  }
};
export default dictionary;

Поскольку мы передали значение 'prefix1.prefix2' в хук useTranslations, все ключи получают префикс prefix1.prefix2:

UserDetails.jsx
import { useTranslations } from 'gt-next';

export default function UserDetails() {
  const d = useTranslations('prefix1.prefix2'); 
  return (
    <div>
      <p>{d('greeting')}</p> // greeting => prefix1.prefix2.greeting // [!code highlight]
    </div>
  );
}

Примечания

  • Функция useTranslations позволяет получать переводы из словаря на стороне клиента.
  • Хук useTranslations можно использовать только внутри компонента, обёрнутого компонентом <GTProvider>.

Следующие шаги

Насколько полезно это руководство?

useTranslations