用户界面语言管理

多语言用户界面 (MUI) 使应用程序能够以两种方式管理用户界面语言。 应用程序可以使用一种简单的语言管理方法,默认为操作系统语言设置。 或者,应用程序可以支持用户可从中选择的自己的语言。 MUI API 还允许应用程序直接访问操作系统支持并由资源加载程序维护的语言和语言列表。 本主题的其余部分定义系统支持的语言和语言回退机制。

操作系统维护的语言

系统默认 UI 语言/安装语言

系统默认 UI 语言是用于设置 Windows 的本地化版本的语言。 所有菜单、对话框、错误消息和帮助文件都以此语言表示,用户选择其他语言时除外。

在 Windows Vista 及更高版本中,系统默认 UI 语言称为“安装语言”,其作用更加有限。 在大多数情况下,它被系统首选的 UI 语言所取代。 但是,在某些情况下,使用一种始终已知完全支持的安装语言会很有用。

注意

在 MUI 部署后,画图、记事本、写字板和菜单选项等 Windows 应用程序仍将以系统默认 UI 语言显示。

没有 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 语言,应用程序可以调用 GetUserDefaultUILanguageGetUserPreferredUILanguages。 应用程序无法更改用户 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-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 for German (Germany) 及其中性形式“de”。

  • 用户 UI 语言及其中性形式。 例如,日本 (日本) 的 ja-JP 及其中性形式“ja”。

  • 系统 UI 语言及其中性形式。 例如,it-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 资源管理

关于多语言用户界面

区域设置和语言

NLS 术语