Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Обновление использования API useIntlayer в Solid для прямого доступа к свойствам"v8.9.004.05.2026
- "Начальная документация для Astro + Preact"v8.7.724.04.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Переводите ваш сайт Astro + Preact с помощью Intlayer | Интернационализация (i18n)
Содержание
Почему Intlayer лучше альтернатив?
По сравнению с основными решениями, такими как astro-i18n или i18next, Intlayer представляет собой решение со встроенными оптимизациями, такими как:
Intlayer оптимизирован для идеальной работы с Astro, предлагая многоязычную маршрутизацию, карту сайта и все функции, необходимые для масштабирования интернационализации (i18n).
Вместо загрузки огромных файлов JSON на свои страницы загружайте только необходимый контент. Intlayer помогает уменьшить размер бандла и страниц до 50 %.
Определение области содержимого вашего приложения облегчает обслуживание крупномасштабных приложений. Вы можете дублировать или удалить отдельную папку функций, не утруждав себя мысленным бременем проверки всей кодовой базы контента. Кроме того, Intlayer полностью типизирован, что обеспечивает точность вашего контента.
Совместное размещение контента уменьшает контекст, необходимый для моделей большого языка (LLM). Intlayer также поставляется с набором инструментов, таких как CLI для проверки отсутствия переводов,LSP, MCP, и agent skills, чтобы сделать работу разработчика (DX) еще более удобной для агентов ИИ.
Используйте автоматизацию для перевода в своем конвейере CI/CD, используя LLM по вашему выбору за счет вашего поставщика ИИ. Intlayer также предлагает компилятор для автоматизации извлечения контента, а также веб-платформу, которая помогает переводить в фоновом режиме.
Подключение больших файлов JSON к компонентам может привести к проблемам с производительностью и реактивностью. Intlayer оптимизирует загрузку контента во время сборки (build time).
Intlayer — это больше, чем просто решение i18n. Он предоставляет автономный визуальный редактор и полный CMS, чтобы помочь вам управлять многоязычным контентом в реальном времени, упрощая сотрудничество с переводчиками, копирайтерами и другими членами команды. Контент может храниться локально и/или удаленно.
Пошаговое руководство по настройке Intlayer в Astro + Preact
Посмотреть Шаблон приложения на GitHub.
Установка зависимостей
Установите необходимые пакеты с помощью вашего менеджера пакетов:
bashКопировать кодКопировать код в буфер обмена
Если вы хотите использовать свой контент в атрибуте
строки, таком какalt,title,href,aria-labelи т. д., вы можете использовать значение функции, например:tsxКопировать кодКопировать код в буфер обмена
bashКопировать кодКопировать код в буфер обмена
intlayer Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, переводами, объявлением контента, транспиляцией и командами CLI.
astro-intlayer Включает плагин интеграции для Astro для интеграции Intlayer с бандлером Vite, а также промежуточное ПО для определения предпочтительной локали пользователя, управления куки и обработки перенаправлений URL.
preact Основной пакет Preact - быстрая и легкая альтернатива React.
preact-intlayer Пакет, который интегрирует Intlayer с приложениями Preact. Он предоставляет
IntlayerProvider, а также хукиuseIntlayerиuseLocaleдля интернационализации в Preact.@astrojs/preact Официальная интеграция Astro, которая позволяет использовать острова (islands) компонентов Preact.
Настройка вашего проекта
Создайте конфигурационный файл для настройки языков вашего приложения:
intlayer.config.tsКопировать кодКопировать код в буфер обмена
Через этот конфигурационный файл вы можете настроить локализованные URL, перенаправления middleware, названия куки, расположение и расширение ваших объявлений контента, отключить логи Intlayer в консоли и многое другое. Полный список доступных параметров см. в документации по конфигурации.
Интеграция Intlayer в конфигурацию Astro
Добавьте плагин intlayer и интеграцию Preact в вашу конфигурацию.
astro.config.tsКопировать кодКопировать код в буфер обмена
Плагин интеграции
intlayer()используется для интеграции Intlayer с Astro. Он обеспечивает сборку файлов объявления контента и отслеживает их изменения в режиме разработки. Он определяет переменные окружения Intlayer внутри приложения Astro. Кроме того, он предоставляет псевдонимы для оптимизации производительности.Интеграция
preact()позволяет использовать острова компонентов Preact черезclient:only="preact".Объявление контента
Создавайте и управляйте объявлениями контента для хранения переводов:
src/app.content.tsxКопировать кодКопировать код в буфер обмена
Ваши объявления контента могут быть определены в любом месте вашего приложения, если они включены в каталог
contentDir(по умолчанию./src) и соответствуют расширению файла объявления контента (по умолчанию.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Более подробную информацию см. в документации по объявлению контента.
Если ваш файл контента включает код TSX, вам может потребоваться импортировать
import { h } from "preact";или убедиться, что ваша pragma JSX правильно настроена для Preact.Использование контента в Astro
Вы можете использовать словари напрямую в файлах
.astro, используя основные хелперы, экспортируемые изintlayer. Вам также следует добавить SEO-метаданные, такие как hreflang и канонические ссылки, на каждую страницу и встроить остров Preact для интерактивного контента на стороне клиента.src/pages/[...locale]/index.astroКопировать кодКопировать код в буфер обмена
Если вы хотите использовать ваш контент в атрибуте
string, напримерalt,title,href,aria-labelи т.д., вы можете использовать значение функции, например:tsxКопировать кодКопировать код в буфер обмена
Примечание по конфигурации маршрутизации: Структура каталогов, которую вы используете, зависит от настройки
middleware.routingв вашемintlayer.config.ts:prefix-no-default(по умолчанию): Сохраняет локаль по умолчанию в корне (без префикса) и добавляет префиксы к остальным. Используйте[...locale]для обработки всех случаев.prefix-all: Все URL имеют префикс языка. Вы можете использовать стандартный[locale], если вам не нужно обрабатывать корень отдельно.search-paramилиno-prefix: Папка локали не нужна. Локаль обрабатывается через параметры поиска или куки.
Создание компонента Острова Preact
Создайте компонент острова, который оборачивает ваше приложение Preact и получает локаль, определенную сервером:
src/components/preact/PreactIsland.tsxКопировать кодКопировать код в буфер обмена
Проп
localeпередается со страницы Astro (определенной сервером) вIntlayerProvider, что делает её начальной локалью для всех хуков Preact в дереве.Примечание: В Preact используйте
classвместоclassNameдля атрибутов HTML.Добавление переключателя языков
Создайте Preact-компонент
LocaleSwitcher, который считывает доступные локали и переходит по локализованному URL, когда пользователь выбирает новый язык:src/components/preact/LocaleSwitcher.tsxКопировать кодКопировать код в буфер обмена
Примечание по сохранению состояния: Использование
onLocaleChangeдля перенаправления черезwindow.location.hrefгарантирует посещение нового языкового URL, позволяя middleware Intlayer установить куки языка и запомнить предпочтение пользователя для будущих посещений.LocaleSwitcherдолжен отрисовываться внутриIntlayerProvider- используйте его внутри вашего компонента острова (как показано в Шаге 6).Sitemap и Robots.txt
Intlayer предоставляет утилиты для динамического создания локализованных карт сайта и файлов robots.txt.
Sitemap
Intlayer поставляется со встроенным генератором карты сайта, который поможет вам легко создать карту сайта для вашего приложения. Он учитывает локализованные маршруты и добавляет необходимые метаданные для поисковых систем.
Создаваемая Intlayer карта сайта поддерживает пространство имен
xhtml:link(Hreflang XML Extensions). В отличие от стандартных генераторов карт сайта, которые просто перечисляют прямые URL-адреса, Intlayer автоматически создает необходимые двусторонние связи между всеми языковыми версиями страницы (например,/about,/about?lang=frи/about?lang=es). Это гарантирует, что поисковые системы будут правильно индексировать и показывать нужную языковую версию соответствующей аудитории.Создайте
src/pages/sitemap.xml.tsдля генерации карты сайта, включающей все ваши локализованные маршруты.src/pages/sitemap.xml.tsКопировать кодКопировать код в буфер обмена
Robots.txt
Создайте
src/pages/robots.txt.tsдля управления сканированием поисковыми системами.src/pages/robots.txt.tsКопировать кодКопировать код в буфер обмена
Извлечение содержимого ваших компонентов
НеобязательноЕсли у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
Чтобы упростить этот процесс, Intlayer предлагает компилятор / экстрактор для преобразования ваших компонентов и извлечения содержимого.
Чтобы настроить его, вы можете добавить раздел
compilerв ваш файлintlayer.config.ts:intlayer.config.tsКопировать кодКопировать код в буфер обмена
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Остальная часть вашей конфигурации compiler: { /** * Указывает, должен ли быть включен компилятор. */ enabled: true, /** * Определяет путь к выходным файлам */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить. */ saveComponents: false, /** * Префикс ключа словаря */ dictionaryKeyPrefix: "", }, }; export default config;Запустите экстрактор для преобразования компонентов и извлечения содержимого
bashКопировать кодКопировать код в буфер обмена
Since v9, the
intlayerCompileris included in theintlayerplugin. So you don't need to add it manually.Обновите ваш
vite.config.ts, чтобы включить плагинintlayerCompiler:vite.config.tsКопировать кодКопировать код в буфер обмена
bashКопировать кодКопировать код в буфер обмена
Настройка TypeScript
Intlayer использует расширение модулей, чтобы воспользоваться преимуществами TypeScript и сделать вашу кодовую базу более надежной.


