#std761¶
Интерфейсные тексты в коде: требования по локализации¶
1.¶
Если в модулях конфигурации есть строки для интерфейса пользователя (сообщения, надписи на формах, тексты команд, выражения в настройках СКД и т.п.), обеспечивайте их локализацию.
Для этого используйте НСтр вместо прямых строковых литералов.
Неправильно
Правильно
Также важно корректно использовать НСтр.
Неправильно
Правильно
2.¶
Для составных строк, где части зависят от условий, используйте логически завершенные фразы и подстановку параметров через СтрШаблон.
Это нужно из-за разного порядка слов, знаков препинания и грамматики в разных языках.
Неправильно
Правильно
Не разрывайте одну фразу параметром действия (Включить, Копировать, Удалить и т.п.).
Правильно
Допустимо:
- формировать сообщение из нескольких предложений, если каждое предложение отдельно локализуется через
НСтр; - использовать предложения с двоеточием (например,
НСтр("ru = 'Создание каталога не выполнено по причине:'")).
Именованные параметры подстановки используйте только в вариантах [Параметр] и %Параметр%.
Имя параметра должно соответствовать #std454: Правилам образования имен переменных.
Правильно
3.¶
Если в конфигурации используется БСП, для составных форматированных строк вместо объекта ФорматированнаяСтрока применяйте функцию ФорматированнаяСтрока модулей СтроковыеФункции или СтроковыеФункцииКлиент.
Неправильно
Текст = Новый Массив;
Текст.Добавить(НСтр("ru = 'Перед удалением расширения рекомендуется'"));
Текст.Добавить(" ");
Текст.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'выполнить резервное копирование информационной базы.'"), ШрифтыСтиля.ПолужирныйШрифт));
ТекстПредупреждения = Новый ФорматированнаяСтрока(Текст);
Правильно
4.¶
В НСтр строку ограничивайте одинарными кавычками.
Неправильно
5.¶
Не выводите пользователю имена объектов метаданных и внутренние идентификаторы из кода.
Выводите синонимы (представления), и по возможности получайте их напрямую из метаданных через Представление.
Неправильно
Правильно
Сокращенный вариант тоже допустим:
СообщениеОшибка = СтрШаблон(
НСтр("ru = 'Обнаружены отрицательные остатки по регистру ""%1"".'"),
Метаданные.РегистрыНакопления.ТоварыОрганизаций);
5.1.¶
Исключение: сообщения для разработчиков и интерфейсы инструментов разработчика/внедренца.
Там допустимо выводить имена объектов и идентификаторы, но имена процедур и функций выводите в полном виде (с именем общего модуля или модуля менеджера).
Правильно
Правильно
Для имен объектов метаданных предпочтительно использовать ПолноеИмя.
Неправильно
Правильно
6.¶
При использовании функций ЧислоПрописью, ПредставлениеПериода, СтрокаСЧислом не указывайте параметр Л= (L=) в строке форматирования.
Неправильно
Правильно
7.¶
Не вызывайте функцию ПолучитьСклоненияСтрокиПоЧислу, так как она предназначена только для русскоязычного интерфейса.
Используйте:
СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка;РаботаСКурсамиВалют.СформироватьСуммуПрописью;СтрокаСЧислом;ЧислоПрописью.
Либо реализуйте собственные прикладные функции.
8.¶
В редких случаях (например, длинный лог действий пользователя) допустимо собирать сообщение конкатенацией, а не шаблоном.
Но неязыковые символы (обычно перевод строки) в начале/конце текста выделяйте в отдельные строковые литералы.
Неправильно
Правильно
Иначе при переводе легко потерять хвостовые пробелы или исказить фразу, потому что переводчик не видит полный контекст продолжения.
9.¶
При вызове ПоказатьВопрос с указанием кнопок в параметре Кнопки:
- по возможности используйте системное перечисление
КодВозвратаДиалога; - если в перечислении нет нужной кнопки, задавайте ее представление через
НСтр.
Неправильно
Правильно
См. также¶
Проверки¶
#acc:492 #acc:1297 #acc:1298 #acc:1299 #acc:1354 #acc:1355 #acc:1356 #acc:1357 #acc:1358 #acc:1359