# 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), чтобы кодировать строки для перевода.