Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Добавлен раздел почему именно Intlayer, а не альтернативы"v8.11.231.05.2026
- "Выпуск компилятора"v7.3.127.11.2025
- "Обновлена сравнительная таблица"v5.8.019.08.2025
- "Инициализация истории"v5.5.1029.06.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Почему вам стоит рассмотреть Intlayer?
Что такое Intlayer?
Intlayer — это библиотека интернационализации (i18n), разработанная специально для JavaScript-разработчиков. Она позволяет объявлять ваш контент в любом месте вашего кода. Она преобразует объявления многоязычного контента в структурированные словари для простой интеграции в ваш код. Благодаря поддержке TypeScript, Intlayer делает вашу разработку более надежной и эффективной.
Почему именно Intlayer, а не альтернативы?
По сравнению с основными решениями, такими как next-intl или i18next, Intlayer поставляется со встроенными оптимизациями, такими как:
Вместо того чтобы загружать огромные JSON-файлы на свои страницы, загружайте только необходимый контент. Intlayer помогает сократить размер вашей сборки и страниц до 50%.
Разделение контента вашего приложения на уровне компонентов облегчает поддержку крупномасштабных приложений. Вы можете дублировать или удалять отдельную папку с функцией без ментальной нагрузки по пересмотру всей кодовой базы контента. Кроме того, Intlayer полностью типизирован, что гарантирует точность вашего контента.
Совместное размещение контента и кода сокращает объем контекста, необходимого большим языковым моделям (LLM). Intlayer также поставляется с набором инструментов, таких как CLI для тестирования отсутствующих переводов, LSP, MCP и agent skills, что делает опыт разработки (DX) еще более плавным для ИИ-агентов.
Intlayer предлагает ряд дополнительных функций, которых нет у других решений i18n, таких как поддержка Markdown, загрузка внешнего контента, загрузка контента из файлов, живое обновление контента, визуальный редактор и многое другое.
Используйте автоматизацию для перевода в вашем CI/CD-конвейере, задействуя LLM по вашему выбору по стоимости вашего ИИ-провайдера. Intlayer также предлагает компилятор для автоматического извлечения контента, а также веб-платформу для помощи с фоновым переводом.
Подключение массивных JSON-файлов к компонентам может привести к проблемам с производительностью и реактивностью. Intlayer оптимизирует загрузку вашего контента на этапе сборки.
Больше чем просто решение для i18n, Intlayer предоставляет локально развертываемый визуальный редактор и полноценную CMS, которые помогут вам управлять многоязычным контентом в реальном времени, делая сотрудничество с переводчиками, копирайтерами и другими членами команды бесшовным. Контент может храниться локально и/или удаленно.
Если вы используете разные фреймворки для разных частей вашего приложения (например, React, React-native, Vue, Angular, Svelte и т. д.), Intlayer предоставляет способ использовать общий синтаксис и реализацию во всех основных фронтенд-фреймворках. Вы также сможете делиться своими объявлениями контента между вашей дизайн-системой, приложениями, бэкендом и т. д.
Зачем был создан Intlayer?
Intlayer был создан для решения общей проблемы, которая затрагивает все популярные библиотеки i18n, такие как next-intl, react-i18next, react-intl, next-i18next, react-intl и vue-i18n.
Все эти решения используют централизованный подход для перечисления и управления вашим контентом. Например:
Копировать код в буфер обмена
.├── locales│ ├── en.json│ ├── es.json│ └── fr.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxИли здесь с использованием пространств имен:
Копировать код в буфер обмена
.├── locales│ ├── en│ │ ├── footer.json│ │ └── navbar.json│ ├── fr│ │ ├── footer.json│ │ └── navbar.json│ └── es│ ├── footer.json│ └── navbar.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxЭтот тип архитектуры замедляет процесс разработки и усложняет обслуживание кодовой базы по нескольким причинам:
Для каждого нового созданного компонента вам необходимо:
- Создать новый ресурс/пространство имен в папке
locales - Не забыть импортировать новое пространство имен на вашей странице
- Перевести контент (часто вручную копируя и вставляя ответы от ИИ-сервисов)
- Создать новый ресурс/пространство имен в папке
При любом изменении ваших компонентов вам необходимо:
- Найти связанный ресурс/пространство имен (далеко от компонента)
- Перевести контент
- Убедиться, что ваш контент обновлен для всех языковых локалей
- Убедиться, что ваше пространство имен не содержит неиспользуемых ключей/значений
- Убедиться, что структура ваших JSON-файлов одинакова для всех языков
В профессиональных проектах, использующих эти решения, часто используются платформы локализации для управления переводом вашего контента. Однако для больших проектов это может быстро стать дорогостоящим.
Чтобы решить эту проблему, Intlayer использует подход, который изолирует ваш контент в рамках каждого компонента и держит ваш контент близко к нему, как мы часто делаем с CSS (styled-components), типами, документацией (storybook) или модульными тестами (jest).
Копировать код в буфер обмена
.└── components └── MyComponent ├── index.content.ts ├── index.test.tsx ├── index.stories.tsx └── index.tsxКопировать код в буфер обмена
import { t, type Dictionary } from "intlayer";
const componentExampleContent = {
key: "component-example",
content: {
myTranslatedContent: t({
en: "Hello World",
es: "Hola Mundo",
fr: "Bonjour le monde",
}),
},
} satisfies Dictionary;
export default componentExampleContent;Копировать код в буфер обмена
import { useIntlayer } from "react-intlayer";
export const ComponentExample = () => {
const { myTranslatedContent } = useIntlayer("component-example");
return <span>{myTranslatedContent}</span>;
};Этот подход позволяет:
Увеличить скорость разработки
- Файлы
.content.{{ts|mjs|cjs|json}}могут быть созданы с помощью расширения для VSCode - Инструменты автодополнения с ИИ в вашей IDE (такие как GitHub Copilot) могут помочь вам объявлять контент, сокращая ручное копирование и вставку
- Файлы
Очистить вашу кодовую базу
- Уменьшить сложность
- Повысить удобство поддержки
Легче дублировать ваши компоненты и связанный с ними контент (Пример: компоненты входа/регистрации и т. д.)
- Ограничивая риск влияния на контент других компонентов
- Копируя и вставляя ваш контент из одного приложения в другое без внешних зависимостей
Избежать захламления кодовой базы неиспользуемыми ключами/значениями для неиспользуемых компонентов
- Если вы не используете компонент, Intlayer не будет импортировать связанный с ним контент
- Если вы удалите компонент, вы легче вспомните о необходимости удалить связанный с ним контент, так как он будет находиться в той же папке
Снизить когнитивную нагрузку на ИИ-агентов для объявления многоязычного контента
- ИИ-агенту не придется сканировать всю кодовую базу, чтобы понять, куда внедрить ваш контент
- Переводы могут легко выполняться инструментами автодополнения с ИИ в вашей IDE (такими как GitHub Copilot)
Оптимизировать производительность загрузки
- Если компонент загружается лениво (lazy-loaded), связанный с ним контент будет загружен в то же время
Дополнительные возможности Intlayer
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Возможность | Описание |
|---|---|
| Поддержка множества фреймворков Intlayer совместим со всеми основными фреймворками и библиотеками, включая Next.js, React, Vite, Vue.js, Nuxt, Preact, Express и другими. |
| Управление контентом на JavaScript Используйте гибкость JavaScript для эффективного определения и управления вашим контентом. - Объявление контента |
| Компилятор Компилятор Intlayer автоматически извлекает контент из компонентов и генерирует файлы словарей. - Компилятор |
| Файл объявления контента для каждого языка Ускорьте разработку, объявив свой контент один раз перед автоматической генерацией. - Файл объявления контента для каждого языка |
| Типобезопасная среда Используйте TypeScript для гарантии отсутствия ошибок в определениях контента и коде, одновременно получая преимущества автодополнения в IDE. - Настройка TypeScript |
| Упрощенная настройка Быстрый запуск с минимальной конфигурацией. Легко настраивайте параметры интернационализации, маршрутизации, ИИ, сборки и обработки контента. - Изучить интеграцию с Next.js |
| Упрощенное получение контента Нет необходимости вызывать вашу функцию t для каждого элемента контента. Получайте весь контент напрямую с помощью одного хука.- Интеграция с React |
| Согласованная реализация серверных компонентов Идеально подходит для серверных компонентов Next.js, используйте одну и ту же реализацию как для клиентских, так и для серверных компонентов, без необходимости передавать функцию t через каждый серверный компонент.- Серверные компоненты |
| Организованная кодовая база Держите вашу кодовую базу более организованной: 1 компонент = 1 словарь в той же папке. Переводы рядом с соответствующими компонентами повышают удобство поддержки и ясность. - Как работает Intlayer |
| Улучшенная маршрутизация Полная поддержка маршрутизации приложений, плавно адаптирующаяся к сложным структурам приложений для Next.js, React, Vite, Vue.js и т. д. - Изучить интеграцию с Next.js |
| Поддержка Markdown Импортируйте и интерпретируйте локальные файлы и удаленный Markdown для многоязычного контента, такого как политики конфиденциальности, документация и т. д. Интерпретируйте и делайте метаданные Markdown доступными в вашем коде. - Файлы контента |
| Бесплатный визуальный редактор и CMS Для авторов контента доступны бесплатный визуальный редактор и CMS, что исключает необходимость в сторонней платформе локализации. Синхронизируйте ваш контент с помощью Git или полностью или частично переносите его во внешнее управление через CMS. - Редактор Intlayer - CMS Intlayer |
| Контент с поддержкой Tree-shaking Контент с поддержкой оптимизации tree-shaking, сокращающий размер финальной сборки. Загружает контент для каждого компонента, исключая любой неиспользуемый контент из вашей сборки. Поддерживает ленивую загрузку для повышения эффективности запуска приложения. - Оптимизация сборки приложения |
| Статический рендеринг Не блокирует статический рендеринг. - Интеграция с Next.js |
| Перевод с помощью ИИ Превратите ваш веб-сайт на 231 язык в один клик с помощью продвинутых инструментов перевода на базе ИИ от Intlayer, используя собственного ИИ-провайдера/API-ключ. - Интеграция CI/CD - Intlayer CLI - Автозаполнение |
| Интеграция с MCP-сервером Предоставляет сервер MCP (Model Context Protocol) для автоматизации вашей IDE, обеспечивая бесшовное управление контентом и рабочие процессы i18n прямо в вашей среде разработки. - MCP-сервер |
| Расширение VSCode Intlayer предоставляет расширение для VSCode, которое помогает вам управлять вашим контентом и переводами, создавать словари, переводить контент и многое другое. - Расширение VSCode |
| Совместимость Обеспечивает совместимость с react-i18next, next-i18next, next-intl и react-intl. - Intlayer и react-intl - Intlayer и next-intl - Intlayer и next-i18next |
| Тестирование отсутствующих переводов (CLI/CI) | ✅ CLI: npx intlayer content test (аудит, подходящий для CI) |
Сравнение Intlayer с другими решениями
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Возможность | intlayer | react-i18next | react-intl (FormatJS) | lingui | next-intl | next-i18next | vue-i18n |
|---|---|---|---|---|---|---|---|
| Переводы рядом с компонентами | ✅ Да, контент размещается вместе с каждым компонентом | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ✅ Да — при использовании Single File Components (SFC) |
| Интеграция с TypeScript | ✅ Продвинутая, автоматически генерируемые строгие типы | ⚠️ Базовая; требуется дополнительная настройка для безопасности | ✅ Хорошая, но менее строгая | ⚠️ Типизация требует настройки | ✅ Хорошая | ⚠️ Базовая | ✅ Хорошая (типы доступны; безопасность ключей требует настройки) |
| Обнаружение отсутствующих переводов | ✅ Подсветка ошибок в TypeScript и ошибки/предупреждения при сборке | ⚠️ В основном резервные строки во время выполнения | ⚠️ Резервные строки | ⚠️ Требуется дополнительная настройка | ⚠️ Резервные строки во время выполнения | ⚠️ Резервные строки во время выполнения | ⚠️ Резервные строки/предупреждения (настраиваемые) |
| Насыщенный контент (JSX/Markdown/компоненты) | ✅ Прямая поддержка | ⚠️ Ограничено / только интерполяция | ⚠️ Синтаксис ICU, не настоящий JSX | ⚠️ Ограничено | ❌ Не предназначено для сложных узлов | ⚠️ Ограничено | ⚠️ Ограничено (компоненты через <i18n-t>, Markdown через плагины) |
| Перевод с помощью ИИ | ✅ Да, поддерживает несколько ИИ-провайдеров. Используется с вашими собственными API-ключами. Учитывает контекст приложения и область контента | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет |
| Визуальный редактор | ✅ Да, локальный визуальный редактор + опциональная CMS; можно вынести контент кодовой базы; встраиваемый | ❌ Нет / доступно через сторонние платформы локализации | ❌ Нет / доступно через сторонние платформы локализации | ❌ Нет / доступно через сторонние платформы локализации | ❌ Нет / доступно через сторонние платформы локализации | ❌ Нет / доступно через сторонние платформы локализации | ❌ Нет / доступно через сторонние платформы локализации |
| Маршрутизация с локализацией | ✅ Да, поддерживает локализованные пути прямо из коробки (работает с Next.js и Vite) | ⚠️ Не встроенная, требуются плагины (например, next-i18next) или кастомный роутер | ❌ Нет, только форматирование сообщений, маршрутизация вручную | ⚠️ Не встроенная, требуются плагины или ручная настройка | ✅ Встроенная, App Router поддерживает сегмент [locale] | ✅ Встроенная | ✅ Встроенная |
| Динамическое создание маршрутов | ✅ Да | ⚠️ Плагины/экосистема или ручная настройка | ❌ Не предоставляется | ⚠️ Плагины/вручную | ✅ Да | ✅ Да | ❌ Не предоставляется (Nuxt i18n предоставляет) |
| Множественные формы (Pluralization) | ✅ Шаблоны на основе перечислений (Enum) | ✅ Настраиваемая (плагины вроде i18next-icu) | ✅ (ICU) | ✅ (ICU/messageformat) | ✅ Хорошая | ✅ Хорошая | ✅ Встроенные правила множественного числа |
| Форматирование (даты, числа, валюты) | ✅ Оптимизированные форматировщики (Intl под капотом) | ⚠️ Через плагины или пользовательское использование Intl | ✅ Форматировщики ICU | ✅ Хелперы ICU/CLI | ✅ Хорошее (хелперы Intl) | ✅ Хорошее (хелперы Intl) | ✅ Встроенные форматировщики дат/чисел (Intl) |
| Формат контента | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml в разработке) | ⚠️ .json | ✅ .json, .js | ⚠️ .po, .json | ✅ .json, .js, .ts | ⚠️ .json | ✅ .json, .js |
| Поддержка ICU | ⚠️ В разработке | ⚠️ Через плагин (i18next-icu) | ✅ Да | ✅ Да | ✅ Да | ⚠️ Через плагин (i18next-icu) | ⚠️ Через пользовательский форматировщик/компилятор |
| SEO-помощники (hreflang, sitemap) | ✅ Встроенные инструменты: хелперы для sitemap, robots.txt, метаданных | ⚠️ Плагины сообщества/вручную | ❌ Не является ядром | ❌ Не является ядром | ✅ Хорошо | ✅ Хорошо | ❌ Не является ядром (Nuxt i18n предоставляет хелперы) |
| Экосистема / Сообщество | ⚠️ Меньше, но быстро растет и активно реагирует | ✅ Самая большая и зрелая | ✅ Большая | ⚠️ Меньше | ✅ Средний размер, с акцентом на Next.js | ✅ Средний размер, с акцентом на Next.js | ✅ Большая в экосистеме Vue |
| Серверный рендеринг & Серверные компоненты | ✅ Да, оптимизировано для SSR / React Server Components | ⚠️ Поддерживается на уровне страниц, но необходимо передавать t-функции по дереву для дочерних серверных компонентов | ⚠️ Поддерживается на уровне страниц с дополнительной настройкой, но необходимо передавать t-функции по дереву для дочерних серверных компонентов | ✅ Поддерживается, требуется настройка | ⚠️ Поддерживается на уровне страниц, но необходимо передавать t-функции по дереву для дочерних серверных компонентов | ⚠️ Поддерживается на уровне страниц, но необходимо передавать t-функции по дереву для дочерних серверных компонентов | ✅ SSR через Nuxt/Vue SSR (без RSC) |
| Tree-shaking (загрузка только нужного) | ✅ Да, для каждого компонента при сборке через плагины Babel/SWC | ⚠️ Обычно загружает все (можно улучшить с помощью пространств имен/разделения кода) | ⚠️ Обычно загружает все | ❌ Не является поведением по умолчанию | ⚠️ Частично | ⚠️ Частично | ⚠️ Частично (с разделением кода/ручной настройкой) |
| Ленивая загрузка (Lazy loading) | ✅ Да, для каждой локали / для каждого словаря | ✅ Да (например, бэкенды/пространства имен по запросу) | ✅ Да (раздельные бандлы для локалей) | ✅ Да (динамический импорт каталогов) | ✅ Да (для каждого маршрута/локали), требуется управление пространствами имен | ✅ Да (для каждого маршрута/локали), требуется управление пространствами имен | ✅ Да (асинхронные сообщения локали) |
| Удаление неиспользуемого контента | ✅ Да, для каждого словаря при сборке | ❌ Нет, только через ручное сегментирование пространств имен | ❌ Нет, все объявленные сообщения объединяются | ✅ Да, неиспользуемые ключи обнаруживаются и отбрасываются при сборке | ❌ Нет, можно управлять вручную с помощью пространств имен | ❌ Нет, можно управлять вручную с помощью пространств имен | ❌ Нет, возможно только с помощью ручной ленивой загрузки |
| Управление крупными проектами | ✅ Поощряет модульность, отлично подходит для дизайн-систем | ⚠️ Требуется хорошая файловая дисциплина | ⚠️ Центральные каталоги могут стать большими | ⚠️ Может стать сложным | ✅ Модульное с настройкой | ✅ Модульное с настройкой | ✅ Модульное с настройкой Vue Router/Nuxt i18n |
Звезды на GitHub
Звезды на GitHub являются сильным индикатором популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым измерением технического качества, они отражают то, сколько разработчиков находят проект полезным, следят за его прогрессом и, скорее всего, внедрят его. Для оценки ценности проекта звезды помогают сравнивать интерес к альтернативам и дают представление о росте экосистемы.
Совместимость
intlayer также может помочь управлять вашими пространствами имен react-intl, react-i18next, next-intl, next-i18next и vue-i18n.
Используя intlayer, вы можете объявить свой контент в формате вашей любимой библиотеки i18n, и intlayer сгенерирует ваши пространства имен в выбранном вами месте (например: /messages/{{locale}}/{{namespace}}.json).