Today, we will examine certification requirement 6.5: “You must localize your app for all languages that it supports”. Here is the description of this requirement from the certification requirements page:
“Your app can only support Windows Store allowable languages, and at least one of those languages must be a certification language. The experience provided by an app must be reasonably similar in all languages that it supports.
You must provide a complete description of your app for your customers in each language that you declare in your app’s package. The other elements of your app’s description, such as screenshots, text and promotional images, must be localized. If your app is localized such that some features are not available in a localized version, you must clearly state or display the limits of localization in the app description.”
OK! Localization can be tricky, so let’s walk through some of the common gotchas.
First of all, this requirement deals with languages, not markets. Language support and market distribution are two different things. (For example, you can submit an app in Spanish to sell in the US market; many people in the US speak Spanish although it is not the official language.) You specify languages inside of your app package (the default language is in your app manifest), and you specify markets when you submit to the Windows Store (under “Selling Details”):
So, how do you provide different language options properly in your app?
- Set your default language in the Package.appxmanifest (in the “Application UI” tab).
- Create a “Strings” folder in your project to hold all of the different resource files, and a subfolder under that for each language. This will keep your project neat and organized, and it uses this structure to find the correct resources.
- Right-click on a language folder and select "Add New Item" to add a resource file for a language. This file may be a .resx, .resw, .resjson – see the quickstarts for the specifics, based on what language you are coding in.
- Add the items that you want to translate in your resources file. Again, see the quickstarts for specifics.
- Associate your controls with resources and add string resource identifiers to your code/markup.
Next, there are some other common “gotchas” that can cause this certification requirement to fail.
- The app’s metadata provided during the submission process on the Description page (such as its description, features, keywords, or screen shots) is either missing or doesn’t match the languages defined in your application. For example, you may accidentally provide a description in English for the Chinese version of the app.
- Don’t forget to provide localized screen shots! This one has tripped up a lot of folks.
- The app must support one of the certification languages. That is the subset of languages for which we have testers to confirm that your app meets the certification requirements.
- Make sure that the app is functional and complete for all of the languages that you claim. If any claimed language support is incomplete, this requirement will fail.
Finally, let me provide some good localization resources:
Globalizing your app – *really* useful collection of links to various how-to documentation and quickstarts
Choosing your languages – documents the supported languages for the Windows Store
How to manage language and region – explains the steps for multi-language support in your app
Guidelines and checklist for globalizing your app – describes best practices for globalization and localization
How to use the Multilingual App Toolkit – this toolkit integrates with Visual Studio 2012 to provide Windows Store apps with translation support, translation file management, and localization editing tools
This concludes the blog post series on common Windows Store certification failures. I hope it was useful!
Other blog posts in this “Common Windows Store Certification Failures” series: