В прошлую субботу был на митапе про Python от сообщества PyNSK. После докладов обсуждали, как закодить строки в интерфейсе, чтобы хорошо переводить их на другие языки. В каждом языке есть свои инструменты, расскажу про общие принципы.
Общий принцип номер один: предложения переводятся целиком, поэтому и в коде они должны быть целиком.
Например, в интерфейсе есть такая строка:
Nick's account is suspendedЗдесь есть имя пользователя, его нужно подставить в шаблон. Наивный программист напишет так:
user + "'s account was suspended"Переводчик получит только строку в кавычках и перведёт, как сможет:
Nick учётная запись заблокированаЭто звучит ужасно, поэтому переводчик может поменять смысл в угоду грамматике:
Nick, ваша учётная запись заблокированаЭто ещё хуже, потому что текст адресован не владельцу учётной записи.
Как правильно
В коде всё предложение должно быть одной строкой-шаблоном:
"{name}'s account is suspended".format(name=user)Теперь переводчик сможет поставить переменную в нужное место:
—
"Учётная запись {name} заблокирована" —
"Cuirtear cuntas {name} ar fionraí" —
"គណនីរបស់ {name} ត្រូវបានផ្អាក" Одно предложение = одна строка-шаблон
#l10n_docops
---
Если вы давно это знали или просто хорошо разбираетесь в локализации — заходите в чат @docsascode, поделитесь опытом и болью.
На фото — доска после обсуждения на митапе. На ней есть кусочки двух ещё не опубликованных постов. 😉