# phpman > man > xgettext(1)

> **TLDR:** Extract gettext strings from code files.
>
- Scan file and output strings to `messages.po`:
  `xgettext {{path/to/input_file}}`
- Use a different output filename:
  `xgettext {{-o|--output}} {{path/to/output_file}} {{path/to/input_file}}`
- Append new strings to an existing file:
  `xgettext {{-j|--join-existing}} {{-o|--output}} {{path/to/output_file}} {{path/to/input_file}}`
- Don't add a header containing metadata to the output file:
  `xgettext --omit-header {{path/to/input_file}}`
- Display help:
  `xgettext {{-h|--help}}`

*Source: tldr-pages*

---

[XGETTEXT(1)](https://www.chedong.com/phpMan.php/man/XGETTEXT/1/markdown)                                 User Commands                                [XGETTEXT(1)](https://www.chedong.com/phpMan.php/man/XGETTEXT/1/markdown)



## 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 op‐
       tional arguments.

### Input file location:
       INPUTFILE ...
              input files

### -f --files-from
              get list of input files from FILE

### -D --directory
              add DIRECTORY to list for input files search

       If input file is -, standard input is read.

### Output file location:
### -d --default-domain
              use NAME.po for output (instead of messages.po)

### -o --output
              write output to specified file

### -p --output-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
              recognise the specified language (C, C++, ObjectiveC, PO, Shell, Python,  Lisp,  Emac‐
              sLisp,  librep, Scheme, Smalltalk, Java, JavaProperties, C#, awk, YCP, Tcl, Perl, PHP,
              Ruby, GCC-source, NXStringTable, RST, RSJ, Glade, Lua, JavaScript, Vala, 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
              entries from FILE.po are not extracted

### -cTAG --add-comments
              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)

       **--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,  Shell,  Python,  Lisp,  Emac‐
              sLisp,  librep,  Scheme,  Java, C#, awk, Tcl, Perl, PHP, GCC-source, Glade, Lua, Java‐
              Script, Vala)

### -kWORD --keyword
              look for WORD as an additional keyword

### -k --keyword
              do not to use default keywords (only languages  C,  C++,  ObjectiveC,  Shell,  Python,
              Lisp,  EmacsLisp,  librep,  Scheme,  Java, C#, awk, Tcl, Perl, PHP, GCC-source, Glade,
              Lua, JavaScript, Vala, Desktop)

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

       (only languages C, C++, ObjectiveC, Shell,
              Python, Lisp,  EmacsLisp,  librep,  Scheme,  Java,  C#,  awk,  YCP,  Tcl,  Perl,  PHP,
              GCC-source, Lua, JavaScript, Vala)

### -T --trigraphs
              understand ANSI C trigraphs for input (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
              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

### -F --sort-by-file
              sort output by file location

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

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

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

### -M[STRING] --msgstr-suffix
              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.

## 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-2020  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 **xget**‐‐
       **text** programs are properly installed at your site, the command

              **info** **xgettext**

       should give you access to the complete manual.



GNU gettext-tools 0.21                       March 2022                                  [XGETTEXT(1)](https://www.chedong.com/phpMan.php/man/XGETTEXT/1/markdown)
