Застосунок і сайт англійською, українською та російською

До сьогодні інтерфейс застосунку був лише російським, а сайт уже говорив трьома мовами. Хто прийшов з української сторінки, завантажив застосунок і відкрив його, бачив російську. Тепер і застосунок, і сайт працюють англійською, українською та російською.

У застосунку

Застосунок бере першу з цих трьох мов зі списку мов вашої macOS. Якщо жодної з трьох там немає, вмикається англійська. У налаштуваннях можна обрати мову самому, і вона застосовується одразу, без перезапуску.

Важливо, де зберігається вибір. Він записується туди, куди пише системне налаштування мови для окремої програми («Системні налаштування», «Загальні», «Мова та регіон», «Програми»). Тому два перемикачі не можуть розійтися, а вибір переживає перезапуск без зайвого коду. «Як у системі» — це просто відсутність збереженого вибору.

Миттєве перемикання виявилося важчою половиною. Звичайний спосіб завантаження рядків у маковому застосунку читає мову під час запуску й більше не змінює. Ми завантажуємо рядки через власний об’єкт, який уміє міняти мову на ходу. Якщо рядка немає, береться англійський, а якщо й його немає — сам ключ, щоб прогалина впадала в око, а не ховалася порожнім місцем.

Першою пасткою стало меню. Вікна перемальовуються самі, а меню зберігає готовий текст. Застосунок живе в рядку меню, і якби ми про це забули, мова змінилася б усюди, крім найчастішого місця. Друга пастка знайшлася згодом: у кількох місцях зберігалася готова фраза, а не те, що треба перекладати. Результат перевірки дозволу, статус на панелі диктування, напис «завантаження» в закріпленому вікні перекладу. Кожному довелося запам’ятовувати причину повідомлення, щоб зміна мови до нього дійшла. У старих записах історії були зашиті російські слова «надиктовка» і «секретарь», тому вони лишалися російськими після зміни мови. Тепер їх зведено до нейтральних щодо мови міток.

Дві речі ми залишили навмисно. Слова, якими можна вголос назвати розділові знаки, — це дані розпізнавання, а не інтерфейс, тому разом з інтерфейсом ми їх не перекладали. А мова інтерфейсу й мова мовлення — різні речі: на англійському Маку можна диктувати українською. Одне на інше не впливає.

Тексти системних запитів на дозволи лежать в окремих файлах, бо ці вікна малює сама macOS. Після ручної зміни мови нова мова в них з’явиться з наступного запуску.

На сайті

Кожна мова тепер має власну адресу: корінь для англійської, /ru/ для російської, /uk/ для української. Текст лежить у самій сторінці, а не підставляється скриптом після завантаження, тому пошукові системи читають кожну мову окремо.

Спочатку мова на кореневій адресі обиралася за браузером. Але відвідувач з України з російським чи англійським браузером лишився б на англійській сторінці, а ми хотіли, щоб для відвідувачів з України першою відкривалася українська версія. Тож тепер сайт дивиться ще й на країну відвідувача. Коли ви раз натиснули перемикач мови, ваш вибір перемагає при всіх наступних заходах.

Ще з блогу