[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Please review po-debconf 1.0 documentation



Hi people,

Few weeks after rewording po-debconf documentation, I translated them
into French.  But I could not understand some of the sentences I had
written, so it is pretty clear that it needs to be drastically improved :)
This rewrite was needed in order to document current best practices,
previous documentation was pretty old.  Comments are very welcome.
Thanks.

Denis
=head1 NAME

debconf-gettextize - extract translations of debconf templates into PO files

=head1 SYNOPSIS

B<debconf-gettextize>
[B<-v>] [B<-h>]
[B<--podir=I<DIR>>]
[B<--choices>]
[B<--merge>]
I<master> [I<master> ...]

=head1 DESCRIPTION

The F</var/lib/dpkg/info/*.templates> files read by debconf contain English
text and translations in the same file.  But in source packages, translations
are managed in seperate files to help translators.  In the initial
implementation, a master F<templates> file contained only English text, and
F<templates.I<xx>> files contained both original and translated strings for the
language I<xx>.  The B<debconf-mergetemplate> program was merging master and
translated templates files.

The new implementation with C<po-debconf> is based on C<gettext>.  Maintainers
mark translatable fields by prepending them with an underscore, English strings
are automatically extracted into a POT file, translators work on normal PO
files, and B<po2debconf> generates a merged templates file with the same
structure.

The B<debconf-gettextize> program was initially designed to help migrating to
the new implementation.

=over 2

=item

It reads a list of master files and their associated
translations, and generates F<po/*.po> files for each language containing
translated strings.

=item

Each input file is renamed with a C<.old> suffix, and new master file
overwrites the old one; it is identical to the master file except that
an underscore is prepended to translatable fields.
Developers can then choose which fields translators have to work on and
which ones are skipped because their values are not locale-dependent.

=item

A F<po/POTFILES.in> file is also created, it contains the list of F<templates>
files B<debconf-updatepo> has to process.

=back

Typically the B<debconf-gettextize> program must be run only once when
transforming from the first implementation to the C<po-debconf> format, but
it can also be used afterwards to transform a C<_Choices> field into C<__Choices>
(or vice-versa) without losing translations, when using the C<--merge> flag
(alongside with C<--choices> or not).
The desired template containing the C<_Choices> or C<__Choices> fields to modify
has to be copied into a temporary template file, which is passed as an argument
of B<debconf-gettextize>.  The following steps are then performed:

=over 3

=item 1.  

B<po2debconf> is run on this template file to generate a translated templates file.

=item 2.

This translated templates file is processed as described above and PO files are
generated.

=item 3.

Newly created PO files are merged with existing ones.

=back

When PO files are merged, C<_Choices> fields have to be replaced by C<__Choices>
(or vice-versa) in the original templates file before running B<debconf-updatepo>,
otherwise new translations will be fuzzy.

=head1 OPTIONS

=over 4

=item B<-h>, B<--help>

Display a usage summary program and exit.

=item B<-v>, B<--verbose>

Process in verbose mode.

=item B<--podir=I<DIR>>

Set directory for PO files.  Default is to search PO files in the F<po>
subdirectory below the location of the first master file.

=item B<--choices>

By default, B<debconf-gettextize> replaces C<Choices> fields by
C<_Choices>.  With this flag, C<__Choices> fields are written
instead.

=item B<--merge>

Merge strings from the first master file with existing PO files.
Templates files and F<po/POTFILES.in> are not modified.

=back

=head1 CAVEATS

The C<Default> field is special when template type is C<Select> or
C<Multiselect>, because value has to be chosen amongst B<English>
list of choices, even for localized values.  Normally this field
must not be changed, but in rare circumstances localized values
are meaningful (e.g. to choose the default language of an application).
In order to let translators know that this localized C<Default> field is
special, you must by convention call it C<_DefaultChoice> instead of
C<_Default>.

=head1 SEE ALSO

L<debconf-updatepo(1)>,
L<po2debconf(1)>,
L<debconf-devel(7)>,
L<po-debconf(7)>.

=head1 AUTHORS

  Denis Barbier <barbier@linuxfr.org>
  Martin Quinson <martin.quinson@ens-lyon.fr>

=head1 NAME

debconf-updatepo - update PO files about debconf templates

=head1 SYNOPSIS

B<debconf-updatepo>
[B<-v>] [B<-h>]
[B<--podir=I<DIR>>]
[B<--skip-pot>]
[B<--skip-merge>]

=head1 DESCRIPTION

This program reads F<po/POTFILES.in> to find which master files
are looked at, then extract new gettext strings into F<po/templates.pot>
and update all F<po/*.po> files.  This script can be called either
in the top-level directory, or in F<debian> or F<debian/po>
subdirectories.  It is run by developer and/or translator to update
PO files when English text is modified in F<templates> files.

=head1 OPTIONS

=over 4

=item B<-h>, B<--help>

Display a usage summary and exit.

=item B<-v>, B<--verbose>

Process in verbose mode.

=item B<--podir=I<DIR>>

Set directory for PO files.  By default PO files are searched
in F<debian/po>, F<po> and F<../po> directories in that order.

=item B<--skip-pot>

Do not generate a new F<po/templates.pot> file.

=item B<--skip-merge>

Do not merge existing PO files with F<po/templates.pot>.

=back

=head1 SEE ALSO

L<debconf-gettextize(1)>,
L<po2debconf(1)>,
L<podebconf-report-po(1)>,
L<po-debconf(7)>.

=head1 AUTHOR

  Denis Barbier <barbier@linuxfr.org>

=head1 NAME

po2debconf - merge master templates file and PO files

=head1 SYNOPSIS

B<po2debconf>
[B<-v>] [B<-h>]
[B<--podir=I<DIR>>]
[B<-o I<FILE>>]
[B<-e I<STRING>>]
I<master>

=head1 DESCRIPTION

This program reads all PO files and a single F<templates> file, and
produces a Debconf templates file containing all translations, similar
to the one produced by L<debconf-mergetemplate(1)> (from the
C<debconf-utils> package).  PO files are by default searched in the
F<po> subdirectory below the location of the master file.

To help the language code transition for Norwegian BokmE<aring>l, the
B<no> and B<nb> language codes are handled specially.  If F<no.po> exists,
it should be renamed to F<nb.po>.  Using F<nb.po> will make both C<-no>
and C<-nb> translations available in the templates file.

Lines beginning with a number sign (C<#>) are comments in templates files,
they are useful to give hints to translators, and are discarded by B<po2debconf>.
Special comments have been introduced in C<po-debconf> 1.0, they are in the
form C<#flag:I<directive>>.  The C<#flag:partial> is the only directive
interpreted by B<po2debconf>.  Normally when a field is composed of several
paragraphs (like C<__Choices> and C<_Description>), it is translated if all
paragraphs are translated.  When a field succeeds C<#flag:partial>, translated
strings may be mixed with untranslated strings.

=head1 OPTIONS

=over 4

=item B<-h>, B<--help>

Display a usage summary and exit.

=item B<-v>, B<--verbose>

Process in verbose mode.

=item B<--podir=I<DIR>>

Set directory for PO files.  Default is to search PO files in the F<po>
subdirectory below the location of the master file.

=item B<-o>, B<--output=I<FILE>>

Set output filename (default is standard output).

=item B<-e>, B<--encoding=I<STRING>>

Convert encoding.  Argument can take 3 values: C<utf8> (convert to
UTF-8), C<po> (do not change encoding) and C<popular> (convert
encoding of input files depending on their language; the
C<PODEBCONF_ENCODINGS> environment variable must point to a filename
containing the encoding map),

Such a filename looks like:

  #
  #   Sharp is comment sign
  #
  cs       ISO-8859-2
  da       ISO-8859-1
  de       ISO-8859-1
  el       ISO-8859-7

etc.

Default encoding used to be C<popular>, and has been switched to C<utf8>
since po-debconf 0.9.0.

=back

=head1 OUTPUT FORMAT

Since debconf 1.2.0, templates format has changed, encoding is part of
field names, i.e. they are C<foo-I<lang>.I<encoding>>.  When older
debconf encounter such fields, they are silently ignored, which means
that original text is displayed.

If present, a F<po/output> file can override defaults for encoding and
output format.  It contains a single line, first field is output format
(currently valid values are 1 for fields in the form C<foo-I<lang>>,
and 2 for C<foo-I<lang>.I<encoding>>) and second field is encoding, e.g.

   echo '2 utf8' > po/output

let B<po2debconf> convert text to UTF-8.

When encoding is set to C<po> or C<utf8>, output format is always set to
2, so that older debconf do not try to display text with wrong
encodings.

=head1 SEE ALSO

L<debconf-gettextize(1)>,
L<debconf-updatepo(1)>,
L<po-debconf(7)>.

=head1 AUTHOR

  Denis Barbier <barbier@linuxfr.org>

=head1 NAME

po-debconf - introduction

=head1 DESCRIPTION

The goal of C<debconf> was to make package configuration user-friendly.  In
order to achieve this, it is important to ensure that users will get the
question in their own language.  Translators need a framework to easily
work on translations without having to track down package development;
C<po-debconf> was designed to be able to work with standard C<gettext>
tools when translating debconf templates files.

=head1 ADDING I18N SUPPORT TO DEBCONF TEMPLATES FILES

If you are adding debconf support to your package, you have written
a templates file containing English text.  To add proper i18n support
into your package, you need to:

=over 4

=item - Create F<debian/po/POTFILES.in>

This file contains the list of master templates.  It typically contains a single line

  [type: gettext/rfc822deb] templates

Paths are relative to the parent directory.  All files listed here 

=item - Prepend an underscore before translatable fields

Normally C<Description>, C<Choices> and sometimes C<Default> fields can be translated.

=item - Run B<debconf-updatepo>

This will create the F<debian/po/templates.pot> file that translators will translate
into their language.

=item - Add a build dependency on C<po-debconf> in F<debian/control>

=back

=head1 UPDATE TEMPLATES

In order to help translators, PO files in your package should always
be up-to-date, otherwise they may lose their time with unused strings.
For that, simply call the following command without arguments:

  $ debconf-updatepo

You should run this command every time you change templates in English,
but also when you receive new or updated translations, because translators
may have worked on an obsolete PO file.

If you rename, add or remove some templates files, remember also to
edit F<debian/po/POTFILES.in> accordingly, otherwise English strings 
are missing from PO files and will be displayed to users even if PO
files are fully translated.

The B<debconf-updatepo> program is idempotent, it modifies PO files only
if their content has been updated.  Thus the best solution to provide
up-to-date PO files in your source package is to call this command from
the C<clean> target of the F<debian/rules> file.

Please note that you need to run B<debconf-updatepo> even if you use
B<dh_installdebconf>.  The latter calls B<po2debconf> which used to
call B<debconf-updatepo> if outdated files were detected, but this
is no more the case because it was not a good solution for at least
two reasons:

=over 3

=item 1.

B<po2debconf> relied on timestamps to detect outdated files, and may
be abused when using C<pbuilder> or if an outdated translation has
been stored on disk after templates have been modified

=item 2.

B<dh_installdebconf> is called long after C<.diff.gz> file has been
generated

=back

=head1 MERGE TRANSLATIONS AND ORIGINAL

You have to make sure that when your package is compiled, translations
will get into the built package. You can do that manually, or
automatically using the B<dh_installdebconf> script (make sure to have a
versionned build dependency against C<debhelper (E<gt>= 4.1.16)>).

To do that manually, you'll have to merge the templates and the
translations at compile time (and to have a build depend against
C<po-debconf>) like this: 

  $ po2debconf debian/templates > debian/tmp/DEBIAN/templates

B<BE CAREFUL>: the two files called F<templates> are not the same at all.  The
first one contains only the English text, and mark some fields to be translated
while the second contains all languages.  That is to say that you CANNOT keep
only the merged templates, or you won't be able to deal with translations as
people submit them to you.

=head1 NEW MASTER TEMPLATES

The new templates file source format is almost identical to one of
distributed templates files, but translatable fields are prepended with an
underscore.  Example:

  Template: debconf/frontend
  Type: select
  _Choices: Dialog, Readline, Gnome, Editor, Noninteractive
  Default: Dialog
  _Description: What interface should be used for configuring packages?
   Packages that use debconf for configuration share a common look and
   feel.  You can select the type of user interface they use.
   .
   The dialog frontend is a full-screen, character based interface,
   while the readline frontend uses a more traditional plain text
   interface, and the gnome frontend is a modern X interface.  The
   editor frontend lets you configure things using your favorite text
   editor. The noninteractive frontend never asks you any questions.

=head2 SPLITTING CHOICES LIST

Since C<po-debconf> 0.6.0, localized fields may contain two leading
underscores.  In this case, field value is supposed to be a comma
separated list of values, which are put in separate msgids.  Thus
if the previous example did contain

  __Choices: Dialog, Readline, Gnome, Editor, Noninteractive

there would be 5 different msgids.  Note that spaces after commas are
not significant.

Basically when a choices list never changes, C<_Choices> is fine,
but otherwise C<__Choices> will ease translator's life.

Unfortunately if you decide to switch between these two forms, all translations
become fuzzy.  Here is an explanation to make this change without translation
loss (it requires C<po-debconf> E<gt>= 1.0).  Suppose that we want to switch the
previous example to C<__Choices>.  You copy the F<templates> file into a
temporary file.

  $ cp debian/templates debian/foo

Edit F<debian/foo> and keep only C<Template>, C<Type> and C<_Choices>
fields, which are in this example

  Template: debconf/frontend
  Type: select
  _Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive

Run B<debconf-gettextize> with C<--merge> and C<--choices> flags to build PO files
as if C<__Choices> was written, and merge these PO files to existing ones:

  $ debconf-gettextize --merge --choices debian/foo

Eventually you have to remove F<foo> and manually edit F<debian/templates> to
replace C<_Choices> by C<__Choices> before B<debconf-updatepo> is run.

=head2 PUTTING COMMENTS FOR TRANSLATORS

C<Dpkg> maintainers decided that by convention lines beginning with
a number sign (C<#>) are comments in F<debian/control> files, and C<po-debconf>
follows this rule.  Since C<po-debconf> 0.8.0, such comments are written
into PO files, and can then contain valuable informations for
translators.  Incidentally all previous C<po-debconf> versions ignore
lines which do not contain a colon, thus if your comments does not
contain any colon, there is no need to add a versioned build dependency
against C<po-debconf>.  Here is an example:

  Template: debconf/button-yes
  Type: text
  # Translators, this text will appear on a button, so KEEP IT SHORT
  _Description: Yes

Special comments have been introduced in C<po-debconf> 1.0 to deal with
strings which are composed of several items (as with I<Choices> field) or
paragraphs (like I<Decription>).  With these directives, developers have
a better control over what is exposed to translators.  They are in the
form C<#flag:I<directive>>; directives are detailed below.

=over 3

=item B<translate:>I<spec>, B<translate!:>I<spec>

Mark only some items as translatable; I<spec> is a comma separated list of numbers,
it specifies which strings will be printed into PO files.  Ranges can also be
defined via a minus sign (for instance C<2-6>), and a star (C<*>) means all
strings.  For instance, with

  Template: partman-basicfilesystems/fat_mountpoint
  Type: select
  #flag:translate:3,4
  __Choices: /dos, /windows, Enter manually, Do not mount it
  _Description: Mount point for this partition:

C<Enter manually> and C<Do not mount it> will appear in PO files but not C</dos>
and C</windows>.  When an exclamation mark follows the B<translate> keyword,
I<spec> specifies which strings will be discarded from PO files, all other
strings are printed.  Previous example is similar to

  Template: partman-basicfilesystems/fat_mountpoint
  Type: select
  #flag:translate!:1,2
  __Choices: /dos, /windows, Enter manually, Do not mount it
  _Description: Mount point for this partition:

The same keyword can also be applied to the I<Description> field to make sure that
some strings are not translated.

  Template: partman-crypto/options_missing
  Type: error
  #flag:translate!:3
  _Description: Required encryption options missing
   The encryption options for ${DEVICE} are incomplete. Please return to
   the partition menu and select all required options.
   .
   ${ITEMS}

But this is hazardous because context may be dropped from PO files, please add
comments in this case so that translators are not confused.

=item B<comment:>I<spec>, B<comment!:>I<spec>

The comment just below this directive applies to the strings specified by
I<spec>, which is defined above.  By default, a comment written before a
translatable field is printed along with all strings belonging to this
field.  (Note: with C<po-debconf> E<lt> 1.0, the comment was written
only with the first string)

  Template: arcboot-installer/prom-variables
  Type: note
  # Translators, the 4th string of this description has been dropped from PO
  # files.  It contains shell commands and should not be translated.
  #flag:comment:3
  # "Stop for Maintenance" should be left in English
  #flag:translate!:4
  _Description: Setting PROM variables for Arcboot
   If this is the first Linux installation on this machine, or if the
   hard drives have been repartitioned, some variables need to be set
   in the PROM before the system is able to boot normally.
   .
   At the end of this installation stage, the system will reboot.  After this,
   enter the command monitor from the "Stop for Maintenance" option,
   and enter the following commands:
   .
      setenv OSLoader arcboot
      setenv OSLoadFilename Linux
   .
   You will only need to do this once.  Afterwards, enter the "boot" command
   or reboot the system to proceed to the next stage of the installation.

The example above has a comment without C<#flag:comment> directive, an implicit
C<#flag:comment:*> is added.  This comment appears with all strings, but the
one about I<Stop for Maintenance> is printed only before the relevant string.

=item B<partial>

This keyword tells B<po2debconf> to keep translated strings even if all strings
have not been translated.  Please use with caution, this keyword has been
introduced for very specific purposes.

=back

=head2 GIVING NOTICES TO TRANSLATORS BEFORE UPLOADING

Usually translators notice on the status web pages (see below) that translations
are outdated, and send patches which will be included in future uploads.  But
developers are encouraged to send outdated files to translators before an upload,
for instance one week in advance.  A dedicated tool, B<podebconf-report-po>,
has been written for this purpose.  Do not hesitate to abuse it!

=head1 CAVEATS

=over 2

=item *

C<Debconf> 1.2.0 recognizes fields in the form I<Name>-I<lang>.I<encoding>, e.g.
C<Description-de.ISO-8859-1> or C<Choices-ru.KOI8-R>.  By default
B<po2debconf> writes templates files in that new format.  Older C<debconf>
will ignore these fields, and English text is displayed.  See
L<po2debconf(1)> to know how to change encoding and output format.

=item *

A given English string may have only one unique translation in a given
language.  It is impossible to give two different translations, depending
on the context.  To solve this issue, you have to add special markups to
the different occurrences of a given string to make them different.
(These markers will only be visible to translators, and they will be
removed from the string before being displayed to user)

Such markers must be added to the end of the strings to translate, they
must start with C<[ > (a left bracket followed by a space) and end with
C<]> (right bracket), and may contain any character but brackets or new
lines. For example C<[ blahblah]> is a valid marker while
C<[ bla[bla]bla]> isn't. For Perl regexp addicts, the markers are
recognized (and removed) using this rule:

  $msg =~ s/\[\s[^\[\]]*\]$//s;

=item *

Spacing is not handled exactly the same way by C<po-debconf> and
C<debconf-utils>; with the latter, paragraphs are reformatted when updating
and merging translations, so C<debconf-utils> is very smart and spaces are
not considered as being part of strings when determining fuzzy entries.
(ie, the ones needing translator's attention because the original
changed)

On the other hand C<po-debconf> relies on C<gettext> to detect fuzzy entries,
and it does not treat spaces as special characters.  Thus superfluous
spaces must be removed at end of lines in master templates files, or
they will appear in PO and POT files.

For the same reason, B<debconf-gettextize> can mark fuzzy text because of
mismatch with space characters, and translators have to manually unfuzzy
such strings.  This only happens once when converting templates to
C<po-debconf> format, unless you randomly change spaces in master templates
files, which will be painful for translators.

=item *

Normally the I<Default:> field must not be translated when template type is
B<Select> or B<Multiselect>. Under rare circumstances (e.g. when
selecting the default language for an application) localized values may
be meaningful.

The localized value must not be translated, but chosen from the English
values listed in the I<Choices> field.  The best way to achieve this
goal is to insert a comment in your templates file which will be copied
into PO files.

  Template: geneweb/lang
  Type: select
  __Choices: Danish (da), Dutch (nl), English (en), Esperanto (eo)
  #  You must NOT translate this string, but you can change its value.
  #  The comment between brackets is used to distinguish this msgid
  #  from the one in the Choices list; you do not have to worry about
  #  them, and have to simply choose a msgstr among the English values
  #  listed in the Choices field above, e.g. msgstr "Dutch (nl)"
  _Default: English (en)[ default language]
  _Description: Geneweb default language

The default value also apears in the I<Choices> field, and both have
different translations: the former is an untranslated value chosen
among I<Choices> values, whereas the latter is a normal translation.
As C<gettext> cannot hae two different translations for the same
I<msgid>, both I<msgids> must be different by using bracketed comments
as described in a previous subsection.

Prior to C<po-debconf> 0.8.0, such comments were not available and
maintainers had to replace the I<_Default:> field by I<_DefaultChoice:>
in order to highlight such fields in PO files:

  #. DefaultChoice
  msgid ""
  "English[ default: do not translate bracketed material, put your "
  "own language here but UNTRANSLATED.  If it is not in the list, "
  "put English (without bracketed material)]"
  msgstr ""
  "Swedish"

Plain comments in templates files are less error prone and are
encouraged.

=back

=head1 STATUS WEB PAGES

Translators can grab PO and POT files from
L<http://www.debian.org/intl/l10n/po-debconf/> (or from mirrors).
After translating these files, they should submit their work to the
maintainer as bug report of severity B<minor> with the B<patch> tag.

The above pages are automatically updated when new packages are uploaded.
Only packages shipping F<debian/po/templates.pot> and
F<debian/po/POTFILES.in> files are considered, so you should make sure
your source package do provide them.

=head1 SEE ALSO

L<debconf-gettextize(1)>,
L<debconf-updatepo(1)>,
L<dh_installdebconf(1)>,
L<podebconf-report-po(1)>.
L<po2debconf(1)>.

=head1 AUTHORS

  Martin Quinson <Martin.Quinson@ens-lyon.fr>
  Denis Barbier <barbier@linuxfr.org>

=head1 NAME

podebconf-display-po - display content of a PO file in a debconf interface

=head1 SYNOPSIS

B<podebconf-display-po>
[B<-h>]
[B<-f> I<FRONTEND>]
I<file.po>

=head1 DESCRIPTION

As with any other localization work, translators should test their
translations by running the program they are working on.  But this
is a very hard job with complicated configuration scripts because
there is no automatic way to have all messages displayed.

The B<podebconf-display-po> program could be called the
I<Poor Man Localization Checker> for debconf.  It parses a PO file,
tries to guess what the original templates file did look like, and
displays messages in a debconf interface.  

Of course being root is not mandatory, and there is no interaction
between B<podebconf-display-po> and system-wide debconf settings.

=head1 OPTIONS

=over 4

=item B<-h>, B<--help>

Display a usage summary and exit.

=item B<-f>, B<--frontend=I<FRONTEND>>

Select an alternate debconf frontend.

=back

=head1 CAVEATS

=over 4

=item

As B<podebconf-display-po> relies on C<debconf> to display questions,
your environment must be setup to display localized questions in the
language of PO file.
If you want to check a translation in another language, you need to
temporarily change your settings, e.g.

  $ LANGUAGE=de podebconf-display-po de.po

If the PO file cannot be converted into your current encoding, English
strings are displayed instead of the localized ones.  You have then
to switch to a UTF-8 environment to prevent encoding mismatch.

=item

Prior to 0.8.3, C<po-debconf> did only insert the field name in PO
files.  But some discussions on mailing-lists showed that text
format does depend on template type, e.g. string and boolean types
are different because the former is an open question and user has
to enter some text input, whereas the latter is basically a Yes/No
question.  Authors have to think about it when writing their templates
files, but translators also have to be aware.

This is achieved when PO files are generated by po-debconf E<gt>= 0.8.3,
template type is inserted in PO files.  With older versions,
B<podebconf-display-po> has a trivial algorithm to determine original
template type, and may sometimes be wrong.

=item

The C<dialog> frontend, when based upon C<whiptail>, traps system
signals and thus B<podebconf-display-po> cannot be interrupted by C<Ctrl-C>
when using this frontend.

=back

=head1 SEE ALSO

L<debconf(1)>

=head1 AUTHOR

  Denis Barbier <barbier@linuxfr.org>

=head1 NAME

podebconf-report-po - send outdated debconf PO files to the last translators

=head1 SYNOPSIS

B<podebconf-report-po> [B<I<options>>]

=head1 DESCRIPTION

This program reads F<debian/po/*.po> to find which files contain fuzzy
or missing translations, launches an editor to allow modifications of
mail body and headers, asks confirmation to send mails, and sends them
to the last translator requesting for updates.
B<podebconf-report-po> can be called either in the top-level directory,
or in F<debian> or F<debian/po> subdirectories.

=head1 OPTIONS

=over 4

=item B<-h>, B<--help>

Print usage information and exit.

=item B<--version>

Print version information and exit.

=item B<-v>, B<--verbose>

Display additional information while running.

=item B<-f>, B<--force>

Send the email(s) without confirmation.

=item B<--podir=I<DIR>>

Specify where are located the PO files.

=item B<--smtp=I<SERVER>>

Specify SMTP server for mailing (default is C<localhost>).

=item B<--template=I<TEMPLATE>>

Specify file to use it as template for the email(s).

=item B<--default>

Do not open the editor and use the template as is.

=item B<--gzip>

Compress PO files in attachment with C<gzip>.

=item B<--package=I<PACKAGE>>

Specify the name of the package (default is the source package name).

=item B<--from=I<FROM>>

Specify the name and the email address of the sender (default is taken
from the B<DEBEMAIL> environment variable, or is set to the package
maintainer if this variable is unset).

=item B<--deadline=I<DEADLINE>>

Specify the deadline for receiving the updated translations (default is
no deadline).

=item B<--languageteam>

Send the email also to the Language Team as carbon copy.

=item B<--submit>

Instead of sending mails to translators, file a bug report against this
package to request for translations.  This is useful e.g. when preparing
non-maintainer uploads to make sure that translations do not get lost.

=item B<--bts=I<NUMBER>>

After a bug report has been filed (either manually or with the B<--submit>
flag) to track down translations, B<podebconf-report-po> can be run
again, but this time with the B<--bts=I<NUMBER>> flag.  Translators are
then requested to respect the B<Reply-To:> header field which is set to
this bug report, so that all translations are gathered into a single
location.

=head1 SEE ALSO

L<debconf-updatepo(1)>

=head1 AUTHOR

  Fabio Tranchitella <kobold@kobold.it>


Reply to: