发明内容
本发明的目的是提供一种对网页数据进行分块翻译,实现快速响应网页翻译请求的翻译网页方法和***。
为达到上述目的,本发明通过以下技术方案实现:
一种翻译网页的方法,包括步骤:1)触发翻译进程,获取翻译数据;2)将所述翻译数据划分为预置大小的数据包;3)翻译所述数据包,显示翻译结果。
优选的,所述步骤1)的触发方式包括触发预定的快捷键方式或触发翻译程序按钮方式。
优选的,所述触发翻译进程后,包括:1a1)判断是否选中网页数据,如果是,按网页代码的先后顺序读取选中网页数据;否则,按网页代码的先后顺序读取当前网页数据;1a2)判断触发方式是否为触发翻译程序按钮方式,如果是,按所述读取的网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据;否则,继续步骤1a3);1a3)记录鼠标位置,判断所述记录鼠标位置是否在所述读取的网页数据范围之内,如果是,按规定的顺序,过滤所述读取的网页数据,获取翻译数据,所述规定的顺序为,在所述读取网页数据范围内,从鼠标位置读取若干段包括单位预置大小数据包的网页数据,然后按网页代码的先后顺序读取余下的所述读取网页数据;否则,按所述读取网页数据的先后顺序,过滤所述网页数据,获取翻译数据。
优选的,所述触发翻译进程后,包括:1b1)判断触发方式是否为触发翻译程序按钮方式,如果是,继续步骤1b2),否则,记录鼠标位置,继续步骤1b3);1b2)判断是否选中网页数据,如果是,按网页代码的先后顺序读取选中网页数据,否则,按网页代码的先后顺序读取当前网页数据;按所述读取网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据;1b3)判断是否选中网页数据,如果是,按网页代码的先后顺序读取选中网页数据,否则,按网页代码的先后顺序读取当前网页数据;判断所述记录鼠标位置是否在所述读取的网页数据范围之内,如果是,按规定的顺序,过滤所述读取的网页数据,获取翻译数据,所述规定的顺序为,在所述读取网页数据范围内,从鼠标位置读取若干段包括单位预置大小数据包的网页数据,然后按网页代码的先后顺序读取余下的所述读取网页数据,否则,按所述读取网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据。
优选的,所述步骤2)还包括,设置所述数据包的优先级。
优选的,按所述获取翻译数据的先后顺序划分数据包;按所述划分数据包的先后顺序,从高到低设置数据包优先级。
优选的,所述步骤3)的翻译过程包括:31)将所述欲翻译数据包发送到管理服务器;32)管理服务器根据各翻译服务器当前的状态,将所述欲翻译的数据包分配给所述翻译服务器;33)翻译服务器翻译所述数据包,反馈翻译结果。
优选的,所述翻译服务器当前状态包括服务器的数据处理性能和服务器的负载程度。
优选的,所述步骤2)还包括,创建与所述数据包对应的索引表;所述步骤3)的显示过程包括,依据所述索引表的关系,把翻译后数据在新网页中显示出来。
优选的,翻译网页的***包括数据获取模块、数据组织模块、管理服务器、翻译服务器群和翻译数据显示模块:数据获取模块用于获取翻译数据;数据组织模块用于将所述数据获取模块获取的翻译数据划分为预置大小的数据包,创建与所述数据包对应的索引表,设置所述数据包的优先级,发送所述数据包给所述管理服务器;管理服务器用于根据所述翻译服务器群各服务器当前的状态和数据包的优先级,将所述数据包,发送给所述翻译服务器;翻译服务器用于翻译所述数据包,反馈翻译数据结果;翻译数据显示模块用于根据数据包对应的索引表关系,将所述翻译服务器反馈的翻译数据显示到新网页上。
从以上技术方案可以看出,由于本发明对获取的翻译数据进行分块处理,把大的数据分成小的数据包,然后以数据包为单位传送到服务器端进行翻译,翻译完成后,以数据包为单位把翻译结果显示到新网页上,这种分块处理的方式,提高了***处理效率,实现了快速响应翻译请求;用户不需要等待全部网页内容翻译完,就能看到以块为单位的已翻译网页内容,从而提高了用户的满意度。
进一步,本发明提供了选中网页数据和当前网页数据两种方式区分待翻译内容。当用户只希望翻译当前网页中的部分内容时,可以通过选中希望翻译的网页数据的方式,使用触发翻译进程实现。
进一步,本发明提供了预定快捷键和翻译程序按钮两种触发方式,使用前者方式触发后,***记录鼠标位置,从鼠标位置读取若干段包括单位预置大小数据包的网页数据;当用户对当前网页的某个位置的内容感兴趣时,可以通过这种方法,使得感兴趣的数据能与其它网页数据分开处理。
进一步,本发明可对数据包进行优先级设置,按获取的翻译数据的先后顺序划分数据包,由高到低设置优先级;如果用户对某个位置的内容感兴趣时,用户将鼠标放在感兴趣的内容上,然后使用预定快捷键触发方式,则本技术方案从鼠标位置读取若干个数据包,因这些数据包的优先级高,***优先处理这些数据包,从而使得用户感兴趣的数据能够最快的在新网页上显示出来。
进一步,本发明将所述翻译数据包发送到管理服务器时,管理服务器根据翻译服务器群中各翻译服务器的当前状态,将欲翻译的数据包分配给所述翻译服务器,保证翻译服务器群的负载均衡,提高处理效率。
具体实施方式
本发明提供了一种翻译网页的方法和***。
请参考图1,为本发明翻译网页的方法流程图,本技术方案的方法流程包括以下步骤:
p1)获取欲翻译的数据。
p2)将所述欲翻译数据划分为预置大小的数据包。
p3)翻译所述数据包,显示翻译结果。
为便于进一步理解本发明,以下结合具体实施方式对本技术方案进行详细的描述。
请参考图2,是本发明翻译网页方法实施例流程图,包括以下步骤:
s1)判断是否触发翻译进程。
上述的触发有两种方式:一是快捷键方式,通过点击触发预定的快捷键,触发翻译进程;二是翻译程序按钮方式,通过触发翻译程序提供的按钮,触发翻译进程。
s2)根据触发方式和翻译网页的内容,获取翻译数据。
上述翻译网页的内容包括选中的网页内容和当前网页内容。
上述选中网页内容可为,通过拖动鼠标,在当前网页中选中欲翻译的部分网页内容。
在本技术方案中,网页数据指网页的源文件中的代码,包括标记数据和内容数据。其中内容数据又包括文本数据,图片数据等。对网页的翻译是对网页内容数据中的文本数据进行翻译,将这部分文本数据称为翻译数据。对于翻译数据的获取过程,本具体实施方式提供以下两种方式:
方式一,在触发翻译进程后:
a1)判断是否选中网页数据,如果是,按网页代码的先后顺序读取选中网页数据;否则,按网页代码的先后顺序读取当前网页数据;
a2)判断触发方式是否为触发翻译程序按钮方式,如果是,按所述读取的网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据;否则,继续步骤a3);
a3)记录鼠标位置,判断所述记录鼠标位置是否在所述读取的网页数据范围之内,如果是,按规定的顺序,过滤所述读取的网页数据,获取翻译数据,所述规定的顺序为,在所述读取网页数据范围内,从鼠标位置读取若干段包括单位预置大小数据包的网页数据,然后按网页代码的先后顺序读取余下的所述读取网页数据;否则,按所述读取网页数据的先后顺序,过滤所述网页数据,获取翻译数据。
方式二,在触发翻译进程后:
b1)判断触发方式是否为触发翻译程序按钮方式,如果是,继续步骤b2),否则,记录鼠标位置,继续步骤b3);
b2)判断是否选中网页数据,如果是,按网页代码的先后顺序读取选中网页数据,否则,按网页代码的先后顺序读取当前网页数据;按所述读取网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据;
b3)判断是否选中网页数据,如果是,按网页代码的先后顺序读取选中网页数据,否则,按网页代码的先后顺序读取当前网页数据;判断所述记录鼠标位置是否在所述读取的网页数据范围之内,如果是,按规定的顺序,过滤所述读取的网页数据,获取翻译数据,所述规定的顺序为,在所述读取网页数据范围内,从鼠标位置读取若干段包括单位预置大小数据包的网页数据,然后按网页代码的先后顺序读取余下的所述读取网页数据,否则,按所述读取网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据。
上述网页数据过滤机制可为:设置一个表,将标记数据等非翻译数据保存在表中,读取网页数据时,将读取的数据与表中的数据进行匹配,若匹配成功,则说明当前数据为非翻译数据,不做处理,若匹配不成功,则说明当前数据为翻译数据。
s3)将翻译数据按预置大小进行划分,组织数据包
按一定的顺序读取网页数据,在读取网页数据的过程中,按上述的过滤机制过滤掉非翻译数据,从而获得翻译数据。每获得预置大小的翻译数据时,将包含该大小的翻译数据的网页数据作为一个数据块进行处理,并将该数据块中的翻译数据组织成一个数据包。在本实施例中,设置的数据包大小为32k字节。
可以理解的是,划分数据包的大小可以根据实际情况预先在程序中进行设置。
具体的,鼠标位置的翻译数据的获取过程可为,通过操作***及浏览器所提供的函数接口可以获取与鼠标位置最为接近的字符,然后获取该字符附件的翻译数据。获取鼠标位置附近数据的策略可根据实际情况而定。以下对该翻译数据的获取进行举例:
方法一,以该字符为中心向前读取包含16k字节的翻译数据的网页数据,再向后读取16K字节的翻译数据的网页数据,将这两块翻译数据组织成一个数据包进行处理;方法二,将与鼠标位置最为接近的字符前32k字节的翻译数据作为一个数据包进行处理,该字符后32k字节的翻译数据作为一个数据包进行处理。
在读取包含预置大小的翻译数据的网页数据,进行划分数据块时:
A1)将每一段连续的翻译数据作为一个数据项(dt)进行保存。
A2)为每个数据项(dt)设置一个唯一标识编号(GID)。该编号在整个网页数据(DATA)中唯一。
A3)记录每个数据项在网页数据(DATA)中的起始位置及结束位置。
划分数据块后,将数据块里的翻译数据组织成数据包:
B1)为数据包设置一个唯一标识的编号(Package_SID);
B2)数据包设置一个优先级。
上述优先级设置策略可为:用自然数字按照获取数据块的先后顺序进行设置。最先获取的数据块的优先级为1,第二个获取的数据块的优先级为2,依此类推。越先获取的数据块的优先级越高。
请参考图3,是翻译前数据数据包结构示意图,该数据包结构包括:(1)数据包标识(Package_SID);(2)数据包优先级(Pri);(3)数据项标识信息(包括GID和POS);(4)数据项具体数据。
其中数据项标识信息,包括数据项的唯一标识编号(GID)以及数据项在数据包中的位置(POS)。在进行数据包封装时,对数据项的偏移量(POS)进行了定义。POS指以数据包的起始点为基准,表述数据项在数据包中的实际偏移量。
s4)创建数据包对应的索引表,发送数据包到管理服务器。
索引表的编号(Index1_SID)和对应的数据包的唯一标识标号(Package_SID)相同。表1为翻译前索引表格式例子:
该表唯一标识编号:Index1_SID
数据编号 |
起始地址 |
结束地址 |
翻译后数据(初始值为空) |
dt1_GID |
5 |
30 |
NULL |
dt2_GID |
41 |
56 |
NULL |
dt3_GID |
63 |
75 |
NULL |
表1
翻译前索引表数据包括:(1)数据项(dt)的GID;(2)数据项(dt)的起始位置(start);(3)数据项(dt)的结束位置(end);(4)数据项(dt)对应的翻译数据(NULL)。
s5)根据数据包的优先级和翻译服务器的状态,管理服务器发送数据包到翻译服务器。
管理服务器收到数据包后,根据数据包优先级和翻译服务器当前状态进行数据包分配。管理服务器优先将优先级高的数据包发送给翻译服务器,翻译服务器当前状态包括为服务器的数据处理性能和服务器的负载程度。
具体的,当需翻译数据量很大的时候,可能需要若干台翻译服务器对数据包进行处理,管理服务器应用一定的算法,评估每台翻译服务器当前的状态,按均衡处理的原则将数据包分给翻译服务器,使得翻译服务器群协同工作。
s6)翻译服务器翻译数据包,翻译完后,反馈翻译结果到客户端。
请参考图4,为翻译后数据包结构示意图。该数据包结构包括:(1)数据包标识(Package_SID);(2)数据项标识信息(包括GID和New_POS);(3)翻译后数据项具体数据。
其中数据项标识信息,包括数据项的唯一标识编号(GID)以及翻译后的数据在数据包中的位置(New_POS)。在进行数据包封装时,对数据项的翻译数据的偏移量(New_POS)进行了定义。POS指以数据包的起始点为基准,表述数据项的翻译数据在数据包中的实际偏移量。
s7)根据索引表的对应关系,在客户端创建新的网页,显示翻译数据。
具体的,当客户端收到翻译后的数据包后,将每个翻译后的数据项(dt),保存到索引表中相应的位置中。表2为翻译后索引表格式例子:
该表唯一标识编号:Index1_SID
数据编号 |
起始地址 |
结束地址 |
翻译后数据(初始值为空) |
dt1_GID |
5 |
30 |
dt1_new |
dt2_GID |
41 |
56 |
dt2_new |
dt3_GID |
63 |
75 |
dt3_new |
表2
翻译后索引表数据包括:(1)数据项(dt)的GID;(2)数据项(dt)的起始位置;(3)数据项(dt)的结束位置;(4)数据项(dt)对应的翻译数据(dt_new)。
具体的,以下为客户端显示翻译结果的过程:
C1)接收反馈回来的翻译后的数据包;
C2)将上述数据包里的翻译数据保存到对应的索引表中;
C3)在内存中,创建新的网页,并设置原始网页数据的指针;
C4)使用指针的方法,按原始网页数据的先后顺序,依据推动指针,判断指针位置是否有翻译后的数据,如果没有,将指针当前位置上的原始网页的数据复制到新网页,如果有,将翻译后的数据追加到新网页,直到指针走完全部原始网页数据。
C5)显示新网页;
C6)当有新反馈回来的翻译后的数据包时,重新执行上述步骤b1)~b5)。
为了进一步理解本发明,以下举例说明显示翻译结果的过程。
假定现有欲翻译的数据段,把它划分为三个数据包分别为数据包(Package1)、数据包(Package2)和数据包(Package3),它们的优先级分别为:中,高,低;相应的,创建了三个索引表分别为索引表(Index1)、索引表(Index2)和索引表(Index3);反馈回来翻译后的数据包的顺序是数据包(Package2_new),数据包(Package1_new),数据包(Package3_new)。
首先,客户端首先接收到反馈回来的数据包(Package2_new),根据数据包(Package2_new)唯一标识标号(Package2_SID),在客户端找到相应的索引表(Index2),依据数据包中数据项的dt_GID,将数据包的数据项翻译数据(dt_new)保存到索引表中。
当前,三个包对应索引表的结构如下:
Index1:
数据编号 |
起始地址 |
结束地址 |
翻译后数据(初始值为空) |
dt1_GID |
5 |
30 |
Null |
dt2_GID |
41 |
56 |
Null |
dt3_GID |
63 |
75 |
Null |
Index2:
数据编号 |
起始地址 |
结束地址 |
翻译后数据(初始值为空) |
dt4_GID |
81 |
100 |
dt4_new |
dt5_GID |
104 |
150 |
dt5_new |
Index3:
数据编号 |
起始地址 |
结束地址 |
翻译后数据(初始值为空) |
dt6_GID |
172 |
184 |
NULL |
dt7_GID |
190 |
201 |
NULL |
dt8_GID |
211 |
231 |
NULL |
其次,在内存中创建一个新的网页,设置一个指针C,指针C的初始值为0。
然后,遍历所有索引表中的每个数据项,找到起始地址最小并且保存有翻译后数据的数据项。在这里,数据项地址最小的是索引表(Index1)中的数据项dt1_GID。由于该数据项dt1_GID没有保存翻译数据,继续检索除dt1_GID数据项之外的下一个起始地址最小的并且保存有翻译数据的数据项,在本例中,是索引表(Index2)中的数据项dt4_GID,获取该项数据的起始地址81。
将原始网页数据中指针C位置开始到81结束的网页数据复制到新的网页0至81的位置中。
将dt4_GID对应的翻译后的数据dt4_new,从索引表中取出,追加到新的网页中。
将指针C的值更改为dt4_GID对应的结束地址。
检索下一个起始地址最小的并且保存有翻译数据的数据项,在本例中是索引表(Index2)中的数据项dt5_GID,获取该项数据的起始地址104。
将原始网页数据中指针C位置开始到104结束的网页数据追加到新的网页中。
将指针C的值更改为dt5_GID对应的结束地址150。
检索下一个起始地址最小的并且保存有翻译数据的数据项,未检索到。
将原始网页数据中指针C位置开始的网页数据追加到新的网页中。
在客户端显示新的网页。
当接收到数据包(Package1_new)和数据包(Package3_new)后,重复以上的过程。
根据以上翻译网页方法的原理,本技术方案还提供了一种翻译网页的***。
请参考图5,为本发明翻译网页的***结构图。该***包括数据获取模块110、数据组织模块120、管理服务器210、翻译服务器群300和翻译数据显示模块130。数据获取模块110用于获取翻译数据;数据组织模块120用于将数据获取模块110获取的翻译数据划分为预置大小的数据包,并创建索引表,设置数据包的优先级,发送所述数据包给所述管理服务器;管理服务器210由于根据数据包优先级和翻译服务器群300各服务器的当前状态,发送翻译数据包给所述翻译服务器群300的各翻译服务器;翻译服务器群300用于翻译数据,反馈翻译数据结果;翻译数据显示模块130用于根据索引表的对应关系,将所述翻译服务器群300翻译好的数据显示到新网页上。
数据获取模块110首先判断是否触发了翻译进程,如果是,判断当前网页是否选中了网页内容,如果是,则读取选中的网页数据;否则,读取当前网页数据。判断触发方式是否为翻译程序按钮方式,如果是,按所述读取的网页数据的先后顺序,过滤所述读取的网页数据,获取翻译数据;否则,记录鼠标位置,判断所述记录鼠标位置是否在所述读取的网页数据范围之内,如果是,按规定的顺序,过滤所述读取的网页数据,获取翻译数据,所述规定的顺序为,在所述读取网页数据范围内,从鼠标位置读取若干段包括单位预置大小数据包的网页数据,然后按网页代码的先后顺序读取余下的所述读取网页数据,否则,按所述读取网页数据的先后顺序,过滤所述网页数据,获取翻译数据。数据组织模块120将获取的数据段划分为预置大小的数据包,并创建与数据包对应的索引表,设置数据包的优先级,然后将数据包发送给管理服务器310。管理服务器210根据翻译服务器群300各服务器当前的状态和数据包的优先级,将数据包分配给翻译服务器群300各翻译服务器。翻译服务器群300翻译完数据后,将结果反馈给翻译数据显示模块130。翻译数据显示模块130查询数据包对应的索引表,把翻译数据复制到索引表对应的位置,然后把翻译数据显示到客户端新网页上。
以上对本发明所提供的一种翻译网页的方法和***进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。