2009-07-25 1 views
3

Я хочу PHP-скрипт, который может конвертировать .po (Portable Object) как .mo (Machine Object) файл? - это любой скрипт, доступный в PHP?.po to .mo convertor in php?

   byte 
       +------------------------------------------+ 
      0 | magic number = 0x950412de    | 
       |           | 
      4 | file format revision = 0     | 
       |           | 
      8 | number of strings      | == N 
       |           | 
      12 | offset of table with original strings | == O 
       |           | 
      16 | offset of table with translation strings | == T 
       |           | 
      20 | size of hashing table     | == S 
       |           | 
      24 | offset of hashing table     | == H 
       |           | 
       .           . 
       . (possibly more entries later)   . 
       .           . 
       |           | 
      O | length & offset 0th string ----------------. 
     O + 8 | length & offset 1st string ------------------. 
       ...         ... | | 
O + ((N-1)*8)| length & offset (N-1)th string   | | | 
       |           | | | 
      T | length & offset 0th translation ---------------. 
     T + 8 | length & offset 1st translation -----------------. 
       ...         ... | | | | 
T + ((N-1)*8)| length & offset (N-1)th translation  | | | | | 
       |           | | | | | 
      H | start hash table       | | | | | 
       ...         ... | | | | 
    H + S * 4 | end hash table       | | | | | 
       |           | | | | | 
       | NUL terminated 0th string <----------------' | | | 
       |           | | | | 
       | NUL terminated 1st string <------------------' | | 
       |           |  | | 
       ...         ...  | | 
       |           |  | | 
       | NUL terminated 0th translation <---------------' | 
       |           |  | 
       | NUL terminated 1st translation <-----------------' 
       |           | 
       ...         ... 
       |           | 
       +------------------------------------------+ 

Могу ли я сделать mo-файл с этой информацией?

ответ

2

Я не пробовал, но похоже, что это PEAR package может вам помочь. Это не поддерживается, но, может быть, вы можете стать новым сопровождающим?

Если вы можете прочитать Python, то вы можете взять удар по преобразованию скрипта their msgfmt.py в PHP. Это всего лишь 200 строк.

+0

отличный мужчина, его действительно полезно ... спасибо, что посмотрели. – coderex

4

Вы можете запустить msgfmt с помощью exec() или аналогичного. Я не знаю, существует ли только PHP-способ.

+1

Я считаю, что это должен быть лучший подход, если вы хотите быть уверены, что поступаете правильно. Другие решения могут принести вам новые ошибки, которые могут снизить производительность. – sorin