Skip to main content

Навыки i18n

Команды ИИ для аудита и оборачивания строк i18n

Проблема

В Вашей кодовой базе 500 жёстко заданных строк, разбросанных по компонентам, шаблонам и представлениям. Ручное оборачивание требует нескольких дней утомительного поиска и замены. Даже после этого остаются разделённые предложения, которые нарушаются в немецком, логика множественного числа, не работающая в арабском, и лишние ключи, раздувающие файлы локалей.

Ручное оборачивание i18n чревато ошибками: разработчики пропускают разделённые предложения, нарушают формы множественного числа тернарными операторами и оставляют жёстко заданные строки в редких сценариях. Эти ошибки проявляются только после перевода, когда исправление обходится в 10 раз дороже.

Решение

Две команды ИИ с косой чертой для всего процесса i18n. Запустите /i18n-review для аудита кода без изменений, а затем /i18n-wrap, чтобы автоматически всё исправить. Обе команды определяют Ваш фреймворк, понимают формат файлов локалей и проверяют изменения перед фиксацией.

/i18n-review

Аудит без изменений, который находит разделённые предложения, нарушенные формы множественного числа, необёрнутые строки и неиспользуемые ключи. Никогда не изменяет Ваш код.

/i18n-wrap

Автоматически оборачивает жёстко заданные строки правильной функцией перевода, создаёт смысловые ключи, обновляет файлы локалей и проверяет сборку.

Команда /i18n-review

Команда review выполняет аудит Вашей кодовой базы без изменений. Она сканирует каждый файл на проблемы i18n и создаёт приоритетный отчёт с точными путями к файлам и предложениями исправлений. Ваш код никогда не изменяется.

Terminal
/i18n-review src/
/i18n-review src/ --framework=next-intl

Что она проверяет

  • Разделённые предложения: объединённые вызовы t(), нарушающие порядок слов в других языках
  • Избыточное оборачивание: технические строки, классы CSS, URL и значения перечислений, ошибочно обёрнутые в t()
  • Недостаточное оборачивание: видимые строки интерфейса, такие как названия кнопок, заголовки и сообщения об ошибках, оставленные жёстко заданными
  • Проблемы множественного числа: тернарные операторы или проверки === 1 вместо правильного синтаксиса множественного числа ICU
  • Неиспользуемые ключи: ключи перевода, определённые в файлах локалей, но никогда не используемые в коде
  • Жёстко заданные значения формата: даты, валюты и числа без средств форматирования Intl
Команда review работает полностью без изменений. Запускайте её во время разработки или в конвейерах CI/CD так часто, как захотите, без риска непреднамеренных изменений.

Команда /i18n-wrap

Команда wrap автоматически оборачивает жёстко заданные строки правильной функцией перевода для Вашего фреймворка. Она определяет библиотеку i18n, создаёт смысловые ключи, сгруппированные по компонентам или функциям, обновляет файлы локалей и проверяет успешность сборки.

Terminal
/i18n-wrap src/components/
/i18n-wrap src/ --framework=react-i18next

Что она делает

  • Определение фреймворка: находит Вашу библиотеку i18n и её функцию перевода (t, $t, $_, gettext и другие)
  • Создание смысловых ключей: формирует понятные ключи, такие как nav.signIn и errors.notFound, вместо общих названий
  • Обновление файлов локалей: добавляет новые ключи в файл исходной локали в правильном формате (JSON, YAML, PO и других)
  • Проверка сборки: после оборачивания запускает команды сборки, линтера и тестов для выявления регрессий
Команда wrap проверяет каждое изменение, запуская сборку и набор тестов. При любом сбое она автоматически отменяет изменения.

Поддерживаемые фреймворки

Обе команды автоматически определяют фреймворк по зависимостям проекта. Его также можно явно указать флагом --framework. Ниже перечислены 10 поддерживаемых фреймворков, их функции перевода и форматы множественного числа.

ФреймворкФункция переводаФормат множественного числа
react-i18nextt()key_one / key_other
next-intlt()ICU {count, plural, ...}
vue-i18n$t()Pipe syntax | singular | plural
angular i18n$localizeICU {count, plural, ...}
svelte-i18n$_()ICU {count, plural, ...}
flutter intlS.of(context)Intl.plural()
djangogettext / _()ngettext()
rails i18nt()count key
laravel__() / @langtrans_choice()
swiftNSLocalizedString.stringsdict

Установка

Скопируйте файлы команд в каталог .claude/commands/. Вот и всё: без зависимостей и конфигурации. Команды представляют собой обычные файлы Markdown, которые может выполнить любой ИИ-помощник для написания кода.

Terminal
mkdir -p .claude/commands
cp commands/i18n-review.md .claude/commands/
cp commands/i18n-wrap.md .claude/commands/
Это стандартные файлы команд с косой чертой. Они сразу работают в Claude Code и могут быть адаптированы для других ИИ-помощников для написания кода, поддерживающих пользовательские команды.

Примеры использования

Проект React

Проверьте приложение React с react-i18next, а затем оберните все жёстко заданные строки. Команды определяют react-i18next по package.json и используют правильную функцию t() и формат множественного числа key_one/key_other.

React Project
# Review a React project for i18n issues
/i18n-review src/ --framework=react-i18next

# Wrap all hardcoded strings automatically
/i18n-wrap src/components/ --framework=react-i18next

# Result: t() calls inserted, keys added to en/translation.json

Проект Django

Проверьте шаблоны и представления Django на проблемы i18n, а затем оберните строки с помощью gettext. Команды определяют Django по settings.py и используют _() для простых строк и ngettext() для форм множественного числа.

Django Project
# Review Django templates and views
/i18n-review myapp/ --framework=django

# Wrap hardcoded strings with gettext
/i18n-wrap myapp/templates/ --framework=django

# Result: _() calls inserted, .po file updated

Попробовать i18n Agent

Перетащите сюда файл перевода

JSON, YAML, PO, XML, CSV, Markdown, Properties

или нажмите, чтобы выбрать

Целевые языки

Регистрация не требуетсяМгновенный расчёт

Часто задаваемые вопросы