1。  ResourceManager rm=new ResourceManager(typeof(...))
  通过rm.GetString(...)返回一个值,如何以最简单的方法判断返回的值是正确的呢?注意用到rm.GetString() 的地方很多(有上万条)。2。整个解决方案的所有资源文件可以放在一个文件夹下吗?如果可以,该怎样才能找到这些资源文件呢?

解决方案 »

  1.   

    公共语言运行库为检索打包和部署在附属程序集中的区域性特定资源提供了支持。附属程序集仅包含像 .gif 文件这样的资源文件(或松散资源)。它们不包含任何可执行代码。在附属程序集部署模型中,所创建的应用程序具有一个默认程序集(主程序集)和几个附属程序集。应将默认或非特定程序集的资源与主程序集打包在一起,并为应用程序支持的每一种语言创建单独的附属程序集。因为附属程序集不是主程序集的一部分,所以您不必替换该应用程序的主程序集,即可很容易地替换或更新与特定区域性相关的资源。ResourceManager 类提供在运行时访问区域性特定资源的权限,并使用资源后备进程控制应用程序检索资源的方式。ResourceManager 基于当前线程的 CultureInfo.CurrentUICulture 属性确定要检索哪些资源。例如,如果用主程序集中的默认英语语言资源和分别包含法语和德语语言资源的两个附属程序集编译一个应用程序,并且 CurrentUICulture 属性被设置为“de”,则 ResourceManager 检索德语资源。CurrentUICulture 属性可以通过几种方式来设置。请注意,该属性的设置方式将影响 ResourceManager 根据区域性检索资源的方式: 可以在应用程序代码中将 CurrentUICulture 属性设置为特定区域性,如表示加拿大法语的“fr-CA”。当在代码中显式设置 CurrentUICulture 时,需保证总是检索该区域性的资源,无论用户的浏览器或系统语言是什么。请考虑一个用默认英语语言资源和分别包含法语和德语语言资源的两个附属程序集编译的应用程序。如果在该应用程序的代码中将 CurrentUICulture 属性设置为“de”,则 ResourceManager 将总是检索德语资源,即使用户的系统语言设置为法语。在代码中显式设置该属性之前,确保这是所需的行为。 
    在 ASP.NET 应用程序中,显式设置 CurrentUICulture 是必要的,因为服务器的设置不太可能与传入的客户端请求相匹配。 如果应用程序确实指定了 CurrentUICulture,则将隐式设置 CurrentUICulture 属性。如果未在应用程序代码中显式设置 CurrentUICulture,则在最终用户可以设置默认语言的 Windows 2000 和 Windows XP 多用户界面 (MUI) 产品中,它由 GetUserDefaultUILanguage 函数设置。如果未设置用户的 UI 语言,则将由系统安装的语言(操作系统资源的语言)来设置该 UI 语言。 
    如果应用程序是基于 Web 的,则 CurrentUICulture 可以在应用程序代码中显式设置为用户浏览器的接受语言。 有关设置 CurrentUICulture 属性的示例,请参见使用 CurrentUICulture 属性。有关检索特定区域性的资源的更多信息,请参见检索附属程序集中的资源和 ASP.NET 应用程序中的资源。
      

  2.   

    用 CurrentUICulture 属性请参见
    开发全球通用的应用程序 | CultureInfo.CurrentUICulture 属性 | 使用 CurrentCulture 属性 | 使用 InvariantCulture 属性
    语言
    C#Visual Basic全部显示
    CultureInfo.CurrentUICulture 属性是每个线程的设置,可返回当前用户界面区域性。该属性由 ResourceManager 类用于在运行时查找区域性特定资源。可以使用非特定区域性、特定区域性或 InvariantCulture 来设置 CurrentUICulture 属性。可以使用 Thread.CurrentThread 属性来设置 CurrentUICulture。有关更多信息,请参见本主题后面提供的示例。注意   更改 Thread.CurrentThread 的区域性需要设置了 SecurityPermissionFlag,ControlThread 的 SecurityPermission。由于安全状态与线程关联,对线程进行操作是危险的。因此,应只向可信代码授予该权限,并且只在必要的时候才授予该权限。不能在不完全受信任的代码中更改线程的区域性。
    显式设置 CurrentUICulture 属性
    可以在应用程序代码中显式设置 CurrentUICulture 属性。下面的代码示例将 CurrentUICulture 属性设置为表示德语的非特定区域性“de”。[Visual Basic]
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de")[C#]
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");也可以将 CurrentUICulture 属性设置为特定区域性。下面的代码示例将 CurrentUICulture 属性设置为表示德国德语的特定区域性“de-DE”。[Visual Basic]
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE")[C#]
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");隐式设置 CurrentUICulture 属性
    如果未在应用程序代码中显式设置 CurrentUICulture 属性,则当应用程序启动时,默认情况下将设置该属性。在最终用户可以设置其 UI 语言的 Windows 2000 和 Windows XP 多用户界面 (MUI) 产品中,该属性由 GetUserDefaultUILanguage 函数设置。如果未设置用户的 UI 语言,则将由系统安装的语言(操作系统资源的语言)来设置该 UI 语言。