Η αίθουσα σύσκεψης που δεν γυρίζει στα αγγλικά
Προγραμματίζετε μια διασυνοριακή σύσκεψη. Οι συμμετέχοντες συνδέονται από τρεις διαφορετικές ζώνες ώρας. Μέσα σε ενενήντα δευτερόλεπτα κάποιος λέει "ας τα πούμε στα αγγλικά, για να είμαστε όλοι στην ίδια σελίδα" — και βλέπετε τους πιο ανώτερους στην ιεραρχία ανθρώπους της αίθουσας να σωπαίνουν.
Αυτή η αλλαγή έχει κόστος. Κοστίζει σε χρόνο, σε αυτοπεποίθηση, σε όσα τελικά αποφασίζονται.
Τις τελευταίες έξι εβδομάδες ξαναχτίσαμε το InterMIND γύρω από την αρχή ότι κανείς στην αίθουσα δεν πρέπει να αναγκάζεται να αλλάξει γλώσσα. Ούτε για τη συζήτηση. Ούτε για το chat. Ούτε για τις σημειώσεις που γράφετε ζωντανά. Ούτε για το ιστορικό αλλαγών που θα εξετάσετε αύριο.
Να τι άλλαξε.
1. Τα πάντα ανά θεατή, όχι μόνο η φωνή
Η ζωντανή μετάφραση φωνής ήταν πάντα το κεντρικό χαρακτηριστικό — 21 γλώσσες, καθυστέρηση κάτω από ένα δευτερόλεπτο, και κάθε συμμετέχων επιλέγει τη δική του γλώσσα στην αρχή της κλήσης. Η έκδοση v1.2 κάνει πολύγλωσσο και ό,τι υπάρχει γύρω από τη φωνή, το συγχρονίζει, ανά θεατή, σε πραγματικό χρόνο. (Για το γιατί γράφουμε "21" και όχι τους μεγαλύτερους αριθμούς που εμφανίζουν άλλες επιφάνειες, δείτε την ανάλυση.)
Chat: κάθε επεξεργασία σας δείχνει τι άλλαξε, στη γλώσσα σας
Κάθε μήνυμα στο chat μεταφράζεται καθώς πληκτρολογείται. Η αλλαγή στην v1.2: όταν κάποιος επεξεργάζεται ένα μήνυμα, δεν πετάμε την προηγούμενη μετάφρασή του για να σας σερβίρουμε μια νέα. Υπολογίζουμε τη διαφορά ανάμεσα στο προηγούμενο μεταφρασμένο κείμενο και στο νέο μεταφρασμένο κείμενο, στη δική σας γλώσσα — και την εμφανίζουμε εντός κειμένου.
Έτσι, όταν ο συνάδελφός σας αλλάζει το "we should review by Tuesday" σε "we should review by Thursday", ο ισπανόφωνος αναθεωρητής σας δεν βλέπει μια ξαναμεταφρασμένη παράγραφο και δεν μαντεύει τι άλλαξε. Βλέπει martes → jueves, επισημασμένο. Ίδια ακρίβεια με ένα Git diff, αλλά σε όποια από τις 21 γλώσσες διαβάζει ο καθένας.
Αν η επεξεργασία αλλάζει μόνο τη μορφοποίηση — έντονα, πλάγια, δείκτες λίστας — μεταφράζουμε ξανά ούτως ή άλλως, γιατί οι αλλαγές μόνο στη μορφή είναι συχνά το σημείο όπου αλλάζει το νόημα (ένα κόμμα γίνεται αλλαγή πρότασης). Και η προηγούμενη μετάφραση παραμένει στην οθόνη όσο φτάνει η νέα, ώστε να μην κοιτάτε ποτέ κενό χώρο περιμένοντας να επιστρέψει το API.
Σημειώσεις: ζωντανά, χαρακτήρα προς χαρακτήρα, ανά γλώσσα
Ο διοργανωτής ανοίγει το πάνελ κοινόχρηστων σημειώσεων κατά τη διάρκεια της σύσκεψης και αρχίζει να πληκτρολογεί. Κάθε συμμετέχων βλέπει τη σημείωση στη δική του γλώσσα, χαρακτήρα προς χαρακτήρα, με διάδοση κάτω από ένα δευτερόλεπτο. Επεξεργαστείτε μια γραμμή και οι θεατές λαμβάνουν διαφορά ανά γλώσσα — με το ίδιο μοντέλο όπως στις επεξεργασίες του chat.
Ξαναγράψαμε επίσης τη μετάφραση σημειώσεων ώστε να μεταφράζει τα στοιχεία λίστας ένα προς ένα αντί για ολόκληρο το έγγραφο. Μια εμφωλευμένη λίστα ελέγχου στα αγγλικά δεν διατηρεί τη δομή της αν μεταφράσετε ολόκληρο το markdown ως ενιαίο μπλοκ — το μοντέλο ισοπεδώνει την ιεραρχία. Η ανεξάρτητη μετάφραση κάθε <li> διατηρεί άθικτα την εσοχή, την αρίθμηση και τη μορφοποίηση εντός κειμένου σε κάθε γλώσσα.
Συνημμένα: τα έγγραφα μέσα στο chat μιλούν τη γλώσσα της αίθουσας
Ρίξτε ένα Google Doc, έναν σύνδεσμο OneDrive ή ένα PDF στο chat. Η v1.2 τα εμφανίζει εντός μηνύματος:
- Συνδεδεμένα έγγραφα — τίτλος, προεπισκόπηση, σήμα τομέα, χωρίς γυμνό URL να φαίνεται. Τα επεξεργάσιμα έγγραφα ανοίγουν σε νέα καρτέλα με τη σωστή ένδειξη γλώσσας (
hl=), ώστε ένας αναγνώστης από τη Βραζιλία να μην καταλήξει σε αγγλική διεπαφή Docs. - Μεταφορτώσεις εικόνων — μικρογραφία κατά τη μεταφόρτωση και αυτόματη προσαρμοστική διάταξη πλέγματος στη φούσκα του μηνύματος, ώστε οι εικόνες να μην ξεχειλίζουν σε στενά πλάτη.
- Τριβάθμια πρόσβαση σε έγγραφα — επεξεργασία, προβολή ή καθόλου πρόσβαση — με αυτόματη κοινή χρήση όταν το επιτρέπουν τα δικαιώματα. Οι συμμετέχοντες χωρίς πρόσβαση στο Drive βλέπουν πάλι μια καθαρή προεπισκόπηση μόνο για ανάγνωση, όχι μια σελίδα "δεν επιτρέπεται η πρόσβαση".
Lazy μετάφραση: ταχύτερη, φθηνότερη, λιγότερο θορυβώδης
Παλιότερα μεταφράζαμε κάθε μήνυμα του ιστορικού σας όταν αλλάζατε γλώσσα. Για κανάλια ομάδων μακράς διάρκειας, αυτό σήμαινε επανάληψη ωρών κλήσεων API για μηνύματα στα οποία δεν θα γυρνούσατε ποτέ.
Η v1.2 χρησιμοποιεί IntersectionObserver: οι μεταφράσεις γίνονται κατά απαίτηση, όταν ένα μήνυμα εισέρχεται στο viewport. Η αλλαγή γλώσσας στη μέση μιας σύσκεψης είναι πλέον άμεση. Σταματάμε επίσης αμέσως το polling της λίστας chat σε περίπτωση 401, κάτι που σίγασε μια ανεξέλεγκτη ροή σφαλμάτων που εσείς δεν θα προσέχατε ποτέ, αλλά εμείς ναι.
Μεταγραφή φωνής: απολύμανση πριν την απόδοση
Το κείμενο της μεταγραφής απολυμαίνεται (sanitize) πριν από την απόδοσή του — καμία έγχυση HTML μέσω μιας ευφάνταστης προφοράς. Ακούγεται αυτονόητο. Δεν ίσχυε όμως πριν από δύο μήνες.