Перекладення інтерфейсу програм історично робилося за допомогою функцій, якій ти даєш на вхід ключ (скажімо, 3232 чи index-page.welcome-banner
), а вони під час роботи програми йдуть у словничок (напевно, в якийсь файл, що лежить рядом), і беруть справжню строку (типу Привіт, %s
) — у яку потім щє підставляють змінні.
Але наприкінці 80-х придумали таку штуку, як gettext, яка, насправді, працює так само, але у якості ключа для пошуку строки використовують вже готову строку, тільки на мові по замовчуванню — скажімо, на англійській. Тобто в нас немає спеціального словнику з англійскими строками, вони написані прямо в коді. Це має три доволі великі переваги:
- оригінальну строку пише людина, яка знаходиться в контексті, вона тільки що або написала, або прочитала код, і непогано розуміє, про що повинна йти мова. Так би мовити, локальність коду виходить висока. :)
- оригінальна строка містить всі необхідні підстановки і перекладач бачить з контексту, які аргументи йому заїдуть. Найкращій варіант — це коли API по використанню цих строк підтримує позиціонування, або звертання до аргументів по імені, якщо вдруг у якійсь мові має сенс переставити два аргументи місцями. Але це знаходиться за межами відповідальності gettext’у.
- у найгіршому випадку, коли за якихось причин перекладу не знайшлось, користувач побачить оригінальну строку, і це набагато краще, ніж коли він побачить якийсь незрозумілий ключ, як оце на картинці.
Висновок: переїжджайте на геттекст, якщо ви ще ні, досить з підходами 80-х жити. :)