Gettext MO (Machine Object) file
| Ross-spencer  (Talk | contribs)  (Add details about Gettext MO files) | m (Add Kaitai Struct schema) | ||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| + | {{FormatInfo | ||
| + | |formattype=electronic | ||
| + | |subcat=Resources | ||
| + | |extensions={{ext|mo}} | ||
| + | |kaitai struct=gettext_mo | ||
| + | }} | ||
| From the manpage the gettext program translates a natural language message into the user's language, by looking up the translation in a message catalog. | From the manpage the gettext program translates a natural language message into the user's language, by looking up the translation in a message catalog. | ||
| Line 80: | Line 86: | ||
| == Additional links == | == Additional links == | ||
| + | * [https://www.gnu.org/software/gettext/ Gettext project page] | ||
| * [https://www.labri.fr/perso/fleury/posts/programming/a-quick-gettext-tutorial.html A Quick Gettext Tutorial] | * [https://www.labri.fr/perso/fleury/posts/programming/a-quick-gettext-tutorial.html A Quick Gettext Tutorial] | ||
Latest revision as of 17:37, 26 December 2024
From the manpage the gettext program translates a natural language message into the user's language, by looking up the translation in a message catalog.
A Gettext MO file is one of two Gettext file types conveying translations in source code. A Gettext MO file is the second of two files. A first file, a Gettext PO (Portable Object) file, contains strings extracted from the source code for a software application. MO files are generated from PO files. An MO file is a compiled/binary representation of the same data for use by the calling application.
| Contents | 
[edit] Compiling MO files from PO files
Given a PO file containing translations, it can be converted to an MO file as follows once gettext is installed locally, e.g. yum install gettext.
The command might look as follows:
-  msgfmt messages.po -o messages.mo
[edit] File structure
An excerpt from the documentation describes the structure of MO files as follows:
        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 files have the magic number: 0x950412de

