Xbox (UWP) 上的本地化问题

Localization issue on Xbox (UWP)

我的应用程序的一小部分用户只在德国 Xbox 上出现错误。英文用户和PC用户都可以。

我的代码如下所示:

Uri fileName = new Uri("ms-appx:///Assets/Content/MyData.json");
StorageFile myFile = await StorageFile.GetFileFromApplicationUriAsync(fileName);
IBuffer buf = await FileIO.ReadBufferAsync(myFile);

这是从应用程序启动时的 App.xaml.cs OnLaunched 事件调用的:

protected override async void OnLaunched(LaunchActivatedEventArgs e)

对于少数不幸的人来说,ReadBufferAsync 语句会导致 element not found 错误:

System.Exception: Element nicht gefunden. (Exception from HRESULT: 0x80070490)

一个用户好到重新安装了应用程序,并且发生了同样的错误,所以它似乎是持久性的,这不是启动或安装问题的时间问题。

Json 文件存储在我项目中的这些文件夹中,用于我支持的两种语言:

\Assets\Content\language-de\MyData.json
\Assets\Content\language-en\MyData.json

我怀疑问题与 UWP 本地化有关,因为它似乎并没有发生在英语用户身上,而英语用户是我的大多数用户。我自己无法复制这个。如果我将 PC 上的区域设置更改为 de-DEde-CH,它可以正常工作并以德语显示内容。

感谢 AppCenter 报告和一位用户花时间给我发电子邮件,我才知道这个问题。

我可以做些什么来解决或解决这个问题,或者至少如何获得有关问题的更多信息的任何想法。我不确定 element not found 错误在这种情况下意味着什么。

尝试了几种不同的方法,但没有用。 Xbox 上的开发者内容本地化似乎存在问题。字符串本地化工作正常。

作为一种解决方法,我最终实现了自己的逻辑以 select 正确的文件,而不是依赖于 Microsoft 资源管理器:

Uri fileName = new Uri("ms-appx:///Assets/Content/MyData.english.json");

string topUserLanguage = GlobalizationPreferences.Languages[0];

//override default file if german language is detected                
if(topUserLanguage.StartsWith("de"))
{
    fileName = new Uri("ms-appx:///Assets/Content/MyData.german.json");
}