用于本地化的资源的分层组织

在 Visual Studio 中,已本地化的资源(如对应于每个区域性的字符串数据和图像数据)存储在单独的文件中,并根据用户界面区域设置加载。为理解这些已本地化资源的加载方式,将它们视作按分层方式组织的资源是十分有用的。

层次结构中的资源种类

  • 层次结构的顶级是用于默认区域性的后备资源,例如英语(“en”)。这些资源是不具有自己的文件的唯一资源;它们被存储在主程序集中。

  • 后备资源之下是用于任何非特定区域性的资源。非特定区域性与语言相关,而不是与国家/地区相关。例如,法语(“fr”)是非特定区域性。(请注意,后备资源也是用于非特定区域性的资源,但它们是特殊的资源。)

  • 在用于任何非特定区域性的资源之下是用于任何特定区域性的资源。特定区域性与语言和国家/地区相关联。例如,加拿大法语(“fr-CA”)是特定区域性。

如果应用程序尝试加载任何已本地化的资源(例如字符串),但没有找到这一资源,它将搜索整个层次结构,直到它找到包含请求的资源的资源文件。

存储资源的最佳方式是尽可能对这些资源进行归纳。这意味着应尽可能为非特定区域性而非特定区域性在资源文件中存储已本地化的字符串、图像等。例如,如果您具有用于比利时法语(“fr-BE”)区域性的资源,而紧位于其上的资源是英语的后备资源,则用户在为加拿大法语区域性配置的系统上使用您的应用程序可能会导致问题。系统将查找名为“fr-CA”的附属程序集,如果没有找到它,将加载包含后备资源(该后备资源是英语)的主程序集,而不是加载法语资源。下图说明这一与需要不符的情况。

仅特定资源

如果您遵守在非特定资源文件中为“fr”区域性放置尽可能多的资源的建议,则加拿大法语用户将不会看到为“fr-BE”区域性标记的资源,而是用法语向他们显示字符串。下面的情况说明这一优选方案。

NeutralSpecificResources 图

请参见

任务

如何:为 Windows 窗体全球化设置区域性和用户界面的区域性

概念

用于本地化的非特定资源语言

安全性和已本地化的附属程序集

其他资源

本地化应用程序

对应用程序进行全球化和本地化

How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization