在 UWP 应用程序中使用资源文件的所有文化版本
Use all culture versions of resources files in UWP app
根据 Andy Wigley 在该视频中的说法 https://www.microsoftvirtualacademy.com/en-US/training-courses/a-developer-s-guide-to-windows-10-12618(查看其他资源 -> 本地化),UPW 应用仅下载他们需要的文化资源。
我正在编写一个使用资源文件的应用程序,不仅可以翻译 UI,还可以为用户生成文件。用户可能希望生成与 OS 使用的文化不同的文件。我怎么能保证,例如如果我的系统是 en-US 我将能够获得法语资源?
我可能会使用自己的 XML 文件,所有这些文件都将包含在应用程序中。但是 UI 中肯定也需要一些资源,所以我不想重复这些资源而不得不翻译它们两次。
如果您不想将资源分离到可单独下载的包中,则不需要。当您构建应用程序包时,您可以选择从不创建捆绑包,以便所有资源都包含在主包中。
请参阅在 https://msdn.microsoft.com/en-us/library/hh454036.aspx 创建应用程序包中的第六步,但选择 "never" 而不是 "always"。
Rob 的回答对于一个新的应用程序来说非常有用,但它对我不起作用,因为我已经将以前版本的应用程序作为捆绑包发布了。如果您随后尝试切换到非捆绑包,商店提交门户会给出错误:
A previous submission for this app was released with a Windows 10 appxbundle. Subsequent submissions must continue to contain a Windows 10 appxbundle.
在对构建系统进行了太多的逆向工程之后,我找到了足够的线索来发现这个隐藏得很好的文档:https://msdn.microsoft.com/en-us/library/dn482043.aspx
按照那里的步骤,您仍然会创建一个捆绑包,但工具链不会使用 Language 作为分隔不同包的限定符。换句话说,中性包将包含所有语言,同时仍然捆绑 Scale(或任何你喜欢的)卫星包。
万一 MSDN 页面消失,重点是您可以覆盖 msbuild 文件中的 <AppxBundleAutoResourcePackageQualifiers>
以删除 Langauge
限定符:
<AppxBundleAutoResourcePackageQualifiers>Scale</AppxBundleAutoResourcePackageQualifiers>
根据 Andy Wigley 在该视频中的说法 https://www.microsoftvirtualacademy.com/en-US/training-courses/a-developer-s-guide-to-windows-10-12618(查看其他资源 -> 本地化),UPW 应用仅下载他们需要的文化资源。
我正在编写一个使用资源文件的应用程序,不仅可以翻译 UI,还可以为用户生成文件。用户可能希望生成与 OS 使用的文化不同的文件。我怎么能保证,例如如果我的系统是 en-US 我将能够获得法语资源?
我可能会使用自己的 XML 文件,所有这些文件都将包含在应用程序中。但是 UI 中肯定也需要一些资源,所以我不想重复这些资源而不得不翻译它们两次。
如果您不想将资源分离到可单独下载的包中,则不需要。当您构建应用程序包时,您可以选择从不创建捆绑包,以便所有资源都包含在主包中。
请参阅在 https://msdn.microsoft.com/en-us/library/hh454036.aspx 创建应用程序包中的第六步,但选择 "never" 而不是 "always"。
Rob 的回答对于一个新的应用程序来说非常有用,但它对我不起作用,因为我已经将以前版本的应用程序作为捆绑包发布了。如果您随后尝试切换到非捆绑包,商店提交门户会给出错误:
A previous submission for this app was released with a Windows 10 appxbundle. Subsequent submissions must continue to contain a Windows 10 appxbundle.
在对构建系统进行了太多的逆向工程之后,我找到了足够的线索来发现这个隐藏得很好的文档:https://msdn.microsoft.com/en-us/library/dn482043.aspx
按照那里的步骤,您仍然会创建一个捆绑包,但工具链不会使用 Language 作为分隔不同包的限定符。换句话说,中性包将包含所有语言,同时仍然捆绑 Scale(或任何你喜欢的)卫星包。
万一 MSDN 页面消失,重点是您可以覆盖 msbuild 文件中的 <AppxBundleAutoResourcePackageQualifiers>
以删除 Langauge
限定符:
<AppxBundleAutoResourcePackageQualifiers>Scale</AppxBundleAutoResourcePackageQualifiers>