Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  ig-
			       nored  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 er-
			       rors.  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 ei-
       ther  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 ex-
	    ists 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  re-
       trieval	time. Each statement containing	a msgid	directive must be fol-
       lowed by	a statement containing a msgstr	directive or msgstr[n]	direc-
       tives.

       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 coftain the	escfor carriagesr0fRforfnRewlfionre,form-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 en-
		       try 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 ms-
		       gfmt 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 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 de-
       termined	 by the	current	locale's codeset (the return value of nl_lang-
       info(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 in-
       put 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:

       +-----------------------------+-----------------------------+
       |      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.

SunOS 5.10			  17 Sep 2001			     msgfmt(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | USAGE | EXAMPLES | ENVIRONMENT VARIABLES | ATTRIBUTES | SEE ALSO | NOTES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=msgfmt&sektion=1&manpath=SunOS+5.10>

home | help