用户界面语言管理
多语言用户界面(MUI)使应用程序能够以两种方式管理用户界面语言。 默认情况下,应用程序可以使用简单的语言管理方法来管理作系统语言设置。 或者,应用程序可以支持用户可从中选择自己的语言。 MUI API 还允许应用程序直接访问作系统支持的语言和语言列表,并由资源加载程序维护。 本主题的其余部分定义了系统支持的语言和语言回退机制。
作系统维护的语言
系统默认 UI 语言/安装语言
系统默认 UI 语言是用于设置 Windows 的本地化版本的语言。 除用户选择其他语言外,所有菜单、对话框、错误消息和帮助文件均以此语言表示。
在 Windows Vista 及更高版本中,系统默认 UI 语言称为“安装语言”,并发挥更有限的作用。 出于大多数目的,它被系统首选的 UI 语言取代。 但是,在某些上下文中,拥有一种始终被完全支持的单一安装语言非常有用。
注意
MUI 部署后,仍会显示系统默认 UI 语言(如画图、记事本、写字板和菜单选项)的 Windows 应用程序。
没有 MUI 函数可用于设置系统默认 UI 语言。 若要检索此语言,应用程序可以调用 GetSystemDefaultUILanguage。
系统 UI 语言
作系统将系统 UI 语言定义为用户界面语言,该语言可由控制面板区域和语言选项部分 高级 选项卡中的管理员设置。 如果当前用户未进行特定语言设置,或者未登录活动帐户,则作系统使用此语言。 仅当计算机上安装了多个用户界面语言时,才能更改该语言。
注意
必须为所有用户和服务重新启动作系统才能看到语言更改的效果。
没有 MUI 函数可用于设置系统 UI 语言。 若要检索此值,面向 Windows Vista 及更高版本的应用程序可以调用 GetSystemPreferredUILanguages 并在系统首选 UI 语言列表中获取第一种语言。 面向 Windows Vista作系统的应用程序无法使用 GetSystemPreferredUILanguages,并且应基于系统 UI 语言始终与系统默认 UI 语言相同的假设。
用户 UI 语言
用户 UI 语言确定用于菜单、对话框、帮助文件等的用户界面语言。 它可以由当前用户在控制面板的区域和语言选项部分的“语言”选项卡中设置。 仅当计算机上安装了多个用户界面语言时,才能更改此语言。 请注意,用户必须注销,然后重新登录才能看到效果。 例如,跨国公司希望在其所有子公司中部署 Windows。 公司创建一个全局安装作业,该作业在所有客户端上安装英语版本的 Windows,而不考虑位置。 同时,它根据计算机所属的组织单位安装特定的语言模块。 当用户首次登录到新安装的作系统时,Windows 将显示为本地化版本。
在 Windows Vista 及更高版本中,用户 UI 语言是用户首选 UI 语言列表中的第一种语言。 请注意,如果特定资源在此语言中不可用,则可以使用回退语言。
在预 Windows Vista作系统上,用户 UI 语言通常与系统默认 UI 语言相同。 但是,对于 Windows MUI,这两种语言可能有所不同。
若要检索用户 UI 语言,应用程序可以调用 getUserDefaultUILanguage 或 GetUserPreferredUILanguages。 应用程序无法更改用户 UI 语言,因为没有设置它的函数。
作系统维护的语言列表
系统首选 UI 语言列表
资源加载程序维护系统首选 UI 语言列表。 此列表中包含的语言是作系统首选的语言,适合其自己的资源,例如菜单和对话框、消息、INF 文件和帮助文件。 该列表由系统默认 UI 语言和系统 UI 语言及其回退组成。 应用程序可以通过调用 GetSystemPreferredUILanguages来检索系统首选的 UI 语言。
用户首选 UI 语言列表
资源加载程序使用用户首选的 UI 语言列表,其中包括用户喜欢的语言。 资源加载程序使用此列表中匹配语言的资源(如果可用)作为特定应用程序线程。 这些语言优先于任何系统首选项。 若要检索用户首选的 UI 语言,应用程序可以调用 GetUserPreferredUILanguages。
处理首选 UI 语言列表
在 Windows Vista 及更高版本上,资源加载程序维护进程首选 UI 语言列表,该列表由 MUI 应用程序的运行进程设置最多五种有效语言组成。 应用程序可以通过调用 SetProcessPreferredUILanguages来设置语言。 应用程序可以通过调用 getProcessPreferredUILanguages来检索语言。
线程首选 UI 语言列表
在 Windows Vista 及更高版本中,资源加载程序使用线程首选 UI 语言列表,该列表由线程在 MUI 应用程序的运行进程中设置最多五种有效语言组成。 这些语言用于自定义应用程序用户界面语言,使其不同于作系统语言。 线程首选 UI 语言列表基于用户首选 UI 语言、系统首选 UI 语言和系统默认 UI 语言。
若要设置线程首选 UI 语言,应用程序应调用 SetThreadPreferredUILanguages。 为了检索这些语言,应用程序调用 GetThreadPreferredUILanguages。
中性语言表示形式
不带区域或区域设置的中性语言单独表示为语言。 例如,英语(加拿大)语言(en-CA)的中性表示形式表示为“en”。 即使中性语言与区域或区域设置的各个方面不关联,也可以将其与资源集相关联。 通常,中性语言资源基于语言最普遍区域中的使用。
作为图示,假设 MUI 应用程序本地化德语(瑞士)的德语资源(de-CH,德语(奥地利)表示为 de-AT,同时为以 de-DE形式为德语(德国)构建一套完整的资源。 必须为此应用程序做出考虑整个资源文件的决策。 如果应用程序将 de-DE 资源复制为中性语言资源,则必须为资源加载程序提供回退语言。 如果加载程序找不到特定语言特定的资源文件,用于 de-CH 或 de-AT,它将回退到非特定语言的“de”资源。 这些资源很可能比完全不同的语言的资源更合适,例如英语(美国),这是唯一可能的其他回退。
另一个示例是,应用程序可能根本不本地化为巴林。 但是,支持英语(巴林)的语言首选项(表示为 en-BZ),允许应用程序回退到“en”资源。
资源加载程序中的语言回退
Windows Vista 及更高版本在资源加载程序使用的预排序回退语言列表中排列用户界面语言设置。 若要形成列表,作系统按所示顺序组合多种语言:
线程首选 UI 语言,由线程用户界面语言及其中性形式组成。 例如 fr-FR 法语(法国)及其中性形式“fr”和 es-ES 西班牙语(西班牙)及其中性形式“es”。
处理首选 UI 语言,包括进程用户界面语言及其中性形式。 例如,德国(德国)及其中性形式“de”de-DE。
用户 UI 语言及其中性形式。 例如,日本(日本)及其中性形式“ja”ja-JP。
系统 UI 语言及其中性形式。 例如,意大利(意大利)及其中立形式“意大利”it-IT。
注意
仅当未设置用户 UI 语言时,此语言才会包含在回退列表中。
系统默认 UI 语言及其中性形式。 例如,es-ES 西班牙语(西班牙)及其中性形式“es”。
下面显示了合并的回退列表。 请注意,将消除语言(例如 es-ES 和 es)的重复。 由于该示例将用户 UI 语言设置为 ja-JP,因此系统 UI 语言不会出现在合并的回退列表中。
fr-FR、fr、es-ES、es、de-DE、de、ja-JP、ja
加载 MUI 应用程序的资源时,资源加载程序会尝试为当前运行的应用程序线程选择与线程首选 UI 语言列表匹配的文件之一。 如果资源加载程序在所选语言和合并回退列表中的第一个特定于语言的资源之间找不到直接匹配项,它会检查列表中的后续语言,直到找到可接受的回退。
如果资源加载程序找不到它所需的文件,则必须使用“保证良好”回退语言。 对于 MUI 资源技术,资源加载程序从提供的资源配置数据中确定回退语言。 有关详细信息,请参阅 MUI 资源管理。
相关主题