NLS 术语
本主题定义使用 NLS 功能时非常重要的术语。
区域设置和语言术语
下表汇总了区域设置和语言术语。 另请参阅 区域设置和语言。
语言组 | 非 Unicode 程序的语言 | 标准和格式 | |
---|---|---|---|
用途 | 提供作系统为一组语言所需的所有键盘布局、输入法编辑器(IME)、TrueType 字体、字体链接、许可证包文件(LPK)、位图字体和代码页翻译表。 因此,影响此列表中所有其他设置。 | 确定作系统的默认位图字体以及 OEM、ANSI 和 Macintosh 代码页。 此语言仅影响非完全 Unicode 的应用程序。 在 Windows XP 之前,此语言称为“系统区域设置”。 | 确定哪些设置用于设置日期、时间、货币和数字的格式,作为每个用户的默认值。 此外,还确定排序文本的排序顺序。 在 Windows XP 之前,标准和格式称为“用户区域设置”。 |
第一组 | 安装 | 安装 | 安装 |
用户如何更改 | 区域选项(控制面板项) Windows XP: 区域和语言选项 (仅限管理员) |
区域选项(控制面板项) Windows XP: 区域和语言选项 (仅限管理员) |
区域选项(控制面板项) Windows XP: 区域和语言选项 |
默认 | 西欧和美国以及显示本地化版本语言所需的语言组。 | 本地化版本的语言。 | 本地化作系统的语言。 |
函数 | EnumSystemLanguageGroups | GetSystemDefaultLangID | GetUserDefaultLCID,GetUserDefaultLocaleName |
线程区域设置 | 输入语言 | 系统默认 UI 语言 | |
---|---|---|---|
用途 | 确定用于设置线程的日期、时间、货币和大数的设置。 此外,还确定排序文本的排序顺序。 | 由语言和输入方法组成。 | 确定菜单和对话框、消息、设置信息(INF)文件和帮助文件的默认语言。 Windows Vista 及更高版本: 称为安装语言。 扮演一个更有限的角色,基本上被系统首选的 UI 语言取代。 有关详细信息,请参阅 用户界面语言管理 |
第一组 | 默认为标准和格式 | 安装 | 安装 |
用户如何更改 | SetThreadLocale | 区域选项(控制面板项) Windows XP: 区域和语言选项 |
不 |
默认 | 标准和格式 | 使用默认输入法的本地化版本的语言。 | 本地化版本的语言。 |
函数 | GetThreadLocale | GetKeyboardLayout | GetSystemDefaultUILanguage |
系统 UI 语言、系统首选 UI 语言 | 用户 UI 语言、用户首选 UI 语言 | 线程首选 UI 语言 | |
---|---|---|---|
用途 | 确定作系统的菜单和对话框、消息、INF 文件和帮助文件的语言。 有关详细信息,请参阅 用户界面语言管理。 | 确定用户的菜单和对话框、消息和帮助文件的语言。 有关详细信息,请参阅 用户界面语言管理。 | Windows Vista 及更高版本: 指定应用程序线程的首选语言。 有关详细信息,请参阅 用户界面语言管理。 |
第一组 | 默认值为 NULL | 默认值为 NULL | 默认值为 NULL |
用户如何更改 | 区域和语言选项 (仅限管理员) |
区域选项(控制面板项) Windows XP: 区域和语言选项 |
SetThreadPreferredUILanguages |
默认 | Windows Vista 及更高版本: 本地化版本的语言,后跟任何回退。 | 在 Windows Vista 之前 :本地化版本的 语言。 Windows Vista 及更高版本: 本地化版本的语言,后跟任何回退。 |
Null 列表 |
函数 | GetSystemPreferredUILanguages | GetUserDefaultUILanguage,GetUserPreferredUILanguages | GetThreadPreferredUILanguages |
处理首选 UI 语言 | |
---|---|
用途 | Windows 7 及更高版本: 确定应用程序进程的首选语言。 有关详细信息,请参阅 用户界面语言管理。 |
第一组 | 默认值为 NULL |
用户如何更改 | 区域和语言选项(仅管理员) |
默认 | Windows 7 及更高版本: 本地化版本的语言,后跟任何回退。 |
函数 | GetProcessPreferredUILanguages,SetProcessPreferredUILanguages |
代码页
256 码位代码页无法支持在单个文本中混合脚本是 Unicode 崛起的主要原因之一。 代码页对于编写控制台代码、维护旧版应用程序或在较旧版本的 Windows 上运行以及与未启用 Unicode 的一些非Microsoft软件进行交互非常重要。
输入语言
输入语言由描述语言(例如希腊文)和输入法(例如键盘)的每个进程数据变量表示。 可以安装多个输入语言,用户可以在它们之间切换。
若要设置和检索输入语言值,应用程序分别调用 LoadKeyboardLayout 和 GetKeyboardLayout。 用户可以在控制面板的区域和语言选项部分中通过“语言”选项卡添加和删除输入语言。
默认输入语言是作系统的本地化语言,它是启动新应用程序时处于活动状态的设置(或为某些应用程序打开新窗口时)。 切换到不同的输入语言是基于每个应用程序完成的。 换句话说,可以在两个不同的应用程序中使用两种不同的输入语言。 例如,用户可以使用国际美国键盘布局、使用语音输入(非Microsoft软件)和西班牙语在三个不同的应用程序中使用 IME 键入德语。
非 Unicode 程序的语言
非 Unicode 程序(以前称为“系统区域设置”)的语言确定默认情况下在作系统上使用的代码页。 非 Unicode 程序设置的语言仅影响非 Unicode 应用程序,即 ANSI 应用程序。 设置语言会指示 Windows 模拟非基于 Unicode 的作系统,该作系统已本地化为此语言。 更改非 Unicode 程序的语言会安装必要的位图字体文件,以支持指定语言中的非 Unicode 应用程序。 若要允许用户为非 Unicode 程序选择语言,必须安装相应的语言组。 应用程序需要脚本支持才能为非 Unicode 程序选择语言。 非 Unicode 程序的语言是每个系统设置,需要重启才能实现。
有时,对于非 Unicode 程序,两种语言之间没有明显的区别。 例如,这是德国(中性)和德国(奥地利)区域设置的情况。 一般情况下,一个语言组的设置非常相似,仅在 OEM 或 MAC 代码页中有所不同。
ANSI 应用程序应在安装过程中检查非 Unicode 程序设置的语言。 它使用 GetACP 或 GetOEMCP 来检索值。 不支持为非 Unicode 程序设置语言。 但是,用户可以在控制面板的区域和语言选项部分中使用“高级”选项卡对其进行更改。 下面是非 Unicode 程序设置语言的一些示例:
- 想要运行专为日语 Windows 95 设计的日语应用程序的德语用户必须选择日语作为非 Unicode 程序的语言。 选择后,非 Unicode 德语应用程序出现问题。 例如,未正确显示德语 umlauts (1)。
- 想要在非 Unicode 德语应用程序中键入日语文本的德语用户必须选择日语作为非 Unicode 程序的语言。 与第一个示例一样,这会导致非 Unicode 应用程序中输入德语文本时出现问题。
- 希望在非 Unicode 阿拉伯语应用程序中键入阿拉伯语、法语和英语的阿拉伯语用户应选择阿拉伯语作为非 Unicode 程序的语言,因为阿拉伯语 ANSI 代码页包含大多数法语字符和所有英语字符。
语言组
语言组控制可以选择的非 Unicode 程序、标准和格式、输入语言和用户界面语言的语言。 对于每个本地化版本,指定的语言组是默认语言组,不能删除。 例如,Windows 默认安装西欧和美国语言组。 因此,如果 Windows 的英语版本安装在非英语国家/地区,用户通常会安装另一种语言组。
添加语言组时,Windows 会复制(但不激活)必要的键盘文件、输入法编辑器(IME)、TrueType 字体文件、位图字体文件和国家语言支持 (.nls) 文件。 添加语言组还会添加用于字体链接的注册表值,并为复杂脚本语言(阿拉伯语、希伯来语、索引语和泰文)安装脚本引擎。
除西欧和美国语言组外,还有 16 个其他语言组:
亚美尼亚语 波罗的海 中欧 西里尔 乔治亚语 希腊语 希伯来语 |
日语 朝鲜语 简体中文 繁体中文 泰语 突厥 越南语 |
可以在任何作系统上安装任何语言组的数量和组合。 例如,西班牙语用户可以安装西里尔语语言组来处理俄语文本。 在这种情况下,字处理应用程序还需要支持西里尔语语言组。
注意
添加适当的语言组不会自动使应用程序接受文本。 建议进行测试。 例如,非 Unicode 应用程序可能需要更改非 Unicode 程序的语言。
位置
Windows XP: 位置是地理标识符。 它由定义用户所在的国家/地区的每用户数据变量表示。
若要设置该值,应用程序调用 SetUserGeoID。 若要检索该值,应用程序调用 GetUserGeoID。
标准和格式
标准和格式(以前为“用户区域设置”)是一个每用户变量,用于确定日期、时间、货币和数字格式的默认排序顺序和默认设置。 该变量显示为语言(有时与国家/地区结合使用),但它本身不是语言本身。 例如,将“标准和格式”变量设置为希伯来语表示用户想要使用希伯来语的格式约定,不一定是希伯来语。 此外,“标准和格式”变量确定用于天数和月份名称的字符串。 例如,如果用户显示“1998 年 11 月 25 日”,则“11 月”字符串可能会根据标准和格式变量更改。 更改变量会自动添加具有语言默认设置的输入区域设置。
若要获取标准和格式变量设置,应用程序调用 GetUserDefaultLCID 或 GetUserDefaultLocaleName。 没有可用于设置变量的 NLS 函数。 但是,用户可以在控制面板的区域和语言选项部分中通过“区域选项” 选项卡进行更改。
应用程序通常应使用标准和格式变量设置来显示数据。 但是,使用固定区域设置来显示数据的应用程序应传递特定的区域设置标识符,而不是使用LOCALE_USER_DEFAULT。
线程区域设置
线程区域设置由每线程区域设置数据变量表示,该变量确定线程的日期、时间、货币和大数字的格式。 它默认为当前为标准和格式选择的区域设置的值。 若要设置线程区域设置,应用程序将调用 SetThreadLocale。 若要检索线程区域设置,应用程序调用 GetThreadLocale。
在大多数情况下,不应覆盖线程区域设置。 通常,它只能用于将服务器应用程序的线程区域设置与客户端计算机的标准和格式变量同步。 例如,全球银行使用的纽约证券交易所的金融股票交易应用程序必须以美国格式显示时间、日期和股票价格。 此应用程序使用 SetThreadLocale 将线程区域设置设置为英语(美国),然后使用 NLS 函数设置日期、时间和股票价格的格式。
更改线程区域设置不会影响所有 API 函数。 因此,它并不总是替代标准和格式变量的可靠方法。 相反,控制标准和格式的应用程序应使用固定区域设置来显示数据,传递特定的区域设置标识符,而不是使用LOCALE_USER_DEFAULT。
NLS 示例
以下示例显示了标准与格式之间的交互、非 Unicode 程序的语言、位置和用户 UI 语言的语言。
一个用户是智利本地人,但住在美国有一台运行 Windows XP 英语的计算机。 用户将位置设置为美国,以使用 Internet 服务提供商 (ISP) 获取美国天气。 但是,“标准和格式”变量设置为西班牙语(智利),以便根据智利标准设置信息的格式。 此外,用户使用韩国字处理器(ANSI 应用程序),以便非 Unicode 程序的语言设置为朝鲜语(韩国)。 若要使用该应用程序,用户具有英语键盘,还安装一个朝鲜语 IME 以支持第二种输入语言。 共享计算机但不熟悉英语的用户同事可以在使用计算机时将用户 UI 语言设置为西班牙语(西班牙)。
相关主题