No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gettext / gettext-tools / doc / xgettext.texi
bloba9602b2cb9eb6ba7bb9433684e05f82a1c409dfe
1 @pindex xgettext
2 @cindex @code{xgettext} program, usage
3 @example
4 xgettext [@var{option}] [@var{inputfile}] @dots{}
5 @end example
7 The @code{xgettext} program extracts translatable strings from given
8 input files.
10 @subsection Input file location
12 @table @samp
13 @item @var{inputfile} @dots{}
14 Input files.
16 @item -f @var{file}
17 @itemx --files-from=@var{file}
18 @opindex -f@r{, @code{xgettext} option}
19 @opindex --files-from@r{, @code{xgettext} option}
20 Read the names of the input files from @var{file} instead of getting
21 them from the command line.
23 @item -D @var{directory}
24 @itemx --directory=@var{directory}
25 @opindex -D@r{, @code{xgettext} option}
26 @opindex --directory@r{, @code{xgettext} option}
27 Add @var{directory} to the list of directories.  Source files are
28 searched relative to this list of directories.  The resulting @file{.po}
29 file will be written relative to the current directory, though.
31 @end table
33 If @var{inputfile} is @samp{-}, standard input is read.
35 @subsection Output file location
37 @table @samp
38 @item -d @var{name}
39 @itemx --default-domain=@var{name}
40 @opindex -d@r{, @code{xgettext} option}
41 @opindex --default-domain@r{, @code{xgettext} option}
42 Use @file{@var{name}.po} for output (instead of @file{messages.po}).
44 @item -o @var{file}
45 @itemx --output=@var{file}
46 @opindex -o@r{, @code{xgettext} option}
47 @opindex --output@r{, @code{xgettext} option}
48 Write output to specified file (instead of @file{@var{name}.po} or
49 @file{messages.po}).
51 @item -p @var{dir}
52 @itemx --output-dir=@var{dir}
53 @opindex -p@r{, @code{xgettext} option}
54 @opindex --output-dir@r{, @code{xgettext} option}
55 Output files will be placed in directory @var{dir}.
57 @end table
59 @cindex output to stdout, @code{xgettext}
60 If the output @var{file} is @samp{-} or @samp{/dev/stdout}, the output
61 is written to standard output.
63 @subsection Choice of input file language
65 @table @samp
66 @item -L @var{name}
67 @itemx --language=@var{name}
68 @opindex -L@r{, @code{xgettext} option}
69 @opindex --language@r{, @code{xgettext} option}
70 @cindex supported languages, @code{xgettext}
71 Specifies the language of the input files.  The supported languages
72 are @code{C}, @code{C++}, @code{ObjectiveC}, @code{PO}, @code{Python},
73 @code{Lisp}, @code{EmacsLisp}, @code{librep}, @code{Scheme}, @code{Smalltalk},
74 @code{Java}, @code{JavaProperties}, @code{C#}, @code{awk}, @code{YCP},
75 @code{Tcl}, @code{Perl}, @code{PHP}, @code{GCC-source}, @code{NXStringTable},
76 @code{RST}, @code{Glade}.
78 @item -C
79 @itemx --c++
80 @opindex -C@r{, @code{xgettext} option}
81 @opindex --c++@r{, @code{xgettext} option}
82 This is a shorthand for @code{--language=C++}.
84 @end table
86 By default the language is guessed depending on the input file name
87 extension.
89 @subsection Input file interpretation
91 @table @samp
92 @item --from-code=@var{name}
93 @opindex --from-code@r{, @code{xgettext} option}
94 Specifies the encoding of the input files.  This option is needed only
95 if some untranslated message strings or their corresponding comments
96 contain non-ASCII characters.  Note that Python, Tcl, and Glade input
97 files are always assumed to be in UTF-8, regardless of this option.
99 @end table
101 By default the input files are assumed to be in ASCII.
103 @subsection Operation mode
105 @table @samp
106 @item -j
107 @itemx --join-existing
108 @opindex -j@r{, @code{xgettext} option}
109 @opindex --join-existing@r{, @code{xgettext} option}
110 Join messages with existing file.
112 @item -x @var{file}
113 @itemx --exclude-file=@var{file}
114 @opindex -x@r{, @code{xgettext} option}
115 @opindex --exclude-file@r{, @code{xgettext} option}
116 Entries from @var{file} are not extracted.  @var{file} should be a PO or
117 POT file.
119 @item -c [@var{tag}]
120 @itemx --add-comments[=@var{tag}]
121 @opindex -c@r{, @code{xgettext} option}
122 @opindex --add-comments@r{, @code{xgettext} option}
123 Place comment block with @var{tag} (or those preceding keyword lines)
124 in output file.
126 @end table
128 @subsection Language specific options
130 @table @samp
131 @item -a
132 @itemx --extract-all
133 @opindex -a@r{, @code{xgettext} option}
134 @opindex --extract-all@r{, @code{xgettext} option}
135 Extract all strings.
137 This option has an effect with most languages, namely C, C++, ObjectiveC,
138 Shell, Python, Lisp, EmacsLisp, librep, Java, C#, awk, Tcl, Perl, PHP,
139 GCC-source, Glade.
141 @item -k @var{keywordspec}
142 @itemx --keyword[=@var{keywordspec}]
143 @opindex -k@r{, @code{xgettext} option}
144 @opindex --keyword@r{, @code{xgettext} option}
145 Additional keyword to be looked for (without @var{keywordspec} means not to
146 use default keywords).
148 @cindex adding keywords, @code{xgettext}
149 If @var{keywordspec} is a C identifer @var{id}, @code{xgettext} looks
150 for strings in the first argument of each call to the function or macro
151 @var{id}.  If @var{keywordspec} is of the form
152 @samp{@var{id}:@var{argnum}}, @code{xgettext} looks for strings in the
153 @var{argnum}th argument of the call.  If @var{keywordspec} is of the form
154 @samp{@var{id}:@var{argnum1},@var{argnum2}}, @code{xgettext} looks for
155 strings in the @var{argnum1}st argument and in the @var{argnum2}nd argument
156 of the call, and treats them as singular/plural variants for a message
157 with plural handling.
159 The default keyword specifications, which are always looked for if not
160 explicitly disabled, are @code{gettext}, @code{dgettext:2},
161 @code{dcgettext:2}, @code{ngettext:1,2}, @code{dngettext:2,3},
162 @code{dcngettext:2,3}, and @code{gettext_noop}.
164 This option has an effect with most languages, namely C, C++, ObjectiveC,
165 Shell, Python, Lisp, EmacsLisp, librep, Java, C#, awk, Tcl, Perl, PHP,
166 GCC-source, Glade.
168 @item --flag=@var{word}:@var{arg}:@var{flag}
169 @opindex --flag@r{, @code{xgettext} option}
170 Specifies additional flags for strings occurring as part of the @var{arg}th
171 argument of the function @var{word}.  The possible flags are the possible
172 format string indicators, such as @samp{c-format}, and their negations,
173 such as @samp{no-c-format}, possibly prefixed with @samp{pass-}.
175 @cindex function attribute, __format__
176 The meaning of @code{--flag=@var{function}:@var{arg}:@var{lang}-format}
177 is that in language @var{lang}, the specified @var{function} expects as
178 @var{arg}th argument a format string.  (For those of you familiar with
179 GCC function attributes, @code{--flag=@var{function}:@var{arg}:c-format} is
180 roughly equivalent to the declaration
181 @samp{__attribute__ ((__format__ (__printf__, @var{arg}, ...)))} attached
182 to @var{function} in a C source file.)
183 For example, if you use the @samp{error} function from GNU libc, you can
184 specify its behaviour through @code{--flag=error:3:c-format}.  The effect of
185 this specification is that @code{xgettext} will mark as format strings all
186 @code{gettext} invocations that occur as @var{arg}th argument of
187 @var{function}.
188 This is useful when such strings contain no format string directives:
189 together with the checks done by @samp{msgfmt -c} it will ensure that
190 translators cannot accidentally use format string directives that would
191 lead to a crash at runtime.
193 @cindex function attribute, __format_arg__
194 The meaning of @code{--flag=@var{function}:@var{arg}:pass-@var{lang}-format}
195 is that in language @var{lang}, if the @var{function} call occurs in a
196 position that must yield a format string, then its @var{arg}th argument
197 must yield a format string of the same type as well.  (If you know GCC
198 function attributes, the @code{--flag=@var{function}:@var{arg}:pass-c-format}
199 option is roughly equivalent to the declaration
200 @samp{__attribute__ ((__format_arg__ (@var{arg})))} attached to @var{function}
201 in a C source file.)
202 For example, if you use the @samp{_} shortcut for the @code{gettext} function,
203 you should use @code{--flag=_:1:pass-c-format}.  The effect of this
204 specification is that @code{xgettext} will propagate a format string
205 requirement for a @code{_("string")} call to its first argument, the literal
206 @code{"string"}, and thus mark it as a format string.
207 This is useful when such strings contain no format string directives:
208 together with the checks done by @samp{msgfmt -c} it will ensure that
209 translators cannot accidentally use format string directives that would
210 lead to a crash at runtime.
212 This option has an effect with most languages, namely C, C++, ObjectiveC,
213 Shell, Python, Lisp, EmacsLisp, librep, Scheme, Java, C#, awk, YCP, Tcl, Perl, PHP,
214 GCC-source.
216 @item -T
217 @itemx --trigraphs
218 @opindex -T@r{, @code{xgettext} option}
219 @opindex --trigraphs@r{, @code{xgettext} option}
220 @cindex C trigraphs
221 Understand ANSI C trigraphs for input.
223 This option has an effect only with the languages C, C++, ObjectiveC.
225 @item --qt
226 @opindex --qt@r{, @code{xgettext} option}
227 @cindex Qt format strings
228 Recognize Qt format strings.
230 This option has an effect only with the language C++.
232 @item --debug
233 @opindex --debug@r{, @code{xgettext} option}
234 @cindex debugging messages marked as format strings
235 Use the flags @code{c-format} and @code{possible-c-format} to show who was
236 responsible for marking a message as a format string.  The latter form is
237 used if the @code{xgettext} program decided, the format form is used if
238 the programmer prescribed it.
240 By default only the @code{c-format} form is used.  The translator should
241 not have to care about these details.
243 @end table
245 This implementation of @code{xgettext} is able to process a few awkward
246 cases, like strings in preprocessor macros, ANSI concatenation of
247 adjacent strings, and escaped end of lines for continued strings.
249 @subsection Output details
251 @c --no-escape and --escape omitted on purpose.  They are not useful.
253 @table @samp
254 @item --force-po
255 @opindex --force-po@r{, @code{xgettext} option}
256 Always write an output file even if no message is defined.
258 @item -i
259 @itemx --indent
260 @opindex -i@r{, @code{xgettext} option}
261 @opindex --indent@r{, @code{xgettext} option}
262 Write the .po file using indented style.
264 @item --no-location
265 @opindex --no-location@r{, @code{xgettext} option}
266 Do not write @samp{#: @var{filename}:@var{line}} lines.
268 @item -n
269 @itemx --add-location
270 @opindex -n@r{, @code{xgettext} option}
271 @opindex --add-location@r{, @code{xgettext} option}
272 Generate @samp{#: @var{filename}:@var{line}} lines (default).
274 @item --strict
275 @opindex --strict@r{, @code{xgettext} option}
276 Write out a strict Uniforum conforming PO file.  Note that this
277 Uniforum format should be avoided because it doesn't support the
278 GNU extensions.
280 @item --properties-output
281 @opindex --properties-output@r{, @code{xgettext} option}
282 Write out a Java ResourceBundle in Java @code{.properties} syntax.  Note
283 that this file format doesn't support plural forms and silently drops
284 obsolete messages.
286 @item --stringtable-output
287 @opindex --stringtable-output@r{, @code{xgettext} option}
288 Write out a NeXTstep/GNUstep localized resource file in @code{.strings} syntax.
289 Note that this file format doesn't support plural forms.
291 @item -w @var{number}
292 @itemx --width=@var{number}
293 @opindex -w@r{, @code{xgettext} option}
294 @opindex --width@r{, @code{xgettext} option}
295 Set the output page width.  Long strings in the output files will be
296 split across multiple lines in order to ensure that each line's width
297 (= number of screen columns) is less or equal to the given @var{number}.
299 @item --no-wrap
300 @opindex --no-wrap@r{, @code{xgettext} option}
301 Do not break long message lines.  Message lines whose width exceeds the
302 output page width will not be split into several lines.  Only file reference
303 lines which are wider than the output page width will be split.
305 @item -s
306 @itemx --sort-output
307 @opindex -s@r{, @code{xgettext} option}
308 @opindex --sort-output@r{, @code{xgettext} option}
309 @cindex sorting output of @code{xgettext}
310 Generate sorted output.  Note that using this option makes it much harder
311 for the translator to understand each message's context.
313 @item -F
314 @itemx --sort-by-file
315 @opindex -F@r{, @code{xgettext} option}
316 @opindex --sort-by-file@r{, @code{xgettext} option}
317 Sort output by file location.
319 @item --omit-header
320 @opindex --omit-header@r{, @code{xgettext} option}
321 Don't write header with @samp{msgid ""} entry.
323 @cindex testing @file{.po} files for equivalence
324 This is useful for testing purposes because it eliminates a source
325 of variance for generated @code{.gmo} files.  With @code{--omit-header},
326 two invocations of @code{xgettext} on the same files with the same
327 options at different times are guaranteed to produce the same results.
329 @item --copyright-holder=@var{string}
330 @opindex --copyright-holder@r{, @code{xgettext} option}
331 Set the copyright holder in the output.  @var{string} should be the
332 copyright holder of the surrounding package.  (Note that the msgstr
333 strings, extracted from the package's sources, belong to the copyright
334 holder of the package.)  Translators are expected to transfer or disclaim
335 the copyright for their translations, so that package maintainers can
336 distribute them without legal risk.  If @var{string} is empty, the output
337 files are marked as being in the public domain; in this case, the translators
338 are expected to disclaim their copyright, again so that package maintainers
339 can distribute them without legal risk.
341 The default value for @var{string} is the Free Software Foundation, Inc.,
342 simply because @code{xgettext} was first used in the GNU project.
344 @item --foreign-user
345 @opindex --foreign-user@r{, @code{xgettext} option}
346 Omit FSF copyright in output.  This option is equivalent to
347 @samp{--copyright-holder=''}.  It can be useful for packages outside the GNU
348 project that want their translations to be in the public domain.
350 @item --msgid-bugs-address=@var{email@@address}
351 @opindex --msgid-bugs-address@r{, @code{xgettext} option}
352 Set the reporting address for msgid bugs.  This is the email address or URL
353 to which the translators shall report bugs in the untranslated strings:
355 @itemize -
356 @item Strings which are not entire sentences, see the maintainer guidelines
357 in @ref{Preparing Strings}.
358 @item Strings which use unclear terms or require additional context to be
359 understood.
360 @item Strings which make invalid assumptions about notation of date, time or
361 money.
362 @item Pluralisation problems.
363 @item Incorrect English spelling.
364 @item Incorrect formatting.
365 @end itemize
367 It can be your email address, or a mailing list address where translators
368 can write to without being subscribed, or the URL of a web page through
369 which the translators can contact you.
371 The default value is empty, which means that translators will be clueless!
372 Don't forget to specify this option.
374 @item -m [@var{string}]
375 @itemx --msgstr-prefix[=@var{string}]
376 @opindex -m@r{, @code{xgettext} option}
377 @opindex --msgstr-prefix@r{, @code{xgettext} option}
378 Use @var{string} (or "" if not specified) as prefix for msgstr entries.
380 @item -M [@var{string}]
381 @itemx --msgstr-suffix[=@var{string}]
382 @opindex -M@r{, @code{xgettext} option}
383 @opindex --msgstr-suffix@r{, @code{xgettext} option}
384 Use @var{string} (or "" if not specified) as suffix for msgstr entries.
386 @end table
388 @subsection Informative output
390 @table @samp
391 @item -h
392 @itemx --help
393 @opindex -h@r{, @code{xgettext} option}
394 @opindex --help@r{, @code{xgettext} option}
395 Display this help and exit.
397 @item -V
398 @itemx --version
399 @opindex -V@r{, @code{xgettext} option}
400 @opindex --version@r{, @code{xgettext} option}
401 Output version information and exit.
403 @end table