При создании графического интерфейса для HAProxy мы столкнулись с необходимостью решать проблемы языка. Удобный интерфейс невозможен без текстов, и удовлетворение пользователя во многом связано с тем, насколько ясно и понятно написаны тексты инструкций, подсказок, какие слова используются для описания кнопок и пунктов меню и т.п. Если все эти тексты перегружены малопонятной терминологией, содержат лексические и стилистические ошибки — о каком удобстве для пользователя можно тут говорить? Roxy-WI —продукт очень сложный и специфический, и над текстами интерфейсов в процессе пришлось поломать голову. Этим опытом, а также некоторыми дополнительными размышлениями, мы бы хотели поделиться ниже. Начиная работу над Roxy-WI, мы хотели создать продукт, который обладает следующими характеристиками: Чтобы улучшить тексты, мы сделали следующее: Термин tone of voice на русский язык перевести достаточно сложно: это и набор характерных элементов стиля, и интонация, и всегда объяснимая словами, но вполне ощутимая при чтении текста индивидуальная манера. Мы будем следовать уже сложившей традиции и оставим этот термин без перевода (если вдруг кто-то знает, предложите свой вариант в комментариях — любопытно было бы ознакомиться). Требования к tone of voice мы сформулировали следующим образом: В поисках собственного языка и стиля мы внимательно изучили следующие материалы: официальную документацию HAProxy и Nginx, инструкции и туториалы на сайте Digital Ocean, руководства по стилю Google, Microsoft и Apple. Для начала это неплохо, на практике же все оказалось сложнее: начинать пришлось с анализа и исправления сделанных коллегами ошибок. До того, как мы взялись за редактуру, тексты интерфейсов писались по сути по наитию. Все тексты писал один человек, подкованный в технической стороне дела, но не подкованный в языковой. Как ни странно, ошибки и недочёты были довольно типичные: довольно часто приходится видить подобное в текстах, написанных авторами, для которых английский язык не является родным. Рассмотрим эти ошибки более подробно. Ошибка первая: употребление избыточных конструкций и элементов. Первая серьезная редактура была у нас для страницы настроек: там можно устанавливать основные параметры для Roxy-WI. Выглядела эта страница так (при нажатии на каждую секцию открывается список параметров): Ошибка вторая: нанизывание слов и создание сложных конструкций. Иногда в английском языке этот приём позволяет в буквальном смысле слова творить чудеса (как в художественной, так и в технической литературе), но злоупотреблять им не нужно (особенно неносителям). На описываемой странице с настройками было обнаружено, например, такое выражение: Nginx path error log. Конечно, человеку в теме это будет понятно (путь к логу ошибок Nginx), а вот неискушенному пользователю — вряд ли. Поэтому пришлось заменить его на Path to Nginx error log — так гораздо лаконичнее и понятнее. Название параметра Port scanner check interval за несколько итераций изменилось на Port scannning frequency. Указание Paste certificate content here (опять нанизывание!) заменили на Paste the contents of the certificate file. Ошибка третья: кальки с родного (в нашем случае с русского) языка. В таблице, где перечислены профили OpenVPN, была графа, которая называлась Time of creation. Сказать так можно, но это противоречит принципу краткости (см. описание первой ошибки), и выглядит не совсем по-английски: в большинстве случаев пишут просто Created, без всяких лишних элементов. В списке пользователей и назначенных им ролей можно было найти вот такой пример: Здесь опять имеет место та самая избыточность, о которой шла речь в описании первой ошибки. Мы привыкли, что в русском языке всегда два слова («Имя пользователя»), и иногда забываем, что на английском это передаётся одним словом login. Ошибка четвертая: описания, непонятные широкой аудитории (а по сути, понятные только разработчику и не всегда cоставленные с соблюдением правил грамматики). Вернёмся к той же странице с настройками. Там есть параметр, указывающий, с какой версией HAProxy работает пользователь: если с обычной, то он имеет значение 0, а если с коммерческой (т.н. enterprise HAProxy), то 1. Комментарий к этому параметру изначально был такой: indicates wheter the enterprise version of HAProxy is used. If you use enterprise HAProxy, set the value of this parameter to 1. It changes service name for rebooting/reloading.
Если не придираться к грамматике и лексике, то человеку в теме, наверное, будет понятно: нужно указать, что используется платная версия HAProxy; в случае использования этой версии сервис будет называться по-другому. А вот будет ли это понятно тем, кто только учится работать с HAProxy? Вряд ли. Именно поэтому текст было предложено заменить на следующий: If you use enterprise HAProxy, set the value of this parameter to 1. The name of the service will be changed as it is required for the commercial version. Ошибка пятая: невнимание к грамматике. Одним из самых сложных и муторных моментов над интерфейсом было отлавливаение конструкций типа You do not have installed с последующей заменой на You have not installed. Проблема решается постоянным напоминанием в личных беседах, и это (как ни странно) имеет действие: ошибок подобного рода стало значительно меньше. Работу по редактированию текстов интерфейсов мы только начали; мы понимаем, что её нужно вести на регулярной основе. В планах — составить глоссарии (это поможет сделать текст единообразным), а также подумать над возможными методиками UX/UI-тестирования, включающим в том числе тестирование текстов.
Безусловно, мы ценим любую обратную связь: если вы заметили ошибку или просто желаете высказать предложения по улучшению текстов интерфейсе, пишите нам.
Если нас читают разработчики других проектов с открытым исходным кодом, то хотелось бы обсудить, как у вас поставлена работа с текстами интерфейсов? как вы проверяете их, как тестируете?  Самые интересные предложения мы используем в дальнейшей работе.