Creatio development guide
PDF
Это документация Creatio версии 7.16.0. Мы рекомендуем использовать новую версию документации.

Работа с локализуемыми ресурсами конфигурации. Реализация мультиязычия

Glossary Item Box

Общие сведения

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

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

Отображение ресурсов с учетом иерархии

Существует два режима построения ресурсов для схемы: режим дизайна (Design-time) и режим выполнения приложения (Run-time).

Режим дизайна (Design-time)

Данный режим используется для отображения ресурсов в дизайнерах и мастерах. При этом ресурсы для схем строятся только до уровня пакета, в котором находится схема, для которой запрашиваются ресурсы. Также не учитываются ресурсы пакетов, которые не попадают в иерархию по прямым связям. Например, для схемы ChildSchema (рис. 1) результирующие ресурсы будут такими:

  • BaseResource: BaseValue;
  • ChildResource: ChildValue.

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

Рис. 1. — Пример иерархии пакетов

Исключением является случай, когда запрашивается схема с указанием пакета, от которого нужно собирать все ресурсы. Тогда результирующий набор ресурсов будет сформирован до уровня запрашиваемого пакета. Например, ресурсы для схемы ChildSchema до уровня пакета BottomPackage будут выглядеть так:

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

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

Режим выполнения приложения (Run-time)

Данный режим отвечает за отображение ресурсов во всех разделах системы кроме дизайнеров. Механизм построения ресурсов в этом режиме в целом очень похож на механизм, используемый в режиме дизайна. Главным отличием является то, что при запросе схемы в результирующем списке ресурсов будут присутствовать еще и ресурсы из пакетов, не входящих напрямую в иерархию. Например, если будут запрашиваться ресурсы схемы ChildSchema, то результат будет следующим:

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

Отображение ресурсов по умолчанию

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

Этот механизм реализован в классах Terrasoft.Common.LocalizableString (представляет локализуемую строку) и Terrasoft.Common.LocalizableImage (представляет локализуемое изображение). Эти классы содержат следующие свойства и методы для получения локализованного значения:

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

Хранение ресурсов

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

Хранение ресурсов в БД

Ресурсы хранятся в таблице базы данных SysLocalizableValue в виде ключ-значение для каждой локализуемой строки или изображения. Структура таблицы SysLocalizableValue приведена в разделе "Структура хранения ресурсов" статьи "Структура и использование локализуемых ресурсов".

Сохранение ресурсов по умолчанию

Если ресурс создается пользователем, который находится в культуре, отличающейся от культуры по умолчанию, для ресурса будет создана запись, соответствующая пользовательской культуре. Чтобы пользователи других культур также могли видеть этот ресурс, используется механизм дублирования в основную культуру. То есть будет создана аналогичная запись ресурса, но со ссылкой на культуру по умолчанию. Соответственно, новое значение ресурса будет отображаться во всех других культурах, если в них не задано своего значения для этого ресурса, как описано выше в разделе "Отображение ресурсов по умолчанию".

Хранение ресурсов в системе контроля версий и файловой системе

Для переноса между приложениями ресурсы хранятся в отдельной папке пакета — Resources. Особенности хранения ресурсов в системе контроля версий и в файловой системе подробно описаны в разделе "Структура хранения ресурсов" статьи "Структура и использование локализуемых ресурсов".

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?