Gettext MO (Machine Object) file
Ross-spencer (Talk | contribs) (Add details about Gettext MO files) |
Ross-spencer (Talk | contribs) m (Add gettext project page) |
||
| Line 80: | Line 80: | ||
== 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] | ||
Revision as of 18:49, 17 March 2021
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 |
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
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