Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
При создании графического интерфейса для HAProxy мы столкнулись с необходимостью решать проблемы языка. Удобный интерфейс невозможен без текстов, и удовлетворение пользователя во многом связано с тем, насколько ясно и понятно написаны тексты инструкций, подсказок, какие слова используются для описания кнопок и пунктов меню и т.п. Если все эти тексты перегружены малопонятной терминологией, содержат лексические и стилистические ошибки — о каком удобстве для пользователя можно тут говорить?
Roxy-WI —продукт очень сложный и специфический, и над текстами интерфейсов в процессе пришлось поломать голову. Этим опытом, а также некоторыми дополнительными размышлениями, мы бы хотели поделиться ниже.
Немного вводных размышлений
Начиная работу над Roxy-WI, мы хотели создать продукт, который обладает следующими характеристиками:
- он рассчитан на широкую международную аудиторию (и прежде всего за пределами России) — именно поэтому все тексты написаны на английском языке, а русского языка так и нет (хотя локализации, возможно, будут);
- он должен быть простым и понятным, чтобы начинающие пользователи, которые делают первые шаги в работе с HAProxy и Nginx, быстро погружались в тему;
- он должен быть понятным и для опытных пользователей, привыкших к командной строке, чтобы они смогли понять и оценить преимущества работы с HAProxy через GUI.
Без хорошего текста эти характеристики немыслимы: для сложного продукта одних графических схем и пиктограмм недостаточно; пользователю нужно объяснять, и зачастую очень подробно. Между тем тексту, как показывает практика, в интерфейсе уделяется незаслуженно мало внимания — и это несмотря на то, что в последнее время появилось немало хороших книг и статей на эту тему.
Чтобы улучшить тексты, мы сделали следующее:
- определили tone of voice и на его основе попытались придерживатся общего стиля;
- проанализировали основные ошибки и наметили основные пути их исправления;
- приняли ряд мер по поддержанию консистентности и единообразия интерфейсных текстов.
Как мы говорим с пользователем?
Термин tone of voice на русский язык перевести достаточно сложно: это и набор характерных элементов стиля, и интонация, и всегда объяснимая словами, но вполне ощутимая при чтении текста индивидуальная манера. Мы будем следовать уже сложившей традиции и оставим этот термин без перевода (если вдруг кто-то знает, предложите свой вариант в комментариях — любопытно было бы ознакомиться).
Требования к tone of voice мы сформулировали следующим образом:
- мы говорим с пользователем кратко и лаконично; дружественно, но не очень фамильярно;
- так как основной канал общения с пользователем — визуальный, то мы стараемся писать так, что слова вписываются в элементы интерфейса и не портят общее эстетическое впечатление (а для этого тоже надо писать кратко — см.предыдущий пункт);
- при всём этом надо писать грамотно, максимально приближенно к тому, как пишут носители языка.
В поисках собственного языка и стиля мы внимательно изучили следующие материалы: официальную документацию HAProxy и Nginx, инструкции и туториалы на сайте Digital Ocean, руководства по стилю Google, Microsoft и Apple. Для начала это неплохо, на практике же все оказалось сложнее: начинать пришлось с анализа и исправления сделанных коллегами ошибок.
Распространённые ошибки и пути их исправления
До того, как мы взялись за редактуру, тексты интерфейсов писались по сути по наитию. Все тексты писал один человек, подкованный в технической стороне дела, но не подкованный в языковой. Как ни странно, ошибки и недочёты были довольно типичные: довольно часто приходится видить подобное в текстах, написанных авторами, для которых английский язык не является родным. Рассмотрим эти ошибки более подробно.
Ошибка первая: употребление избыточных конструкций и элементов. Первая серьезная редактура была у нас для страницы настроек: там можно устанавливать основные параметры для Roxy-WI. Выглядела эта страница так (при нажатии на каждую секцию открывается список параметров):
Что сразу же бросается в глаза? Конечно же, слово section, которое там абсолютно лишнее: пользователю и так ясно, что это секции; кроме того, более опытные пользователи имели дело с секциями конфигурационного файла — по сути, здесь всё организовано так же, но только в виде GUI.
Если это section убрать, всё будет выглядеть лаконичнее и симпатичнее:
Ошибка вторая: нанизывание слов и создание сложных конструкций. Иногда в английском языке этот приём позволяет в буквальном смысле слова творить чудеса (как в художественной, так и в технической литературе), но злоупотреблять им не нужно (особенно неносителям). На описываемой странице с настройками было обнаружено, например, такое выражение: 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-тестирования, включающим в том числе тестирование текстов.
Безусловно, мы ценим любую обратную связь: если вы заметили ошибку или просто желаете высказать предложения по улучшению текстов интерфейсе, пишите нам.
Если нас читают разработчики других проектов с открытым исходным кодом, то хотелось бы обсудить, как у вас поставлена работа с текстами интерфейсов? как вы проверяете их, как тестируете?
Самые интересные предложения мы используем в дальнейшей работе.