영어로 전환하지 않는 회의실
국경을 넘나드는 회의를 잡습니다. 세 개의 시간대에서 사람들이 참여합니다. 90초도 지나지 않아 누군가 **"다들 이해할 수 있도록 영어로 진행하죠"**라고 말하고, 회의실에서 가장 시니어인 사람들이 조용해지는 걸 지켜보게 됩니다.
그 전환은 일종의 세금입니다. 시간에, 자신감에, 실제로 결정되는 내용에 부과되는 세금이죠.
우리는 지난 6주 동안 회의실 안의 누구도 전환할 필요가 없어야 한다는 원칙을 중심으로 InterMIND를 다시 만들었습니다. 대화를 위해서도, 채팅을 위해서도, 지금 실시간으로 입력하는 노트를 위해서도, 내일 검토할 편집 기록을 위해서도 마찬가지입니다.
무엇이 바뀌었는지 소개합니다.
1. 음성뿐 아니라, 모든 것을 뷰어별로
실시간 음성 번역은 언제나 헤드라인이었습니다 — 21개 언어, 1초 미만의 지연 시간, 모든 참가자가 통화 시작 시 자신의 언어를 선택합니다. v1.2는 음성 주변의 모든 것도 다국어로 만들고, 뷰어별로 실시간으로 동기화 상태를 유지합니다. (다른 화면에서 보여주는 더 큰 숫자가 아니라 왜 "21"인지는 상세 설명을 참고하세요.)
채팅: 모든 수정 내용이 당신의 언어로 보입니다
채팅의 모든 메시지는 입력되는 즉시 번역됩니다. v1.2에서 바뀐 점은, 누군가 메시지를 수정할 때 이전 번역을 버리고 새로 번역해서 보여주지 않는다는 것입니다. 우리는 **이전 번역 텍스트와 새 번역 텍스트 사이의 차이(diff)**를 당신의 언어로 계산해서 인라인으로 보여줍니다.
그래서 동료가 "화요일까지 검토해야 합니다"를 "목요일까지 검토해야 합니다"로 수정하면, 스페인어 리뷰어는 다시 번역된 문단을 보고 무엇이 바뀌었는지 추측할 필요가 없습니다. 그들은 강조 표시된 martes → jueves를 보게 됩니다. Git diff와 동일한 정밀도지만, 21개 언어 중 그들이 읽는 언어로 표시됩니다.
수정이 서식만 변경하는 경우 — 굵게, 기울임, 목록 표시 등 — 에도 다시 번역합니다. 서식만 바뀐 편집이 오히려 의미가 바뀌는 지점일 때가 많기 때문입니다(쉼표가 절 구분으로 바뀌는 식으로요). 그리고 새 번역이 스트리밍되는 동안에도 이전 번역이 화면에 그대로 남아 있어서, API 응답을 기다리며 빈 화면을 보는 일이 없습니다.
노트: 실시간, 글자 단위, 언어별로
호스트가 회의 중에 공유 노트 패널을 열고 타이핑을 시작합니다. 모든 참가자는 자신의 언어로 노트를 글자 단위로, 1초 미만의 전파 속도로 확인합니다. 한 줄을 수정하면 뷰어는 언어별 차이(diff)를 받습니다 — 채팅 수정과 동일한 방식입니다.
또한 노트 번역 방식을 문서 전체가 아니라 목록 항목을 개별적으로 번역하도록 다시 작성했습니다. 영어로 된 중첩 체크리스트를 마크다운 텍스트 전체로 번역하면 구조가 보존되지 않습니다 — 모델이 계층 구조를 평평하게 만들어버립니다. 각 <li>를 독립적으로 번역하면 들여쓰기, 번호, 인라인 서식이 모든 언어에서 그대로 유지됩니다.
첨부 파일: 채팅 속 문서도 회의실의 언어로
Google Docs, OneDrive 링크, PDF를 채팅에 드롭해보세요. v1.2는 이를 인라인으로 렌더링합니다:
- 연결된 문서 — 제목, 미리보기, 도메인 배지가 표시되며, 원본 URL이 그대로 노출되지 않습니다. 편집 가능한 문서는 올바른 언어 힌트(
hl=)와 함께 새 탭에서 열려서, 브라질 포르투갈어 사용자가 영어 Docs UI로 이동하는 일이 없습니다. - 이미지 업로드 — 업로드 시 썸네일이 생성되고, 메시지 버블 안에서 intrinsic-grid 반응형 레이아웃이 적용되어 좁은 화면에서도 이미지가 깨지지 않습니다.
- 3단계 문서 접근 권한 — 편집, 보기, 접근 불가 — 권한이 허용되면 자동 공유됩니다. Drive 접근 권한이 없는 참가자도 "권한 거부" 페이지가 아니라 깔끔한 읽기 전용 미리보기를 보게 됩니다.
지연 번역(Lazy translation): 더 빠르고, 더 저렴하고, 덜 시끄럽게
이전에는 언어를 전환할 때마다 히스토리의 모든 메시지를 번역했습니다. 오래 운영된 팀 채널에서는 다시 스크롤해서 볼 일도 없는 메시지들을 위해 몇 시간 분량의 API 호출을 반복하는 셈이었습니다.
v1.2는 IntersectionObserver를 사용합니다: 메시지가 뷰포트에 진입할 때만 필요에 따라 번역이 이루어집니다. 이제 회의 중 언어 전환은 즉시 이루어집니다. 또한 401 응답을 받으면 즉시 채팅 목록 폴링을 멈추도록 했는데, 이는 당신은 눈치채지 못했겠지만 우리는 알고 있던 통제 불가능한 오류 스트림을 잠재워주었습니다.
음성 전사: 렌더링 전에 살균 처리
전사 텍스트는 렌더링 전에 살균(sanitize) 처리됩니다 — 창의적인 발음을 통한 HTML 삽입은 불가능합니다. 당연해 보이는 이야기지만, 두 달 전만 해도 그렇지 않았습니다.