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-DE
或 de-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");
}
我的应用程序的一小部分用户只在德国 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-DE
或 de-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");
}