Документация React Native и Expo

React Native и Expo

Интегрируйте i1n с React Native и Expo, используя i1n SDK или Bridge Mode с i18n-js.

Настройка

Запустите i1n init в вашем проекте React Native. CLI автоматически обнаружит expo-localization, если он присутствует, и настроит формат JSON в каталоге locales/.

Вы можете использовать i1n SDK в автономном режиме или подключить его к i18n-js через Bridge Mode.

Автономный режим

Используйте i1n SDK напрямую с expo-localization для определения локали устройства. Инициализируйте с помощью init(), загрузите ваши ресурсы и используйте t() в ваших компонентах.

Шаблон поставщика React работает идентично веб-проектам React. Используйте хук useI1n() для типобезопасных переводов и переключения локали во время выполнения.

Режим моста с i18n-js

Если ваш проект использует i18n-js, подключите его с помощью: registerI1n((key, params) => i18n.t(key, params)). Функция t() от i1n делегирует вызовы i18n-js, обеспечивая строгую проверку типов и автодополнение.

i1n управляет файлами перевода и генерацией типов. i18n-js продолжает обрабатывать плюрализацию и интерполяцию во время выполнения. Работает как с управляемыми Expo, так и с обычными рабочими процессами React Native.

Развертывание

Запустите i1n pull перед сборкой вашего приложения. Переводы будут включены в двоичный файл приложения.

Для беспроводных обновлений перевода объедините i1n pull с вашей стратегией OTA-обновлений (например, Expo Updates или CodePush).

App.tsx
import * as Localization from 'expo-localization'
import { I18n } from 'i18n-js'

const i18n = new I18n(translations)
i18n.locale = Localization.locale

<Text>{i18n.t('welcome')}</Text>
Bridge Mode — src/i18n.ts
import { registerI1n } from 'i1n'
import { I18n } from 'i18n-js'

const i18n = new I18n(translations)
registerI1n((key, params) => i18n.t(key, params))

Связанное