Режим моста
Сохраните существующую библиотеку i18n, добавив при этом безопасный автозаполнитель i1n, перевод с помощью ИИ и управление файлами.
Что такое режим моста?
Режим моста позволяет сохранить существующую библиотеку i18n (i18next, react-intl, vue-i18n, ngx-translate, i18n-js), используя при этом i1n для управления файлами перевода, перевода с помощью ИИ и генерации типов.
Подключите вашу библиотеку одной строкой с помощью registerI1n(). Функция i1n t() делегирует вашу библиотеку под капотом, но со строгой проверкой типов и полным автозаполнением IDE из сгенерированного i1n.d.ts.
Настройка через библиотеку
Одна строка на каждую библиотеку. Вызовите registerI1n() с функцией перевода вашей библиотеки, и все готово — i1n сделает все остальное. Примеры кода для вашей конкретной настройки смотрите ниже.
vue-i18n: registerI1n((key, params) => i18n.global.t(key, params)). ngx-translate (Angular): registerI1n((key, params) => translateService.instant(key, params)). i18n-js (React Native): registerI1n((key, params) => i18n.t(key, params)).
Пользовательская функция: registerI1n((key, params) => yourLookup(key, params)). Режим моста работает с любой функцией, которая принимает ключ и необязательные параметры и возвращает строку.
Как это работает
После вызова registerI1n() каждый вызов функции i1n t() перенаправляется вашей зарегистрированной обратной функции. i1n добавляет типобезопасность — если ключ не существует в ваших файлах перевода, TypeScript обнаружит ошибку во время компиляции.
i1n продолжает управлять файлами перевода (push, pull, AI translate) и генерировать i1n.d.ts. Ваша библиотека продолжает обрабатывать загрузку во время выполнения, интерполяцию и плюрализацию. Обе системы работают вместе безупречно.
Когда использовать режим моста по сравнению с автономным режимом
Используйте режим моста (Bridge Mode), когда у вас есть существующий проект с установленной библиотекой i18n, и вы не хотите переписывать код приложения. Режим моста обеспечивает бесплатный путь миграции — вы можете использовать инфраструктуру i1n, не изменяя ни одного компонента.
Используйте автономный режим для новых проектов или когда вы хотите полностью заменить существующую библиотеку i18n. SDK i1n обрабатывает инициализацию, интерполяцию, плюрализацию и переключение локали нативно, без внешних зависимостей.
import { registerI1n } from 'i1n'
import i18next from 'i18next'
registerI1n((key, params) => i18next.t(key, params)) import { registerI1n } from 'i1n'
import { useIntl } from 'react-intl'
const intl = useIntl()
registerI1n((key, params) => intl.formatMessage({ id: key }, params)) import { registerI1n } from 'i1n'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
registerI1n((key, params) => t(key, params)) import { registerI1n } from 'i1n'
import { TranslateService } from '@ngx-translate/core'
constructor(private translate: TranslateService) {
registerI1n((key, params) => this.translate.instant(key, params))
} import { registerI1n } from 'i1n'
import { I18n } from 'i18n-js'
const i18n = new I18n(translations)
registerI1n((key, params) => i18n.t(key, params)) import { registerI1n } from 'i1n'
// Works with any function: (key, params?) => string
registerI1n((key, params) => myCustomLookup(key, params))