Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей"v8.9.004.05.2026
- "Додано для Tanstack Start Solid.js"v8.5.125.03.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Перекладіть свій вебсайт Tanstack Start + Solid.js за допомогою Intlayer | Інтернаціоналізація (i18n)
Зміст
Цей посібник демонструє, як інтегрувати Intlayer для безперешкодної інтернаціоналізації в проектах Tanstack Start із Solid.js, маршрутизацією з урахуванням локалі, підтримкою TypeScript та сучасними практиками розробки.
Чому варто обрати Intlayer, а не альтернативи?
Порівняно з основними рішеннями, такими як react-i18next або i18next, Intlayer — це рішення, яке має такі інтегровані оптимізації, як:
Intlayer оптимізовано для ідеальної роботи з TanStack Start і Solid, пропонуючи багатомовну маршрутизацію, карту сайту та всі функції, необхідні для масштабування інтернаціоналізації (i18n).
Замість того, щоб завантажувати великі файли JSON на свої сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає зменшити розмір бандлу і сторінок до 50%.
Організація вмісту за окремими областями (scoping) полегшує технічне обслуговування великомасштабних програм. Ви можете скопіювати або видалити окрему папку функцій без розумового навантаження перегляду всієї кодової бази вмісту. Крім того, Intlayer повністю типізований (fully typed), щоб забезпечити точність вашого вмісту.
Спільне розміщення вмісту зменшує контекст, необхідний для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад CLI для перевірки відсутніх перекладів,LSP, MCP і навички агента, щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.
Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує компілятор для автоматизації екстракція вмісту, а також веб-платформу, щоб допомогти перекладати у фоновому режимі.
Підключення великих файлів JSON до компонентів може призвести до проблем з продуктивністю та реакцією. Intlayer оптимізує завантаження вмісту під час збірки (build time).
Більше ніж просто рішення i18n, Intlayer пропонує власний візуальний редактор і повний CMS, щоб допомогти вам керувати своїм багатомовним вмістом у реальному часі, спрощуючи співпрацю з перекладачами, копірайтерами та іншими членами команди. Контент можна зберігати локально та/або віддалено.
Покроковий посібник із налаштування Intlayer у додатку Tanstack Start
Перегляньте Шаблон додатка на GitHub.
Створення проекту
Спочатку створіть новий проект TanStack Start, дотримуючись посібника Початок нового проекту на вебсайті TanStack Start.
Встановлення пакетів Intlayer
Встановіть необхідні пакети за допомогою бажаного менеджера пакетів:
bashКопіювати кодСкопіюйте код у буфер обміну
intlayer
Основний пакет, який надає інструменти інтернаціоналізації для керування конфігурацією, перекладу, декларування вмісту, транспіляції та команд CLI.
solid-intlayer Пакет, що інтегрує Intlayer у додаток Solid. Він надає контекстні провайдери та хуки для інтернаціоналізації Solid.
vite-intlayer Включає плагін Vite для інтеграції Intlayer з бандлером Vite, а також проміжне програмне забезпечення (middleware) для визначення бажаної локалі користувача, керування файлами cookie та обробки перенаправлення URL-адрес.
Конфігурація вашого проекту
Створіть файл конфігурації, щоб налаштувати мови вашого додатка:
intlayer.config.tsКопіювати кодСкопіюйте код у буфер обміну
За допомогою цього файлу конфігурації можна налаштувати локалізовані URL-адреси, перенаправлення через middleware, назви файлів cookie, розташування та розширення ваших декларацій вмісту, вимкнути логи Intlayer у консолі тощо. Повний список доступних параметрів див. у документації з конфігурації.
Інтеграція Intlayer у вашу конфігурацію Vite
Додайте плагін intlayer у вашу конфігурацію:
vite.config.tsКопіювати кодСкопіюйте код у буфер обміну
Плагін Vite
intlayer()використовується для інтеграції Intlayer з Vite. Він забезпечує збірку файлів декларації вмісту та моніторить їх у режимі розробки. Він визначає змінні середовища Intlayer у додатку Vite. Крім того, він надає псевдоніми (aliases) для зменшення накладних витрат на продуктивність.Створення кореневого макета
Налаштуйте свій кореневий макет для підтримки інтернаціоналізації, використовуючи
useParamsдля визначення поточної локалі та встановлюючи атрибутиlangіdirна тегуhtml.src/routes/__root.tsxКопіювати кодСкопіюйте код у буфер обміну
Створення макета локалі
Створіть макет, який обробляє префікс локалі та виконує валідацію. Цей макет гарантуватиме, що обробляються лише дійсні локалі.
Цей крок є необов'язковим, якщо вам не потрібно валідувати префікс локалі на рівні маршруту.
src/routes/{-$locale}/route.tsxКопіювати кодСкопіюйте код у буфер обміну
Тут
{-$locale}- це динамічний параметр маршруту, який замінюється поточною локаллю. Така нотація робить слот необов'язковим, дозволяючи йому працювати з такими режимами маршрутизації, як'prefix-no-default'тощо.Майте на увазі, що цей слот може спричинити проблеми, якщо ви використовуєте кілька динамічних сегментів в одному маршруті (наприклад:
/{-$locale}/other-path/$anotherDynamicPath/...). Для режиму'prefix-all'ви можете віддати перевагу перемиканню слота на$locale. Для режиму'no-prefix'або'search-params'ви можете повністю видалити цей слот.Декларування вмісту
Створюйте декларації вмісту та керуйте ними для зберігання перекладів:
src/contents/page.content.tsКопіювати кодСкопіюйте код у буфер обміну
Ваші декларації вмісту можуть бути визначені будь-де у вашому додатку, за умови, що вони включені в каталог
contentDir(за замовчуванням./app). І відповідають розширенню файлу декларації вмісту (за замовчуванням.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Докладнішу інформацію див. у документації з декларування вмісту.
Використання компонентів та хуків з урахуванням локалі
Створіть компонент
LocalizedLinkдля навігації з урахуванням локалі:src/components/LocalizedLink.tsxКопіювати кодСкопіюйте код у буфер обміну
Цей компонент виконує дві функції:
- Видалення непотрібного префікса
{-$locale}з URL. - Вставлення параметра локалі в URL, щоб користувач був перенаправлений безпосередньо на локалізований маршрут.
Потім ми можемо створити хук
useLocalizedNavigateдля програмної навігації:src/hooks/useLocalizedNavigate.tsxКопіювати кодСкопіюйте код у буфер обміну
- Видалення непотрібного префікса
Використання Intlayer на ваших сторінках
Отримуйте доступ до своїх словників вмісту в усьому додатку:
Локалізована домашня сторінка
src/routes/{-$locale}/index.tsxКопіювати кодСкопіюйте код у буфер обміну
Якщо ви хочете використовувати свій вміст в атрибуті типу
string, наприкладalt,title,href,aria-labelтощо, ви повинні викликати значення функції, наприклад:htmlКопіювати кодСкопіюйте код у буфер обміну
In Solid,
useIntlayerreturns reactive content (e.g.,content). You can access its properties directly.Щоб дізнатися більше про хук
useIntlayer, зверніться до документації.Створення компонента перемикання локалі
Створіть компонент, який дозволить користувачам змінювати мову:
src/components/LocaleSwitcher.tsxКопіювати кодСкопіюйте код у буфер обміну
у файлах Solid
localeзuseLocaleє signal accessor. Використовуйтеlocale()(з дужками), щоб реактивно читати його поточне значення.Щоб дізнатися більше про хук
useLocale, зверніться до документації.Керування атрибутами HTML
Як було показано на кроці 5, ви можете керувати атрибутами
langіdirтегуhtml, використовуючиuseParamsу вашому кореневому компоненті. Це гарантує, що правильні атрибути встановлено як на сервері, так і на клієнті.src/routes/__root.tsxКопіювати кодСкопіюйте код у буфер обміну
Додавання Middleware
Ви також можете використовувати
intlayerProxy, щоб додати маршрутизацію на стороні сервера до вашого додатка. Цей плагін автоматично визначатиме поточну локаль на основі URL-адреси та встановлюватиме відповідний файл cookie локалі. Якщо локаль не вказано, плагін визначить найбільш підходящу локаль на основі налаштувань мови браузера користувача. Якщо локаль не виявлено, він перенаправить на локаль за замовчуванням.Зверніть увагу, що для використання
intlayerProxyу продакшні вам потрібно перенести пакетvite-intlayerзdevDependenciesдоdependencies.vite.config.tsКопіювати кодСкопіюйте код у буфер обміну
Інтернаціоналізація ваших метаданих
Ви також можете використовувати функцію
getIntlayer, щоб отримати доступ до ваших словників вмісту в завантажувачіheadдля метаданих з урахуванням локалі:src/routes/{-$locale}/index.tsxКопіювати кодСкопіюйте код у буфер обміну
Отримання локалі у ваших діях на сервері
Ви можете захотіти отримати доступ до поточної локалі з ваших серверних дій (server actions) або кінцевих точок API. Ви можете зробити це за допомогою допоміжної функції
getLocaleзintlayer.Ось приклад з використанням серверних функцій TanStack Start:
src/routes/{-$locale}/index.tsxКопіювати кодСкопіюйте код у буфер обміну
Керування сторінками "не знайдено" (404)
Необов'язковоКоли користувач відвідує неіснуючу сторінку, ви можете відобразити власну сторінку "не знайдено", і префікс локалі може вплинути на те, як ця сторінка запускається.
Розуміння обробки 404 в TanStack Router з префіксами локалі
У TanStack Router обробка сторінок 404 з локалізованими маршрутами вимагає багаторівневого підходу:
- Спеціальний маршрут 404: Окремий маршрут для відображення інтерфейсу 404
- Валідація на рівні маршруту: Перевіряє префікси локалі та перенаправляє недійсні на 404
- Catch-all маршрут: Захоплює будь-які шляхи, що не збігаються, всередині сегмента локалі
src/routes/{-$locale}/404.tsxКопіювати кодСкопіюйте код у буфер обміну
src/routes/{-$locale}/route.tsxКопіювати кодСкопіюйте код у буфер обміну
src/routes/{-$locale}/$.tsxКопіювати кодСкопіюйте код у буфер обміну
Вилучення вмісту з ваших компонентів
Необов'язковоЯкщо у вас є існуюча кодова база, трансформація тисяч файлів може зайняти багато часу.
Щоб полегшити цей процес, Intlayer пропонує компілятор / екстрактор для трансформації ваших компонентів та екстракція вмісту.
Щоб налаштувати його, ви можете додати розділ
compilerу свій файлintlayer.config.ts:intlayer.config.tsКопіювати кодСкопіюйте код у буфер обміну
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Решта вашої конфігурації compiler: { /** * Вказує, чи слід увімкнути компілятор. */ enabled: true, /** * Визначає шлях до вихідних файлів */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Вказує, чи слід зберігати компоненти після їх трансформації. * * - Якщо `true`, компілятор перезапише файл компонента на диску. Таким чином, трансформація буде постійною, і компілятор пропустить трансформацію для наступного процесу. У такий спосіб компілятор може трансформувати додаток, після чого його можна буде видалити. * * - Якщо `false`, компілятор вставить виклик функції `useIntlayer()` у код лише у вихідних даних збірки, зберігши базову кодову базу недоторканою. Трансформація проводитиметься лише в пам'яті. */ saveComponents: false, /** * Префікс ключа словника */ dictionaryKeyPrefix: "", }, }; export default config;Запустіть екстрактор, щоб трансформувати ваші компоненти та вилучити вміст
bashКопіювати кодСкопіюйте код у буфер обміну
Конфігурація TypeScript
Intlayer використовує розширення модулів (module augmentation), щоб отримати переваги TypeScript і зміцнити вашу кодову базу.
Переконайтеся, що ваша конфігурація TypeScript включає автоматично згенеровані типи:
tsconfig.jsonКопіювати кодСкопіюйте код у буфер обміну
Конфігурація Git
Ми рекомендуємо ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх фіксації (commit) у вашому репозиторії Git.
Для цього ви можете додати наступні інструкції до свого файлу .gitignore:
Скопіюйте код у буфер обміну
Розширення VS Code
Щоб покращити свій досвід розробки з Intlayer, ви можете встановити офіційне розширення Intlayer VS Code.
Встановити з VS Code Marketplace
Це розширення пропонує:
- Автодоповнення для ключів перекладу.
- Виявлення помилок у реальному часі для відсутніх перекладів.
- Вбудований попередній перегляд (inline previews) перекладеного вмісту.
- Швидкі дії для легкого створення та оновлення перекладів.
Докладніше про те, як користуватися розширенням, див. у документації до розширення Intlayer VS Code.
Подальші кроки
Щоб піти далі, ви можете впровадити візуальний редактор або винести свій вміст за допомогою CMS.