Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Новий Intlayer v8, що нового?
Ласкаво просимо до Intlayer v8! У цьому випуску основна увага приділена покращенню досвіду розробника за допомогою автоматичного виявлення контенту, забезпеченню цілісності даних через валідацію схем і наданню більшого контролю над управлінням словниками.
Зміст
Еволюція розширеного вмісту: Markdown та HTML
Intlayer v8 вносить значні покращення в обробку розширеного вмісту, впроваджуючи HTML-вузли (яких не було у v7) та уніфікуючи API з вузлами Markdown (які були у v7, але були вдосконалені).
Уніфікований API .use()
Ми впровадили метод .use() як для вузлів Markdown, так і для HTML. Цей метод дозволяє налаштовувати HTML-теги або компоненти, що використовуються під час відтворення.
- Заміна компонентів: Ви можете легко замінити HTML-теги або користувацькі компоненти компонентами вашого фреймворку (наприклад, замінити
<a>наNextLinkабо<CustomCmp>на компонент React). - Типобезпека: Усі функції для надання компонентів є повністю типізованими, що гарантує отримання правильних пропсів.
Поведінка відтворення за замовчуванням
У v7, якщо провайдер не був визначений, вузли Markdown відтворювалися як сирі рядки, що часто вимагало зовнішніх бібліотек для їх парсингу.
У v8 Intlayer включає власний внутрішній парсер Markdown. За замовчуванням вузли Markdown тепер відтворюються безпосередньо як HTML без потреби в будь-яких зовнішніх бібліотеках.
Нові утиліти Renderer та Provider
Ми впровадили нові автономні функції та компоненти рендерера, щоб дати вам більше контролю поза стандартним потоком useIntlayer.
- Markdown:
MarkdownRenderer,useMarkdownRenderer,renderMarkdown. (Примітка:MarkdownProviderіснував у v7, але тепер інтегрується з цими новими інструментами). - HTML:
HTMLRenderer,useHTMLRenderer,renderHTML,HTMLProvider.
Приклади: інструменти відтворення Markdown
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
1. Використання сервісу:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
Приклади: інструменти відтворення HTML
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
1. Пряме використання:
В Angular ви можете використовувати стандартне зв'язування [innerHTML].
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
1. Використання компонента:
Скопіюйте код у буфер обміну
2. Використання хука:
Скопіюйте код у буфер обміну
3. Використання утиліти:
Скопіюйте код у буфер обміну
Для отримання додаткової інформації див. документацію з HTML-контенту та документацію з Markdown.
Файли контенту YAML та Markdown (v8.10.0)
Тепер ви можете оголошувати контент безпосередньо за допомогою розширень файлів .content.md та .content.yaml. Це ідеально підходить для лонгрідів, блогів, документації та політик конфіденційності.
Ці файли повністю доступні для редагування у Visual Editor, забезпечуючи спрощений робочий процес для нетехнічних членів команди.
Для отримання додаткової інформації див. Документацію про файли контенту YAML та Документацію про файли контенту Markdown.
Користувацькі переписування URL
Intlayer v8 додає підтримку користувацьких переписувань URL, що дозволяє визначати локалізовані шляхи, які відрізняються від стандартної структури /locale/path. Це потужна можливість для покращення локального SEO та забезпечення більш природного досвіду користувача для тих, хто не говорить англійською.
Ключові покращення в v8:
- Форматери для фреймворків: Нові
nextjsRewrite,svelteKitRewrite,reactRouterRewrite,vueRouterRewrite,solidRouterRewrite,tanstackRouterRewrite,nuxtRewriteтаviteRewrite, які надають ідіоматичний синтаксис шаблонів для кожного роутера. useRewriteURLHook: Новий клієнтський хук, який безшумно виправляє адресний рядок до «гарної» локалізованої URL-адреси, не спричиняючи навігацій маршрутизатора.- Automatic SEO Redirects: Вбудовані проксі тепер автоматично перенаправляють користувачів з вручну введених канонічних шляхів (наприклад,
/fr/about) до їх більш привабливих локалізованих версій (наприклад,/fr/a-propos).
Приклад конфігурації:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Ця функція підтримується «з коробки» в Next.js та Vite через проксі Intlayer, і її можна легко інтегрувати в інші роутери, такі як TanStack Router, React Router, Vue Router, SvelteKit та Solid Router.
Для отримання додаткової інформації та посібників з інтеграції див. документацію Custom URL Rewrites.
Розширені значення вставок
У версії v8 значення вставок тепер можуть приймати React-елементи (або Vue-вузли) на додаток до рядків і чисел. Це дозволяє вставляти багаті, інтерактивні компоненти безпосередньо у ваші шаблони вставок.
Intlayer тепер надійно обробляє вкладені вузли React і Preact всередині вставок, гарантуючи, що складні UI-структури зберігаються та відображаються правильно.
Приклад:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Правила множини Unicode CLDR (v8.8.0)
Було впроваджено новий хелпер вузла plural на основі правил множини, визначених проектом Unicode CLDR, що покращує підтримку складних мов.
Скопіюйте код у буфер обміну
Після цього ви можете динамічно передавати кількість у компонент вашого фреймворку:
Скопіюйте код у буфер обміну
Для отримання додаткової інформації див. Документацію про плюралізацію.
Валідація схем контенту
Intlayer v8 впроваджує валідацію схем для словників. Тепер ви можете визначати повторно використовувані схеми валідації у вашій конфігурації за допомогою Zod і застосовувати їх до ваших файлів контенту. Це гарантує, що ваш контент завжди відповідає очікуваній структурі, виявляючи помилки під час збірки.
1. Визначте схеми
Визначте свої схеми в intlayer.config.ts:
Скопіюйте код у буфер обміну
2. Застосуйте схеми до словників
Посилайтеся на ключ схеми у визначенні вашого словника:
Скопіюйте код у буфер обміну
Якщо контент не відповідає схемі (наприклад, заголовок занадто короткий), процес збірки видасть помилку.
TypeScript: Примітивні аксесори IntlayerNode
Тип IntlayerNode було оновлено, щоб дозволити виклик примітивних методів JavaScript безпосередньо на вузлах контенту. Це дає змогу взаємодіяти з вашим локалізованим контентом так, ніби це стандартний примітив рядка, числа, булевого значення або масиву.
Підтримується в React, Preact, Solid, Svelte, Vue та Angular.
Приклад з рядком (String)
Скопіюйте код у буфер обміну
Приклад з масивом (Array)
Скопіюйте код у буфер обміну
Покращене автоматичне виявлення контенту
У v8 Intlayer інтелектуально виявляє синтаксис Markdown, HTML-теги та вставки змінних у рядках контенту. Це означає, що ви часто можете опустити допоміжні функції, такі як md(), html() або insert().
Ця поведінка увімкнена за замовчуванням. Тепер ви можете тонко налаштувати це виявлення або глобально в intlayer.config.ts, або для кожного словника окремо.
Гранулярний контроль
Ви можете ввімкнути або вимкнути певні типи трансформацій:
Скопіюйте код у буфер обміну
Поведінка v7 (ручне обгортання):
Скопіюйте код у буфер обміну
Поведінка v8 (автоматичне виявлення):
Скопіюйте код у буфер обміну
Підлягаючий JSON-результат залишається незмінним, зберігаючи багату інформацію про типи, необхідну для відтворення:
Скопіюйте код у буфер обміну
Локалізація: новий хук useIntl
Новий хук useIntl() тепер доступний у React, Next.js та Vue. Він надає прив'язаний до локалі об'єкт Intl, який автоматично використовує поточну мову для форматування чисел, дат та іншого, без необхідності вручну передавати локаль.
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Інструменти: Покращення розширення VSCode
Розширення Intlayer для VSCode отримало значні оновлення у v8 для оптимізації вашого робочого процесу інтернаціоналізації:
- Starting Time: Покращення продуктивності під час відкриття проєкту.
- Caching: Покращений шар кешування для майже миттєвої валідації та автозаповнення.
- Unused Keys & Duplicated Keys Detection: Нові функції для автоматичного виявлення невикористовуваних ключів та повторюваних ключів у ваших словниках, що допомагає підтримувати ваш контент чистим та ефективним.
Інструменти: C++ Watcher та LSP на базі OXC (v8.12.0)
Intlayer v8.12.0 приносить значні покращення у досвід розробника:
- Parcel Watcher: Спостерігач за контентом (content watcher) було мігровано з
chokidarна@parcel/watcher, що використовує нативне спостереження за файлами на C++ для забезпечення швидших оновлень та значно меншого споживання пам'яті. - Новий Language Server Protocol (LSP): Тепер доступний абсолютно новий LSP. Створений на основі парсингу OXC, він допомагає вашій IDE та AI-агентам безперешкодно пов'язувати виклики
useIntlayer('my-key')з відповідними файлами.contentі навпаки.
Для отримання додаткової інформації див. Документацію LSP.
Оптимізації компілятора
Intlayer v8 включає новий шар кешування для компілятора Markdown та HTML. Це гарантує, що ідентичні рядки контенту з однаковою конфігурацією парсяться лише один раз, що значно зменшує витрати під час повторних відтворень або при використанні одного й того же контенту в декількох місцях.
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Для Vue / Svelte вам потрібно буде встановити відповідний пакет компілятора:
bashКопіювати кодСкопіюйте код у буфер обміну
bashКопіювати кодСкопіюйте код у буфер обміну
Експериментальні оптимізації збірки: Minify & Purge (v8.7.0)
Intlayer v8.7.0 представляє нові експериментальні функції збірки у вашому intlayer.config.ts, розроблені для оптимізації вашого production-бандлу:
- Мініфікація словників (Dictionary Minification): Мініфікує файли словників для зменшення їхнього розміру.
- Очищення невикористовуваних ключів (Unused Key Purging): Сканує та видаляє невикористовувані ключі перекладу зі словників, перейменовуючи активні ключі на короткі символи (наприклад,
"products" -> "a","pricing" -> "b"). Це зменшує розмір бандлу до 5%. - Вимкнення перевірок TypeScript: Прискорює збірку шляхом вимкнення типізації TypeScript під час кроку компіляції.
Скопіюйте код у буфер обміну
Гнучкість: Уніфікований режим імпорту
Властивість булевого типу live була застаріла на користь більш всеосяжної властивості importMode. Це дозволяє явно визначати, як словники мають завантажуватися: статично, динамічно або через live-синхронізацію.
Режими
static(Типово): Словник пакується під час збірки. Найкраще для продуктивності.dynamic: Словник завантажується під час виконання (наприклад, через завантаження JSON або suspense).fetch: Словник отримується з CMS/сервера під час виконання і синхронізується.
Міграція:
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Конфігурація v7 | Конфігурація v8 |
|---|---|
live: true | importMode: 'fetch' |
live: false | importMode: 'static' (або 'dynamic') |
Примітка: У Intlayer v8 властивість importMode було переміщено з конфігурації build до конфігурації dictionary у intlayer.config.ts. Це дозволяє визначити типовий режим імпорту для всіх ваших словників, при цьому зберігаючи можливість перевизначити його для кожного словника окремо.
Приклад глобальної конфігурації:
Скопіюйте код у буфер обміну
Приклад словника:
Скопіюйте код у буфер обміну
Керування розташуванням словників
v8 впроваджує властивість location для явного керування тим, де живуть словники та як вони синхронізуються. Це особливо корисно для гібридних робочих процесів, що включають як локальні файли, так і віддалений контент CMS.
Параметри
local: Словник існує лише локально. Він не буде надісланий до віддаленої CMS.remote: Словник керується віддалено. Після надсилання до CMS він буде від'єднаний від локального. Віддалений словник буде завантажений із CMS.local_and_remote: Словник існує в обох місцях. Локальні зміни надсилаються, а віддалені зміни завантажуються (синхронізуються).
Приклад:
Скопіюйте код у буфер обміну
Розділення конфігурації системи
Intlayer v8 розділяє конфігурацію джерел контенту від внутрішніх системних та вихідних шляхів. Це очищує властивість content і робить зрозумілим, які налаштування призначені для керування користувачем, а які керуються системою Intlayer.
Наступні властивості були переміщені з content до нової властивості system в intlayer.config.ts:
dictionariesDirmoduleAugmentationDirunmergedDictionariesDirtypesDirmainDirconfigDircacheDiroutputFilesPatternWithPath
Поведінка v7:
Скопіюйте код у буфер обміну
Поведінка v8:
Скопіюйте код у буфер обміну
Відокремлення директорій контенту та коду
Intlayer v8 розділяє конфігурацію для файлів визначення контенту та конфігурацію для трансформації коду. Це дозволяє більш точно налаштувати спостереження та сканування, покращуючи продуктивність збірки.
Раніше contentDir використовувався як для спостереження за файлами .content.*, так і для сканування коду на виклики useIntlayer. Тепер:
contentDir: Спеціально для ваших файлів оголошення контенту.codeDir: Спеціально для коду вашого застосунку, який потребує трансформації (наприклад, обрізка, оптимізація).
Міграція:
Якщо у вас раніше було встановлено contentDir, Intlayer v8 використовуватиме його як типове значення для codeDir також, але виведе попередження. Вам слід явно визначити codeDir у вашій конфігурації.
Поведінка v7:
Скопіюйте код у буфер обміну
Поведінка v8:
Скопіюйте код у буфер обміну
Фреймворк: Покращення для Svelte
Контент Markdown та HTML у Svelte тепер автоматично парситься в HTML при перетворенні на рядок. Це значно полегшує використання синтаксису Svelte {@html}, оскільки тепер ви можете просто передати вузол контенту безпосередньо.
Підтримка Angular: Vite Bundler (v8.11.0)
Для користувачів Angular Intlayer тепер нативно підтримує бандлер Vite через новий кастомний плагін esbuild, що прискорює час розробки та збірки.
Детальніше про конфігурацію див. у Документації середовища Angular.
Генерація карти сайту (Sitemap) (v8.6.0)
Intlayer тепер автоматично генерує карти сайтів (sitemaps) на основі ваших локалей та режиму маршрутизації. Це особливо корисно для SEO-оптимізації в архітектурах роутерів, таких як TanStack Router:
Скопіюйте код у буфер обміну
Примітки до міграції з v7
Зміни в конфігурації
- Властивість
live: Властивістьliveу словниках видалена. ВикористовуйтеimportMode: 'fetch'замість неї. - importMode: Властивість
build.importModeу конфігурації застаріла. Використовуйтеdictionary.importModeзамість неї. contentDirтаcodeDir:contentDirтепер призначений саме для файлів контенту. Додано нову властивістьcodeDirдля трансформації коду. ЯкщоcodeDirне встановлено, Intlayer повернеться доcontentDirта виведе попередження.- Валідація схеми: Щоб використовувати нову функцію
schema, переконайтеся, що у вашому проєкті встановленоzod.
