В данной статье хочу описать типы строк локализации по месту их использования, объекты системы DIRECTUM для строк локализации, в каких компонентах системы можно использовать строки локализации, а также опишу несколько вариантов локализации компонент, в которых нет возможности указывать строки локализации.
Для отображения текстовых элементов пользовательского интерфейса системы на разных языках в системе используются строки локализации. Задание значений локализуемых строк производится в компоненте Словарь локализации. Для возможности работы системы в английском интерфейсе в поставку должен входить модуль Поддержка английского языка пользовательского интерфейса.
Локализуемые строки системы по месту их задания бывают следующих типов:
Это значения определенных строковых реквизитов некоторых компонент системы, перечень компонент и их реквизитов приведен ниже в таблице. В таблице также приведен префикс элемента, который автоматически определяется от места задания локализуемой строки.
Компонента разработчика |
Место задания (реквизит/свойство) |
Префикс |
Типы справочников |
Заголовок в карточке типа справочника |
REF |
Заголовок в ед. числе в карточке типа справочника |
REFSINGULAR |
|
Заголовки в таблице «Реквизиты» |
REQ |
|
Заголовки «Действий» |
ACT |
|
Заголовки в таблице «Представления» |
VIEW |
|
Типы карточек электронных документов |
Заголовок в карточке типа карточки электронного документа |
EDOC |
Заголовки в таблице «Реквизиты» |
REQ |
|
Заголовки «Действий» |
ACT |
|
Подсказки к «Действиям» |
|
|
Заголовки в таблице «Представления» |
VIEW |
|
Диалоги |
Заголовок в карточке диалога |
DIRDLG |
|
Заголовки в таблице «Реквизиты» |
REQ |
Разработка отчетов |
Описание в карточке отчета |
REPORT |
Сценарии |
Заголовок в карточке сценария |
SCRIPT |
Пример локализуемого строкового реквизита - Заголовок в компоненте Типы справочников
Наименования реквизитов типа признак
Это наименования значений реквизитов типа «Признак». Префикс создаваемой строки локализации «PICK». Например, для реквизита справочников Состояние записи значения Действующая/Закрытая;
Это заголовки элементов форм типов справочников, типов карточек документов и диалогов (ниже приведен список локализуемых элементов форм)
Компонента разработчика |
Место задания (реквизит/свойство) |
Префикс |
Редактор форм |
Заголовок для элементов формы типа «Поле», «Многострочное поле», «Поле с кнопкой», «Поле выбора записей» |
LABEL |
|
Заголовок для элементов формы типа «Закладка» |
TAB |
|
Заголовок для элементов формы типа «Группа» |
GROUP |
|
Заголовок для элементов формы типа «Кнопка» |
BUTTON |
|
Заголовок для элементов формы типа «Колонка таблицы» |
COLUMN |
|
Заголовок для элементов формы типа «Гиперссылка», «Изображение», «Веб-браузер», «Метка», «Выпадающий список», «Флажок», «Группа переключателей»; подсказка для элемента формы типа «Гиперссылка» и элемента ленты «Кнопка» |
|
Пример локализуемого свойства редактора форм:
Это текстовые сообщения, генерируемые пользователю в ISBL-коде.
Связь локализуемых строк с записями Словаря локализации осуществляется двумя способами:
Для доступа к настройкам локализации в системе используется объект ILocalization. Используя данный объект можно:
Примечание: Не рекомендуется устанавливать текущий язык системы с помощью свойства CurrentLanguage. Для изменения текущего языка системы следует воспользоваться компонентой Установка текущего языка.
В базе данных информация о списках языков локализации хранится в таблице SBSupportedLanguages, информация о строках данные о локализации текстовых элементов интерфейса хранятся в таблице SBLocalizedData и информация о дате последнего обновления групп локализации хранятся в таблице SBLocalizationSysData.
При работе со строками локализации на формах необходимо учитывать, что строки русской и английской локализации могут иметь разную длину, что в последствии может привести к скрытию части букв. Поэтому желательно, чтобы длина строк разноязычных локализации были примерно одинаковы. Если такое невозможно, следует ставить отступ для заголовка поля, соответствующий самой длинной строке локализации заголовка элемента формы.
В качестве примера можно рассмотреть случай, когда заголовок поля From сместился на форме из-за локализации. В русской локализации поле называется «С». Как видно, длины слов «С» и «From» отличаются. В следствие чего получилось смещение, представленное на рисунке ниже:
В редакторе форм можно быстро проверить расположение заголовков полей для разной локализации с помощью элемента на ленте Локализация.
Для наименования типового маршрута, заголовков параметров типового маршрута нет возможности использовать строки локализации. Обходной вариант указывать заголовок на русском и английском языке через слеш или только на английском языке.
Для формирования тем задач, заданий и уведомлений c локализацией нужно прописать код при старте задачи или задания/уведомления, который подставляет значение из строки локализации:
Для формирования результатов выполнения и текста по умолчанию с локализацией можно воспользоваться одним из способов:
В мастерах действиях не предусмотрено использование Словаря локализации. Обойти данный момент можно несколькими способами:
Пример одного из этапов мастера действий:
Пример параметра мастера действий с типом «Признак»:
Для реквизитов с типом «Строка» нельзя использовать строки локализации. Обходные решения:
1) пользователь указывает данные на русском и английском языке через слеш;
2) пользователь указывает данные только на английском языке;
3) подменять реквизиты на форме карточки от локализации текущего пользователя;
4) для справочников использовать несколько представлений;
5) дублировать реквизиты, т.е. заводить реквизиты для каждого языка.
1) Учитывайте в разработке, что предопределенные переменные YES_VALUE и NO_VALUEне локализуются, т.е. их значения всегда равны ДА и НЕТ соответственно.
2) При использовании локализации не забывайте переводить все отображаемые пользователю сообщения.
3) Учитывайте увеличение трудоемкости при локализации, в среднем она возрастает примерно на 10-50%, если перевод предоставляется заказчиком, и на 20-100%, если перевод осуществляется собственными силами.
4) При экспорте разработки не забывайте вручную добавлять строки локализации, которые используются в текстах разработки, так как они автоматически не подгружаются при экспорте. Для решения данной ситуации можно воспользоваться сценарием, описанным в статье Автоматическая выгрузка строк локализации и констант, используемых в тексте разработки.
Сюда еще можно добавить про возможность использовать в коде строки локализации без функций LoadString и тд. Для этого добавляем строку локализации в группу CONST. Пример есть в этой статье. Обычно такие строки используют в коде вместо явного указания строкового значения, например, CONST_AUTONUMBER ( = 'АВТОНОМЕР') можно использовать вместо 'АВТОНОМЕР' или LoadString("AUTO_CODE"; SYSRES_SBDATA;)
Когда планируется поддержка Юникода / UTF-8? :)
"Для формирования тем задач, заданий и уведомлений c локализацией нужно прописать код при старте задачи или задания/уведомления, который подставляет значение из строки локализации:" - и чью локализацию он учтет? Пользователя workflow?
Тут необходимо идти от особенностей самого бизнес-процесса:
1) все участники процесса используют одну локализацию, например, филиал в другой стране. Тогда есть смысл формировать темы задач, заданий и уведомлений при старте ТМ, определяя локализацию инициатора.
2) в рамках одного процесса используют различные локализации, но известны исполнители, использующие другой язык, например, топ-менеджеры компании. Тогда лучше при создании заданий/уведомлений определять исполнителя и его локализацию и сформировать темы/инструкции на требуемом языке
3) если в рамках одного блока бизнес-процесса исполнители могут быть с различной локализацией, то в данном случае есть 3 варианта:
Авторизуйтесь, чтобы написать комментарий