CLDR数据

有几种方法可以通过将CLDR数据转换为ICU来减少数据量。

文件选择:最明显的大小缩减是在ICU构建中只包含一组特定的数据文件。文件相关性应予以考虑,并由icupkg部分执行。(例如,对于每个语言环境资源包,都应该包括其父包。)资源索引.txt当区域设置树中的资源束集发生更改时,应该更新文件(并重新生成resindex.res)。

翻译选择:即使选择了较小语言集的文件,这些文件仍然包含CLDR有数据的所有语言/地区/时区等的翻译。示例:如果只使用英语(en*.txt)和日语(ja*.txt。此类实体的白名单可以驱动文件选择和资源束内字符串的选择。必须使用LDML2ICUConverter进行文件内选择。调查为此创建config.xml文件是否足够。

较短的键:即使使用密钥后缀共享,ICU 4.2资源包也包含近500kB的密钥字符串字符。(大多数数据存储为键/值对。)使用较短的键可能会有所帮助,因为它们是任意的(即,像“缩写”这样的键,但不是日期/时间模式骨架或音译ID,也不是数据驱动的,等等)。需要更改LDML2ICUConverter和运行时代码(应该能够使用旧键和新键)。有关键的更多信息,请参见 钥匙第页。

较小的值:

    • 规则字符串:删除注释和非必要空白.(已为完成 整理LDML2ICUConverter和genrb.)没有运行时更改。

    • 规则字符串:使用更多紧凑语法例如,在排序中,一种特殊的序列-主差异语法,如CLDR。添加到生成器代码。

      • 注意:通过将ASCII字符序列替换为单个符号来使用更少的字符是很诱人的,例如排序规则三级差异“<<<”。然而,在支持ASCII的字符串值压缩下,这可能没有帮助。

    • 枚举值:在某些地方,我们使用字符串来表示枚举值,例如,音译数据中的“FORWARD”和“REVERSE”。考虑改用小整数值或压缩友好的短ASCII字符串。需要在运行时进行更改(应同时支持旧值和新值),并且可能会降低可读性(这可能没问题)。由于字符串重复消除和字符串压缩,大小减少可能不大。