Localization support for custom integrations
- Last UpdatedApr 15, 2025
- 3 minute read
Localization for Custom Integrations are now supported. Custom Integrations are available in the Procedure Builder>> List Manager section of the Management Center.
The localization for the Custom Integrations, where the UI rendering is driven from the database, is based on the XML column PropertyBagDefinition from the table ISMGT_APP_Type. For Localization, the following tables in the database are used.
o ISMGT_App_Type
o SAT_ResourceGroups
o SAT_InvariantResources
o SAT_Languages
o SAT_Resources
To support localization, you need to consider the following points:
- Define the strings as ‘Key’ and ‘Value’ in the database.
- The Key is defined in XML format. The key will contain the prefix ‘Label’ and will be stored in the ‘SAT_InvariantResources’ table.
- The Value for the key will be stored in the ‘SAT_Resources ’ table.
- The “Combobox” controltype does not support localization. Therefore, you must use “LocalizedCombobox”.
- The Value (DataItem) in English will be considered as the Key and will be stored as key in the SAT_InvariantResources table.
- The Value for the corresponding language needs to be stored in the SAT_Resources table.
For example, in the following XML, Controltype is LocalizedCombobox. DataItem values “Yes” and “No” needs to be stored in the SAT_InvariantResources table. The value for the corresponding language should be stored in the SAT_Resources table.
Example:
Consider the following example, where you want to localize the ‘UserName’ and the value in the Combo box.
<PropertyBag>
<ItemLabel="UserName"ControlType="TextBox"MaxLength="25"PropertyBagAttributeName="CustomTagHostName"ToolTip="Enter the User Name."/>
<ItemLabel="TrueFalse"ControlType="ComboBox"PropertyBagAttributeName="truefalse">
<DataItemValue="True"/>
<DataItemValue="False"/>
</Item>
</PropertyBag>
To localize the strings, you will:
<PropertyBag>
<ItemLabel="Label_UserName"ControlType="TextBox"MaxLength="25"PropertyBagAttributeName="UserName"ToolTip="ToolTip_Label_UserName"/>/>
<ItemLabel="TrueFalse"ControlType="LocalizedComboBox"PropertyBagAttributeName="TrueFalse">
<DataItemValue="True"/>
<DataItemValue="False"/>
</Item>
</PropertyBag>
SAT_ResourceGroups
· Create Resource Group for the custom integration.
|
Id |
Application |
Name |
Description |
|
19 |
IMC |
App_Type_UI from ISMGT_App_Type table |
Description for the Custom Integration |
o Id:Autogenerated value. It should be used as ResourceGroupId to store keys in SAT_InvariantResources table
o Application:Value should be “IMC”
o Name:Value from theApp_Type_UI column in ISMGT_App_Type table should be stored.
o Description:Short description about the Custom Integration
SAT_InvariantResources
· Store the Keys for the custom integration
|
Id |
ResourceGroupId |
Name |
AlwaysUseInvariant |
Comment |
|
176 |
19 |
Label_UserName |
0 |
NULL |
|
177 |
19 |
Tooltip_Label_UserName |
0 |
NULL |
o Id:Autogenerated value. It should be used as InvariantResourceId to store values in SAT_Resources table
o ResourceGroupId:Value from the Id column in SAT_ResourceGroups table.
o Name:Store the Keys identified from the PropertyBag definition column. Each key should be entered in a new row
o AlwaysUseInvariant:Value should be 0
o Comment:Provide short description about the key or keep it as NULL
Note: Key “AppTypeName” should be entered by default to store the Custom Integration Name which will be displayed in the UI.
SAT_Languages
- Fetch the Language Id for which the localization needs to be configured.
- Language Id can be fetched based on the LanguageName column.
SAT_Resources
|
Id |
InvariantResourceId |
LanguageId |
Value |
OverrideValue |
|
901 |
176 |
1 |
UserName |
NULL |
|
902 |
177 |
1 |
Enter the User Name |
NULL |
o Id:Autogenerated value.
o InvariantResourceId:Value from the Id column in SAT_InvariantResources table.
o LanguageId:Value from the Id column in SAT_Languages table.
o Value:Store the Values for the corresponding keys.
o OverrideValue:Storeit as NULL
Note: Value for the key “AppTypeName” should be entered by default for each language.
Sample Database Script
· The following is a sample script:
DECLARE @Application nvarchar(20), @ResourceGroupName nvarchar(100), @ResourceDescription nvarchar(100)
SET @Application= 'IMC'
SET @ResourceGroupName='APP_Type_UI'
SET @ResourceDescription = 'Custom Integration'
IF NOT EXISTS(SELECT * FROM SAT_ResourceGroups WHERE Application = @Application and name = @ResourceGroupName)
BEGIN
INSERT INTO SAT_ResourceGroups (Application, name, Description) VALUES (@Application, @ResourceGroupName, @ResourceDescription)
END
DECLARE @ResourceGroupId int, @LanguageId int
SELECT @ResourceGroupId = Id FROM SAT_ResourceGroups WHERE Application = @Application and name = @ResourceGroupName
DECLARE @ResourceData TABLE (languageID int, ResourceName nvarchar(100), ResourceValue nvarchar(max))
SELECT @LanguageId= Id FROM SAT_Languages WHERE LanguageName='en-US'
IF @LanguageId IS NOT NULL AND @ResourceGroupId IS NOT NULL
BEGIN
INSERT INTO @ResourceData VALUES(@LanguageId, N'AppTypeName', N'Custom Integration Name')
INSERT INTO @ResourceData VALUES(@LanguageId, N'Label_UserName', N'User Name:')
END