Переклад тексту під курсором миші
Субтитри охоплюють мовлення. Але більшість англійської, яку ми зустрічаємо, письмова: сторінка, чат, рев’ю коду. Сьогодні застосунок навчився перекладати речення під курсором миші в будь-якій програмі.
Як це працює
Ви затискаєте поєднання клавіш і наводите курсор на англійський текст. Типово це Option і Command. Біля курсора з’являється невелика плашка з трьох блоків: оригінал дрібним шрифтом, під ним російський переклад, а третім — словникова стаття до слова під курсором. Слово шукаємо англійською, а не за його перекладом: тлумачення англійського слова корисніше. Системний словник сам зводить слово до основної форми, тож за «caching» знаходиться «cache».
Якщо ви вже виділили фразу й курсор стоїть усередині виділення, перекладається все виділене, а не одне речення. Саме всередині: інакше старе виділення в іншому місці тексту перебивало б усе, на що ви наводите потім, і було б незрозуміло, чому перекладено не те. Дуже довге виділення обрізається до 600 символів по межі слова: виділити весь документ через Command-A можна, але перекладати його цілком повільно й марно.
Типово режим вимкнений. Йому потрібен дозвіл «Універсальний доступ», а просити дозвіл у людини, яка про цю функцію не питала, ми не хочемо.
Як читати текст, не дивлячись на екран
Очевидний спосіб — розпізнавати картинку екрана. Тоді в рядку меню назавжди засвітився б фіолетовий індикатор запису екрана. Спершу ми перевірили, що віддає системний інтерфейс доступності. У браузері, редакторі коду й месенджері, які ми пробували, він дає речення точно в позиції курсора. Запис екрана не знадобився.
Найважче було з браузерами. Якщо виділення захоплює заголовок і абзац, інтерфейс доступності повертає один плаский рядок, і заголовок злипається з наступним текстом. Перше виправлення читало шрифти виділення й збирало структуру за розмірами. Воно працювало, але було обхідним шляхом. Кращим джерелом виявився буфер обміну: браузери кладуть туди текст з повною розміткою. Тому застосунок надсилає Command-C активній програмі, читає копію з розміткою й повертає попередній вміст буфера. Копію він звіряє з тим, що повернув інтерфейс доступності, щоб не показати текст з іншого вікна. Заголовки, списки та жирний шрифт зберігаються.
Перекладач не зберігає позначки на зразок «##» і дефісів списку. Ми знімаємо їх, перекладаємо текст і ставимо на місце. Якщо перекладач повернув іншу кількість рядків, показуємо його відповідь як є.
Закріплене вікно
Шпилька в кутку плашки перетворює її на звичайне вікно. Воно не зникає, його можна розтягнути, виділяти текст мишею та шукати виділене слово в словнику. Кожен блок має власні кнопки «дрібніше» і «більше», розмір запам’ятовується. Кнопка з динаміком читає блок уголос. Голос ми обираємо за абеткою, а не системним визначником мови: він сприйняв слово «масштаб» за українське, а українського голосу на Маку немає, і озвучення мовчки не спрацювало б. Текст, де є бодай одна кирилична літера, читається російським голосом.