How to Write World Ready Windows Phone Applications

Today's app user base isn't restricted to just one region. In this article, we walk through the platform support available for developers targeting Windows Phone to develop world ready Windows Phone applications.


Windows Phone has built-in support to build world ready applications. This is because of existing support for globalization and localization offered by Silverlight.

Before we dig into how we can build a globalized Windows Phone application, let us take a minute to understand what it means to be a truly globalized application.

A globalized application is one that can adapt to user's preference for date format, number format, etc. Built-in support for .NET Framework ensures that globalization is a relatively easy task for a Windows Phone application developer.

Globalization Support in Windows Phone

Windows Phone 7.5 "Mango " ( also referred to as Windows Phone OS 7.1) supports displaying in 22 cultures (16 more than the first version of Windows Phone (Windows Phone 7.0). The supported display cultures are - Chinese Simplified (zh-CN), Chinese Traditional (zh-TW), Czech (cs-CZ), Danish (da-DK), Dutch (nl-NL), English US (en-US), English UK, (en-GB), Finnish (fi-FI), French (fr-FR), German (de-DE), Greek (el-GR), Hungarian (hu-HU), Italian (it-IT), Japanese (ja-JP), Korean (ko-KR), Norwegian (nb-NO), Polish (pl-PL), Portuguese (pt-BR), Russian (ru-RU), Spanish (es-ES) and Swedish (sv-SE).

For sorting and formatting (for numbers, currency, time and date), application developers can piggyback on the CultureInfo class to use the built-in support, which already exists inside the .NET Framework.

Since Windows Phone platform distinguishes between Reading Fonts and UI Fonts, it is imperative that application developers design and test their application using both the fonts to ensure the application works properly. This is especially important in the Eastern Asian languages where the UI font is different from the Reading font.

To ensure that the character set is preserved when using the WebBrowser control, application developers need to include the right encoding metadata.

To properly represent the text in a WebBrowser control 昧昨昪昪, we need to represent it as below.

string content = <html><head><meta content="text/html; charset =utf-16"/></head><body>昧昨昪昪</body></html>;

Hands On

Let us create a very simple application, which support two locales (en-US and en-GB, which stands for US English and UK English).

Create a new Visual Studio Silverlight for Windows Phone project and call the solution WindowsPhoneGlobAppDemo.

Now in the default XAML page generated, add a couple of buttons (title them US and UK) and a couple of textblock and text boxes. Label each pair- one for date and another for currency).

In our simple globalized application, we will make sure that the controls representing date and currency are able to render the date and currency values in the right format depending on the region selected.

Now on the click event for the US button, add the following code

private void button1_Click(object sender, RoutedEventArgs e)
            CultureInfo currentCulture = new CultureInfo("en-US");
            Thread.CurrentThread.CurrentCulture = currentCulture;
            Thread.CurrentThread.CurrentUICulture = currentCulture;

Add a similar code for click event for the UK button; note that the CultureInfo object being generated is for the "en-GB" locale.

private void button2_Click(object sender, RoutedEventArgs e)
            CultureInfo currentCulture = new CultureInfo("en-GB");
            Thread.CurrentThread.CurrentCulture = currentCulture;
            Thread.CurrentThread.CurrentUICulture = currentCulture;

Finally, create the helper method UpdateContent whose job is to update the content after formatting it appropriately for the locale.

void UpdateContent()
            float currency = float.Parse("100.50");
            textBoxCurrency.Text = currency.ToString("c", NumberFormatInfo.CurrentInfo);
            DateTime date = DateTime.Now;
            textBoxDate.Text = date.ToShortDateString();

Now build and run your application.

If you are running into compilation issues, you can download a working copy of the source code below.

When we run the application and we click on the US button, we notice that the values for the currency and Date fields are formatted per the US locale.

Figure 1: Values for the currency and Date fields are formatted per the US locale

We have the currency with the "$' prefix and the Date in the mm/dd/yyyy format.

Now, if we click on the UK button, we see...

Figure 2: The currency is now prepended by pound

...that the currency is now prepended by pound. And the date is in DD/MM/YYYY format.

We are able to see that without writing any locate specific code, we were able represent the data in the right format corresponding to the region.

So what really happened?

When we clicked on the US and UK buttons, we asked the current thread to switch its locale. By changing the active locale, the date formatting and currency formatting was automatically changed to represent the currently selected locale. That is how we were able to see pounds and dollar signs.


In this article, we learned how we can build globalized Windows Phone applications using the CultureInfo class. I hope you have found the information useful.

This article was originally published on November 16th, 2011

About the Author

Vipul Vipul Patel

Vipul Patel is a Software Engineer currently working at Microsoft Corporation, working in the Office Communications Group and has worked in the .NET team earlier in the Base Class libraries and the Debugging and Profiling team. He can be reached at vipul_d_patel@hotmail.com


Most Popular Programming Stories

More for Developers

RSS Feeds

Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date