1@c This file is part of the GNU gettext manual. 2@c Copyright (C) 1995-2020 Free Software Foundation, Inc. 3@c See the file gettext.texi for copying conditions. 4 5@pindex xgettext 6@cindex @code{xgettext} program, usage 7@example 8xgettext [@var{option}] [@var{inputfile}] @dots{} 9@end example 10 11The @code{xgettext} program extracts translatable strings from given 12input files. 13 14@subsection Input file location 15 16@table @samp 17@item @var{inputfile} @dots{} 18Input files. 19 20@item -f @var{file} 21@itemx --files-from=@var{file} 22@opindex -f@r{, @code{xgettext} option} 23@opindex --files-from@r{, @code{xgettext} option} 24Read the names of the input files from @var{file} instead of getting 25them from the command line. 26 27@item -D @var{directory} 28@itemx --directory=@var{directory} 29@opindex -D@r{, @code{xgettext} option} 30@opindex --directory@r{, @code{xgettext} option} 31Add @var{directory} to the list of directories. Source files are 32searched relative to this list of directories. The resulting @file{.po} 33file will be written relative to the current directory, though. 34 35@end table 36 37If @var{inputfile} is @samp{-}, standard input is read. 38 39@subsection Output file location 40 41@table @samp 42@item -d @var{name} 43@itemx --default-domain=@var{name} 44@opindex -d@r{, @code{xgettext} option} 45@opindex --default-domain@r{, @code{xgettext} option} 46Use @file{@var{name}.po} for output (instead of @file{messages.po}). 47 48@item -o @var{file} 49@itemx --output=@var{file} 50@opindex -o@r{, @code{xgettext} option} 51@opindex --output@r{, @code{xgettext} option} 52Write output to specified file (instead of @file{@var{name}.po} or 53@file{messages.po}). 54 55@item -p @var{dir} 56@itemx --output-dir=@var{dir} 57@opindex -p@r{, @code{xgettext} option} 58@opindex --output-dir@r{, @code{xgettext} option} 59Output files will be placed in directory @var{dir}. 60 61@end table 62 63@cindex output to stdout, @code{xgettext} 64If the output @var{file} is @samp{-} or @samp{/dev/stdout}, the output 65is written to standard output. 66 67@subsection Choice of input file language 68 69@table @samp 70@item -L @var{name} 71@itemx --language=@var{name} 72@opindex -L@r{, @code{xgettext} option} 73@opindex --language@r{, @code{xgettext} option} 74@cindex supported languages, @code{xgettext} 75Specifies the language of the input files. The supported languages 76are @code{C}, @code{C++}, @code{ObjectiveC}, @code{PO}, @code{Shell}, 77@code{Python}, @code{Lisp}, @code{EmacsLisp}, @code{librep}, @code{Scheme}, 78@code{Smalltalk}, @code{Java}, @code{JavaProperties}, @code{C#}, @code{awk}, 79@code{YCP}, @code{Tcl}, @code{Perl}, @code{PHP}, @code{Ruby}, 80@code{GCC-source}, @code{NXStringTable}, @code{RST}, @code{RSJ}, @code{Glade}, 81@code{Lua}, @code{JavaScript}, @code{Vala}, @code{GSettings}, @code{Desktop}. 82 83@item -C 84@itemx --c++ 85@opindex -C@r{, @code{xgettext} option} 86@opindex --c++@r{, @code{xgettext} option} 87This is a shorthand for @code{--language=C++}. 88 89@end table 90 91By default the language is guessed depending on the input file name 92extension. 93 94@subsection Input file interpretation 95 96@table @samp 97@item --from-code=@var{name} 98@opindex --from-code@r{, @code{xgettext} option} 99Specifies the encoding of the input files. This option is needed only 100if some untranslated message strings or their corresponding comments 101contain non-ASCII characters. Note that Tcl and Glade input files are 102always assumed to be in UTF-8, regardless of this option. 103 104@end table 105 106By default the input files are assumed to be in ASCII. 107 108@subsection Operation mode 109 110@table @samp 111@item -j 112@itemx --join-existing 113@opindex -j@r{, @code{xgettext} option} 114@opindex --join-existing@r{, @code{xgettext} option} 115Join messages with existing file. 116 117@item -x @var{file} 118@itemx --exclude-file=@var{file} 119@opindex -x@r{, @code{xgettext} option} 120@opindex --exclude-file@r{, @code{xgettext} option} 121Entries from @var{file} are not extracted. @var{file} should be a PO or 122POT file. 123 124@item -c[@var{tag}] 125@itemx --add-comments[=@var{tag}] 126@opindex -c@r{, @code{xgettext} option} 127@opindex --add-comments@r{, @code{xgettext} option} 128Place comment blocks starting with @var{tag} and preceding keyword lines 129in the output file. Without a @var{tag}, the option means to put @emph{all} 130comment blocks preceding keyword lines in the output file. 131 132Note that comment blocks supposed to be extracted must be adjacent to 133keyword lines. For example, in the following C source code: 134 135@example 136/* This is the first comment. */ 137gettext ("foo"); 138 139/* This is the second comment: not extracted */ 140gettext ( 141 "bar"); 142 143gettext ( 144 /* This is the third comment. */ 145 "baz"); 146@end example 147 148The second comment line will not be extracted, because there is one 149blank line between the comment line and the keyword. 150 151@item --check[=@var{CHECK}] 152@opindex --check@r{, @code{xgettext} option} 153@cindex supported syntax checks, @code{xgettext} 154Perform a syntax check on msgid and msgid_plural. The supported checks 155are: 156 157@table @samp 158@item ellipsis-unicode 159Prefer Unicode ellipsis character over ASCII @code{...} 160 161@item space-ellipsis 162Prohibit whitespace before an ellipsis character 163 164@item quote-unicode 165Prefer Unicode quotation marks over ASCII @code{"'`} 166 167@item bullet-unicode 168Prefer Unicode bullet character over ASCII @code{*} or @code{-} 169 170@end table 171 172The option has an effect on all input files. To enable or disable 173checks for a certain string, you can mark it with an @code{xgettext:} 174special comment in the source file. For example, if you specify the 175@code{--check=space-ellipsis} option, but want to suppress the check on 176a particular string, add the following comment: 177 178@example 179/* xgettext: no-space-ellipsis-check */ 180gettext ("We really want a space before ellipsis here ..."); 181@end example 182 183The @code{xgettext:} comment can be followed by flags separated with a 184comma. The possible flags are of the form @samp{[no-]@var{name}-check}, 185where @var{name} is the name of a valid syntax check. If a flag is 186prefixed by @code{no-}, the meaning is negated. 187 188Some tests apply the checks to each sentence within the msgid, rather 189than the whole string. xgettext detects the end of sentence by 190performing a pattern match, which usually looks for a period followed by 191a certain number of spaces. The number is specified with the 192@code{--sentence-end} option. 193 194@item --sentence-end[=@var{TYPE}] 195@opindex --sentence-end@r{, @code{xgettext} option} 196@cindex sentence end markers, @code{xgettext} 197The supported values are: 198 199@table @samp 200@item single-space 201Expect at least one whitespace after a period 202 203@item double-space 204Expect at least two whitespaces after a period 205 206@end table 207 208@end table 209 210@subsection Language specific options 211 212@table @samp 213@item -a 214@itemx --extract-all 215@opindex -a@r{, @code{xgettext} option} 216@opindex --extract-all@r{, @code{xgettext} option} 217Extract all strings. 218 219This option has an effect with most languages, namely C, C++, ObjectiveC, 220Shell, Python, Lisp, EmacsLisp, librep, Java, C#, awk, Tcl, Perl, PHP, 221GCC-source, Glade, Lua, JavaScript, Vala, GSettings. 222 223@item -k[@var{keywordspec}] 224@itemx --keyword[=@var{keywordspec}] 225@opindex -k@r{, @code{xgettext} option} 226@opindex --keyword@r{, @code{xgettext} option} 227Specify @var{keywordspec} as an additional keyword to be looked for. 228Without a @var{keywordspec}, the option means to not use default keywords. 229 230@cindex adding keywords, @code{xgettext} 231@cindex context, argument specification in @code{xgettext} 232If @var{keywordspec} is a C identifier @var{id}, @code{xgettext} looks 233for strings in the first argument of each call to the function or macro 234@var{id}. If @var{keywordspec} is of the form 235@samp{@var{id}:@var{argnum}}, @code{xgettext} looks for strings in the 236@var{argnum}th argument of the call. If @var{keywordspec} is of the form 237@samp{@var{id}:@var{argnum1},@var{argnum2}}, @code{xgettext} looks for 238strings in the @var{argnum1}st argument and in the @var{argnum2}nd argument 239of the call, and treats them as singular/plural variants for a message 240with plural handling. Also, if @var{keywordspec} is of the form 241@samp{@var{id}:@var{contextargnum}c,@var{argnum}} or 242@samp{@var{id}:@var{argnum},@var{contextargnum}c}, @code{xgettext} treats 243strings in the @var{contextargnum}th argument as a context specifier. 244And, as a special-purpose support for GNOME, if @var{keywordspec} is of the 245form @samp{@var{id}:@var{argnum}g}, @code{xgettext} recognizes the 246@var{argnum}th argument as a string with context, using the GNOME @code{glib} 247syntax @samp{"msgctxt|msgid"}. 248@* 249Furthermore, if @var{keywordspec} is of the form 250@samp{@var{id}:@dots{},@var{totalnumargs}t}, @code{xgettext} recognizes this 251argument specification only if the number of actual arguments is equal to 252@var{totalnumargs}. This is useful for disambiguating overloaded function 253calls in C++. 254@* 255Finally, if @var{keywordspec} is of the form 256@samp{@var{id}:@var{argnum}...,"@var{xcomment}"}, @code{xgettext}, when 257extracting a message from the specified argument strings, adds an extracted 258comment @var{xcomment} to the message. Note that when used through a normal 259shell command line, the double-quotes around the @var{xcomment} need to be 260escaped. 261 262This option has an effect with most languages, namely C, C++, ObjectiveC, 263Shell, Python, Lisp, EmacsLisp, librep, Java, C#, awk, Tcl, Perl, PHP, 264GCC-source, Glade, Lua, JavaScript, Vala, GSettings, Desktop. 265 266The default keyword specifications, which are always looked for if not 267explicitly disabled, are language dependent. They are: 268 269@itemize 270@item 271For C, C++, and GCC-source: @code{gettext}, @code{dgettext:2}, 272@code{dcgettext:2}, @code{ngettext:1,2}, @code{dngettext:2,3}, 273@code{dcngettext:2,3}, @code{gettext_noop}, and @code{pgettext:1c,2}, 274@code{dpgettext:2c,3}, @code{dcpgettext:2c,3}, @code{npgettext:1c,2,3}, 275@code{dnpgettext:2c,3,4}, @code{dcnpgettext:2c,3,4}. 276 277@item 278For Objective C: Like for C, and also @code{NSLocalizedString}, @code{_}, 279@code{NSLocalizedStaticString}, @code{__}. 280 281@item 282For Shell scripts: @code{gettext}, @code{ngettext:1,2}, @code{eval_gettext}, 283@code{eval_ngettext:1,2}, @code{eval_pgettext:1c,2}, 284@code{eval_npgettext:1c,2,3}. 285 286@item 287For Python: @code{gettext}, @code{ugettext}, @code{dgettext:2}, 288@code{ngettext:1,2}, @code{ungettext:1,2}, @code{dngettext:2,3}, @code{_}. 289 290@item 291For Lisp: @code{gettext}, @code{ngettext:1,2}, @code{gettext-noop}. 292 293@item 294For EmacsLisp: @code{_}. 295 296@item 297For librep: @code{_}. 298 299@item 300For Scheme: @code{gettext}, @code{ngettext:1,2}, @code{gettext-noop}. 301 302@item 303For Java: @code{GettextResource.gettext:2}, 304@code{GettextResource.ngettext:2,3}, @code{GettextResource.pgettext:2c,3}, 305@code{GettextResource.npgettext:2c,3,4}, @code{gettext}, @code{ngettext:1,2}, 306@code{pgettext:1c,2}, @code{npgettext:1c,2,3}, @code{getString}. 307 308@item 309For C#: @code{GetString}, @code{GetPluralString:1,2}, 310@code{GetParticularString:1c,2}, @code{GetParticularPluralString:1c,2,3}. 311 312@item 313For awk: @code{dcgettext}, @code{dcngettext:1,2}. 314 315@item 316For Tcl: @code{::msgcat::mc}. 317 318@item 319For Perl: @code{gettext}, @code{%gettext}, @code{$gettext}, @code{dgettext:2}, 320@code{dcgettext:2}, @code{ngettext:1,2}, @code{dngettext:2,3}, 321@code{dcngettext:2,3}, @code{gettext_noop}. 322 323@item 324For PHP: @code{_}, @code{gettext}, @code{dgettext:2}, @code{dcgettext:2}, 325@code{ngettext:1,2}, @code{dngettext:2,3}, @code{dcngettext:2,3}. 326 327@item 328For Glade 1: @code{label}, @code{title}, @code{text}, @code{format}, 329@code{copyright}, @code{comments}, @code{preview_text}, @code{tooltip}. 330 331@item 332For Lua: @code{_}, @code{gettext.gettext}, @code{gettext.dgettext:2}, 333@code{gettext.dcgettext:2}, @code{gettext.ngettext:1,2}, 334@code{gettext.dngettext:2,3}, @code{gettext.dcngettext:2,3}. 335 336@item 337For JavaScript: @code{_}, @code{gettext}, @code{dgettext:2}, 338@code{dcgettext:2}, @code{ngettext:1,2}, @code{dngettext:2,3}, 339@code{pgettext:1c,2}, @code{dpgettext:2c,3}. 340 341@item 342For Vala: @code{_}, @code{Q_}, @code{N_}, @code{NC_}, @code{dgettext:2}, 343@code{dcgettext:2}, @code{ngettext:1,2}, @code{dngettext:2,3}, 344@code{dpgettext:2c,3}, @code{dpgettext2:2c,3}. 345 346@item 347For Desktop: @code{Name}, @code{GenericName}, @code{Comment}, 348@code{Keywords}. 349@end itemize 350 351To disable the default keyword specifications, the option @samp{-k} or 352@samp{--keyword} or @samp{--keyword=}, without a @var{keywordspec}, can be 353used. 354 355@item --flag=@var{word}:@var{arg}:@var{flag} 356@opindex --flag@r{, @code{xgettext} option} 357Specifies additional flags for strings occurring as part of the @var{arg}th 358argument of the function @var{word}. The possible flags are the possible 359format string indicators, such as @samp{c-format}, and their negations, 360such as @samp{no-c-format}, possibly prefixed with @samp{pass-}. 361@* 362@cindex function attribute, __format__ 363The meaning of @code{--flag=@var{function}:@var{arg}:@var{lang}-format} 364is that in language @var{lang}, the specified @var{function} expects as 365@var{arg}th argument a format string. (For those of you familiar with 366GCC function attributes, @code{--flag=@var{function}:@var{arg}:c-format} is 367roughly equivalent to the declaration 368@samp{__attribute__ ((__format__ (__printf__, @var{arg}, ...)))} attached 369to @var{function} in a C source file.) 370For example, if you use the @samp{error} function from GNU libc, you can 371specify its behaviour through @code{--flag=error:3:c-format}. The effect of 372this specification is that @code{xgettext} will mark as format strings all 373@code{gettext} invocations that occur as @var{arg}th argument of 374@var{function}. 375This is useful when such strings contain no format string directives: 376together with the checks done by @samp{msgfmt -c} it will ensure that 377translators cannot accidentally use format string directives that would 378lead to a crash at runtime. 379@* 380@cindex function attribute, __format_arg__ 381The meaning of @code{--flag=@var{function}:@var{arg}:pass-@var{lang}-format} 382is that in language @var{lang}, if the @var{function} call occurs in a 383position that must yield a format string, then its @var{arg}th argument 384must yield a format string of the same type as well. (If you know GCC 385function attributes, the @code{--flag=@var{function}:@var{arg}:pass-c-format} 386option is roughly equivalent to the declaration 387@samp{__attribute__ ((__format_arg__ (@var{arg})))} attached to @var{function} 388in a C source file.) 389For example, if you use the @samp{_} shortcut for the @code{gettext} function, 390you should use @code{--flag=_:1:pass-c-format}. The effect of this 391specification is that @code{xgettext} will propagate a format string 392requirement for a @code{_("string")} call to its first argument, the literal 393@code{"string"}, and thus mark it as a format string. 394This is useful when such strings contain no format string directives: 395together with the checks done by @samp{msgfmt -c} it will ensure that 396translators cannot accidentally use format string directives that would 397lead to a crash at runtime. 398@* 399This option has an effect with most languages, namely C, C++, ObjectiveC, 400Shell, Python, Lisp, EmacsLisp, librep, Scheme, Java, C#, awk, YCP, Tcl, Perl, PHP, 401GCC-source, Lua, JavaScript, Vala. 402 403@item -T 404@itemx --trigraphs 405@opindex -T@r{, @code{xgettext} option} 406@opindex --trigraphs@r{, @code{xgettext} option} 407@cindex C trigraphs 408Understand ANSI C trigraphs for input. 409@* 410This option has an effect only with the languages C, C++, ObjectiveC. 411 412@item --qt 413@opindex --qt@r{, @code{xgettext} option} 414@cindex Qt format strings 415Recognize Qt format strings. 416@* 417This option has an effect only with the language C++. 418 419@item --kde 420@opindex --kde@r{, @code{xgettext} option} 421@cindex KDE format strings 422Recognize KDE 4 format strings. 423@* 424This option has an effect only with the language C++. 425 426@item --boost 427@opindex --boost@r{, @code{xgettext} option} 428@cindex Boost format strings 429Recognize Boost format strings. 430@* 431This option has an effect only with the language C++. 432 433@item --debug 434@opindex --debug@r{, @code{xgettext} option} 435@cindex debugging messages marked as format strings 436Use the flags @code{c-format} and @code{possible-c-format} to show who was 437responsible for marking a message as a format string. The latter form is 438used if the @code{xgettext} program decided, the former form is used if 439the programmer prescribed it. 440 441By default only the @code{c-format} form is used. The translator should 442not have to care about these details. 443 444@end table 445 446This implementation of @code{xgettext} is able to process a few awkward 447cases, like strings in preprocessor macros, ANSI concatenation of 448adjacent strings, and escaped end of lines for continued strings. 449 450@subsection Output details 451 452@c --no-escape and --escape omitted on purpose. They are not useful. 453 454@table @samp 455@item --color 456@itemx --color=@var{when} 457@opindex --color@r{, @code{xgettext} option} 458Specify whether or when to use colors and other text attributes. 459See @ref{The --color option} for details. 460 461@item --style=@var{style_file} 462@opindex --style@r{, @code{xgettext} option} 463Specify the CSS style rule file to use for @code{--color}. 464See @ref{The --style option} for details. 465 466@item --force-po 467@opindex --force-po@r{, @code{xgettext} option} 468Always write an output file even if no message is defined. 469 470@item -i 471@itemx --indent 472@opindex -i@r{, @code{xgettext} option} 473@opindex --indent@r{, @code{xgettext} option} 474Write the .po file using indented style. 475 476@item --no-location 477@opindex --no-location@r{, @code{xgettext} option} 478Do not write @samp{#: @var{filename}:@var{line}} lines. Note that using 479this option makes it harder for technically skilled translators to understand 480each message's context. 481 482@item -n 483@itemx --add-location=@var{type} 484@opindex -n@r{, @code{xgettext} option} 485@opindex --add-location@r{, @code{xgettext} option} 486Generate @samp{#: @var{filename}:@var{line}} lines (default). 487 488The optional @var{type} can be either @samp{full}, @samp{file}, or 489@samp{never}. If it is not given or @samp{full}, it generates the 490lines with both file name and line number. If it is @samp{file}, the 491line number part is omitted. If it is @samp{never}, it completely 492suppresses the lines (same as @code{--no-location}). 493 494@item --strict 495@opindex --strict@r{, @code{xgettext} option} 496Write out a strict Uniforum conforming PO file. Note that this 497Uniforum format should be avoided because it doesn't support the 498GNU extensions. 499 500@item --properties-output 501@opindex --properties-output@r{, @code{xgettext} option} 502Write out a Java ResourceBundle in Java @code{.properties} syntax. Note 503that this file format doesn't support plural forms and silently drops 504obsolete messages. 505 506@item --stringtable-output 507@opindex --stringtable-output@r{, @code{xgettext} option} 508Write out a NeXTstep/GNUstep localized resource file in @code{.strings} syntax. 509Note that this file format doesn't support plural forms. 510 511@item --its=@var{file} 512@opindex --its@r{, @code{xgettext} option} 513Use ITS rules defined in @var{file}. 514Note that this is only effective with XML files. 515 516@item --itstool 517@opindex --itstool@r{, @code{xgettext} option} 518Write out comments recognized by itstool (@uref{http://itstool.org}). 519Note that this is only effective with XML files. 520 521@item -w @var{number} 522@itemx --width=@var{number} 523@opindex -w@r{, @code{xgettext} option} 524@opindex --width@r{, @code{xgettext} option} 525Set the output page width. Long strings in the output files will be 526split across multiple lines in order to ensure that each line's width 527(= number of screen columns) is less or equal to the given @var{number}. 528 529@item --no-wrap 530@opindex --no-wrap@r{, @code{xgettext} option} 531Do not break long message lines. Message lines whose width exceeds the 532output page width will not be split into several lines. Only file reference 533lines which are wider than the output page width will be split. 534 535@item -s 536@itemx --sort-output 537@opindex -s@r{, @code{xgettext} option} 538@opindex --sort-output@r{, @code{xgettext} option} 539@cindex sorting output of @code{xgettext} 540Generate sorted output. Note that using this option makes it much harder 541for the translator to understand each message's context. 542 543@item -F 544@itemx --sort-by-file 545@opindex -F@r{, @code{xgettext} option} 546@opindex --sort-by-file@r{, @code{xgettext} option} 547Sort output by file location. 548 549@item --omit-header 550@opindex --omit-header@r{, @code{xgettext} option} 551Don't write header with @samp{msgid ""} entry. 552 553@cindex testing @file{.po} files for equivalence 554This is useful for testing purposes because it eliminates a source 555of variance for generated @code{.gmo} files. With @code{--omit-header}, 556two invocations of @code{xgettext} on the same files with the same 557options at different times are guaranteed to produce the same results. 558 559Note that using this option will lead to an error if the resulting file 560would not entirely be in ASCII. 561 562@item --copyright-holder=@var{string} 563@opindex --copyright-holder@r{, @code{xgettext} option} 564Set the copyright holder in the output. @var{string} should be the 565copyright holder of the surrounding package. (Note that the msgstr 566strings, extracted from the package's sources, belong to the copyright 567holder of the package.) Translators are expected to transfer or disclaim 568the copyright for their translations, so that package maintainers can 569distribute them without legal risk. If @var{string} is empty, the output 570files are marked as being in the public domain; in this case, the translators 571are expected to disclaim their copyright, again so that package maintainers 572can distribute them without legal risk. 573 574The default value for @var{string} is the Free Software Foundation, Inc., 575simply because @code{xgettext} was first used in the GNU project. 576 577@item --foreign-user 578@opindex --foreign-user@r{, @code{xgettext} option} 579Omit FSF copyright in output. This option is equivalent to 580@samp{--copyright-holder=''}. It can be useful for packages outside the GNU 581project that want their translations to be in the public domain. 582 583@item --package-name=@var{package} 584@opindex --package-name@r{, @code{xgettext} option} 585Set the package name in the header of the output. 586 587@item --package-version=@var{version} 588@opindex --package-version@r{, @code{xgettext} option} 589Set the package version in the header of the output. This option has an 590effect only if the @samp{--package-name} option is also used. 591 592@item --msgid-bugs-address=@var{email@@address} 593@opindex --msgid-bugs-address@r{, @code{xgettext} option} 594Set the reporting address for msgid bugs. This is the email address or URL 595to which the translators shall report bugs in the untranslated strings: 596 597@itemize - 598@item Strings which are not entire sentences; see the maintainer guidelines 599in @ref{Preparing Strings}. 600@item Strings which use unclear terms or require additional context to be 601understood. 602@item Strings which make invalid assumptions about notation of date, time or 603money. 604@item Pluralisation problems. 605@item Incorrect English spelling. 606@item Incorrect formatting. 607@end itemize 608 609It can be your email address, or a mailing list address where translators 610can write to without being subscribed, or the URL of a web page through 611which the translators can contact you. 612 613The default value is empty, which means that translators will be clueless! 614Don't forget to specify this option. 615 616@item -m[@var{string}] 617@itemx --msgstr-prefix[=@var{string}] 618@opindex -m@r{, @code{xgettext} option} 619@opindex --msgstr-prefix@r{, @code{xgettext} option} 620Use @var{string} (or "" if not specified) as prefix for msgstr values. 621 622@item -M[@var{string}] 623@itemx --msgstr-suffix[=@var{string}] 624@opindex -M@r{, @code{xgettext} option} 625@opindex --msgstr-suffix@r{, @code{xgettext} option} 626Use @var{string} (or "" if not specified) as suffix for msgstr values. 627 628@end table 629 630@subsection Informative output 631 632@table @samp 633@item -h 634@itemx --help 635@opindex -h@r{, @code{xgettext} option} 636@opindex --help@r{, @code{xgettext} option} 637Display this help and exit. 638 639@item -V 640@itemx --version 641@opindex -V@r{, @code{xgettext} option} 642@opindex --version@r{, @code{xgettext} option} 643Output version information and exit. 644 645@item -v 646@itemx --verbose 647@opindex -v@r{, @code{xgettext} option} 648@opindex --verbose@r{, @code{xgettext} option} 649Increase verbosity level. 650 651@end table 652