Перейти к содержимому

Интерфейсные тексты через НСтр

Директивный

v8std#std761v8std#std784диагностикаMultilingualStringHasAllDeclaredLanguages

#локализация

  • Любая интерфейсная строка в коде оформляется через НСтр(...) — тексты сообщений, заголовки, подсказки, представления команд.
  • Составные сообщения собираются СтрШаблон из логически завершённых фраз с параметрами %1, %2 — не конкатенацией обрывков предложения.
  • Данные, записываемые в ИБ как контент (наименования, комментарии, автогенерируемые тексты — всё, что потом увидят другие пользователи), формируются на языке ИБ, а не на языке текущего пользователя.

Без НСтр интерфейс не локализуется, а тексты «зашиты» в код. Конкатенация обрывков непереводима в принципе: в другом языке порядок слов другой, и перевод кусков по отдельности даёт бессмыслицу. Строка, собранная на языке текущего пользователя и сохранённая в ИБ, потом показывается всем — англоязычный пользователь записал документ, и у всех остальных в наименовании английский текст.

Для текста, который записывается в данные (а не показывается здесь и сейчас), язык задаётся вторым параметром НСтр — код основного языка ИБ, а не язык сеанса:

Ориентир для выбора: интерфейс (сообщение, заголовок окна) — язык пользователя, НСтр без второго параметра; данные (наименование, комментарий, текст, уходящий в реквизит) — язык ИБ, НСтр с кодом основного языка.

Технические строки, не видимые пользователю, в НСтр не оборачиваются: ключи и идентификаторы, имена реквизитов и параметров запроса, служебные константы, тексты запросов. Имена событий ЖР оборачиваются (НСтр("ru='Импорт данных'")) — они видимы администратору и участвуют в отборе.