Інтернаціоналізація (internationalization, I18N) — це процес підготовки програмного забезпечення до можливості підтримувати кілька мов і культур без необхідності вносити зміни до програмного коду.
Локалізація (localization, L10N) — це адаптація інтерфейсу, повідомлень, форматів дати, часу, валюти та іншої інформації під конкретну мову та культуру користувачів.
У чому різниця?
- Інтернаціоналізація — це етап розробки. Вона передбачає створення структури, яка дозволяє додавати мови пізніше без змін у логіці програми.
- Локалізація — це етап адаптації. Перекладаються текстові ресурси, змінюється формат дати, адрес, чисел, налаштовуються зображення та навіть логіка поведінки в деяких випадках.
Приклад
Уявіть собі веб-додаток, який підтримує лише англійську мову. Щоб його використовували користувачі з України, потрібно:
- При інтернаціоналізації:
- Винести всі тексти в окремі файли (наприклад, `en.json`, `uk.json`)
- Замінити жорстко прописані тексти в коді на змінні
- Врахувати, що у різних мов різна довжина слів (наприклад, кнопка “Save” → “Зберегти”)
- Уникати конкатенації тексту, яка може порушити граматику в інших мовах
- При локалізації:
- Перекласти всі тексти українською
- Відформатувати дату за регіональними правилами (наприклад, `12/31/2024` → `31.12.2024`)
- Змінити валюту з доларів на гривні
- Відобразити текст з урахуванням напрямку письма (LTR vs RTL)
Чому це важливо?
- Бізнес: вихід на нові ринки
- Користувачі: комфортне використання у знайомому культурному контексті
- Тестування: можливість перевірити функціональність на кількох мовах та культурах
Що враховує тестувальник?
- Чи всі тексти перекладено правильно?
- Чи не виходять тексти за межі елементів?
- Чи зберігається верстка на всіх мовах?
- Чи працює перемикання мови без помилок?
- Чи коректно працюють формати дат, чисел, адрес?
- Чи зручно для користувача з певного регіону?
Підсумок
Інтернаціоналізація створює технічну базу, локалізація — приносить користь кінцевому користувачу. Якісне тестування обох процесів допомагає запустити продукт, який легко масштабувати глобально.