Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Обновление использования API useIntlayer в Solid для прямого доступа к свойствам"v8.9.004.05.2026
- "Добавить команду init"v7.5.930.12.2025
- "Инициализация истории"v5.5.1029.06.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Переведите ваш Vite and Vue с Intlayer | Интернационализация (i18n)
Смотрите Шаблон приложения на GitHub.
Почему Intlayer лучше альтернатив?
По сравнению с основными решениями, такими как vue-i18n или i18next, Intlayer — это решение со встроенными оптимизациями, такими как:
Intlayer оптимизирован для идеальной работы с Vue, предлагая охват контента на уровне компонентов, реактивные переводы и все функции, необходимые для масштабирования интернационализации (i18n).
Вместо загрузки огромных файлов JSON на свои страницы загружайте только необходимый контент. Intlayer помогает уменьшить размер бандла и страниц до 50 %.
Определение области содержимого вашего приложения облегчает обслуживание крупномасштабных приложений. Вы можете дублировать или удалить отдельную папку функций, не утруждав себя мысленным бременем проверки всей кодовой базы контента. Кроме того, Intlayer полностью типизирован, что обеспечивает точность вашего контента.
Совместное размещение контента уменьшает контекст, необходимый для моделей большого языка (LLM). Intlayer также поставляется с набором инструментов, таких как CLI для проверки отсутствия переводов,LSP, MCP, и навыки агента, чтобы сделать работу разработчика (DX) еще более удобной для агентов ИИ.
Используйте автоматизацию для перевода в своем конвейере CI/CD, используя LLM по вашему выбору за счет вашего поставщика ИИ. Intlayer также предлагает компилятор для автоматизации извлечения контента, а также веб-платформу, которая помогает переводить в фоновом режиме.
Подключение больших файлов JSON к компонентам может привести к проблемам с производительностью и реактивностью. Intlayer оптимизирует загрузку контента во время сборки (build time).
Intlayer — это больше, чем просто решение i18n. Он предоставляет автономный визуальный редактор и полный CMS, чтобы помочь вам управлять многоязычным контентом в реальном времени, упрощая сотрудничество с переводчиками, копирайтерами и другими членами команды. Контент может храниться локально и/или удаленно.
Пошаговое руководство по настройке Intlayer в приложении на Vite и Vue
Смотрите Шаблон приложения на GitHub.
Установка зависимостей
Установите необходимые пакеты с помощью npm:
bashКопировать кодКопировать код в буфер обмена
intlayer
Основной пакет, который предоставляет инструменты интернационализации для управления конфигурацией, перевода, объявления контента, транспиляции и CLI-команд.
vue-intlayer Пакет, который интегрирует Intlayer с приложением на Vue. Он предоставляет провайдеры контекста и композиции для интернационализации Vue.
vite-intlayer Включает плагин Vite для интеграции Intlayer с сборщиком Vite, а также промежуточное ПО для определения предпочтительной локали пользователя, управления cookie и обработки перенаправления URL.
Конфигурация вашего проекта
Создайте файл конфигурации для настройки языков вашего приложения:
intlayer.config.tsКопировать кодКопировать код в буфер обмена
import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Ваши другие локали ], defaultLocale: Locales.ENGLISH, }, }; export default config;С помощью этого файла конфигурации вы можете настроить локализованные URL, перенаправление через middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к документации по конфигурации.
Интеграция Intlayer в вашу конфигурацию Vite
Добавьте плагин intlayer в вашу конфигурацию.
vite.config.tsКопировать кодКопировать код в буфер обмена
import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { intlayer } from "vite-intlayer"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue(), intlayer()], });Плагин Vite
intlayer()используется для интеграции Intlayer с Vite. Он обеспечивает создание файлов деклараций контента и отслеживает их в режиме разработки. Он определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, он предоставляет алиасы для оптимизации производительности.Объявите Ваш Контент
Создайте и управляйте декларациями контента для хранения переводов:
src/helloWorld.content.tsКопировать кодКопировать код в буфер обмена
import { t, type Dictionary } from "intlayer"; const helloWorldContent = { key: "helloworld", content: { count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }), edit: t({ en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR", fr: "Éditez <code>components/HelloWorld.vue</code> и сохраните, чтобы протестировать HMR", es: "Edita <code>components/HelloWorld.vue</code> и guarda para probar HMR", }), checkOut: t({ en: "Посмотрите ", fr: "Vérifiez ", es: "Compruebe " }), officialStarter: t({ en: ", официальный стартовый шаблон Vue + Vite", fr: ", le starter officiel Vue + Vite", es: ", el starter oficial Vue + Vite", }), learnMore: t({ en: "Узнайте больше о поддержке IDE для Vue в ", fr: "En savoir plus sur le support IDE pour Vue dans le ", es: "Aprenda más sobre el soporte IDE para Vue en el ", }), vueDocs: t({ en: "Руководство по масштабированию Vue Docs", fr: "Vue Docs Scaling up Guide", es: "Vue Docs Scaling up Guide", }), readTheDocs: t({ en: "Нажмите на логотипы Vite и Vue, чтобы узнать больше", fr: "Cliquez sur les logos Vite et Vue pour en savoir plus", es: "Haga clic en los logotipos de Vite y Vue para obtener más información", }), }, } satisfies Dictionary; export default helloWorldContent;Ваши объявления контента могут быть определены в любом месте вашего приложения, как только они будут включены в каталог
contentDir(по умолчанию,./src). И соответствовать расширению файла объявления контента (по умолчанию,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Для получения дополнительной информации обратитесь к документации по объявлениям контента.
Использование Intlayer в вашем коде
Чтобы использовать функции интернационализации Intlayer во всём вашем приложении на Vue, сначала необходимо зарегистрировать синглтон-экземпляр Intlayer в вашем основном файле. Этот шаг важен, так как он предоставляет контекст интернационализации для всех компонентов вашего приложения, делая переводы доступными в любом месте дерева компонентов.
Копировать кодКопировать код в буфер обмена
Получайте доступ к вашим словарям контента по всему приложению, создавая основной Vue-компонент и используя композиции
useIntlayer:src/HelloWord.vueКопировать кодКопировать код в буфер обмена
Доступ к содержимому в Intlayer
Intlayer предлагает различные API для доступа к вашему содержимому:
Синтаксис на основе компонентов (рекомендуется): Используйте синтаксис
<myContent />или<Component :is="myContent" />для отображения содержимого как узла Intlayer. Это обеспечивает бесшовную интеграцию с Визуальным редактором и CMS.Синтаксис на основе строк: Используйте
{{ myContent }}для отображения содержимого в виде обычного текста, без поддержки Визуального редактора.Синтаксис с необработанным HTML: Используйте
<div v-html="myContent" />для отображения содержимого в виде необработанного HTML, без поддержки Визуального Редактора.Синтаксис деструктуризации: Композиция
useIntlayerвозвращает Proxy с содержимым. Этот прокси можно деструктурировать для доступа к содержимому, сохраняя реактивность.- Используйте
const content = useIntlayer("myContent");и{{ content.myContent }}/<content.myContent />. - Или используйте
const { myContent } = useIntlayer("myContent");и{{ myContent }}/<myContent/>для деструктуризации содержимого.
- Используйте
Если ваше приложение уже существует, вы можете использовать Intlayer Compiler в сочетании с командой extract, чтобы преобразовать тысячи компонентов за одну секунду.
Изменение языка вашего содержимого
НеобязательноДля изменения языка вашего содержимого вы можете использовать функцию
setLocale, предоставляемую композициейuseLocale. Эта функция позволяет установить локаль приложения и обновить содержимое соответственно.Создайте компонент для переключения между языками:
src/components/LocaleSwitcher.vueКопировать кодКопировать код в буфер обмена
Затем используйте этот компонент в вашем App.vue:
src/App.vueКопировать кодКопировать код в буфер обмена
Добавьте локализованную маршрутизацию в ваше приложение
НеобязательноДобавление локализованной маршрутизации в приложение Vue обычно включает использование Vue Router с префиксами локали. Это создает уникальные маршруты для каждого языка, что полезно для SEO и удобных для SEO URL.
Пример:
plaintextКопировать кодКопировать код в буфер обмена
Сначала установите Vue Router:
bashКопировать кодКопировать код в буфер обмена
Затем создайте конфигурацию роутера, которая обрабатывает маршрутизацию на основе локали:
src/router/index.tsКопировать кодКопировать код в буфер обмена
Имя используется для идентификации маршрута в роутере. Оно должно быть уникальным среди всех маршрутов, чтобы избежать конфликтов и обеспечить корректную навигацию и связывание.
Затем зарегистрируйте роутер в вашем файле main.js:
src/main.tsКопировать кодКопировать код в буфер обмена
Затем обновите ваш файл
App.vue, чтобы отобразить компонент RouterView. Этот компонент будет отображать соответствующий компонент для текущего маршрута.src/App.vueКопировать кодКопировать код в буфер обмена
Параллельно вы также можете использовать
intlayerProxyдля добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующий cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.vite.config.tsКопировать кодКопировать код в буфер обмена
import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { intlayer, intlayerProxy } from "vite-intlayer"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ intlayerProxy(), // should be placed first vue(), intlayer(), ], });Изменение URL при смене локали
НеобязательноЧтобы автоматически обновлять URL при смене языка пользователем, вы можете изменить компонент
LocaleSwitcher, чтобы использовать Vue Router:src/components/LocaleSwitcher.vueКопировать кодКопировать код в буфер обмена
Совет: Для лучшей SEO и доступности используйте теги вида
<a href="/fr/home" hreflang="fr">для ссылок на локализованные страницы, как показано в Шаге 10. Это позволяет поисковым системам правильно обнаруживать и индексировать URL-адреса, специфичные для языка. Чтобы сохранить поведение SPA, вы можете предотвратить стандартную навигацию с помощью @click.prevent, изменить локаль с помощью useLocale и программно перейти с помощью Vue Router.htmlКопировать кодКопировать код в буфер обмена
Переключение атрибутов языка и направления в HTML
НеобязательноКогда ваше приложение поддерживает несколько языков, крайне важно обновлять атрибуты
langиdirтега<html>, чтобы они соответствовали текущей локали. Это обеспечивает:- Доступность: Программы чтения с экрана и вспомогательные технологии полагаются на правильный атрибут
langдля точного произношения и интерпретации содержимого. - Отображение текста: Атрибут
dir(направление) обеспечивает правильный порядок отображения текста (например, слева направо для английского, справа налево для арабского или иврита), что важно для удобочитаемости. - SEO: Поисковые системы используют атрибут
langдля определения языка вашей страницы, помогая показывать правильный локализованный контент в результатах поиска.
Обновляя эти атрибуты динамически при смене локали, вы гарантируете последовательный и доступный опыт для пользователей на всех поддерживаемых языках.
src/composables/useI18nHTMLAttributes.tsКопировать кодКопировать код в буфер обмена
Используйте этот композиционный метод в вашем
App.vueили глобальном компоненте:src/App.vueКопировать кодКопировать код в буфер обмена
- Доступность: Программы чтения с экрана и вспомогательные технологии полагаются на правильный атрибут
Создание локализованного компонента Link
НеобязательноЧтобы обеспечить навигацию вашего приложения с учётом текущей локали, вы можете создать пользовательский компонент
Link. Этот компонент автоматически добавляет префикс текущего языка к внутренним URL, например, когда франкоязычный пользователь нажимает на ссылку на страницу "О нас", его перенаправляет на/fr/aboutвместо/about.Такое поведение полезно по нескольким причинам:
- SEO и удобство для пользователя: Локализованные URL помогают поисковым системам правильно индексировать страницы на разных языках и предоставляют пользователям контент на предпочитаемом языке.
- Последовательность: Используя локализованные ссылки по всему приложению, вы гарантируете, что навигация остаётся в рамках текущей локали, предотвращая неожиданные переключения языка.
- Поддерживаемость: Централизация логики локализации в одном компоненте упрощает управление URL-адресами, делая ваш код более удобным для поддержки и расширения по мере роста приложения.
src/components/Link.vueКопировать кодКопировать код в буфер обмена
Для использования с Vue Router создайте версию, специфичную для роутера:
src/components/RouterLink.vueКопировать кодКопировать код в буфер обмена
Используйте эти компоненты в вашем приложении:
src/App.vueКопировать кодКопировать код в буфер обмена
Рендеринг Markdown
НеобязательноIntlayer поддерживает рендеринг Markdown-контента непосредственно в вашем Vue-приложении. По умолчанию Markdown обрабатывается как простой текст. Чтобы преобразовать Markdown в насыщенный HTML, вы можете интегрировать markdown-it - парсер Markdown.
Это особенно полезно, когда ваши переводы содержат форматированный контент, такой как списки, ссылки или выделения.
По умолчанию Intlayer рендерит markdown как строку. Но Intlayer также предоставляет способ рендерить markdown в HTML с помощью функции
installIntlayerMarkdown.Чтобы узнать, как объявлять markdown-контент с использованием пакета
intlayer, смотрите документацию по markdown.main.tsКопировать кодКопировать код в буфер обмена
После регистрации вы можете использовать синтаксис на основе компонентов для прямого отображения содержимого Markdown:
vueКопировать кодКопировать код в буфер обмена
Извлечение содержимого ваших компонентов
НеобязательноЕсли у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
Чтобы упростить этот процесс, 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Копировать кодКопировать код в буфер обмена
Настройка TypeScript
Intlayer использует расширение модулей (module augmentation), чтобы использовать преимущества TypeScript и сделать ваш код более надежным.


Убедитесь, что ваша конфигурация TypeScript включает автоматически сгенерированные типы.
Копировать код в буфер обмена
Конфигурация Git
Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш Git-репозиторий.
Для этого вы можете добавить следующие инструкции в файл .gitignore:
Копировать код в буфер обмена
Расширение VS Code
Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное расширение Intlayer для VS Code.
Установить из VS Code Marketplace
Это расширение предоставляет:
- Автодополнение ключей переводов.
- Обнаружение ошибок в реальном времени для отсутствующих переводов.
- Встроенный просмотр переведенного контента.
- Быстрые действия для легкого создания и обновления переводов.
Для получения дополнительной информации о том, как использовать расширение, обратитесь к документации по расширению Intlayer для VS Code.
(Опционально) Sitemap и robots.txt (генерация на сборке)
Intlayer предоставляет generateSitemap и getMultilingualUrls - утилиты, которые формируют многоязычные sitemap.xml и robots.txt для краулеров и позволяют автоматически записать их в public/. Обычно запускают небольшой Node-скрипт до Vite (например, npm-хуки predev / prebuild).
Sitemap
Генератор sitemap учитывает локали и добавляет нужные метаданные.
Поддерживается пространство имёнxhtml:link(hreflang). Вместо плоского списка URL Intlayer связывает все языковые версии страницы в обе стороны (например/about,/fr/aboutили/about?lang=frв зависимости от режима маршрутизации).
Robots.txt
Используйте getMultilingualUrls, чтобы правила Disallow покрывали все локализованные варианты путей.
1. Файл generate-seo.mjs в корне проекта
Копировать код в буфер обмена
Пакет intlayer должен быть установлен. Для продакшена задайте SITE_URL в окружении (например в CI).
Для Node ESM предпочтительноgenerate-seo.mjs. Дляgenerate-seo.jsукажите"type": "module"вpackage.jsonили включите ESM иначе.
2. Запуск скрипта до Vite
Копировать код в буфер обмена
Подстройте команды для pnpm или yarn. Скрипт можно вызывать из CI или другого шага.
Продвинутые возможности
Для расширения возможностей вы можете реализовать визуальный редактор или вынести ваш контент во внешний CMS.