Без залежностейПідтримка MDXСтворено для SSRДля різних фреймворків

    Markdown, що рендериться в 5 разів швидше.

    Intlayer постачається з власним рушієм Markdown. Без залежностей, із MDX, розбір на сервері та нативний рендеринг у React, Next.js, Vue, Svelte, Solid, Preact і Angular. Вам більше не потрібно обирати рендерер.

    markdown-file.content.md
    ---key: my-markdown-contentdescription: My content---# My contentHere an example of markdown content

    Якщо поле frontmatter locale пропущено, Intlayer використовує налаштовану мову за замовчуванням. Ви можете зберігати весь вміст в одному файлі markdown без префіксів мови.

    Приклад структури файлів:
    content
    └── markdown-file.content.md
    markdown-file.en.content.md
    ---key: my-markdown-contentdescription: My contentlocale: en---# My contentHere an example of markdown content

    Поле frontmatter locale визначає мову вмісту. Воно необов’язкове. Якщо не вказано, Intlayer використає мову за замовчуванням, яка також слугує запасною, якщо переклад відсутній.

    Приклад структури файлів:
    content
    ├── markdown-file.en.content.md
    ├── markdown-file.fr.content.md
    └── markdown-file.es.content.md
    article.content.ts
    import { md, file, t, type Dictionary } from 'intlayer';export default {  key: 'article',  content: {    body: t({      en: md(file('./article.en.md')),      fr: md(file('./article.fr.md')),    }),  },} satisfies Dictionary;

    Оголошуйте Markdown безпосередньо у словнику TypeScript, ESM або JSON за допомогою функцій md() та file(), поєднуючи переклади з повною типобезпекою.

    Приклад структури файлів:
    content
    ├── article.content.ts
    ├── article.en.md
    └── article.fr.md
    Без залежностей
    MDX-компоненти
    Типізований frontmatter
    Вилучається, якщо не використовується

    У 5 разів вища пропускна здатність, ніж у markdown-to-jsx

    Парсер переписано навколо кешованого порядку правил та інкрементального lookbehind, тож документ обходиться один раз замість повторного сканування правило за правилом. Той самий Markdown, той самий результат, частка роботи.

    Intlayer
    markdown-to-jsx

    Відносна пропускна здатність розбору та рендерингу, більше — краще.

    0 kB

    надсилається, якщо застосунок не оголошує жодного вузла Markdown — рендерер вилучається під час збірки.

    ~55 kB

    чанку парсера, що завантажується ліниво за Suspense і ніколи не блокує перше відмалювання.

    0

    залежностей під час виконання — нема чого аудитувати й нема чого синхронізувати.

    Один рушій замість списку покупок

    Кожен проєкт завершується однією й тією ж рутиною: зважити markdown-to-jsx проти marked, remark і MDX, під’єднати переможця, а потім виявити, що він не вміє MDX, що його типи неточні або що ланцюжок плагінів ламається на клієнті. Intlayer робить цей вибір за вас.

    Можливість
    Intlayer
    markdown-to-jsx
    marked
    remark / rehype
    @mdx-js
    MDX-компоненти
    Підтримується
    Не підтримується
    Не підтримується
    Частково або через додаткові пакети
    Підтримується
    Типобезпечні вузли та перевизначення
    Підтримується
    Не підтримується
    Частково або через додаткові пакети
    Частково або через додаткові пакети
    Частково або через додаткові пакети
    Вивід для React і Next.js
    Підтримується
    Підтримується
    Не підтримується
    Частково або через додаткові пакети
    Підтримується
    Vue, Svelte, Solid, Preact, Angular
    Підтримується
    Не підтримується
    Частково або через додаткові пакети
    Частково або через додаткові пакети
    Частково або через додаткові пакети
    Розбір на сервері, рендеринг на клієнті, без повторного розбору
    Підтримується
    Не підтримується
    Частково або через додаткові пакети
    Підтримується
    Частково або через додаткові пакети
    Налаштування без ланцюжка плагінів
    Підтримується
    Підтримується
    Частково або через додаткові пакети
    Не підтримується
    Не підтримується
    Типізовані метадані frontmatter
    Підтримується
    Не підтримується
    Не підтримується
    Частково або через додаткові пакети
    Частково або через додаткові пакети
    Нуль залежностей під час виконання
    Підтримується
    Підтримується
    Підтримується
    Не підтримується
    Не підтримується
    Вилучається з бандла, якщо не використовується
    Підтримується
    Не підтримується
    Не підтримується
    Не підтримується
    Не підтримується
    ПідтримуєтьсяЧастково або через додаткові пакетиНе підтримується
    • remark і rehype здатні на більшість цього, але через ланцюжок плагінів, який ви збираєте самі і який у браузері не завжди поводиться так само, як на сервері.
    • markdown-to-jsx рендерить лише React, а marked віддає рядок HTML. Для Vue, Svelte, Solid чи Angular просто немає рівноцінного варіанта.
    • Жоден із них не дає типізованого frontmatter: ви або надбудовуєте шар контенту, або розбираєте метадані самотужки.

    Той самий вузол у кожному фреймворку

    Вузол Markdown перетворюється на нативний вивід того фреймворка, в якому опинився: JSX, VNode або рядок HTML. Svelte, Solid і Angular підтримані повноцінно, а не як додаток.

    Розбір на сервері, рендеринг на клієнті

    Розбір і рендеринг — два окремі кроки. parseMarkdown створює на сервері серіалізовний AST, браузер отримує його як JSON, і будь-який рендерер приймає його як є: документ ніколи не обходиться двічі.

    На сервері
    Документ розбирається один раз у JSON, який можна кешувати, стримити або зберігати.
    route.server.ts
    import { parseMarkdown } from 'react-intlayer/markdown';export const loader = async () => {  // Walked once, on the server  const ast = parseMarkdown('## My title\n\nLorem Ipsum');  return Response.json({ content: ast });};
    На клієнті
    Рендерери приймають і сирий рядок, і AST, тож браузер лише малює.
    Page.tsx
    import { useLoaderData } from 'react-router';import { MarkdownRenderer } from 'react-intlayer/markdown';export default function Page() {  const { content } = useLoaderData();  // No re-parsing in the browser  return <MarkdownRenderer content={content} />;}

    Налаштуйте один раз, уточніть для вузла

    Оголосіть компоненти в провайдері — і кожен вузол Markdown у застосунку їх підхопить. Коли один вузол має відрізнятися, use() перевизначає лише його: без ланцюжка плагінів і без окремого кроку збірки.

    Глобально — для всього застосунку
    AppProvider.tsx
    import { MarkdownProvider } from 'react-intlayer/markdown';export const AppProvider = ({ children }) => (  <MarkdownProvider    components={{      h1: ({ children }) => <h1 className="text-3xl">{children}</h1>,      MyButton: (props) => <button {...props} />, // MDX component    }}  >    {children}  </MarkdownProvider>);
    Локально — для одного вузла
    Article.tsx
    import { useIntlayer } from 'react-intlayer';const Article = () => {  const { body } = useIntlayer('article');  // Overrides the provider, for this node only  return body.use({    h1: ({ children }) => <h1 className="text-primary">{children}</h1>,  });};

    use() має пріоритет над провайдером, а провайдер — над типовим рендерером.

    Типізований frontmatter без шару контенту

    Frontmatter файлу Markdown розбирається разом із документом і доступний на вузлі як типізований об’єкт метаданих. Редакційні поля, заради яких ви ставили шар контенту, просто є — з автодоповненням.

    article.en.content.md
    ---key: articlelocale: entitle: Shipping i18n Markdownauthor: aymericzip---# Shipping i18n MarkdownHere an example of markdown content.
    Article.tsx
    const { body } = useIntlayer('article');body.metadata.title; // 'Shipping i18n Markdown'body.metadata.author; // 'aymericzip'body.value; // the raw Markdown string
    Той самий рушій розбирає й HTML

    Вузли html() проходять той самий конвеєр: теги зіставляються з вашими компонентами, з тією ж типізацією та тими ж правилами перевизначення.

    Переглянути HTML-контент
    i18n на основі коду

    Типобезпечні переклади, що зберігаються у вашому репозиторії.

    Оголошуйте контент поруч із компонентами у TypeScript або JavaScript. Intlayer автоматично генерує типи, забезпечуючи вам автодоповнення, валідацію та миттєвий зворотний зв'язок. Більше ніяких відсутніх ключів, перемикань контексту або зламаних реалізацій.

    AI CLI Tool

    Автоматизуйте переклади зі свого терміналу.

    CLI для аудиту, заповнення та перекладу JSON і Markdown за допомогою ШІ.

    Запустіть `npx intlayer fill`, щоб виявити відсутні ключі та згенерувати переклади за допомогою OpenAI, Claude або локальних моделей. Зберігайте історію Git чистою.

    Intlayer TMS

    Припиніть платити за слово. Автоматизуйте за допомогою ШІ.

    Альтернатива з відкритим кодом та self-hosted для Crowdin і Lokalise. Створено для сучасних робочих процесів розробників.

    Керуйте перекладами безпосередньо в коді або через візуальний редактор. Використовуйте ШІ для миттєвого перекладу. Співпрацюйте з командою без обмежень щодо кількості користувачів.

    Безголовий CMS

    Поєднайте локальний код з віддаленим вмістом.

    Керуйте багатомовним вмістом без додаткових витрат. Intlayer дозволяє поєднувати локальні словники з віддаленим керуванням, забезпечуючи миттєву синхронізацію для гарячих оновлень без перезбирання. Використовуйте вебхуки для CI/CD, керуйте прапорцями функцій і дозвольте ШІ для автоматичного перекладу (у розробці) подбати про решту.

    Перемикачі функцій

    Перемикайте функції миттєво — без розгортання.

    Словники Intlayer — це не лише текст. Використовуйте їх, щоб задавати логіку, стилі та об'єкти конфігурації. Завдяки Live Sync ви можете вмикати та вимикати функції, змінювати теми інтерфейсу та оновлювати поведінку застосунку в реальному часі безпосередньо з CMS.

    A/B-тестування

    Ваш майданчик для продуктових експериментів.

    Станьте першими, хто дослідить нову бета-версію Intlayer — A/B-тестування на базі ШІ, створену, щоб підвищити видимість і допомогти приймати розумніші продуктові рішення. Тестуйте будь-що в реальному часі — від текстів і дизайну до цілих функцій — і дозвольте даним показати, що справді працює.

    Створено спільнотою

    Познайомтеся з неймовірними учасниками, які роблять можливим Intlayer.

    Припиніть обирати рендерер Markdown

    Він уже в Intlayer: без залежностей, із MDX, готовий до SSR, типізований наскрізно й зникає з бандла, якщо ви його не використовуєте.