Reference: Localization and Globalization in Cireson Portal

Introduction

Localization is the technique and technology involved in displaying text and dates/times in a language and format that is familiar to the user.  The Cireson Portal is designed to be a single platform that can display and format content for users from different languages and regions.  This knowledge article describes the options available to administrators and users to configure the Cireson Portal for display languages and date/time formats.

Languages

Out of the box the Cireson Portal and System Center Service Manager are fully translated as follows:

Code

Supported in SCSM

Supported in Cireson Portal

Arabic

ARA

Yes

Yes

Chinese (Hong Kong)

ZHH

Yes

No

Chinese (Simplified)

CHS

Yes

Yes

Chinese (Traditional)

CHT

Yes

No

Czech

CSY

Yes

Yes

Danish

DAN

Yes

Yes

Dutch

NLD

Yes

Yes

English (Default)

ENU

Yes

Yes

Estonian

ETI

No

Yes

German

DEU

Yes

Yes

Greek

ELL

Yes

No

Finnish

FIN

Yes

Yes

French

FRA

Yes

Yes

Hungarian

HUN

Yes

Yes

Italian

ITA

Yes

Yes

Japanese

JPN

Yes

Yes

Korean

KOR

Yes

Yes

Latvian

LVI

No

Yes

Lithuanian

LTH

No

Yes

Norwegian

NOR

Yes

Yes

Polish

PLK

Yes

Yes

Portuguese (Brazil)

PTB

Yes

Yes

Portuguese (Portugal)

PTG

Yes

No

Romanian

ROM

No

Yes

Russian

RUS

Yes

Yes

Slovak

SKY

No

Yes

Slovenian

SLV

No

Yes

Spanish

ESN

Yes

Yes

Swedish

SVE

Yes

Yes

Thai

THA

No

Yes

Turkish

TRK

Yes

Yes

Administrator Configuration of Language Options

During the installation of the the installing user can choose which languages will be available for users to choose from. 

The language chosen as the default language will be the language that all users see content in unless the user has a preference for a different language:

 

The installing user can also choose to add additional languages which users can choose from:

 

During these selections will be stored as a list in the SettingsItem table in the database.  You can view the languages chosen in the SettingsItem table by running a query like this:

SELECT [Key],Value FROM SettingsItem WHERE [Key] = 'LanguageCode'

After installation the LanguageCode setting can be changed in two ways:

Note: After changing the LanguageCode the should be restarted.

Languages can be added or removed by changing the list of language codes.  See the table above for the list of supported language codes.  Note: The first language code listed is the default language code.

User Selection of Preferred Language

Each user can choose a preferred language by going to User Settings in the upper right menu.

This choice is stored in the database in the UserPreferences table:

If desired, an administrator can pre-configure these user preferences for language or date/time format by creating a SQL script that creates a row in this table for each user.  The preferences are stored in JSON format.

Note: Any display string in the  Cireson Portal can be overridden in any language.  See How to Override a Localization Display String for more details.

 

Date/Time Format

Configuring the date/time format is essentially the same as choosing the language.  At install time, the administrator chooses which date/time format options to have including setting a default:

The administrator can also choose to have additional date/time format codes:

Below are the date/time formatting codes available:

AFK Afrikaans

CHT Chinese (Traditional) Legacy

FUL Fulah

ITA Italian

MAR Marathi

PAN Punjabi

SNA Shona

UIG Uyghur

AMH Amharic

COS Corsican

FYN Frisian

IUK Inuktitut

MKI Macedonian

PAS Pashto

SOM Somali

UKR Ukrainian

ARA Arabic

CRE Cherokee

GLA Scottish Gaelic

IUK Inuktitut (Latin)

MLG Malagasy

PLK Polish

SOT Southern Sotho

URD Urdu

ASM Assamese

CSY Czech

GLC Galician

IUS Inuktitut (Syllabics)

MLT Maltese

PRS Dari

SQI Albanian

UZB Uzbek

AZC Azerbaijani (Cyrillic)

CYM Welsh

GRN Guarani

IVL Invariant Language

MNG Mongolian (Traditional Mongolian)

PTB Portuguese

SRB Serbian

VIT Vietnamese

AZE Azerbaijani

DAN Danish

GSW Alsatian

JAV Javanese

MNN Mongolian (Cyrillic)

QUB Quechua

SRM Serbian (Latin)

WOL Wolof

AZE Azerbaijani (Latin)

DEU German

GUJ Gujarati

JPN Japanese

