对资源数据的有效存储和取回的制作方法

文档序号:29562547发布日期:2022-04-09 01:24阅读:90来源:国知局
对资源数据的有效存储和取回的制作方法

1.本公开总体涉及数据压缩,更具体涉及用于压缩软件资源的经改进的方法和系统。


背景技术:

2.许多软件应用包括大量的资源数据(例如,资源字符串)。例如,许多应用存储需要在应用的用户界面中显示的字符串。资源文件通常被用于存储针对应用或应用套件的资源字符串。当需要特定的资源字符串或字符串集以用于在用户界面中显示时,可以由应用的其他组件在运行时访问资源文件。由于在复杂软件应用中使用多个资源文件,因此资源文件的总大小可能对最终应用的大小做出显著贡献。这对于为给定菜单标签或其他用户界面元素提供语言本地化支持的应用尤其如此。如果字符串必须以许多种不同的语言可用,则资源文件的数量和/或大小可能显著增加,从而导致更大的应用。因此,使用压缩技术来减少在应用中所使用的资源文件的大小可能是有利的。
3.当供应和交付应用时面临带宽和存储约束时,减小大小的资源文件可能是特别有用的。例如,减小的文件大小可能使下载应用包的速度比以其他方式更快。另外,减小的文件大小一旦被下载到本地环境后可能需要更少的本地存储空间。
4.尽管存在用于压缩文本文件的多种压缩技术,但是许多技术并不十分适合于压缩相对短的文本字符串,诸如资源字符串。此外,用于压缩短的文本字符串的压缩技术常常不适合于压缩不同语言的相同资源字符串。
5.因此,需要一种经改进的方法和系统来压缩和解压缩资源数据。


技术实现要素:

