xgettext - Man Page

extract gettext strings from source

Examples (TL;DR)

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

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.

Info

January 2026 GNU gettext-tools 1.0