# react-native: useMessages
URL: https://generaltranslation.com/ru/docs/react-native/api/strings/use-messages.mdx
---
title: useMessages
description: Справка по API функции useMessages() для перевода строк
---
{/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого измените шаблон в content/docs-templates/. */}
## Обзор
Функция `useMessages` — это хук для перевода строк, закодированных с помощью `msg`, на этапе сборки.
```jsx
const m = useMessages();
{m(encodedString)}
;
```
**Перевод на этапе сборки:** переводы через `useMessages` выполняются на этапе сборки,
до развертывания приложения. Вы можете передавать закодированные строки, созданные с помощью `msg`, и они будут
переведены на предпочтительный для пользователя язык.
## Справка
### Параметры
Нет
### Возвращает
Функцию обратного вызова `m`, которая переводит переданное закодированное содержимое из `msg`.
```jsx
(encodedContent: string, options?: Record) => string
```
| Название | Тип | Описание |
| ---------------- | --------------------- | ---------------------------------------------------------------------------- |
| `encodedContent` | `string` | Закодированная строка из `msg`, которую нужно перевести. |
| `options?` | `Record` | Необязательные параметры для подстановки переменных в закодированную строку. |
***
## Поведение
### Продакшен
В процессе CD любой контент внутри функции `msg` переводится до развёртывания приложения.
Это обеспечивает быструю загрузку для всех локалей, но переводить можно только контент, известный на этапе сборки.
После генерации переводы либо (1) сохраняются в CDN, либо (2) включаются в результаты сборки приложения — в зависимости от вашей конфигурации.
После этого переведённый контент отдается пользователям.
Если перевод не найден, используется исходный контент.
Обязательно следуйте [этому руководству по развёртыванию](/docs/react-native/tutorials/quickdeploy).
### Разработка
Во время разработки функция `m` будет переводить контент on-demand.
Это полезно для прототипирования того, как ваше приложение будет выглядеть на разных языках.
Не забудьте добавить Dev API-ключ в окружение, чтобы включить это поведение.
При on-demand переводе во время разработки вы будете замечать задержку.
В продакшен-сборках этого не будет, если только контент не переводится on-demand явно.
***
## Пример
### Базовое использование
Вы можете использовать `useMessages`, чтобы переводить строки, закодированные с помощью `msg`.
```jsx copy
import { msg, useMessages } from 'gt-react-native';
const encodedGreeting = msg('Hello, Alice!');
export default function TranslateGreeting() {
const m = useMessages();
return {m(encodedGreeting)}
;
}
```
Примечание: "Alice" будет переведено на язык, выбранный пользователем.
### Использование переменных [#variables]
Вы можете передавать переменные в закодированные строки.
```jsx copy
import { msg, useMessages } from 'gt-react-native';
const encodedGreeting = msg('Hello, {name}!');
export default function TranslateGreeting() {
const m = useMessages();
return (
{m(encodedGreeting, { name: 'Bob' })}{' '}
{/* Выведет "Hello, Bob!" */}
);
}
```
### Переменные `msg` имеют приоритет над переменными `m`
Если вы передаёте переменные и в `msg`, и в `m`, приоритет будут иметь переменные, переданные в `msg`.
```jsx copy
import { msg, useMessages } from 'gt-react-native';
const encodedGreeting = msg('Hello, {name}!', { name: 'Alice' });
export default function TranslateGreeting() {
const m = useMessages();
return {m(encodedGreeting, { name: 'Bob' })}
;
}
```
Примечание: будет отображаться "Hello, Alice!" — переменная не переопределяется при рендеринге.
### Использование формата сообщений ICU
`gt-react-native` поддерживает формат сообщений ICU, с помощью которого можно также форматировать переменные.
```jsx copy
import { msg, useMessages } from 'gt-react-native';
const encodedMessage = msg(
'There are {count, plural, =0 {no items} =1 {one item} other {{count} items}} in the cart',
{ count: 10 }
);
export default function TranslateGreeting() {
const m = useMessages();
return {m(encodedMessage)}
;
}
```
Формат сообщений ICU — это мощный инструмент для форматирования переменных. Подробнее см. в [документации по формату сообщений
ICU](https://unicode-org.github.io/icu/userguide/format_parse/messages/).
### Импорт из `gt-react-native`
Если вы используете директиву `"use client"`, импортируйте из `gt-react-native`, а не из `gt-react-native`.
```jsx copy
'use client';
import { msg, useMessages } from 'gt-react-native';
const encodedGreeting = msg('Hello, Alice!');
export default function TranslateGreeting() {
const m = useMessages();
return {m(encodedGreeting)}
;
}
```
***
## Примечания
* Функция `useMessages` — это хук, который переводит закодированные строки из `msg`.
* При использовании `useMessages` строки переводятся до времени выполнения, на этапе сборки (кроме режима разработки).
## Следующие шаги
* См. [`msg`](/docs/react-native/api/strings/msg), чтобы кодировать строки для перевода.