Localizing Management Pack Content
Published Feb 14 2019 09:33 PM 505 Views
First published on TECHNET on Jul 24, 2009

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:


CHS - Chinese (Simplified)
CHT - Chinese (Traditional)
CSY - Czech
DAN - Danish
DEU - German
ELL - Greek
ENU - English
ESN - Spanish
FIN - Finnish
FRA - French
ITA - Italian
JPN - Japanese
KOR - Korean
NLD - Dutch
NOR - Norwegian
PLK - Polish
PTB - Portuguese (Brazil)
PTG - Portuguese
RUS - Russian
SVE - Swedish
TRK - Turkish


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.


<ManagementPack ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<Manifest>


<Identity>


<ID>ServiceManager.IncidentManagement.Configuration</ID>


<Version>7.0.5026.0</Version>


</Identity>


<Name>Incident Configuration Management</Name>


</Manifest>



... some content removed for readability ...



<TypeDefinitions>


<EntityTypes>


<EnumerationTypes>


<EnumerationValue ID="Enum.843e5d2b2f3941d882c6a5f4834e19a3" Accessibility="Public" Parent="CoreIncident!IncidentClassificationEnum" Ordinal="1" />


</EnumerationTypes>


</EntityTypes>


</TypeDefinitions>



... some content removed for readability ...



<LanguagePacks>


<LanguagePack ID="ENU" IsDefault="true">


<DisplayStrings>


<DisplayString ElementID="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>


</DisplayString>


</DisplayStrings>


</LanguagePack>


</LanguagePacks>


</ManagementPack>


What we want to do now is add a Language Pack for Russian since it doesn’t exist yet and then add display strings for this new list item.


<LanguagePack ID="RUS" IsDefault="false">


<DisplayStrings>


<DisplayString ElementID="Enum.843e5d2b2f3941d882c6a5f4834e19a3">


<Name>Истек срок действия пароля</Name>


<Description>Используйте эту классификацию для инцидентов, в которых необходимо сбросить истекший пароль пользователя</Description>


</DisplayString>


</DisplayStrings>


</LanguagePack>


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>


<LanguagePack ID="ENU" IsDefault="true">


<DisplayStrings>


<DisplayString ElementID="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>


</DisplayString>


</DisplayStrings>


</LanguagePack>


<LanguagePack ID="RUS" IsDefault="false">


<DisplayStrings>


<DisplayString ElementID="Enum.843e5d2b2f3941d882c6a5f4834e19a3">


<Name>Истек срок действия пароля</Name>


<Description>Используйте эту классификацию для инцидентов, в которых необходимо сбросить истекший пароль пользователя</Description>


</DisplayString>


</DisplayStrings>


</LanguagePack>


</LanguagePacks>


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.



Swedish



Dutch



Finnish



Danish



Norwegian



Czech



Polish





Portuguese (Portugal)



Greek



Turkish



























Version history
Last update:
‎Mar 11 2019 08:14 AM
Updated by: