Разработка AI-системы автоматизации UI-локализации
UI-локализация — перевод строк интерфейса с учётом контекста: тип элемента, максимальная длина, плейсхолдеры, состояния. AI-система интегрируется в CI/CD и автоматически переводит новые строки при появлении в коде.
Специфика UI-перевода
Ограничения длины: кнопка с текстом «Save» в 4 символа → «Сохранить» в 9. Если поле фиксированной ширины — перевод должен укладываться. Система проверяет character limits и предупреждает о превышениях.
Контекст элемента: слово «Back» в кнопке навигации → «Назад», в контексте «back button» → иначе. AI получает метаданные: тип элемента, родительский экран, соседние строки.
Плейсхолдеры: строка "Hello, {name}!" — плейсхолдер должен сохраниться в переводе в том же формате.
Plural forms: русский язык имеет 4 формы склонения числительных. ICU MessageFormat обязателен для корректной обработки.
Автоматический перевод с контекстом
async def translate_ui_string(
key: str,
source: str,
target_lang: str,
context: UIStringContext
) -> UITranslation:
prompt = f"""Переведи UI-строку на {target_lang}.
Строка: {source}
Тип элемента: {context.element_type}
Экран: {context.screen_name}
Максимум символов: {context.max_length or 'нет ограничений'}
Контекст: {context.description or 'не указан'}
Требования:
- Уложись в лимит символов
- Сохрани все плейсхолдеры {{...}} без изменений
- Стиль: {context.style_guide}"""
translation = await llm.generate_async(prompt, max_tokens=200)
# Валидация
if context.max_length and len(translation) > context.max_length:
translation = shorten_translation(translation, context.max_length)
placeholders_ok = verify_placeholders(source, translation)
return UITranslation(
key=key,
translation=translation,
placeholders_valid=placeholders_ok,
length_ok=not context.max_length or len(translation) <= context.max_length,
confidence=estimate_confidence(source, translation, context)
)
Интеграция с Crowdin / Phrase
Основные TMS-платформы имеют API для автоматической загрузки/выгрузки. При коммите в GitHub:
- GitHub Action запускает сканирование новых строк
- Строки загружаются в Crowdin через API
- AI-перевод запускается автоматически
- Строки с confidence > 0.9 автоматически одобряются
- Остальные — в очередь на проверку
- После одобрения — PR с обновлёнными файлами локализации
Скриншот-контекст
Платформы типа Phrase Strings поддерживают скриншоты с разметкой: каждая строка привязана к скриншоту с выделением элемента. AI-переводчик видит визуальный контекст → лучшее качество перевода коротких строк без контекста.