6.在一个一般方面中,本公开提出了一种设备,所述设备具有:处理器;以及与所述处理器通信的存储器,其中,所述存储器包括可执行指令,所述可执行指令当由所述处理器运行时使得所述设备执行多项功能。所述功能可以包括:接收软件资源,所述软件资源是采用第一语言的;接收用于压缩的本地化软件资源,所述本地化软件资源是采用第二语言的,其中,采用所述第一语言的所述软件资源是所述本地化软件资源的对应体(counterpart);至少部分地基于所述软件资源中的一个或多个第一语言词语并且基于来自全局词典的数据来创建针对所述本地化软件资源的第一本地词典;以及基于所述本地词典来压缩所述本地化软件资源。
7.在又一一般方面中,本技术描述了一种用于压缩本地化软件资源的方法。所述方法可以包括:接收软件资源,所述软件资源是采用第一语言的;接收用于压缩的本地化软件资源,所述本地化软件资源是采用第二语言的,其中,采用所述第一语言的所述软件资源是所述本地化软件资源的对应体;至少部分地基于所述软件资源中的一个或多个第一语言词语并且基于来自全局词典的数据来创建针对所述本地化软件资源的第一本地词典;以及基于所述本地词典来压缩所述本地化软件资源。
8.在另外的一般方面中,本技术描述了一种在其上存储有指令的非暂时性计算机可读介质,所述指令当被运行时使得可编程设备用于:接收用于压缩的本地化软件资源,所述本地化软件资源是采用第二语言的,其中,采用第一语言的所述软件资源是所述本地化软件资源的对应体;至少部分地基于所述软件资源中的一个或多个第一语言词语并且基于来自全局词典的数据来创建针对所述本地化软件资源的第一本地词典;以及基于所述本地词典来压缩所述本地化软件资源。
9.提供本发明内容是为了以简化形式介绍对概念的选择,这些概念将在下文的详细描述中进一步描述。本发明内容并非旨在识别所要求保护的主题的关键特征或必需特征,也并不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题并不限于解决在本公开的任何部分中指出的缺点中的任何或所有缺点的实现方式。
附图说明
10.附图仅通过示例而非限制的方式描绘了根据本教导的一种或多种实现方式。在图中,相似的附图标记指代相同或相似的元件。此外,应当理解,附图不一定是按比例绘制的。
11.图1描绘了可以在其上实现本公开的各方面的示例性操作架构。
12.图2是用于减小应用的一个或多个资源文件的大小的流程图。
13.图3a-3b是用于创建可以用于压缩资源文件的共享词典的流程图。
14.图4是描绘了用于创建资源词典以用于减小应用的一个或多个资源文件的大小的示例性方法的流程图。
15.图5是描绘了用于压缩本地化资源的示例性方法的流程图。
16.图6是描绘了用于解压缩针对应用的本地化资源的示例性方法的流程图。
17.图7是图示了示例软件架构的框图,所述示例软件架构的各个部分可以与在本文中所描述的各种硬件架构结合使用。
18.图8是图示了被配置为从机器可读介质读取指令并其执行在本文中所描述的特征中的任意特征的示例性机器的组件的框图。
具体实施方式
19.在以下详细描述中,通过示例的方式阐述了许多具体细节,以便提供对相关教导的透彻理解。普通技术人员在阅读本说明书后将明白,能够在没有这样的细节的情况下实践各个方面。在其他情况下,公知的方法、过程、组件和/或电路已经在没有细节的相对较高的水平上进行了描述,以避免不必要地模糊本教导的各方面。
20.在当今的计算环境中,许多软件应用是采用若干不同的语言来本地化的。例如,一些microsoft应用已经采用超过100多种语言本地化。许多软件应用将需要在所述应用的用户界面中显示的资源字符串存储在资源文件中。当使用许多种不同的语言来对应用进行本地化时,针对所有那些语言的资源字符串可能需要被存储在单独的资源文件中。这可能导致应用具有占用大量空间的大量资源文件。例如,一种语言的资源在一个应用中可能占用大约100mb的空间。因此,当提供多种语言时,针对所有语言的资源可能占用显著大量的磁盘空间。该空间有时甚至可能大于针对应用自身所需的空间量。所需的大量空间会导致部署效率低下、存储器空间要求过高、并且通常增加应用的占用空间。
21.用于数据压缩的目前可用的过程常常并不适合于压缩短的字符串,诸如用于软件应用的资源字符串。此外,作用于短的字符串的数据压缩技术没有考虑采用不同语言的资源字符串的特定特性。因此,当前可用的数据压缩技术都没有为采用不同语言的资源字符串提供高效的压缩和解压缩。
22.为了解决这些技术问题以及更多的技术问题,在示例中,本说明书提供了一种用于压缩本地化软件应用资源的有效方法的技术解决方案。为了改进数据压缩的当前方法,本技术解决方案提供了一种翻译相似性压缩技术,其利用本地化资源文件的结构来实现高压缩率。所述压缩技术可以利用采用诸如英语的第一语言的资源作为针对采用其他语言的资源的压缩和解压缩的基础。这是因为英语资源常常在客户端设备上可用,并且包含可以被用于压缩翻译的有价值的信息。通过使用采用第一语言的资源作为基础以及针对每种语言的通用翻译词典,能够显著压缩采用其他语言的资源。因此,所述技术解决方案提供了一种用于压缩本地化软件应用资源的非常有效的机制。
23.如本领域技术人员在阅读本公开内容后将理解的,由这样的技术解决方案提供的益处和优点可以包括但不限于对软件应用的低效、资源密集型存储和部署的技术问题的解决方案。在本文中所提供的技术解决方案和实现方式优化并且改进了压缩、存储以及访问本地化软件应用资源的过程。由这些技术解决方案提供的益处包括提供了对软件应用的部署和存储的提高的效率,并且因此能够改进使用利用所述技术解决方案的软件应用的计算机设备。
24.图1图示了可以在其上实现本公开的各方面的示例性操作架构100。系统100可以包括构建平台105,在构建平台105上可以托管构建环境110。构建环境110可以被用于构建应用115。应用115可以包括一起形成程序或程序套件的多种元素,其非限制性示例由一个或多个资源文件120和代码125来表示。可以在构建环境110中针对应用115执行各种过程以便产生应用包,诸如编译代码、打包二进制代码、运行自动化测试。
25.作为构建应用115的部分,构建环境110可以包括压缩过程130,压缩过程130可以被应用于应用115的元素。在示例中,压缩过程130可以被应用于资源文件120中的一个或多个资源文件,并且可以包括翻译压缩过程135以减小至少一个资源文件107的大小,如下文更详细讨论的。
26.一旦应用被开发,就可以将包括资源文件120和代码125的应用包140上传或者以其他方式提供给服务平台145。
27.应用供应服务150然后可以以多种方式中的任意方式将应用包140分发到运行时平台以供本地执行。运行时平台155表示一个这样的本地运行平台。例如,可以将应用包140下载到运行时平台155,并且作为本地应用165被安装在运行时环境160中。在另一示例中,可以将应用包140流送到运行时环境160中。替代地,可以将所述应用包提供为在浏览器应用的运行时环境的上下文中运行的web应用。应当注意,尽管单独示出,但是构建环境110可以与服务平台145和/或应用供应服务150集成。
28.在运行时环境160中,资源文件120的内容在运行时可以被解压缩和/或解码,因为被存储在其中的资源被代码125的运行组件访问。具体地,资源文件120可以包括在其中存储资源字符串的至少一个资源文件。当需要时,从所述资源文件中取回相关字符串,进行解压缩和解码,并且在本地应用135的用户界面中显现。
29.在实现方式中,压缩过程130包括翻译相似性压缩技术,该技术旨在使用诸如英语的第一语言的资源作为用于压缩其他语言的资源的基础来压缩本地化软件资源。在本公开中使用英语作为第一语言的主要示例,因为英语常常在运行时充当默认的后备语言。因此,任何时候在本公开中提及英语资源时,应当理解,任何其他语言都可以代替英语用作基本语言。此外,在一种实现方式中,可以使用语言链作为基础语言。例如,因为西班牙语-墨西哥(es-mx)类似于西班牙语-西班牙(es-sp),因此es-mx本地环境可能是es-sp资源的子集。这可能意味着可见的es-mx被翻译,而其余的则保留在es-sp中。在这样的情况下,可以使用两种语言来部署软件产品(例如,es-sp和英语)。在这样的情况下,为了有效地压缩es-mx资源,可以使用es-sp作为基础语言,并且然后可以利用英语(例如,en-us)作为基础来压缩es-sp资源。为了解压缩,首先可以解压缩es-sp,并且然后从经解压缩的es-sp中解压缩es-mx。
30.返回以英语作为基础语言,英语资源可能在部署时可用,并且常常包含能够被用于对翻译的压缩的有价值的信息。例如,英语资源可以包含关于将可能出现在资源的翻译中的词语集合的信息、关于标点符号、占位符以及可能迁移到翻译中的其他不可翻译片段的信息,以及其他语言信息(例如,大写、标点符号等)。因为所有这种信息已经在英语资源中可用,并且因为所述信息中的一些信息直接对应于采用其他语言的对应信息,所以通过简单地使用英语资源作为查找采用另一种语言的对应资源(例如,英语资源的翻译)的基础,可以节省大量的存储器空间。
31.资源文件可以包括内容(例如,资源字符串)、内容的偏移量(例如,指针)、以及针对内容的标识符。资源字符串可以是具有特定标识符的短文本字符串。在一种实现方式中,应用代码能够从数据库源(例如,数据库文件)获得所述资源字符串,所述数据库源提供通过其标识符来查找资源。当资源字符串以多于一种语言可用时,相同的标识符可以被用于多于一种语言的资源字符串。例如,英语资源字符串“save a copy”以及其对应的西班牙语资源字符串“guardar una copia”可能具有相同的标识符,即使其被保存在不同的资源文件中。表1提供了与上文所描述的英语和西班牙语短语相对应的两个单独资源文件的可用数据的示例。
32.文件名称标识符偏移内容resources.en-us0x000000018save a copyresources.sp-sp0x000000018guardar una copia
33.表1
34.如在表1中所示的,即使文件的内容resources.en.us和resources.sp.sp是不同的,但是相同的标识符和相同的偏移可以被用于英语字符串以及其对应的西班牙语翻译。
35.如上文所讨论的,英语资源可以被用于压缩采用不同语言的对应本地化资源。作为简化的示例,资源字符串“save a copy”能够被用于压缩对应的西班牙语资源字符串“guardar una copia”。这是因为英语字符串除了包含用于完成翻译所需的语言信息之外,还包括创建西班牙语资源需要翻译的词语集合,诸如,将所述短语中的第一词语大写,词语之间加空格,以及不要在句子的末尾添加任何标点符号。因为该西班牙语字符串中的语言信息对应于(例如,相同于)英语资源中的语言信息,所以对英语资源的使用能够显著减少用于存储西班牙语资源所需的存储器空间。结果,为了压缩西班牙语资源,可以使用通用英
语-西班牙语翻译词典。该词典可以是为所有应用共享和/或与操作系统或开发平台一起部署的通用词典。另外,能够为每个资源文件创建词典。因为短语“guardar una copia”包含与其英语对应短语处于相同位置的所有词语,所以能够使用通用翻译词典对其进行编码。通过使用通用翻译词典并且使用来自本地词典中的索引,整个短语可以以6位编码为000110。
36.表2图示出了用于对西班牙语短语进行编码所需的示例位。
37.英语词语索引(dec)索引(bin)西班牙语词语save000guardara101unacopy210copia
38.表2
39.应当注意,针对资源的索引的位数量可以变化。例如,如果词典包含8个词语,则针对索引可能需要3个位。必要的位数量可能是压缩数据的一部分,并且因此其自身可能需要4个位。这可能是不可避免的,因为并非所有英语短语都包含所有必要的西班牙语词语。因此,本地词典的大小可能无法仅通过英语文本来预测。
40.在上文所使用的示例性短语中,4个位的位元是0010(十进制中的2)。因此,经压缩的数据可能适合于总共10个位:0010000110。在该示例中,西班牙语短语与其对应的英语短语非常相似(例如,在词语数量、语言信息等方面),以至于所述短语可以仅利用位元信息压缩为0000。这可能意味着索引不需要位,因为词语处在英语短语和西班牙语短语两者中的相同位置。结果,压缩短语“guardar una copia”可能仅需要4个位的存储空间(例如,1/2字节)。这意味着34个字节的unicode字符串可以被压缩到半个字节,由此导致显著的大小减小。
41.在一种实现方式中,为了解压缩所述短语,可以采取以下步骤。首先,可以通过将所述短语拆分为组成所述短语的词语(例如,“save”“a”“copy”)来创建来自英语短语“save a copy”的本地词典。接下来,可以收集来自英语短语的语言信息,然后在翻译词典中查找针对所述短语中的词语中的每个词语的翻译。一旦识别出西班牙语词语,就可以将其定位在其索引处,然后再应用来自英语资源的语言信息来重新创建整个西班牙语资源。以这种方式,本技术解决方案能够快速并且高效地解压缩经压缩的资源字符串。
42.图2是描绘了用于减小应用的一个或多个资源文件的大小的示例性方法200的流程图。在202处,方法200可以通过接收关于压缩资源数据的请求开始。所述请求可以作为所述应用构建过程的一部分从构建环境的一个或多个元件接收。在一种实现方式中,所述请求可以包括一个或多个本地化资源以及其对应的英语对应体以用于压缩。一旦接收到请求,方法200就可以在204处通过首先移除被识别为重复的内容来继续准备所述数据。这可能是必需的,因为在应用中具有重复的资源是很常见的。在针对应用构建资源时,常常针对每个场合来创建新资源,即使资源的内容是相同的。例如,即使资源字符串的内容相同,两个不同的用户界面元素也可能不使用相同的资源。这可能导致应用中出现大量重复的内容。在一种实现方式中,一旦识别出重复的内容,就通过将偏移指向相同内容的第一次出现并且从列表中移除重复的内容,将其从正在被压缩的资源数据的列表中移除。
43.表3提供了针对内容“save a copy”的这样的移除的示例。
[0044][0045]
表3
[0046]
如果针对短语“save a copy”存在多个资源字符串,则可以将第一次出现添加到所述列表,而针对其余的出现,偏移等于第一次出现的偏移并且所述内容被移除。这可以确保仅检查资源字符串并且一次将其添加到经压缩的资源数据。
[0047]
一旦从资源数据的列表中移除了所有重复的内容,方法200就可以在206处继续移除在本地化资源中识别出的英语资源。这是因为并非本地化资源中的所有内容都需要翻译成每种本地化语言。例如,短语“microsoft word”可以被翻译成一些语言,而在其他语言中仍然是英语。然而,采用多种语言存储相同的内容是不必要并且重复的。因此,当英语短语在本地化资源中被识别时,如果其被识别为已经在列表上的英语资源的副本,则其可以被移除。这可以通过从源文件中移除内容并且然后移除标识符来完成。表4图示了从西班牙语资源文件中移除短语“microsoft word”的示例。
[0048][0049]
表4
[0050]
作为移除的结果,包括重复的英语内容的资源字符串可以保留在英语资源文件中,并且从本地化的资源文件中移除。在一种实现方式中,在解压缩期间,其可以通过资源回退机制来获得。因为在本文中所讨论的翻译压缩机制依赖于英语资源,所以当在本地化文件中不存在资源标识符时,压缩机制可以回退到英语。
[0051]
一旦所有重复的本地化和英语内容都已经被移除,方法200就可以继续在208处创建用于在压缩和解压缩期间使用的共享(全局)词典。在一种实现方式中,所述共享词典可以是用于将词语从英语翻译为另一种语言的通用词典。然而,为了确保效率,词典中可用的术语可能限于在本地化中所使用的术语。在示例中,所述共享词典是根据应用中的英语和本地化内容来创建的。所述共享词典可以包含每个英语词语的一个或多个翻译。其还可以包含语言变体,例如具有不同格词尾的翻译。所述共享词典能够在应用集合(例如,软件产品集合)之间共享。在一种实现方式中,所述共享词典能够在由公司创建的所有产品之间共享。例如,所述共享词典可以作为诸如.net的开发平台的一部分来提供,或者作为语言数据的操作系统的一部分来提供。下文关于图3a-3b的方法300的步骤详细描述了准备共享词典的过程。
[0052]
在创建所述共享词典之后,方法200可以继续以在210处生成文件词典。所述文件词典可以是由一个资源文件存储和使用的词典。当资源文件包含所述共享词典未涵盖的稀有术语或不常见的翻译时,资源文件可能除了所述共享词典之外还需要文件词典。在一种实现方式中,如果未提供共享词典,则所述文件词典可能变得必要。所述文件词典可以是文件的经压缩的数据的一部分。因此,对文件词典的使用和存储可能对压缩率产生负面影响。在一种实现方式中,共享词典和文件词典具有相同的结构,并且可能仅在其存储的位置方面不同。共享词典可以位于针对许多应用的共享位置,而文件词典可以被存储在资源文件
中以用于对该文件的单独使用。在一种实现方式中,所述文件词典与所述共享词典相组合(例如,被添加到共享词典的末尾)并且一起进行索引。
[0053]
一旦创建了共享词典和任何需要的文件词典两者,方法200就可以在212处为资源数据中的每个资源开发资源词典。资源词典可以包含出现在个体资源字符串中的英语词语和翻译。下文关于图4的方法400详细讨论了用于创建资源词典的过程。一旦准备了所有需要的词典,方法200就可以继续以在214处对每个资源字符串执行数据压缩,如关于图5的方法500所讨论的。
[0054]
在数据压缩已经完成之后,方法200可以继续以在216处对经压缩的资源执行去重复。这是因为在短词典中所述经压缩的数据可以包含索引集合。这些索引可能彼此相似,无论其表示的内容如何。例如,如果资源词典有2个词语,则针对所述词典中的所有资源,所述压缩数据可能是0,1或者1,0。结果,许多经压缩的资源将是相同的,并且因此可以消除这样的重复的资源。因此,在压缩之后的去重复可以显著减少记录的数量。在示例中,在压缩之后的去重复将记录的数量减少了大约25%。这导致减少的文件大小并且帮助技术解决方案实现甚至更高的压缩比。
[0055]
图3a-3b是描绘了用于创建可以被用于压缩资源文件的共享词典的示例性方法300的流程图。在302处,方法300可以通过接收关于创建共享词典的请求开始。所述请求可以从图2的方法200接收,作为压缩应用的资源文件的过程的一部分。在接收到所述请求之后,方法300可以继续以在304处首先在需要被压缩的本地化资源的列表中识别本地化资源。一旦已经识别出第一候选本地化资源,就可以在306处将本地化资源的内容划分为组成资源的词语,然后在308处,将内容的每个单独词语与所述词语的英语翻译配对。然后,在310处,每个配对被收集到组成所述词典的配对列表中。当收集到第一配对时,在312处,针对列表中的每个配对将计数器设置为1。在314处,针对所述列表中的每个重复配对,计数器可以增加一并且可以移除重复配对。以这种方式,即使一个或多个词语在所述资源中是重复的,列表中针对词语的每个集合仅存储一个配对。
[0056]
在所识别出的资源中的每个词语与英语翻译配对之后,方法300可以继续以在316处确定在资源数据中是否存在任何更多资源。这可以涉及检查不同资源文件中的各种资源字符串以确定每个资源字符串是否已经根据方法300的步骤进行了处理。当在316处识别出更多的资源字符串时,方法300可以返回到步骤306以将所识别出的资源划分为其词语并且继续创建英语和翻译词语配对的过程。
[0057]
当已经以这种方式处理了所有资源时,方法300可以在316处确定没有其他资源能够被识别,在这种情况下,可以继续以在318处按照其出现的次数对在先前步骤中已经生成的配对进行排序。一旦已经对所有生成的配对进行了排序使得出现次数较高的那些配对位于所述列表的顶部(例如,比所述列表中的任何其他配对出现更多的配对是所述列表中的第一个),方法300就可以在320处进行到图3b的步骤330。
[0058]
方法300可以在330处通过选择具有最高出现率(occurrence)的配对来继续。在332处,可以通过将所选择的配对的英语词语添加到词典中的所使用的英语词语的列表来将所述配对添加到所述词典,然后在334处,将所述配对的对应翻译词语添加到词典中的所使用的翻译词语的列表。在第一配对已经被添加到词典之后,方法300可以在336处确定在配对的排序列表中是否存在任何其他配对。
[0059]
当在336处识别出更多配对时,方法300可以在338处选择具有最高出现率的下一配对。然后,在340处,可以检查所选择的配对以确定英语词语或翻译词语是否是已经在所使用的英语词语的列表或者所使用的翻译词语的列表中的词语的重复体。当在所选择的配对中的两个词语被识别为不是重复体时,方法300可以返回到步骤332以将英语词语添加到词典中英语词语的列表中,然后进行到步骤334。当英语词语被确定为重复体但是翻译不是时,方法300可以替代地返回到步骤334以仅将翻译添加到列表。然而,如果仅仅所述翻译被确定是重复体,则方法300可以返回到步骤332以将英语词语添加到列表,但是可以跳过步骤334。
[0060]
当确定所述配对中的两个词语都是重复体或者当在步骤336处没有识别到其他配对时,方法300可以继续以在342处识别资源内容中没有英语对应体的本地化词语。这是因为在一些情况下,即使英语资源中的词语与对应的本地化语言被配对,一些本地化词语可能仍然没有英语对应体。为了确保完整性,可以在344处将这些词语添加到本地化词语的列表。以这种方式,方法300可以确保存在于本地化资源中的所有词语出现在翻译词典中或者出现在本地化词语列表中而没有识别出的翻译。
[0061]
一旦已经创建了没有翻译的本地化词语的列表,则在346处,就可以将该列表与词典相组合。然后,在348处,可以按照出现的次数对经组合的列表进行排序。然后,在350处,可以对经排序的列表进行索引以完成共享词典。通过在对其进行索引列表之前首先对所述列表进行排序,方法300可以确保最频繁使用的词语与较小的索引相对应。在一种实现方式中,如果共享词典被多于一个资源文件使用,则可以对所述词典进行索引,使得非共享词语的列表在共享词语的列表之后被索引。
[0062]
以这种方式,可以生成其中一个英语词语与本地化词语相对应的共享词典。这可以创建具有有限词语的双语词典,其可以包括最常一起出现的第一语言和第二语言的词语配对。在一种实现方式中,方法300的过程可以针对一些语言被拒绝的配对而重复。这可以创建具有多于一个与英语词语相对应的翻译的词典。拒绝配对可以指代组合在一起但是被确定为不具有彼此归属的可能性的词语配对。例如,对于可能都具有翻译“un coche”的两个英语字符串“one car”和“a car”,下表5图示出了可以配对在一起作为试验的词语列表以及是否配对被算法接受。
[0063]
英语西班牙语频率接受/拒绝oneun1接受onecoche1拒绝carun1拒绝carcoche2接受aun1拒绝acoche1拒绝
[0064]
表5
[0065]
基于出现的频率,方法300可以确定词语“car”可能对应于采用西班牙语的词语“coche”。因此,该配对被接受为配对。列表中的第一配对也可以仅仅因为其是表中的第一配对而被接受。然而,其他配对因为英语词语“un”和“coche”已经被占用而被拒绝。为了确保词典不会遗漏重要词语,可以通过利用现有词典作为输入来针对这些被拒绝的配对重复
方法300。现有词典可以确定“a”与“un”相对应。由于该配对尚未在共享词典中,因此可以将配对添加到所述词典。
[0066]
因此,方法300可以创建能够在不同资源文件、不同应用和/或不同产品之间共享的共享全局双语词典。共享词典的功能可能类似于双语词典,但是可以包含有限的术语,因为所使用的术语和翻译常常仅限于本地化中常见的那些。
[0067]
图4是描绘了用于创建资源(本地)词典以用于减小应用的一个或多个资源文件的大小的示例性方法400的流程图。在实现方式中,所述资源词典可以是用于特定资源文件的本地词典。在402处,方法400可以通过接收关于创建针对给定本地化资源的资源词典的请求开始。例如,所述请求可以作为用于压缩应用的一个或多个本地化资源的方法200的过程的一部分而被接收。在接收到所述请求之后,方法400可以在404处识别与正在为其创建资源词典的给定本地化资源相对应的英语资源。一旦识别出英语资源,就可以在406处将其划分为组成英语资源的词语。在一种实现方式中,词语之后的定界符可以被视为另一词语,除非定界符遵循语言的通用规则。例如,如果定界符是在词语之后的空格,则可以将其忽略,但是可以将逗号视为词语。
[0068]
在将英语资源拆分成个体词语之后,在408处,可以根据英语词语来创建资源词典。这可以通过在共享和/或文件词典中定位针对每个英语词语的对应翻译并且通过将每个英语词语与其定位的翻译配对而创建词典来完成。在一种实现方式中,如果英语词语在共享词典中具有多于一种翻译,则将所有可用的翻译添加到资源词典。当不能够针对英语词语找到翻译时,则所述词语可以在没有翻译的情况下被添加到词典。一旦每个英语词语与翻译配对以创建词典,就可以在410处对词语进行索引。表6图示了用于示例性资源字符串“|0restaur
ó
a una versi
ó
n anterior”的资源词典,所述资源字符串具有英语对应体“|0restored to a previous version”。
[0069]
英语词语翻译索引(二进制)|0没有翻译000restoredrestaurado001restoredrestaur
ó
010topara011aa100previousanterior101versionversi
ó
n110
[0070]
表6
[0071]
示例性源字符串“|0restaur
ó
a una versi
ó
n anterior”包括占位符“|0”,其在英语对应体中具有1:1匹配。该占位符不是自然词语,而是资源字符串中的常见占位符。在示例中,当创建资源词典时,存在两种不同的方式可以处理这样的占位符。首先,如果其作为词语存在于共享词典中,则其可以被视为常规词语。在这样的情况下,其可能在英语中显示为“|0”到西班牙语中的“|0”,并且可以使用相同的字符来将其添加到资源词典。然而,如果占位符在共享词典中不可用(例如,因为翻译与词语相同,因此其未被添加),则所述词语可以作为没有翻译而被添加到资源词典,如在表5中所示的。
[0072]
在示例性资源字符串“|0restored to a previous version”中的词语“restored”在共享词典中具有两种翻译,亦即:“restaur
ó”
和“restaurado”。结果,这两种翻译都被添加到词典。然而,西班牙语资源字符串中的词语“una”在英语对应体资源字符串中没有对应的英语词语。这是因为短语“a una”的两个词语都具有“a”的英语翻译。为了确保恰当地处理这一点,在实现方式中,用于创建资源词典的方法不需要在英语与本地化词语之间的一一对应关系,只要对应词语存在于英语内容中即可。相反,在资源词典中使用词语“a”来指向两个西班牙语词语“a una”之一。替代地,针对在英语对应体字符串中没有对应的对应体的词语,所述词语可以被添加到词典,直接引用共享词典,绕过针对该词语的资源词典的优化。
[0073]
一旦已经基于英语词语以及其识别出的翻译创建了资源词典,在412处,本地化资源就可以被划分为组成字符串的个体词语。针对示例性资源字符串“|0restaur
ó
a una versi
ó
n anterior”,这可能涉及创建包括“|0”、“restaur
ó”
、“a”、“version”和“anterior”的列表。
[0074]
然后,可以在414处检查所述列表中的每个个体词语,以在416处确定所述词语是否被包含在所述资源词典中。这可以通过确定所述词语是否在英语资源词典的翻译的列中(表5,第2列)或者英语的列(表5,第1列)来完成。
[0075]
当确定词语在词典中时,方法400可以在422处跳过所述词语,然后在424处继续以确定是否有任何其他未检查的词语保留在本地化资源中。当识别出更多未检查的词语时,方法400可以返回到步骤414以对其进行检查并且确定其是否在词典中。然而,当确定检查出的词语未被包含在资源词典中时,方法400可以在481处在共享词典中定位所述词语。所述词语应当存在于共享词典中,因为共享词典组合了通用双语词典和资源文件独有的词语。一旦词语被定位,就可以将所述词语添加到资源词典,并且参考其在共享词典中的索引作为翻译。以这种方式,即使最初没有为本地化资源中的词语识别正确的翻译,共享词典仍然可以被用于通过使用索引来压缩所述词语,如下文进一步讨论的。针对示例性资源字符串“|0restaur
ó
a una versi
ó
n anterior”,由于词语“una”不在资源词典中,因此可以将其以及其从共享词典的索引添加到词典,从而得到在下表7所图示的资源词典。
[0076][0077][0078]
表7
[0079]
一旦添加了所述词语,方法400就可以进行到步骤424以确定在本地化资源中是否
还存在更多的词语要检查。当识别出更多词语时,方法400可以返回到步骤414以重复先前的步骤。如果没有剩余未检查的词语,则方法400可以简单地移动到步骤426以结束。通过执行以上步骤,可以为使用英语资源的每个本地化资源来创建完整的资源词典。
[0080]
图5是描绘了用于压缩本地化资源的示例性方法500的流程图。在502处,方法500可以通过接收关于压缩本地化资源的请求开始。在接收到请求之后,在504处,可以基于本地索引来设置经压缩的本地化资源的前几个位。在示例中,可以将经压缩的数据的前四个位设置为针对本地索引所需的位数量。针对示例性本地化资源“|0restaur
ó
a una versi
ó
n anterior”,该数字为0011(十进制3),因为最大索引为111(二进制表示法),并且因此其可能需要3个位。
[0081]
然后,可以在506处检查所述本地化资源并且将其划分为组成所述本地化资源的词语。针对本地化资源中的每个词语,方法500在508处可以尝试在资源词典(例如,与本地化资源相对应的资源词典)中找到词语。一旦所述词语在资源词典中被定位,则在510处,可以将来自所述资源词典的、针对词语的本地索引添加到经压缩的资源。然后,方法500可以继续以在512处确定本地索引是否在缺失词语的范围中(例如,从原始资源词典中缺失的“una”,因为其在对应的英语短语中没有对应词语)。因为这些词语被添加到资源词典的末尾处,因此通过查看索引的范围可以容易地确定词语是否是缺失的词语。这是重要的,因为这些词语没有对应的英语对应体,因此正在针对其使用来自共享词典的索引。因此,当确定所述词语是缺失的词语时,方法500可以继续以在514处根据共享词典和资源词典来计算信息。
[0082]
根据来自共享词典和资源词典的信息进行计算可能涉及多个计算。在一种实现方式中,其包括首先计算存储共享词典索引的位元所需的位数量。通常,位元是存储针对最大索引所需的位数量所需的位数量。这可以通过识别共享词典的最大索引并且确定存储其所需的位数量来计算。例如,如果共享词典有50,000个条目(例如,具有翻译的50,000个词语),则索引的范围是0到14,999。因此,最大索引为14,999,即二进制11101010010111。通过对最大索引中的位数量进行计数,可以确定位元为14个位。应当注意的是,该数字是在解压缩时将知道的常数。在一种实现方式中,替代计算所述位元,可以为所有计算选择并且假设合理的数字。例如,能够假设位元为16。这将共享词典限制为65,535,这对于大多数应用来说可能是良好的估计。
[0083]
接下来,存储针对位元而计算的最大索引所需的位数量。在以上示例中,所述位数量被计算为14位,二进制格式为1110,并且因此需要4个位。一旦确定了该信息,方法500就可以确定存储来自资源词典(例如,来自表6的第4列)的最大索引所需的位数量。在上文所提供的示例中,针对词语“una”的最大索引为100101100001,并且因此需要12位。
[0084]
在516处,可以通过将用于存储最大索引而计算出的位数量并且将存储来自资源词典的最大索引所需的位数量的值添加到所插入的位中,来存储所计算出的信息。在以上示例中,这可能涉及向经压缩的数据添加4个位并且将数字12存储在那些位中。方法500然后可以继续以保持来自共享词典的索引,所述索引在资源词典中被关联以用于缺失的词语以供将来使用。针对以上示例,这可能涉及使用上文计算出的位数量(例如,12个位)来存储表6的第4列中针对词语“una”的索引。
[0085]
一旦所述计算被完成并且所述信息被存储,或者当在512处确定所述词语不是缺
失的词语时,方法500可以继续以在520处确定在本地化资源中是否存在任何其他词语要进行检查和压缩。当识别出更多词语时,方法500可以返回到步骤508以在资源词典中找到词语并且继续先前描述的过程。然而,应当注意的是,在第一次计算出存储针对位元而计算的最大索引所需的位元和最大位数量之后,那些数字可能不需要被再次计算,因为其值保持不变。相反,如果所述词语是缺失词语,则方法500可以简单地继续以存储来自位于资源词典中的共享词典的索引。
[0086]
当在520处确定在本地化资源中没有保留其他未压缩词语时,方法500可以继续以在522处使用以上计算出的位数量(例如,针对以上示例为12位)从资源词典添加全局索引。
[0087]
针对示例性资源字符串“|0restaur
óꢀ
a una versi
ó
n anterior”,遵循方法500的压缩技术可能导致到达011(本地索引的位元)、000(第一词语“|0”)、010(词语“restaur
ó”
)、100(词语“a”)、111(词语“una”)、1100(因为“una”是第一缺失词语)、110(词语“versi
ó
n”)、101(词语“anterior”)和100101100001(来自资源词典的全局索引部分)。所得到的压缩数据为011、000、010、100、111、1100、110、101、100101100001。这需要37个位,而不是针对未压缩短语所需的544个位(针对34个字符中的每个字符的2个字节乘以8个位)。因此,使用在本文中所讨论的压缩解决方案导致本地化资源的大小的显著减小。
[0088]
在一种实现方式中,可能也需要将资源字符串的长度存储在压缩数据中,例如,在二进制块的长度未知的情况下。在这样的实例中,在一个示例中,可以存储词语的数量而不是长度。因为计数不能够超过索引加一,所以可能需要相同数量的位来存储所述计数。例如,如果索引需要3个位,那么词语计数也是3个位。因此,所存储的信息可以等于词语的数量减一。在一种实现方式中,该数字被存储在位元之后。然后,经更新的二进制可以等于011、110(在解压缩阶段可能需要该信息以在6个词语之后停止处理位)000、010、100、111、1100、110、101、100101100001。
[0089]
在一种实现方式中,当进行压缩时,还考虑了语法、标点符号以及其他语言信息。例如,如果本地化资源字符串的词语与英语资源的词语次序相同,则可以将4个位的位元设置为0000,并且在解压缩期间不需要其他信息来对短语进行排序。这可能显著减少数据的量,例如,对于en-gb本地环境。然而,当次序或标点符号不同时,可以使用各种不同的机制来考虑差异。例如,当本地化资源具有句点而对应的英语资源没有(或者反之亦然)时,则可以在翻译的末尾处添加句点。例如,如果英语资源是“save a copy”,并且西班牙语资源是“guardar una copia.”,那么要压缩的西班牙语字符串就是“guardar una copia.”,其包括句点。句点可以被视为英语资源没有的额外词语。
[0090]
在一种实现方式中,在解压缩阶段处,可以将次序设置为英语资源的逆转。例如,如果英语资源具有标点符号并且所述经压缩的资源也包括标点符号,那么所述经解压缩的资源将不具有标点符号。例如,对于英语资源“save a copy”,对应的西班牙语资源为“guardar una copia”,待压缩的西班牙语字符串可以是“guardar una copia.”,其包括句点。在解压缩时,然后由于逆转,句点可能被移除。在另一示例中,如果英语资源没有标点符号,但是经压缩的资源具有标点符号,那么经解压缩的资源将具有标点符号。在一种实现方式中,该规则也可以应用于词语之间的空格。如果解压缩内容中不需要空格,但是通用规则建议使用空格,则可以添加空格。如果需要两个或更多个空格,则可以将两个或更多个空格相应地添加到压缩数据。
[0091]
图6是描绘了用于解压缩针对应用的本地化资源的示例性方法600的流程图。在602处,方法600可以通过接收关于解压缩资源字符串的请求开始。然后,方法600可以在606处接收经压缩的资源,然后在606处接收所述经压缩的资源的未经压缩的英语对应体。在一种实现方式中,所述经压缩的资源可以作为关于执行解压缩的请求的一部分来接收。为了执行解压缩,解压缩方法600还可以接收或者被提供对共享词典和文件词典的访问。
[0092]
一旦接收到所有需要的信息,则方法600可以继续以在608处根据英语资源词典来创建资源词典。这可以以与上文针对图4的方法400所讨论的类似方式来完成,其中英语资源被划分为个体词语,并且从共享词典中为每个英语词语取回翻译。应当注意的是,该资源词典此时可能不完整,因为其仅仅是基于英语资源来构建的。例如,参考示例性本地化资源“|0restaur
óꢀ
a una versi
ó
n anterior”,资源词典在该阶段处可能没有词语“una”。
[0093]
在创建资源词典之后,方法600可以继续以在610处从经压缩的资源的前几个位读取位元信息。这可以提供位元信息,并且可以包含在经压缩的数据中表示一个词语所需的位数量。例如,参考示例性资源“|0restaur
óꢀ
a una versi
ó
n anterior”,前三个位011指示针对经压缩的字符串中的每个词语使用3个位。然后,可以使用该数字来读取接下来的3个位等,以识别和解压缩所述词语。
[0094]
一旦识别出需要针对每个下一词语要读取的位数量(n),方法600就可以继续以在612处读取接下来的n个位以确定经压缩的数据中的词语的数量。在以上示例中,接下来的3个位读取110,其指示在本地化资源中有7个词语。接下来,在614处读取经压缩的资源的接下来的n个位。这些接下来的n个位可以是资源词典中的词语的索引,并且因此指向本地化资源中的词语。针对示例性经压缩的数据,接下来的3个位是000,其是针对资源词典中词语“|0”的索引。一旦识别出经压缩的数据中的词语的索引,方法600就可以在616处确定所述索引是否在初始资源词典内。这是因为,如上文所讨论的,在本地化资源中可能存在在英语资源中不存在英语对应体的词语。在解压缩方法600的该阶段创建的当前使用的资源词典中可能不存在这些词语。结果,如果索引不能够位于资源词典内,则可以指示经压缩的资源包括针对共享词典的一个或多个索引。
[0095]
当所述索引被识别为不在所述资源词典内时,方法600继续以在624处读取所述经压缩的数据中的、可以指示全局索引的位元的接下来的几个位。针对示例性资源,这可以指代读取与任何英语词语不对应的索引111,并且然后读取接下来的4位(1100),其是针对全局索引的位元(例如,必要的位数量)。由于这指示本地化资源包括为其提供全局索引的词语,因此方法600可以继续以在626处为压缩数据中的全局索引的数量设置计数器。所述计数器可以被初始设置为一,并且每次识别出新全局索引时,其可以增加一。
[0096]
然而,当在616处确定所述索引能够位于资源词典内时,则方法600可以继续以将翻译从资源词典添加到经解压缩的资源。例如,针对以上示例性资源,在读取第一索引000时,可以将短语“|0”添加到所述经解压缩的资源。方法600然后可以继续以在620处确定其是否是任何未读取的n个位的词语保留在需要被解压缩的经压缩的资源中。
[0097]
当确定在所述经解压缩的数据中存在更多词语时,方法600可以返回到步骤614以读取接下来的n个位并且按照先前的步骤来解压缩所述词语。然而,当确定在所述经解压缩的数据中没有其他n个位的词语时,方法600可继续以在622处读取经压缩的数据中可用的任何全局索引,并且从共享词典查找和插入与全局索引相对应的词语。这是因为,所述全局
索引被放置在经压缩的资源的末尾处。一旦读取了所有全局索引并且从共享词典中查找并且插入其对应的词语,方法600可以在628处将语言规则应用到经解压缩的短语。这些规则可以包括空格和标点符号规则,并且如果需要的话,用于恢复标点符号的上文所描述的规则。在一种实现方式中,基于从对应体英语资源导出的规则来应用规则。例如,如果英语资源的第一词语被大写,则本地化资源的第一词语也被大写。以这种方式,能够快速并且高效地解压整个本地化资源,以获得原始本地化资源。
[0098]
因此,在不同的实现方式中,提供了一种技术解决方案,以用于对应用的本地化资源进行压缩和解压缩的经改进的方法和系统。所述技术解决方案提供了一种压缩机制,以用于通过使用其对应体英语资源作为用于压缩和解压缩的基础来压缩本地化资源。因此,所述技术解决方案为应用的资源压缩、存储和解压缩提供了高效的机制。在示例中,所述技术解决方案提供了20或更高的压缩比,同时节省了95%至99.5%的空间。
[0099]
图7是图示了示例性软件架构702的框图700,其各个部分可以与在本文中所描述的各种硬件架构结合使用,所述硬件架构可以实现上述特征中的任意特征。图7是软件架构的非限制性示例,并且将意识到,可以实现许多其他架构以促进在本文中所描述的功能。软件架构702可以在诸如客户端设备、本地应用提供商、web服务器、服务器集群、外部服务和其他服务器的硬件上运行。代表性硬件层704包括处理单元706和相关联的可执行指令708。可执行指令708表示软件架构702的可执行指令,包括在本文中所描述的方法、模块等的实现方式。
[0100]
硬件层704还包括存储器/存储装置710,其也包括可执行指令708和伴随数据。硬件层704也可以包括其他硬件模块712。由处理单元708持有的指令708可以是由存储器/存储设备710持有的指令708的部分。
[0101]
示例性软件架构702可以被概念化为层,每层提供各种功能。例如,软件架构702可以包括层和组件,诸如操作系统(os)714、库716、框架718、应用720和表示层724。在操作上,应用720和/或层内的其他组件可以调用api调用724到其他层并且接收对应的结果726。所图示的层本质上是代表性的,并且其他软件架构可以包括额外的或者不同的层。例如,一些移动或专用操作系统可能不提供框架/中间件718。
[0102]
os 714可以管理硬件资源并且提供公共服务。os 714可以包括例如内核728、服务730和驱动程序732。内核728可以充当在硬件层704与其他软件层之间的抽象层。例如,内核728可以负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全设置等。服务730可以为其他软件层提供其他公共服务。驱动程序732可以负责控制底层硬件层704或者与其进行接口。例如,驱动程序732可以包括显示驱动程序、相机驱动程序、存储器/存储设备驱动程序、外围设备驱动程序(例如,经由通用串行总线(usb))、网络和/或无线通信驱动程序、音频驱动程序等,具体取决于硬件和/或软件配置。
[0103]
库716可以提供可以由应用720和/或其他组件和/或层使用的公共基础设施。库716通常提供功能以供其他软件模块使用以执行任务,而不是直接与os 714交互。库716可以包括系统库734(例如,c标准库),其可以提供诸如存储器分配、字符串操纵、文件操作的功能。另外,库716可以包括api库736,诸如媒体库(例如,支持对图像、声音和/或视频数据格式的呈现和操纵)、图形库(例如,用于在显示器上渲染2d和3d图形的opengl库)、数据库(例如,sqlite或者其他关系数据库函数)和web库(例如,提供web浏览功能的webkit)。库
716还可以包括各种其他库738,以为应用720和其他软件模块提供许多功能。
[0104]
框架718(有时也被称为中间件)提供可以由应用720和/或其他软件模块使用的更高级别的公共基础设施。例如,框架718可以提供各种gui功能、高级资源管理或高级定位服务。框架718可以为应用720和/或其他软件模块提供广泛的其他api。
[0105]
应用720包括内置应用720和/或第三方应用722。内置应用720的示例可以包括但不限于:联系人应用、浏览器应用、位置应用、媒体应用、消息传递应用、和/或游戏应用。第三方应用722可以包括由除特定系统的供应商之外的实体开发的任何应用。应用720可以使用经由os 714、库716、框架718和表示层724可用的功能来创建用户界面以与用户交互。
[0106]
一些软件架构使用虚拟机,如由虚拟机728所图示的。虚拟机728提供运行环境,在运行环境中,应用/模块能够像其在硬件机器(诸如图8的机器800)上一样运行。虚拟机728可以由主机os(例如,os 714)或管理程序来托管,并且可以具有管理虚拟机728的操作和与主机操作系统的互操作的虚拟机监视器726。可能不同于虚拟机外部的软件架构702的软件架构在虚拟机728内运行,诸如os 750、库752、框架754、应用756、和/或表示层758。
[0107]
图8是图示了示例性机器800的组件的框图,机器800被配置为从机器可读介质(例如,机器可读存储介质)读取指令并且执行在本文中所描述的特征中的任意特征。示例性机器800是计算机系统的形式,在其之内可以运行用于使得机器800执行在本文中所描述的特征中的任意特征的指令816(例如,软件组件的形式)。这样,指令816可以被用于实现在本文中所描述的方法或组件。指令816使得未编程和/或未配置的机器800作为被配置为执行所描述的特征的特定机器来操作。机器800可以被配置为作为独立设备来操作或者可以被耦合(例如,联网)到其他机器。在联网部署中,机器800可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力来操作,或者作为对等或分布式网络环境中的节点来操作。机器800可以体现为例如服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、游戏和/或娱乐系统、智能手机、移动设备、可穿戴设备(例如,智能手表)和物联网(iot)设备。此外,尽管仅图示出了单个机器800,但是术语“机器”包括个体地或者联合地运行指令816的机器的集合。
[0108]
机器800可以包括处理器810、存储器830和i/o组件850,其可以经由例如总线802通信地耦合。总线802可以包括经由各种总线技术和协议耦合机器800的各种元件的多条总线。在示例中,处理器810(包括例如中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、asic或其合适的组合)可以包括可以运行指令816并且处理数据的一个或多个处理器812a至812n。在一些示例中,一个或多个处理器810可以运行由一个或多个其他处理器810提供或识别的指令。术语“处理器”包括多核处理器,所述多核处理器包括可以同时地运行指令的核心。尽管图8示出了多个处理器,但是机器800可以包括具有单个核心的单个处理器、具有多个核心的单个处理器(例如,多核处理器)、每个具有单个核心的多个处理器、每个具有多个核心的多个处理器,或者其任意组合。在一些示例中,机器800可以包括被分布在多台机器之间的多个处理器。
[0109]
存储器/存储装置830可以包括主存储器832、静态存储器834或者其他存储器以及存储单元836,处理器810诸如经由总线802可以对这两者进行访问。存储单元836和存储器832、834存储体现在本文中所描述的功能中的任意一项或多项功能的指令816。存储器/存储设备830还可以存储用于处理器810的临时、中间和/或长期数据。指令916在对其的运行
期间还可以完全地或者部分地驻留在存储器832、834内、在存储单元836内、在处理器810中的至少一个处理器内(例如,在命令缓存器或高速缓存存储器内)、在i/o组件850的至少一个内、或者其任意合适的组合。因此,存储器832、834、存储单元836、处理器810中的存储器和i/o组件850中的存储器是机器可读介质的示例。
[0110]
如在本文中所使用的,“机器可读介质”指代能够临时或永久地存储使得机器800以特定方式操作的指令和数据的设备。如在本文中所使用的,术语“机器可读介质”不涵盖暂时的电或电磁信号自身(诸如在通过介质传播的载波上)。因此,术语“机器可读介质”可以被认为是有形的和非暂时性的。非暂时性有形机器可读介质的非限制性示例可以包括但不限于:非易失性存储器(诸如闪存或只读存储器(rom))、易失性存储器(诸如静态随机存取存储器(ram)或动态ram)、缓存器存储器、高速缓存存储器、光存储介质、磁存储介质和设备、网络可访问或云存储设备、其他类型的存储设备和/或其任何合适的组合。术语“机器可读介质”适用于单个介质或者多种介质的组合,被用于存储指令(例如,指令816)以供由机器800运行,使得指令当由机器800的一个或多个处理器810运行时使得机器800执行在本文中所描述的特征中的一个或多个特征。因此,“机器可读介质”可以指代单个存储设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。
[0111]
i/o组件850可以包括适用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量等的多种硬件组件。特定机器中所包括的特定i/o组件850将取决于机器的类型和/或功能。例如,移动设备(诸如移动电话)可以包括触摸输入设备,而无头服务器或iot设备可能不包括这样的触摸输入设备。在图8中图示出的i/o组件的特定示例不以任何方式进行限制,并且其他类型的组件可以被包含在机器800中。i/o组件850的分组仅仅是为了简化该讨论,并且所述分组不以任何方式进行限制。在各种示例中,i/o组件850可以包括用户输出组件852和用户输入组件854。用户输出组件852可以包括例如用于显示信息的显示组件(例如,液晶显示器(lcd)或投影仪)、声学组件(例如,扬声器)、触觉组件(例如,振动电机或力反馈设备)和/或其他信号生成器。用户输入组件854可以包括例如字母数字输入组件(例如,键盘或触摸屏)、定点组件(例如,鼠标设备、触摸板或其他定点仪器)和/或触觉输入组件(例如,提供位置和/或触摸力或触摸手势的物理按钮或触摸屏),其被配置用于接收各种用户输入,诸如用户命令和/或选择。
[0112]
在一些示例中,i/o组件850可以包括生物特征组件856和/或位置组件862,以及多种其他环境传感器组件。生物特征组件856可以包括例如用于检测身体表情(例如,面部表情、声音表情、手或身体姿势,或眼睛跟踪)、测量生物信号(例如,心率或脑电波)以及识别人(例如,经由基于语音、视网膜和/或面部的识别)的组件。位置组件862可以包括例如位置传感器(例如,全球定位系统(gps)接收器)、高度传感器(例如,可以从中导出高度的气压传感器)和/或取向传感器(例如,磁力计)。
[0113]
i/o组件850可以包括通信组件864,实现可操作以经由相应的通信耦合件872和882将机器800耦合到网络870和/或设备880的多种技术。通信组件864可以包括一个或多个网络接口组件或与网络870接口的其他合适的设备。通信组件864可以包括例如适于提供有线通信、无线通信、蜂窝通信、近场通信(nfc)、蓝牙通信、wi-fi和/或经由其他模态的通信的组件。设备880可以包括其他机器或各种外围设备(例如,经由usb耦合)。
[0114]
在一些示例中,通信组件864可以检测标识符或包括适于检测标识符的组件。例
如,通信组件864可以包括射频识别(rfid)标签读取器、nfc检测器、光学传感器(例如,一维或多维条形码或其他光学代码)和/或声学检测器(例如,麦克风用于识别标记的音频信号)。在一些示例中,可以基于来自通信组件862的信息来确定位置信息,例如但不限于经由互联网协议(ip)地址的地理位置、经由wi-fi、蜂窝、nfc、蓝牙或其他无线站识别和/或信号三角测量的位置。
[0115]
尽管已经描述了各种实施例,但是该描述旨在是示例性的而非限制性的,并且应当理解,在实施例的范围内的更多实施例和实现方式是可能的。尽管在附图中示出并且在该详细描述中讨论了许多可能的特征组合,但是所公开的特征的许多其他组合也是可能的。除非特别限制,否则任何实施例的任何特征都可以与任何其他实施例中的任何其他特征或元件组合使用或替代任何其他特征或元件。因此,应当理解,本公开中所示和/或讨论的任何特征可以以任何合适的组合一起实现。因此,除了根据所附权利要求及其等同物之外,实施例不受限制。此外,可以在所附权利要求的范围内进行各种修改和改变。
[0116]
通常,在本文中所描述的功能(例如,图1-6中所示的特征)可以使用软件、固件、硬件(例如,固定逻辑、有限状态机和/或其他电路)或者这些实现方式的组合来实现。在软件实现的情况下,程序代码在处理器(例如,一个或多个cpu)上执行时执行指定的任务。程序代码可以存储在一个或多个机器可读存储设备中。在本文中所描述的技术的特征是独立于系统的,这意味着这些技术可以在具有各种处理器的各种计算系统上实现。例如,实现方式可以包括使硬件执行操作的实体(例如,软件),例如,处理器功能块等。例如,硬件设备可以包括机器可读介质,其可以被配置为维护使硬件设备(包括在其上执行的操作系统和相关联的硬件)执行操作的指令。因此,指令可用于配置操作系统和相关联的硬件以执行操作,由此配置或以其他方式适应硬件设备以执行上述功能。指令可以由机器可读介质通过各种不同的配置提供给执行指令的硬件元件。
[0117]
下面通过项目对本发明进一步的特征、特性和优点进行说明:
[0118]
项目1、一种数据处理系统,包括:
[0119]
处理器;以及
[0120]
与所述处理器通信的存储器,所述存储器包括可执行指令,所述可执行指令当由所述处理器运行时使得所述数据处理系统执行以下功能:
[0121]
接收软件资源,所述软件资源是采用第一语言的;
[0122]
接收用于压缩的本地化软件资源,所述本地化软件资源是采用第二语言的,采用所述第一语言的所述软件资源是所述本地化软件资源的对应体;
[0123]
至少部分地基于所述软件资源中的一个或多个第一语言词语并且基于来自全局词典的数据来创建针对所述本地化软件资源的第一本地词典;以及
[0124]
基于所述本地词典来压缩所述本地化软件资源。
[0125]
项目2、根据项目1所述的数据处理系统,其中,所述可执行指令当由所述处理器运行时还使得所述设备执行以下功能:
[0126]
通过以下操作来创建针对应用的所述全局词典:
[0127]
检查所述应用中的多个本地化软件资源;
[0128]
将所述多个本地化软件资源中的每个本地化软件资源划分为组成每个本地化软件资源的一个或多个词语;
[0129]
将所述一个或多个词语中的每个词语与来自对应的第一语言软件资源的相应的第一语言词语进行配对以获得多个配对;
[0130]
启动针对每个配对的计数器并且将所述计数器设置为一;
[0131]
如果配对是重复配对,则将所述计数器加一;
[0132]
按照出现率对所述多个配对进行排序;
[0133]
选择具有最高出现率的所述配对;
[0134]
通过将来自所述配对的所述本地化词语添加到所使用的本地化词语的列表,并且将所述相应的第一语言词语添加到所使用的第一语言词语的列表,来将具有所述最高出现率的所述配对添加到所述全局词典;以及
[0135]
选择具有最高出现率的下一配对,并且针对所述多个配对中的每个配对来重复将所述下一配对添加到所述全局词典的过程,除非所述本地化词语在所使用的本地化词语的所述列表中或者所述相应的第一语言词语在所使用的第一语言词语的列表中。
[0136]
项目3、根据项目1或2所述的数据处理系统,其中,创建所述第一本地词典包括:
[0137]
将所述第一语言软件资源划分为组成所述第一语言软件资源的一个或多个词语;
[0138]
将所述一个或多个词语中的每个词语与从所述全局词典获得的翻译进行配对以获得多个配对来创建所述本地词典中的词语列表;
[0139]
对所述多个配对进行索引;
[0140]
将所述本地化软件资源划分为组成所述本地化软件资源的一个或多个本地化词语;
[0141]
确定所述一个或多个本地化词语中的每个本地化词语是否被包含在所述多个配对中的至少一个配对中;
[0142]
当所述一个或多个本地化词语中的一个本地化词语未被包含在所述多个配对中的至少一个配对中时,在所述全局词典中定位针对所述一个或多个本地化词语中的所述一个本地化词语的索引;以及
[0143]
将所述一个或多个本地化词语中的一个本地化词语与所述索引一起添加到所述第一本地词典中的所述词语列表。
[0144]
项目4、根据前述项目中的任一项目所述的数据处理系统,其中,基于所述第一本地词典来压缩所述本地化软件资源包括:
[0145]
将经压缩的本地化资源中的起始位(first bits)的预定数量设置为存储本地索引所需的位数量;
[0146]
将所述本地化软件资源划分为组成所述本地化软件资源的一个或多个本地化词语;
[0147]
针对所述一个或多个本地化词语中的每个本地化词语,在所述第一本地词典中定位所述词语,并且将来自所述第一本地词典的、与所述词语相对应的本地索引添加到所述经压缩的本地化资源;
[0148]
确定所述本地索引是否指示所述词语不包括所述本地词典中的第一语言对应体;以及
[0149]
在确定了所述本地索引指示所述词语不包括所述本地词典中的所述第一语言对应体时,将来自所述全局词典的、针对所述词语的全局索引添加到所述经压缩的本地化资
源。
[0150]
项目5、根据前述项目中的任一项目所述的数据处理系统,其中,所述可执行指令当由所述处理器运行时还使得所述设备通过以下操作来执行对所述经压缩的本地化资源进行解压缩以获得经解压缩的本地化资源的功能:
[0151]
根据采用所述第一语言的所述软件资源来创建第二本地词典;
[0152]
从所述经压缩的本地化资源读取位元信息以确定用于所述经压缩的本地化资源中的每个词语的特定数量的位;
[0153]
从所述经压缩的本地化资源读取下一特定数量的位以确定在所述经解压缩的本地化资源中的词语的数量;
[0154]
从所述经压缩的本地化资源读取所述下一特定数量的位以确定所述下一特定数量的位是否与所述第二本地词典中的索引相对应;
[0155]
当所述下一特定数量的位与所述索引相对应时,将来自所述本地词典的、与所述索引相对应的翻译添加到所述解压缩的本地化资源;
[0156]
当所述下一特定数量的位与所述索引不对应时,读取所述经压缩的本地化资源中的全局索引,在所述全局词典中定位所述全局索引,并且在所述经解压缩的本地化资源中插入与所述全局索引相对应的翻译;以及
[0157]
将语言规则应用于所述经解压缩的本地化资源。
[0158]
项目6、根据前述项目中的任一项目所述的数据处理系统,其中,所述可执行指令当由所述处理器运行时还使得所述设备执行移除重复内容的功能。
[0159]
项目7、根据前述项目中的任一项目所述的数据处理系统,其中,所述可执行指令当由所述处理器运行时还使得所述设备执行移除所述本地化软件资源中的第一语言副本的功能。
[0160]
项目8、根据前述项目中的任一项目所述的数据处理系统,其中,所述可执行指令当由所述处理器运行时还使得所述设备执行创建文件词典的功能。
[0161]
项目9、根据前述项目中的任一项目所述的数据处理系统,其中,所述可执行指令当由所述处理器运行时还使得所述设备执行在压缩所述本地化软件资源之后执行去重复的功能。
[0162]
项目10、一种用于压缩本地化软件资源的方法,包括:
[0163]
接收软件资源,所述软件资源是采用第一语言的;
[0164]
接收用于压缩的所述本地化软件资源,所述本地化软件资源是采用第二语言的,采用所述第一语言的所述软件资源是采用所述第二语言的所述本地化软件资源的对应体;
[0165]
至少部分地基于所述软件资源中的一个或多个第一语言词语并且基于来自全局词典的数据来创建针对所述本地化软件资源的本地词典;以及
[0166]
基于所述本地词典来压缩所述本地化软件资源。
[0167]
项目11、根据项目10所述的方法,还包括通过以下操作来创建所述全局词典:
[0168]
检查所述应用中的多个本地化软件资源;
[0169]
将所述多个本地化软件资源中的每个本地化软件资源划分为组成每个本地化软件资源的一个或多个词语;
[0170]
将所述一个或多个词语中的每个词语与来自对应的第一语言软件资源的相应的
第一语言词语进行配对以获得多个配对;
[0171]
启动针对每个配对的计数器并且将所述计数器设置为一;
[0172]
如果配对是重复配对,则将所述计数器加一;
[0173]
按照出现率对所述多个配对进行排序;
[0174]
选择具有最高出现率的所述配对;
[0175]
通过将来自所述配对的所述本地化词语添加到所使用的本地化词语的列表,并且将所述相应的第一语言词语添加到所使用的第一语言词语的列表,来将具有所述最高出现率的所述配对添加到所述全局词典;以及
[0176]
选择具有最高出现率的下一配对,并且针对多个配对中的每个配对来重复将所述下一配对添加到所述全局词典的过程,除非所述本地化词语在所使用的本地化词语的列表中或者所述相应的第一语言词语在所使用的第一语言词语的列表中。
[0177]
项目12、根据项目10或11所述的方法,其中,创建所述第一本地词典包括:
[0178]
将所述第一语言软件资源划分为组成所述第一语言软件资源的一个或多个词语;
[0179]
将所述一个或多个词语中的每个词语与从所述全局词典获得的翻译进行配对以获得多个配对来创建所述本地词典中的词语列表;
[0180]
对所述多个配对进行索引;
[0181]
将所述本地化软件资源划分为组成所述本地化软件资源的一个或多个本地化词语;
[0182]
确定所述一个或多个本地化词语中的每个本地化词语是否被包含在所述多个配对中的至少一个配对中;
[0183]
当所述一个或多个本地化词语中的一个本地化词语为被包含在所述多个配对中的至少一个配对中时,在所述全局词典中定位针对所述一个或多个本地化词语中的所述一个本地化词语的索引;以及
[0184]
将所述一个或多个本地化词语中的所述一个本地化词语与所述索引一起添加到所述第一本地词典中的所述词语列表。
[0185]
项目13、根据项目10-12中的任一项目所述的方法,其中,基于所述第一本地词典来压缩所述本地化软件资源包括:
[0186]
将经压缩的本地化资源中的起始位的预定数量设置为存储本地索引所需的位数量;
[0187]
将所述本地化软件资源划分为组成所述本地化软件资源的一个或多个本地化词语;
[0188]
针对所述一个或多个本地化词语中的每个本地化词语,在所述第一本地词典中定位所述词语,并且将来自所述第一本地词典的、与所述词语相对应的本地索引添加到所述经压缩的本地化资源;
[0189]
确定所述本地索引是否指示所述词语不包括所述本地词典中的第一语言对应体;以及
[0190]
在确定了所述本地索引指示所述词语不包括所述本地词典中的所述第一语言对应体时,将来自所述全局词典的、针对所述词语的全局索引添加到所述经压缩的本地化资源。
[0191]
项目14、根据前述项目10-13中的任一项目所述的方法,还包括通过以下操作对所述经压缩的本地化资源进行解压缩以获得经解压缩的本地化资源:
[0192]
根据所述第一语言的软件资源来创建第二本地词典;
[0193]
从所述经压缩的本地化资源读取位元信息以确定用于所述经压缩的本地化资源中的每个词语的特定数量的位;
[0194]
从所述经压缩的本地化资源读取下一特定数量的位以确定所述经解压缩的本地化资源中的词语的数量;
[0195]
从所述经压缩的本地化资源读取所述下一特定数量的位以确定所述下一特定数量的位是否与所述第二本地词典中的索引相对应;
[0196]
当所述下一特定数量的位与所述索引相对应时,将来自所述本地词典的、与所述索引相对应的翻译添加到所述经解压缩的本地化资源;
[0197]
当所述下一特定数量的位与所述索引不对应时,读取所述经压缩的本地化资源中的全局索引,在所述全局词典中定位所述全局索引,并且在所述经解压缩的本地化资源中插入与所述全局索引相对应的翻译;以及
[0198]
将语言规则应用于所述经解压缩的本地化资源。
[0199]
项目15、根据前述项目10-14中的任一项目所述的方法,还包括创建文件词典。
[0200]
项目16、一种其上存储有指令的非暂时性计算机可读介质,所述指令当被运行时使得可编程设备用于:
[0201]
接收软件资源,所述软件资源是采用第一语言的;
[0202]
接收用于压缩的本地化软件资源,所述本地化软件资源是采用第二语言的,采用所述第一语言的所述软件资源是采用所述第二语言的所述本地化软件资源的对应体;
[0203]
至少部分地基于所述软件资源中的一个或多个第一语言词语并且基于来自全局词典的数据来创建针对所述本地化软件资源的第一本地词典;以及
[0204]
基于所述本地词典来压缩所述本地化软件资源。
[0205]
项目17、根据项目16所述的计算机可读介质,其中,所述指令还使得所述可编程设备用于通过以下操作来创建针对应用的全局词典:
[0206]
检查所述应用中的多个本地化软件资源;
[0207]
将所述多个本地化软件资源中的每个本地化软件资源划分为组成每个本地化软件资源的一个或多个词语;
[0208]
将所述一个或多个词语中的每个词语与来自对应的第一语言软件资源的相应的第一语言词语进行配对以获得多个配对;
[0209]
启动针对每个配对的计数器并且将所述计数器设置为一;
[0210]
如果配对是重复配对,则将所述计数器加一;
[0211]
按照出现率对所述多个配对进行排序;
[0212]
选择具有最高出现率的所述配对;
[0213]
通过将来自所述配对的所述本地化词语添加到所使用的本地化词语的列表,并且将所述相应的第一语言词语添加到所使用的第一语言词语的列表,来将具有所述最高出现率的所述配对添加到所述全局词典;以及
[0214]
选择具有最高出现率的下一配对,并且针对所述多个配对中的每个配对来重复将
所述下一配对添加到所述全局词典的过程,除非所述本地化词语在所使用的本地化词语的列表中或者所述相应的第一语言词语在所使用的第一语言词语的列表中。
[0215]
项目18、根据项目16或17所述的计算机可读介质,其中,创建所述第一本地词典包括:
[0216]
将所述第一语言资源划分为组成所述第一语言资源的一个或多个词语;
[0217]
将所述一个或多个词语中的每个词语与从所述全局词典获得的翻译进行配对以获得多个配对来创建所述本地词典中的词语列表;
[0218]
对所述多个配对进行索引;
[0219]
将所述本地化软件资源划分为组成所述本地化软件资源的一个或多个本地化词语;
[0220]
确定所述一个或多个本地化词语中的每个本地化词语是否被包含在所述多个配对中的至少一个配对中;
[0221]
当所述一个或多个本地化词语中的一个本地化词语未被包含在所述多个配对中的至少一个配对中时,在所述全局词典中定位针对所述一个或多个本地化词语中的所述一个本地化词语的索引;以及
[0222]
将所述一个或多个本地化词语中的所述一个本地化词语与所述索引一起添加到所述第一本地词典中的所述词语列表。
[0223]
项目19、根据前述项目16-18中的任一项目所述的计算机可读介质,其中,基于所述第一本地词典来压缩所述本地化软件资源包括:
[0224]
将经压缩的本地化资源中的起始位的预定数量设置为存储本地索引所需的位数量;
[0225]
将所述本地化软件资源划分为组成所述本地化软件资源的一个或多个本地化词语;
[0226]
针对所述一个或多个本地化词语中的每个本地化词语,在所述第一本地词典中定位所述词语,并且将来自所述第一本地词典的、与所述词语相对应的本地索引添加到所述经压缩的本地化资源;
[0227]
确定所述本地索引是否指示所述词语不包括所述本地词典中的第一语言对应体;以及
[0228]
在确定了所述本地索引指示所述词语不包括所述本地词典中的所述第一语言对应体时,将来自所述全局词典的、针对所述词语的全局索引添加到所述经压缩的本地化资源。
[0229]
项目20、根据前述项目16-19中的任一项目所述的计算机可读介质,其中,所述指令还使得所述可编程设备通过以下操作对所述经压缩的本地化资源进行解压缩以获得经解压缩的本地化资源:
[0230]
根据所述第一语言的软件资源来创建第二本地词典;
[0231]
从所述经压缩的本地化资源读取位元信息以确定用于所述经压缩的本地化资源中的每个词语的特定数量的位;
[0232]
从所述经压缩的本地化资源读取下一特定数量的位以确定所述经解压缩的本地化资源中的词语的数量;
[0233]
从所述经压缩的本地化资源读取所述下一特定数量的位以确定所述下一特定数量的位是否与所述第二本地词典中的索引相对应;
[0234]
当所述下一特定数量的位与所述索引相对应时,将来自所述本地词典的、与所述索引相对应的翻译添加到所述经解压缩的本地化资源;
[0235]
当所述下一特定数量的位与所述索引不对应时,读取所述经压缩的本地化资源中的全局索引,在所述全局词典中定位所述全局索引,并且在所述经解压缩的本地化资源中插入与所述全局索引相对应的翻译;以及
[0236]
将语言规则应用于所述经解压缩的本地化资源。
[0237]
尽管前面已经描述了被认为是最佳模式和/或其他示例的内容,但是应当理解,可以在其中进行各种修改,并且可以以各种形式和示例来实现本文公开的主题,并且这些教导可以应用在许多应用中,这里仅描述了其中的一些。所附权利要求旨在要求保护落入本教导的真实范围内的任何和所有应用、修改和变化。
[0238]
除非另有说明,否则在本说明书中(包括在随后的权利要求中)阐述的所有测量值、值、额定值、位置、幅度、尺寸和其他规格都是近似的,而不是精确的。其旨在具有与其所涉及的功能以及其所涉及的领域中的惯例一致的合理范围。
[0239]
保护范围仅由以下权利要求进行限制。当根据本说明书和随后的起诉历史进行解释时,该范围旨在并且应当被解释为与权利要求中使用的语言的普通含义一致,并且包括所有结构和功能等效物。尽管如此,权利要求中的任何一项均不旨在涵盖未能满足《专利法》第101、102或103条要求的主题,也不应当以这种方式对其解释。特此否认对这样的主题的任何意外涵盖。
[0240]
除上文所述外,任何已陈述或说明的内容均不旨在或不应被解释为使任何组件、步骤、特征、对象、利益、优势或等价物奉献给公众,无论权利要求书中是否提及。
[0241]
应当理解,本文中使用的术语和表达具有与这些术语和表达相对于其对应的相应调查和研究领域所赋予的普通含义,除非在本文中另外阐述了特定含义。
[0242]
诸如第一和第二等关系术语可以仅用于将一个实体或动作与另一实体或动作区分开来,而不必要求或暗示这样的实体或动作之间的任何实际这样的关系或次序。术语“包括”、“包含”及其任何其他变体旨在涵盖非排他性包含,使得包括元素列表的过程、方法、物品或设备不仅包括那些元素,而且可能包括未明确列出的其他元素或这样的过程、方法、物品或设备所固有的元素。在没有进一步限制的情况下,以“一”或“一个”开头的元素不排除在包含该元素的过程、方法、物品或设备中存在附加的相同元素。
[0243]
提供公开的摘要是为了让读者能够快速识别技术公开内容的性质。在提交时理解其不会被用来解释或限制权利要求的范围或含义。此外,在上述详细描述中,可以看出,为了简化公开内容,在各种示例中将各种特征组合在一起。这种公开方法不应被解释为反映任何权利要求需要比权利要求明确列举的更多特征的意图。相反,如以下权利要求所反映的,发明主题不在于单个公开示例的所有特征。因此,以下权利要求在此并入详细说明中,其中每个权利要求作为单独要求保护的主题独立存在。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1