音译服务

ELS 音译服务将 UTF-16 文本从一个写入系统映射到另一个写入系统。 每个服务实际上是应用于一组特定输入和输出 Unicode 脚本的数据,实际音译是 ELS 平台内部的。 应用程序可以选择性地枚举特定输入和输出脚本的可用服务,并选择所需的服务。

平台维护 ELS 音译服务的元数据。 每个服务的元数据提供服务的说明,并列出该服务支持的输入和输出脚本。 元数据由 MappingGetServices 函数检索到的MAPPING_SERVICE_INFO结构表示。

输入到音译服务

音译服务的输入是一个写入系统中的 UTF-16 文本。

音译服务的输出

音译服务的输出是映射到第二个写入系统的 UTF-16 文本。 如果输入文本的任何给定区块都没有适当的音译映射,则区块保持不变。

音译服务操作

音译服务根据需要将 Unicode 文本从输入脚本映射到输出脚本,逐个字符或逐词映射。 应用程序可以通过在调用 MappingGetServices 时指定输入和输出脚本,或通过提供服务 GUID 来选择获取感兴趣的特定音译服务。 应用程序的另一个选项是在调用 MappingGetServices 时指定服务类别“Transliteration”来枚举所有可用的音译服务。 在这种情况下,应用程序会调用每个服务,并将结果与原始文本进行比较,以确定结果是否因特定服务的操作而更改。

应用程序可以通过调用 MappingRecognizeText 请求 ELS 音译服务的文本识别。 在收到请求时,音译服务会分配一个缓冲区以包含音译数据,然后对应用程序提供的输入字符串中的每个码位执行文本识别。

注意

原始文本和音译文本的长度可能不同。

 

音译服务 GUID

音译服务的 GUID 在 Elssrvc.h 中声明,如以下代码所示。

// {A3A8333B-F4FC-42f6-A0C4-0462FE7317CB}
static const GUID ELS_GUID_TRANSLITERATION_HANT_TO_HANS =
    { 0xA3A8333B, 0xF4FC, 0x42f6, { 0xA0, 0xC4, 0x04, 0x62, 0xFE, 0x73, 0x17, 0xCB } };

// {3CACCDC8-5590-42dc-9A7B-B5A6B5B3B63B}
static const GUID ELS_GUID_TRANSLITERATION_HANS_TO_HANT =
    { 0x3CACCDC8, 0x5590, 0x42dc, { 0x9A, 0x7B, 0xB5, 0xA6, 0xB5, 0xB3, 0xB6, 0x3B } };

// {D8B983B1-F8BF-4a2b-BCD5-5B5EA20613E1}
static const GUID ELS_GUID_TRANSLITERATION_MALAYALAM_TO_LATIN =
    { 0xD8B983B1, 0xF8BF, 0x4a2b, { 0xBC, 0xD5, 0x5B, 0x5E, 0xA2, 0x06, 0x13, 0xE1 } };

// {C4A4DCFE-2661-4d02-9835-F48187109803}
static const GUID ELS_GUID_TRANSLITERATION_DEVANAGARI_TO_LATIN =
    { 0xC4A4DCFE, 0x2661, 0x4d02, { 0x98, 0x35, 0xF4, 0x81, 0x87, 0x10, 0x98, 0x03 } };

// {3DD12A98-5AFD-4903-A13F-E17E6C0BFE01}
static const GUID ELS_GUID_TRANSLITERATION_CYRILLIC_TO_LATIN =
    { 0x3DD12A98, 0x5AFD, 0x4903, { 0xA1, 0x3F, 0xE1, 0x7E, 0x6C, 0x0B, 0xFE, 0x01 } };

// {F4DFD825-91A4-489f-855E-9AD9BEE55727}
static const GUID ELS_GUID_TRANSLITERATION_BENGALI_TO_LATIN =
    { 0xF4DFD825, 0x91A4, 0x489f, { 0x85, 0x5E, 0x9A, 0xD9, 0xBE, 0xE5, 0x57, 0x27 } };

关于扩展语言服务