MON Mongolian

QUT K'iche'

SRO Serbian (Cyrillic)

XHO isiXhosaYOR Yoruba

BAS Bashkir

DIV Divehi

HAU Hausa

KAL Greenlandic

MPD Mapudungun

RMC Romansh

SVE Swedish

ZHG Standard Morrocan Tamazight

BEL Belarusian

DSB Lower Sorbian

HAU Hausa (Latin)

KAT Georgian

MRI Maori

ROM Romanian

SWK Kiswahili

ZHG Standard Morrocan Tamazight (Tifinagh)

BGR Bulgarian

ELL Greek

HAW Hawaiian

KDI Kannada

MSL Malay

RUS Russian

SYR Syriac

ZUL isiZulu

BNG Bangla

ENU English - US

HEB Hebrew

KHM Khmer

MWK Mohawk

SAH Sakha

TAJ Tajik

 

BOB Tibetan

ENG English - UK

HIN Hindi

KIN Kinyarwanda

MYA Burmese

SAN Sanskrit

TAM Tamil

 

BRE Breton

ENA English - Australia

HRV Croatian

KKZ Kazakh

MYM Malayalam

SIN Sindhi

TEL Telugu

 

BSB Bosnian

ESP Spanish

HSB Upper Sorbian

KNK Konkani

NEP Nepali

SIN Sinhala

THA Thai

 

BSB Bosnian (Latin)

ETI Estonian

HUN Hungarian

KOR Korean

NLD Dutch

SKY Slovak

TIR Tigrinya

 

BSC Bosnian (Cyrillic)

EUQ Basque

HYE Armenian

KUR Central Kurdish

NON Norwegian (Nynorsk)

SLV Slovenian

TRK Turkish

 

CAT Catalan

FAR Persian

IBO Igbo

KYR Kyrgyz

NQO N'ko

SMB Sami (Southern)

TSN Setswana

 

CHS Chinese

FIN Finnish

III Yi

LAO Lao

NSO Sesotho sa Leboa

SME Sami (Northern)

TSO Tsonga

 

CHS Chinese (Simplified)

FOS Faroese

IND Indonesian

LBX Luxembourgish

OCI Occitan

SMK Sami (Lule)

TTT Tatar

 

CHS Chinese (Simplified) Legacy

FPO Filipino

IRE Irish

LTH Lithuanian

ORI Odia

SMN Sami (Inari)

TUK Turkmen

 

CHT Chinese (Traditional)

FRA French

ISL Icelandic

LVI Latvian

ORM Oromo

SMS Sami (Skolt)

TZM Tamazight

 

Users can then choose a preferred date/time setting from the User Settings available in the upper right menu:

 

User preferences for date/time formatting are also stored in the UserPreferences table in the database similar to the user's language preference.

Service Catalog Language Code

When creating a service offering in the SCSM console you can choose a service offering language:

The default value is to not have a language code specified.

When the service catalog content is copied to the database by the Cireson Cache Builder the service offering language code is stored in the LanguageCode column on the ServiceOffering table.  Depending on the language selected the code will be either a two or a language code.  Here is an example:

When installing the Cireson Portal, the installing user can choose to specify a service catalog language code:

The default is an asterisk (*) which will match all service offerings regardless of language code.  If you want to only display service offerings (and their contained request offerings) of a certain language you can enter a different value in this textbox such as 'en-US'.  This value is stored in the SettingsItem table in the database.  Just as with the LanguageCodes setting, the ServiceCatalogLanguageCode can be set either in the SettingsItem table directly by following this KB article - Editing or Adding a Settings Item in ServiceManagement DB -  or in version 3.7 or higher you can use the Settings Item view in Admin Settings to change the value.  For a particular Cireson Portal instance, you can override the ServiceCatalogLanguageCode stored centrally in the SettingsItem table by creating an appSetting in the web.config for that web site instance.  For example:

Service Catalog Localization

In Service some things are localizable such as class names, property names, enumeration values, and much more.  Those items have a unique ID and a display string for each language that Service Manager supports.  Some things in Service Manager are not localizable and only have a single display string which is shown all languages.  Two examples of these things that are not localizable are service offerings and request offerings.  The service offering category enumeration is localizable though.  Thus, we have a taxonomy like this:

  • Service Offering Category - an enumeration which is localizable

  • Service Offering - not localizable

  • Request Offering - not localizable

