msgfmt - Man Page
compile message catalog to binary format
Examples (TL;DR)
- Compile a file to 
messages.mo:msgfmt file.po - Convert a 
.pofile to a.mofile:msgfmt path/to/file.po [-o|--output-file] path/to/file.mo - Display help: 
msgfmt [-h|--help] 
Synopsis
msgfmt [OPTION] filename.po ...
Description
Generate binary message catalog from textual translation description.
Mandatory arguments to long options are mandatory for short options too. Similarly for optional arguments.
Input file location
- filename.po ...
 input files
- -D, --directory=DIRECTORY
 add DIRECTORY to list for input files search
If input file is -, standard input is read.
Operation mode
- -j, --java
 Java mode: generate a Java ResourceBundle class
- --java2
 like --java, and assume Java2 (JDK 1.2 or higher)
- --csharp
 C# mode: generate a .NET .dll file
- --csharp-resources
 C# resources mode: generate a .NET .resources file
- --tcl
 Tcl mode: generate a tcl/msgcat .msg file
- --qt
 Qt mode: generate a Qt .qm file
- --desktop
 Desktop Entry mode: generate a .desktop file
- --xml
 XML mode: generate XML file
Output file location
- -o, --output-file=FILE
 write output to specified file
- --strict
 enable strict Uniforum mode
If output file is -, output is written to standard output.
Output file location in Java mode
- -r, --resource=RESOURCE
 resource name
- -l, --locale=LOCALE
 locale name, either language or language_COUNTRY
- --source
 produce a .java file, instead of a .class file
- -d DIRECTORY
 base directory of classes directory hierarchy
The class name is determined by appending the locale name to the resource name, separated with an underscore. The -d option is mandatory. The class is written under the specified directory.
Output file location in C# mode
- -r, --resource=RESOURCE
 resource name
- -l, --locale=LOCALE
 locale name, either language or language_COUNTRY
- -d DIRECTORY
 base directory for locale dependent .dll files
The -l and -d options are mandatory. The .dll file is written in a subdirectory of the specified directory whose name depends on the locale.
Output file location in Tcl mode
- -l, --locale=LOCALE
 locale name, either language or language_COUNTRY
- -d DIRECTORY
 base directory of .msg message catalogs
The -l and -d options are mandatory. The .msg file is written in the specified directory.
Desktop Entry mode options
- -l, --locale=LOCALE
 locale name, either language or language_COUNTRY
- -o, --output-file=FILE
 write output to specified file
- --template=TEMPLATE
 a .desktop file used as a template
- -d DIRECTORY
 base directory of .po files
- -kWORD, --keyword=WORD
 look for WORD as an additional keyword
- -k, --keyword
 do not to use default keywords
The -l, -o, and --template options are mandatory. If -D is specified, input files are read from the directory instead of the command line arguments.
XML mode options
- -l, --locale=LOCALE
 locale name, either language or language_COUNTRY
- -L, --language=NAME
 recognise the specified XML language
- -o, --output-file=FILE
 write output to specified file
- --template=TEMPLATE
 an XML file used as a template
- -d DIRECTORY
 base directory of .po files
- --replace-text
 output XML with translated text replacing the original text, not augmenting the original text
The -l, -o, and --template options are mandatory. If -D is specified, input files are read from the directory instead of the command line arguments.
Input file syntax
- -P, --properties-input
 input files are in Java .properties syntax
- --stringtable-input
 input files are in NeXTstep/GNUstep .strings syntax
Input file interpretation
- -c, --check
 perform all the checks implied by --check-format, --check-header, --check-domain
- --check-format
 check language dependent format strings
- --check-header
 verify presence and contents of the header entry
- --check-domain
 check for conflicts between domain directives and the --output-file option
- -C, --check-compatibility
 check that GNU msgfmt behaves like X/Open msgfmt
- --check-accelerators[=CHAR]
 check presence of keyboard accelerators for menu items
- -f, --use-fuzzy
 use fuzzy entries in output
Output details
- --no-convert
 don't convert the messages to UTF-8 encoding
- --no-redundancy
 don't pre-expand ISO C 99 <inttypes.h> format string directive macros
- -a, --alignment=NUMBER
 align strings to NUMBER bytes (default: 1)
- --endianness=BYTEORDER
 write out 32-bit numbers in the given byte order (big or little, default depends on platform)
- --no-hash
 binary file will not include the hash table
Informative output
- -h, --help
 display this help and exit
- -V, --version
 output version information and exit
- --statistics
 print statistics about translations
- -v, --verbose
 increase verbosity level
Author
Written by Ulrich Drepper.
Reporting Bugs
Report bugs in the bug tracker at <https://savannah.gnu.org/projects/gettext> or by email to <bug-gettext@gnu.org>.
Copyright
Copyright © 1995-2025 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
See Also
The full documentation for msgfmt is maintained as a Texinfo manual. If the info and msgfmt programs are properly installed at your site, the command
info msgfmt
should give you access to the complete manual.
Referenced By
gettext(3), itstool(1), rush-po(1), scons(1).