Локализуемые ресурсы — ресурсы, которые используются для отображения интерфейса приложения 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] создается соответствующая запись. Пользователи других языковых культур имеют доступ к добавленному локализуемому ресурсу путем использования механизма дублирования в основную языковую культуру. Назначение механизма — создание аналогичной записи локализуемого ресурса со ссылкой на основную языковую культуру. Если в других языковых культурах не задано значение для текущего локализуемого ресурса, то будет отображаться значение, установленное в основной языковой культуре.
Для каждого набора ресурсов схемы в связке пакет — схема — культура в таблице [SysPackageResourceChecksum] базы данных хранится контрольная сумма, которая при обновлении пакета позволяет определить наличие изменений в его ресурсах. Благодаря использованию контрольной суммы ресурсы отделены от схем, что позволяет создавать пакеты переводов.
Хранить простые локализуемые ресурсы в хранилище SVN
Для хранения локализуемых ресурсов пакета в хранилище SVN предназначен каталог Resources, который используется для создания пакета переводов. Пакет переводов — пакет, который содержит только локализуемые ресурсы и не содержит схем конфигурационных элементов. Пакет переводов может содержать локализуемые ресурсы для схемы, которая находится в другом пакете.
Для хранения локализуемых ресурсов схем с одинаковыми именами, но с разными менеджерами (например, Entity и ClientUnit), в имена локализуемых ресурсов пакета добавляются имена менеджеров схем без префикса SchemaManager. В экспортированных схемах локализуемые ресурсы хранятся в формате *.xml.
Хранить привязанные локализованные ресурсы
Хранилища привязанных локализуемых ресурсов идентичны хранилищам простых локализуемых ресурсов.
Хранить привязанные локализуемые ресурсы в базе данных
Для хранения привязанных локализуемых ресурсов используется таблица [SysPackageDataLcz] базы данных.
Описание основных полей таблицы [SysPackageDataLcz] базы данных приведено ниже.
Особенности сохранения привязанных локализуемых ресурсов:
- Если схема содержит привязанные локализуемые ресурсы, то данные сохраняются в таблицу [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] базы данных.