本地化是使应用程序适合特定区域性的过程。 此过程涉及使用正确的日期和货币格式将用户界面(UI)文本转换为区域特定的语言、调整窗体上的控件大小以及根据需要从右向左镜像控件。
本地化应用程序会导致创建一个或多个附属程序集。 每个程序集都包含特定于给定区域性的用户界面字符串、图像和其他资源。 (应用程序的主可执行文件包含应用程序默认文化设置的字符串。)
本主题介绍针对其他文化部署 ClickOnce 应用程序的三种方法:
在单个部署中包含所有卫星程序集。
为每个文化生成一个部署,每个文化中都包含一个卫星程序集。
按需下载附属程序集。
在部署中包含所有卫星程序集
您可以发布一个包含所有附属程序集的 ClickOnce 部署,而不是选择发布多个 ClickOnce 部署。
此方法是 Visual Studio 中的默认值。 若要在 Visual Studio 中使用此方法,无需执行任何其他工作。
若要将此方法用于 MageUI.exe,必须将应用程序的区域性设置为 中性MageUI.exe。 接下来,您必须手动将所有的卫星程序集包括在部署中。 在 MageUI.exe中,可以在应用程序清单的“文件”选项卡上使用“填充”按钮添加卫星程序集。
此方法的优点是,它会创建单个部署并简化本地化部署情景。 在运行时,将使用相应的附属程序集,具体取决于用户 Windows 操作系统的默认文化设置。 此方法的一个缺点是,每当在客户端计算机上安装或更新应用程序时,它都会下载所有卫星程序集。 如果应用程序具有大量字符串,或者客户网络连接缓慢,此过程可能会影响应用程序更新期间的性能。
注释
此方法假定应用程序会自动调整控件的高度、宽度和位置,以适应不同区域性中的不同文本字符串大小。 Windows 窗体包含各种控件和技术,使你能够设计窗体,并使其易于本地化,包括 FlowLayoutPanel 控件、TableLayoutPanel 控件和 AutoSize 属性。 另请参阅 如何:使用 AutoSize 和 TableLayoutPanel 控件在 Windows 窗体上支持本地化。
为每种文化生成一个部署
在此部署策略中,将生成多个部署。 在每次部署中,你仅包含特定文化所需的卫星程序集,并将部署标记为特定于该文化。
若要在 Visual Studio 中使用此方法,请将“发布”选项卡上的“发布语言”属性设置为所需区域。 Visual Studio 将自动包含所选区域所需的附属程序集,并将从部署中排除所有其他附属程序集。
注释
在 ClickOnce for .NET Core 3.1 和 .NET 5 或更高版本中,可以使用发布工具而不是发布向导和项目设计器的“发布”页来设置部署属性。 有关详细信息,请参阅 使用 ClickOnce 部署 .NET Windows 应用程序 和 .NET 的 ClickOnce。
可以在 Microsoft Windows 软件开发工具包(SDK)中使用 MageUI.exe 工具来完成相同的作。 使用应用程序清单的“填充”按钮从应用程序目录中排除所有其他附属程序集,然后在MageUI.exe中为部署清单设置“名称”选项卡上的“文化”字段。 这些步骤不仅包括正确的卫星程序集,还会将部署清单中language元素的属性设置为相应的文化。
发布应用程序后,必须为应用程序支持的每个附加语言或区域性重复此步骤。 每次必须确保发布到不同的 Web 服务器目录或文件共享目录,因为每一个应用程序清单将引用不同的卫星程序集,而每个部署清单中 language 属性将具有不同的值。
按需下载附属程序集
如果决定在单个部署中包含所有卫星程序集,则可以使用按需下载来提高性能,这样你可以将这些程序集标记为可选。 安装或更新应用程序时,不会下载标记的程序集。 如果需要程序集,可以在类上DownloadFileGroup调用ApplicationDeployment方法来安装程序集。
注释
ApplicationDeployment 类和System.Deployment.Application 命名空间中的 API 在 .NET Core 和 .NET 5 及更高版本中不受支持。 在 .NET 7 中,支持访问应用程序部署属性的新方法。 有关详细信息,请参阅 .NET 中的 Access ClickOnce 部署属性。 .NET 7 不支持 ApplicationDeployment 方法的等效项。
按需下载卫星程序集与按需下载其他类型的程序集略有不同。 有关如何使用 ClickOnce 的 Windows SDK 工具启用此方案的详细信息和代码示例,请参阅 演练:使用 ClickOnce 部署 API 按需下载附属程序集。
还可以在 Visual Studio 中启用此方案。 有关详细信息,请参阅 演练:通过设计器使用 ClickOnce 部署 API 按需下载附属程序集。
在部署之前测试本地化的 ClickOnce 应用程序
仅当应用程序主线程的CurrentUICulture属性设置为卫星程序集的文化信息时,卫星程序集才会用于 Windows 窗体应用程序。 本地市场的客户可能已经在运行本地化的 Windows 版本,并且其中的区域和语言设置为适当的默认值。
在向客户提供应用程序之前,有三个选项可用于测试本地化部署:
可以在相应的本地化版本的 Windows 上运行 ClickOnce 应用程序。
可以在应用程序中以编程方式设置 CurrentUICulture 属性。 (必须在调用 Run 方法之前设置此属性。