Dictionary Translations

getTranslations

Справка по API для серверной функции перевода getTranslations

Обзор

getTranslations используется для получения строковых переводов из словаря переводов для серверных компонентов.

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

getTranslations поддерживает:

  • Перевод строк и JSX‑контента.
    • Вставку переменных и условную логику внутри переводов.
    • Необязательное добавление префикса к id.

Для клиентских переводов см. useTranslations.

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

Справка

Свойства

Prop

Type

Описание

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

Возвращает

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

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

Примеры

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

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

dictionary.jsx
const dictionary = {
  greeting: <>Привет, Элис!</>, 
};
export default dictionary;

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

TranslateGreeting.jsx
import { getTranslations } from 'gt-next/server';

export default async function TranslateGreeting() {
  
  const d = await getTranslations(); 

  return (
    <p>
      {d('greeting')} // Привет, Алиса // [!code highlight]
    </p>
  );
}

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

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

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

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

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

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

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

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

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

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

UserDetails.jsx
import { getTranslations } from 'gt-next/server';

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

Примечания

  • Функция getTranslations позволяет получать переводы из словаря на стороне сервера.

Дальнейшие шаги

  • См. useTranslations — клиентский аналог getTranslations на стороне клиента.

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

getTranslations