When an administrator is creating service offering categories in the Service Manager console the display strings that are created are created in the language that the SCSM console is currently running as.  For example, if a user opens the SCSM console using the English language and creates service offering category enumerations and provides a display string for each of those, whatever the user enters will be stored as the English display string value.  Whatever the user enters will be stored as the display string.  Thus, if the user is running the console in English and enters display string values in Finnish, the Finnish display string values will be stored as the English display string values.  If the administrator wants to create Finnish display string values, the administrator should open the SCSM console in the Finnish language and then create the enumerations and provide the Finnish display strings.  Unlike the service offering category enumerations, because service offerings and request offerings only have a single non-localizable display string value, it does not matter which language the administrator is running the SCSM console as.

Localizing Service Offering Category Enumerations

One common configuration issue that can happen is that the administrator has defined service offering category enumeration values in one language (normally English) and not others OR the administrator is running the SCSM console in English and enters display strings in a different language and doesn't realize that those display strings are being stored as the English display strings.  When the service catalog data is synchronized to the DB by the Cireson Cache Builder and then loaded into the Cireson Portal the English display string values exist, but the display strings for the other language do not.  If the user then changes his language code to the language that the display strings do not exist for, the user will see a blank service catalog.  In this situation, the user could look at the F12 developer panel on the Console tab and see an error like this: Uncaught TypeError: Cannot read property 'replace' of null.  This is an indication that the display strings for the service offering enumerations for the language the user chose do not exist.

You can check the display strings for your service offering enumerations and add display strings for other languages by doing the following.

If you already know which management pack your service offering category enumerations are in you can export that management pack from the SCSM console Administration\Management Packs view and skip to step #3.

Install SMLets on management server.  Open a PowerShell window and enter Import-Module SMLets.

  • Run the following command:  Get-SCSMEnumeration | ?{$_.DisplayName -eq 'the display name of one of the service offering category enumerations'}.  Example: Get-SCSMEnumeration | ?{$_.DisplayName -eq 'Datacenter'}

  • If you get back just one result then you can run this command to export the management pack that contains that enumeration: (Get-SCSMEnumeration | ?{$_.DisplayName -eq 'Datacenter'}).GetManagementPack() | Export-SCManagementPack -TargetDirectory C:\Temp

  • Now open the management pack in a text editor and search for 'LanguagePacks'.  In this situation, you will likely see a single LanguagePack with the ID="ENU".  If this is the only LanguagePack element then you need to create a new LanguagePack for your desired language.  In this example, we will create one for Finnish.  

 

  • Copy the element and everything that it contains down to and including the closing element.

  • Paste the in immediately after the English closing element.

  • Change the ID from "ENU" to "FIN" (or whatever language code you would like).  Change the IsDefault attribute to "false".  At this point, it should look like this:

  • If needed, translate the DisplayString elements in your new language pack from English to Finnish (or your desired language).

  • Increment the version number near the top of the pack file. Example:

  • Save the file.

  • Import the management pack back into SCSM.

  • Restart the Cireson Cache Builder service.

More information can be found on the SCSM engineering team blog about localizing management pack content.

Service Catalog Content Selected by User's Preferred Language

You can choose to have the user's language preference be used to select service catalog content.  The user's preferred language is set by the user in User Settings (upper right menu).  The language preference will be a three letter code such as 'ENU', 'FRA', etc.  If the user has not specified a preference, then the first language code specified in the LanguageCode setting will be used.  The LanguageCode setting can be seen on the Admin Settings page > click on Setting Items at the bottom of the page > look for 'LanguageCode' in the list of settings.

The user's language code preference (or default) is used to get the service offering category enumeration display strings.  If there are no matching display strings for the user's preferred language then the service offering category display names will simply not be shown. 

The user's language code preference (or default) can also be used to filter the service offerings and their contained request offerings.  Because service offering language codes are either a 2 or 4 letter language code (ex. 'EN' or 'EN-US' and a user's language preference is a 3 letter language code (ex. 'ENU') there must be a mapping of 3 letter codes to 2 and 4 letter codes.  This is done by using the Language lookup table in the database.  It contains a default mapping of 3 letter codes to 4 letter codes as follows:

CHT > -TW
CHS > -CN
CSY > cs-CZ
DAN > da-DK
DEU > de-DE
ELL > el-GR
ENU > en-US
ESN > es-ES
FIN > fi-FI
FRA > fr-FR
HUN > hu-HU
ITA > it-IT
JPN > -JP
KOR > ko-KR
NLD > -NL
NOR > nb-NO
PLK > pl-PL
PTB > pt-BR
PTG > pt-PT
RUS > ru-RU
SVE > -SE
TRK > tr-TR
ZHH > -HK

