XGETTEXT(1)

NAME
xgettext - extract gettext strings from source

SYNOPSIS
xgettext [OPTION] [INPUTFILE]...

DESCRIPTION

Extract translatable strings from given input files.

Mandatory arguments to long options are mandatory for short options too. Similarly for optional arguments.

  Input file location:

INPUTFILE ...
    input files

-f, --files-from=FILE
    get list of input files from FILE

-D, --directory=DIRECTORY
    add DIRECTORY to list for input files search

If input file is -, standard input is read.

  Output file location:

-d, --default-domain=NAME
    use NAME.po for output (instead of messages.po)

-o, --output=FILE
    write output to specified file

-p, --output-dir=DIR
    output files will be placed in directory DIR

If output file is -, output is written to standard output.

  Choice of input file language:

-L, --language=NAME
    recognise the specified language (C, C++, ObjectiveC, PO, Python, Java, JavaProperties, C#, JavaScript, TypeScript, TSX, Scheme, Guile, Lisp, EmacsLisp, librep, Rust, Go, Ruby, Shell, awk, Lua, Modula-2, D, OCaml, Smalltalk, Vala, Tcl, Perl, PHP, GCC-source, YCP, NXStringTable, RST, RSJ, Glade, GSettings, Desktop)

-C, --c++
    shorthand for --language=C++

By default the language is guessed depending on the input file name extension.

  Input file interpretation:

--from-code=NAME
    encoding of input files (except for Python, Tcl, Glade)

By default the input files are assumed to be in ASCII.

  Operation mode:

-j, --join-existing
    join messages with existing file

-x, --exclude-file=FILE.po
    entries from FILE.po are not extracted

-cTAG, --add-comments=TAG
    place comment blocks starting with TAG and preceding keyword lines in output file

-c, --add-comments
    place all comment blocks preceding keyword lines in output file

--check=NAME
    perform syntax check on messages (ellipsis-unicode, space-ellipsis,

    quote-unicode, bullet-unicode)

--no-check=NAME
    don't perform syntax check on messages (url, email)

--sentence-end=TYPE
    type describing the end of sentence (single-space, which is the default,

    or double-space)

  Language specific options:

-a, --extract-all
    extract all strings (only languages C, C++, ObjectiveC, Python, Java, C#, JavaScript, TypeScript, TSX, Scheme, Guile, Lisp, EmacsLisp, librep, Rust, Go, Shell, awk, Lua, Modula-2, D, OCaml, Vala, Tcl, Perl, PHP, GCC-source, Glade, GSettings)

-kWORD, --keyword=WORD
    look for WORD as an additional keyword

-k, --keyword
    do not to use default keywords (only languages C, C++, ObjectiveC, Python, Java, C#, JavaScript, TypeScript, TSX, Scheme, Guile, Lisp, EmacsLisp, librep, Rust, Go, Shell, awk, Lua, Modula-2, D, OCaml, Vala, Tcl, Perl, PHP, GCC-source, Glade, GSettings, Desktop)

--flag=WORD:ARG:FLAG
    additional flag for strings inside the argument number ARG of keyword WORD

(only languages C, C++, ObjectiveC, Python,
    Java, C#, JavaScript, TypeScript, TSX, Scheme, Guile, Lisp, EmacsLisp, librep, Rust, Go, Shell, awk, Lua, Modula-2, D, OCaml, Vala, Tcl, Perl, PHP, GCC-source, YCP)

--tag=WORD:FORMAT
    defines the behaviour of tagged template literals with tag WORD

    (only language JavaScript)

-T, --trigraphs
    understand ANSI C trigraphs for input (deprecated; only languages C, C++, ObjectiveC)

--its=FILE
    apply ITS rules from FILE (only XML based languages)

--qt
    recognize Qt format strings (only language C++)

--kde
    recognize KDE 4 format strings (only language C++)

--boost
    recognize Boost format strings (only language C++)

--debug
    more detailed formatstring recognition result

  Output details:

--color
    use colors and other text attributes always

--color=WHEN
    use colors and other text attributes if WHEN. WHEN may be 'always', 'never', 'auto', or 'html'.

--style=STYLEFILE
    specify CSS style rule file for --color

-e, --no-escape
    do not use C escapes in output (default)

-E, --escape
    use C escapes in output, no extended chars

--force-po
    write PO file even if empty

-i, --indent
    write the .po file using indented style

--no-location
    do not write '#: filename:line' lines

-n, --add-location
    generate '#: filename:line' lines (default)

--strict
    write out strict Uniforum conforming .po file

--properties-output
    write out a Java .properties file

--stringtable-output
    write out a NeXTstep/GNUstep .strings file

--itstool
    write out itstool comments

-w, --width=NUMBER
    set output page width

--no-wrap
    do not break long message lines, longer than the output page width, into several lines

-s, --sort-output
    generate sorted output (deprecated)

-F, --sort-by-file
    sort output by file location

--omit-header
    don't write header with 'msgid ""' entry

--no-git
    don't use the git program to produce a reproducible 'POT-Creation-Date' field in the output.

--copyright-holder=STRING
    set copyright holder in output

--foreign-user
    omit FSF copyright in output for foreign user

--package-name=PACKAGE
    set package name in output

--package-version=VERSION
    set package version in output

--msgid-bugs-address=EMAIL@ADDRESS
    set report address for msgid bugs

--generated=FILE
    Declares that the given FILE is generated and therefore should not have an influence on the 'POT-Creation-Date' field in the output.

--reference=FILE
    Declares that the output depends on the contents of the given FILE. This has an influence on the 'POT-Creation-Date' field in the output.

-m[STRING], --msgstr-prefix[=STRING]
    use STRING or "" as prefix for msgstr values

-M[STRING], --msgstr-suffix[=STRING]
    use STRING or "" as suffix for msgstr values

  Informative output:

-h, --help
    display this help and exit

-V, --version
    output version information and exit

-v, --verbose
    increase verbosity level

AUTHOR
Written by Ulrich Drepper and Bruno Haible.

REPORTING BUGS
Report bugs in the bug tracker at <https://savannah.gnu.org/projects/gettext> or by email to <bug-gettext@gnu.org>.

COPYRIGHT
Copyright © 1995-2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

SEE ALSO
The full documentation for xgettext is maintained as a Texinfo manual. If the info and xgettext programs are properly installed at your site, the command

    info xgettext

should give you access to the complete manual.