WSA Build - Languages supported by your packages

Hi!

I’m creating a build for WSA for Windows Store 10 and XBOX.
I support several languages but on my build from Unity, when uploading to Microsoft Store, “Languages supported by your packages” only shows English.

Does anyone know what changes I need to make to the build to make it recognize the other languages?

Thanks

In “Package.appxmanifest” file, there’s this section:

  <Resources>
    <Resource Language="x-generate" />
  </Resources>

You can replace it with a list of languages you support. You can find more information about it here: Understand user profile languages and app manifest languages - Windows apps | Microsoft Learn

1 Like

I did what you said and followed all the steps in the tutorial, but it still didn’t work.

 <Resources>
    <Resource Language="en-US" />
    <Resource Language="pt-BR" />
    <Resource Language="FR" />
    <Resource Language="DE" />
    <Resource Language="NL" />
    <Resource Language="zh-CN" />
  </Resources>

After generating the App Bundle, if I unzip it and check the “AppxBundleManifest.xml” it will only contain the

I searched on google, and I found that we need also to add .resx files for each language, even if it’s blank. But the generated project is in C++ IL2CPP, and it doesn’t allow adding .resx files.

Has anyone managed to do this and have any tips on what else I need to do?

Can you elaborate how it is not letting you add those files?

It’s weird that the manifest thing wasn’t enough, it used to work in the past. Does the AppXManifest.xml also not contain the right language tags?

Right clicking and clicking on “Add New Item” on the Resulting Project (or the Solution), does not give the options to select “Resource File” .resx

No, it doesn’t.

  <Resources>
    <Resource Language="EN-US"/>
  </Resources>

I found some reports on the internet saying that if you don’t generate “App Bundle” when generating “App Packages” the languages work. But I can’t disable it, because my game is already online and the first build I uploaded as AppBundleand and it no longer allows to change.

Hmm, it gives the option for me: 7536911--930845--upload_2021-9-30_15-32-6.png

Try editing the .vcxproj with a text editor and adding it manually:

  <ItemGroup>
    <EmbeddedResource Include="Resource.resx" />
  </ItemGroup>

It has a different name “Assembly Resource File” instead of only “Resource File”… Now I added everything…

7537100--930875--upload_2021-9-30_21-54-59.png

But after uploading it, still doesn’t work. Only English.

7537100--930881--upload_2021-9-30_21-57-18.png

Unity generates the project file with this tag:

<DefaultLanguage>en-US</DefaultLanguage>

Perhaps try removing it from the .vcxproj and see if it changes anything?

If I remove it, I cannot create the package anymore

.
Error        Error info: error 80080204: App manifest validation error: Line 15, Column 4, Reason: The manifest must specify at least one Resource element with a Language attribute.    FishWitch Halloween    E:\Games\Builds\WSA\FishWitch Halloween - Full\FishWitch Halloween\MakeAppx

Sorry it’s been a busy week, I haven’t been able to test this locally yet. What happens if you try pressing this button on the store page?
7556239--934378--upload_2021-10-7_22-51-28.png

It will add the new language as a new “Additional Store Listing Language”
7556962--934564--upload_2021-10-8_8-19-24.png

But after publishing, the Store will be localized in these languages, but the Language Supported will still only show “English (United States)”

7556962--934567--upload_2021-10-8_8-22-32.png

I figured it out. You were right, it was related to the “bundle” setting. I was able to reproduce this by trying to submit my own package to the Windows store that is supposed to support several languages. Turns out, when you generate a bundle, it tries to separate separate languages into separate “app slices”. But since your localization is within Unity project rather than Visual Studio, it doesn’t find any language files and only creates a bundle for “default language”, which is set to en-US.

From Make your app localizable - Windows apps | Microsoft Learn

Since disabling bundle creation is not an option for you, we can follow the advice given in Windows 8.1 Store apps: Ensure that resources are installed on a device regardless of whether a device requires them | Microsoft Learn. It’s actually pretty simple, you just need to add these two lines to the .vcxproj file next to the tag:

    <AppxBundleAutoResourcePackageQualifiers>DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
    <AppxDefaultResourceQualifiers>Language=EN-US;FR;DE;ZH-CN;NL;PT-BR</AppxDefaultResourceQualifiers>

Note, that AppxDefaultResourceQualifiers must match the languages specified in the appxmanifest or your project will fail to build. With this, all the languages should appear in the Windows Store submission page, and you don’t even need any .resx files. Hope this helps :).

1 Like

By the way, I submitted a test app to the Windows Store using the technique above and I can confirm that it works.

1 Like

Finally! It worked! Thanks a lot for the info!

7570018--937303--upload_2021-10-13_16-14-23.png

To summarize:

Text edit the Package.appxmanifest file and change from

  <Resources>
    <Resource Language="x-generate" />
  </Resources>

To the languages your game supports.

  <Resources>
          <Resource Language="en-us" />
          <Resource Language="fr" />
          <Resource Language="de" />
          <Resource Language="nl" />
          <Resource Language="pt-br" />
          <Resource Language="ja" />
  </Resources>

Then edit the vcxproj of your project and before the add this (using the same language codes from before) :

    <AppxBundleAutoResourcePackageQualifiers>DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
    <AppxDefaultResourceQualifiers>Language=EN-US;FR;DE;JA;NL;PT-BR</AppxDefaultResourceQualifiers>

Okay, now just generate the build and send it to the store and all the languages your game supports will appear as expected. =)

3 Likes