1 MSGFMT(1)                        User Commands                       MSGFMT(1)
   2 
   3 
   4 
   5 NAME
   6        msgfmt - create a message object from a message file
   7 
   8 SYNOPSIS
   9        msgfmt [-D dir | --directory=dir]
  10             [-f | --use-fuzzy] [-g]
  11             [-o output-file | --output-file=output-file]
  12             [-s] [--strict] [-v] [--verbose] filename.po...
  13 
  14 
  15 DESCRIPTION
  16        The msgfmt utility creates message object files from portable object
  17        files (filename.po), without changing the portable object files.
  18 
  19 
  20        The .po file contains messages displayed to users by system commands or
  21        by application programs. .po files can be edited. The messages in these
  22        files can be rewritten in any language supported by the system.
  23 
  24 
  25        The xgettext(1) command can be used to create .po files from script or
  26        programs.
  27 
  28 
  29        msgfmt interprets data as characters according to the current setting
  30        of the LC_CTYPE locale category or according to the codeset specified
  31        in the .po file.
  32 
  33 OPTIONS
  34        The following options are supported:
  35 
  36        -D dir
  37        --directory=dir
  38                                   Adds dir to the list for input files search.
  39 
  40 
  41        -f
  42        --use-fuzzy
  43                                   Uses fuzzy entries in output. If this option
  44                                   is not specified, fuzzy entries are not
  45                                   included into the output. These options are
  46                                   ignored if Solaris message catalogs are
  47                                   processed.
  48 
  49 
  50        -g
  51                                   Directs the utility to generate the GNU-
  52                                   compatible message catalog file. This option
  53                                   cannot be specified with the -s option.
  54 
  55 
  56        -o output-file
  57        --output=output-file
  58                                   Specifies the output file name as output-
  59                                   file. All domain directives and duplicate
  60                                   msgids in the .po file are ignored.
  61 
  62 
  63        -s
  64                                   Directs the utility to generate the Solaris
  65                                   message catalog file. This option cannot be
  66                                   specified with the -g option.
  67 
  68 
  69        --strict
  70                                   Directs the utility to append the suffix .mo
  71                                   to the generating message object file name
  72                                   if it doesn't have this suffix. This option
  73                                   is ignored if Solaris message catalogs are
  74                                   processed.
  75 
  76 
  77        -v
  78        --verbose
  79                                   Verbose. Lists duplicate message identifiers
  80                                   if Solaris message catalog files are
  81                                   processed. Message strings are not
  82                                   redefined.
  83 
  84                                   If GNU-compatible message files are
  85                                   processed, this option detects and diagnoses
  86                                   input file anomalies which might represent
  87                                   translation errors. The msgid and msgstr
  88                                   strings are studied and compared. It is
  89                                   considered abnormal if one string starts or
  90                                   ends with a newline while the other does
  91                                   not. Also, if the string represents a format
  92                                   string used in a printf-like function, both
  93                                   strings should have the same number of %
  94                                   format specifiers, with matching types. If
  95                                   the flag c-format appears in the special
  96                                   comment '#' for this entry, a check is
  97                                   performed.
  98 
  99 
 100 USAGE
 101        The format of portable object files (.po files) is defined as follows.
 102        Each .po file contains one or more lines, with each line containing
 103        either a comment or a statement. Comments start the line with a pound
 104        sign (#) and end with the newline character. All comments (except
 105        special comments described later) and empty lines are ignored. The
 106        format of a statement is:
 107 
 108          directive     value
 109 
 110 
 111 
 112 
 113        Each directive starts at the beginning of the line and is separated
 114        from value by white space (such as one or more space or tab
 115        characters).  value consists of one or more quoted strings separated by
 116        white space.  Use any of the following types of directives for the
 117        Solaris message file:
 118 
 119          domain domainname
 120          msgid message_identifier
 121          msgstr message_string
 122 
 123 
 124 
 125 
 126        For a GNU-compatible message file, use any of the following types of
 127        directives:
 128 
 129          domain domainname
 130          msgid message_identifier
 131          msgid_plural untranslated_string_plural
 132          msgstr message_string
 133          msgstr[n] message_string
 134 
 135 
 136 
 137 
 138        The behavior of the domain directive is affected by the options used.
 139        See OPTIONS for the behavior when the -o or --output-file options are
 140        specified. If the -o or --output-file options are not specified, the
 141        behavior of the domain directive is as follows:
 142 
 143            o      All msgids from the beginning of each .po file to the first
 144                   domain directive are put into a default message object file.
 145                   The default message object file is named messages.mo, if the
 146                   Solaris message catalog file format is used to generate the
 147                   message object file or if the --strict option is specified.
 148                   Otherwise, the default message object file is named
 149                   messages.
 150 
 151            o      When msgfmt encounters a domain domainname directive in the
 152                   .po file, all following msgids until the next domain
 153                   directive are put into the message object file, named
 154                   domainname.mo, if the Solaris message catalog file format is
 155                   used to generate the message object file or if the --strict
 156                   option is specified. Otherwise, the msgids are put into the
 157                   message object file named domainname.
 158 
 159            o      Duplicate msgids are defined in the scope of each domain.
 160                   That is, a msgid is considered a duplicate only if the
 161                   identical msgid exists in the same domain.
 162 
 163            o      All duplicate msgids are ignored.
 164 
 165 
 166        The msgid directive specifies the value of a message identifier
 167        associated with the directive that follows it. The msgid_plural
 168        directive specifies the plural form message specified to the plural
 169        message handling functions ngettext(), dngettext(), or dcngettext().
 170        The message_identifier string identifies a target string to be used at
 171        retrieval time. Each statement containing a msgid directive must be
 172        followed by a statement containing a msgstr directive or msgstr[n]
 173        directives.
 174 
 175 
 176        The msgstr directive specifies the target string associated with the
 177        message_identifier string declared in the immediately preceding msgid
 178        directive.
 179 
 180 
 181        The directive msgstr[n] (where n = 0, 1, 2, ...) specifies the target
 182        string to be used with plural form handling functions ngettext(),
 183        dngettext(), and dcngettext().
 184 
 185 
 186        Message strings can contain the escape sequences \n for newline, \t for
 187        tab, \v for vertical tab, \b for backspace, \r for carriage return, \f
 188        for formfeed, \ for backslash, \" for double quote, \a for alarm, \ddd
 189        for octal bit pattern, and \xDD for hexadecimal bit pattern.
 190 
 191 
 192        Comments for a GNU-compatible message file should be in one of the
 193        following formats (the msgfmt utility will ignore these comments when
 194        processing Solaris message files):
 195 
 196          # translator-comments
 197          #. automatic-comments
 198          #: reference..
 199          #, flag
 200 
 201 
 202 
 203 
 204        The '#:' comments indicate the location of the msgid string in the
 205        source files in filename:line format. The '#', '#.', and '#:' comments
 206        are informative only and are silently ignored by the msgfmt utility.
 207        The '#,' comments require one or more flags separated by the comma
 208        character. The following flags can be specified:
 209 
 210        fuzzy
 211                       This flag can be inserted by the translator. It shows
 212                       that the msgstr string might not be a correct
 213                       translation (anymore). Only the translator can judge if
 214                       the translation requires further modification or is
 215                       acceptable as is.  Once satisfied with the translation,
 216                       the translator removes this fuzzy flag. If this flag is
 217                       specified, the msgfmt utility will not generate the
 218                       entry for the immediately following msgid in the output
 219                       message catalog.
 220 
 221 
 222        c-format
 223        no-c-format
 224                       The c-format flag indicates that the msgid string is
 225                       used as a format string by printf-like functions. In
 226                       case the c-format flag is given for a string, the msgfmt
 227                       utility does some more tests to check the validity of
 228                       the translation.
 229 
 230 
 231 
 232        In the GNU-compatible message file, the msgid entry with empty string
 233        ("") is called the header entry and treated specially. If the message
 234        string for the header entry contains nplurals=value, the value
 235        indicates the number of plural forms. For example, if nplurals=4, there
 236        are four plural forms. If nplurals is defined, the same line should
 237        contain plural=expression, separated by a semicolon character. The
 238        expression is a C language expression to determine which version of
 239        msgstr[n] is to be used based on the value of n, the last argument of
 240        ngettext(), dngettext(), or dcngettext(). For example,
 241 
 242          nplurals=2; plural= n == 1 ? 0 : 1
 243 
 244 
 245 
 246 
 247        indicates that there are two plural forms in the language. msgstr[0] is
 248        used if n == 1, otherwise msgstr[1] is used. For another example:
 249 
 250          nplurals=3; plural= n == 1 ? 0 : n == 2 ? 1 : 2
 251 
 252 
 253 
 254 
 255        indicates that there are three plural forms in the language. msgstr[0]
 256        is used if n == 1, msgstr[1] is used if n == 2, otherwise msgstr[2] is
 257        used.
 258 
 259 
 260        If the header entry contains a charset=codeset string, the codeset is
 261        used to indicate the codeset to be used to encode the message strings.
 262        If the output string's codeset is different from the message string's
 263        codeset, codeset conversion from the message string's codeset to the
 264        output string's codeset will be performed upon the call of gettext(),
 265        dgettext(), dcgettext(), ngettext(), dngettext(), and dcngettext() for
 266        the GNU-compatible message catalogs. The output string's codeset is
 267        determined by the current locale's codeset (the return value of
 268        nl_langinfo(CODESET)) by default, and can be changed by the call of
 269        bind_textdomain_codeset().
 270 
 271    Message catalog file format
 272        The msgfmt utility can generate the message object both in Solaris
 273        message catalog file format and in GNU-compatible message catalog file
 274        format.  If the -s option is specified and the input file is a Solaris
 275        .po file, the msgfmt utility generates the message object in Solaris
 276        message catalog file format. If the -g option is specified and the
 277        input file is a GNU .po file, the msgfmt utility generates the message
 278        object in GNU-compatible message catalog file format. If neither the -s
 279        nor -g option is specified, the msgfmt utility determines the message
 280        catalog file format as follows:
 281 
 282            o      If the .po file contains a valid GNU header entry (having an
 283                   empty string for msgid), the msgfmt utility uses the GNU-
 284                   compatible message catalog file format.
 285 
 286            o      Otherwise, the msgfmt utility uses the Solaris message
 287                   catalog file format.
 288 
 289 
 290        If the msgfmt utility determined that the Solaris message catalog file
 291        format is used, as above, but found the .po file contains directives
 292        that are specific to the GNU-compatible message catalog file format,
 293        such as msgid_plural and msgstr[n], the msgfmt utility handles those
 294        directives as invalid specifications.
 295 
 296 EXAMPLES
 297        Example 1 Creating message objects from message files
 298 
 299 
 300        In this example, module1.po and module2.po are portable message objects
 301        files.
 302 
 303 
 304          example% cat module1.po
 305          # default domain "messages.mo"
 306          msgid  "msg 1"
 307          msgstr "msg 1 translation"
 308          #
 309          domain "help_domain"
 310          msgid  "help 2"
 311          msgstr "help 2 translation"
 312          #
 313          domain "error_domain"
 314          msgid  "error 3"
 315          msgstr "error 3 translation"
 316          example% cat module2.po
 317          # default domain "messages.mo"
 318          msgid  "mesg 4"
 319          msgstr "mesg 4 translation"
 320          #
 321          domain "error_domain"
 322          msgid  "error 5"
 323          msgstr "error 5 translation"
 324          #
 325          domain "window_domain"
 326          msgid  "window 6"
 327          msgstr "window 6 translation"
 328 
 329 
 330 
 331 
 332        The following command will produce the output files messages.mo,
 333        help_domain.mo, and error_domain.mo in Solaris message catalog file
 334        format:
 335 
 336 
 337          example% msgfmt module1.po
 338 
 339 
 340 
 341 
 342        The following command will produce the output files messages.mo,
 343        help_domain.mo, error_domain.mo, and window_domain.mo in Solaris
 344        message catalog file format:
 345 
 346 
 347          example% msgfmt module1.po module2.po
 348 
 349 
 350 
 351 
 352        The following command will produce the output file hello.mo in Solaris
 353        message catalog file format:
 354 
 355 
 356          example% msgfmt -o hello.mo module1.po module2.po
 357 
 358 
 359 
 360 ENVIRONMENT VARIABLES
 361        See environ(5) for descriptions of the following environmental
 362        variables that affect the execution of msgfmt: LC_CTYPE, LC_MESSAGES,
 363        and NLSPATH.
 364 
 365 ATTRIBUTES
 366        See attributes(5) for descriptions of the following attributes:
 367 
 368 
 369 
 370 
 371        +---------------+-----------------+
 372        |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
 373        +---------------+-----------------+
 374        |CSI            | Enabled         |
 375        +---------------+-----------------+
 376 
 377 SEE ALSO
 378        xgettext(1), gettext(3C), setlocale(3C), attributes(5), environ(5)
 379 
 380 NOTES
 381        Installing message catalogs under the C locale is pointless, since they
 382        are ignored for the sake of efficiency.
 383 
 384 
 385 
 386                               September 17, 2001                     MSGFMT(1)