getMessages
Справочник API по функции перевода строк getMessages()
Обзор
getMessages — асинхронная функция для перевода закодированных строк из msg на этапе сборки.
const m = await getMessages();
<p>{ m(encodedString) }</p>;Перевод на этапе сборки:
Переводы getMessages выполняются на этапе сборки, до развертывания вашего приложения.
Вы можете передавать закодированные строки из msg, и они будут переведены на предпочтительный язык пользователя.
Справка
Параметры
Нет
Возвращает
Промис, который разрешается функцией обратного вызова m, переводящей переданное закодированное содержимое из msg.
Promise<(encodedContent: string, options?: Record<string, any>) => string>| Name | Type | Description |
|---|---|---|
encodedContent | string | Закодированная строка из msg для перевода. |
options? | Record<string, any> | Необязательные параметры для переопределения переменных в закодированной строке. |
Поведение
Продакшен
Во время CD любой контент внутри функции msg будет переведён до развёртывания вашего приложения.
Это обеспечивает быструю загрузку для всех локалей, но переводит только тот контент, который известен на этапе сборки.
После генерации переводы сохраняются либо (1) в CDN, либо (2) в сборку вашего приложения — в зависимости от конфигурации. После этого переведённый контент отдаётся вашим пользователям. Если перевод не найден, будет использован исходный контент.
Обязательно следуйте руководству по развёртыванию.
Разработка
Во время разработки функция m будет переводить контент по запросу.
Это полезно для прототипирования того, как ваше приложение будет выглядеть на разных языках.
Не забудьте добавить Dev API key в переменные окружения, чтобы включить это поведение.
При переводе по запросу в режиме разработки может наблюдаться задержка.
Этого не будет в production‑сборках, если только контент не переводится по запросу явно,
то есть с использованием tx или <Tx>.
Пример
Базовое использование
Вы можете использовать getMessages для перевода закодированных строк из msg.
import { msg, getMessages } from 'gt-next/server';
const encodedGreeting = msg('Привет, Алиса!');
export default async function TranslateGreeting() {
const m = await getMessages();
return (
<p>
{m(encodedGreeting)}
</p>
);
}Примечание: «Alice» будет переведено на предпочтительный язык пользователя.
Использование переменных
Вы можете переопределять переменные в кодированных строках.
import { msg, getMessages } from 'gt-next/server';
const encodedGreeting = msg('Здравствуйте, {name}!', { name: 'Alice' });
export default async function TranslateGreeting() {
const m = await getMessages();
return (
<p>
{m(encodedGreeting, { name: 'Bob' })}
</p>
);
}Примечание: Будет показано "Hello, Bob!" — переменная переопределяется во время рендеринга.
Использование формата сообщений ICU
gt-next поддерживает формат сообщений ICU, который позволяет форматировать и значения переменных.
import { msg, getMessages } from 'gt-next/server';
const encodedMessage = msg('В корзине {count, plural, =0 {нет товаров} =1 {{count} товар} few {{count} товара} many {{count} товаров} other {{count} товара}}', { count: 10 });
export default async function TranslateGreeting() {
const m = await getMessages();
return (
<p>
{m(encodedMessage)}
</p>
);
}Формат сообщений ICU — мощный способ форматирования переменных. Подробнее см. в документации по формату сообщений ICU.
Примечания
- Функция
getMessages— серверная, она преобразует закодированные строки изmsg. - Перевод строк с помощью
getMessagesвыполняется до рантайма — на этапе сборки (кроме режима разработки).
Дальнейшие шаги
- См.
useMessagesдля клиентских переводов строк из закодированных строк на этапе сборки. - См.
msgдля кодирования строк для перевода. - Для переводов во время выполнения см.
txи<Tx>.
Насколько полезно это руководство?