![]()
Перевод может звучать естественно и всё равно мешать продукту. Если один и тот же раздел в разных местах называется «пространством», «областью» и «рабочей зоной», пользователь начинает сомневаться, это одно место или три разных. Для рабочего перевода последовательность терминов важна не меньше гладкости фраз.
В Чатиуме можно собрать редактор переводов с глоссарием, исходными строками и проверкой служебных значений. Так команда будет согласовывать не отдельные красивые фразы, а целостный язык продукта.
Создай редактор переводов интерфейса. Храни исходные строки, согласованный глоссарий и варианты перевода. Не меняй переменные и технические идентификаторы. Показывай нарушения терминологии, позволяй утверждать строки и сохраняй историю правок по языкам.
Начните с контекста, которого нет в строке
Слово «Open» может быть действием, состоянием или частью названия. Если модель видит только это слово, она вынуждена выбирать интерпретацию. Добавьте тип элемента, соседний текст и назначение экрана.
Для кнопки важно, что произойдёт после нажатия. Для ошибки — какое действие поможет пользователю. Для заголовка — какую группу элементов он объединяет. Одинаковая английская фраза в разных местах иногда требует разных переводов, и это должно быть осознанным решением.
Пример: рабочее пространство и участники
Допустим, команда решила переводить workspace как «пространство», а member — как «участник». Исходная строка: Invite {count} members to this workspace. В переводе должны сохраниться переменная и выбранные понятия, но грамматическая форма зависит от числа.
Один текст «Пригласить {count} участников в пространство» может быть удобным черновиком, но продукту нужно проверить реальные значения и используемую систему множественного числа. Модель не должна сама менять имя {count} или добавлять неизвестный формат переменных.
| Что хранить рядом со строкой | Зачем |
|---|---|
| Контекст экрана | Правильно понять действие |
| Согласованные термины | Сохранить язык продукта |
| Переменные | Не сломать подстановку данных |
| Ограничение длины | Учесть место в интерфейсе |
| Пример отображения | Проверить итоговую фразу с реальными значениями |
Где нужен человек
Глоссарий не должен механически запрещать все другие слова. Термин может входить в устойчивое выражение или менять значение в другом контексте. Спорные места лучше показывать редактору с объяснением, а не молча заменять весь текст по словарю.
То же касается тона. Для команды на «вы» нейросеть не должна внезапно переходить на «ты» в сообщениях об ошибках. Для кнопок полезна последовательная форма действия. Эти правила стоит записать один раз и применять к каждой партии строк.
Короткий вызов Qwen в Чатиуме
В sourceText включите язык назначения, глоссарий, контекст и исходные строки с ID. Пример показывает перевод текста; программная проверка сохранности переменных выполняется отдельно.
Это фрагмент серверного обработчика Чатиума. ctx передаёт платформа, sourceText содержит проверенный текст из формы. done и failed — заранее зарегистрированные маршруты app.function для результата и ошибки. Они проверяют, что вызов пришёл от приложения start: caller.type === 'plugin' && caller.appSlug === 'start'.
import { startCompletion } from '@start/sdk'
const { completionId } = await startCompletion(ctx, {
model: 'qwen/qwen3.8-flash',
system: 'Переведи строки на указанный язык с учётом контекста и глоссария. Сохрани ID, переменные и технические значения точно. Спорные термины и недостающий контекст перечисли отдельно.',
messages: [{
role: 'user',
content: [{ type: 'text', text: sourceText }],
}],
onCompletionCompleted: done,
onCompletionFailed: failed,
})
Метод возвращает completionId. Сам ответ приходит позже в onCompletionCompleted, ошибка — в onCompletionFailed; до этого приложение показывает ожидание. Это схема вызова, а не полный код приложения.
После ответа приложение сравнивает набор переменных исходника и перевода. Несовпадение блокирует утверждение строки или отправляет её на исправление. Для важных элементов также нужен просмотр в интерфейсе: правильный текст может не помещаться в кнопку.
Как обновлять переводы без потери правок
Связывайте перевод с версией исходной строки. Если английский текст изменился, старый русский вариант нужно пометить как требующий пересмотра, даже если его ID остался прежним. Не перезаписывайте утверждённые человеческие правки новой генерацией без явного решения.
Когда меняется термин в глоссарии, найдите затронутые строки и подготовьте предложения изменений. Это удобнее, чем массово заменять слово во всех контекстах. Чатиум может хранить такие задачи и показывать редактору разницу до и после.
Частые вопросы
Достаточно ли попросить «переведи естественно»?
Для разового текста иногда да. Для интерфейса нужны контекст, термины и правила сохранения переменных, иначе естественные варианты начнут противоречить друг другу.
Можно ли проверять перевод другой моделью?
Можно использовать её как дополнительного редактора, но согласие двух моделей не заменяет глоссарий и проверку в продукте.
Как начать с небольшой партии?
Возьмите один экран с кнопками, ошибками и числовыми значениями. Проверьте результат целиком, затем расширяйте словарь. Для машинного формата пригодится структурированный ответ.