这和我今天早期的帖子有关:链接文字
所以现在我有演示 winforms 应用程序有两种不同的本地化,一种英语,一种西班牙语。现在假设我有一个大应用程序,假设它支持 15 种不同语言的本地化。在上一篇文章中,有人建议我在初始化表单时添加几行以设置本地化。目前我正在使用单击一次来部署我的应用程序。我正在尝试找到一种无需 15 种不同风格的应用程序即可部署的方法。有没有办法查看当前用户的本地化,如果它与我编写屏幕使用的语言之一匹配,否则使用默认值?
这和我今天早期的帖子有关:链接文字
所以现在我有演示 winforms 应用程序有两种不同的本地化,一种英语,一种西班牙语。现在假设我有一个大应用程序,假设它支持 15 种不同语言的本地化。在上一篇文章中,有人建议我在初始化表单时添加几行以设置本地化。目前我正在使用单击一次来部署我的应用程序。我正在尝试找到一种无需 15 种不同风格的应用程序即可部署的方法。有没有办法查看当前用户的本地化,如果它与我编写屏幕使用的语言之一匹配,否则使用默认值?
.NET 框架的内置本地化系统已经处理了这种回退情况。您只需安装用于本地化表单和控件的附属 DLL,然后,如果正确的与用户的区域设置匹配,.NET 将使用它,否则它将回退到下一个相关的父区域设置。例如,如果您的应用程序的默认语言是 en-US,但您提供了 en-GB 翻译和 en 翻译,则回退是:
en-GB->en->en-US
即,当 en-GB 不可用时,它会查找 en,如果不存在,则使用默认值 en-US。
因此,在分发时,您可以只分发您的主要 en-US 应用程序,然后为特定语言提供额外的附属 DLL,例如语言包。有一个属性 ,SatelliteContractVersionAttribute
它允许您的主应用程序程序集指示它想要的附属版本,这使您的本地化可以跨程序集版本工作(例如,如果您的程序集版本随着构建而增加 - 您可以有效地忽略构建号) .
MSDN 有大量关于全球化和本地化以及其工作原理的信息,即使在 ClickOnce 部署的上下文中也是如此。检查全球化 Windows 窗体部分。
当然,如果您选择不依赖 .NET 系统来支持全球化产品,那么您将不得不想出适合您选择的方向的东西。