Навыки i18n
Команды ИИ для аудита и оборачивания строк i18n
Проблема
В Вашей кодовой базе 500 жёстко заданных строк, разбросанных по компонентам, шаблонам и представлениям. Ручное оборачивание требует нескольких дней утомительного поиска и замены. Даже после этого остаются разделённые предложения, которые нарушаются в немецком, логика множественного числа, не работающая в арабском, и лишние ключи, раздувающие файлы локалей.
Решение
Две команды ИИ с косой чертой для всего процесса i18n. Запустите /i18n-review для аудита кода без изменений, а затем /i18n-wrap, чтобы автоматически всё исправить. Обе команды определяют Ваш фреймворк, понимают формат файлов локалей и проверяют изменения перед фиксацией.
/i18n-review
Аудит без изменений, который находит разделённые предложения, нарушенные формы множественного числа, необёрнутые строки и неиспользуемые ключи. Никогда не изменяет Ваш код.
/i18n-wrap
Автоматически оборачивает жёстко заданные строки правильной функцией перевода, создаёт смысловые ключи, обновляет файлы локалей и проверяет сборку.
Команда /i18n-review
Команда review выполняет аудит Вашей кодовой базы без изменений. Она сканирует каждый файл на проблемы i18n и создаёт приоритетный отчёт с точными путями к файлам и предложениями исправлений. Ваш код никогда не изменяется.
/i18n-review src/
/i18n-review src/ --framework=next-intlЧто она проверяет
- Разделённые предложения: объединённые вызовы t(), нарушающие порядок слов в других языках
- Избыточное оборачивание: технические строки, классы CSS, URL и значения перечислений, ошибочно обёрнутые в t()
- Недостаточное оборачивание: видимые строки интерфейса, такие как названия кнопок, заголовки и сообщения об ошибках, оставленные жёстко заданными
- Проблемы множественного числа: тернарные операторы или проверки === 1 вместо правильного синтаксиса множественного числа ICU
- Неиспользуемые ключи: ключи перевода, определённые в файлах локалей, но никогда не используемые в коде
- Жёстко заданные значения формата: даты, валюты и числа без средств форматирования Intl
Команда /i18n-wrap
Команда wrap автоматически оборачивает жёстко заданные строки правильной функцией перевода для Вашего фреймворка. Она определяет библиотеку i18n, создаёт смысловые ключи, сгруппированные по компонентам или функциям, обновляет файлы локалей и проверяет успешность сборки.
/i18n-wrap src/components/
/i18n-wrap src/ --framework=react-i18nextЧто она делает
- Определение фреймворка: находит Вашу библиотеку i18n и её функцию перевода (t, $t, $_, gettext и другие)
- Создание смысловых ключей: формирует понятные ключи, такие как nav.signIn и errors.notFound, вместо общих названий
- Обновление файлов локалей: добавляет новые ключи в файл исходной локали в правильном формате (JSON, YAML, PO и других)
- Проверка сборки: после оборачивания запускает команды сборки, линтера и тестов для выявления регрессий
Поддерживаемые фреймворки
Обе команды автоматически определяют фреймворк по зависимостям проекта. Его также можно явно указать флагом --framework. Ниже перечислены 10 поддерживаемых фреймворков, их функции перевода и форматы множественного числа.
| Фреймворк | Функция перевода | Формат множественного числа |
|---|---|---|
| react-i18next | t() | key_one / key_other |
| next-intl | t() | ICU {count, plural, ...} |
| vue-i18n | $t() | Pipe syntax | singular | plural |
| angular i18n | $localize | ICU {count, plural, ...} |
| svelte-i18n | $_() | ICU {count, plural, ...} |
| flutter intl | S.of(context) | Intl.plural() |
| django | gettext / _() | ngettext() |
| rails i18n | t() | count key |
| laravel | __() / @lang | trans_choice() |
| swift | NSLocalizedString | .stringsdict |
Установка
Скопируйте файлы команд в каталог .claude/commands/. Вот и всё: без зависимостей и конфигурации. Команды представляют собой обычные файлы Markdown, которые может выполнить любой ИИ-помощник для написания кода.
mkdir -p .claude/commands
cp commands/i18n-review.md .claude/commands/
cp commands/i18n-wrap.md .claude/commands/Примеры использования
Проект React
Проверьте приложение React с react-i18next, а затем оберните все жёстко заданные строки. Команды определяют react-i18next по package.json и используют правильную функцию t() и формат множественного числа key_one/key_other.
# 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() для форм множественного числа.
# 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
или нажмите, чтобы выбрать
Целевые языки