这与我今天的早期帖子有关:link text
所以现在我有了两种不同本地化的演示winforms应用,一种是英语,一种是西班牙语。现在假设我有一个很大的应用程序,假设它支持15种不同语言的本地化。在上一篇文章中,有人建议我在初始化表单时添加几行代码来设置本地化。目前我正在使用click once来部署我的应用程序。我正在试图找到一种方法来部署,而不需要15种不同风格的应用程序。有没有办法查看当前用户的本地化,如果它与我编写屏幕时使用的语言之一相匹配,否则就使用默认语言?
发布于 2009-06-25 17:58:31
.NET框架的内置本地化系统已经处理了这种后备情况。您只需安装用于本地化窗体和控件的附属DLL,然后,如果正确的DLL与用户的区域设置匹配,.NET将使用它,否则它将回退到下一个相关的父区域设置。例如,如果您的应用程序的默认语言是en-US,但您提供了en-GB转换和en转换,则回退是:
en-GB->en->en-US
也就是说,当en-GB不可用时,它会查找en,如果不存在,则使用缺省值en-US。
因此,在分发时,您可以只分发主要的en-US应用程序,然后为特定语言提供附加的附属DLL,例如语言包。有一个属性SatelliteContractVersionAttribute
,它允许您的主应用程序程序集指示它想要的附属版本,这使您的本地化能够跨程序集版本工作(例如,如果您的程序集版本随着内部版本的增加而增加-您可以有效地忽略内部版本号)。
MSDN有很多关于全球化和本地化的信息,以及它是如何工作的,甚至在ClickOnce部署的上下文中也是如此。检查Globalizing Windows Forms section。
当然,如果您选择不依赖.NET系统来支持全球化产品,那么您将不得不想出适合您选择的方向的东西。
https://stackoverflow.com/questions/1045249
复制相似问题