Комната для встреч, которая не переключается на английский
Вы планируете международную встречу. Участники подключаются из трёх часовых поясов. Через девяносто секунд кто-то говорит: «давайте вести всё на английском, чтобы всем было понятно» — и вы видите, как самые старшие по должности участники в комнате замолкают.
Это переключение — это налог. На время, на уверенность, на то, что в итоге решается.
Последние шесть недель мы перестраивали InterMIND вокруг принципа: никому в комнате не должно приходиться переключаться. Ни в разговоре. Ни в чате. Ни в заметках, которые вы печатаете в реальном времени. Ни в истории изменений, которую вы будете просматривать завтра.
Вот что изменилось.
1. Всё индивидуально для каждого зрителя, а не только голос
Живой перевод голоса всегда был главной темой — 21 язык, задержка меньше секунды, каждый участник выбирает свой язык в начале звонка. v1.2 делает многоязычным всё, что окружает голос, и синхронизирует это для каждого зрителя в реальном времени. (О том, почему «21», а не большие числа, которые показывают другие поверхности, читайте в разборе.)
Чат: каждое изменение показывает, что изменилось, на вашем языке
Каждое сообщение в чате переводится по мере набора. Изменение в v1.2: когда кто-то редактирует сообщение, мы не отбрасываем предыдущий перевод и не выдаём новый с нуля. Мы вычисляем diff между предыдущим переведённым текстом и новым переведённым текстом на вашем языке — и показываем его прямо в тексте.
Так что когда коллега меняет «нужно проверить до вторника» на «нужно проверить до четверга», ваш испаноязычный рецензент не видит переведённый заново абзац и не гадает, что изменилось. Он видит martes → jueves, выделенное подсветкой. Та же точность, что у Git diff, но на любом из 21 языка, который он читает.
Если изменение касается только форматирования — полужирный, курсив, маркеры списка — мы всё равно переводим заново, потому что именно в изменениях форматирования часто меняется смысл (запятая превращается в границу придаточного предложения). При этом предыдущий перевод остаётся на экране, пока приходит новый, поэтому вы никогда не смотрите на пустое место в ожидании ответа от API.
Заметки: в реальном времени, посимвольно, для каждого языка
Ведущий открывает панель общих заметок во время встречи и начинает печатать. Каждый участник видит заметку на своём языке, посимвольно, с задержкой распространения меньше секунды. Изменение строки — и зрители получают diff на своём языке, по той же модели, что и правки в чате.
Мы также переписали перевод заметок, чтобы переводить элементы списка по отдельности, а не весь документ целиком. Вложенный чек-лист на английском теряет структуру, если переводить весь markdown как единый блок — модель «схлопывает» иерархию. Перевод каждого <li> отдельно сохраняет отступы, нумерацию и встроенное форматирование во всех языках.
Вложения: документы в чате говорят на языке комнаты
Перетащите Google Doc, ссылку на OneDrive или PDF в чат. v1.2 отображает их прямо в сообщении:
- Связанные документы — заголовок, предпросмотр, значок домена, без «сырого» URL на виду. Редактируемые документы открываются в новой вкладке с нужной подсказкой локали (
hl=), чтобы читатель на бразильском португальском не попал в интерфейс Docs на английском. - Загрузка изображений — миниатюра при загрузке, адаптивная сетка (intrinsic-grid) внутри пузыря сообщения, чтобы изображения не «разрывали» вёрстку на узких экранах.
- Трёхуровневый доступ к документам — редактирование, просмотр или без доступа — с автоматической выдачей доступа, когда права позволяют. Участники без доступа к Drive всё равно видят чистый предпросмотр в режиме только для чтения, а не страницу «доступ запрещён».
Отложенный перевод: быстрее, дешевле, меньше шума
Раньше при переключении языка мы переводили каждое сообщение в истории. Для давно живущих командных каналов это означало часы повторных вызовов API для сообщений, к которым вы никогда бы не вернулись.
v1.2 использует IntersectionObserver: перевод выполняется по требованию, когда сообщение попадает в область просмотра. Переключение языка посреди встречи теперь происходит мгновенно. Мы также немедленно останавливаем опрос списка чата при ошибке 401 — это убрало неконтролируемый поток ошибок, который вы бы никогда не заметили, а мы заметили.
Транскрипция голоса: очищается перед отображением
Текст транскрипции очищается перед отображением — никакой HTML-инъекции через изобретательное произношение. Звучит очевидно. Два месяца назад это было не так.