Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Использование хуков useIntlayer / useLocale из astro-intlayer на странице Astro"v9.5.519.09.2026
- "Обновление использования API useIntlayer в Solid для прямого доступа к свойствам"v8.9.004.05.2026
- "Начальная документация для Astro + Lit"v8.7.724.04.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Переводите ваш сайт Astro + Lit с помощью Intlayer
Содержание
Почему 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 + Lit
Посмотреть Шаблон приложения на GitHub.
Установка зависимостей
Установите необходимые пакеты с помощью вашего менеджера пакетов:
bashКопировать кодКопировать код в буфер обмена
Если вы хотите использовать свой контент в атрибуте
строки, таком какalt,title,href,aria-labelи т. д., вы можете использовать значение функции, например:tsxКопировать кодКопировать код в буфер обмена
bashКопировать кодКопировать код в буфер обмена
intlayer Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, переводами, объявлением контента, транспиляцией и командами CLI.
astro-intlayer Включает плагин интеграции Astro для интеграции Intlayer с бандлером Vite, middleware, разрешающее локаль каждого запроса в
Astro.locals.intlayer, и хукиuseIntlayer/useDictionary/useLocale. Тот же путь импорта разрешается в серверную реализацию во фронтматтере.astroи в клиентскую (на базеvanilla-intlayer) в блоках<script>.lit Основной пакет Lit для создания быстрых и легких веб-компонентов.
lit-intlayer Пакет, который интегрирует Intlayer с приложениями Lit. Он предоставляет хуки на основе
ReactiveController(useIntlayer,useLocaleи т. д.) для автоматической перерисовки LitElements при смене языка.@astrojs/lit Официальная интеграция Astro, которая позволяет использовать кастомные элементы Lit на страницах Astro.
Настройка вашего проекта
Архитектура
В этой архитектуре интеграция
intlayer(), зарегистрированная вastro.config.ts, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её вAstro.locals.intlayer. Страницы располагаются в сегменте restsrc/pages/[...locale]/, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы.astroчитают контент с помощью хуковuseIntlayer/useLocaleизastro-intlayerдля серверного рендеринга, а остров Lit (src/components/lit/LitDemo.ts) получает определённую сервером локаль в качестве пропа и передаёт её вlit-intlayerдля интерактивной части. Объявления контента размещаются рядом с вашими компонентами вsrc/.bashКопировать кодКопировать код в буфер обмена
Конфигурация
Создайте конфигурационный файл для настройки языков вашего приложения:
intlayer.config.tsКопировать кодКопировать код в буфер обмена
Через этот конфигурационный файл вы можете настроить локализованные URL, перенаправления middleware, названия куки, расположение и расширение ваших объявлений контента, отключить логи Intlayer в консоли и многое другое. Полный список доступных параметров см. в документации по конфигурации.
Интеграция Intlayer в конфигурацию Astro
Добавьте плагин intlayer и интеграцию Lit в вашу конфигурацию.
astro.config.tsКопировать кодКопировать код в буфер обмена
Плагин интеграции
intlayer()используется для интеграции Intlayer с Astro. Он обеспечивает сборку файлов объявления контента и отслеживает их изменения в режиме разработки. Он определяет переменные окружения Intlayer внутри приложения Astro. Кроме того, он предоставляет псевдонимы для оптимизации производительности.Интеграция
lit()позволяет использовать кастомные элементы Lit на страницах Astro.Объявление контента
Создавайте и управляйте объявлениями контента для хранения переводов:
src/components/lit/app.content.tsКопировать кодКопировать код в буфер обмена
Ваши объявления контента могут быть определены в любом месте вашего приложения, если они включены в каталог
contentDir(по умолчанию./src) и соответствуют расширению файла объявления контента (по умолчанию.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Более подробную информацию см. в документации по объявлению контента.
Использование контента в Astro
Используйте ваши словари в файлах
.astroс помощью хуков, экспортируемыхastro-intlayer. Они имеют те же сигнатуры, что иreact-intlayer:useIntlayer("key")возвращает содержимое словаря, аuseLocale()текущую локаль, без необходимости передавать аргументы.Локаль поступает из middleware
astro-intlayer, которое интеграция регистрирует автоматически перед вашим собственнымsrc/middleware.ts. Оно разрешает ее для каждого запроса, на основе префикса URL, затем сохраненной клиентом локали (cookie или заголовок), затемAccept-Language, и сохраняет вAstro.locals.intlayer. Предварительно отрендеренные страницы используют только URL, так как рендерятся один раз для каждого посетителя.Кастомный элемент Lit импортируется через клиентский
<script>и размещается в теле страницы.src/pages/[...locale]/index.astroКопировать кодКопировать код в буфер обмена
Если вы хотите использовать ваше содержимое в атрибуте
string, таком какalt,title,href,aria-labelи т. д., вы можете использовать значение функции, например:tsxКопировать кодКопировать код в буфер обмена
Astro.locals.intlayerтакже предоставляет доступ кlocale,defaultLocaleиavailableLocalesв ваших собственных middleware и эндпоинтах. Передайте локаль или селектор вторым аргументом (useIntlayer("app", "fr"),useIntlayer("faq", { item: 2 })), чтобы переопределить локаль запроса для одного вызова.Примечание по конфигурации маршрутизации: Структура каталогов, которую вы используете, зависит от настройки
middleware.routingв вашемintlayer.config.ts:prefix-no-default(по умолчанию): Сохраняет локаль по умолчанию в корне (без префикса) и добавляет префиксы к остальным. Используйте[...locale]для обработки всех случаев.prefix-all: Все URL имеют префикс языка. Вы можете использовать стандартный[locale], если вам не нужно обрабатывать корень отдельно.search-paramилиno-prefix: Папка локали не нужна. Локаль обрабатывается через параметры поиска или куки.
Создание кастомного элемента Lit
Создайте кастомный элемент Lit. Вызовите
installIntlayerвconnectedCallbackсо свойствомlocale, определенным сервером, чтобы инициализировать синглтон Intlayer на клиенте.src/components/lit/LitDemo.tsКопировать кодКопировать код в буфер обмена
Проп
localeпередается со страницы Astro (определенной сервером) и используется вconnectedCallbackдля инициализацииinstallIntlayer, что делает её начальной локалью для всех хуковReactiveControllerв элементе.useIntlayerрегистрируется какReactiveController. Элемент автоматически перерисовывается при смене языка - дополнительная настройка не требуется.Добавление переключателя языков
Переключатель языков встроен непосредственно в метод
render()кастомного элемента Lit (показано в Шаге 6). Он используетuseLocaleизlit-intlayerи переходит по локализованному URL, когда пользователь выбирает новый язык:src/components/lit/LitDemo.tsКопировать кодКопировать код в буфер обмена
Примечание по реактивности Lit:
useLocaleвозвращаетReactiveController. При вызовеsetLocaleконтроллер автоматически планирует перерисовку - таким образом, состояние активной кнопки обновляется без ручных манипуляций с DOM.Примечание по сохранению состояния: Использование
onLocaleChangeдля перенаправления черезwindow.location.hrefгарантирует посещение нового языкового URL, позволяя middleware Intlayer установить куки языка и запомнить предпочтение пользователя для будущих посещений.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Копировать кодКопировать код в буфер обмена
Соберите приложение, чтобы преобразовать ваши компоненты и извлечь контент
bashКопировать кодКопировать код в буфер обмена
Настройка TypeScript
Intlayer использует расширение модулей, чтобы воспользоваться преимуществами TypeScript и сделать вашу кодовую базу более надежной. Lit требует включения experimentalDecorators, если вы используете синтаксис декораторов.


Убедитесь, что ваша конфигурация TypeScript включает автогенерируемые типы.
Копировать код в буфер обмена
Настройка Git
Рекомендуется игнорировать файлы, созданные Intlayer. Это позволит избежать их добавления в ваш Git-репозиторий.
Для этого вы можете добавить следующие инструкции в ваш файл .gitignore:
Копировать код в буфер обмена
Расширение для VS Code
Для улучшения процесса разработки с помощью Intlayer вы можете установить официальное расширение Intlayer для VS Code.
Это расширение предоставляет:
- Автодополнение для ключей перевода.
- Обнаружение ошибок в реальном времени для отсутствующих переводов.
- Встроенный предпросмотр переведенного контента.
- Быстрые действия для легкого создания и обновления переводов.
Для получения более подробной информации об использовании расширения см. документацию расширения Intlayer для VS Code.
Дальнейшие шаги
Вы также можете внедрить визуальный редактор или вынести ваш контент во внешнюю CMS.
Часто задаваемые вопросы
Встроенная опция i18n Astro обрабатывает префиксы локалей и редиректы, но не сам контент, поэтому вам всё ещё нужен слой сообщений, а остров добавляет вторую проблему: остров выполняет Lit, а не Astro.
- Astro
i18nплюс написанные вручную словари с@lit/localizeвнутри острова: два источника контента, которые нужно синхронизировать, и никакой общей типизации между ними. Intlayer: один слой контента для обоих.astro-intlayerпокрывает страницы.astro, аlit-intlayerпокрывает острова Lit, читая одни и те же объявления.
Объявить надпись один раз и использовать её и на статической странице, и в интерактивном острове - вот причина выбрать здесь единый слой контента. См. почему Intlayer.
Гораздо меньше, чем при подходе на основе пространств имён, потому что страница никогда не загружает каталог, который не отображает. Страницы Astro рендерятся во время сборки, поэтому они поставляют переведённый HTML и вообще никакого словаря; словарь получают только острова. Компилятор во время сборки разрешает вызовы контента в точные записи, которые использует компонент, а динамические словари разделяют остальное по локалям. По сравнению с обычными альтернативами Intlayer сокращает размер бандла и страницы до 50%. См. оптимизацию бандла и бенчмарк.
В значительной степени. Следуйте обзору адаптеров совместимости, чтобы перенести контент. Вы также можете мигрировать постепенно: плагин синхронизации 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помечает жёстко закодированные строки, с дополнительными правилами для статических ключей словаря и неиспользуемого контента.
