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