Одна из главных проблем 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.
Гибкость: Можно включать как для разработки, так и только для продакшн-сборок.
Оптимизация: Архитектура учитывает размер бандла.
Документация:
Next.js: https://intlayer.org/doc/environment/nextjs/compiler
Vite: https://intlayer.org/doc/environment/vite-and-react/compiler
Интересно узнать ваше мнение. Какой у вас опыт работы с i18n-компиляторами?
