Наша компания PVS-Studio активно публикует статьи на тему разработки, поиска ошибок в коде, техниках по улучшению его качества. Этот пост отличается по тематике – в этот раз рассмотрим вопрос перевода на английский язык русскоязычного контента на тему разработки.
В этой статье вы прочитаете в целом о переводе в сфере IT, узнаете, как мы в PVS-Studio переводим статьи на английский язык, получите рекомендации по рабочему процессу. Текст будет полезен для переводчиков, работающих с IT-тематикой, и разработчиков, интересующихся этим вопросом.
Введение
Если завтра отменят русский язык, отечественные программисты будут общаться на английском. В IT главенство этого языка не оспаривалось никогда. Кроме этого программисту-соискателю нужно соответствовать требованиям вакансий. За период с 17-18 февраля 2020 года из 300 выложенных на hh вакансий с зарплатой от 140 000 рублей в Москве по ключевому слову «программист» (исключая из выборки «Системный администратор», «UI/UX дизайнер» и другие вакансии, не связанные непосредственно с разработкой), только в 62 нет упоминания «технический английский» или схожего в требованиях. Только в одной вакансии было прописано четко «Английский не нужен». Это стимулирует разработчиков доводить свой уровень владения хотя бы до intermediate, чтобы соответствовать этому требованию, стать ближе к ресурсам от зарубежных авторов про любимый код и общаться с иностранцами. Наиболее упорным это удается – happy end.
Путь IT переводчика в большинстве случаев другой: познание тонкостей английской грамматики, заучивание идиом и витиеватых слов, много устной и письменной практики в различных сферах, четкое следование наказу: «Переводить не слова, а смысл». Противоречие возникает в момент, когда новоиспеченный специалист не улавливает тонкостей технического подтекста и в итоге переводит слово за словом. Тем не менее и у этого сценария может быть хороший конец. Об этом речь пойдет дальше.
Тема IT перевода в Cети
Тема перевода на английский язык по тематике IT не раскрыта в Cети в полной мере. Если человек хочет получше разобраться в этой теме, можно:
- найти разноплановые статьи (пример на хабре);
- скачать учебники и самому пройти их (здесь несколько учебников для разных уровней);
- читать много статей на английском (пример), стараться осознавать взаимосвязь с русскими значениями;
- исследовать стандарты и гайды по языкам:
C++: C++ Programming Language, Google C++ Style Guide
С#: C# programming guide.
Хардкорный идеальный вариант — пройти курс по программированию на английском (пример), освоить азы, написать калькулятор, поделить на 0, скопипастить, опечататься и понять-таки глубинный смысл. Тем не менее единой школы перевода IT тематики еще не сформировалось, так как отрасль молодая, обширная и разносторонняя. Ведь тексты могут быть непосредственно о разработке, а могут быть о смежных темах – юридические, маркетинговые. Также в разных языках программирования могут быть свои особенности, например, значение слова «heap», которое на русский язык переводится как «куча». В обычной жизни это означает беспорядочную груду вещей, а в программировании этим словом обозначают как область, из которой выделяется динамическая память, так и тип контейнера, в котором данные упорядочены определенным способом.
Таким образом, после окончания университета среднестатистический переводчик, столкнувшийся с IT тематикой, скорее всего, плотно займется самообразованием – сделает вышеперечисленное, дополнит специализированным курсом (пример) и внимательно изучит внутренние гайды, если такие есть.
Процесс перевода статей в PVS-Studio
Тематика работы специфична, так как мы развиваем только один крутой инструмент – статический анализатор кода PVS-Studio. Если просто, инструмент находит ошибки в коде на С, С++, С#, Java и выдает сообщения, что в указанном участке кода возможно есть ошибка. Поэтому в этой статье будут приводиться примеры, касающиеся именно этих языков программирования.
О себе. Работаю в PVS-Studio больше 2 лет, перевожу статьи и заметки в среднем от 3 до 30 страниц, письма и фрагменты документации. Кроме основных задач, 1-2 раза в год посещаю тематические конференции, где мы знакомимся с участниками, рассказываем о компании и лампово проводим время с коллегами.
Об этапах перевода. Все начинается с получения статьи в письме на почту и постановки задачи на канбан доску. Затем основные: перевод в CAT, редактирование, финальное оформление. Ниже расскажу об общих принципах перевода, затем подробно про каждый этап.
Общие принципы перевода
Ниже опишу некоторые принципы, которые сформировались из опыта, рекомендаций и личных наблюдений. Буду приводить примеры из статей и пояснять.
Точно переводить термины. Сравните перевод слова «строка» в следующих двух примерах.
Пример 1. Оригинал: «В релизной версии программы компилятор может выполнить оптимизацию и переупорядочить строки вызова метода SetStatic() и присваивание переменной instance полю m_RemovePacket (с точки зрения компилятора семантика программы не будет нарушена)».
Перевод: «In the release version of the program, the compiler might optimize and reorder calling lines of the SetStatic() method and assignment of the instance variable to the m_RemovePacket field (from the compiler's point of view, program's semantics won't break)».
Пример 2. Оригинал: «Есть популярные функции и их мало. Есть непопулярные, но их много. Например, существуют ещё вот такие разновидности функции сравнения строк:
- g_ascii_strncasecmp — 35,695
- lstrcmpiA — 27,512
- _wcsicmp_l — 5,737
- _strnicmp_l — 5,848
- _mbscmp_l — 2,458
- и т.д».
Перевод: «There are popular functions and there are few of them. There are unpopular, but there are many of them. For example, there are the following variations of the string comparison function:
- g_ascii_strncasecmp — 35,695
- lstrcmpiA — 27,512
- _wcsicmp_l — 5,737
- _strnicmp_l — 5,848
- _mbscmp_l — 2,458
- and others».
В первом случае под строкой понимается строка в коде, во втором – тип данных.
Прорабатывать грамматику
Несколько раз мы получали обратную связь по качеству переводов – она была и хорошей, и плохой. Один раз был случай, когда я забыла артикль the. Это было предложение со смыслом вроде «Мы проверяем код и помогаем этому миру становиться лучше». Вторую часть я перевела, используя устойчивое выражение «Make the world a better place», но забыла артикль. При редактировании мы этого не заметили. В общем, человек указал нам на это. Конечно, все допускают ошибки, но наша задача – стараться минимизировать их количество.
До сих пор стараюсь прорабатывать моменты, в которых не уверена, советую грамматику Т.Ю. Дроздовой «English grammar reference and practice», словарь Collins.
Не калькировать, переводить смысл
Оригинал: «Прям чувствуется, как выражение cmptlut[0] < 0 было дважды размножено копированием, но поправили ноль только в одном месте».
Перевод: «My gut is telling me that the cmptlut[0] < 0 expression was pasted twice, but 0 was changed just once».
Можно было перевести первую фразу дословно, используя глагол «to feel», но и идиома, на мой взгляд, тоже четко передала смысл и ощущение. Также фразу «дважды размножено копированием» я перевела проще, чтобы оставить только смысл.
Убирать не смысловые слова
Оригинал: «Аналогичный случай спешного написания кода».
Перевод: «A similar case of hasty coding».
Простейший пример того, как можно сделать перевод более емким: «написание кода» — «coding», вместо «writing code».
Упрощать то, что труднее читать
Оригинал: Выгрузим отчёт, зайдя во вкладку задачи.
Перевод: Go to the task tab and download the report.
Программисту будет легче читать простой глагол, чем деепричастие.
Не злоупотреблять, но периодически использовать устойчивые выражения, идиомы
Оригинал: «Рассмотрим подробнее: если выполнится условие, помеченное мной цифрой 1, то мы перейдём к условию 2, которое всегда true, а значит выполнится строчка 3».
Перевод: «Let's peek under the hood: if the condition that I marked with number 1 is fulfilled, we'll move on to the condition 2, which is always true, which in turn means that the line 3 will execute».
Речь программиста обычно состоит из терминов, предлогов, союзов, местоимений, устойчивых выражений и ругательств (что печально). Одно из устойчивых выражений — «под капотом». Так как предложение выше относится к тексту статьи, имеющей обучающий и рекламный характер, такой вольный перевод хорошо вписался.
Разделять/объединять предложения
Пример ниже взят из статьи о нашем мерче, в частности, о тульских пряниках.
Оригинал: «Существует несчётное множество их разновидностей, вкусов и иллюстраций, и в нашем городе есть музей, посетив который, вы сможете увидеть, насколько непростой технологически у них процесс создания».
Перевод: «There are countless varieties, tastes and forms of them. In our local museum, you can see how technologically difficult the process of their creation is».
Это несовершенный перевод, можно еще поработать с некоторыми словами. Тем не менее разделение сложного предложения (четыре предикативные части и деепричастный оборот) заметно помогло при переводе и последующем прочтении.
В книге «Пиши, сокращай» о сильном тексте авторы советуют не использовать более 3-4 грамматических основ в одном предложении. Советую прочитать эту книгу каждому переводчику! Она получила немало критики, но по уровню насыщенности полезным материалом она одна из лучших: за каждым тезисом следует пример, каждое утверждение обосновано, составлены чек-листы и памятки.
«Пиши, сокращай». Авторы: Максим Ильяхов, Людмила Сарычева
Подведем итог. Следование этим принципам помогает проявлять заботу о читателе. Когда взгляд не запинается при чтении, нет запутанности, «калькированности» и контент полезен, читатель захочет вернуться к тексту еще.
В этом разделе я очень кратко описала возникающие проблемы, свои личные выводы. Один раз в 1-2 дня в работе встречается сложное выражение / новый термин / нахожу новое устойчивое выражение – примеров много. Параллельно продолжаю составлять глоссарий для IT переводчика с примерами и объяснениями. Поддержите лайком и комментарием, если есть интерес почитать о специфических терминах и интересных случаях еще.
Теперь перейдем непосредственно к этапам работы с русскоязычным документом.
1. Перевод в CAT. Инструмент Memsource (относится к CAT — сomputer-assisted translation) достался мне от предыдущего переводчика, но я также попробовала Trados, Déjà vu, MemoQ чтобы удостовериться, что мы не упускаем более подходящий инструмент. Сейчас пробую SmartCAT. С одной стороны, кажется, что смена программы не составляет труда, но возникают разные вопросы, в которых нужно разобраться: аккуратный импорт базы терминов и памяти переводов, ценовой план, интеграции, настройка и приватность машинного перевода. По моему мнению, важно наличие необходимых функций, а не распространенность использования платформы или отзывы. Профессиональные переводчики, скорее всего, в курсе всех этих тонкостей, поэтому кратко опишу только основные необходимые возможности для моей работы:
- база терминов (Term Base). Если термин из базы встретился в тексте, он предлагается и подсвечивается в программе.
- машинный перевод (Machine Translation). Есть мнение, что это плохая практика, так как машина переводит по алгоритмам и не знает об акцентах, инверсии, сарказме и т.д.
С другой стороны, IT перевод – это больше технический перевод, чем художественный. Читатель простит нам чуть более сухой перевод, но не простит неправильно переведенный термин. Помимо этого, перевод статей поставлен на поток, скорость работы имеет здесь важное значение. Иногда я перевожу объемные ответы клиентам здесь – с такими задачами точно не стоит затягивать.
- автоматическая память переводов (Translation Base). В программе можно подтвердить сегмент, а в следующий раз, когда попадется такое же или похожее предложение, в правом окне появится подсказка из памяти переводов.
- проверка на грамотность (Quality Assurance). Например, опечатки подсвечиваются, можно выбрать правильный вариант из выпадающего списка.
- удобный интерфейс. В Memsource имеем достаточно стандартный вид: разделение предложений на сегменты, возможность их соединять, разъединять, быстро вставлять ссылки, окно с просмотром файла (удобно взглянуть, когда текст описывает, что представлено на рисунке). Справа – предлагаемый перевод: машинный перевод, термины из базы, если такие встретились в тексте.
Интерфейс платформы Memsource (клините, чтоб картинка увеличилась)
Несмотря на растущее качество машинного перевода, нужно внимательно прочитывать предлагаемый перевод, уделять особое внимание артиклям и предлогам, так как их легче всего не заметить при чтении.
Даже с учетом очевидных плюсов и удобств, попадаются забавные случаи, когда машинный перевод откровенно «не догоняет».
Несколько примеров:
Из английской версии кажется, что программист не сделал опечатку, а опечатался где-то в закрытом пространстве или «был предрешен».
В математике и программировании используется понятие «дерева» для описания структур данных. В этом конкретном случае речь идет об абстрактном синтаксическом дереве (abstract syntax tree, AST), то есть представлении исходного кода в качестве древовидной структуры. Но переводчик посчитал, что обработка древесины здесь тоже к месту.
Английский вариант предполагает, что проект можно выкачать, сдуть, как колесо или «пузырь» в экономике, то точно не как файл с платформы.
Переводчик расщедрился и предлагает участникам конференций получить от нашей компании не вкусный гостинец (Тульский пряник), а целую гостиницу. Как его ругать после такой доброты?
У моей коллеги Виктории Ханиевой, выполнявшей перевод для учебных целей, тоже были смешные случаи.
Перевод «показательной функции» весьма впечатляющий.
Когда не знаешь перевод русского слова, можно попробовать написать его на английский манер. Ну, по крайней мере, машина пыталась.
Здесь просто несколько многосложных слов подряд, машина решила выразиться проще.
В бесплатной версии Memsource можно иметь только два файла в проекте. Вместе с тем вполне можно подключить машинный перевод и значительно ускорить процесс по сравнению с переводом, например, в doc файле. Но будьте осторожны, вчитывайтесь и проверяйте =)
2. Редактирование. Здесь не обойтись без программиста со знанием английского, который будет консультировать вас по проблемным местам, терминам, будет рассказывать, о чем идет речь. Заручитесь поддержкой этого человека, с благодарностью принимайте пояснения, делайте заметки, чтобы не забыть и передать следующему поколению. В моем случае это Юрий Минаев (здесь можно послушать его доклад на английском). Мы прочитываем и редактируем текст прямо в memsource, иногда отправляю на почту русский и английский doc файлы для редактирования в режиме правки. Пока что схема работает, может, что-то поменяем в будущем.
3. Финальное оформление. В тексте наших статей присутствует много кода. Memsource иногда сдвигает код при выгрузке документа с сайта, несмотря на то, что я копирую фрагменты тексты так, чтобы исходное форматирование не менялось. По какому принципу он оставляет некоторые фрагменты кода нетронутыми, а в некоторых сдвигает несколько строк — для меня загадка.
В статьях наши авторы рассказывают про ошибки в коде и часто приводят примеры правильного написания. Представьте, что в статье написано: «Так выглядит правильный вариант кода». Далее следует сдвинутый код. Это выглядит нелепо. Возникает вопрос – как бороться со сдвигами в коде? Сравнивать с оригиналом каждый фрагмент кода утомительно и неэффективно. Поэтому пользуюсь функцией сравнивания документа во вкладке «Review». В итоговом документе удаленные пробелы подчеркиваются сплошными линиями, они заметны сразу, поэтому я быстро копирую «поломанные» фрагменты из оригинала. Процент сдвинутых фрагментов – примерно 10% на один документ, пока что не напрягает, но нахожусь в поиске безошибочного решения.
Сравнение документов оригинала и перевода (клините, чтоб картинка увеличилась)
Сейчас расскажу еще об одном моменте. Для унификации документов в PVS-Studio есть самописный Публикатор (Publisher) как расширение в Word.
Publisher (клините, чтоб картинка увеличилась)
Здесь несколько функций для программистов, такие как автоматическое форматирование кода, вставка ссылок на документацию и примеров из базы ошибок. Лично я использую замену неверных символов, например, разные кавычки меняются на общепринятые. Также использую «Заменить ссылки»: ссылки на русский вариант страниц нашего сайта меняются на английские. В конце жму «Преобразование статьи», и Публикатор сам проверяет, соблюдено ли оформление. Например, в заголовках не должно быть точки в конце, в полях «Автор» и «Дата» не должно быть пробелов после текста.
Пример правильно оформленного заголовка
Пока что этого инструмента хватает. В целом, то, что мне нравится в работе в IT компании, это внимание к деталям и готовность их прорабатывать.
Рекомендации по рабочему процессу
Природная усидчивость и внимательность очень пригождается. При проверке больших статей (более 20 страниц) особенно легко упустить опечатку, лишний пробел. Я пробовала технику Pomodoro, но пятиминутные перерывы только прерывали добротный рабочий настрой, который успевал появляться за 25 минут сосредоточения. Нашла решение лично для себя — спокойная музыка без слов или со словами на языке, который я не знаю. Так отделяются фоновые мысли, и можно сфокусироваться на тексте. Пользуюсь подборками Яндекс.Музыки.
Важно организовать рабочее пространство, чтобы минимизировать отвлекающие факторы: не выбирать шумное рабочее место, где мимо ходят много людей, использовать статус «не беспокоить» в напряженные моменты, чтобы добродушные коллеги не прервали ваше размышление о выходе за границу массива, например.
После пары-тройки часов плотного перевода сменить обстановку и вид мыслительной деятельности – это must have: чай, кофе, поболтать.
Во время обеда не оставаться в офисе, выходить на улицу. Тем не менее у каждого свои особенности, ищите свои места и источники вдохновения, успокоения =)
Общий итог. Упомяну общеизвестный совет — развиваться и продолжать учиться, читать художественную литературу, смотреть фильмы и слушать речь на английском. Напоследок оставлю небольшую памятку по IT переводу из общих рекомендаций.
В этой статье рассказала далеко не обо всем, есть и другие нюансы, такие как: пунктуация, стиль, перевод заголовков и их оформление и другие. Возможно, напишу и про эти моменты позже. Спасибо, что прочли до конца. Читатель, желаю захватывающих текстов и не менее качественных IT переводов. Take care!
Автор: Devoted