【发布时间】:2014-01-22 05:13:07
【问题描述】:
我一直在使用 PHP 中的 Gettext MO 文件哈希表。虽然我不确定这个可选表有多重要,但我想确保在生成 MO 文件时尽可能实现完整规范。
我在我的 Mac 和 Linux 上使用 Gettext msgfmt 编译了一个包含条目 "","a","b","c" 的简单 PO 文件。哈希表有 5 个字节长,但奇怪的是包含大量空字节,如下所示:01 00 00 00 00
运行从 Gettext 源代码中提取的算法,我生成了表 01 00 02 03 04。
这是我的测试代码:
https://gist.github.com/timwhitlock/8255619(包括示例 PO 文件)
我不会写 C,而是通过 GNU Gettext 源代码来移植显示的函数。
我自己的哈希表编译可能有问题,但要明白为什么我想先明白为什么msgfmt生成的MO文件的哈希表大多是零?
我很确定我正确地从 MO 文件中提取了哈希表。我从第六个字节得到表格的大小和位置为outlined in the spec。
在我的“abc”示例中,没有使用双重哈希,所以我不明白该表是如何正确的,无论我的表是否正确。
这个“abc”示例的正确哈希表是什么?
【问题讨论】:
标签: php localization hashtable gettext mo