Windows Phone 8.1 (WinRT) 本地化问题 (MakePRI)

Windows Phone 8.1 (WinRT) Localization Problems (MakePRI)

我对 WinRT-Apps 的本地化重新分级有疑问。 据我所知,系统是这样工作的:

字符串 ||资源

至此,这个文件夹结构在我的项目中实现了。 在我的 Package.appxmanifest"Default Language" 设置为 "en-US",所以从我的角度来看,一切都应该没问题,如果不支持语言,它应该回落到 "en-US",因为它设置在那里。 但是如果我编译这些东西,在 VS 的输出框中我会收到来自 MakePRI

的警告
2>MakePRI : warning 0xdef01051: No default or neutral resource given for 'Resources/String'. The application may throw an exception for certain user configurations when retrieving the resources.

我搜索到现在只找到了与MS的Advertising SDK相关的东西,我在我的项目中没有使用,所以问题应该不存在。

为什么 MakePRI 给我这条消息,我哪里错了?

此错误意味着您有一个名为 "String" 的本地化字符串,它未在您的默认 "en-US\Resources.resw" 文件中定义。 如果您查看 "de-DE\Resources.resw" 文件,您应该可以找到该条目。您必须将其报告给默认文件,如果不需要则将其删除。

非默认本地化文件中的所有字符串在默认语言文件中必须具有默认值。

仅作记录:我在构建 Windows 8.1 Store Universal App (Windows + Windows Phone) 时收到了同样的警告。我的项目包含一个包含图像的文件夹,这些图像用作地图上的精确标记。文件夹名称是

  • Assets/marker/yes/foo.png
  • Assets/marker/yes/bar.png
  • Assets/marker/yes/baz.png
  • ...
  • Assets/marker/no/foo.png
  • Assets/marker/no/bar.png
  • Assets/marker/no/baz.png
  • ...

yes/no 子文件夹中的分隔是特定于应用程序的。我的程序使用标记指示地图上某物的 presence/absence。

对于 Assets/marker 下的每个元素,我收到两次以下警告 - 一次针对 Windows 项目,另一次针对 Windows Phone 项目。

MakePRI : warning 0xdef01051: No default or neutral resource given for ...

根据 MakerPRI documentation,资源索引系统尝试识别文件夹和文件名中的语言标识符。我认为警告的原因是文件夹名称 "no"。 MakerPRI 将其解释为 "Norwegian" 并合理地抱怨我的项目包含一种语言可用但并非所有语言可用的资源。

我将文件夹名称 "no" 更改为其他名称,警告消失了。所以底线是人们应该 小心文件名和文件夹名,它们可能被误解为语言标签 。这是一个list of all available language tags.