msgfmt(1)




NAME

     msgfmt - create a message object from a message file


SYNOPSIS

     msgfmt [-D dir | --directory=dir]  [-f | --use-fuzzy]   [-g]
     [-o output-file   |   --output-file=output-file]    [-s]  [-
     -strict] [-v] [--verbose] filename.po...


DESCRIPTION

     The msgfmt utility creates message object files  from  port-
     able  object files (filename.po), without changing the port-
     able object files.

     The .po file contains messages displayed to users by  system
     commands  or  by  application  programs.  .po  files  can be
     edited. The messages in these files can be rewritten in  any
     language supported by the system.

     The xgettext(1) command can be used to create .po files from
     script or programs.

     msgfmt  interprets  data  as  characters  according  to  the
     current setting of the LC_CTYPE locale category or according
     to the codeset specified in the .po file.


OPTIONS

     The following options are supported:

     -D dir

     --directory=dir
           Adds dir to the list for input files search.

     -f

     --use-fuzzy
           Uses fuzzy entries in output. If this  option  is  not
           specified,  fuzzy  entries  are  not included into the
           output. These options are ignored if  Solaris  message
           catalogs are processed.

     -g    Directs the utility  to  generate  the  GNU-compatible
           message  catalog file. This option cannot be specified
           with the -s option.

     -o output-file

     --output=output-file
           Specifies the output file  name  as  output-file.  All
           domain directives and duplicate msgids in the .po file
           are ignored.

     -s    Directs the utility to generate  the  Solaris  message
           catalog file. This option cannot be specified with the
           -g option.

     --strict
           Directs the utility to append the suffix  .mo  to  the
           generating message object file name if it doesn't have
           this suffix. This option is ignored if Solaris message
           catalogs are processed.

     -v

     --verbose
           Verbose.  Lists  duplicate  message   identifiers   if
           Solaris  message  catalog files are processed. Message
           strings are not redefined.

           If GNU-compatible message files  are  processed,  this
           option  detects  and  diagnoses  input  file anomalies
           which might represent translation  errors.  The  msgid
           and  msgstr  strings  are  studied and compared. It is
           considered abnormal if one string starts or ends  with
           a  newline  while  the  other  does  not. Also, if the
           string represents a format string used  in  a  printf-
           like  function,  both  strings  should  have  the same
           number of % format specifiers, with matching types. If
           the  flag  c-format appears in the special comment '#'
           for this entry, a check is performed.


