L10n & I18n UI Audit (Ride-Hailing)
Визуальный кросс-локализационный анализ UI для приложений вызова такси.
Фокус: Деньги, Время, Геолокация, RTL + СЕМАНТИКА ПЕРЕВОДОВ.
Парсинг аргументов (ОБЯЗАТЕЛЬНО — шаг 0)
Путь к скриншотам ищи по приоритету — остановись на первом успешном:
1. Args скилла — любой текст после имени команды. Примеры:
- •
/screenshot-analyze resources/screenshots/brazil_passenger_main_screen→resources/screenshots/brazil_passenger_main_screen - •
/screenshot-analyze /abs/path/screens→/abs/path/screens
2. Glob-поиск (fallback) — если args не содержат путь, выполни Glob("**/*.{png,jpg,jpeg,gif,webp}"), сгруппируй по директориям, возьми директорию с наибольшим количеством изображений.
3. Спроси пользователя — только если пп.1-2 не дали результата.
СТРОГО ЗАПРЕЩЕНО задавать вопрос о пути, если в пп.1-2 найден путь или файлы.
Scope (Что проверяем)
1. СЕМАНТИКА (Translation Quality) ← ГЛАВНЫЙ ПРИОРИТЕТ - Смысловые ошибки (false friends, wrong context) - Оскорбительный/опасный контент - Буквальный перевод составных слов 2. ВЕРСТКА (Layout) - Truncation, Overflow, Overlap - RTL Mirroring 3. ФОРМАТЫ (CLDR Compliance) - Числа, Валюта, Дата, Время, Дистанция 4. КОНСИСТЕНТНОСТЬ - Единый язык, числовая система, терминология
Core Principles
1. Translation Verification FIRST
ГЛАВНАЯ ЗАДАЧА — ПРОВЕРКА ПЕРЕВОДОВ НА СМЫСЛОВЫЕ ОШИБКИ. Активно ищи:
- •False Friends — похожие слова с разным значением
- •Wrong Context — правильное слово, неправильный контекст
- •Literal Translation — буквальный перевод идиом/терминов
- •Offensive Content — оскорбительный/табуированный контент
2. Container vs Content
Помимо перевода проверяй: контейнеры (влезает ли текст) и форматы (CLDR). Не придирайся к стилистике, если нет смысловой ошибки.
3. RTL Mirroring
В RTL локалях (ar, he, fa, ur) весь UI зеркальный. Отзеркалить: отступы, стрелки навигации, прогресс-бары. НЕ зеркалить: автомобили, карты.
4. Валюта ≠ Локаль
Валюта определяется регионом, не языком. inDrive Brazil → R$ (BRL) на ЛЮБОМ языке UI. НЕ считать R$ в ru-RU интерфейсе багом.
Входные требования
| Параметр | Обязательность | Описание |
|---|---|---|
| Путь к скриншотам | Обязательно | Файл или директория (JPEG, PNG, GIF, WebP) |
| Регион | Авто / Спросить | Из имени файла (_BR, _RU) или спросить |
| Целевая локаль | Авто | Из имени файла (ru_BR.png → locale=ru, region=BR) |
Требования к изображениям
| Параметр | Лимит |
|---|---|
| Размер файла | ≤5 MB |
| Разрешение | ≤8000×8000 px |
| Оптимальное | ≤1568 px по длинной стороне |
| Минимальное | ≥200 px |
Определение региона
Формат имен файлов
{locale}_{REGION}.png
Примеры:
- en_BR.png → Locale: en, Region: BR (Бразилия)
- ru_BR.png → Locale: ru, Region: BR (Бразилия)
- ar_SA.png → Locale: ar, Region: SA (Саудовская Аравия)
Если регион определен из файлов — НЕ задавай вопросы.
Если регион НЕ определен — спроси:
"С какого региона собраны эти скриншоты?"
- •Бразилия (BR) — R$, km
- •Россия (RU) — ₽, km
- •Саудовская Аравия (SA) — SAR, RTL, km
- •США (US) — $, mi
Алгоритм анализа (4-Step)
Step 1: Reference Check
- •Найди EN скриншот — это Base Layout
- •Запомни структуру: количество элементов, позиции, размеры
Step 2: Layout Stress Test
- •Найди языки с максимальной длиной: DE, RU, ES, PT-BR
- •Проверь на каждом: Overflow, Truncation, Line Break Issues
Step 3: Bi-Directional Check (RTL)
Для AR/HE/FA/UR:
- •Зеркалирование Margins/Paddings
- •Направление стрелок навигации
- •Позиция Back/Close кнопок
- •Автомобили НЕ отзеркалены
Step 4: Data Format Validation (CLDR)
- •Числа: разделители тысяч и дробей
- •Валюта: символ, позиция, отбивка
- •Время: 12h vs 24h
Справочные таблицы: references/cldr-tables.md
Verbosity Protocol
Structured Output Priority: Весь analysis идёт в артефакт (MD/HTML), не в чат.
Chat output (ограничения):
- •Brief Summary: max 5 строк (что нашли, сколько, итог)
- •Findings table: max 15 строк (топ по severity)
- •Полный отчёт:
📊 Полный отчёт: {path}+ открыть файл
Iterative steps: Не выводить прогресс по каждому файлу. Checkpoint только при:
- •Phase transition (Фаза N → Фаза N+1)
- •Blocker обнаружен
- •Завершение (SKILL COMPLETE)
Tools first:
- •Grep → table → report, без "Now I will grep..."
- •Read → analyze → report, без "The file shows..."
Post-Check: Inline перед SKILL COMPLETE (5-7 строк checklist), не отдельный файл.
Steps 1-4: Silent. Output: Master Issues Table (max 10) + HTML report opened.
LQA & Domain-Specific Checks
Полные таблицы проверок (типы семантических ошибок, валюты, время, RTL) — в references/lqa-rules.md.
Ключевые приоритеты:
- •CRITICAL: False Friends, Wrong Context, Offensive Content, RTL Price Concatenation
- •ERROR: Literal Translation, CLDR нарушения, неправильные форматы времени
- •WARNING: Стилистика, minor format issues
Ограничения (Safety Limits)
Max Issues: 10
Ограничивай отчёт ТОП-10 самых критичных ошибок. Приоритет: CRITICAL → ERROR → WARNING.
Grouping
Одинаковая ошибка на нескольких скриншотах = 1 запись с перечислением файлов.
Перевод на русский
Для не-русских текстов добавляй перевод:
✅ "إيجاد الضحايا" (Найти жертв) — опасный перевод
Акцент на валютах
ОБЯЗАТЕЛЬНО сравнивай формат валюты:
- •Символ (R$ vs BRL)
- •Позиция (R$13 vs 13R$)
- •Формат числа (R$13 vs R$13.00)
Severity Guidelines
| Severity | Критерий |
|---|---|
| CRITICAL | Оскорбительный контент, полная поломка функционала |
| ERROR | Неправильный перевод с изменением смысла, обрезанный CTA |
| WARNING | Стилистика, minor format issues |
| INFO | Рекомендации по улучшению |
Anti-Patterns (BANNED)
- •Vague Descriptions → указывай элемент + конкретику: "Button text truncated at 'Регистрац...'"
- •Currency Region False Positive → валюта региона (R$ в BR) корректна на любом языке UI
- •Translating Non-Translateables → адреса, POI, бренды с карт не переводятся
- •Missing Location → каждый баг с указанием элемента: "CTA button (bottom of screen)"
Формат вывода
В чат вывести только:
📊 L10n: {N} issues (CRITICAL: X, ERROR: Y) → analysis-report.html
Ограничения:
- •0 ошибок → "✅ Ошибок не обнаружено"
HTML Report
Генерируется в директории со скриншотами.
Заголовок: L10n Report — {COUNTRY_NAME}
Структура: Summary Cards → Context Banner → Per-Screenshot Sections
Шаблон: references/html-template.md
ОБЯЗАТЕЛЬНО: Открой отчёт командой open {path}/analysis-report.html
Cross-Screenshot Comparison
При нескольких локалях — сравнительная таблица:
| Элемент | EN (ref) | RU | AR | Проблема | |---------|----------|----|----|----------| | CTA Button | Find offers | Найти ✅ | ❌ | AR: Буквальный перевод | | Price | R$13 | R$13 ✅ | R$13 ✅ | — | | Back Button | < | < ✅ | ❌ < | AR: Должен быть > |
Self-Check Protocol
Перед завершением проверь:
- • Locale указан для всех проблем
- • Location указан для всех проблем
- • Severity присвоен
- • No false positives (валюта региона)
- • Не-русские тексты с переводом
Полный чек-лист: references/checklists.md
Что НЕ переводится
| Элемент | Правило |
|---|---|
| Имена пользователей | Как введены |
| Марки/модели авто | Глобальные бренды |
| Адреса с карт | Локальный язык места |
| POI | Язык места |
| Госномера | Формат региона |
Связанные файлы
| Файл | Содержание |
|---|---|
references/cldr-tables.md | CLDR таблицы: валюты, числа, время, plurals |
references/checklists.md | Полные чек-листы: RTL, Layout, CLDR, Semantics |
references/html-template.md | HTML шаблон отчёта |