unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Page:
Section:
Apropos / Subsearch:
optional field

msgfmt(1)                        User Commands                       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 portable object
       files (filename.po), without changing the portable 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                  Adds dir to the list for input files search.
       --directory=dir



       -f                      Uses fuzzy entries in output. If this option is
       --use-fuzzy             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-compat-
                               ible  message  catalog file. This option cannot
                               be specified with the -s option.



       -o output-file          Specifies the output file name as  output-file.
       --output=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 pro-
                               cessed.



       -v                      Verbose. Lists duplicate message identifiers if
       --verbose               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 stud-
                               ied and compared. It is considered abnormal  if
                               one  string starts or ends with a newline while
                               the other does not. Also, if the string  repre-
                               sents  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 spe-
                               cial  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. Comments start the line with  a  pound
       sign  (#) and end with the newline character. All comments (except spe-
       cial 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  charac-
       ters).  value consists of one or more quoted strings separated by white
       space. Use any of the following 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 format is used to generate the message object file or
            if  the  --strict option is specified. Otherwise, the default mes-
            sage 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. Otherwise, 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 identifier associ-
       ated with the directive that follows  it.  The  msgid_plural  directive
       specifies  the plural form message specified to the plural message han-
       dling functions ngettext(),  dngettext(),  or  dcngettext().  The  mes-
       sage_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 immediately preceding msgid
       directive.

       The directive msgstr[n] (where n = 0, 1, 2, ...) specifies  the  target
       string  to  be  used  with  plural  form handling functions ngettext(),
       dngettext(), and dcngetttext().

       Message strings can contafn the escapeforqcarriag0efRreftourrnn,efRifor forrmm--
       tab,  for  vertical tab, obackspace,
       feed, \ for  backslash,  r

       Comments for a GNU-compatible message file should be in one of the fol-
       lowing formats (the msgfmt utility will ignore these comments when pro-
       cessing 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 following flags can be specified:

       fuzzy           This flag can be inserted by the translator.  It  shows
                       that  the msgstr string might not be a correct transla-
                       tion (anymore). Only the translator can  judge  if  the
                       translation requires further modification or is accept-
                       able as is. Once satisfied 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        The c-format flag indicates that the  msgid  string  is
       no-c-format     used  as  a  format string by printf-like functions. In
                       case the c-format flag  is  given  for  a  string,  the
                       msgfmt utility does some more tests to check the valid-
                       ity 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 contains nplurals=value,  the  value  indi-
       cates 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 character. 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,

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

       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 different 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(),
       dgettext(), dcgettext(), ngettext(), dngettext(), and dcngettext()  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 mes-
       sage  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 utility 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 mes-
            sage 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.

EXAMPLES
       Example 1: Creating message objects from message files

       In this example, module1.po and module2.po are portable message 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 mes-
       sage 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 environmental vari-
       ables that affect the execution of msgfmt: LC_CTYPE,  LC_MESSAGES,  and
       NLSPATH.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:


       tab()     allbox;     cw(2.750000i)|    cw(2.750000i)    lw(2.750000i)|
       lw(2.750000i).   ATTRIBUTE  TYPEATTRIBUTE   VALUE   AvailabilitySUNWloc
       CSIEnabled


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.



SunOS 5.10                        17 Sep 2001                        msgfmt(1)