---
title: Заполнители и как с ними работать при переводе
description: Заполнители в переводах могут вызвать массу проблем. Позвольте нам рассказать вам, как справиться с ними в вашем проекте по переводу или локализации.
canonical: https://ru.smartcat.com/blog/place-holders-save-the-day/
language: ru
updated: 2026-01-26
---

# Заполнители и как с ними работать при переводе

Я помню, как впервые участвовал в проекте по [локализации программного обеспечения](https://ru.smartcat.com/software-localization/). Мне было поручено перевести пользовательский интерфейс какой-то промышленной компьютерной системы с помощью сложного инструмента локализации программного обеспечения. У меня не было проблем с техническими аспектами, но перевод пользовательского интерфейса был для меня в новинку, и эта задача оказалась для меня настоящим испытанием.

На самом деле, стиль текстов не был для меня чем-то необычным. Будучи в некоторой степени знакомым с ИТ, я хорошо знал «компьютерный» язык, который обычно используется в программном обеспечении (хотя под влиянием чат-ботов и голосовых интерфейсов мое мнение с тех пор кардинально изменилось). Настоящей загадкой для меня были эти странные символы: *{0}*, *%d*, *%setup%* и *$stop$*. Я понятия не имел, что они означают и нужно ли переводить слова, заключенные между этими символами, поэтому в мгновение ока я допустил множество ошибок. Символы новой строки, обозначенные как *\n*, стали последним ударом по моей уверенности в себе. Я никогда раньше их не видел, и хуже всего было то, что они часто сливались с другими словами. Как будто ситуация не была достаточно нелепой, текст был на немецком языке, что делало очень сложным понять, было ли *\nein* «nein» или «\n» + «ein». Проектный менеджер, наверное, пожалел о своем решении поручить эту задачу такому дураку, как я, после того, как его засыпали вопросами. Возможно, он даже высказался в Твиттере.

Обнаружил, что заполнители в переведенных файлах для срочного проекта волшебным образом исчезли. #PMproblems #StartPanicking

— Lau Velázquez (@geekylau) 9 октября 2013 г.

Переводчики, которые переводят заполнитель $DepartureTime$ как $HeureDépart$, просто последовательны.

— Olivier Oswald (@ooswald) 27 июля 2011 г.

*Переводчики, которые переводят заполнитель $Departure Time$ как $HeureDépart$, просто следуют единому стилю.*

Тот момент, когда переводчик решает изменить форму кавычек, и половина ваших переменных в игре исчезает.

— Войтех Шуберт (@falagor)[12 января 2016 г.](https://twitter.com/falagor/status/686925355991588864)

Спустя годы воспоминания о моем первом опыте вызывают у меня улыбку. Разумеется, я всегда уделяю время переводчикам, чтобы объяснить им, как работают переменные. А лучший способ избежать ошибок и сэкономить время для себя и своей команды — использовать регулярные выражения. С их помощью переменные можно превратить в нередактируемые и легко отслеживаемые объекты. В разных программах эти объекты называются по-разному. В Smartcat мы называем их «заполнителями». А если вам интересно, что такое регулярные выражения, то они не имеют ничего общего с светской беседой. Это шаблоны, которые используются для сопоставления и манипулирования комбинациями символов. Для изучения регулярных выражений не требуются навыки программирования. Просмотрите эту простую презентацию, подготовленную Томасом Вакье, экспертом по локализации в Yamagata Europe, чтобы понять, что такое regex (сокращение от «regular expression», регулярное выражение).

**Загадочные символы**

В качестве быстрого примера возьмем несколько строк из песни *I’m Gonna Be (500 miles)* группы The Proclaimers:

*Но я бы прошел 500 миль И еще 500 миль, Чтобы стать человеком, который прошел тысячу миль, Чтобы упасть у твоей двери*

Допустим, мы хотим, чтобы эти слова менялись, когда слушатель перемещается в другое место. Для этого нам понадобятся переменные:

*Но я бы прошел %$1s миль И я бы прошел еще %$2s Только чтобы быть тем человеком, который прошел {spelled-number} миль Чтобы упасть у твоих {location}*

Какие опасности здесь таятся? Важные символы могут быть удалены и/или использованы не по назначению. Цифры в %$1s должны следовать последовательному шаблону, а «spelled-number» и «location» не должны переводиться. К сожалению, не все это знают.

«Но почему бы просто не нанять опытного переводчика, вместо того чтобы возиться со всеми этими новичками?», — может спросить кто-то. Какими бы ни были реальные причины, стоит помнить: никто не рождается профессионалом в области локализации, но любой, кто прошел через первые трудности и приобрел в процессе бесценный опыт, может им стать.

**Защита от новичков, или как спасти мир**

Что же мы можем сделать, чтобы предотвратить катастрофы и сэкономить время на редактировании? Опишем переменные с помощью регулярных выражений:

- Для переменных с последовательными числами: *%\$\ds*

- Для переменных, заключенных в фигурные скобки: *\{.+?\}*

Лично я считаю эту шпаргалку очень полезной для составления регулярных выражений, а regex101.com — отличным онлайн-инструментом, который я рекомендую для тестирования. Теперь давайте загрузим файл, содержащий переменные, в Smartcat. Вот что мы увидим:

Переменные отображаются в виде фиолетовых единиц, которые явно не подлежат переводу и могут быть безопасно перенесены из исходного текста в язык перевода с помощью сочетания клавиш. Эти элементы останутся неизменными в переведенном документе после их загрузки. Использование заполнителей не ограничивается проектами локализации. Представьте, что у вас есть большой спецификационный лист воздушного насоса, содержащий тысячи позиций. Каждой позиции присваивается код заказа, и все они выглядят одинаково, поэтому их легко перепутать.

Один промах здесь может привести к очень печальным последствиям. Могут возникнуть ошибки при отправке заказов со склада, а правильная установка тоже может оказаться проблематичной. Клиент понесет убытки или, что еще хуже, неверные данные могут вызвать технические проблемы, которые, в свою очередь, могут привести к экологической катастрофе. Заполнители не переводятся, их нужно просто безопасно перенести на язык перевода, так зачем тратить на них время? Давайте найдем все коды заказов с помощью этого элегантного регулярного выражения *[A-Z]{2}\d{4}\-\d{4}* и волшебным образом превратим их в нередактируемые элементы:

Какой отличный способ упростить и ускорить процесс перевода (а также его редактирование)!

На данный момент заполнители поддерживаются по умолчанию только для распространенных форматов файлов локализации. Если вы хотите использовать их в других типах документов, сообщите нам об этом.

Я обратился к своим коллегам с вопросом об их опыте использования заполнителей.

**Фёдор Безруков**, исполнительный директор Logrus IT (киевский офис)

*«Использование заполнителей и тегов в форматах документов — обычная ситуация в нашей работе. Они очень помогают, когда клиенты присылают файлы Excel, содержащие HTML- или XML-разметку. Благодаря поддержке заполнителей и регулярных выражений в Smartcat работать с такими ресурсами стало гораздо проще и удобнее».*

**Марина Ильиных**, менеджер по локализации в Bookmate

*«Мы часто используем переменные и форматирование в пользовательских интерфейсах наших приложений. Замена тегов и переменных на заполнители позволяет нам выполнять автоматическую проверку согласованности и защищать важные данные, такие как цены, даты подписки и ссылки».*

Янис Евангелу, генеральный директор lexiQA, поделился своими смешанными чувствами:

**Яннис Евангелу**, генеральный директор lexiQA

«Часто возникает проблема, когда переводчики переводят текст внутри заполнителей, токенов и тегов. Также часто игнорируются символы экранирования. Большинство из них не знают, что это непереводимые лексические единицы. Проектные менеджеры тоже этого не знают. Однако такая халатность может привести к критическим ошибкам. Один переводчик рассказал мне, что ему пришлось работать с текстом, содержащим HTML-форматирование, и он перевел строку

в . Он утверждал, что, возможно, разработчик, который будет использовать этот текст, не говорит по-английски. Менеджер проекта не исправила эту ошибку, потому что сочла аргументы переводчика... разумными!

Затем в разговор вступил Рольф Клишевски, эксперт по локализации игр:

«Переводчики игр часто сталкиваются с такими вещами:

И, конечно же, с этим связаны всевозможные проблемы.

Здесь проблема заключается в том, что для некоторых направлений требуется артикль. Так, это «Багамы», но «Барбадос». Или по-немецки «die Schweiz» для «Швейцария». В таких случаях мы часто отказываемся от проекта. Обычно я советую клиентам сменить текстовый движок, потому что не хочу поставлять некачественную работу. Разработчики обычно спрашивают: «Это действительно такая большая проблема?» И я отвечаю: «Нет, потому что в игру можно играть». Так как же решать такие проблемы? Сообщите об этом клиенту, объясните проблему. Если они не могут или не хотят исправлять движок, а вам нужны деньги, выполните работу, но убедитесь, что вас не укажут в титрах.
