---
name: "xview_msgfmt"
section: "1"
platform: "linux"
package: "xviewg-dev"
version: "3.2p1.4-28.1"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/xview_msgfmt"
---

# xview\_msgfmt(1)

create a message object from a message file

## NAME

msgfmt - create a message object from a message file

## SYNOPSIS

**msgfmt** \[ **-v** \] *filename* **.po** ...

## DESCRIPTION

**msgfmt** creates a message object *filename* **.mo** file from the portable message file *filename* **.po**.

The  **.po** file contains strings extracted from source code. **.po** files can be edited, and the messages in them can changed to accomodate any language supported by the system.

The **xgettext** command (see [**xgettext**(1)](/xgettext/1.md)) can be used to create the **default.po** file.

The **msgfmt** command does not modify the portable object files.

### Portable Object Files

Each **.po** file contains one or more lines. Each line contains either a comment or a statement. Comments start the line with a hash mark (#) and end with the newline character and are ignored.

Each directive starts on a new line and is separated from **\<***value***\>** by white space (such as one or more space or tab characters). **\<***value***\>** consists of one or more quoted strings separated by white space or \<CR\>. The following are valid directives:

**domain** *domainname*\
 **msgid** *message\_identifier*\
 **msgstr** *message\_string*

The **domain** directive identifies all following directives until another **domain** directive is encountered as applying to the domain *domainname.* The *domainname* is a string up to MAXDOMAIN bytes long, and can contain any characters allowed in legal filenames. Until the first **domain** directive is encountered in the file, all target strings belong to the default domain. The default domain is called  **default**.

The **msgid** directive specifies the message identifier for the following **msgstr directive.** The *message\_identifier* string identifies a target string at retrieval time. Every statement containing a **msgid** directive must be followed by a statement containing a **msgstr** directive.

The **msgstr** directive specifies the target string associated with the *message\_identifier* string declared in the immediately preceding **msgid** directive.

## OPTIONS

- **-v**

  Verbose.  List duplicate message identifiers. Message strings are not redefined.

## EXAMPLES

The following command creates a named  **.mo** file for each domain named in the portable message objects  **filename1.po** and **filename2.po**.

```
msgfmt filename1.po filename2.po
```

Running [**msgfmt**(1)](/msgfmt/1.md) on the following sample **.po** file creates two **.mo** files, named **first.mo** and **second.mo.**

```
domain "first.mo"
msgid "aao"
msgstr "first sample message"
domain "second.mo"
msgid "bbo"
msgstr "second sample message"
```

## SEE ALSO

[**xgettext**(1)](/xgettext/1.md)**,** [**gettext**(3)](/gettext/3.md)**.**
