在UWP app

时间:2015-09-26 21:19:32

标签: c# localization uwp

根据此视频https://www.microsoftvirtualacademy.com/en-US/training-courses/a-developer-s-guide-to-windows-10-12618收听Andy Wigley(查看其他资源 - >本地化),UPW应用程序仅下载所需的文化资源。

我正在编写一个使用资源文件的应用程序,不仅可以翻译UI,还可以为用户生成文件。用户可能希望生成不同于OS使用的文化的文件。我怎么能保证,例如如果我的系统在en-US,我将能用法语获得资源吗?

我可能会使用自己的XML文件,这些文件都将包含在应用程序中。但是在UI中也需要一些肯定的资源,所以我不想复制资源并且必须翻译两次。

2 个答案:

答案 0 :(得分:2)

如果您不想将资源分成可单独下载的软件包,那么您根本不需要。构建应用程序包时,您可以选择永远不创建包,因此所有资源都包含在主包中。

请参阅https://msdn.microsoft.com/en-us/library/hh454036.aspx创建应用包中的第6步,但选择" never"而不是"总是"。

答案 1 :(得分:2)

Rob的回答对于一个新的应用程序非常有用,但它对我不起作用,因为我已经将该应用程序的先前版本作为捆绑包发布。如果您然后尝试切换到非捆绑包,则商店提交门户会提供错误:

  

此应用程序的先前提交已使用Windows 10 appxbundle发布。后续提交必须继续包含Windows 10 appxbundle。

在对构建系统进行逆向工程之后,我找到了足够的线索来发现这个隐藏得很好的文档:https://msdn.microsoft.com/en-us/library/dn482043.aspx

按照那里的步骤,您仍然会创建一个捆绑包,但工具链不会使用 Language 作为限定符来分隔不同的包。换句话说,中性包将包含其中的所有语言,同时仍然捆绑 Scale (或任何你喜欢的)的卫星包。

如果MSDN页面消失,那么您可以在msbuild文件中覆盖<AppxBundleAutoResourcePackageQualifiers>以删除Langauge限定符:

<AppxBundleAutoResourcePackageQualifiers>Scale</AppxBundleAutoResourcePackageQualifiers>