# General Translation React SDKs (gt-react, gt-next): Плагин URL: https://generaltranslation.com/ru/docs/react/react-native/plugin.mdx --- title: Плагин description: Справочник по Babel-плагину gt-react-native от General Translation, который подключает полифилы `Intl`, необходимые React Native. Справочник по API плагина gt-react-native. --- `gt-react-native/plugin` — это Babel-плагин, который подключает полифилы `Intl` из `@formatjs`, необходимые `gt-react-native`. JavaScript-рантайм React Native не включает полный набор API `Intl`, используемых для форматирования чисел, дат, форм множественного числа и названий локалей, поэтому плагин добавляет их в точку входа приложения. Настройте его в `babel.config.js`. Он входит в стандартную [настройку](/docs/react/react-native/setup) React Native; на этой странице описано, что именно он делает и какие параметры поддерживает. ## Обзор [#overview] Добавьте плагин в конфигурацию Babel: укажите в `entryPointFilePath` входной файл приложения и передайте локали, для которых нужно подключить полифил. Плагин — это **именованный экспорт**, поэтому извлекайте его через деструктуризацию (`const { plugin } = require('gt-react-native/plugin')`), а не используйте объект модуля напрямую. ```js title="babel.config.js" const { plugin: gtPlugin } = require('gt-react-native/plugin'); const gtConfig = require('./gt.config.json'); module.exports = function (api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: [ [ gtPlugin, { locales: [gtConfig.defaultLocale, ...gtConfig.locales], entryPointFilePath: require.resolve('expo-router/entry'), }, ], ], }; }; ``` ## Как это работает [#how-it-works] Во время сборки, когда Babel преобразует файл по пути `entryPointFilePath`, плагин добавляет в начало `import`-операторы для: * Базовых полифилов `@formatjs` — `getcanonicallocales`, `locale`, `displaynames`, `listformat`, `pluralrules`, `numberformat`, `relativetimeformat` и `datetimeformat` (со всеми часовыми поясами) — кроме перечисленных в `excludePolyfills`. * Данных локалей для каждой определённой локали для полифилов `displaynames`, `listformat`, `pluralrules`, `numberformat`, `relativetimeformat` и `datetimeformat`. Плагин изменяет только входной файл и пропускает импорт полифила, если он у вас уже есть. Локали определяются из `locales` или из `config`/`configFilePath`, если вы передаёте их вместо этого. *Примечание: если плагин не работает в вашей конфигурации, импортируйте полифилы вручную в начале входного файла. См. [документацию FormatJS по полифилам](https://formatjs.github.io/docs/polyfills).* ## Параметры [#options] | Параметр | Описание | Тип | Необязательный | По умолчанию | | ---------------------------------------------- | ------------------------------------------------------------------------ | ---------- | -------------- | ------------- | | [`locales`](#locales) | Коды локалей, для которых нужно загрузить данные локали. | `string[]` | Да | Из `config` | | [`entryPointFilePath`](#entry-point-file-path) | Путь к входному файлу, в который добавляются полифилы. | `string` | Да | `src/App.tsx` | | [`config`](#config) | Объект конфигурации General Translation, из которого считываются локали. | `object` | Да | — | | [`configFilePath`](#config-file-path) | Путь к `gt.config.json`, из которого считываются локали. | `string` | Да | — | | [`excludePolyfills`](#exclude-polyfills) | Базовые полифилы, которые нужно пропустить. | `string[]` | Да | `[]` | ### `locales` [#locales] **Тип** `string[]` · **Необязательно** Коды локалей, для которых нужно загрузить данные локали `@formatjs`. Укажите локаль по умолчанию и все целевые локали, например `[gtConfig.defaultLocale, ...gtConfig.locales]`. Если параметр не указан, локали определяются из `config` или `configFilePath`. ### `entryPointFilePath` [#entry-point-file-path] **Тип** `string` · **Необязательно** · **По умолчанию** `src/App.tsx` Абсолютный путь к файлу, в который добавляются импорты полифила. Это должна быть реальная точка входа вашего приложения. Обычно используют `require.resolve('expo-router/entry')` для Expo и `path.resolve(__dirname, 'index.js')` для React Native CLI без Expo. ### `config` [#config] **Тип** `{ defaultLocale: string; locales: string[] } & Record` · **Необязательно** Объект конфигурации General Translation, из которого можно получать локали вместо прямой передачи `locales`. ### `configFilePath` [#config-file-path] **Тип** `string` · **Необязательно** Путь к файлу `gt.config.json`, на основе которого определяются локали, как альтернатива передаче `locales` или `config`. ### `excludePolyfills` [#exclude-polyfills] **Тип** `string[]` · **Необязательно** · **По умолчанию** `[]` Пути импорта базовых полифилов, которые нужно пропустить, если вы подключаете один из них самостоятельно. Значения должны совпадать с путями импорта базовых полифилов плагина, например `@formatjs/intl-datetimeformat/add-all-tz`. ## Пример [#example] Базовый React Native CLI с `index.js` в качестве точки входа: ```js title="babel.config.js" const path = require('path'); const { plugin: gtPlugin } = require('gt-react-native/plugin'); const gtConfig = require('./gt.config.json'); module.exports = { presets: ['module:@react-native/babel-preset'], plugins: [ [ gtPlugin, { locales: [gtConfig.defaultLocale, ...gtConfig.locales], entryPointFilePath: path.resolve(__dirname, 'index.js'), }, ], ], }; ```