Одна из главных проблем i18n в приложениях заключается в том, что о ней вспоминают в последнюю очередь.

Обычно мы разрабатываем продукт, проверяем соответствие рынку (Product-Market Fit) и только спустя месяцы или годы решаем: «Пора выходить на глобальный уровень».

Сложность в том, что решения для i18n носят структурный характер и сильно влияют на работу команды. Куда эффективнее закладывать это в техническое задание с первого дня.

Как же с этим справиться? Заморозить разработку на неделю и рефакторить каждый компонент?

В последнее время я вижу много решений, основанных на compiler-driven подходе. Обещание заманчивое: добавьте пару строк кода, и приложение «само» станет мультиязычным.

Однако есть существенные недостатки:

  • Замедление разработки: Компиляторы добавляют этапы обработки, что особенно заметно в режиме разработки (hot reload).

  • Отсутствие 100% покрытия: В 98% случаев i18n работает корректно, но оставшиеся 2% становятся головной болью. Как перевести функцию getDescription, которая находится вне компонента? Как обрабатывать плюрализацию, вставку переменных, даты и т.д.?

  • Размер бандла: Оптимизация контента часто уходит на второй план. В итоге пользователи могут загружать данные для всех страниц на всех языках ради просмотра одной вкладки.

  • Vendor lock-in: Некоторые решения делают вас зависимыми от платформы, заставляя переплачивать за генерацию переводов.

  • Next.js Server Components: Как сделать серверный контент мультиязычным без лишних сложностей?

В Intlayer мы попытались решить это с помощью гибридного подхода.

Intlayer использует компилятор для обработки компонентов. По аналогии с тем, как React Compiler оборачивает код в useMemo / useCallback, Intlayer извлекает контент и автоматически внедряет функции getIntlayer / useIntlayer.

Вам не нужны блоки <T> или функции t — Intlayer трансформирует компоненты в их исходном виде.

При этом Intlayer — это прежде всего решение для декларативной интернационализации. Это значит, что его можно исполь��овать для метаданных страниц или смешивать контент, управляемый вручную, с работой компилятора.

Основные преимущества:

  • 100% Бесплатно: Нет платы за каждый ключ; перевод стоит ровно столько, сколько запрашивает ваш AI-провайдер.

  • Совместимость: Работает с Vite / Next.js (Webpack / Turbopack) / React / Svelte / Vue / Client и Server side.

  • Гибкость: Можно включать как для разработки, так и только для продакшн-сборок.

  • Оптимизация: Архитектура учитывает размер бандла.

Документация:

Интересно узнать ваше мнение. Какой у вас опыт работы с i18n-компиляторами?