Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Додайте чому 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 — це бібліотека інтернаціоналізації, розроблена спеціально для розробників JavaScript. Вона дозволяє оголошувати вашу контент будь-де у вашому коді. Вона перетворює оголошення багатомовного контенту на структуровані словники для легкої інтеграції у ваш код. Використовуючи TypeScript, Intlayer робить вашу розробку сильнішою та ефективнішою.
Чому варто обрати Intlayer, а не альтернативи?
Порівняно з основними рішеннями, такими як next-intl або i18next, Intlayer — це рішення, яке має такі інтегровані оптимізації, як:
Замість того, щоб завантажувати великі файли JSON на свої сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає зменшити розмір бандлу і сторінок до 50%.
Організація вмісту за окремими областями (scoping) полегшує технічне обслуговування великомасштабних програм. Ви можете скопіювати або видалити окрему папку функцій без розумового навантаження перегляду всієї кодової бази вмісту. Крім того, Intlayer повністю типізований (fully typed), щоб забезпечити точність вашого вмісту.
Спільне розміщення вмісту зменшує контекст, необхідний для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад CLI для перевірки відсутніх перекладів,LSP, MCP і навички агента, щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.
Intlayer пропонує низку додаткових функцій, яких немає в інших рішеннях i18n, як-от підтримка Markdown, отримання зовнішніх вміст, завантаження вмісту файлу, живий вміст оновлення, візуальний редактор тощо.
Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує компілятор для автоматизації екстракція вмісту, а також веб-платформу, щоб допомогти перекладати у фоновому режимі.
Підключення великих файлів JSON до компонентів може призвести до проблем з продуктивністю та реакцією. Intlayer оптимізує завантаження вмісту під час збірки (build time).
Більше ніж просто рішення 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Цей тип архітектури сповільнює процес розробки та ускладнює підтримку codebase з кількох причин:
Для кожного нового створеного компонента ви повинні:
- Створити новий ресурс/простір імен в папці
locales - Пам'ятати про імпорт нового простору імен на вашій сторінці
- Перекласти ваш контент (часто робиться вручну через копіювання від постачальників AI)
- Створити новий ресурс/простір імен в папці
Для будь-яких змін, внесених у ваші компоненти, ви повинні:
- Шукати пов'язаний ресурс/простір імен (далеко від компонента)
- Перекласти ваш контент
- Переконатися, що ваш контент актуальний для будь-якої локалі
- Перевірити, що ваш простір імен не містить невикористаних ключів/значень
- Переконатися, що структура ваших JSON файлів однакова для всіх локалей
На професійних проектах, які використовують ці рішення, часто використовуються платформи локалізації для керування перекладом вашого контенту. Однак це може швидко стати дорогим для великих проектів.
Для вирішення цієї проблеми Intlayer використовує підхід, який обмежує ваш контент на компонент і зберігає ваш контент близько до компонента, як ми часто робимо з CSS (styled-components), типами, документацією (storybook) або unit тестами (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({
uk: "Привіт Світ",
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- Інструменти автодоповнення AI в вашій IDE (такі як GitHub Copilot) можуть допомогти вам оголосити ваш контент, зменшуючи копіювання/вставлення
Очистити ваш codebase
- Зменшити складність
- Підвищити підтримуваність
Дублювати ваші компоненти та їх пов'язаний контент більш легко (Приклад: компоненти входу/реєстрації тощо)
- Обмежуючи ризик впливу на контент інших компонентів
- Копіюючи/вставляючи ваш контент з однієї програми в іншу без зовнішніх залежностей
Уникнути забруднення вашого codebase невикористаними ключами/значеннями для невикористаних компонентів
- Якщо ви не використовуєте компонент, Intlayer не буде імпортувати його пов'язаний контент
- Якщо ви видалите компонент, вам буде легше пам'ятати про видалення його пов'язаного контенту, оскільки він буде присутній у тій самій папці
Зменшити витрати обробки для AI агентів при оголошенні вашого багатомовного контенту
- AI агент не потребуватиме сканування всього вашого codebase, щоб знати, де реалізувати ваш контент
- Переклади можна легко робити за допомогою інструментів автодоповнення AI в вашій IDE (такі як GitHub Copilot)
Оптимізувати продуктивність завантаження
- Якщо компонент ліниво завантажується, його пов'язаний контент буде завантажено одночасно
Додаткові можливості 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. - Redactor Intlayer - CMS Intlayer |
| Вміст, придатний до Tree-shaking Вміст, придатний до tree-shaking, що зменшує розмір остаточного пакету. Завантажує контент для кожного компонента, виключаючи будь-який невикористаний контент з вашого пакету. Підтримує ледачого завантаження для підвищення ефективності завантаження додатку. - Оптимізація збірки додатку |
| Статичне рендерування Не блокує статичне рендерування. - Інтеграція Next.js |
| Переклад на основі штучного інтелекту Перетворіть ваш веб-сайт на 231 мову одним кліком, використовуючи розширені інструменти перекладу на основі штучного інтелекту Intlayer з вашим власним постачальником штучного інтелекту/ключем API. - Інтеграція CI/CD - CLI Intlayer - Автоматичне заповнення |
| Інтеграція MCP Server Надає MCP (Model Context Protocol) сервер для автоматизації IDE, що дозволяє безперешкодне управління контентом та робочі процеси i18n безпосередньо в вашому середовищі розробки. - MCP Server |
| Розширення 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 (SFCs) |
| Інтеграція TypeScript | ✅ Просунута, автоматично генеровані строгі типи | ⚠️ Базова; додатковий конфіг для безпеки | ✅ Хороша, але менш сувора | ⚠️ Типізація, потрібен конфіг | ✅ Хороша | ⚠️ Базова | ✅ Хороша (типи доступні; безпека ключів потребує налаштування) |
| Виявлення відсутніх перекладів | ✅ Помилка TypeScript та помилка/попередження на етапі збірки | ⚠️ Переважно резервні рядки під час виконання | ⚠️ Резервні рядки | ⚠️ Потрібен додатковий конфіг | ⚠️ Резервне значення під час виконання | ⚠️ Резервне значення під час виконання | ⚠️ Резервне значення/попередження під час виконання (можна налаштувати) |
| Багатий вміст (JSX/Markdown/компоненти) | ✅ Прямої підтримці | ⚠️ Обмежена / тільки інтерполяція | ⚠️ ICU синтаксис, не справжній JSX | ⚠️ Обмежена | ❌ Не розроблено для багатих вузлів | ⚠️ Обмежена | ⚠️ Обмежена (компоненти через <i18n-t>, Markdown через плагіни) |
| Переклад на базі AI | ✅ Так, підтримує кілька постачальників AI. Використовується з вашими ключами API. Враховує контекст вашої програми та обсяг вмісту | ❌ Ні | ❌ Ні | ❌ Ні | ❌ Ні | ❌ Ні | ❌ Ні |
| Візуальний редактор | ✅ Так, локальний візуальний редактор + опціональна CMS; можна зовнішнє розміщення вмісту codebase; вбудовуваний | ❌ Ні / доступна через зовнішні платформи локалізації | ❌ Ні / доступна через зовнішні платформи локалізації | ❌ Ні / доступна через зовнішні платформи локалізації | ❌ Ні / доступна через зовнішні платформи локалізації | ❌ Ні / доступна через зовнішні платформи локалізації | ❌ Ні / доступна через зовнішні платформи локалізації |
| Локалізований маршрутинг | ✅ Так, підтримує локалізовані шляхи (працює з Next.js та Vite) | ⚠️ Немає вбудованого, потребує плагінів (наприклад next-i18next) або власне налаштування маршрутизатора | ❌ Ні, тільки форматування повідомлень, маршрутизація має бути ручною | ⚠️ Немає вбудованого, потребує плагінів або ручного налаштування | ✅ Вбудований, App Router підтримує сегмент [locale] | ✅ Вбудований | ✅ Вбудований |
| Динамічна генерація маршрутів | ✅ Так | ⚠️ Плагін/екосистема або ручне налаштування | ❌ Не передбачено | ⚠️ Плагін/ручне | ✅ Так | ✅ Так | ❌ Не передбачено (Nuxt i18n надає) |
| Плюралізація | ✅ Шаблони на основі перелічення | ✅ Можна налаштовувати (плагіни як i18next-icu) | ✅ (ICU) | ✅ (ICU/messageformat) | ✅ Хороша | ✅ Хороша | ✅ Вбудовані правила плюралізації |
| Форматування (дати, числа, валюти) | ✅ Оптимізовані форматери (Intl під капотом) | ⚠️ Через плагіни або власне використання Intl | ✅ ICU форматери | ✅ ICU/CLI помічники | ✅ Хороша (помічники Intl) | ✅ Хороша (помічники Intl) | ✅ Вбудовані форматери дат/чисел (Intl) |
| Формат вмісту | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ⚠️ .json | ✅ .json, .js | ⚠️ .po, .json | ✅ .json, .js, .ts | ⚠️ .json | ✅ .json, .js |
| Підтримка ICU | ⚠️ WIP | ⚠️ Через плагін (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 | ⚠️ Зазвичай завантажує все (можна поліпшити з namespace/кодом розділення) | ⚠️ Зазвичай завантажує все | ❌ За замовчуванням ні | ⚠️ Часткова | ⚠️ Часткова | ⚠️ Часткова (з розділенням коду/ручним налаштуванням) |
| Ледача завантаження | ✅ Так, за локалею / за словником | ✅ Так (наприклад, backends/namespaces за запитом) | ✅ Так (розділені пакети локалей) | ✅ Так (динамічне імпортування каталогу) | ✅ Так (за маршрутом/локалю), потрібне управління namespace | ✅ Так (за маршрутом/локалю), потрібне управління namespace | ✅ Так (асинхронні повідомлення локалей) |
| Очищення невикористаного вмісту | ✅ Так, за словником під час збірки | ❌ Ні, тільки через ручне розділення namespace | ❌ Ні, всі оголошені повідомлення включені в bundle | ✅ Так, невикористовані ключі виявлені та видалені під час збірки | ❌ Ні, можна керувати вручну з управлінням namespace | ❌ Ні, можна керувати вручну з управлінням namespace | ❌ Ні, можливо тільки через ручне ледаче завантаження |
| Управління великими проектами | ✅ Заохочує модульну структуру, підходить для дизайн-системи | ⚠️ Потрібна хороша дисципліна у файлах | ⚠️ Центральні каталоги можуть стати великими | ⚠️ Може стати складною | ✅ Модульна з налаштуванням | ✅ Модульна з налаштуванням | ✅ Модульна з Vue Router/Nuxt i18n налаштуванням |
Зірки на GitHub
Зірки на GitHub є потужним індикатором популярності проекту, довіри спільноти та довгострокової актуальності. Хоча вони не є прямим показником технічної якості, вони відображають, скільки розробників вважають проект корисним, стежать за його розвитком і, ймовірно, впровадять його. Для оцінки цінності проекту зірки допомагають порівняти інтерес до альтернатив і дають уявлення про зростання екосистеми.
Взаємосумісність
intlayer також може допомогти в управлінні просторами назв react-intl, react-i18next, next-intl, next-i18next та vue-i18n.
За допомогою intlayer ви можете оголосити свій вміст у форматі вашої улюбленої бібліотеки i18n, і intlayer згенерує простори назв у вибраному вами місці (наприклад: /messages/{{locale}}/{{namespace}}.json).