Phòng họp không chuyển sang tiếng Anh
Bạn lên lịch một cuộc họp xuyên biên giới. Mọi người tham gia từ ba múi giờ khác nhau. Chưa đầy chín mươi giây sau, ai đó nói "hãy cứ nói tiếng Anh để tất cả cùng hiểu" — và bạn thấy những người có vị trí cao nhất trong phòng im lặng.
Sự chuyển đổi đó là một loại thuế. Đánh vào thời gian, vào sự tự tin, vào những gì thực sự được quyết định.
Chúng tôi đã dành sáu tuần qua để xây dựng lại InterMIND xung quanh nguyên tắc: không ai trong phòng phải chuyển đổi ngôn ngữ. Không phải trong cuộc trò chuyện. Không phải trong chat. Không phải trong ghi chú bạn đang gõ trực tiếp. Không phải trong lịch sử chỉnh sửa bạn sẽ xem lại vào ngày mai.
Đây là những gì đã thay đổi.
1. Mọi thứ theo từng người xem, không chỉ giọng nói
Dịch giọng nói trực tiếp luôn là tính năng nổi bật — 21 ngôn ngữ, độ trễ dưới một giây, mỗi người tham gia chọn ngôn ngữ của riêng mình khi bắt đầu cuộc gọi. v1.2 làm cho mọi thứ xung quanh giọng nói cũng trở nên đa ngôn ngữ, và giữ đồng bộ, theo từng người xem, theo thời gian thực. (Để biết vì sao là "21" mà không phải những con số lớn hơn ở các nơi khác, xem phần phân tích chi tiết.)
Chat: mỗi lần chỉnh sửa cho bạn thấy điều gì đã thay đổi, bằng ngôn ngữ của bạn
Mọi tin nhắn trong chat được dịch ngay khi được gõ. Thay đổi trong v1.2: khi ai đó chỉnh sửa một tin nhắn, chúng tôi không bỏ đi bản dịch trước và gửi cho bạn một bản dịch mới hoàn toàn. Chúng tôi tính toán phần khác biệt giữa văn bản đã dịch trước đó và văn bản đã dịch mới, bằng ngôn ngữ của bạn — và hiển thị ngay trong dòng.
Vì vậy khi đồng nghiệp của bạn sửa "chúng ta nên xem lại vào thứ Ba" thành "chúng ta nên xem lại vào thứ Năm", người đánh giá bằng tiếng Tây Ban Nha của bạn không phải nhìn một đoạn văn được dịch lại từ đầu và đoán xem điều gì đã thay đổi. Họ thấy martes → jueves, được đánh dấu nổi bật. Độ chính xác tương đương một diff của Git, nhưng được hiển thị bằng bất kỳ ngôn ngữ nào trong 21 ngôn ngữ mà họ đọc.
Nếu chỉnh sửa chỉ thay đổi định dạng — chữ đậm, chữ nghiêng, dấu đầu dòng — chúng tôi vẫn dịch lại, vì những chỉnh sửa chỉ về định dạng thường lại là nơi ý nghĩa thay đổi (một dấu phẩy trở thành một điểm ngắt mệnh đề). Và bản dịch trước đó vẫn hiển thị trên màn hình trong khi bản mới đang được truyền tới, nên bạn không bao giờ phải nhìn vào khoảng trống chờ API phản hồi.
Ghi chú: trực tiếp, theo từng ký tự, theo từng ngôn ngữ
Người tổ chức mở khung ghi chú chia sẻ trong cuộc họp và bắt đầu gõ. Mọi người tham gia thấy ghi chú bằng ngôn ngữ của họ, theo từng ký tự, với thời gian lan truyền dưới một giây. Chỉnh sửa một dòng và người xem sẽ nhận được diff theo từng ngôn ngữ — cùng mô hình như chỉnh sửa trong chat.
Chúng tôi cũng viết lại việc dịch ghi chú để dịch từng mục danh sách riêng lẻ thay vì toàn bộ tài liệu. Một danh sách kiểm lồng nhau bằng tiếng Anh sẽ không giữ được cấu trúc nếu bạn dịch toàn bộ khối markdown — mô hình sẽ làm phẳng cấu trúc phân cấp. Dịch từng <li> một cách độc lập giúp giữ nguyên thụt lề, đánh số, và định dạng trong dòng ở mọi ngôn ngữ.
Tệp đính kèm: tài liệu trong chat cũng "nói" ngôn ngữ của phòng họp
Thả một Google Doc, liên kết OneDrive, hoặc PDF vào chat. v1.2 hiển thị chúng ngay trong dòng:
- Tài liệu liên kết — tiêu đề, bản xem trước, nhãn miền, không để lộ URL thô. Tài liệu có thể chỉnh sửa mở trong tab mới với gợi ý locale phù hợp (
hl=), để người đọc tiếng Bồ Đào Nha (Brazil) không rơi vào giao diện Docs bằng tiếng Anh. - Tải ảnh lên — hình thu nhỏ ngay khi tải lên, bố cục lưới linh hoạt (intrinsic-grid) trong bong bóng tin nhắn để ảnh không bị vỡ khi màn hình hẹp.
- Ba cấp quyền truy cập tài liệu — chỉnh sửa, xem, hoặc không có quyền — với chia sẻ tự động khi quyền cho phép. Người tham gia không có quyền truy cập Drive vẫn thấy bản xem trước chỉ đọc gọn gàng, không phải trang "từ chối quyền truy cập".
Dịch trễ (lazy translation): nhanh hơn, rẻ hơn, ít ồn hơn
Trước đây chúng tôi dịch mọi tin nhắn trong lịch sử của bạn mỗi khi bạn đổi ngôn ngữ. Với các kênh nhóm hoạt động lâu dài, điều đó có nghĩa là phải chạy lại hàng giờ lệnh gọi API cho những tin nhắn mà bạn sẽ chẳng bao giờ cuộn lại để xem.
v1.2 sử dụng IntersectionObserver: việc dịch chỉ diễn ra theo yêu cầu, khi tin nhắn xuất hiện trong khung nhìn. Đổi ngôn ngữ giữa cuộc họp giờ diễn ra ngay lập tức. Chúng tôi cũng ngừng polling danh sách chat ngay khi gặp lỗi 401, giúp dập tắt một luồng lỗi chạy tràn mà bạn sẽ không bao giờ nhận ra nhưng chúng tôi đã thấy.
Chuyển giọng nói thành văn bản: được làm sạch trước khi hiển thị
Văn bản chuyển từ giọng nói được làm sạch trước khi hiển thị — không có chèn HTML thông qua một cách phát âm "sáng tạo". Nghe có vẻ hiển nhiên. Nhưng hai tháng trước điều đó lại không đúng.