June 10th, 2008

Localizing a Silverlight application

VS Silverlight beta2 adjusted its build functionalities to support the new Silverlight runtime localization model, which essentially is โ€œone language, one xapโ€. This article provides the steps to take to build a localized app

Let us say, you want to localize your app for the culture of โ€œja-jpโ€. You have created several resource files and you want VS to pack the satellite assemblies into the .xap file.

clip_image002

1. In the solution explorer unload the Silverlight project and edit the project file. There is pre-created tag of โ€œSupportedCulturesโ€ in the first property group tag. Fill in the culture value of โ€œja-jpโ€, so you get โ€œ<SupportedCultures>ja-jp</SupportedCultures>โ€. Note, you can also fill in a culture list separated by โ€œ,โ€ or โ€œ;โ€ to support multiple cultures/languages in the same xap file. For example you can fill in a string of โ€œja-JP;fr-FRโ€. VS reads this list and only packs related satellite assembly folders.

clip_image004

2. Save the project file, reload it and then build it. You can open the .xap file generated under โ€œBinDebugโ€ to check out the content. You can see VS only packs the โ€œja-jpโ€ folder, but no โ€œjaโ€ folder since it is not in the culture list.

clip_image006

3. If you would like to create a new xap file for a new culture, say โ€œdeโ€, you need to create new build configuration in VS and insert the tag of โ€œ<SupportedCultures>de</SupportedCultures>โ€ into the related property group tag in the project file

clip_image008

The project file change looks like,

clip_image010

4. If you have a hosting web project, you are recommended to turn on the โ€œcopy to configuration specific foldersโ€ through the โ€œSilverlight Applicationsโ€ tab in webโ€™s property page dialog. Just click the โ€œChangeโ€ฆโ€ button. You can also enable it in the โ€œAdd Silverlight Applicationโ€ wizard when you create a new project. So different .xap files will stay underneath a separate subfolder, and they wonโ€™t overwrite each other.

clip_image012

clip_image014

0 comments

Discussion are closed.