Creatio development guide
PDF
This documentation is valid for Creatio version 7.10.0. We recommend using the newest version of Creatio documentation.

Localizable resource structure and use

Glossary Item Box

Introduction

Starting with version 7.8.3, the storage location of localized package resources has changed. In previous versions, the resources were stored in the SysSchemaResource table as BLOB data. Now, the localized resources are stored in the SysLocalizableValues table in text form.

For each set of schema resources in the package-schema-culture bundle, the checksum is stored in the SysPackageResourceChecksum table, which allows you to quickly determine if there are any changes to the package resources when updating the package. The checksum allowed for resources to be separated from schemas, enabling users to create translation packages.

Storing resources

Resource storage structure

The resources have been moved from schemas to a package, enabling users to create translation packages. To store schema resources with the same name, but with different managers (e.g. Entity and ClientUnitSchema), the names of the schema managers with the prefix "SchemaManager" clipping were added to the resource package names.

Fig. 1. Storing resources in a package

A package can contain resources for a schema that is defined in another package. In addition, the package can contain resources without containing schemas ("translation package").

The SysLocalizableValue table

The resources are stored in the SysLocalizableValue table for every localizable string or image. Each record is bound to the package and the base schema identifier. The main fields of the SysLocalizableValue table are listed in Table 1.

Table 1. The main fields of the SysLocalizableValue table

Column name Description
Id Record identifier.
ImageData Graphic resource value.
IsChanged A checkbox for specifying if the resource has been changed.
Key Resource key.
ResourceManager Resource manager name. Populated only for core resources.
ResourceType Resource type.
SysCultureId Culture identifier.
SysPackageId Package identifier.
SysSchemaId Base schema identifier. Populated only for configuration resources.
Value String resource value.

Schema import and export

The format for storing resources in exported schemas has also changed. Now the resources in the exported schemas are stored in XML format.

Working with localizable resources

Updating the package from the repository

By using the new resource storage mechanism, all changes to localized resources are displayed when the package is updated (Fig. 2).

Fig. 2. Displaying resources when updating a package

Possible resource states:

  • [Modified] – the resource was changed.
  • [Added] – a new resource has been added.
  • [Deleted] – a resource has been deleted.
  • [Conflict] – a resource was modified and fixed in SVN when another developer was working on it.

Committing a package to storage

When the package is committed, all changes to the localized resources are also displayed in the repository (Fig. 3).

Fig. 3. Displaying resources when a package is committed

Conflicts when a package is committed and updated

It is not currently possible to block resources in the application. If the developer modifies the schema resources, and the package has already been modified and the same resources have been modified in it, they will see a list of those resources with the [Conflict] state. This means that the version and contents of the resources modified by the developer do not match the version and contents committed in SVN. When the developer commits again, their modifications will block the modifications committed in SVN. Such conflicts must be resolved manually in SVN clients (e.g. Tortoise).

Fig. 4. Displaying conflicts when updating a package

Editing resources in the file system.

Editing resources directly is available starting with version 7.8.3. To do this, you need to upload them to the file system (e.g. with Tortoise), and then make changes and commit to SVN.

ATTENTION

For each resource value in the SysLocalizableValue table, there is only one record with the corresponding references to SysPackageId, SysSchemaId, SysCultureId, and a specific Key value. Therefore, when you commit a resource with the [Conflict] state, the table will write the last value.

Updating resources with a direct SQL query to the database

If you change the SysLocalizableValue table value with an SQL query, you must also change the value of the IsChanged column in the SysPackageResourceChecksum table for the corresponding schema. Otherwise, when the package is updated, the application will not detect a conflict.

You can not add data to the SysLocalizableValue table with a direct SQL query, because there is no information about the added resources in the corresponding schema metadata.

© bpm'online 2002-2017.

Did you find this information useful?

How can we improve it?