Initially I only want to translate the --help output and man page.
Common error messages would be next on the list. I want to avoid
run-time overhead and bloat.

Translations of the --help output should not be longer than 22 lines long.
Feel free to leave out the less useful options to save space. (not even
the English help text has all the options)

I think these are the most important options:

*** selection ***
-C  by command name list
-G  by real group ID list (supports names)
-U  by real user ID list (supports names)
-u  by effective user ID list (supports names)
-e  all processes
-p  by process ID list

*** output ***
--no-heading  No header line.
-o,o          user-defined output
-j,j          job control format
-l,l          long format
-f            full format
s             signal format
u             user-oriented format
--forest      ASCII art forest (process hierarchy)
c             show true command name

List of man page translators:

de  Wed Jan 10 19:09:15 2001 by Martin Schulze <joey@infodrom.ffis.de>
es  19 Jan 1999 by Diego Sevilla Ruiz (dsevilla@ditec.um.es)
fr  09/06/1997 par Christophe Blaess (ccb@club-internet.fr)
hu  Horv#th Andr#s (the '#' is 'a' w/ '/') <horvatha@rs1.szif.hu>
it  Traduzione in italiano di Giovanni Bortolozzo <borto@dei.unipd.it>
it  Revisione parziale di Daniele Giacomini <daniele@evo.it> 30/03/1999
ja  Tue Nov 14 2000 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
nl  <manpages-nl@nl.linux.org>
