Понятие локализуемых ресурсов

Сложный

Локализуемые ресурсы — ресурсы, которые используются для отображения интерфейса приложения Creatio в соответствии с языком, установленным в профиле пользователя. К локализуемым ресурсам относятся изображения и локализуемые строки.

Локализуемые ресурсы являются частью конфигурационных ресурсов приложения. Ресурсы приложения размещены в пакетах и привязаны к базовой схеме. При запросе ресурсов определенной схемы выполняется их сбор по иерархии с учетом уровней и позиций пакетов.

Для локализуемых ресурсов используются понятия основного и дополнительного языка.

Основной язык (основная языковая культура) — язык, который по умолчанию используется для отображения интерфейса приложения Creatio.

Дополнительный язык (дополнительная языковая культура) — язык, который используется для отображения интерфейса приложения Creatio, был изменен в профиле пользователя и отличается от основного языка.

Чтобы изменить основной язык, необходимо выполнить его активацию. Активация языка интерфейса описана в статье Настроить язык интерфейса.

При настройке системы в мастерах разделов и деталей, дизайнерах процессов и кейсов, а также в разделе Переводы (Translation) используются все языки, которые установлены в системе. В других случаях используются только активированные языки (т. е. языки, для которых установлен признак Активен (Active). Такое разделение позволяет уменьшить время выполнения задач, например, вход в систему, открытие страницы записи и т. д. Подробнее читайте в статьях Настроить язык интерфейса и Перевести элементы интерфейса в разделе Переводы.

Типы локализуемых ресурсов, которые реализованы в Creatio:

  • Простые локализуемые ресурсы.
  • Привязанные локализуемые ресурсы.
  • Ключ локализуемого ресурса.

Отобразить локализуемые ресурсы 

При отображении локализуемых ресурсов учитываются:

  • Режим отображения.
  • Способ отображения.

Режимы отображения локализуемых ресурсов 

Режимы отображения локализуемых ресурсов, которые доступны в Creatio:

  • Режим дизайна (Design-time).
  • Режим выполнения приложения (Run-time).

При отображении локализуемых ресурсов учитывается иерархия пакетов.

Режим дизайна 

Назначение режима дизайна — отображение локализуемых ресурсов в дизайнерах и мастерах. В этом режиме иерархия локализуемых ресурсов схем конфигурационных элементов строится только до уровня пакета, в котором содержится схема с запрашиваемыми ресурсами. При построении иерархии учитываются локализуемые ресурсы пакетов, которые попадают в иерархию по прямым связям.

Рассмотрим отображение локализуемых ресурсов на примере ресурса ChildResource: ChildValue схемы ChildSchema пакета DependentPackage. Иерархия пакетов представлена на рисунке ниже.

Результирующие ресурсы для схемы ChildSchema в режиме дизайна:

  • BaseResource: BaseValue.
  • ChildResource: ChildValue.

В режиме дизайна в ресурсах не учитываются:

  • Ресурсы пакетов PackageWithReplacedResource1 и PackageWithReplacedResource2, поскольку эти пакеты не участвуют в построении иерархии.
  • Ресурсы пакетов PackageWithReplacedChildResource1 и PackageWithReplacedChildResource2, поскольку эти пакеты относительно запрашиваемой схемы находятся ниже в иерархии.

Если запрашивается схема с указанием стартового пакета (пакета, с которого необходимо начать сбор ресурсов), то результирующий набор ресурсов формируется до уровня запрашиваемого пакета.

Результирующие ресурсы для схемы ChildSchema до уровня пакета BottomPackage в режиме дизайна:

  • BaseResource: BaseValue.
  • ChildResource: ReplacedChildValue2.
  • ChildResource1: Value1.
  • ChildResource2: Value2.

Здесь значение ресурса ChildResource изменилось на ReplacedChildValue2, поскольку в пакетах, которые по иерархии находятся на уровень ниже (Level 2), было выполнено замещение исходного ресурса. При этом учитывается позиция и имя пакета — преимущество отдается пакету с большим значением позиции. Для сортировки пакетов с одинаковым значением позиции используется алфавитный порядок.

Режим выполнения приложения 

Назначение режима выполнения приложения — отображение локализуемых ресурсов в разделах приложения, за исключением дизайнеров и мастеров. Отличие режима выполнения приложения от режима дизайна — при запросе схемы в результирующем списке ресурсов учитываются ресурсы пакетов, которые не входят в иерархию.

Результирующие ресурсы для схемы ChildSchema в режиме выполнения приложения:

  • BaseResource: ReplacedBaseValue2.
  • Resource1: Value1.
  • Resource2: Value2.
  • ChildResource: ReplacedChildValue2.
  • ChildResource1: Value1.
  • ChildResource2: Value2.

Способы отображения локализуемых ресурсов 

Способы отображения локализуемых ресурсов, которые реализованы в Creatio:

  • Если в профиле пользователя выбран основной язык, то для отображения используется значение локализуемого ресурса на основном языке.
  • Если в профиле пользователя выбран дополнительный язык и присутствует значение локализуемого ресурса на дополнительном языке, то для отображения используется значение локализуемого ресурса на дополнительном языке.
  • Если в профиле пользователя выбран дополнительный язык и отсутствует значение локализуемого ресурса на дополнительном языке, то для отображения используется значение локализуемого ресурса на основном языке.

Классы, которые реализуют логику отображения локализуемых ресурсов:

  • Terrasoft.Common.LocalizableString — работа с локализуемыми строками.
  • Terrasoft.Common.LocalizableImage — работа с локализуемыми изображениями.

Свойства и методы, которые используются для получения значения локализуемого ресурса:

  • Value — свойство, которое возвращает значение локализуемого объекта для текущего языка. Если не найдено значение локализуемого объекта для текущего языка, то будет возвращено значение для основного языка.
  • HasValue — свойство, которое возвращает признак наличия значения локализуемого объекта для текущего языка. Если не найдено значение локализуемого объекта для текущего языка, то будет возвращено значение для основного языка.
  • GetCultureValue() — метод, который возвращает значение локализуемого объекта для текущего языка. Если не найдено значение локализуемого объекта для текущего языка, то будет возвращено значение для основного языка.
  • HasCultureValue() — метод, который возвращает признак наличия значения локализуемого объекта для запрашиваемого языка без учета основного языка.

Класс Terrasoft.Common.LocalizableString описан в Библиотеке .NET классов. Класс Terrasoft.Common.LocalizableImage описан в Библиотеке .NET классов.

Хранить локализуемые ресурсы 

В зависимости от типа локализуемого ресурса, хранение имеет свои особенности.

Хранить простые локализуемые ресурсы 

В качестве хранилищ простых локализуемых ресурсов используются:

  • База данных — хранит ресурсы, которые необходимы для работы приложения. Основное хранилище локализуемых ресурсов.
  • Хранилище SVN — хранит ресурсы, которые необходимо установить в приложение или перенести между средами разработки. Предварительно необходимо выполнить экспорт локализуемых ресурсов в хранилище SVN.

Хранить простые локализуемые ресурсы в базе данных 

Для хранения локализуемых ресурсов используется таблица [SysLocalizableValue] базы данных, в которой локализуемые ресурсы хранятся в текстовом формате в виде пар "ключ-значение". Каждая запись привязана к пакету и базовому идентификатору схемы.

Описание основных полей таблицы [SysLocalizableValue] базы данных приведено ниже.

Основные поля таблицы [SysLocalizableValue]
Колонка
Описание
[Id]
Идентификатор записи.
[SysPackageId]
Идентификатор пакета.
[SysSchemaId]
Идентификатор базовой схемы. Заполняется только для ресурсов конфигурации.
[ResourceManager]
Название менеджера ресурсов. Заполняется только для ресурсов ядра.
[SysCultureId]
Идентификатор языковой культуры.
[ResourceType]
Тип ресурса.
[IsChanged]
Признак изменения локализуемого ресурса пользователем.
[Key]
Ключ локализуемого ресурса.
[Value]
Значение строкового ресурса.
[ImageData]
Значение графического ресурса.

Если в профиле пользователя активной является дополнительная языковая культура, то при добавлении локализуемого ресурса в таблице [SysLocalizableValue] создается соответствующая запись. Пользователи других языковых культур имеют доступ к добавленному локализуемому ресурсу путем использования механизма дублирования в основную языковую культуру. Назначение механизма — создание аналогичной записи локализуемого ресурса со ссылкой на основную языковую культуру. Если в других языковых культурах не задано значение для текущего локализуемого ресурса, то будет отображаться значение, установленное в основной языковой культуре.

Для каждого набора ресурсов схемы в связке пакет — схема — культура в таблице [SysPackageResourceChecksum] базы данных хранится контрольная сумма, которая при обновлении пакета позволяет определить наличие изменений в его ресурсах. Благодаря использованию контрольной суммы ресурсы отделены от схем, что позволяет создавать пакеты переводов.

Хранить простые локализуемые ресурсы в хранилище SVN 

Для хранения локализуемых ресурсов пакета в хранилище SVN предназначен каталог Resources, который используется для создания пакета переводов. Пакет переводов — пакет, который содержит только локализуемые ресурсы и не содержит схем конфигурационных элементов. Пакет переводов может содержать локализуемые ресурсы для схемы, которая находится в другом пакете.

Для хранения локализуемых ресурсов схем с одинаковыми именами, но с разными менеджерами (например, Entity и ClientUnit), в имена локализуемых ресурсов пакета добавляются имена менеджеров схем без префикса SchemaManager. В экспортированных схемах локализуемые ресурсы хранятся в формате *.xml.

Хранить привязанные локализованные ресурсы 

Хранилища привязанных локализуемых ресурсов идентичны хранилищам простых локализуемых ресурсов.

Хранить привязанные локализуемые ресурсы в базе данных 

Для хранения привязанных локализуемых ресурсов используется таблица [SysPackageDataLcz] базы данных.

Описание основных полей таблицы [SysPackageDataLcz] базы данных приведено ниже.

Основные поля таблицы [SysPackageDataLcz]
Колонка
Описание
[Id]
Идентификатор записи.
[SysPackageSchemaDataId]
Идентификатор привязки в таблице [SysPackageSchemaData].
[SysCultureId]
Идентификатор языковой культуры.
[Data]
Привязанные локализуемые данные.

Особенности сохранения привязанных локализуемых ресурсов:

  • Если схема содержит привязанные локализуемые ресурсы, то данные сохраняются в таблицу [SysPackageDataLcz] базы данных.
  • Если схема не содержит привязанные локализуемые ресурсы, то данные сохраняются в таблицу [SysPackageSchemaData] базы данных.

Запись таблицы [SysPackageDataLcz] содержит:

  • Ссылку на соответствующий идентификатор записи в таблице [SysPackageSchemaData] базы данных.
  • Ссылку на идентификатор соответствующей языковой культуры в таблице [SysCulture] базы данных.

Например, если в системе используются английская и русская языковые культуры, то каждой записи таблицы [SysPackageSchemaData] соответствуют две записи в таблице [SysPackageDataLcz].

Хранить привязанные локализуемые ресурсы в хранилище SVN 

Для хранения привязанных локализуемых ресурсов пакета в хранилище SVN предназначен каталог Data.

Структура каталога Data:

  • Файл data.json — нелокализуемые ресурсы.
  • Каталог Localization — привязанные локализуемые ресурсы. Каталог содержит соответствующие файлы для языковых культур. Название файла: data.КодЯзыковойКультуры.json (например, data.en-US.json).

Структура хранения привязанных локализуемых ресурсов рассмотрена на примере схемы Periodicity пакета TryItPackage и отображена на рисунке ниже.

Установить привязанные локализуемые ресурсы 

Особенности установки привязанных локализуемых ресурсов:

  • Если схема не содержит привязанные локализуемые ресурсы, то установка выполняется в основную таблицу объекта Entity.
  • Если схема содержит привязанные локализуемые ресурсы (т. е. в таблице [SysPackageDataLcz] присутствуют соответствующие записи), то установка выполняется в основную таблицу базы данных соответствующей схемы и в таблицу локализации.

Шаблон формирования имени таблицы локализации: [SysИмяОсновнойТаблицыLcz].

Например, при установке привязанных локализуемых ресурсов для схемы ContactType:

  • Нелокализуемые данные будут установлены в таблицу [ContactType] базы данных.
  • Локализуемые данные будут установлены в таблицу [ContactType] и в таблицу [SysContactTypeLcz] базы данных.

На заметку. Для таблицы локализации, которая соответствует системной таблице (т. е. название начинается с префикса Sys), префикс Sys повторно не добавляется. Например, для таблицы [SysTestSchema] базы данных таблица локализации называется [SysTestSchemaLcz], а не [SysSysTestSchemaLcz].