Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分发本地化winforms应用程序_Winforms_Localization_Clickonce_Software Distribution - Fatal编程技术网

分发本地化winforms应用程序

分发本地化winforms应用程序,winforms,localization,clickonce,software-distribution,Winforms,Localization,Clickonce,Software Distribution,这与我今天早些时候的帖子有关: 现在我有了winforms应用程序的演示,它有两种不同的本地化,一种是英语,一种是西班牙语。现在让我们假设我有一个大的应用程序,假设它支持15种不同语言的本地化。在上一篇文章中,有人建议我在初始化表单以设置本地化时添加几行。目前我正在使用click once部署我的应用程序。我正试图找到一种不用15种不同风格的应用程序就可以部署的方法。是否有方法查看当前用户的本地化,如果它与我编写的屏幕中使用的语言之一匹配,则使用默认语言?内置的.NET framework本地化

这与我今天早些时候的帖子有关:


现在我有了winforms应用程序的演示,它有两种不同的本地化,一种是英语,一种是西班牙语。现在让我们假设我有一个大的应用程序,假设它支持15种不同语言的本地化。在上一篇文章中,有人建议我在初始化表单以设置本地化时添加几行。目前我正在使用click once部署我的应用程序。我正试图找到一种不用15种不同风格的应用程序就可以部署的方法。是否有方法查看当前用户的本地化,如果它与我编写的屏幕中使用的语言之一匹配,则使用默认语言?

内置的.NET framework本地化系统已经处理了此回退情况。您只需安装用于本地化窗体和控件的附属DLL,然后,如果正确的DLL与用户的区域设置匹配,.NET将使用它,否则它将退回到下一个相关的父区域设置。例如,如果应用程序的默认语言为en US,但您提供了en GB翻译和en翻译,则回退为:

en GB->en->en US

i、 e.当en GB不可用时,它会查找en,如果没有,则使用默认值en US

因此,在分发时,您可以只分发您的主要en-US应用程序,然后为特定语言(例如语言包)提供额外的卫星DLL。有一个属性,允许主应用程序集指示它所需的附属版本,这使您的本地化能够跨程序集版本工作(例如,如果您的程序集版本随生成而增加,您可以有效地忽略生成编号)

MSDN有很多关于全球化和本地化的信息,以及它们是如何工作的,甚至在ClickOnce部署的环境中也是如此。检查一下


当然,如果您选择不依赖.NET系统来支持全球化产品,那么您将不得不提出符合您选择方向的产品。

Jeff,我必须添加以下内容才能让我的应用程序选择当前区域设置。这个看起来可以吗?一旦我这样做了,当我切换标准和格式时,我的应用程序将正确加载。听起来我对你的职位已经了如指掌了。字符串cultureName=System.Globalization.CultureInfo.CurrentCulture.Name;System.Globalization.CultureInfo myCI=新的System.Globalization.CultureInfo(cultureName,false);System.Threading.Thread.CurrentThread.CurrentUICulture=myCI;System.Threading.Thread.CurrentThread.CurrentCulture=myCI;更改当前UICulture时要小心。这与资源无关,您通常应该将其放在一边,因为您可能会破坏用户为数字格式等设置的自定义设置。