​​Как правильно закодить локализуемые строки



В прошлую субботу был на митапе про 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, поделитесь опытом и болью.



На фото — доска после обсуждения на митапе. На ней есть кусочки двух ещё не опубликованных постов. 😉