Перевод и локализация: какие модели сильны в русском
LLM переводит лучше классических движков, если правильно поставить задачу. Глоссарии, тон, сохранение разметки и выбор модели под русский.
Анна Величко
Перевод и локализация: какие модели сильны в русском
LLM обошли классические переводчики там, где важен контекст: они понимают, что «bank» в тексте про реку — это берег, и не переводят названия продуктов. Но чтобы это заработало, задачу надо ставить как переводчику-человеку, а не как кнопке «перевести».
Какие модели сильны в русском
Не все модели одинаково хороши на русском — многие обучены преимущественно на английском и выдают кальку.
- DeepSeek, Qwen — пишут на русском чисто, без латиницы посреди фразы и без англицизмов там, где есть нормальное слово.
- Gemini — сильна на локализации, чувствует регистр и стилистику.
- Проверяйте на своём домене: юридический русский и разговорный — разные задачи, и модель может быть хороша в одном и слаба в другом.
Ставьте задачу как человеку
Плохо: «переведи на русский». Хорошо — с контекстом и требованиями:
system = """Ты профессиональный переводчик IT-документации EN→RU.Правила:- Термины из глоссария переводи строго по нему.- Названия продуктов, API-методы, код — НЕ переводи.- Тон — технический, на "вы", без канцелярита.- Сохраняй Markdown-разметку и порядок абзацев."""Глоссарий — обязательная часть
Без глоссария модель переведёт один термин тремя способами на трёх страницах. Подавайте его прямо в промпт:
glossary = {"deployment": "развёртывание", "rollback": "откат", "endpoint": "эндпоинт", "rate limit": "лимит запросов"}system += "\n\nГлоссарий:\n" + "\n".join(f"{k} → {v}" for k, v in glossary.items())Сохранение разметки
Главная боль автоперевода — модель ломает разметку: съедает **, переводит текст внутри код-блоков, путает плейсхолдеры вроде {count}. Явно запрещайте это в промпте и проверяйте результат регуляркой на баланс тегов. Плейсхолдеры лучше защитить: перед переводом заменить на __PH_0__, после — вернуть.
Батчи и консистентность
Переводите связанные строки одним запросом, а не по одной — так модель держит единый тон и терминологию. Для интерфейсных строк подавайте их списком с ключами:
resp = client.chat.completions.create( model="deepseek-pro", messages=[{"role": "system", "content": system}, {"role": "user", "content": json.dumps(strings, ensure_ascii=False)}], temperature=0.2, response_format={"type": "json_object"},)Низкая temperature для перевода критична: 0.1–0.3. Творчество тут враг.
Грабли
- Слишком буквально или слишком вольно. Просите «естественный русский, а не подстрочник, но без отсебятины».
- Форма обращения. Модель скачет между «ты» и «вы». Фиксируйте явно.
- Единицы и форматы. Даты, валюты, десятичные разделители под локаль — либо просите адаптировать, либо оставляйте как есть, но решите заранее.
Для контроля качества прогоняйте обратный перевод на выборке: RU→EN и сравнивайте смысл с оригиналом. Это дешёвый способ поймать грубые искажения до релиза.