Убедитесь, что ваша конфигурация TypeScript включает автогенерируемые типы и настроена для Preact:
Копировать код в буфер обмена
Настройка Git
Рекомендуется игнорировать файлы, созданные Intlayer. Это позволит избежать их добавления в ваш Git-репозиторий.
Для этого вы можете добавить следующие инструкции в ваш файл .gitignore:
Копировать код в буфер обмена
Расширение для VS Code
Для улучшения процесса разработки с помощью Intlayer вы можете установить официальное расширение Intlayer для VS Code.
Установить из VS Code Marketplace
Это расширение предоставляет:
- Автодополнение для ключей перевода.
- Обнаружение ошибок в реальном времени для отсутствующих переводов.
- Встроенный предпросмотр переведенного контента.
- Быстрые действия для легкого создания и обновления переводов.
Для получения более подробной информации об использовании расширения см. документацию расширения Intlayer для VS Code.
Дальнейшие шаги
Вы также можете внедрить визуальный редактор или вынести ваш контент во внешнюю CMS.
Часто задаваемые вопросы
Встроенная опция i18n Astro обрабатывает префиксы локалей и редиректы, но не сам контент, поэтому вам всё ещё нужен слой сообщений, а остров добавляет вторую проблему: остров выполняет Preact, а не Astro.
- Astro
i18nплюс написанные вручную словари сpreact-i18nвнутри острова: два источника контента, которые нужно синхронизировать, и никакой общей типизации между ними. Intlayer: один слой контента для обоих.astro-intlayerпокрывает страницы.astro, аpreact-intlayerпокрывает острова Preact, читая одни и те же объявления.
Объявить надпись один раз и использовать её и на статической странице, и в интерактивном острове - вот причина выбрать здесь единый слой контента. См. почему Intlayer.
Гораздо меньше, чем при подходе на основе пространств имён, потому что страница никогда не загружает каталог, который не отображает. Страницы Astro рендерятся во время сборки, поэтому они поставляют переведённый HTML и вообще никакого словаря; словарь получают только острова. Компилятор во время сборки разрешает вызовы контента в точные записи, которые использует компонент, а динамические словари разделяют остальное по локалям. По сравнению с обычными альтернативами Intlayer сокращает размер бандла и страницы до 50%. См. оптимизацию бандла и бенчмарк.
В значительной степени. Следуйте руководству по миграции с react-i18next, чтобы перенести контент. Вы также можете мигрировать постепенно: плагин синхронизации JSON сохраняет ваши существующие каталоги JSON как источник истины и генерирует из них словари Intlayer, поэтому оба слоя остаются синхронизированными, пока вы переносите компоненты по одному.
Да. Плагин синхронизации JSON сохраняет ваши файлы /messages/{locale}/{namespace}.json как источник истины и генерирует из них словари Intlayer, в обоих направлениях. Плагин синхронизации PO делает то же самое для каталогов gettext, а файлы по локали позволяют разделить контент по языкам вместо группировки локалей в одном файле.
Нет. Запустите npx intlayer extract, и Intlayer прочитает ваши компоненты, извлечёт строки, видимые пользователю, и запишет файл .content рядом с каждым из них, так что вы просматриваете diff вместо копирования строк в каталог по одной. Шаг 15 этого руководства проводит вас через это.
Для полностью автоматизированного конвейера Компилятор Intlayer делает то же самое во время сборки: он сканирует исходный код JSX, TSX, Vue и Svelte при каждом изменении, генерирует словари и поддерживает их синхронизацию через горячую замену модулей, поэтому вручную поддерживать ключи вообще не нужно.
Стоит знать о двух ограничениях, прежде чем включать компилятор. Он работает через статический анализ, поэтому строки, существующие только во время выполнения, такие как коды ошибок API или поля CMS, остаются недоступными. И ему нужно отличать текст, видимый пользователю, от логики приложения вроде className="active" или кода статуса, что требует нескольких аннотаций в большой кодовой базе. Команда extract избегает обоих ограничений, оставляя вас в процессе.
Пять компонентов, все опциональные:
- Расширение для VS Code: переход от ключа
useIntlayerк файлу контента, который его объявляет, извлечение контента из компонента и запуск build, fill, test, push и pull из палитры команд или отдельной вкладки Intlayer. - LSP-сервер: та же осведомлённость в любом редакторе, который говорит на LSP, с переходом к определению, поиском всех ссылок, предпросмотром переведённого значения при наведении, автодополнением ключей и полей и предупреждением, когда ключ нигде не объявлен. Он также разрешает вызовы
i18next,react-i18next,next-intlиuse-intl, что помогает при миграции. - MCP-сервер: предоставляет документацию и CLI Intlayer для Cursor, VS Code, Claude Desktop, Claude Code и ChatGPT, чтобы ассистент отвечал по актуальной документации, а не гадал, и мог сам запускать команды вроде
intlayer fill. - Навыки агентов: сфокусированные навыки, такие как
intlayer-config,intlayer-cliиintlayer-content, плюс по одному на фреймворк, которые обучают агента вашей настройке маршрутизации и типам узлов контента. - Плагин ESLint:
no-raw-textпомечает жёстко закодированные строки, с дополнительными правилами для статических ключей словаря и неиспользуемого контента.
