关于扩展语言服务
扩展语言服务 (ELS) 作为动态链接库实现, (DLL) 为应用程序指定的文本提供各种语言支持功能。 该技术包括 ELS 平台以及应用程序可通过平台访问的几种预定义语言服务类型的插件。
注意
ELS 模块随 Windows 7 及更高版本一起自动安装。
ELS 平台
ELS 平台是应用程序和 ELS 服务之间的接口。 它提供了一种通过同一 API 实现多种语言功能的简单方法,使应用程序能够访问和使用特定服务。 有关 API 的详细信息,请参阅 扩展语言服务参考。
注意
当应用程序调用任何 ELS API 函数时,平台会根据需要分配内存和资源,以便与服务通信。 应用程序负责再次调用平台以释放这些资源。
平台在应用程序虚拟内存空间中运行,所有分配的内存都是此空间的一部分。 因此,应用程序只需通过链接到 Elscore.lib 或动态加载Elscore.dll来链接到 ELS 组件 DLL (Elscore.dll) 。
ELS 服务
对于 Windows 7 及更高版本,ELS 平台仅支持以下预定义服务。
注意
未来版本的 ELS 将支持 Microsoft 或服务提供商提供的其他服务。
每个服务都与描述服务用途的服务类别相关联。 类别由不可本地化的字符串表示。 应用程序使用它来枚举可用的服务。 当前服务类别包括:
- “语言检测”
- “脚本检测”
- “音译”
平台使用服务元数据枚举应用程序请求的服务。 应用程序可以使用服务全局唯一标识符 (GUID) 、支持的输入和输出语言以及脚本以及服务类别等属性来枚举所需的 ELS 服务。
每个 ELS 服务都作为受 DLL 支持的插件实现,DLL 可安装在操作系统上,以便 ELS 平台可以检测和使用它。 如果需要,服务可以公开其自己的子服务。
主 ELS 操作
本部分介绍 ELS 平台支持的main操作。 该平台支持同步和异步调用模式。 异步调用模式使用应用程序线程池来计划处理请求的线程。
注意
由于平台支持异步模式,因此 ELS 服务不必自行实现这种类型的功能。
服务枚举
ELS 平台加载和管理所有 ELS 服务,使操作对应用程序透明。 应用程序通过调用 MappingGetServices 枚举可用的服务。 有关编程说明,请参阅 枚举和释放服务。
注意
出于性能原因,建议让应用程序仅枚举一次可用的服务。 ELS 平台在下一个枚举上再次检查服务,以确保其枚举结果始终是最新的。
文本识别
服务枚举后,应用程序调用 MappingRecognizeText 函数以使用特定的 ELS 服务将输入文本的任何文本范围映射到输出文本。 文本识别的一个示例是使用接收文本段并检测其最可能的语言的语言检测服务。
服务识别文本后, MappingRecognizeText 将返回 一个MAPPING_PROPERTY_BAG 结构,该结构填充了服务生成的输出数据和属性。 为了避免内存泄漏,应用程序必须在每次 MappingRecognizeText 返回S_OK时调用 MappingFreePropertyBag 来释放属性包。 通常,当应用程序使用完输出数据或输出数据不再相关时,应用程序会执行此操作,因为文本的输入区域已被修改,例如编辑或删除。 释放属性包时, MappingFreePropertyBag 返回。
请求文本识别中提供了文本 识别的编程说明。
服务终止
当应用程序不再需要 ELS 服务时,它会在终止之前调用 MappingFreeServices 。 有关详细信息,请参阅 枚举和释放服务。
版本控制
将来的 ELS 版本将允许更新 ELS 服务。 应用程序将能够检查MAPPING_SERVICE_INFO结构的版本号,以检测服务中的任何更改。
注意
ELS 应用程序不应假设同一服务的不同版本可以检索完全相同的结果。