Коли просять "зробити застосунок кількома мовами", зазвичай уявляють переклад: узяти написи й замінити на іншу мову. Але людина - це не лише мова, якою вона читає. У неї є цілий набір звичок, за якими вона впізнає "своє": як пишеться дата, де стоїть кома в числі, у яких одиницях вимірюється відстань, у якій валюті ціна, з якого дня починається тиждень. Перекладеш лише написи - матимеш застосунок, формально його мовою, але все одно чужий.
Справжня локалізація - це збігтися з людиною за всіма цими звичками одразу. Нижче - повний перелік того, що насправді входить у "зробити багатомовним і багаторегіональним", а не тільки переклад кнопок.
Текст - це не лише написи
- Переклад інтерфейсу. Усі написи, підказки, листи, помилки - очевидна частина, з якої все починається.
- Переклад самих даних. Статуси, категорії, назви країн і регіонів теж мають читатися мовою користувача, а не тільки написи навколо них. Половина екрана твоєю мовою, а дані всередині чужою - і відчуття "перекладено нашвидкуруч" нікуди не дівається.
- Множина. У мов різні правила: в англійській дві форми (1 item / 5 items), у слов'янських - три й більше (1 деталь / 2 деталі / 5 деталей). Наївне "деталь(і)" видає машинність одразу.
- Довжина тексту. Німецька фраза буває довшою за англійську мало не на третину, а інша, навпаки, коротша. Верстка має тягнутися під текст, а не ламатися й не обрізати слова.
- Порядок сортування. Абетка - річ локальна: десь "ё" окрема літера, десь діакритика й буквосполучення змінюють порядок. Список, відсортований "як у базі", іншою мовою виглядає абияк.
- Напрямок письма. Арабська та іврит пишуться справа наліво - це не "ще один переклад", а дзеркальний розворот усього макета.
Числа, гроші та одиниці
- Формат чисел.
1 234,56чи1,234.56- який роздільник тисяч і дробової частини. Одне й те саме число, записане незвично, читається із запинкою. - Одиниці вимірювання. Відстань (кілометри чи милі), об'єм (літри чи галони), вага, температура (°C чи °F). Американець мислить у милях і Фаренгейтах, європеєць - у кілометрах і Цельсіях; показувати треба кожному його.
- Валюта - і тут тонкість, на якій легко обпектися. Формат валюти (символ, його місце, кількість знаків) локалізується завжди. А от конвертацію сум чіпати треба обережно:
Показати ціну у валюті користувача - можна. Мовчки перераховувати збережені фінансові записи - не можна. Рахунок, виставлений у євро, лишається в євро; конвертація припустима лише за актуальним курсом і лише для показу, а не підміняє початкову суму. Переплутати "перевести для відображення" й "перерахувати дані" - дорога помилка: гроші мають сходитися копійка в копійку.
Час
- Формати. Дата (
09.07.2026проти07/09/2026), час (24 години проти 12 з AM/PM), перший день тижня (понеділок чи неділя - від нього рахуються календарі та звіти). - Часовий пояс. Момент часу зберігається всередині в єдиному всесвітньому часі, а показується кожному в його поясі й форматі; точний всесвітній час при цьому завжди під рукою. Про це - окрема замітка.
- Відносний час. "2 години тому", "учора", "за 3 дні" - це теж текст, і він перекладається разом із правилами множини.
Як система вгадує регіон
- Визначення на першому візиті. Браузер уже знає, якими мовами людина читає, у якому вона поясі, як у її системі пишуться дати й числа. Розумно прочитати ці підказки й запропонувати готові значення, а не зустрічати нового користувача анкетою з десяти налаштувань.
- Вибір завжди головніший. Щойно людина сама змінила мову чи формат, її рішення запам'ятовується й відтоді важливіше за будь-які сигнали браузера. Підказка - для тих, хто ще нічого не вибрав.
- Чий це вибір. Іноді мова - особисте налаштування користувача, іноді спільне для всієї компанії чи майданчика. Варто заздалегідь вирішити, чия звичка головніша й що береться за умовчанням.
- Запасний варіант. Якщо для якогось тексту перекладу потрібною мовою немає, система показує його запасною мовою, а не порожнечу чи ключ-заглушку.
Інженерна дисципліна під цим
Три речі, без яких усе вище розпливається:
- Одне джерело правди для перекладів. Тексти живуть в одному місці, а те, що вантажить браузер, збирається з них автоматично. Інакше пастка: правиш переклад у вже зібраному файлі, а наступна збірка його затирає - і перекладу ніби не було.
- Зберігати еталон, форматувати на межі. Усередині - одне канонічне значення: час у єдиному поясі, сума у своїй валюті, величина в базових одиницях. Звичний формат наводиться в найостаннішу мить, на екрані. Тоді розрахунки лишаються точними, а кожен бачить своє.
- Регіон - це фундамент, а не латка. Якщо мова й формати закладені як окремі налаштування від самого початку, нова мова чи ринок - це додати шар, а не переписати застосунок. Приробляєш переклад потім - платиш переробкою всього, що встиг зав'язати на одну мову.
Заощадити на локалізації не виходить - можна лише заплатити пізніше, переписуючи все, що нашвидкуруч зав'язали на одну мову.

