Как выглядят плейсхолдеры
Формат зависит от технологии. Вот типичные примеры:
Привет, %s! — подстановка строки
Осталось %d дней — подстановка числа
Файл %1$s удален в %2$s — нумерованные переменные (Android)
Здравствуйте, {name} — именованная переменная
У вас {count, plural, one {# сообщение} other {# сообщений}} — формат ICU
Нажмите <b>Сохранить</b> — разметка внутри строки
В файлах Android для защиты фрагментов от перевода применяют тег xliff:g. Разметка HTML внутри строки тоже требует осторожности: теги должны остаться на месте и закрыться правильно.
Почему плейсхолдеры нельзя менять
Программа ищет метку по точному написанию. Если переводчик исправит %s на % s, переведет имя переменной в {name} или удалит ее, строка сломается: вместо значения пользователь увидит служебный символ, или приложение завершится с ошибкой. Поэтому правило простое: переводится все вокруг плейсхолдера, но не он сам.
При этом порядок слов в разных языках отличается, и метки иногда приходится переставлять. Для этого используют нумерованные переменные, например %1$s и %2$s: так переводчик может поменять порядок слов в предложении, не нарушив подстановку значений. Если в исходной строке нумерации нет, а в переводе нужна другая последовательность, разработчикам стоит добавить ее.
Как защитить плейсхолдеры при переводе
Лучше всего работает сочетание нескольких мер. Редактор системы перевода выделяет плейсхолдеры как защищенные фрагменты, которые нельзя случайно удалить. Автоматические проверки качества (QA перевода) сравнивают набор меток в исходной и переведенной строках и показывают пропущенные или лишние. Комментарии и контекст помогают понять, что именно подставится на место метки, и подобрать правильную форму слова.
В Платформе перевода нетранслируемые фрагменты можно защитить плейсхолдерами, а настройки критических ошибок не пропускают типовые сбои. Подробнее — на странице Платформы перевода.
Чем осложняют перевод плейсхолдеры
Подставляемое значение может менять грамматику. В русском языке слово после числа или имени зависит от падежа и рода, и одна и та же строка не всегда подходит для всех значений. Для чисел здесь помогают плюральные формы. Для остальных случаев разработчики разбивают строку на несколько или выбирают нейтральную формулировку. Если значение подставляется из внешней базы, например название города, склонять его заранее невозможно.
Частые ошибки
Типичные ошибки — переведенное имя переменной, потерянный пробел вокруг метки, удаление закрывающего тега и замена обычных кавычек на типографские внутри разметки. Другая проблема — склейка предложения из нескольких строк: порядок слов в других языках отличается, и склеенный текст читается неправильно. Лучше хранить предложение целиком с плейсхолдерами внутри.
FAQ
Можно ли переводить текст внутри плейсхолдера?
Нет. Имя и синтаксис метки должны остаться без изменений.
Можно ли менять порядок плейсхолдеров?
Да, если они пронумерованы или именованы. Например, %1$s и %2$s можно поменять местами в предложении.
Что будет, если потерять плейсхолдер?
Значение не подставится, или приложение покажет ошибку. Такие проблемы ловят автоматические проверки качества.
Чем плейсхолдер отличается от тега?
Плейсхолдер подставляет значение, а тег задает оформление или структуру. Оба нужно сохранять в неизменном виде.