Localization and What Goes on Behind the Scenes

Many of you may not know that Expression Blend (and the entire Expression Studio) is available in eight languages other than English. In fact, we just released them earlier today! Here is a small screenshot of Expression Blend running Japanese:


My name is Marco, and I help to create the versions of these products that ship in Japanese, German, Korean, French, Italian, Spanish, and Chinese (simplified and traditional).  Creating the international versions of our products is a challenging process that requires several steps, so let’s take a brief look through them in this post.

In order to create our international versions, we first need to be sure our products are globalized so that they can be adapted to different markets around the world where we sell our products.  Once our products are globalized properly, we test them via a pseudo localization process.  In this process, we introduce different kinds of characters into our UI strings to ensure that our application behaves as we expect it to regardless of which character set is used.

To see why, let’s look at the strings in the English version of the Expression Blend options dialog:


Notice the size of the various text fields and how much space each piece of text takes. Now, let’s look at the corresponding Japanese version:


Notice that in the Japanese version, the amount of space your text takes up varies a bit from the English version. This is important, because, as a designer/developer of an app that needs to be localized, you need to ensure that any control that stores localizable strings will still look OK when the strings inside them are of various sizes as you see above. This is where pseudo localization comes in handy. While we may not have the exact translated strings to use, we have a good idea of whether the user interface can handle the text of various sizes when the pseudo localization process throws random text of various sizes.

Once we are convinced that our code is fully localizable, I work with our developers to isolate all of the visible user interface strings within the application.  This includes all of the menus, dialogs, error messages, etc.  If a string can be seen in the UI, then I need to be able to access it.  I then work with software localization specialists to translate the UI strings.

After the strings get translated, we create the localized versions of our applications.  These applications are then tested for both linguistic accuracy as well as functional quality.

As you know, we are always looking for feedback on our products, and this includes our international versions.  Feel free to leave a comment here if you have used any of the localized versions of Expression, or if there is something more you would like to see from our international versions.

Alternately, feel free to contact me directly at marcoda[at]microsoft.com.


Marco D’Amico

Comments (9)

  1. Many of you may not know that Expression Blend (and the entire Expression Studio) is available in eight

  2. Many of you may not know that Expression Blend (and the entire Expression Studio) is available in eight

  3. slyi says:

    Do you use locbaml or resx based loc in blend?

  4. langmuir says:

    I have used Expression Studio(ES) 1 that ship in Chinese.

    It is a perfect work.

    I wish the application can switch different language just via one option.

    The ES does not support Capture,I can not use English-Chinese electronic dictionary software.

  5. Rob Burke says:

    Same question as slyi — could you tell us a bit more about your localization pipeline?

  6. Kirupa (MS) says:

    slyi / Rob – since Marco is actually on vacation this week, I asked Pete Blois, and he mentioned that we use Locbaml.

  7. Eric Lacroix says:

    Same as for me we are in the process to migrate several app to WPF and we are looking forward for the best localization practice (Desing and translate), and we are also looking for wysiwyg tooling. We find out sisulizer and ligobit but I did get to mutch time to try them in fact I will need to request some of our translator to test drive those products.

  8. Hi together,

    I prefer to use a custom markup extension to localize my WPF applications. I can pass a key to identify the resource as parameter to my markup extension and it looks up the value in any kind of dictionary you like. You can use classic .resx files of XML or even WPF ressource dictionaries located in satelite assemblies.

    You can find an example here: http://www.wpftutorial.net/LocalizeMarkupExtension.html



Skip to main content