Преобразователь .po в .mo в php?

мне нужен PHP-скрипт, который может конвертировать .po(переносимый объект) в файл .mo(машинный объект)? есть ли скрипт на 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 из этой информации?


person coderex    schedule 25.07.2009    source источник


Ответы (2)


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

Если вы умеете читать Python, вы можете попробовать преобразовать их msgfmt.py скрипт на PHP. Всего 200 строк или около того.

person Martin Geisler    schedule 25.07.2009

Вы можете запустить msgfmt, используя exec() или подобное. Я не знаю, есть ли способ сделать это только для PHP.

person Tom Haigh    schedule 25.07.2009
comment
Я думаю, что это должен быть лучший подход, если вы хотите быть уверены, что поступаете правильно. Другие решения могут принести вам новые ошибки, которые могут снизить вашу производительность. - person sorin; 12.12.2009