Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Интеграция сервера MCP Intlayer в ваш любимый AI-ассистент позволяет получать все документы непосредственно из ChatGPT, DeepSeek, Cursor, VSCode и т.д.
Просмотр документации сервера MCPСодержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Тестирование вашего контента
Это руководство показывает, как автоматически проверять полноту ваших словарей, выявлять отсутствующие переводы до выпуска и тестировать локализованный пользовательский интерфейс в вашем приложении.
Что вы можете тестировать
- Отсутствующие переводы: провалить CI, если для любого словаря отсутствуют обязательные локали.
- Отрисовка локализованного UI: рендерить компоненты с провайдером конкретной локали и проверять видимый текст/атрибуты.
- Аудиты во время сборки: запускать быстрый аудит локально через CLI.
Быстрый старт: аудит через CLI
Запустите аудит из корня вашего проекта:
Копировать код в буфер обмена
npx intlayer content test
Полезные флаги:
- --env-file [path]: загрузить переменные окружения из файла.
- -e, --env [name]: выбрать профиль окружения.
- --base-dir [path]: задать базовую директорию приложения для разрешения путей.
- --verbose: показывать подробные логи.
- --prefix [label]: добавлять префикс к строкам логов.
Примечание: CLI выводит подробный отчет, но не завершает работу с ошибкой при обнаружении проблем. Для контроля в CI добавьте юнит-тест (ниже), который проверяет отсутствие отсутствующих обязательных локалей.
Программное тестирование (Vitest/Jest)
Используйте API Intlayer CLI, чтобы проверить, что отсутствующих переводов для обязательных локалей нет.
Копировать код в буфер обмена
/* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("переводы", () => { it("отсутствуют обязательные локали", () => { const result = listMissingTranslations(); if (result.missingRequiredLocales.length > 0) { // Полезно, когда тест не проходит локально или в CI console.log(result.missingTranslations); } expect(result.missingRequiredLocales).toHaveLength(0); });});
Эквивалент для Jest:
Копировать код в буфер обмена
import { listMissingTranslations } from "intlayer/cli";test("отсутствуют обязательные локали", () => { const result = listMissingTranslations(); if (result.missingRequiredLocales.length > 0) { // eslint-disable-next-line no-console console.log(result.missingTranslations); } expect(result.missingRequiredLocales).toHaveLength(0);});
Как это работает:
- Intlayer читает вашу конфигурацию (locales, requiredLocales) и объявленные словари, затем сообщает:
- missingTranslations: для каждого ключа, какие локали отсутствуют и из какого файла.
- missingLocales: объединение всех отсутствующих локалей.
- missingRequiredLocales: подмножество, ограниченное requiredLocales (или все локали, если requiredLocales не установлены).
Тестирование локализованного UI (React / Next.js)
Рендерьте компоненты под провайдером Intlayer и проверяйте видимый контент.
Пример для React (Testing Library):
Копировать код в буфер обмена
import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => { render( <IntlayerProvider locale="en-US"> <MyComponent /> </IntlayerProvider> ); expect( screen.getByText("Ожидаемый английский заголовок") ).toBeInTheDocument();});
Пример для Next.js (App Router): используйте обертку фреймворка:
Копировать код в буфер обмена
import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("отображает локализованный заголовок на французском", () => { render( <IntlayerClientProvider locale="fr-FR"> <MyPage /> </IntlayerClientProvider> ); expect( screen.getByRole("heading", { name: "Titre attendu" }) ).toBeInTheDocument();});
Советы:
- Когда вам нужны необработанные строковые значения для атрибутов (например, aria-label), обращайтесь к полю .value, возвращаемому useIntlayer в React.
- Храните словари рядом с компонентами для упрощения модульного тестирования и очистки.
Непрерывная интеграция
Добавьте тест, который будет прерывать сборку, если отсутствуют необходимые переводы.
package.json:
Копировать код в буфер обмена
{ "scripts": { "test:i18n": "vitest run -c" }}
Пример GitHub Actions:
Копировать код в буфер обмена
name: CIon: [push, pull_request]jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: npm ci - run: npm run test:i18n
Опционально: запустите аудит CLI для получения удобочитаемого отчёта вместе с тестами:
Копировать код в буфер обмена
npx intlayer content test --verbose
Устранение неполадок
- Убедитесь, что ваша конфигурация Intlayer определяет locales и (опционально) requiredLocales.
- Если ваше приложение использует динамические или удалённые словари, запускайте тесты в среде, где эти словари доступны.
- Для смешанных монорепозиториев используйте --base-dir, чтобы указать CLI правильный корень приложения.
История документации
Версия | Дата | Изменения |
---|---|---|
6.0.0 | 2025-09-20 | Введение тестирования |