【问题标题】:.po to .mo convertor in php?.po 到 .mo 在 php 中的转换器?
【发布时间】:2009-07-25 09:08:48
【问题描述】:

我想要一个可以将 .po(Portable Object) 转换为 .mo(Machine Object) 文件的 PHP 脚本? 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 文件吗?

【问题讨论】:

    标签: php internationalization gettext


    【解决方案1】:

    您可以使用exec() 或类似方法运行 msgfmt。不知道有没有 PHP-only 的方法。

    【讨论】:

    • 我认为如果您想确保自己做正确的事情,这应该是最好的方法。其他解决方案可能会给您带来新的错误,从而降低您的工作效率。
    【解决方案2】:

    我没有尝试过,但看起来这个PEAR package 可能会对你有所帮助。它没有维护,但也许你可以成为新的维护者?

    如果您会阅读 Python,那么您可以尝试将 their msgfmt.py 脚本转换为 PHP。只有200行左右。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 2011-04-05
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2015-07-21
      相关资源
      最近更新 更多