USAGE

     The format of portable object files (.po files)  is  defined
     as  follows.  Each .po file contains one or more lines, with
     each line containing either a comment or a  statement.  Com-
     ments  start the line with a pound sign (#) and end with the
     newline character. All  comments  (except  special  comments
     described  later) and empty lines are ignored. The format of
     a statement is:

     directive     value

     Each directive starts at the beginning of the  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. Use any of the fol-
     lowing types of directives for the Solaris message file:

     domain domainname
     msgid message_identifier
     msgstr message_string

     For a GNU-compatible message file, use any of the  following
     types of directives:
     domain domainname
     msgid message_identifier
     msgid_plural untranslated_string_plural
     msgstr message_string
     msgstr[n] message_string

     The behavior of the domain  directive  is  affected  by  the
     options  used.  See  OPTIONS for the behavior when the -o or
     --output-file options are specified. If the -o or  --output-
     file  options  are not specified, the behavior of the domain
     directive is as follows:

        o  All msgids from the beginning of each .po file to  the
           first  domain directive are put into a default message
           object file. The default message object file is  named
           messages.mo,  if the Solaris message catalog file for-
           mat is used to generate the message object file or  if
           the  --strict  option  is  specified.  Otherwise,  the
           default message object file is named messages.

        o  When msgfmt encounters a domain  domainname  directive
           in  the  .po file, all following msgids until the next
           domain directive are put into the message object file,
           named  domainname.mo,  if  the Solaris message catalog
           file format is used to  generate  the  message  object
           file  or  if  the --strict option is specified. Other-
           wise, the msgids are put into the message object  file
           named domainname.

        o  Duplicate msgids are defined  in  the  scope  of  each
           domain.  That  is,  a  msgid is considered a duplicate
           only if the identical msgid exists in the same domain.

        o  All duplicate msgids are ignored.

     The msgid directive specifies the value of a  message  iden-
     tifier  associated  with  the directive that follows it. The
     msgid_plural directive specifies  the  plural  form  message
     specified  to  the  plural  message handling functions nget-
     text(), dngettext(), or dcngettext(). The message_identifier
     string  identifies  a  target string to be used at retrieval
     time. Each statement containing a msgid  directive  must  be
     followed  by  a  statement  containing a msgstr directive or
     msgstr[n] directives.

     The msgstr directive specifies the target string  associated
     with  the  message_identifier string declared in the immedi-
     ately preceding msgid directive.

     The directive msgstr[n] (where n = 0, 1, 2,  ...)  specifies
     the target string to be used with plural form handling func-
     tions ngettext(), dngettext(), and dcngetttext().
     Message strings can contain the escfpe  sequencefor0carriage
     return,  for formfeed,e\tforl backslash,space,
                                        r
     Comments for a GNU-compatible message file should be in  one
     of  the  following  formats  (the msgfmt utility will ignore
     these comments when processing Solaris message files):

     # translator-comments
     #. automatic-comments
     #: reference..
     #, flag

     The '#:' comments indicate the location of the msgid  string
     in  the source files in filename:line format. The '#', '#.',
     and '#:' comments are  informative  only  and  are  silently
     ignored by the msgfmt utility. The '#,' comments require one
     or more flags separated by the comma character. The  follow-
     ing flags can be specified:

          fuzzy This flag can be inserted by the  translator.  It
                shows  that  the  msgstr  string  might  not be a
                correct translation (anymore). Only the  transla-
                tor can judge if the translation requires further
                modification or is acceptable as is. Once  satis-
                fied with the translation, the translator removes
                this fuzzy flag. If this flag is  specified,  the
                msgfmt  utility  will  not generate the entry for
                the immediately following  msgid  in  the  output
                message catalog.

          c-format

          no-c-format
                The c-format flag indicates that the msgid string
                is  used  as a format string by printf-like func-
                tions. In case the c-format flag is given  for  a
                string,  the  msgfmt utility does some more tests
                to check the validity of the translation.

     In the GNU-compatible message file,  the  msgid  entry  with
     empty  string  ("")  is  called the header entry and treated
     specially. If the message string for the header  entry  con-
     tains  nplurals=value,  the  value  indicates  the number of
     plural forms. For example, if  nplurals=4,  there  are  four
     plural  forms.  If nplurals is defined, the same line should
     contain plural=expression, separated by a semicolon  charac-
     ter.  The expression is a C language expression to determine
     which version of msgstr[n] is to be used based on the  value
     of  n,  the  last  argument  of  ngettext(), dngettext(), or
     dcngettext(). For example,


     indicates that there are two plural forms in  the  language.
     msgstr[0]  is  used  if n == 1, otherwise msgstr[1] is used.
     For another example:

     nplurals=3; plural= n == 1 ? 0 : n == 2 ? 1 : 2

     indicates that there are three plural forms in the language.
     msgstr[0]  is  used  if n == 1, msgstr[1] is used if n == 2,
     otherwise msgstr[2] is used.

     If the header entry contains a charset=codeset  string,  the
     codeset is used to indicate the codeset to be used to encode
     the message strings. If the output string's codeset is  dif-
     ferent from the message string's codeset, codeset conversion
     from the message string's codeset  to  the  output  string's
     codeset  will be performed upon the call of gettext(), dget-
     text(), dcgettext(), ngettext(),  dngettext(),  and  dcnget-
     text()  for  the GNU-compatible message catalogs. The output
     string's codeset  is  determined  by  the  current  locale's
     codeset   (the  return  value  of  nl_langinfo(CODESET))  by
     default,   and   can   be   changed   by   the    call    of
     bind_textdomain_codeset().

  Message catalog file format
     The msgfmt utility can generate the message object  both  in
     Solaris  message  catalog  file format and in GNU-compatible
     message catalog file format. If the -s option  is  specified
     and the input file is a Solaris .po file, the msgfmt utility
     generates the message object in Solaris message catalog file
     format.  If the -g option is specified and the input file is
     a GNU .po file, the msgfmt  utility  generates  the  message
     object  in  GNU-compatible  message  catalog file format. If
     neither the -s nor -g option is specified, the msgfmt  util-
     ity determines the message catalog file format as follows:

        o  If the .po file contains  a  valid  GNU  header  entry
           (having an empty string for msgid), the msgfmt utility
           uses the GNU-compatible message catalog file format.

        o  Otherwise, the msgfmt utility uses the Solaris message
           catalog file format.

     If the msgfmt utility determined that  the  Solaris  message
     catalog  file  format  is  used, as above, but found the .po
     file contains directives  that  are  specific  to  the  GNU-
     compatible message catalog file format, such as msgid_plural
     and msgstr[n], the msgfmt utility handles  those  directives
     as invalid specifications.

     Example 1: Creating message objects from message files

     In this example, module1.po and module2.po are portable mes-
     sage objects files.

     example% cat module1.po
     # default domain "messages.mo"
     msgid  "msg 1"
     msgstr "msg 1 translation"
     #
     domain "help_domain"
     msgid  "help 2"
     msgstr "help 2 translation"
     #
     domain "error_domain"
     msgid  "error 3"
     msgstr "error 3 translation"
     example% cat module2.po
     # default domain "messages.mo"
     msgid  "mesg 4"
     msgstr "mesg 4 translation"
     #
     domain "error_domain"
     msgid  "error 5"
     msgstr "error 5 translation"
     #
     domain "window_domain"
     msgid  "window 6"
     msgstr "window 6 translation"

     The  following  command  will  produce  the   output   files
     messages.mo,  help_domain.mo, and error_domain.mo in Solaris
     message catalog file format:

     example% msgfmt module1.po

     The  following  command  will  produce  the   output   files
     messages.mo,     help_domain.mo,     error_domain.mo,    and
     window_domain.mo in Solaris message catalog file format:

     example% msgfmt module1.po module2.po

     The following command will produce the output file  hello.mo
     in Solaris message catalog file format:

     example% msgfmt -o hello.mo module1.po module2.po


ENVIRONMENT VARIABLES

     See environ(5) for descriptions of the following environmen-
     tal variables that affect the execution of msgfmt: LC_CTYPE,
     LC_MESSAGES, and NLSPATH.

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWloc                     |
    |_____________________________|_____________________________|
    | CSI                         | Enabled                     |
    |_____________________________|_____________________________|


SEE ALSO

     xgettext(1),  gettext(3C),   setlocale(3C),   attributes(5),
     environ(5)


NOTES

     Installing message catalogs under the C locale is pointless,
     since they are ignored for the sake of efficiency.


Man(1) output converted with man2html