# phpman > man > MSGFMT(1)

> **TLDR:** Compile message catalog to binary format.
>
- Compile a file to `messages.mo`:
  `msgfmt {{file.po}}`
- Convert a `.po` file to a `.mo` file:
  `msgfmt {{path/to/file.po}} {{-o|--output-file}} {{path/to/file.mo}}`
- Display help:
  `msgfmt {{-h|--help}}`

*Source: tldr-pages*

---

[MSGFMT(1)](https://www.chedong.com/phpMan.php/man/MSGFMT/1/markdown)                                   User Commands                                  [MSGFMT(1)](https://www.chedong.com/phpMan.php/man/MSGFMT/1/markdown)



## NAME
       msgfmt - compile message catalog to binary format

## 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 op‐
       tional arguments.

### Input file location:
       filename.po ...
              input files

### -D --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
              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 name

### -l --locale
              locale name, either language or language_COUNTRY

### --source
              produce a .java file, instead of a .class file

### -d
              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 name

### -l --locale
              locale name, either language or language_COUNTRY

### -d
              base directory for locale dependent .dll files

       The **-l** and **-d** options are mandatory.  The .dll file is written in a subdirectory of the spec‐
       ified directory whose name depends on the locale.

### Output file location in Tcl mode:
### -l --locale
              locale name, either language or language_COUNTRY

### -d
              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 name, either language or language_COUNTRY

### -o --output-file
              write output to specified file

       **--template**=_TEMPLATE_
              a .desktop file used as a template

### -d
              base directory of .po files

### -kWORD --keyword
              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 name, either language or language_COUNTRY

### -L --language
              recognise the specified XML language

### -o --output-file
              write output to specified file

       **--template**=_TEMPLATE_
              an XML file used as a template

### -d
              base directory of .po files

       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:
### -a --alignment
              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-2020  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.



GNU gettext-tools 0.21                       March 2022                                    [MSGFMT(1)](https://www.chedong.com/phpMan.php/man/MSGFMT/1/markdown)
