ddtc - ddts client tool to help translators and reviewers.
ddtc [OPTIONS] COMMAND [ARGUMENTS]
This script helps both translators and reviewers with parsing mails
from the ddts, splitting them into individual package files, sending
reviews and patching buggy translations.
Before sending back the translation or the review to the server, the
script performs a few tests on it and does not sent it if one of the
- number of paragraphs is different in the description and its
- line length is more than 80 characters,
- <tab> character is found,
- line starts with a dot (.) followed by other characters.
It can also be run in interactive mode if no command is provided. In
this case, menus are displayed to prompt the user for commands.
Here is the basic process:
- Receiving mail from the ddts
Pass the whole mail (i.e. with header and Mime parts) you received
from the ddts to the standard input of this script, providing the
If it finds descriptions to translate, it creates a package.todo
file for each of them in your Base_dir/tr directory, diffing it
with the preceding you have already translated if it exists.
If it finds descriptions to review, it creates a package.todo file
for each of them in your Base_dir/rev directory. If a preceding
review exists, it diffs both and write the diff or set the
description as reviewed if there is no difference.
If it finds a bug report, it creates a package.bug file in your
Base_dir/bug directory, it merges all bug reports to ease
corrections. It also tries to detect collisions (see below).
- Working with the files
Rename the package.todo file in your Base/tr directory into
Edit it with your favorite text editor.
Rename the package.todo file in your Base_dir/rev directory
into package.rev. Do not edit the package file (with no
extension), it is used internally by ddtc.
Edit it with your favorite text editor. You can add comments
that will be sent to the translator by adding lines beginning
with ‘>> ’ (your $Comment variable contents followed by a
mandatory space character).
If a translation has already been reviewed and has been
modified the script show you the differences between both
versions. Lines beginning with ‘>>--’ correspond to your last
version you reviewed, replace this by ‘+>--’ if you think the
translator is still wrong. Lines beginning with ‘>>++’ are the
new translator’s version, replace this by ‘+>++’ if you agree
with the translator. Of course, if you still disagree with the
translator, you can add comments as indicated above.
- Fixing bugs
Rename the package.bug file in your Base_dir/bug directory into
Edit it with your favorite text editor. It contains all changes
and comments of the reviewers.
Lines beginning with ‘>>’ are comments and doesn’t have to be
removed. Lines beginning with ‘>>X+’ are suggested corrections,
replace this by ‘+>X+’ if you want to validate it. Lines
beginning with ‘>>--’ are your last translation, replace this
by ‘+>--’ if you don’t want to accept suggested corrections.
Run the script providing the fix command. It creates a new
package.tr file in your Base_dir/tr directory containing the
unchanged lines and the lines you have selected.
To prevent collisions (reviewers sending review based on a
different version than yours), don’t send fixed descriptions
too often (once a day should be fine), retrieve your mails and
parse them just before fixing, send the fixed description as
soon as possible afterward.
- Sending files back to the ddts
Run the script providing the mail command.
It sends descriptions from package.tr and package.rev files back to
the ddts renaming them into package.sent and closing bugs if
- Sending commands to the server
Run the script providing the commands you want to be sent to the
server. It checks the commands and send them to the server.
section section name
sget package name
get package name
get number of packages
review package name
review number of packages
getbug list of bug numbers
btsclose list of bug numbers
notification list of languages
In each set: sget/get/review/getbug/btsclose/notification,
noneveraguide/neveraguide and noguide/guide, only the first found
command is used. The script automatically adds language, encoding
and mail address (Mail_in) if requested, noguide is default.
Due to server limitation, to avoid risk of deny of service attack,
you cannot receive for more than 9 new documents at the same time.
The script does not check for this, but the server will.
For sget, get, review, status and listtranslatedpackages you have
either to define the $Language variable in you .ddtcrc
configuration file, or to provide a language extension via the
--lang or -l option.
- Cleaning directories
Run the script providing the clean command.
It removes unnecessary files in ddtc directories but temporary one
as this directory should be a system wide temporary directory
cleaned via system scheduled threads, but for debugging reason.
- Getting statistics about my work
Run the script providing the stats command.
It prints figures based on file counts, it may not be accurate if
directory cleaning has not been made before.
-v verbose, start at level $Debug + 1, add more for more verbosity
set verbosity level to n (see below)
cc mails to one-self:
send mails also to oneself
don’t send mails to oneself
language extension to use when asking for new documents to
translate or to review
send review in special format. Ask your language coordinator before
using this option.
send review in standard format.
print version and exit
print usage and exit
only warnings and errors
package names, reviewer/translator names and bugs numbers
for internal use
3 debug normal
names of subroutines
4 debug verbose
names and short arguments of subroutines
5 debug very verbose
names, arguments and return values of subroutines
9 debug don’t send mails
same as 5 but send mails to oneself instead of ddts
level 5 and 9 are really verbose, so you should direct the output to a
Nicolas Bertolissio <firstname.lastname@example.org>