Локализация RU/EN¶
Текст на кнопках и в сообщениях - такая же часть интерфейса, как сами кнопки. Если переводить его дословно, вместе со словами переезжают и чужие правила: регистр, форма глагола, порядок слов, манера обращаться к пользователю. В этом разделе разобраны различия русского и английского интерфейсного языка, из-за которых переводы чаще всего звучат неестественно или ломают вёрстку. Там же лежит словарь надписей.
- Словарь интерфейсных надписей - кнопки, меню, поля, статусы, ошибки, навигация и термины UI с комментариями к выбору перевода.
- Типовые диалоги и сообщения - полные тексты диалоговых окон и уведомлений на двух языках.
ui-glossary.csv- словарь в машиночитаемом виде для подключения к TMS или тестам.
Форма глагола на кнопках¶
В английском языке кнопки и пункты меню используют повелительное наклонение (Save, Delete, Sign in), которое формально совпадает с инфинитивом. В русском интерфейсе сложилась традиция инфинитива: «Сохранить», «Удалить», «Войти». Повелительное наклонение («Сохраните») звучит как приказ пользователю и уместно только в инструкциях, где интерфейс действительно просит человека что-то сделать: «Введите пароль», «Выберите файл». Это соглашение закреплено в руководствах по стилю локализации крупных платформ, в частности в Microsoft Russian Style Guide.
Регистр¶
Английские интерфейсы используют два стиля: Title Case, где значимые слова пишутся с заглавной буквы (Save As, Add to Cart), и sentence case, где с заглавной пишется только первое слово. Apple HIG исторически предписывает Title Case для кнопок и пунктов меню, Material Design и многие веб-продукты перешли на sentence case. В русском языке заглавная буква ставится только в начале фразы и в именах собственных, поэтому Add To Cart переводится как «Добавить в корзину», а не «Добавить В Корзину». Названия продуктов и функций, являющиеся товарными знаками, сохраняют исходное написание.
Надписи в верхнем регистре (SUBMIT) читаются медленнее и в русском языке воспринимаются как крик; если визуальный стиль требует капители, её задают через CSS text-transform, а сама строка в ресурсах хранится в обычном регистре. Это важно и для экранных дикторов, часть которых зачитывает слова в верхнем регистре по буквам.
Длина строк¶
Русские строки в среднем длиннее английских, а короткие строки удлиняются относительно сильнее: Edit превращается в «Редактировать», Sign up - в «Зарегистрироваться». Раскладка, свёрстанная под английский текст, после перевода обрезает подписи кнопок, переносит пункты меню на вторую строку и выталкивает элементы из панелей инструментов. Поэтому интерфейс верстают с запасом по ширине, не задают кнопкам фиксированную ширину и проверяют псевдолокализацией, искусственно удлиняющей строки, ещё до перевода. Там, где места объективно нет, выбирают более короткий синоним из словаря («Изменить» вместо «Редактировать»), а не сокращение с точкой, которое плохо читается и хуже озвучивается.
Обращение к пользователю¶
В русском интерфейсе к пользователю обращаются на «вы» со строчной буквы: прописная «Вы» уместна в личной переписке с конкретным человеком, а интерфейс обращается к любому пользователю. Обращение на «ты» возможно в продуктах с соответствующим голосом бренда, но тогда его выдерживают последовательно во всех строках, включая системные ошибки. Местоимение your в английских надписях часто опускается при переводе: Your account - «Аккаунт» в навигации, но «Ваш аккаунт заблокирован» в сообщении, где принадлежность важна.
Род и согласование¶
Русский глагол прошедшего времени согласуется с родом, поэтому строки вида {user} edited the document нельзя перевести одной фразой без знания рода пользователя. Надёжнее перестроить фразу так, чтобы глагол не зависел от рода: «Изменения внёс {user}» звучит тяжеловесно, лучше «{user} · изменено 5 мин назад» или «Изменено пользователем {user}». Форма «изменил(а)» допустима в крайнем случае, но выглядит как черновик. Та же проблема возникает с прилагательными при подстановке названий объектов разного рода: «{item} удалён» не подходит для «папка» и «файл» одновременно, поэтому каждая сущность получает собственную строку («Файл удалён», «Папка удалена»).
Множественные формы¶
В английском языке у существительного две формы для чисел (1 file, 2 files), в русском - три для целых чисел и отдельная для дробных: «1 файл», «2 файла», «5 файлов», «1,5 файла». Склейка строки из числа и слова в коде (count + " files") неизбежно ошибается для большинства чисел, поэтому множественные формы задают средствами локализации, например через синтаксис ICU MessageFormat с категориями CLDR: для русского языка это one, few, many и other.
Категория one в русском охватывает не только 1, но и 21, 31, 101, поэтому писать =1 {один файл} вместо one неверно: правило применится только к единице, а 21 попадёт в другую категорию. В JavaScript правила для конкретного языка доступны через Intl.PluralRules.
Числа, даты и единицы¶
Форматирование выполняют средствами платформы (Intl.NumberFormat, Intl.DateTimeFormat в JavaScript), а не шаблонами в строках, поскольку различия многочисленны. В русской локали десятичный разделитель - запятая, разряды разделяются неразрывным пробелом (1 234 567,89), дата записывается как 05.10.2026 или «5 октября 2026 г.», время - в 24-часовом формате, а знак валюты ставится после числа через пробел (1 500 ₽). Число и единица измерения разделяются неразрывным пробелом («10 МБ», «5 мин»), чтобы не разрываться при переносе строки.
Типографика¶
В русском тексте используются кавычки-ёлочки «…», а для вложенных - «лапки» „…“. Тире между словами отбивается пробелами (неразрывным перед тире), дефис внутри слова не заменяется тире. Многоточие в пункте меню (Save As… - «Сохранить как…») сохраняет значение исходного соглашения: действие потребует дополнительного ввода, прежде чем выполнится. Букву «ё» либо используют последовательно во всём продукте, либо не используют вовсе; смешанное написание создаёт проблемы в поиске и выглядит небрежно, а в словах, где без неё возможна путаница («всё» и «все»), её стоит писать в любом случае.
Строки в коде¶
Каждая строка интерфейса хранится в ресурсах целиком, вместе с подстановками, а не собирается из фрагментов: порядок слов в русском и английском различается, и фраза Delete + {n} + files? не переводится по частям. Переводчику передают контекст: где показывается строка, что подставляется вместо переменных, какое максимальное число символов допустимо. Одно и то же английское слово в разных местах интерфейса нередко требует разного перевода (Clear - «Очистить» для поля и «Сбросить» для фильтров), поэтому строки с одинаковым текстом, но разным назначением получают разные ключи.