Localizing Management Pack Content

Localizing Management Pack Content

  • Comments 4
  • Likes

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.

List Editor

 

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.

Export MP 

 

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

  

  

  

 

  

  

  

  

  

  

  

 

 

  

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Any more specific timeframe when will be Czech localization available?

    Thank you in advance,

    Antonin

  • Is there any chance to localize in Arabic ? Are you planning it for any up coming release ?

  • 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.

  • Hello Travis,

    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>

    <DisplayString ElementID="IncidentClassificationEnum.Networking">

             <Name>Problèmes de réseau</Name>

             <Description>Cette liste recense les problèmes liés au réseau</Description>

           </DisplayString>

    LanguagePack ID="FRA" IsDefault="false">

         <DisplayStrings>

           <DisplayString ElementID="ServiceManager.IncidentManagement.Configuration">

             <Name>Bibliothèque de configuration de la gestion des incidents de Service Manager</Name>

             <Description>Bibliothèque de configuration de la gestion des incidents de Service Manager</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentTierQueuesEnum.Tier1">

             <Name>Niveau 1</Name>

             <Description>Niveau 1</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentTierQueuesEnum.Tier2">

             <Name>Niveau 2</Name>

             <Description>Niveau 2</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentTierQueuesEnum.Tier3">

             <Name>Niveau 3</Name>

             <Description>Niveau 3</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.Email">

             <Name>Problèmes de courrier électronique</Name>

             <Description>Cette liste recense les problèmes liés à Outlook et Exchange</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.Networking">

             <Name>Problèmes de réseau</Name>

             <Description>Cette liste recense les problèmes liés au réseau</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.Printing">

             <Name>Problèmes d'impression</Name>

             <Description>Cette liste recense les problèmes liés aux imprimantes</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.Software">

             <Name>Problèmes de logiciel</Name>

             <Description>Cette liste recense les problèmes liés aux logiciels</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.Hardware">

             <Name>Problèmes de matériel</Name>

             <Description>Cette liste recense les problèmes liés au matériel</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.CIOverride">

             <Name>Problèmes liés aux données de configuration</Name>

             <Description>Cette liste recense les problèmes liés aux données de configuration</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.EnterpriseApplications">

             <Name>Problèmes liés aux applications d'entreprise</Name>

             <Description>Cette liste recense les problèmes liés aux applications d'entreprise</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentClassificationEnum.Other">

             <Name>Autres problèmes</Name>

             <Description>Cette liste recense tous les autres problèmes</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentResolutionCategoryEnum.Cancelled">

             <Name>Annulé</Name>

             <Description>Annulé</Description>

           </DisplayString>

           <DisplayString ElementID="IncidentResolutionCategoryEnum.FixedByAnalyst">

             <Name>Résolu par l'analyste</Name>

             <Description>Résolu par l'analyste</Description>

           </DisplayString>