You can optionally choose to insert additional language mappings into the table by running a query like this in the ServiceManagement DB:

INSERT INTO Language (ISO639x, CultureCode, DisplayName, LanguageCultureName) VALUES ('ENU', '', 'English-Any', 'EN')

The above example query will create a mapping of ENU > EN.

To change the configuration of the Cireson Portal to use the logged in user's language preference as a filter for the service catalog, you will need to change the ServiceCatalogLanguageCode setting to something besides '*'.  You can change this setting by logging in as administrator.  Then, navigate to the upper right menu, select Admin Settings, scroll to the bottom of the page and click the Setting Items button, and then find the ServiceCatalogLanguageCode.  You can change this to one of three options:

Option

Description

*

Select all service catalog content regardless of the user's preferred language and regardless of the service offering language code.

!

Select only the service offerings (and contained request offerings) that have a language code that maps to the user's preferred language code

OR where the service offering language code is NUL

OR where the service offering language code is an empty string.

a particular language code (ex. 'EN-US')

Select only the service offerings (and contained request offerings) that have a language code that maps to the user's preferred language code

OR where the service offering language code is NULL

OR where the service offering language code is an empty string

OR where the language code matches the setting value

You can also make this change directly in the database by following the Editing or Adding a Settings Item in ServiceManagement DB KB article.

Note: you can make a given service offering and it's contained request offerings be displayed to any user regardless of the user's preferred language code by setting the ServiceOfferingLanguageCode setting to '!' and not specifying a language code for the service offering.

Overriding Display Strings

  • A localization is translated content provided with the portal.

  • A localization override is system-wide setting that will override a given translation.

For example, users of the system that have selected "English" as their language in their User Settings page, would see these buttons at the bottom of the page:

Whereas a user that has selected "Spanish" would see:

However, if you provide an override for the save button label, they would instead see:

 

To create an override, log in to your portal as an admin, and select "Localizations" from the menu at the upper right:

 

  • Select the appropriate locale (e.g. language) that would like to provide the override for.

  • Find the key you would like to override (hit Control + F and search the page).

  • Click the cell in the Override column.

  • Type in whatever you want the override to be.

  • Click "Save" at the bottom of the page.

  • Restart the web site.



As a best practice, use an override, instead of just changing the translation, because the translation could be changed by us at some point (as part of our normal development process), but you'll always keep your overrides.

Localizing Enumerations

When creating new enumerations or editing enumerations in the Enumeration Settings you can specify a display string for each enumeration.

  • as an administrator.

  • In the upper right menu choose Enumeration Settings.

  • Select an enumeration list that you want to edit.

  • In the editor choose an enumeration value and on the you can specify a value for each language.

  • Click Save when you are done.

  • Restart the web site.

Note: If you do not provide a display string for a given enumeration for a given language the display string will be set to 'undefined' as a default.

Updating the Localization Content Manually

When a new version of the Cireson Portal is released the localization strings are simultaneously included as part of the installer for that version.  In some cases, localization strings may be modified or added in between releases.  In this case, you may be instructed by Cireson Support to update your localization strings manually.  Here are the steps to do that:

Localizing Custom Navigation

If you add custom navigation nodes to the navigation, you may want to localize the display strings for those navigation nodes.  This can only be done through database updates for now.  The following steps describe the procedure:

First, you need to determine the ID of the navigation node that you want to localize.  You can do this using the following query: 

SELECT *FROM DisplayString
WHERE DisplayStringOverride='The Name of the Navigation Node'

Note: Replace the text 'The Name of the Navigation Node' with the name of the navigation node that you want to localize.

Copy the ElementID GUID value from the results.  You will use it in the following stored procedure call.

EXEC spAdd_DisplayString'7850848B-6C10-471A-9FDC-BF8F4BA045F4','FRA','French Display String Value',NULL

The first parameter is the GUID of the navigation node that you copied from the first query.  The second parameter is the language code that you want to create the display string value for.  See the language code list at the top of this article for the full list of language codes.  The third parameter is the localized display string value want to display in the navigation for that language.  The fourth parameter is the GUID ID of the user that is creating this display string.  You can pass NULL for convenience instead of spending time looking up the user ID.

If necessary, repeat the above steps for other language codes.

Once you have completed making the changes, they will be reflected the next time users log in to the Cireson Portal.