Localizing Management Pack Content

Many customers of Service Manager use the product in a non-English language and in some cases customers will deploy Service Manager into an environment where many users of the same installation of Service Manager will use the product in different languages.To enable localization of solutions built for Service Manager, the management pack (MP) schema provides a special section just for localization.You can put localization strings in for any number of different languages into a single MP or you can create a base MP and MPs which depend on that base MP which contain just localization strings (e.g. base, Japanese, Russian, etc.).This blog post will explain some of the basics of localizing MPs for Service Manager.

Whenever you create an object in an MP using the Service Manager console, the names and descriptions that you provide are stored in the language pack section of the MP which corresponds to the language of the console that you are using.For example, if you are using the console in Japanese to create a Group and provide a name in Japanese the name will be stored in the Japanese language pack in the management pack.If other people that are using a Russian console look at your Group they won’t see a name because you only provided a Japanese one.Note: English is the “fallback” language.For example, if you have provided a name for your group in only English and Japanese and the person is using a Russian console they will see the English name since no Russian name was provided.

To illustrate how this is done, let’s work with a concrete example.Let’s say you are creating some a new option for the Incident Classification drop down.You are using an English console.You want your colleagues in Russia to also see these options when they are using the incident form in their native language.Here is how you do that…

First, create the new list item in the UI and provide an English display name and description.You can do this from the ‘Authoring’ workspace in the main console.

Next, export out the MP which contains the new item you just created from the Management Packs view in the Administration workspace – in this case it is the Incident Management Configuration MP.Hint: one easy way to find which MP has your new item is to sort the Management Packs view by the Last Modified column.

Open the MP XML file in an XML editor like XMLSpy, Notepad++, Visual Studio, or even just Notepad will work fine.

First of all, if you search for ‘<EnumerationValue’ you will find the section that contains the list items in that MP and the new list item you have created.It will probably have an ID with a GUID (without the braces and hyphens) in it so that it is unique.In this case the new list item I created has an ID of Enum.843e5d2b2f3941d882c6a5f4834e19a3.

Next, you’ll notice towards the bottom of the MP there is a section called ‘LanguagePacks’ and a section within called ‘LanguagePack’ that has been created for Language=”ENU”.ENU here corresponds to the three letter locale code.

[Updated 6/16/2011] – Here is the list of codes for all the langauges currently in SCSM 2010 SP1:

Within each ‘LanguagePack’ there is a series of ‘DisplayString’ elements, one for each MP element in your MP that you need to present a display string for in the UI.MP elements could be things like groups, tasks, classes, list items [this example], views, etc.Each display string points to the MP element it is used for by referencing the elements ID property in the DisplayString ElementID property.In this example notice how the DisplayString ElementID attribute value is the same as the EnumerationValue ID attribute value.Each DisplayString has a Name and a Description element.The content of these elements is limited to 4000 characters.

Notice how the ElementID attribute value points to the same EnumerationValue ID attribute value. Also notice how the IsDefault attribute is set to false since the Russian language pack will not be the default.

So – the complete language pack section of this MP looks like this now:

<LanguagePacks>

<LanguagePackID=“ENU“IsDefault=“true“>

<DisplayStrings>

<DisplayStringElementID=“Enum.843e5d2b2f3941d882c6a5f4834e19a3“>

<Name>Password Expired</Name>

<Description>Use this incident classification for all cases where the user’s password has expired and must be reset.</Description>

The final step is to re-import your MP into Service Manager.You can repeat this process for any number of MP elements and any number of language packs.

There are other aspects of localization in Service Manager such as form content localization, self-service portal localization, and notification templates that we will go into in future blog posts.

Also, please keep in mind that Service Manager itself and all of the process management packs that come with it from Microsoft will be localized “out of the box” into many different languages.You will just need to localize any new content that you add if you are using Service Manager in an organization which has users which communicate in multiple languages.

Here is the list of languages that we plan to release Service Manager in:

English

German

French

Japanese

Spanish

Korean

Simplified Chinese

Traditional Chinese

Russian

Italian

Portuguese (Brazil)

[Updated March 22, 2010:] In addition to the above list we plan to also localize the entire product into the following languages. The timeframe for this will be announced later.

Tags

Join the conversation

In SP1 (coming very soon) we will be adding support for the following languages:

Czech

Danish

Finnish

Swedish

Greek

Dutch

Norwegian

Portuguese (Portugal)

Polish

Unfortunately there were some issues with translating into Turkish so that is delayed.

Localizing into Arabic requires some more substantial changes to the product to make it localiz-able because Arabic is a "bi-di" language. At this time we don't have a plan to share publicly about when that will happen.

The french portal and the english portal shows different category, and we want all the category to be all in English. Is it ok to just change the <Name> __ <Name> to what I wanted, and import the MP back?

For example: change <Name>Problèmes de réseau</Name> modifed to <Name>Network</Name>