Common Windows Store certification errors: 6.5 App must be localized

Windows StoreThis week, I am writing a blog post series explaining the most common certification failures when submitting an app to the Windows Store. I began the series with some general guidance and overall tips & tricks.  Then, every day this week, I discussed a common Windows Store certification failure, including 1.2 Fully Functional, 3.8 Performance, and 4.1 Privacy Policy

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”):

Markets in Selling Details

So, how do you provide different language options properly in your app? 

In short, you follow a naming convention in your folder hierarchy. Here's a link that explains how to name properly. There is another helpful "how to" article here and two quickstarts to walk you through it in Javascript and XAML.

Specifically, look through the quickstarts (using the above links) for the step-by-step walkthrough. It is slightly different in JavaScript vs. XAML, but the overall steps are:

  1. Set your default language in the Package.appxmanifest (in the “Application UI” tab).
  2. 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.
  3. 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.
  4. Add the items that you want to translate in your resources file. Again, see the quickstarts for specifics.
  5. Associate your controls with resources and add string resource identifiers to your code/markup.

There are also a high-level list of steps here and an application resources and localization sample available in C#, JavaScript, C++, and VB.NET. 

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

Application resources and localization sample – download code sample in C#, JavaScript, C++, or VB.NET

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:

General tips & tricks and resources

1.2 App must be fully functional

3.8 App must meet the basic performance criteria

4.1 App must comply with privacy requirements

6.5 App must be localized