Як і чому я створив Type Switch — застосунок для зручного перемикання мов на macOS
Привіт! Мене звати Максим, моя професійна кар’єра тривалий час була пов’язана з UX/UI дизайном, але останні пів року я вирішив повністю зосередитись на створенні власних застосунків на Swift. Однією з таких розробок став Type Switch — зручний інструмент для перемикання мов у macOS.
Чому Type Switch
Ідея створити Type Switch виникла з моєї власної потреби. Як багатомовний користувач я постійно перемикаюся між кількома мовами, зокрема, між англійською та українською. Це завжди виглядало як гра на піаніно, де нотами були налаштування мови, а результат звучав як какофонія з латиниці, кирилиці та випадкових символів.
Більше того, навіть бажання послухати музику на стримінговому сервісі змушувало мене весь час переключати мову залежно від назви гурту. Наприклад, коли шукав Sigur Ros, забував змінити мову на англійську і українською виходило на кшталт «Ішпгк Кщі». І це ще непогано виглядає. А музику я люблю слухати — і роблю це досить часто, особливо під час роботи, тож такі ситуації траплялися не раз протягом години.
Головна проблема, яку я сформулював для себе, полягала в наступному:
- По-перше, ти не бачиш поточну мову, якою пишеш. Уявіть ситуацію: ти відповідаєш на серйозне робоче повідомлення англійською, але замість «Yes, I agree» виходить «Нус, Ф щгуру». Можна, звісно, пояснити, що це новий скандинавський діалект, але хто в це повірить?
- По-друге, стандартними можливостями macOS перемикати мову незручно, особливо коли їх не дві, а три чи чотири й більше. Це як спроба швидко знайти потрібну передачу в машині, коли всі ручки на коробці перемикання схожі, а ти за кермом сидиш уперше. Щось натискаєш, щось кудись їде, але точно не туди, куди планував.
- По-третє, цей процес забирає багато зайвого часу та знижує сфокусованість на роботі чи інших завданнях. Іноді здавалось, що хаотичне натискання клавіш для зміни мов стало моєю другою роботою.
Таким чином я вирішив створити інструмент, який дозволить раз і назавжди вирішити цю «мовну плутанину».
Бо, як казав один мій знайомий:
Коли ти багатомовний, кожна мова — як додаткова валіза у життєвій подорожі. І все б нічого, якби тобі не треба було перемикати їх на MacBook
Як все почалося
Почалося, як завжди, з дослідження наявних рішень для зручної зміни мови в macOS. Я ретельно вивчав, як працюють існуючі додатки, аналізував їхні недоліки та можливості для вдосконалення.
Спочатку я хотів просто вдосконалити алгоритми автоматичного перемикання мови після початку вводу, як це робить, наприклад, застосунок Lang Switcher та подібні до нього. Вони здавалися зручними, але на практиці це викликало більше нервів, ніж радості та користі. Наприклад, застосунок міг несподівано змінити мову, перетворивши професійний лист у випадковий набір символів, що більше нагадував шифр шпигуна, ніж текст.
Особливо це дошкуляло, коли намагався написати щось термінове, наприклад, звіт для роботи. Кожна автоматична зміна мови була схожа на гру «вгадай, яку клавішу я натиснув», і щоразу я програвав. Тому на певному етапі дослідження зрозумів, що автоматичне перемикання все одно не вирішить проблему швидкого вводу тексту і відповідно швидкої зміни мови під час його набору.
Проаналізувавши ринок і зробивши відповідні висновки, я розпочав проєктування додатка у Figma. Завдяки моєму багаторічному досвіду роботи UX/UI дизайнером у різних компаніях цей етап пройшов швидко та без ускладнень. І, звісно ж, першим кроком стало створення логотипу :) Професійна деформація давалась в знаки.
Як казав мій колега:
Логотип — це як шапка на лисій голові: від холоду не врятує, але виглядаєш загадково
Розробка (тут вже без жартів)
Отже, врахувавши все зазначене, я вирішив, що це має бути саме ручне перемикання, тому що тільки воно забезпечує коректну, швидку та однозначну зміну мови.
Щодо того, як це мало б виглядати та функціонувати, я прийшов до наступного:
- це має бути панель або кнопка (далі — кнопка), яка має показувати поточну мову;
- її розмір, колір та прозорість можна змінювати для комфорту використання;
- мову можна буде перемикати або натисканням на саме цю кнопку, або гарячою клавішею;
- і найголовніше, вона має бути завжди поверх всіх вікон, що відкриті у користувача на екрані монітору.
Згодом, вже під час фінальної стадії написання коду, я подумав: було б зручно чути мову, на яку ти переходиш. Це дало б можливість взагалі не дивитись на кнопку і поточну мову, яку вона відображає, а орієнтуватись лише на голосові підказки.
Перші тестові версії програми були дуже мінімалістичними, але водночас базовими — щоб почати перевірку концепції. Основним елементом була кнопка, яка завжди залишається під рукою. Цей механізм працював максимально просто: натискання кнопки або використання гарячої клавіші миттєво змінювало мову. Одним із перших важливих удосконалень стало додавання гарячої клавіші, яка дозволила перемикати мову без потреби користуватися мишею. Це помітно покращило зручність і швидкість роботи.
Ще однією важливою функцією стало додавання звукових і голосових сповіщень, які повідомляють про зміну мови. Це виявилося корисним не лише для зручності, а й для людей із вадами зору, що зробило застосунок більш доступним і інклюзивним.
Відгуки від тестувальників, яким я надав ранній доступ, також відіграли значну роль у розробці Type Switch, принаймні у вигляді версії 1.0. Після першого релізу в закритому тестуванні я отримав кілька побажань і коментарів, що допомогло удосконалити програму та зробити її ще кориснішою для користувачів. Зокрема, не всіх тестувальників влаштувало, що озвучування мови під час перемикання не можна повністю вимкнути або відрегулювати його гучність. Я додав таку можливість. Також були враховані інші невеликі зауваження й внесені відповідні правки для покращення роботи програми.
Погляд зі сторони та реальний досвід користувачів — це завжди дуже корисна вправа, яка наводить фокус та виявляє проблеми твого продукту з різних сторін. Особливо коли ти працюєш над ним самостійно.
Як казав мій колишній CEO:
Критика — це як дощ: спочатку дратує, але потім розумієш, що без нього ніяк
Виклики під час розробки
Як і в будь-якому проєкті, принаймні з мого невеликого досвіду у цій сфері, розробка Type Switch не обійшлася без труднощів: Кілька безсонних ночей та майже повне переписування коду застосунку з початку відверто натякали про це. Щоправда, на такі натяки я тільки зітхав і варив ще одну каву.
Оскільки до цього я розробляв лише кілька проєктів для iOS та iWatch, розробка повноцінного застосунку під macOS була для мене викликом. Починаючи з того, що спочатку сама кнопка візуально виглядала смішно. Вона змінювала свій колір після кожного натискання, немов дискотечна куля на корпоративі
І закінчуючи найскладнішим для мене — зробити так, щоб кнопка за замовчуванням завжди була поверх всіх вікон. Тільки за цієї умови вона мала сенс. Також я не був певен, чи зможу реалізувати цю ідею на рівні коду, чи не порушує це догми ієрархії безпосередньо macOS, і чи дозволить мені взагалі App Store опублікувати такий застосунок.
Проте, як я вже писав, кілька безсонних ночей, а також запити до ком’юніті stackoverflow та Claude 3.5 Sonnet вирішили це питання.
Іншим важливим моментом була адаптація інтерфейсу. Моя мета полягала в тому, щоб Type Switch виглядав так, ніби він є частиною стандартного інтерфейсу macOS. Я прагнув створити дизайн, який би відповідав сучасним стандартам Apple і залишався інтуїтивно зрозумілим для користувачів.
Бо інтерфейс — це як добре налаштований годинник: ти ним користуєшся, не замислюючись, і тільки збій змушує згадати про існування механізму.
Публічний реліз і майбутнє
Перший публічний реліз Type Switch відбувся через кілька місяців після старту розробки. Загалом, він отримав позитивні відгуки та оцінки на Product Hunt й інших подібних ресурсах. Та знайшов свою аудиторію серед багатомовних користувачів.
Проєкт сподобався не лише тим, хто працює з текстами кількома мовами, а й тим, хто займається програмуванням, адже швидкість та зручність перемикання мови є важливою частиною їхньої роботи. Тож і розробники нарешті знайшли шорткат до власного спокою.
Це надихнуло на подальший розвиток застосунку, включно з адаптацією для різних категорій користувачів. Я планую додати нові функції кастомізації, щоб кожен міг налаштувати програму під себе. Моя мета — створити інструмент, який стане незамінним помічником для людей, що працюють з багатьма мовами, забезпечуючи зручність і ефективність у повсякденному використанні.
Так що не дивуйтеся, якщо одного дня Type Switch виявиться настільки універсальним, що зможе перемикати вас з понеділка на п’ятницю без зайвих зусиль.
Він став не просто інструментом для роботи, а й прикладом того, як одна проста ідея може стати корисним рішенням для багатьох людей. Завдяки ідеї, яка виходить з власних потреб, можна створити продукт, що допомагає людям у їх повсякденному житті. Я вдячний всім, хто підтримав мене на цьому шляху, і, сподіваюся, моя історія надихне інших розробників не боятися створювати щось нове. Навіть якщо це означає кілька безсонних ночей.
Завершуючи, хочу сказати, що навіть найменший проєкт може змінити світ — або, принаймні, змусити його трохи зручніше функціонувати. І, як кажуть у подорожах:
Маршрут — це не про нові місця, а про нові можливості для незабутніх вражень
До чого це б не було сказано.
Дякую за увагу і підтримку. Сподіваюсь, що моя історія надихне вас на нові звершення і створення власних проєктів, які зможуть зробити світ трошки простішим і набагато цікавішим.
Посилання
Написати особисто: [email protected]
122 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів