none
Enable multi language descirptions in the Windows Store for a Unity game packed as an app bundle

    Question

  • Hi everyone

    We have developed a Unity game that is targeted to the Windows 8 platform. Initially, it was English only. So we encountered no problems placing the app in the store. We uploaded this package as an ‘app bundle’.

    Now we reached the point we have multiple language support. This part is actually handled by the Unity part, so we don’t really need anything in the Visual Studio project.
    I found you can change the app manifest file with adding languages to the <Resource> node in the XML view. When building it not as an ‘app bundle’, the Store will pick up the languages and give the possibility to fill in the descriptions of the defined languages. But because the initial upload was an ‘app bundle’, we can’t upload a non-‘app bundle’. When I create an ‘app bundle’, the languages I declared in the app manifest won’t show in the description part of the store.

    Digging into the ‘app bundle’ file by giving it the .zip extension, I found out the AppxBundleManifest only mentions the default declared language. It changes when I change my default language.

    So I can’t figure out how I can add multiple languages to the AppxBundleManifest. I can't alter this file because it's in the zip based file. Maybe there doesn’t need to change something in this file, but we need to be able to provide the descriptions in the store for all our supported languages. And at the moment, I can only see the default language in the store backend.

    I hope someone can help us out.

    Sincerely,
    Omnivision Studios

    Monday, March 10, 2014 9:20 AM

Answers

  • I found a solution to the problem.

    To get languages mentioned in your AppxBundleManifest, you need to create dummy Resources (.resw) files.

    A resources file is created as follows: Right-click your project and select 'Add new item...'. With 'Visual C#' selected in the left column, search in the middle column for 'Resources file (.resw)'. This will create a Resources.resw file in your solution explorer.

    Next thing to do is to create a folder where you want to place your dummy resources files. I created a folder called 'dummy'. Here, you create a new folder and give it the 2 letter abbreviation for a language (if you want to target special versions of languages, then you need the 4 letter abbreviation, like en-us). The first one you probably want to create is an 'en' folder. Place the Resources file in this folder.

    The next step is to copy/paste this 'en' folder whithin the 'dummy' folder as many times as you need languages. Then rename each folder to a language you are supporting. (e.g. you want English, French and Dutch. Make 3 folders renamed to en, fr and nl).

    If you package this app as an 'app bundle', the AppxBundleManifest will now have the resources files mentioned as <Package Type="resource" ....><Resources><Resource Language="ja"/></Resources></Package> for each language. If you upload this package, the Windows Store will give you pages to fill in descriptions for each mentioned language.

    Pros and cons
    Con: you have added files that have no function for the program itself. The more languages, the more bytes are wasted. The file to upload will get (a little bit) bigger.
    Pro: - you now can fill in the description for each language in the Windows Store.
    - Because of how app bundles work, a store user will only get the 'wasted bytes' from his own language.

    Thursday, March 13, 2014 8:11 AM

All replies

  • I found a solution to the problem.

    To get languages mentioned in your AppxBundleManifest, you need to create dummy Resources (.resw) files.

    A resources file is created as follows: Right-click your project and select 'Add new item...'. With 'Visual C#' selected in the left column, search in the middle column for 'Resources file (.resw)'. This will create a Resources.resw file in your solution explorer.

    Next thing to do is to create a folder where you want to place your dummy resources files. I created a folder called 'dummy'. Here, you create a new folder and give it the 2 letter abbreviation for a language (if you want to target special versions of languages, then you need the 4 letter abbreviation, like en-us). The first one you probably want to create is an 'en' folder. Place the Resources file in this folder.

    The next step is to copy/paste this 'en' folder whithin the 'dummy' folder as many times as you need languages. Then rename each folder to a language you are supporting. (e.g. you want English, French and Dutch. Make 3 folders renamed to en, fr and nl).

    If you package this app as an 'app bundle', the AppxBundleManifest will now have the resources files mentioned as <Package Type="resource" ....><Resources><Resource Language="ja"/></Resources></Package> for each language. If you upload this package, the Windows Store will give you pages to fill in descriptions for each mentioned language.

    Pros and cons
    Con: you have added files that have no function for the program itself. The more languages, the more bytes are wasted. The file to upload will get (a little bit) bigger.
    Pro: - you now can fill in the description for each language in the Windows Store.
    - Because of how app bundles work, a store user will only get the 'wasted bytes' from his own language.

    Thursday, March 13, 2014 8:11 AM
  • It's very important to add at least one "dummy" value to this .resw files. I spent a few hours not knowing why my manifest is not populated correctly. The rest of this solution works great.
    Saturday, September 13, 2014 6:00 AM
  • Thanks for solution, it works!

    I would like to add that if you build Universal 8.1 App you should edit Package.appxmanifest file and replace "<Resource Language="x-generate" />" line with your languages.

    Also you can create dummy resources files only in Shared solution.

    Sunday, January 31, 2016 10:53 AM