Интерфейсные тексты через НСтр
Директивный
v8std#std761v8std#std784диагностикаMultilingualStringHasAllDeclaredLanguages
Правило
Заголовок раздела «Правило»- Любая интерфейсная строка в коде оформляется через
НСтр(...)— тексты сообщений, заголовки, подсказки, представления команд. - Составные сообщения собираются
СтрШаблониз логически завершённых фраз с параметрами%1,%2— не конкатенацией обрывков предложения. - Данные, записываемые в ИБ как контент (наименования, комментарии, автогенерируемые тексты — всё, что потом увидят другие пользователи), формируются на языке ИБ, а не на языке текущего пользователя.
Без НСтр интерфейс не локализуется, а тексты «зашиты» в код. Конкатенация
обрывков непереводима в принципе: в другом языке порядок слов другой, и перевод
кусков по отдельности даёт бессмыслицу. Строка, собранная на языке текущего
пользователя и сохранённая в ИБ, потом показывается всем — англоязычный
пользователь записал документ, и у всех остальных в наименовании английский текст.
Правильно
Заголовок раздела «Правильно»Данные ИБ — на языке ИБ
Заголовок раздела «Данные ИБ — на языке ИБ»Для текста, который записывается в данные (а не показывается здесь и сейчас),
язык задаётся вторым параметром НСтр — код основного языка ИБ, а не язык
сеанса:
Ориентир для выбора: интерфейс (сообщение, заголовок окна) — язык
пользователя, НСтр без второго параметра; данные (наименование,
комментарий, текст, уходящий в реквизит) — язык ИБ, НСтр с кодом основного
языка.
Когда не применять
Заголовок раздела «Когда не применять»Технические строки, не видимые пользователю, в НСтр не оборачиваются: ключи и
идентификаторы, имена реквизитов и параметров запроса, служебные константы,
тексты запросов. Имена событий ЖР оборачиваются (НСтр("ru='Импорт данных'")) —
они видимы администратору и участвуют в отборе.