[Blends-commit] [SCM] website branch, master, updated. 532d64878a5100a0256e95d5e0ed378ef80bdef0
Andreas Tille
tille at debian.org
Wed Oct 24 11:28:15 UTC 2012
The following commit has been merged in the master branch:
commit 532d64878a5100a0256e95d5e0ed378ef80bdef0
Author: Andreas Tille <tille at debian.org>
Date: Wed Oct 24 13:27:25 2012 +0200
Inject current production code of webtools for Debian Pure Blends
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..193b759
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+locale
diff --git a/webtools/0dependencies b/webtools/0dependencies
new file mode 100644
index 0000000..a36da54
--- /dev/null
+++ b/webtools/0dependencies
@@ -0,0 +1,6 @@
+The script needs the following python modules installed:
+
+python-genshi
+python-markdown
+python-docutils
+python-debian
diff --git a/webtools/blend-get-names b/webtools/blend-get-names
old mode 100755
new mode 100644
index 89a5647..6c2ce2d
--- a/webtools/blend-get-names
+++ b/webtools/blend-get-names
@@ -11,8 +11,8 @@
CONTROLFILE=debian/control.stub
GetShortName () {
- grep '^Source:' $CONTROLFILE | \
- sed -e 's/^Source:[[:space:]]*//' -e 's/^debian-//'
+ grep '^Source:[[:space:]]*debian-' $CONTROLFILE | \
+ sed 's/^Source:[[:space:]]*debian-//'
}
if [ ! -e "$CONTROLFILE" ] ; then
@@ -28,7 +28,7 @@ fi
case "$1" in
blendname)
- grep '^Source:[[:space:]]*' "$CONTROLFILE" | \
+ grep '^Source:[[:space:]]*debian-' "$CONTROLFILE" | \
sed 's/^Source:[[:space:]]*//'
exit 0
;;
diff --git a/webtools/blendslanguages.py b/webtools/blendslanguages.py
new file mode 100644
index 0000000..0ab674b
--- /dev/null
+++ b/webtools/blendslanguages.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+# Copyright 2010: Andreas Tille <tille at debian.org>
+# License: GPL
+
+# Define languages which are supported in web sentinel pages
+
+from genshi import Markup
+
+# The keys of the following dictionary are used to address the translation files of DDTP
+# The values contain dictionaries in turn with the following meaning:
+# 'short' = shortcut of language as extension of the output files
+# 'htaccess' = language definition in htaccess
+# 'title' = English name of the language used in title attribut of link
+# 'printed' = printed name for links
+language_dict = { 'en' : {'short':'en', 'htaccess':'en' , 'title':'English', 'printed':Markup('English')},
+ 'cs' : {'short':'cs', 'htaccess':'cs' , 'title':'Czech', 'printed':Markup('česky')},
+ 'da' : {'short':'da', 'htaccess':'da' , 'title':'Danish' , 'printed':Markup('dansk')},
+ 'de' : {'short':'de', 'htaccess':'de' , 'title':'German', 'printed':Markup('Deutsch')},
+ 'es' : {'short':'es', 'htaccess':'es' , 'title':'Spanish', 'printed':Markup('español')},
+ 'fi' : {'short':'fi', 'htaccess':'fi' , 'title':'Finnish', 'printed':Markup('suomi')},
+ 'fr' : {'short':'fr', 'htaccess':'fr' , 'title':'French', 'printed':Markup('français')},
+ 'hu' : {'short':'hu', 'htaccess':'hu' , 'title':'Hungarian', 'printed':Markup('magyar')},
+ 'it' : {'short':'it', 'htaccess':'it' , 'title':'Italian', 'printed':Markup('Italiano')},
+ 'ja' : {'short':'ja', 'htaccess':'ja' , 'title':'Japanese', 'printed':Markup('日本語 (Nihongo)')},
+ 'ko' : {'short':'ko', 'htaccess':'ko' , 'title':'Korean', 'printed':Markup('한국어 (Hangul)')},
+ 'nl' : {'short':'nl', 'htaccess':'nl' , 'title':'Dutch', 'printed':Markup('Nederlands')},
+ 'pl' : {'short':'pl', 'htaccess':'pl' , 'title':'Polish', 'printed':Markup('polski')},
+ 'pt_BR' : {'short':'pt', 'htaccess':'pt-BR', 'title':'Portuguese', 'printed':Markup('Português')},
+ 'ru' : {'short':'ru', 'htaccess':'ru' , 'title':'Russian', 'printed':Markup('Русский (Russkij)')},
+ 'uk' : {'short':'uk', 'htaccess':'uk' , 'title':'Ukrainian', 'printed':Markup("українська (ukrajins'ka)")},
+ 'sk' : {'short':'sk', 'htaccess':'sk' , 'title':'Slovenian', 'printed':Markup('slovensky')},
+ 'sr' : {'short':'sr', 'htaccess':'sr' , 'title':'Serbian', 'printed':Markup('српски(srpski)')},
+ 'sv' : {'short':'sv', 'htaccess':'sv' , 'title':'Swedish', 'printed':Markup('svenska')},
+ 'zh_CN' : {'short':'zh_cn', 'htaccess':'zh-CN', 'title':'Chinese (China)', 'printed':Markup('中文(简)')},
+ 'zh_TW' : {'short':'zh_tw', 'htaccess':'zh-TW', 'title':'Chinese (Taiwan)', 'printed':Markup('中文(正)')},
+ }
+# global languages
+languages = language_dict.keys()
+languages.sort()
diff --git a/webtools/blendsmarkdown.py b/webtools/blendsmarkdown.py
index 389bb0a..a7de6f1 100644
--- a/webtools/blendsmarkdown.py
+++ b/webtools/blendsmarkdown.py
@@ -12,6 +12,8 @@ from markdown import markdown # Markdown
from docutils.core import publish_parts # alternatively reST
from genshi import Markup
+from blendsunicode import to_unicode
+
detect_list_start_re = re.compile("^\s+[-*+]\s+")
detect_code_start_re = re.compile("^\s")
detect_code_end_re = re.compile("^[^\s]")
@@ -64,12 +66,12 @@ def PrepareMarkdownInput(lines):
return ret
def render_longdesc(lines):
- MarkDownInput = PrepareMarkdownInput(lines)
+ MarkDownInput = to_unicode(PrepareMarkdownInput(lines))
global rendering_lib
if rendering_lib == 'rest':
try:
- LongDesc = publish_parts(unicode(MarkDownInput, 'utf-8'), writer_name='html')['body']
+ LongDesc = publish_parts(MarkDownInput, writer_name='html')['body']
except:
print >>stderr, "Unable to render the following prepared text:\n" + MarkDownInput
LongDesc = "Problems in rendering description using reST"
@@ -94,8 +96,7 @@ def MarkupString(string, pkg, elem, lang='en'):
if string == None:
return None
try:
- # string = Markup(unicode(string, 'utf-8'))
- string = Markup(string)
+ string = Markup(to_unicode(string))
except UnicodeDecodeError, errtxt:
print >> stderr, "----> %s UnicodeDecodeError in %s (lang='%s'): '%s'; ErrTxt: %s" % \
(elem, pkg, lang, 'debug-string', errtxt)
diff --git a/webtools/blendstasktools.py b/webtools/blendstasktools.py
index fffbc00..0b84997 100644
--- a/webtools/blendstasktools.py
+++ b/webtools/blendstasktools.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2008: Andreas Tille <tille at debian.org>
+# Copyright 2008-2012: Andreas Tille <tille at debian.org>
# License: GPL
# Blends metapackages are listing a set of Dependencies
@@ -14,6 +14,7 @@
# from tasks file about home page, license, WNPP etc.
PORT=5441
+UDDPORT=5452
DEFAULTPORT=5432
from sys import stderr, exit
@@ -35,13 +36,18 @@ from genshi import Markup
# from genshi.input import HTML
from blendsmarkdown import SplitDescription, MarkupString, render_longdesc
-from debian_bundle import deb822
+try:
+ from debian import deb822
+except:
+ from debian_bundle import deb822
from blendsunicode import to_unicode
+from blendslanguages import languages
import logging
import logging.handlers
logger = logging.getLogger('blends')
logger.setLevel(logging.INFO)
+# logger.setLevel(logging.DEBUG)
# Seems to have problems on 17.04.2009
# BASEURL = 'http://ftp.debian.org/debian'
@@ -51,11 +57,6 @@ SVNHOST = 'svn://svn.debian.org'
KEYSTOIGNORE = ( 'Architecture', 'Comment', 'Leaf', 'NeedConfig', 'Note', 'Section',
'Needconfig', 'DontAvoid',
'Enhances', 'Test-always-lang', 'Metapackage')
-# DDTP now exports to official debian mirror
-#DDTPURL = "http://ddtp.debian.net/debian/dists/"
-DDTPURL = "http://ftp.de.debian.org/debian/dists/"
-DDTPDIR = "/i18n/Translation-"
-DDTPLISTS = ('etch', 'lenny', 'sid')
CONFDIR = 'webconf'
@@ -196,11 +197,49 @@ for pkgstat in pkgstatus:
if dep not in dep_strength_keys:
dep_strength_keys.append(dep)
+rmpub = open('remove-publications-from-tasks-files.dat','w+')
+
license_in_component = {'main' : 'DFSG free',
'contrib' : 'DFSG free, but needs non-free components',
'non-free' : 'non-free'
}
+try:
+ import psutil
+ has_psutils=True
+except ImportError:
+ has_psutils=False
+
+LOCKFILE='/var/lock/blends.lock'
+def LockBlendsTools():
+ """Locking mechanism to make sure the scripts will not run in parallel
+ which happened because of IO problems on udd.debian.org"""
+ if not has_psutils:
+ logger.warning("Package python-psutil is missing. No locking support available")
+ return
+ if os.path.exists(LOCKFILE):
+ try:
+ lf = open(LOCKFILE, 'r')
+ pid = int(lf.readline())
+ lf.close()
+ if pid in psutil.get_pid_list():
+ logger.error("Another process rebuilding web sentinel pages with PID %i is running. Exit." % pid)
+ exit()
+ else:
+ logger.warning("Process with PID %i is not running any more but lockfile remained. Removing %s ..." % (pid, LOCKFILE))
+ os.unlink(LOCKFILE)
+ except IOError as e:
+ pass
+ pid = os.getpid()
+ lf = open(LOCKFILE, 'w')
+ print >>lf, pid
+ lf.close()
+
+def UnlockBlendsTools():
+ """Unlock previousely locked file"""
+ if os.path.exists(LOCKFILE):
+ os.unlink(LOCKFILE)
+
def GetDependencies2Use(dependencystatus=[], max_order='prospective'):
# Create a list of status of dependencies out of pkgstatus dictionary
use_dependencystatus = []
@@ -225,152 +264,243 @@ def GetDependencies2Use(dependencystatus=[], max_order='prospective'):
###########################################################################################
# Define several prepared statements to query UDD
try:
- conn = psycopg2.connect(host="localhost",port=PORT,user="guest",database="udd")
-except psycopg2.OperationalError:
- logger.debug("PostgreSQL does not seem to run on port %i .. trying default port %i." % (PORT, DEFAULTPORT))
+ conn = psycopg2.connect(host="localhost",port=PORT,user="guest",database="udd")
+except psycopg2.OperationalError, err:
+ try:
+ conn = psycopg2.connect(host="udd.debian.org",port=UDDPORT,user="guest",database="udd")
+ except psycopg2.OperationalError, err:
+ # logger not known at this state: logger.warning
+ print >>stderr, "PostgreSQL does not seem to run on port %i .. trying default port %i.\n\tMessage: %s" % (PORT, DEFAULTPORT, str(err))
try:
conn = psycopg2.connect(host="localhost",port=DEFAULTPORT,user="guest",database="udd")
except psycopg2.OperationalError:
# Hmmm, I observed a really strange behaviour on one of my machines where connecting to
- # localhost does not work but 127.0.0.1 works fine. No odea why ... but this should
+ # localhost does not work but 127.0.0.1 works fine. No idea why ... but this should
# do the trick for the moment
conn = psycopg2.connect(host="127.0.0.1",port=DEFAULTPORT,user="guest",database="udd")
curs = conn.cursor()
-query = """PREPARE query_pkg (text) AS SELECT
- distribution, component, version, architecture, maintainer,
- source, section, task, distribution, release, component, homepage,
- description, long_description FROM packages
- WHERE package = $1 ORDER BY version"""
-curs.execute(query)
-
-query = """PREPARE query_new (text) AS SELECT
- distribution, component, version, architecture, maintainer,
- source, section, distribution, 'new' AS release, component, homepage,
- description, long_description FROM new_packages
- WHERE package = $1 ORDER BY version LIMIT 1"""
-curs.execute(query)
+# uddlog = open('logs/uddquery.log', 'w')
+
+def _execute_udd_query(query):
+ try:
+ curs.execute(query)
+ logger.debug(query)
+ except psycopg2.ProgrammingError, err:
+ print >>stderr, "Problem with query\n%s" % (to_unicode(query))
+ print >>stderr, err
+ exit(-1)
+ except psycopg2.DataError, err:
+ print >>stderr, "%s; query was\n%s" % (err, query)
+
+query = """PREPARE query_pkgs (text[],text[]) AS
+ SELECT * FROM blends_query_packages($1,$2) AS (
+ package text, distribution text, release text, component text, version debversion,
+ maintainer text,
+ source text, section text, task text, homepage text,
+ maintainer_name text, maintainer_email text,
+ "vcs-type" text, "vcs-url" text, "vcs-browser" text,
+ changed_by text,
+ enhanced text[],
+ releases text[], versions text[], architectures text[],
+ unstable_upstream text, unstable_parsed_version text, unstable_status dehs_status, experimental_parsed_version text, experimental_status dehs_status,
+ vote int, recent int, -- popcon
+ debtags text[],
+ screenshot_versions text[], image text[], icon text[],
+ year text,
+ title text,
+ authors text,
+ doi text,
+ pubmed text,
+ url text,
+ journal text,
+ volume text,
+ number text,
+ pages text,
+ eprint text,
+ description_en text, long_description_en text,
+ description_cs text, long_description_cs text,
+ description_da text, long_description_da text,
+ description_de text, long_description_de text,
+ description_es text, long_description_es text,
+ description_fi text, long_description_fi text,
+ description_fr text, long_description_fr text,
+ description_hu text, long_description_hu text,
+ description_it text, long_description_it text,
+ description_ja text, long_description_ja text,
+ description_ko text, long_description_ko text,
+ description_nl text, long_description_nl text,
+ description_pl text, long_description_pl text,
+ "description_pt_BR" text, "long_description_pt_BR" text,
+ description_ru text, long_description_ru text,
+ description_sk text, long_description_sk text,
+ description_sr text, long_description_sr text,
+ description_sv text, long_description_sv text,
+ description_uk text, long_description_uk text,
+ "description_zh_CN" text, "long_description_zh_CN" text,
+ "description_zh_TW" text, "long_description_zh_TW" text
+ )"""
+_execute_udd_query(query)
+
+query = """PREPARE query_new (text[]) AS SELECT
+ p.package,
+ p.distribution, p.component, p.version, p.architecture, p.maintainer,
+ p.source, p.section, p.distribution, 'new' AS release, p.component, p.homepage,
+ s.changed_by,
+ description AS description_en, long_description AS long_description_en,
+ bibyear.value AS "year",
+ bibtitle.value AS "title",
+ bibauthor.value AS "authors",
+ bibdoi.value AS "doi",
+ bibpmid.value AS "pubmed",
+ biburl.value AS "url",
+ bibjournal.value AS "journal",
+ bibvolume.value AS "volume",
+ bibnumber.value AS "number",
+ bibpages.value AS "pages",
+ bibeprint.value AS "eprint"
+ FROM new_packages p
+ JOIN new_sources s ON p.source = s.source AND p.version = s.version
+ LEFT OUTER JOIN bibref bibyear ON p.source = bibyear.source AND bibyear.rank = 0 AND bibyear.key = 'year' AND bibyear.package = ''
+ LEFT OUTER JOIN bibref bibtitle ON p.source = bibtitle.source AND bibtitle.rank = 0 AND bibtitle.key = 'title' AND bibtitle.package = ''
+ LEFT OUTER JOIN bibref bibauthor ON p.source = bibauthor.source AND bibauthor.rank = 0 AND bibauthor.key = 'author' AND bibauthor.package = ''
+ LEFT OUTER JOIN bibref bibdoi ON p.source = bibdoi.source AND bibdoi.rank = 0 AND bibdoi.key = 'doi' AND bibdoi.package = ''
+ LEFT OUTER JOIN bibref bibpmid ON p.source = bibpmid.source AND bibpmid.rank = 0 AND bibpmid.key = 'pmid' AND bibpmid.package = ''
+ LEFT OUTER JOIN bibref biburl ON p.source = biburl.source AND biburl.rank = 0 AND biburl.key = 'url' AND biburl.package = ''
+ LEFT OUTER JOIN bibref bibjournal ON p.source = bibjournal.source AND bibjournal.rank = 0 AND bibjournal.key = 'journal' AND bibjournal.package = ''
+ LEFT OUTER JOIN bibref bibvolume ON p.source = bibvolume.source AND bibvolume.rank = 0 AND bibvolume.key = 'volume' AND bibvolume.package = ''
+ LEFT OUTER JOIN bibref bibnumber ON p.source = bibnumber.source AND bibnumber.rank = 0 AND bibnumber.key = 'number' AND bibnumber.package = ''
+ LEFT OUTER JOIN bibref bibpages ON p.source = bibpages.source AND bibpages.rank = 0 AND bibpages.key = 'pages' AND bibpages.package = ''
+ LEFT OUTER JOIN bibref bibeprint ON p.source = bibeprint.source AND bibeprint.rank = 0 AND bibeprint.key = 'eprint' AND bibeprint.package = ''
+ WHERE (p.package, p.version) IN
+ (SELECT package, max(version) FROM
+ new_packages WHERE package = ANY ($1) GROUP BY package)"""
+_execute_udd_query(query)
+
+query = """PREPARE query_vcs (text[]) AS SELECT
+ p.package,
+ p.component, p.maintainer,
+ p.source, p.section, 'vcs' AS release, p.component, p.homepage,
+ p.changed_by, p.chlog_version AS version,
+ description AS description_en, long_description AS long_description_en,
+ p.vcs_url AS "vcs-url",
+ p.vcs_type AS "vcs-type",
+ p.vcs_browser AS "vcs-browser",
+ p.blend,
+ p.license,
+ p.wnpp,
+ bibyear.value AS "year",
+ bibtitle.value AS "title",
+ bibauthor.value AS "authors",
+ bibdoi.value AS "doi",
+ bibpmid.value AS "pubmed",
+ biburl.value AS "url",
+ bibjournal.value AS "journal",
+ bibvolume.value AS "volume",
+ bibnumber.value AS "number",
+ bibpages.value AS "pages",
+ bibeprint.value AS "eprint"
+ FROM blends_prospectivepackages p
+ LEFT OUTER JOIN bibref bibyear ON p.source = bibyear.source AND bibyear.rank = 0 AND bibyear.key = 'year' AND bibyear.package = ''
+ LEFT OUTER JOIN bibref bibtitle ON p.source = bibtitle.source AND bibtitle.rank = 0 AND bibtitle.key = 'title' AND bibtitle.package = ''
+ LEFT OUTER JOIN bibref bibauthor ON p.source = bibauthor.source AND bibauthor.rank = 0 AND bibauthor.key = 'author' AND bibauthor.package = ''
+ LEFT OUTER JOIN bibref bibdoi ON p.source = bibdoi.source AND bibdoi.rank = 0 AND bibdoi.key = 'doi' AND bibdoi.package = ''
+ LEFT OUTER JOIN bibref bibpmid ON p.source = bibpmid.source AND bibpmid.rank = 0 AND bibpmid.key = 'pmid' AND bibpmid.package = ''
+ LEFT OUTER JOIN bibref biburl ON p.source = biburl.source AND biburl.rank = 0 AND biburl.key = 'url' AND biburl.package = ''
+ LEFT OUTER JOIN bibref bibjournal ON p.source = bibjournal.source AND bibjournal.rank = 0 AND bibjournal.key = 'journal' AND bibjournal.package = ''
+ LEFT OUTER JOIN bibref bibvolume ON p.source = bibvolume.source AND bibvolume.rank = 0 AND bibvolume.key = 'volume' AND bibvolume.package = ''
+ LEFT OUTER JOIN bibref bibnumber ON p.source = bibnumber.source AND bibnumber.rank = 0 AND bibnumber.key = 'number' AND bibnumber.package = ''
+ LEFT OUTER JOIN bibref bibpages ON p.source = bibpages.source AND bibpages.rank = 0 AND bibpages.key = 'pages' AND bibpages.package = ''
+ LEFT OUTER JOIN bibref bibeprint ON p.source = bibeprint.source AND bibeprint.rank = 0 AND bibeprint.key = 'eprint' AND bibeprint.package = ''
+ WHERE p.package = ANY ($1)"""
+_execute_udd_query(query)
+
+# This prepared statement is called only once but it makes sense to mention it in the
+# header to keep all stuff in one place which needs to be changed in case a new language
+# will be added
+query = """PREPARE query_metapkg_trans (text[]) AS
+ SELECT * FROM blends_metapackage_translations($1) AS (
+ package text,
+ description_en text, long_description_en text,
+ description_cs text, long_description_cs text,
+ description_da text, long_description_da text,
+ description_de text, long_description_de text,
+ description_es text, long_description_es text,
+ description_fi text, long_description_fi text,
+ description_fr text, long_description_fr text,
+ description_hu text, long_description_hu text,
+ description_it text, long_description_it text,
+ description_ja text, long_description_ja text,
+ description_ko text, long_description_ko text,
+ description_nl text, long_description_nl text,
+ description_pl text, long_description_pl text,
+ "description_pt_BR" text, "long_description_pt_BR" text,
+ description_ru text, long_description_ru text,
+ description_sk text, long_description_sk text,
+ description_sr text, long_description_sr text,
+ description_sv text, long_description_sv text,
+ description_uk text, long_description_uk text,
+ "description_zh_CN" text, "long_description_zh_CN" text,
+ "description_zh_TW" text, "long_description_zh_TW" text
+ )"""
+_execute_udd_query(query)
# Sometimes the tasks file contains dependencies from virtual packages and we have to
# obtain the real packages which provide this dependency.
# First check whether there are such packages (only names)
-query = """PREPARE query_provides (text) AS
- SELECT package FROM packages WHERE provides = $1 GROUP BY package;"""
-curs.execute(query)
+query = """PREPARE query_provides (text[]) AS
+ SELECT DISTINCT package, provides FROM packages WHERE provides IS NOT NULL AND package = ANY($1) ;"""
+_execute_udd_query(query)
# Obtain more detailed information about packages that might provide a dependency
#query = """PREPARE query_provides_version_release (text) AS
# SELECT package, version, release FROM packages WHERE provides = $1
# GROUP BY version, package, release ORDER BY version DESC;"""
-#curs.execute(query)
-
-# Obtain the component a certain package might be in
-query = "PREPARE pkg_component (text) AS SELECT component FROM packages WHERE package = $1 GROUP BY component "
-curs.execute(query)
+#_execute_udd_query(query)
# Obtain the releases featuring a certain package, in case a package might show up in different components when
# considering different releases we apply a preference for main over contrib over non-free. If this is the case
# we mention only the releases of the selected component
query = "PREPARE pkg_releases (text, text) AS SELECT release FROM packages WHERE package = $1 AND component = $2 GROUP BY release "
-curs.execute(query)
-
-# Obtain available versions including the architectures where this version is available
-#query = """PREPARE pkg_versions_arch (text, text) AS
-# SELECT release, regexp_replace(version, '^[0-9]:', '') AS version, array_to_string(array_accum(architecture),',') AS architectures FROM
-# ( SELECT architecture, version,
-# release || CASE WHEN char_length(substring(distribution from '-.*')) > 0 THEN substring(distribution from '-.*') ELSE '' END AS release FROM packages
-# WHERE package = $1 AND component = $2
-# GROUP BY architecture, version, release, distribution
-# ORDER BY architecture
-# ) AS av
-# GROUP BY version, release ORDER BY version DESC;"""
-query = """PREPARE pkg_versions_arch (text) AS
- SELECT r as release, version, archs, component
- FROM versions_archs_component($1) AS (r text, version text, archs text, component text)
- -- you have to specify the column names because plain RECORD type is returned
- JOIN releases ON releases.release = r
- -- JOIN with release table to enable reasonable sorting
- WHERE r NOT LIKE '%-%'
- -- ignore releases like *-security etc.
- ORDER BY releases.sort ASC, version DESC;"""
-curs.execute(query)
+_execute_udd_query(query)
query = """PREPARE pkg_versions_stable_testing (text) AS
SELECT release, regexp_replace(regexp_replace(debversion, '-.*', ''), '[.+~]dfsg.*', '') AS version, debversion
FROM (SELECT r AS release, MAX(version) AS debversion
FROM versions_archs_component($1) AS (r text, version text, archs text, component text)
- WHERE r IN ('lenny', 'squeeze') GROUP BY r) AS zw;""" # Change here releases onace Squeeze is released
-curs.execute(query)
-
-# Obtain upstream version in case it is newer than Debian version
-query = """PREPARE pkg_dehs (text) AS
- SELECT DISTINCT d.source, unstable_upstream, unstable_parsed_version, unstable_status, experimental_parsed_version, experimental_status FROM dehs d
- JOIN packages p ON p.source = d.source
- WHERE p.package = $1 AND unstable_status = 'outdated' ;"""
-curs.execute(query)
-
-# Obtain Vcs Information from source table - use only latest version because this is
-query = """PREPARE src_vcs (text) AS
- SELECT vcs_type AS "vcs-type", vcs_url AS "vcs-url", vcs_browser AS "vcs-browser" FROM sources
- WHERE source = $1 AND (vcs_type IS NOT NULL OR vcs_url IS NOT NULL OR vcs_browser IS NOT NULL)
- ORDER BY version desc LIMIT 1"""
-curs.execute(query)
+ WHERE r IN ('lenny', 'squeeze') GROUP BY r) AS zw;""" # Change here releases once Squeeze is released
+_execute_udd_query(query)
-# Obtain description in foreign language from DDTP project if available
-# For the moment just query for the highest available version of the description
-query = """PREPARE ddtp_description (text) AS
- SELECT language, description, long_description, version FROM DdtpLanguageMaxVersion($1)"""
-curs.execute(query)
-
-# Obtain popcon data:
-# inst : number of people who installed this package;
-# * vote : number of people who use this package regularly;
-# old : number of people who installed, but don't use this package regularly;
-# * recent : number of people who upgraded this package recently;
-# no-files : number of people whose entry didn't contain enough information (atime and ctime were 0).
-query = "PREPARE popcon (text) AS SELECT vote, recent FROM popcon WHERE package = $1"
-curs.execute(query)
-
-# Number of submissions
+# Number of all submissions
query = "PREPARE popcon_submissions AS SELECT vote FROM popcon WHERE package = '_submissions'"
-curs.execute(query)
-
-# Debtags
-query = """PREPARE debtags (text) AS
- SELECT * FROM debtags WHERE
- package = $1 AND
- tag NOT LIKE 'implemented-in::%' AND
- tag NOT LIKE 'protocol::%' AND
- tag NOT LIKE '%::TODO' AND
- tag NOT LIKE '%not-yet-tagged%';"""
-curs.execute(query)
-
-query = """PREPARE query_screenshots (text) AS
- SELECT screenshot_url, large_image_url AS image, small_image_url AS icon, version
- FROM screenshots WHERE package = $1
- ORDER BY version DESC, image ;"""
-curs.execute(query)
-
-# This query might result in more packages than wanted, because when seeking for a
-# package 'foo' it also matches an enhances field of 'bar, xfoo-xx, foo-doc, bazz'
-# and thus we get a false positive. We have to preprocess the resultset by splitting
-# it into single packages and check again the whole word for matching. This is
-# implemented below in Python
-######################################################################################
-# ATTENTION: Call this "EXECUTE query_check_enhances('%"+pkg+"%')" #
-# I have no idea how to otherwise mask the '%' in the prepared statement. #
-######################################################################################
-query = """PREPARE query_check_enhances (text) AS
- SELECT DISTINCT package, enhances FROM packages WHERE enhances LIKE $1"""
-curs.execute(query)
-
-# Obtain e-mail address of latest uploader of source package
-query = """PREPARE query_get_latest_uploader (text) AS
- SELECT changed_by FROM upload_history WHERE source = $1 ORDER BY version DESC LIMIT 1;"""
-curs.execute(query)
+_execute_udd_query(query)
#########################################################################################
+def List2PgArray(list):
+ # turn a list of strings into the syntax for a PostgreSQL array:
+ # {"string1","string2",...,"stringN"}
+ if not list:
+ return '{}'
+ komma='{'
+ PgArray=''
+ for s in list:
+ PgArray=PgArray+komma+'"'+s+'"'
+ komma=','
+ return PgArray+'}'
+
+def List2PgSimilarArray(list):
+ # turn a list of strings surrounded by '%' into the syntax for a PostgreSQL array to enable LIKE conditions:
+ # {"%string1%","%string2%",...,"%stringN%"}
+ if not list:
+ return '{}'
+ komma='{'
+ PgSimArray=''
+ for s in list:
+ PgSimArray=PgSimArray+komma+'"%'+s+'%"'
+ komma=','
+ return PgSimArray+'}'
+
def ReadConfig(blendname=''):
# Try to read config file CONFDIR/<blendname>.conf
conffile = CONFDIR + '/' + blendname + '.conf'
@@ -439,7 +569,7 @@ def FetchTasksFiles(data):
# Checkout/Update tasks from SVN
svncommand = "svn %%s %s/%s/%s %s >> /dev/null" % (SVNHOST, data['vcsdir'], dir, tasksdir)
if os.path.isdir(tasksdir+'/.svn'):
- svncommand = svncommand % 'up'
+ svncommand = svncommand % ' --accept theirs-conflict up'
else:
os.system("mkdir -p %s" % (tasksdir))
svncommand = svncommand % 'co'
@@ -448,8 +578,11 @@ def FetchTasksFiles(data):
if os.path.isdir(tasksdir+'/.svn'):
logger.error("Trying old files in %s ..." % tasksdir)
else:
- logger.error("There are no old files in %s -> giving up" % tasksdir)
- exit(-1)
+ if os.listdir(tasksdir):
+ logger.warning("No .svn directory found in %s but trying those random files there as tasks files." % tasksdir)
+ else:
+ logger.error("There are no old files in %s -> giving up" % tasksdir)
+ exit(-1)
return data['datadir'] + '/tasks'
def RowDictionaries(cursor):
@@ -478,6 +611,8 @@ def RowDictionaries(cursor):
def BrowserFromVcsURL(vcs_type, vcs_url):
# Guess Vcs-Browser URL from VCS URL
+ if not vcs_type:
+ return HOMEPAGENONE
if vcs_type.lower().startswith('svn'):
ret_url = re.sub('^svn:', 'http:', vcs_url)
ret_url = re.sub('/svn/', '/wsvn/', ret_url)
@@ -494,7 +629,10 @@ def BrowserFromVcsURL(vcs_type, vcs_url):
else:
logger.warning("Unknown VCS for " + vcs_url)
return HOMEPAGENONE
-
+ if vcs_url.startswith('https://github.com') and vcs_url.endswith('.git'):
+ ret_url = re.sub('.git$', '', vcs_url)
+ elif vcs_url.startswith('http:'):
+ return vcs_url
if ret_url == vcs_url:
logger.warning("Unable to obtain Vcs-Browser from " + vcs_url)
return HOMEPAGENONE
@@ -528,6 +666,7 @@ class DependantPackage:
self.blendname = blendname # Blend that includes the package in dependency list
self.taskname = taskname # Task which includes the Dependency
self.pkg = None # Name of dependant package
+ self.source = None # Name of source package of the dependency
self.PrintedName = None # Only for Meta package names - no use for a real dependant package
# FIXME -> object model
self.pkgstatus = 'unknown' # global pkgstatus: characterizes status of dependency, release, packaging status
@@ -563,233 +702,6 @@ class DependantPackage:
self.remark = {} # Optional remark for a package
self.dep_strength = 0 # Type of Dependency (Depends, Recommends, Suggests, Experimental, New, Avoid, Ignore, WNPP
- def _QueryUDD4Package(self, source):
- # Query UDD for several properties of a package
- query = "EXECUTE pkg_component ('%s')" % self.pkg
- curs.execute(query)
- if curs.rowcount == 0:
- # the package does not exist in UDD table packages
- # verify whether we have some information in NEW queue
- query = "EXECUTE query_new ('%s')" % self.pkg
- curs.execute(query)
- if curs.rowcount == 0:
- return
-
- row = RowDictionaries(curs)[0]
- self.component = row['component']
- self.version = [{'release':'new', 'version': row['version'], 'archs':row['architecture']} , ]
- self.pkgstatus = 'new'
- self.properties['pkg-url'] = 'http://ftp-master.debian.org/new/%s_%s.html' % (row['source'], row['version'])
- for prop in PROPERTIES:
- self.properties[prop] = row[prop]
- self.desc['en']['short'] = MarkupString(to_unicode(row['description']), self.pkg, 'ShortDesc - New')
- self.desc['en']['long'] = Markup(render_longdesc(row['long_description'].splitlines()))
- (_name, _url) = email.Utils.parseaddr(row['maintainer'])
- self.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
- logger.info("The package %s is not yet in Debian but it is just in the new queue. (Task %s)" % (self.pkg, self.taskname))
-
- return
- # = the package exists in UDD table packages
- else:
- # This might happen in cases where a package was in non-free and moved to main later or
- # something like this. If we find a certain package in more than one components we
- # prefer main over contrib over non-free.
- if curs.rowcount > 1:
- in_main = 0
- in_contrib = 0
- for component in curs.fetchall():
- if component[0] == 'main':
- self.component = 'main'
- in_main = 1
- break
- if component[0] == 'contrib':
- in_contrib = 1
- if in_main == 0:
- if in_contrib == 1:
- self.component = 'contrib'
- else:
- self.component = 'non-free'
- else:
- self.component = curs.fetchone()[0]
- # Debian Edu contains packages from main/debian-installer
- if self.component == 'main/debian-installer':
- self.component = 'main'
- self.properties['license'] = license_in_component[self.component]
-
- query = "EXECUTE pkg_releases ('%s', '%s')" % (self.pkg, self.component)
- curs.execute(query)
- has_official = 0
- for rel in curs.fetchall():
- self.releases.append(rel[0])
- if rel[0] != 'experimental':
- has_official = 1
-
- # query = "EXECUTE pkg_versions_arch ('%s', '%s')" % (self.pkg, self.component)
- query = "EXECUTE pkg_versions_arch ('%s')" % (self.pkg)
- curs.execute(query)
- if curs.rowcount > 0:
- for row in RowDictionaries(curs):
- if self.component.startswith(row['component']):
- self.version.append({'release':row['release'], 'version': row['version'], 'archs':row['archs']})
- else:
- self.version.append({'release':row['release'], 'version': row['version'] + ' (' + row['component'] + ')', 'archs':row['archs']})
-
- # Version in stable / testing for long table
- query = "EXECUTE pkg_versions_stable_testing ('%s')" % (self.pkg)
- curs.execute(query)
- if curs.rowcount > 0:
- prefix = 'Versions: '
- for row in RowDictionaries(curs):
- self.properties['stable_testing_version'].append((row['release'], row['debversion'], row['version'], prefix))
- prefix = ', '
-
- query = "EXECUTE pkg_dehs ('%s')" % (self.pkg)
- curs.execute(query)
- if curs.rowcount > 0:
- row = RowDictionaries(curs)[0]
- # it might be that the new upstream goes to experimental - this should be ignored here
- if row['experimental_status'] != 'uptodate':
- self.outdated['release'] = 'upstream'
- self.outdated['version'] = row['unstable_upstream']
- self.outdated['architectures'] = ''
-
- query = "EXECUTE popcon ('%s')" % (self.pkg)
- curs.execute(query)
- if curs.rowcount > 0:
- row = RowDictionaries(curs)[0]
- self.popcon['vote'] = row['vote']
- self.popcon['recent'] = row['recent']
-
- query = "EXECUTE debtags ('%s')" % (self.pkg)
- curs.execute(query)
- if curs.rowcount > 0:
- tagdict = {}
- taglist = []
- for row in RowDictionaries(curs):
- (tag,value) = row['tag'].split('::')
- if tagdict.has_key(tag):
- tagdict[tag] += ', ' + value
- else:
- tagdict[tag] = value
- taglist.append(tag)
- if taglist:
- taglist.sort()
- for tag in taglist:
- self.debtags.append({'tag':tag, 'value':tagdict[tag]})
-
- query = "EXECUTE query_screenshots ('%s')" % (self.pkg)
- curs.execute(query)
- if curs.rowcount > 0:
- rows = RowDictionaries(curs)
- self.icon = rows[0]['icon']
- self.image = rows[0]['image']
- self.screenshot_url = rows[0]['screenshot_url']
- # if a package has more than one screenshots provide a list of these
- if curs.rowcount > 1:
- for row in rows:
- self.screenshots.append({'version':row['version'], 'url':row['image']})
-
- if has_official == 1:
- if self.component == 'main':
- if self.dep_strength == 'Depends' or self.dep_strength == 'Recommends':
- self.pkgstatus = 'official_high'
- else:
- self.pkgstatus = 'official_low'
- else:
- self.pkgstatus = 'non-free'
- else:
- self.pkgstatus = 'experimental'
-
- # link to packages.debian.org search page to see overview about all
- # package versions in all releases
- self.properties['pkg-url'] = PKGURLMASK % self.pkg
-
- query = "EXECUTE query_pkg ('%s')" % self.pkg
- curs.execute(query)
-
- for row in RowDictionaries(curs):
- for prop in PROPERTIES:
- self.properties[prop] = row[prop]
- self.desc['en']['short'] = MarkupString(to_unicode(row['description']), self.pkg, 'ShortDesc')
- self.desc['en']['long'] = Markup(render_longdesc(to_unicode(row['long_description']).splitlines()))
- (_name, _url) = email.Utils.parseaddr(row['maintainer'])
- self.properties['maintainer'] = to_unicode(row['maintainer'])
- self.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
-
- if self.properties.has_key('source'):
- query = "EXECUTE src_vcs ('%s')" % (self.properties['source'])
- curs.execute(query)
- if curs.rowcount > 0:
- # There is only one line returned by this query
- row = RowDictionaries(curs)[0]
- # If some information about Vcs is found in the database make sure it is ignored from tasks file
- self.vcs_found = 1
- for prop in row.keys():
- if row[prop]:
- self.properties[prop] = row[prop]
- if not self.properties.has_key('vcs-browser') or self.properties['vcs-browser'] == HOMEPAGENONE:
- try:
- self.properties['vcs-browser'] = BrowserFromVcsURL(self.properties['vcs-type'], self.properties['vcs-url'])
- except KeyError, err:
- logger.warning("Vcs Property missing in Database:", self.properties, err)
- if not self.properties.has_key('vcs-type') or not self.properties['vcs-type']:
- if self.properties.has_key('vcs-browser') and self.properties['vcs-browser'] != HOMEPAGENONE:
- self.properties['vcs-type'] = VcsTypeFromBrowserURL(self.properties['vcs-browser'])
- # We are only interested in source packages (for instance for Bugs page)
- if source == 1:
- self.pkg = self.properties['source']
- # Stop using source package in self.pkg because we need the source package to obtain latest uploaders and
- # and bugs should be rendered in the same job - so we need the differentiation anyway
- self.src = self.properties['source']
- else:
- logger.error("Failed to obtain source for package", self.pkg)
- return
-
- query = "EXECUTE query_get_latest_uploader ('%s')" % (self.src)
- curs.execute(query)
- try:
- changed = to_unicode(curs.fetchone()[0])
- except TypeError, err:
- changed = None
- logger.info("Query '%s' does not result in a valid changed entry (%s)" % (query, err))
- if changed:
- # self.properties['maintainer'] = to_unicode(self.properties['maintainer']) # .encode('utf-8')
- try:
- if not changed.startswith(self.properties['maintainer']):
- (_name, _url) = email.Utils.parseaddr(changed)
- changed = '<a href="mailto:%s">%s</a>' % (_url, _name)
- self.properties['changed_by'] = MarkupString(changed, self.pkg, 'changed_by')
- self.properties['last_uploader'] = to_unicode(changed)
- self.properties['last_uploader_simple'] = to_unicode('%s <%s>' % (_name, _url))
- except UnicodeDecodeError, err:
- logger.error("Failed to compare changed with maintainer - assume both are the same for package %s (%s)", self.pkg, err)
-
- if source == 0: # If we are querying for source packages to render BTS pages
- # tranlations are irrelevant - so only obtain ddtp translations
- # otherwise
- query = "EXECUTE ddtp_description ('%s')" % (self.pkg)
- curs.execute(query)
-
- for row in RowDictionaries(curs):
- lang = row['language']
- self.desc[lang] = {}
- self.desc[lang]['short'] = MarkupString(to_unicode(row['description']), self.pkg, 'ShortDesc - ' + lang)
- self.desc[lang]['long'] = Markup(render_longdesc(to_unicode(row['long_description']).splitlines()))
-
- query = "EXECUTE query_check_enhances ('%"+self.pkg+"%')"
- curs.execute(query)
-
- if curs.rowcount > 0:
- for row in RowDictionaries(curs):
- enhancelist = row['enhances'].split(', ')
- if self.pkg in enhancelist:
- if not row['package'] in self.properties['Enhances'].keys():
- self.properties['Enhances'][row['package']] = PKGURLMASK % row['package']
- # if self.properties['Enhances'] != {}:
- # print "The following packages are enhancing %s: " % self.pkg,
- # for enh in self.properties['Enhances'].keys():
- # print enh,
- # print
# sort these objects according to the package name
def __cmp__(self, other):
@@ -816,11 +728,79 @@ class DependantPackage:
if self.desc:
ret += ", desc: " + str(self.desc)
for prop in self.properties.keys():
- ret += ", %s: %s" % (prop, str(self.properties[prop]))
+ try:
+ ret += ", %s: %s" % (prop, to_unicode(str(self.properties[prop])))
+ except UnicodeEncodeError:
+ ret += ", %s: <UnicodeEncodeError>" % (prop)
+ try:
+ ret += ", popcon = %i (%i)" % (self.popcon['vote'], self.popcon['recent'])
+ except:
+ pass
+ ret += ", debtags = " + str(self.debtags)
+ if self.icon:
+ ret += ", screenshoticon = " + self.icon
+ if self.outdated:
+ ret += ", dehsstatus = " + str(self.outdated)
+
# if self.desc['en']:
# ret += ", desc['en']:" + str(self.desc['en'])
return ret
+ def SetPublications(self, row):
+ for pub in ("year", "title", "authors", "doi", "pubmed", "url", "journal", "volume", "number", "pages", "eprint" ):
+ if row[pub]:
+ if pub == "pages":
+ row[pub] = re.sub("--", "-", row[pub])
+ if (pub == "authors" and row[pub].count(" and ") or row[pub].count(" AND ")):
+ # assume "authors" string is a regular BibTeX "and" separated list of authors
+ row[pub] = re.sub("AND", "and", row[pub].strip())
+ authors_list = row[pub].split(" and ")
+ # normalize several BibTeX styles to "First Last, First Last and First Last":
+ # 1. "First Last and First Last and First Last"
+ # 2. "Last, First and Last, First and Last, First"
+ # 3. "First Last, First Last and First Last"
+ authors_string = ""
+ while (authors_list):
+ author = authors_list.pop(0)
+ if (author.count(",") > 1):
+ # 3. "First Last, First Last and First Last"
+ # authors string is already in desired format, keep it
+ authors_string = row[pub].strip()
+ break
+ elif (row[pub].count(",") == row[pub].count(" and ") + 1):
+ # 2. "Last, First and Last, First and Last, First"
+ # reverse last and first name
+ (last, first) = author.split(", ")
+ full_author = first + " " + last
+ else:
+ # 1. "First Last and First Last and First Last"
+ full_author = author
+ if (len(authors_list) > 1):
+ authors_string += full_author + ", "
+ elif (len(authors_list) > 0):
+ authors_string += full_author + " and "
+ else:
+ authors_string += full_author
+ if row[pub] != authors_string:
+ # emergency brake if algorithm fails to detect non-names like '1000 Genome Project Data Processing Subgroup'
+ if authors_string.count(',') > row[pub].count(' and '):
+ logger.warning("Refuse to change Author string in %s: '%s'(%i) -> '%s'(%i)", \
+ self.pkg, to_unicode(row[pub]), row[pub].count(' and '), to_unicode(authors_string), authors_string.count(','))
+ else:
+ logger.debug("Author string changed in %s: '%s' -> '%s'", self.pkg, to_unicode(row[pub]), to_unicode(authors_string))
+ row[pub] = authors_string
+ if not self.properties.has_key('published'):
+ self.properties['published'] = {}
+ if self.properties['published'].has_key(pub):
+ if self.properties['published'][pub] == to_unicode(row[pub]):
+ try:
+ print >>rmpub, "%s: %s: Published-%s: %s" % (self.taskname, self.pkg, pub, to_unicode(row[pub]))
+ except UnicodeEncodeError:
+ print >>rmpub, "--- %s: %s: Published-%s: some duplicated value featuring encoding problems ---" % (self.taskname, self.pkg, pub)
+ logger.info("%s/%s: Publication-%s = %s can be removed" % (self.taskname, self.pkg, pub, to_unicode(row[pub])))
+ else:
+ logger.info("%s conflicting fields Publication-%s in tasks file with value '%s' and in UDD with value '%s'" % (self.pkg, pub, self.properties['published'][pub], to_unicode(row[pub])))
+ self.properties['published'][pub] = to_unicode(row[pub])
class Tasks:
# Provide a list of depencencies defined in metapackages
@@ -839,6 +819,8 @@ class Tasks:
handler.setFormatter(formatter)
logger.addHandler(handler)
+ LockBlendsTools()
+
# This Instance of the Available class contains all
# information about packages that are avialable in Debian
# See below for more information about Available class
@@ -867,9 +849,6 @@ class Tasks:
# If we want to subscribe ddpo we need the source package names.
# In this case set source=1
- if self.metapackagekeys == []:
- self._GetMetapackages()
-
# Obtain the prefix of the meta packages of the Blend using blends-dev tools blend_get_names
if os.access('/usr/share/blends-dev/blend-get-names', os.X_OK):
blend_get_names = '/usr/share/blends-dev/blend-get-names'
@@ -884,17 +863,45 @@ class Tasks:
pipe = Popen(cmd, shell=True, stdout=PIPE).stdout
prefix = pipe.read().strip() + '-'
pipe.close()
+
+ metapackages = []
for task in self.metapackagekeys:
- td = TaskDependencies(self.blendname, task=task, tasksdir=self.tasksdir, prefix=prefix)
+ metapackages.append(prefix + task)
+
+ # Verify whether there are any translations of metapackage descriptions which on
+ # one hand is a sign that this Blend has uploaded metapackages at all and on the
+ # other hand gives a clue about whether it makes sense to query for description
+ # translations
+ query = "SELECT COUNT(*) FROM descriptions WHERE package = ANY ('%s')" % List2PgArray(metapackages)
+ _execute_udd_query(query)
+ if curs.rowcount > 0:
+ hastranslations = curs.fetchone()[0]
+
+ metapkg_translations = {}
+ if hastranslations > 0:
+ query = "EXECUTE query_metapkg_trans('%s')" % List2PgArray(metapackages)
+ _execute_udd_query(query)
+ if curs.rowcount > 0:
+ for row in RowDictionaries(curs):
+ metapkg_translations[row['package']] = row
+
+ for task in self.metapackagekeys:
+ td = TaskDependencies(self.blendname, task=task, tasksdir=self.tasksdir)
+ pkgname = prefix + task
+ translations = None
+ if metapkg_translations.has_key(pkgname):
+ translations = metapkg_translations[pkgname]
+ td.SetMetapackageInfo(pkgname, translations)
td.GetTaskDependencies(source)
self.tasks[task] = td
if source == 0:
- # overall popcon submissions
+ # total number popcon submissions
query = "EXECUTE popcon_submissions"
- curs.execute(query)
+ _execute_udd_query(query)
if curs.rowcount > 0:
self.popconsubmit = curs.fetchone()[0]
+ # Obtain packages that might enhance any of the packages in tasks list
self.LinkEnhances()
def GetNamesOnlyDict(self, dependencystatus=[]):
@@ -1080,7 +1087,7 @@ class Tasks:
class TaskDependencies:
# List of depencencies defined in one metapackage
- def __init__(self, blendname, task, tasksdir=None, prefix=''):
+ def __init__(self, blendname, task, tasksdir=None):
self.data = ReadConfig(blendname)
self.blendname = self.data['Blend']
@@ -1095,16 +1102,12 @@ class TaskDependencies:
logger.error("No such task file %s." % self.taskfile)
return None
- # Dictionary with satus of dependencies as key and list of DependantPackage
+ # Dictionary with status of dependencies as key and list of DependantPackage
# instances
self.dependencies = {}
for pkgstat in pkgstatus:
self.dependencies[pkgstat] = []
- # Main information for a task
- self.metapkg = DependantPackage(self.blendname, self.task)
- self.metapkg.pkg = prefix + task
-
# If a Blend just bases on the meta package of an other Blend (this is the
# case in Debian Science which bases on med-bio for biology and gis-workstation
# for geography it makes no sense to build an own sentinel page but read
@@ -1116,6 +1119,38 @@ class TaskDependencies:
# This is NOT YET implemented
self.metadepends = None
+
+ def SetMetapackageInfo(self, pkgname, ddtptranslations=None):
+ # Gather information (specifically description translations if exists) about metapackage itself
+ self.metapkg = DependantPackage(self.blendname, self.task)
+ self.metapkg.pkg = pkgname
+ self.metapkg.source = self.blendname
+ if not ddtptranslations:
+ return
+ for lang in languages:
+ if ddtptranslations['description_'+lang]:
+ self.metapkg.desc[lang] = {}
+ try:
+ short = to_unicode(ddtptranslations['description_'+lang])
+ self.metapkg.desc[lang]['short'] = MarkupString(short, self.metapkg.pkg, 'taskShortDesc', lang)
+ except UnicodeEncodeError, err:
+ logger.error("===> UnicodeDecodeError in metapackage %s (lang='%s'): '%s'; ErrTxt: %s" % \
+ (self.metapkg.pkg, lang, ddtptranslations['description_'+lang], err))
+ short = to_unicode(ddtptranslations['description_'+lang],'latin1')
+ self.metapkg.desc[lang]['short'] = MarkupString(short, self.metapkg.pkg, 'taskShortDesc' + lang)
+
+ try:
+ self.metapkg.desc[lang]['long'] = Markup(render_longdesc(ddtptranslations['long_description_'+lang].splitlines()))
+ except UnicodeDecodeError, err:
+ logger.error("===> UnicodeDecodeError in metapackage long %s (lang='%s'): '%s'; ErrTxt: %s" % \
+ (self.metapkg.pkg, lang, ddtptranslations['long_description_'+lang], err))
+ self.metapkg.desc[lang]['long'] = 'UnicodeDecodeError'
+ except AttributeError, err:
+ logger.error("===> AttributeError in metapackage long %s (lang='%s'): '%s'; ErrTxt: %s" % \
+ (self.metapkg.pkg, lang, ddtptranslations['long_description_'+lang], err))
+ self.metapkg.desc[lang]['long'] = 'Missing long description'
+
+
def _AppendDependency2List(self, dep, source):
# Append dependency which was found in the tasks file if not Ignore / Avoid and
# no dupplication in case of source depencencies
@@ -1142,6 +1177,7 @@ class TaskDependencies:
global dep_strength_keys
f = file(self.taskfile)
+ found_description=False
for stanza in deb822.Sources.iter_paragraphs(f):
# Why and Responsible can be valid for more than one dependency
# Store them in strings and use them for all Dependent Package objects
@@ -1158,53 +1194,21 @@ class TaskDependencies:
self.metapkg.PrintedName = to_unicode(stanza['task'])
continue
if key == 'Description':
- (short, long) = SplitDescription(stanza['description'])
- # Markup strings to enable verbatim output of preformatted text
- self.metapkg.desc['en']['short'] = MarkupString(short.encode('utf-8'), self.metapkg.PrintedName, 'taskShortDesc')
- self.metapkg.desc['en']['long'] = MarkupString(long.encode('utf-8'), self.metapkg.PrintedName, 'taskLongDesc')
-
- # find maintainer and other metadata:
- query = "EXECUTE query_pkg ('%s')" % self.metapkg.pkg
- curs.execute(query)
- if curs.rowcount > 0:
- row = RowDictionaries(curs)[0]
- (_name, _url) = email.Utils.parseaddr(row['maintainer'])
- self.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
-
- # if an English description was found chances are good that we are seeking for other languages
- # as well
- if source == 0: # If we are querying for source packages to render BTS pages
- # tranlations are irrelevant - so only obtain ddtp translations
- # otherwise
- query = "EXECUTE ddtp_description ('%s')" % (self.metapkg.pkg)
- curs.execute(query)
-
- for row in RowDictionaries(curs):
- lang = row['language']
- self.metapkg.desc[lang] = {}
- try:
- short = to_unicode(row['description'])
- self.metapkg.desc[lang]['short'] = MarkupString(to_unicode(short), \
- self.metapkg.PrintedName, 'taskShortDesc - ' + lang)
- except UnicodeEncodeError, err:
- logger.error("===> UnicodeDecodeError in metapackage %s (lang='%s'): '%s'; ErrTxt: %s" % \
- (self.metapkg.pkg, lang, row['description'], err))
- short = to_unicode(row['description'],'latin1')
- self.metapkg.desc[lang]['short'] = MarkupString(short, \
- self.metapkg.PrintedName, 'taskShortDesc - ' + lang)
-
- try:
- self.metapkg.desc[lang]['long'] = Markup(render_longdesc(to_unicode(row['long_description']).splitlines()))
- except UnicodeDecodeError, err:
- logger.error("===> UnicodeDecodeError in metapackage long %s (lang='%s'): '%s'; ErrTxt: %s" % \
- (self.metapkg.pkg, lang, row['long_description'], err))
- self.metapkg.desc[lang]['long'] = 'UnicodeDecodeError'
-
+ if found_description:
+ logger.error("Duplicate description entry in task %s; you probably want to use Pkg-Description field instead!" % self.task)
+ else:
+ (short, long) = SplitDescription(stanza['description'])
+ # Markup strings to enable verbatim output of preformatted text
+ self.metapkg.desc['en']['short'] = MarkupString(short.encode('utf-8'), self.metapkg.PrintedName, 'taskShortDesc')
+ self.metapkg.desc['en']['long'] = MarkupString(long.encode('utf-8'), self.metapkg.PrintedName, 'taskLongDesc')
+ found_description = True
continue
if key == 'Meta-Depends':
self.metadepends = stanza['meta-depends']
+ continue
if key == 'Meta-Suggests':
self.metadepends = stanza['meta-suggests']
+ continue
if key == 'Why':
why = stanza['why']
continue
@@ -1212,7 +1216,7 @@ class TaskDependencies:
responsible = stanza['responsible'].strip()
if not dep:
# Make sure there is really enough information to deal with provided by the package
- logger.error("Missing package information for field %s = %s" % (key, responsible))
+ logger.error("Missing package information for field %s = %s in task file %s" % (key, responsible, self.task))
continue
if dep.responsible != None:
# we are dealing with an official package that has a real maintainer who
@@ -1223,7 +1227,11 @@ class TaskDependencies:
continue
if responsible != '':
(_name, _url) = email.Utils.parseaddr(responsible)
- dep.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
+ _name = to_unicode(_name)
+ try:
+ dep.responsible = '<a href="mailto:%s">%s</a>' % (_url, _name)
+ except UnicodeDecodeError, err:
+ logger.error("Unicode problem when decoding name of maintainer with mail address <%s> in task %s (%s)" % (_url, self.task, err))
continue
if key in dep_strength_keys:
@@ -1263,8 +1271,6 @@ class TaskDependencies:
logger.warning("Package names may not contain upper case letters, so %s is an invalid package name which is turned into %s" \
% (dep_in_line, dep.pkg))
- dep._QueryUDD4Package(source)
-
continue
# sometimes the tasks file contains standalone comments or other RFC 822 entries.
@@ -1362,6 +1368,9 @@ class TaskDependencies:
% (key, stanza[key.lower()]))
elif key == 'License':
if dep != None:
+ if dep.vcs_found == 1 and dep.properties.has_key(key.lower()):
+ fields_obsolete.append(key)
+ continue
dep.properties[key.lower()] = stanza[key.lower()]
else:
logger.error("Dep not initiated before %s %s -> something is wrong." \
@@ -1389,17 +1398,15 @@ class TaskDependencies:
% (key, stanza[key.lower()]))
elif key == 'WNPP':
if dep != None:
- # it makes sense to assume that a package where WNPP was recently closed
- # shows up in unstable first
- if dep.component != None:
- logger.info("WNPP for package %s just closed - extra information can be removed from task file %s." % (dep.pkg, dep.taskname))
- else:
- wnpp = stanza['wnpp'].strip()
- # in case somebody prepended a '#' sign before the bug number
- wnpp = re.sub('^#', '', wnpp)
- # if there is really a number given
- if re.compile("^\d+$").search(wnpp):
- dep.properties['wnpp'] = wnpp
+ if dep.vcs_found == 1 and dep.properties.has_key(key.lower()):
+ fields_obsolete.append(key)
+ continue
+ wnpp = stanza['wnpp'].strip()
+ # in case somebody prepended a '#' sign before the bug number
+ wnpp = re.sub('^#', '', wnpp)
+ # if there is really a number given
+ if re.compile("^\d+$").search(wnpp):
+ dep.properties['wnpp'] = wnpp
else:
logger.error("Dep not initiated before WNPP %s -> something is wrong." \
% stanza['wnpp'])
@@ -1447,8 +1454,9 @@ class TaskDependencies:
if dep == None:
continue # ... with next stanza
# seek for certain field set in the tasks file to move the dependency into different
- # categories of development status of not yet included packages
- if dep.pkgstatus == 'unknown':
+ # categories of development status of not yet included packages provided that there
+ # is at least a package description given
+ if dep.pkgstatus == 'unknown' and dep.desc['en'] != {}:
flag = 0
# first check those packages where some work was just done
for status in ['pkgvcs', 'unofficial', 'wnpp', 'prospective']:
@@ -1461,11 +1469,405 @@ class TaskDependencies:
break
if flag == 1:
break
+
+ tmp_dep_list.append(dep)
+ # remarks which are common to several dependencies in a list have to be added to all of the dependencies
+ for dep in tmp_dep_list:
+ if remark != {}:
+ dep.remark = remark
+ if fields_obsolete != [] and dep.pkgstatus != 'new':
+ logger.info("Package %s is an official package and has information in UDD. The following extra information can be removed from tasks file %s: %s" % \
+ (dep.pkg, dep.taskname, str(fields_obsolete)))
+ self._AppendDependency2List(dep, source)
+
+ f.close()
+
+ alldepends=[]
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ alldepends.append(dep.pkg)
+
+ if not alldepends:
+ logger.warning("No dependencies defined in taskfile %s" % self.task)
+ return
+ query = "EXECUTE query_pkgs ('%s', '%s')" % (List2PgArray(alldepends), List2PgSimilarArray(alldepends))
+ _execute_udd_query(query)
+ pkgs_in_pool = []
+ enhancing_pkgs = []
+ if curs.rowcount > 0:
+ for row in RowDictionaries(curs):
+ # seek for package name in list of packages mentioned in tasks file
+ found = False
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg == row['package']:
+ found = True
+ break
+ if found:
+ break
+ if not found:
+ # this should not happen ...
+ logger.info("The package %s was found in package pool but never mentioned in task %s." % (row['package'], self.task))
+ continue
+
+ # Now set the information for the package found in the database
+ # Debian Edu contains packages from main/debian-installer - that's why we use startswith here
+ if row['component'].startswith('main'):
+ dep.component = 'main'
+ if dep.dep_strength == 'Depends' or dep.dep_strength == 'Recommends':
+ dep.pkgstatus = 'official_high'
+ elif dep.dep_strength == 'Suggests':
+ dep.pkgstatus = 'official_low'
+ else:
+ dep.component = row['component']
+ # If a package is not found in main its status can be maximum non-free
+ dep.pkgstatus = 'non-free'
+ # if a package is released *only* in experimental decrease package status
+ if row['release'] == 'experimental':
+ dep.pkgstatus = 'experimental'
+
+ # move dependant package to different status list if needed because a status change was detected
+ if dep.pkgstatus != status:
+ self.dependencies[status].remove(dep)
+ self.dependencies[dep.pkgstatus].append(dep)
+
+ # Warn about remaining information of prospective package
+ if ( dep.desc['en'] and dep.desc['en']['short'] ) and \
+ not dep.debtags: # prevent informing about packages which are just duplicated because of a broken query
+ logger.info("WNPP for package %s just closed - extra information can be removed from task file %s." % (dep.pkg, dep.taskname))
+
+ dep.properties['license'] = license_in_component[dep.component]
+ for prop in PROPERTIES:
+ dep.properties[prop] = row[prop]
+ for prop in ('vcs-type', 'vcs-url'):
+ dep.properties[prop] = row[prop]
+ if row['vcs-browser']:
+ dep.properties['vcs-browser'] = row['vcs-browser']
+ else:
+ if dep.properties['vcs-browser'] == HOMEPAGENONE:
+ dep.properties['vcs-browser'] = BrowserFromVcsURL(dep.properties['vcs-type'], dep.properties['vcs-url'])
+
+ if row['enhanced']:
+ for pkg in row['enhanced']:
+ dep.properties['Enhances'][pkg] = PKGURLMASK % pkg
+ enhancing_pkgs.append(pkg)
+
+ for i in range(len(row['releases'])):
+ dep.version.append({'release':row['releases'][i], 'version': row['versions'][i], 'archs':row['architectures'][i]})
+
+ dep.popcon['vote'] = row['vote']
+ dep.popcon['recent'] = row['recent']
+
+ # Debtags as sorted list of dict fields
+ if row['debtags']:
+ if dep.debtags: # there is no reasonable way that debtags was set before - so something is wrong here and a warning should be issued
+ logger.warning("Debtags for package '%s' was just set. A duplicated result from database query is suspected. Please check the result!" % dep.pkg)
+ tagdict = {}
+ taglist = []
+ for debtag in row['debtags']:
+ (tag,value) = debtag.split('::')
+ if tagdict.has_key(tag):
+ tagdict[tag] += ', ' + value
+ else:
+ tagdict[tag] = value
+ taglist.append(tag)
+ if taglist:
+ taglist.sort()
+ for tag in taglist:
+ dep.debtags.append({'tag':tag, 'value':tagdict[tag]})
+
+ # screenshots
+ if row['icon']:
+ dep.icon = row['icon'][0]
+ dep.image = row['image'][0]
+ dep.screenshot_url = 'http://screenshots.debian.net/package/' + dep.pkg
+ for i in range(1,len(row['image'])):
+ dep.screenshots.append({'version':row['screenshot_versions'][i], 'url':row['image'][i]})
+
+ # it might be that the new upstream goes to experimental - this should be ignored here
+ if row['experimental_status'] != 'uptodate' and row['unstable_parsed_version']:
+ dep.outdated['release'] = 'upstream'
+ dep.outdated['version'] = row['unstable_upstream']
+ dep.outdated['architectures'] = ''
+
+ if row['changed_by']:
+ try:
+ changed = to_unicode(row['changed_by'])
+ except TypeError, err:
+ changed = None
+ logger.warning("Encoding problem for last uploader of package '%s' in task %s (%s)" % (dep.pkg, dep.taskname, err))
+ if changed:
+ try:
+ (_name, _url) = email.Utils.parseaddr(changed)
+ changed = '<a href="mailto:%s">%s</a>' % (_url, _name)
+ dep.properties['changed_by'] = MarkupString(changed, dep.pkg, 'changed_by')
+ dep.properties['last_uploader'] = to_unicode(changed)
+ dep.properties['last_uploader_simple'] = to_unicode('%s <%s>' % (_name, _url))
+ except UnicodeDecodeError, err:
+ logger.error("Encoding problem for last uploader - assume same as maintainer for package %s (%s)", dep.pkg, err)
+
+ # link to packages.debian.org search page to see overview about all
+ # package versions in all releases
+ dep.properties['pkg-url'] = PKGURLMASK % dep.pkg
+ dep.SetPublications(row)
+ for l in languages:
+ if row['description_'+l]:
+ dep.desc[l] = {}
+ dep.desc[l]['short'] = MarkupString(to_unicode(row['description_'+l]), dep.pkg, 'ShortDesc')
+ if row['long_description_'+l]:
+ dep.desc[l]['long'] = Markup(render_longdesc(row['long_description_'+l].splitlines()))
+ if not dep.desc['en'].has_key('short'):
+ logger.error("Dep has no English short description: %s", dep.pkg)
+ dep.desc['en']['short'] = "??? missing short description for package %s :-(" % dep.pkg
+ (_name, _url) = email.Utils.parseaddr(row['maintainer'])
+ dep.properties['maintainer'] = to_unicode(row['maintainer'])
+ dep.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
+
+ pkgs_in_pool.append(dep.pkg)
+ # DEBUG
+ # print dep
+
+ pkgs_not_in_pool = []
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg not in pkgs_in_pool:
+ pkgs_not_in_pool.append(dep.pkg)
+
+ # Gather information about packages in NEW
+ query = "EXECUTE query_new('%s')" % List2PgArray(pkgs_not_in_pool)
+ _execute_udd_query(query)
+ pkgs_in_new = []
+ if curs.rowcount > 0:
+ for row in RowDictionaries(curs):
+ pkgs_in_new.append(row['package'])
+ # seek for package name in list of packages mentioned in tasks file
+ found = False
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg == row['package']:
+ found = True
+ break
+ if found:
+ break
+ if not found:
+ # this should not happen ...
+ logger.info("The package %s was found in new but never mentioned in task %s." % (row['package'], self.task))
+ continue
+ # Check for korrekt status 'new'
+ if status != 'new':
+ self.dependencies[status].remove(dep)
+ self.dependencies['new'].append(dep)
+ dep.pkgstatus = 'new'
+ dep.component = row['component']
+ dep.version = [ row['version'], ]
+ dep.properties['pkg-url'] = 'http://ftp-master.debian.org/new/%s_%s.html' % (row['source'], row['version'])
+ # Warn about remaining information of prospective package
+ if ( dep.desc['en'] and dep.desc['en']['short'] ) or dep.properties['homepage'] != HOMEPAGENONE:
+ logger.info("The package %s is not yet in Debian but it is just in the new queue. (Task %s)" % (dep.pkg, dep.taskname))
+ for prop in PROPERTIES:
+ dep.properties[prop] = row[prop]
+ dep.desc['en']['short'] = MarkupString(to_unicode(row['description_en']), dep.pkg, 'ShortDesc - New')
+ dep.desc['en']['long'] = Markup(render_longdesc(row['long_description_en'].splitlines()))
+ (_name, _url) = email.Utils.parseaddr(row['maintainer'])
+ dep.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
+ dep.SetPublications(row)
+ if row['changed_by']:
+ try:
+ changed = to_unicode(row['changed_by'])
+ except TypeError, err:
+ changed = None
+ logger.warning("Encoding problem for uploader to ftpnew of package '%s' in task %s (%s)" % (dep.pkg, dep.taskname, err))
+ if changed:
+ try:
+ (_name, _url) = email.Utils.parseaddr(changed)
+ changed = '<a href="mailto:%s">%s</a>' % (_url, _name)
+ dep.properties['changed_by'] = MarkupString(changed, dep.pkg, 'changed_by')
+ dep.properties['last_uploader'] = to_unicode(changed)
+ dep.properties['last_uploader_simple'] = to_unicode('%s <%s>' % (_name, _url))
+ except UnicodeDecodeError, err:
+ logger.error("Encoding problem for last uploader - assume same as maintainer for package %s (%s)", dep.pkg, err)
+
+ # Verify whether there are virtual packages which are provided by some other packages in the list of dependencies
+ query = "EXECUTE query_provides('%s')" % List2PgArray(pkgs_in_pool)
+ _execute_udd_query(query)
+ pkgs_virtual = []
+ if curs.rowcount > 0:
+ virtual_pkgs = RowDictionaries(curs)
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg not in pkgs_in_pool and dep.pkg not in pkgs_in_new:
+ found = False
+ for vp in virtual_pkgs:
+ for pr in vp['provides'].split(','):
+ prs=pr.strip()
+ if dep.pkg == prs:
+ pkgs_virtual.append(prs)
+ logger.info("Virtual package %s is provided by package %s for task %s" % (dep.pkg, vp['package'], dep.taskname))
+ found = True
+ break
+ if found:
+ break
+
+ pkgs_not_in_pool = []
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg not in pkgs_in_pool and dep.pkg not in pkgs_in_new and dep.pkg not in pkgs_virtual:
+ pkgs_not_in_pool.append(dep.pkg)
+ # Gather information about packages in Vcs
+ query = "EXECUTE query_vcs('%s')" % List2PgArray(pkgs_not_in_pool)
+ _execute_udd_query(query)
+ pkgs_in_vcs = []
+ if curs.rowcount > 0:
+ for row in RowDictionaries(curs):
+ # print row
+ pkgs_in_vcs.append(row['package'])
+ # seek for package name in list of packages mentioned in tasks file
+ found = False
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg == row['package']:
+ found = True
+ break
+ if found:
+ break
+ if not found:
+ # this should not happen ...
+ logger.info("The package %s was found in vcs but never mentioned in task %s." % (row['package'], self.task))
+ continue
+ # Check for korrekt status 'pkgvcs'
+ if status != 'pkgvcs':
+ self.dependencies[status].remove(dep)
+ self.dependencies['pkgvcs'].append(dep)
+ dep.pkgstatus = 'pkgvcs'
+ dep.component = row['component']
+ dep.version = [ row['version'], ]
+ dep.debtags = [] # prevent trying to print debtags (should be default setting but does not work in template (FIXME)
+ # Warn about remaining information of prospective package
+ if ( dep.desc['en'] and dep.desc['en']['short'] ) or dep.properties['homepage'] != HOMEPAGENONE:
+ logger.info("The package %s is not yet in Debian but it is just in Blends %s Vcs. (Task %s)" % (dep.pkg, row['blend'], dep.taskname))
+ for prop in PROPERTIES:
+ dep.properties[prop] = row[prop]
+ for prop in ('vcs-url', 'vcs-browser', 'vcs-type', 'license'):
+ dep.properties[prop] = row[prop]
+ if int(row['wnpp']) > 0:
+ dep.properties['wnpp'] = row['wnpp']
+ dep.SetPublications(row)
+ dep.desc['en']['short'] = MarkupString(to_unicode(row['description_en']), dep.pkg, 'ShortDesc - New')
+ dep.desc['en']['long'] = Markup(render_longdesc(row['long_description_en'].splitlines()))
+ (_name, _url) = email.Utils.parseaddr(row['maintainer'])
+ dep.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
+ if row['changed_by']:
+ try:
+ changed = to_unicode(row['changed_by'])
+ except TypeError, err:
+ changed = None
+ logger.warning("Encoding problem for changelog author in Vcs of package '%s' in task %s (%s)" % (dep.pkg, dep.taskname, err))
+ if changed:
+ try:
+ (_name, _url) = email.Utils.parseaddr(changed)
+ changed = '<a href="mailto:%s">%s</a>' % (_url, _name)
+ dep.properties['changed_by'] = MarkupString(changed, dep.pkg, 'changed_by')
+ dep.properties['last_uploader'] = to_unicode(changed)
+ dep.properties['last_uploader_simple'] = to_unicode('%s <%s>' % (_name, _url))
+ except UnicodeDecodeError, err:
+ logger.error("Encoding problem for changer - assume same as maintainer for package %s (%s)", dep.pkg, err)
+
+ # Verify whether packages which are neither in pool, new, vcs nor virtual have sufficient information in task file
+ for status in self.dependencies.keys():
+ for dep in self.dependencies[status]:
+ if dep.pkg not in pkgs_in_pool and dep.pkg not in pkgs_in_new and dep.pkg not in pkgs_virtual and (dep.pkgstatus == 'unknown' or dep.pkgstatus == 'pkgvcs'):
+ # If only Vcs fields are given than we currently do not know enough to print package information
+ if dep.pkgstatus == 'pkgvcs' and (dep.properties['homepage'] == HOMEPAGENONE or dep.desc['en'] == {}):
+ logger.error("Package %s in task %s has only Vcs information - please provide more information" % (dep.pkg, dep.taskname))
+ self.dependencies[status].remove(dep)
+ # dep.pkgstatus == 'unknown'
+ if dep.properties['homepage'] == HOMEPAGENONE:
+ if dep.desc['en'] == {}:
+ logger.error("Package %s in task %s neither in pool nor new and is lacking homepage and description - ignored" % (dep.pkg, dep.taskname))
+ else:
+ logger.error("Package %s in task %s neither in pool nor new and has no homepage information - ignored (%s)" % (dep.pkg, dep.taskname, dep.pkgstatus))
+ else:
+ if dep.desc['en'] == {}:
+ logger.error("Package %s neither in pool nor new and has no description - ignored" % dep.pkg)
+ else:
+ # prevent printing WNPP of packages inside Debian
+ if dep.properties.has_key('wnpp') and dep.pkgstatus != 'wnpp':
+ del dep.properties['wnpp']
+
+ for dependency in self.dependencies.keys():
+ self.dependencies[dependency].sort()
+
+ def _QueryUDD4Package(self, source):
+
+ query = "EXECUTE pkg_releases ('%s', '%s')" % (self.pkg, self.component)
+ _execute_udd_query(query)
+ has_official = 0
+ for rel in curs.fetchall():
+ self.releases.append(rel[0])
+ if rel[0] != 'experimental':
+ has_official = 1
+
+ # Version in stable / testing for long table
+ query = "EXECUTE pkg_versions_stable_testing ('%s')" % (self.pkg)
+ _execute_udd_query(query)
+ if curs.rowcount > 0:
+ prefix = 'Versions: '
+ for row in RowDictionaries(curs):
+ self.properties['stable_testing_version'].append((row['release'], row['debversion'], row['version'], prefix))
+ prefix = ', '
+
+
+ if has_official == 1:
+ if self.component == 'main':
+ if self.dep_strength == 'Depends' or self.dep_strength == 'Recommends':
+ self.pkgstatus = 'official_high'
+ else:
+ self.pkgstatus = 'official_low'
+ else:
+ self.pkgstatus = 'non-free'
+ else:
+ self.pkgstatus = 'experimental'
+
+
+ if self.properties.has_key('source'):
+ query = "EXECUTE src_vcs ('%s')" % (self.properties['source'])
+ _execute_udd_query(query)
+ if curs.rowcount > 0:
+ # There is only one line returned by this query
+ row = RowDictionaries(curs)[0]
+ # If some information about Vcs is found in the database make sure it is ignored from tasks file
+ self.vcs_found = 1
+ for prop in row.keys():
+ if row[prop]:
+ self.properties[prop] = row[prop]
+ if not self.properties.has_key('vcs-browser') or self.properties['vcs-browser'] == HOMEPAGENONE:
+ try:
+ self.properties['vcs-browser'] = BrowserFromVcsURL(self.properties['vcs-type'], self.properties['vcs-url'])
+ except KeyError, err:
+ logger.warning("Vcs Property missing in Database:", self.properties, err)
+ if not self.properties.has_key('vcs-type') or not self.properties['vcs-type']:
+ if self.properties.has_key('vcs-browser') and self.properties['vcs-browser'] != HOMEPAGENONE:
+ self.properties['vcs-type'] = VcsTypeFromBrowserURL(self.properties['vcs-browser'])
+ # We are only interested in source packages (for instance for Bugs page)
+ if source == 1:
+ self.pkg = self.properties['source']
+ # Stop using source package in self.pkg because we need the source package to obtain latest uploaders and
+ # and bugs should be rendered in the same job - so we need the differentiation anyway
+ self.src = self.properties['source']
+ else:
+ logger.error("Failed to obtain source for package", self.pkg)
+ return
+
+ if source == 0: # If we are querying for source packages to render BTS pages
+ # tranlations are irrelevant - so only obtain ddtp translations
+ # otherwise
+
+######################
if flag == 0:
# If there was no such package found query UDD whether any package provides this name
# This is often the case for libraries with versions in the package name
query = "EXECUTE query_provides ('%s')" % (dep.pkg)
- curs.execute(query)
+ _execute_udd_query(query)
if curs.rowcount > 0:
has_expilicite = 0
VirtProvides = []
@@ -1478,7 +1880,7 @@ class TaskDependencies:
if has_expilicite == 1:
logger.error("Do not keep a record of virtual package %s which has explicite package dependencies" % dep.pkg)
# ATTENTION: THIS HAS TO BE CHANGED FOR blends-dev BY AN OPTIONAL parameter
- continue
+# continue
logger.error("Use real package %s instead of virtual package %s." % (VirtProvides[0], dep.pkg))
dep.pkg = VirtProvides[0]
@@ -1503,20 +1905,6 @@ class TaskDependencies:
else:
logger.warning("Dependency with unknown status: %s (Task %s)" % (dep.pkg, dep.taskname))
- tmp_dep_list.append(dep)
- # remarks which are common to several dependencies in a list have to be added to all of the dependencies
- for dep in tmp_dep_list:
- if remark != {}:
- dep.remark = remark
- if fields_obsolete != [] and dep.pkgstatus != 'new':
- logger.info("Package %s is an official package and has information in UDD. The following extra information can be removed from tasks file %s: %s" % \
- (dep.pkg, dep.taskname, str(fields_obsolete)))
- if dep.desc['en'] == {}:
- logger.error("Missing description for package %s in task %s. This package will be ignored completely." % (dep.pkg, dep.taskname))
- else:
- self._AppendDependency2List(dep, source)
-
- f.close()
for dependency in self.dependencies.keys():
self.dependencies[dependency].sort()
@@ -1530,7 +1918,11 @@ class TaskDependencies:
dep.responsible = MarkupString(dep.responsible, dep.pkg, 'responsible')
if dep.desc['en'] != {}:
dep.desc['en']['short'] = MarkupString(dep.desc['en']['short'], dep.pkg, 'pkgShortDesc')
- dep.desc['en']['long'] = MarkupString(dep.desc['en']['long'], dep.pkg, 'pkgLongDesc')
+ try:
+ dep.desc['en']['long'] = MarkupString(dep.desc['en']['long'], dep.pkg, 'pkgLongDesc')
+ except KeyError:
+ logger.error("Dep has no English long description: %s", dep.pkg)
+ dep.desc['en']['long'] = "??? Missing long description for package %s" % dep.pkg
def __str__(self):
ret = "Blend: " + self.blendname + ", " \
@@ -1595,10 +1987,10 @@ SEVERITIES = ('critical', 'grave', 'serious', 'important', 'normal', 'minor', 'w
# For the moment just query for the highest available version of the description
query = """PREPARE bugs_query_source (text) AS
SELECT id, package, source, status, severity, done, title FROM bugs WHERE source = $1"""
-curs.execute(query)
+_execute_udd_query(query)
query = """PREPARE bugs_query_tags (int) AS SELECT tag FROM bugs_tags WHERE id = $1"""
-curs.execute(query)
+_execute_udd_query(query)
class BugEntry:
# Define a separate class for bug entries to be able to define a reasonably sorting mechanism
@@ -1614,7 +2006,7 @@ class BugEntry:
self.severity = bug['severity']
query = "EXECUTE bugs_query_tags (%i)" % self.bug
- curs.execute(query)
+ _execute_udd_query(query)
self.tags = ''
if curs.rowcount > 0:
@@ -1674,7 +2066,7 @@ class PackageBugsOpenAndDone:
bugs = None
query = "EXECUTE bugs_query_source ('%s')" % source
- curs.execute(query)
+ _execute_udd_query(query)
if curs.rowcount > 0:
for bug in RowDictionaries(curs):
diff --git a/webtools/blendstasktools.py b/webtools/blendstasktoolsold.py
similarity index 96%
copy from webtools/blendstasktools.py
copy to webtools/blendstasktoolsold.py
index fffbc00..16c4e8b 100644
--- a/webtools/blendstasktools.py
+++ b/webtools/blendstasktoolsold.py
@@ -35,7 +35,7 @@ from genshi import Markup
# from genshi.input import HTML
from blendsmarkdown import SplitDescription, MarkupString, render_longdesc
-from debian_bundle import deb822
+from debian import deb822
from blendsunicode import to_unicode
import logging
@@ -240,7 +240,7 @@ curs = conn.cursor()
query = """PREPARE query_pkg (text) AS SELECT
distribution, component, version, architecture, maintainer,
source, section, task, distribution, release, component, homepage,
- description, long_description FROM packages
+ description FROM packages
WHERE package = $1 ORDER BY version"""
curs.execute(query)
@@ -316,12 +316,6 @@ query = """PREPARE src_vcs (text) AS
ORDER BY version desc LIMIT 1"""
curs.execute(query)
-# Obtain description in foreign language from DDTP project if available
-# For the moment just query for the highest available version of the description
-query = """PREPARE ddtp_description (text) AS
- SELECT language, description, long_description, version FROM DdtpLanguageMaxVersion($1)"""
-curs.execute(query)
-
# Obtain popcon data:
# inst : number of people who installed this package;
# * vote : number of people who use this package regularly;
@@ -711,7 +705,7 @@ class DependantPackage:
for prop in PROPERTIES:
self.properties[prop] = row[prop]
self.desc['en']['short'] = MarkupString(to_unicode(row['description']), self.pkg, 'ShortDesc')
- self.desc['en']['long'] = Markup(render_longdesc(to_unicode(row['long_description']).splitlines()))
+ self.desc['en']['long'] = 'unused'
(_name, _url) = email.Utils.parseaddr(row['maintainer'])
self.properties['maintainer'] = to_unicode(row['maintainer'])
self.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
@@ -764,18 +758,6 @@ class DependantPackage:
except UnicodeDecodeError, err:
logger.error("Failed to compare changed with maintainer - assume both are the same for package %s (%s)", self.pkg, err)
- if source == 0: # If we are querying for source packages to render BTS pages
- # tranlations are irrelevant - so only obtain ddtp translations
- # otherwise
- query = "EXECUTE ddtp_description ('%s')" % (self.pkg)
- curs.execute(query)
-
- for row in RowDictionaries(curs):
- lang = row['language']
- self.desc[lang] = {}
- self.desc[lang]['short'] = MarkupString(to_unicode(row['description']), self.pkg, 'ShortDesc - ' + lang)
- self.desc[lang]['long'] = Markup(render_longdesc(to_unicode(row['long_description']).splitlines()))
-
query = "EXECUTE query_check_enhances ('%"+self.pkg+"%')"
curs.execute(query)
@@ -1171,35 +1153,6 @@ class TaskDependencies:
(_name, _url) = email.Utils.parseaddr(row['maintainer'])
self.responsible = '<a href="mailto:%s">%s</a>' % (_url, to_unicode(_name))
- # if an English description was found chances are good that we are seeking for other languages
- # as well
- if source == 0: # If we are querying for source packages to render BTS pages
- # tranlations are irrelevant - so only obtain ddtp translations
- # otherwise
- query = "EXECUTE ddtp_description ('%s')" % (self.metapkg.pkg)
- curs.execute(query)
-
- for row in RowDictionaries(curs):
- lang = row['language']
- self.metapkg.desc[lang] = {}
- try:
- short = to_unicode(row['description'])
- self.metapkg.desc[lang]['short'] = MarkupString(to_unicode(short), \
- self.metapkg.PrintedName, 'taskShortDesc - ' + lang)
- except UnicodeEncodeError, err:
- logger.error("===> UnicodeDecodeError in metapackage %s (lang='%s'): '%s'; ErrTxt: %s" % \
- (self.metapkg.pkg, lang, row['description'], err))
- short = to_unicode(row['description'],'latin1')
- self.metapkg.desc[lang]['short'] = MarkupString(short, \
- self.metapkg.PrintedName, 'taskShortDesc - ' + lang)
-
- try:
- self.metapkg.desc[lang]['long'] = Markup(render_longdesc(to_unicode(row['long_description']).splitlines()))
- except UnicodeDecodeError, err:
- logger.error("===> UnicodeDecodeError in metapackage long %s (lang='%s'): '%s'; ErrTxt: %s" % \
- (self.metapkg.pkg, lang, row['long_description'], err))
- self.metapkg.desc[lang]['long'] = 'UnicodeDecodeError'
-
continue
if key == 'Meta-Depends':
self.metadepends = stanza['meta-depends']
diff --git a/webtools/bugs.py b/webtools/bugs.py
index f2b23d8..e512167 100755
--- a/webtools/bugs.py
+++ b/webtools/bugs.py
@@ -11,7 +11,7 @@ from email.Utils import formatdate
from genshi.template import TemplateLoader
from genshi import Markup
-from blendstasktools import Tasks, ReadConfig, PackageBugsOpenAndDone, \
+from blendstasktoolsold import Tasks, ReadConfig, PackageBugsOpenAndDone, \
DEPENDENT, SUGGESTED, DONE, BUGLISTCAT, SEVERITIES, HOMEPAGENONE
if len(argv) <= 1:
diff --git a/webtools/po/blends-webtools.pot b/webtools/po/blends-webtools.pot
new file mode 100644
index 0000000..7e07072
--- /dev/null
+++ b/webtools/po/blends-webtools.pot
@@ -0,0 +1,328 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Debian Pure Blends Team <debian-custom at lists.debian.org>
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: blends-webtools 0.1.1\n"
+"Report-Msgid-Bugs-To: debian-custom at lists.debian.org\n"
+"POT-Creation-Date: 2011-02-06 22:26+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid ""
+"For a better overview of the project's availability as a Debian package, "
+"each head row has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid ""
+"If you discover a project which looks like a good candidate for %s\n"
+" to you, or if you have prepared an unofficial "
+"Debian package, please do not hesitate to\n"
+" send a description of that project to the <a "
+"href=\"mailto:%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid ""
+"The list to the right includes various software projects which are of some "
+"interest to the %s Project. Currently, only a few of them are available as "
+"Debian packages. It is our goal, however, to include all software in %s "
+"which can sensibly add to a high quality Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid ""
+"Popularitycontest results: number of people who use this package regularly "
+"(number of people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid ""
+"A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+"a set of packages that might help users to solve certain tasks of their "
+"work. The list on\n"
+"the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid ""
+"Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid ""
+"A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+"a set of packages that might help users to solve certain tasks of their "
+"work. This page should be helpful\n"
+"to track down the bugs of packages that are interesting for the %s project "
+"to enable developers a quick\n"
+"overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid ""
+"This is a list of metapackages. The links are leading to the respective "
+"bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid ""
+"To estimate the overall status of the packages in the dependencies of\n"
+"a metapackage a weighted severity is calculated. Done bugs are ignored and "
+"bugs in dependent and\n"
+"recommended packages are weighted by factor three compared to suggested "
+"packages. Release critical\n"
+"bugs have a much larger weight than important, while the contribution of "
+"normal bugs is even smaller\n"
+"and minor bugs have a very small weight. Wishlist bugs are ignored in this "
+"calculation. The resulting\n"
+"sum is compared to some boundaries to find a verbal form. The actual "
+"numbers need some adjustment\n"
+"to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid ""
+"Immediately looking into bugs of the dependencies of this metapackage is "
+"advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr""
diff --git a/webtools/po/cs.po b/webtools/po/cs.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/cs.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/da.po b/webtools/po/da.po
new file mode 100644
index 0000000..6a1198d
--- /dev/null
+++ b/webtools/po/da.po
@@ -0,0 +1,611 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2008 Debian Pure Blends Team <debian-custom at lists.debian.org>
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr "Project-Id-Version: blends-webtools 0.1.1\n"
+ "Report-Msgid-Bugs-To: debian-custom at lists.debian.org\n"
+ "POT-Creation-Date: 2011-02-06 22:26+0100\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL at li.org>\n"
+ "Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
+
+#~ msgid "Hello world"
+#~ msgstr "Hej verden"
diff --git a/webtools/po/de.po b/webtools/po/de.po
new file mode 100644
index 0000000..5d5b1ab
--- /dev/null
+++ b/webtools/po/de.po
@@ -0,0 +1,624 @@
+# Translation file for Debian Pure Blends webtools.
+# Copyright (C) 2007, Debian Pure Blends Team <debian-custom at lists.debian.org>
+# This file is distributed under the GNU General Public License v2+.
+# David Paleino <d.paleino at gmail.com>, 2007.
+#
+#, fuzzy
+msgid ""
+msgstr "Project-Id-Version: 0.1\n"
+ "Report-Msgid-Bugs-To: debian-custom at lists.debian.org\n"
+ "POT-Creation-Date: 2011-02-06 22:26+0100\n"
+ "PO-Revision-Date: 2011-01-30 23:13:51+0200\n"
+ "Last-Translator: Andreas Tille <tille at debian.org>\n"
+ "Language-Team: German <de at li.org>\n"
+ "Language: de\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+#: tasks.py:90
+msgid "License"
+msgstr "Lizenz"
+
+#: tasks.py:91
+msgid "Version"
+msgstr "Version"
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr "Zuletzt aktualisiert:"
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr "Debianpaket nicht verfügbar"
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr "Um einen besseren Überblick über die Verfügbarkeit der Projekte als Debian Paket zu "
+ "geben, hat jede Kopfzeile einen Farbcode entsprechend diesem Schema:"
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr "Wenn Sie ein Projekt entdecken, das ein guter Kandidat für %s zu sein scheint, oder wenn "
+ "Sie ein inoffizielles Debianpaket erstellt haben, zögern Sie bitte nicht eine "
+ "Beschreibung des Projekts an die <a href=\"mailto:%s\">%s Mailingliste</a> zu schicken."
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr "Die Liste auf der rechten Seite enthält verschiedene Softwareprojekte, die für das %s "
+ "Projekt von Interesse sind. Derzeit sind nur einige von diesen als Debianpakete "
+ "verfügbar. Zielsetzung ist es jedoch, all die Software für %s zu paketieren, um einen "
+ "qualitativ hochwertiges Debian Pure Blend (interne Anpassung von Debian an spezielle "
+ "Bedürfnisse) zu erstellen."
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr "Aufgaben Seite"
+
+#: tasks.py:103
+msgid "Project"
+msgstr "Projekt"
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr "Dies ist die Liste der Aufgaben des %s Projekts:"
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr "Diese Seite gibt es auch in den folgenden Sprachen:"
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr "Wie stellt man <a href=\"%s\">die Standardsprache</a> ein"
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr "Homepage nicht verfügbar"
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr "Beschreibung übersetzen"
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr "Korrigiere Übersetzung"
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr "Pupularitätswetbewerbsergebnisse: Anzahl der Nutzer, die das Paket regelmäßig nutzen "
+ "(Anzahl der Nutzer, die das Paket kürzlich aktualisiert haben) von insgesamt"
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr "Inhaltsverzeichnis"
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr "komplette Paketliste"
+
+#: tasks.py:125
+msgid "Packages"
+msgstr "Pakete"
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr "Ein %sDebian Pure Blend%s ist ein internes Debianprojekt, das einen Satz von Paketen "
+ "zusammenstellt, der Nutzern hilft, bestimmte Aufgaben Ihrer Arbeit zu bewältigen. Die "
+ "Liste rechts zeigt Aufgaben, die durch %s zusammengestellt wurden."
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr "Offizielle Debianpakete mit hoher Relevanz"
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr "Offizielles Debianpaket"
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr "Offizielle Debianpakete mit niedriger Relevanz"
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr "Debianpakete in contrib oder non-free"
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr "Debianpaket in contrib/non-free"
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr "Debianpakete in experimental"
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr "Debianpaket in experimental"
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr "Debianpakete in der New Queue (hoffentlich bald verfügbar)"
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr "Neues Debianpaket"
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr "Paketierung hat begonnen und Entwickler könnten einen Versuch mit dem Code im VCS starten"
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr "Inoffizielles Debianpaket"
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr "Inoffizielle Pakete, die nicht durch das Debian Projekt erstellt wurden"
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr "Keine bekannten Pakete verfügbar"
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr "Keine information über verfügbare Pakete, aber Interesse bekundet (WNPP bug)"
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr "Betreuer"
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr "Verantwortlich"
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr "Links zu Aufgaben"
+
+# # 'anderen' wird hier weggelassen - sonst wird das Layout vermurkst
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr "Index aller Aufgaben"
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr "Arbeitsgebiete"
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr "Arbeitsgebiete Überblick"
+
+#: bugs.py:109
+msgid "Legend"
+msgstr "Legende"
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr "Fehler des Pakets"
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr "Alle Fehler"
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr "Unerledigte Fehler"
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr "Erledigte Fehler"
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr "Ein %sDebian Pure Blend%s ist ein internes Debianprojekt, das einen Satz von Paketen "
+ "zusammenstellt, der Nutzern hilft, bestimmte Aufgabenbereiche Ihrer Arbeit zu "
+ "bewältigen. Diese Seite soll dabei helfen\n"
+ "den Entwicklern des Projekts %s einen schnellen Überblick über mögliche Probleme zu geben."
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr "Fehlerseite"
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr "Unerledigte Fehler"
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr "Hilf uns dabei, Debian für Ärzte und Forscher in der Biomedizin attraktiv zu machen!\n"
+ "Du kannst dem Projekt auf der <a href=\"http://alioth.debian.org/projects/debian-med"
+ "\">Alioth Seite</a> beitreten."
+
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr "Zusammenfassung"
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr "Bugs des Pakets"
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr "Zuletzt aktualisiert"
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr "Diese Seite wird automatisch zweimal am Tag aktualisiert: zu Mitternacht und um Mittag."
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr "Bugs Übersicht"
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr "DDTP Statistiken"
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr "Zusammenfassung des Pakets"
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr "Information"
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr "Entwickler, bitte besucht die"
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr "Debian Med Wiki Seiten"
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr "Das Debian Med Projekt präsentiert Pakete für die<ul><li>Medizin</li><li>Vorklinik</"
+ "li><li>Biowissenschaften.</li></ul> Aktuelle Pakete kommen aus den Bereichen "
+ "<ul><li>Praxisverwaltung</li><li>Bildverarbeitung</li><li>Bioinformatik</li></ul>und von "
+ "jedem Debian-Rechner direkt zu installieren."
+
+#: ../index.php:22
+msgid "warning"
+msgstr "Warnung"
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr "Dein Browser verwendet eine noch nicht berücksichtigte Ländereinstellung.<br />Wenn die "
+ "hierzu benötigten ein bis zwei Stunden irgendwie abzweigbar sind, so hilf uns bitte mit "
+ "einer entsprechenden Übersetzung unserer Seiten. %sHier%s steht wie dies funktioniert."
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr "Besuchen Sie die %sÜbersetzungsseite%s"
+
+#: ../index.php:37
+msgid "pages"
+msgstr "Seiten"
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr "Gruppenrichtlinien"
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr "Gemeldete Probleme"
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr "SVN Repository"
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr "Übersetzung"
+
+#: ../index.php:54
+msgid "members"
+msgstr "Es machen mit"
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr "Administrator"
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr "Entwickler"
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr "Green Wheel"
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr "Grey Wheel"
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr "UTC Zeitzone"
+
+#: ../index.php:107
+msgid "badges"
+msgstr "Bäpperle"
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr "Gültiges XHTML 1.1"
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr "Gültiges CSS 2"
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr "Gerade erst passiert"
+
+#: ../index.php:138
+msgid "date"
+msgstr "Datum"
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr "Autor"
+
+#: ../index.php:140
+msgid "content"
+msgstr "Inhalt"
+
+#: ../index.php:141
+msgid "link"
+msgstr "Link"
+
+#: ../index.php:170
+msgid "todo"
+msgstr "Zu tun"
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr "Die Gemeinschaft betreibt diese Webseite gemeinsam über einen SVN server. Dies mag "
+ "mitunter Schwierigkeiten hervorrufen, dafür sind wir immer aktuell."
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr "Spracheinstellung"
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr "Priorität"
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr "Mehr Informationen dazu, wie Du dem Projekt zuarbeiten kannst, können auf der Seite %sHow "
+ "to Contribute%s abgerufen werden."
+
+#: ../locales.php:41
+msgid "localization"
+msgstr "Übersetzung"
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr "Dezeit gewählte Sprache"
+
+#: ../locales.php:48
+msgid "locale"
+msgstr "locale"
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr "Status der Übersetzung"
+
+#: ../locales.php:51
+msgid "team"
+msgstr "Team"
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr "Füge neue Sprache hinzu"
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr "Die Liste auf der rechten Seite enthält verschiedene Softwareprojekte, die für das Debian-"
+ "Med Projekt von Interesse sind."
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr "Derzeit sind noch nicht alle als Debian-Paket verfügbar."
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr "Es ist jedoch unser Ziel, diese Software in Debian Med zu integrieren, um eine qualitativ "
+ "hochwertige Debian Pure Blend zu erstellen."
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr "Wenn Sie ein Projekt entdecken, das ein guter Kandidat für Debian Med zu sein scheint, "
+ "oder wenn Sie ein inoffizielles Debianpaket erstellt haben, zögern Sie bitte nicht eine "
+ "Beschreibung des Projekts an die %sDebian Med Mailingliste%s zu schicken."
+
+#
+# These strings are manually added, they
+# come from inside the update-bugs Python
+# script
+#
+# Please keep the static.pot file.
+#
+msgid "Subject"
+msgstr "Betreff"
+
+msgid "Sender"
+msgstr "Von"
+
+msgid "Tags"
+msgstr "Tags"
+
+msgid "Date"
+msgstr "Datum"
+
+msgid "Severity"
+msgstr "Schweregrad"
+
+msgid "Found in"
+msgstr "Bezug auf"
+
+msgid "Fixed in"
+msgstr "Behoben in"
+
+msgid "translation not available"
+msgstr "Keine Übersetzung verfügbar"
+
+msgid "yes"
+msgstr "ja"
+
+msgid "translated"
+msgstr "übersetzt"
+
+msgid "edit"
+msgstr "bearbeiten"
+
+msgid "edit translation"
+msgstr "bearbeite Übersetzung"
+
+msgid "untranslated"
+msgstr "unübersetzt"
+
+msgid "Please follow the link below to start translating"
+msgstr "Bitte folge dem unten angegebenen Link, um eine erste Übersetzung einzugeben."
diff --git a/webtools/po/es.po b/webtools/po/es.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/es.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/fi.po b/webtools/po/fi.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/fi.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/fr.po b/webtools/po/fr.po
new file mode 100644
index 0000000..b0fcad1
--- /dev/null
+++ b/webtools/po/fr.po
@@ -0,0 +1,629 @@
+# translation of messages.po to français
+# Translation file for Debian Pure Blends webtools.
+# Copyright (C) 2008, Debian Pure Blends Team <debian-custom at lists.debian.org>
+# This file is distributed under the GNU General Public License v2+.
+#
+# David Paleino <d.paleino at gmail.com>, 2007.
+# Charles Plessy <charles-debian-nospam at plessy.org>, 2007.
+# Eric Maeker <eric.maeker at gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: messages\n"
+"Report-Msgid-Bugs-To: debian-custom at lists.debian.org\n"
+"POT-Creation-Date: 2011-02-06 22:26+0100\n"
+"PO-Revision-Date: 2012-07-24 23:00+0100\n"
+"Last-Translator: Eric Maeker <eric.maeker at gmail.com>\n"
+"Language-Team: français <fr at li.org.example>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: tasks.py:90
+msgid "License"
+msgstr "Licence"
+
+#: tasks.py:91
+msgid "Version"
+msgstr "Version"
+
+#: tasks.py:92
+#: bugs.py:114
+msgid "Summary"
+msgstr "Résumé"
+
+#: tasks.py:93
+#: bugs.py:123
+msgid "Last update:"
+msgstr "Dernière mise à jour :"
+
+#: tasks.py:94
+#: tasks.py:150
+msgid "Debian package not available"
+msgstr "Paquet Debian indisponible"
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row has a color code according to this scheme:"
+msgstr "Pour un meilleur aperçu de la disponibilité du projet comme paquet Debian, toutes les entêtes ont un code couleur selon le schéma suivant :"
+
+#: tasks.py:97
+#, python-format
+msgid ""
+"If you discover a project which looks like a good candidate for %s\n"
+" to you, or if you have prepared an unofficial Debian package, please do not hesitate to\n"
+" send a description of that project to the <a href=\"mailto:%s\">%s mailing list</a>"
+msgstr ""
+"Si vous découvrez un projet qui pourrait être un bon candidat pour %s,\n"
+" ou si vous avez préparé un paquet non officiel pour Debian, n'hésitez pas à\n"
+" nous envoyer une description de ce projet sur <a href=\"mailto:%s\">la liste de diffusion %s</a>"
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to the %s Project. Currently, only a few of them are available as Debian packages. It is our goal, however, to include all software in %s which can sensibly add to a high quality Debian Pure Blend."
+msgstr "La liste de droite comprend divers projets logiciels qui sont d'un certain intérêt au projet %s. Actuellement, seuls quelques-uns d'entre eux sont disponibles sous forme de paquets Debian. Notre objectif est d'inclure tous les logiciels dans %s, qui peuvent raisonnablement participer à un Debian Pure Blend de haute qualité."
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr "Page des tâches"
+
+#: tasks.py:103
+msgid "Project"
+msgstr "Projet"
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr "Ceci est la liste des tâches dont est constitué %s :"
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr "Cette page est aussi disponible dans les langages suivants :"
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr "Comment définir la <a href=\"%s\">langue par défaut de ce document</a>"
+
+#: tasks.py:108
+#: bugs.py:262
+msgid "Homepage not available"
+msgstr "Page d'accueil indisponible"
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr "Traduire la description"
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr "Corriger la traduction de la description"
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of people who upgraded this package recently) out of"
+msgstr "Résultats de popularité : nombre de personnes qui utilisent régulièrement ce paquet (nombre de personnes qui ont mis à jour ce paquet récemment) sur"
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr "Table des matières"
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr "list complète des paquets"
+
+#: tasks.py:125
+msgid "Packages"
+msgstr "Paquets"
+
+#: tasks.py:126
+#, python-format
+msgid ""
+"A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+"a set of packages that might help users to solve certain tasks of their work. The list on\n"
+"the right shows the tasks of %s."
+msgstr ""
+"Un %sDebian Pure Blend%s est un projet Debian interne qui assemble \n"
+"un ensemble de paquets qui pourraient aider les utilisateurs à résoudre certaines tâches de leur travail. La liste de \n"
+"de droite montre les tâches de %s."
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr "Paquets Debian officiels avec une haute priorité"
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr "Paquet Debian officiel"
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr "Paquets Debian officiels avec une faible priorité"
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr "Paquets Debian dans contrib ou non-free"
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr "Paquet Debian dans contrib ou non-free"
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr "Paquets Debian dans experimental"
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr "Paquet Debian dans experimental"
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr "Paquet Debian dans la file d'attente des nouveaux (on l'espère bientôt disponible)"
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr "Nouveau paquet Debian"
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr "Construction du paquet débuté, les développeurs peuvent tester le code de construction sur le gestionnaire de version"
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr "Paquet non-officiel de Debian"
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr "Paquet non-officiel construit par quelqu'un d'autre"
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr "Pas de paquet connu disponible"
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr "Pas de paquet disponible mais un intérêt signalé (bogue WNPP)"
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr "Mainteneur"
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr "Responsable"
+
+#: tasks.py:224
+#: bugs.py:106
+msgid "Links to other tasks"
+msgstr "Liens vers les autres tâches"
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr "Index de toutes les tâches"
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr "Tâches"
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr "Aperçu des tâches"
+
+#: bugs.py:109
+msgid "Legend"
+msgstr "Légende"
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr "Bogues du paquet"
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr "Bogues totaux"
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr "Bogues ouverts"
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr "Bogues corrigés"
+
+#: bugs.py:115
+#, python-format
+msgid ""
+"A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+"a set of packages that might help users to solve certain tasks of their work. This page should be helpful\n"
+"to track down the bugs of packages that are interesting for the %s project to enable developers a quick\n"
+"overview about possible problems."
+msgstr ""
+"Un %sDebian Pure Blend%s est un projet Debian interne qui assemble \n"
+"un ensemble de paquets qui pourraient aider les utilisateurs à résoudre certaines tâches de leur travail. Cette page peut être utile \n"
+"pour traquer les bogues de paquets qui sont intéressants pour le projet %s et pour permettre aux développeurs un aperçu rapide sur les problèmes éventuels."
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr "Page des bogues"
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr "Ceci est une liste de méta-paquets. Les liens mènent vers la page des bogues correspondante."
+
+#: bugs.py:124
+msgid ""
+"To estimate the overall status of the packages in the dependencies of\n"
+"a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in dependent and\n"
+"recommended packages are weighted by factor three compared to suggested packages. Release critical\n"
+"bugs have a much larger weight than important, while the contribution of normal bugs is even smaller\n"
+"and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. The resulting\n"
+"sum is compared to some boundaries to find a verbal form. The actual numbers need some adjustment\n"
+"to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr "La sévérité des bogues est pondéré comme suit"
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr "Méta-paquet en excellente forme"
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr "Méta-paquet en très bonne forme"
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr "Méta-paquet en bonne forme"
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr "Pensez à vérifier les bogues de ce méta-paquet"
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr "Vérifier les bogues de ce méta-paquet est recommandé"
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr "Vérification immédiate des bogues des dépendances de méta-paquet est conseillé"
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr "Bogues ouverts dans les paquets dépendants"
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr "Bogues ouverts dans les paquets suggérés"
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr "Bogues résolus"
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr "Pas de bogues ouvert dans les paquets dépendants"
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr "Pas de bogues ouvert dans les paquets suggérés"
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr "Pas de bogues résolus"
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr "Non maintenu dans un gestionnaire de version"
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr "Gestionnaire de version"
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr "Aidez-nous à montrer Debian utilisé par des médecins et les chercheurs bio-médicaux ! Rejoignez-nous sur le <a href=\"http://alioth.debian.org/projects/debian-med\">site d'Alioth</a>."
+
+#: ../bug_details.tmpl:8
+#: ../bugs.tmpl:7
+#: ../ddtp.tmpl:7
+#: ../ddtp_details.tmpl:8
+#: ../locales.php:7
+#: ../tasks.tmpl:8
+#: ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr "résumé"
+
+#: ../bug_details.tmpl:12
+#: ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr "Bogues pur le paquet"
+
+#: ../bug_details.tmpl:40
+#: ../bugs.tmpl:66
+#: ../ddtp.tmpl:30
+#: ../ddtp_details.tmpl:34
+#: ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr "Dernière mise à jour"
+
+#: ../bug_details.tmpl:41
+#: ../bugs.tmpl:67
+#: ../ddtp.tmpl:31
+#: ../ddtp_details.tmpl:35
+#: ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr "Notez que cette page est automatiquement mise à jour deux fois par jour, à 00:00 et 12:00 UTC"
+
+#: ../bugs.tmpl:19
+#: ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr "Page résumé des bogues"
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr "Statistiques DDTP"
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr "Résumé pour la paquet"
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the %sAlioth page%s."
+msgstr "Aidez-nous à montrer Debian utilisé par des médecins et les chercheurs bio-médicaux ! Rejoignez-nous sur le %ssite d'Alioth%s."
+
+#: ../index.php:7
+msgid "information"
+msgstr "Information"
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr "Développeurs, visitez notre"
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr "page Wiki"
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</li><li>bioinformatics</li></ul>and can be installed directly from every Debian installation."
+msgstr "Le projet Debian Med propose des paquets relatifs<ul><li>à la médecine ;</li><li>à la recherche pré-clinique ;</li><li>aux sciences de la vie.</li></ul> Son activité se concentre en ce moment dans trois domaines ;<ul><li>la pratique médicale ;</li><li>l'imagerie ;</li><li>la bio-informatique.</li></ul>"
+
+#: ../index.php:22
+msgid "warning"
+msgstr "attention"
+
+#: ../index.php:24
+#: ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br />If you can spare one to two hours then please consider to help us in translating our pages for your people, too. Instructions are found %shere%s."
+msgstr "Votre navigateur utilise les paramètres de langue pour lequel nous ne pouvons pas encore de fournir des traductions.<br />Si vous pouvez participer une à deux heures vous pouvez nous aider à traduire nos pages pour votre peuple. Les instructions se trouvent %sici%s."
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr "Visitez la <q>%sLocalization page%s</q>"
+
+#: ../index.php:37
+msgid "pages"
+msgstr "Liens"
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr "Politique du groupe"
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr "Suivi des bogues"
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr "Assurance de la qualité"
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr "projet de traduction de descriptions de Debian — DDTP"
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr "Tâches pour notre Blend"
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr "Dépôt SVN"
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr "Localisations"
+
+#: ../index.php:54
+msgid "members"
+msgstr "Membres"
+
+#: ../index.php:72
+#: ../index.php:92
+msgid "Project Administrator"
+msgstr "Administrateur"
+
+#: ../index.php:77
+#: ../index.php:96
+msgid "Project Developer"
+msgstr "Développeur du projet"
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr "Roue Verte"
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr "Roue Grise"
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr "Date (UTC)"
+
+#: ../index.php:107
+msgid "badges"
+msgstr "badges"
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr "XHTML 1.1 valide"
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr "Valide CSS 2"
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr "Infrastructure non propriétaire de Berkeley dédiée au calcul en réseau (BOINC)"
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr "activité récente"
+
+#: ../index.php:138
+msgid "date"
+msgstr "Date"
+
+#: ../index.php:139
+#: ../locales.php:50
+msgid "author"
+msgstr "Auteur"
+
+#: ../index.php:140
+msgid "content"
+msgstr "Contenu"
+
+#: ../index.php:141
+msgid "link"
+msgstr "Lien"
+
+#: ../index.php:170
+msgid "todo"
+msgstr "À faire"
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr "Ce site est directement synchronisé avec notre dépôt Subversion ; il peut y avoir des dysfonctionnements pendant les mises à jours."
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr "Langue utilisée"
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr "Priorité"
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the %sHow to Contribute%s page."
+msgstr "Vous pouvez trouver plus d'information sur les moyens de participer à Debian Med dans la page <q>%sHow to Contribute%s</q>."
+
+#: ../locales.php:41
+msgid "localization"
+msgstr "localisation"
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr "Localisations disponibles"
+
+#: ../locales.php:48
+msgid "locale"
+msgstr "localisation"
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr "état de la traduction"
+
+#: ../locales.php:51
+msgid "team"
+msgstr "équipe"
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr "Ajouter une nouvelle localisation"
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to the Debian Med Project."
+msgstr "La liste de droite comprend divers projets logiciels qui sont de quelque intérêt pour le projet Debian Med."
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr "Actuellement, seuls quelques-uns d'entre eux sont disponibles sous la forme de paquets Debian."
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to a high quality Debian Pure Blend."
+msgstr "Notre objectif est d'inclure tous les logiciels dans Debian Med qui peuvent raisonnablement participer à un Debian Pure Blend de haute qualité."
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if you have prepared an inofficial Debian package, please do not hesitate to send a description of that project to the %sDebian Med mailing list%s"
+msgstr "Si vous découvrez un projet qui pourrait être un bon candidat pour Debian Med, ou si vous avez préparé un paquet non officiel pour Debian, n'hésitez pas à nous envoyer une description de ce projet sur %sla liste de diffusion%s"
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr "Sujet"
+
+msgid "Sender"
+msgstr "Expéditeur"
+
+msgid "Tags"
+msgstr "Étiquettes"
+
+msgid "Date"
+msgstr "Date"
+
+msgid "Severity"
+msgstr "Sévérité"
+
+msgid "Found in"
+msgstr "Trouvé dans"
+
+msgid "Fixed in"
+msgstr "Corrigé dans"
+
+msgid "translation not available"
+msgstr "traduction indisponible"
+
+msgid "yes"
+msgstr "oui"
+
+msgid "translated"
+msgstr "traduit"
+
+msgid "edit"
+msgstr "éditer"
+
+msgid "edit translation"
+msgstr "éditer la traduction"
+
+msgid "untranslated"
+msgstr "non traduit"
+
+msgid "Please follow the link below to start translating"
+msgstr "Veuillez suivre le lien suivant pour commencer à traduire"
+
+#, fuzzy
+#~ msgid "Packaging Vcs"
+#~ msgstr "Liens"
+
+#, fuzzy
+#~ msgid "QA page"
+#~ msgstr "Liens"
+
+#~ msgid "Locales page"
+#~ msgstr "Localisation"
+
+#~ msgid "Join us! Help us in making Doctors use Debian! See the %sAlioth page%s."
+#~ msgstr "Rejoignez-nous ! Pour nous aider à populariser Debian dans le monde "
+#~ "médical, voyez la page <q>%sAlioth page%s</q>"
diff --git a/webtools/po/it.po b/webtools/po/it.po
new file mode 100644
index 0000000..db1f06c
--- /dev/null
+++ b/webtools/po/it.po
@@ -0,0 +1,699 @@
+# Translation file for Debian Pure Blends webtools.
+# Copyright (C) 2007, Debian Pure Blends Team <debian-custom at lists.debian.org>
+# This file is distributed under the GNU General Public License v2+.
+# David Paleino <d.paleino at gmail.com>, 2007.
+#
+#, fuzzy
+msgid ""
+msgstr "Project-Id-Version: 0.1\n"
+ "Report-Msgid-Bugs-To: debian-custom at lists.debian.org\n"
+ "POT-Creation-Date: 2011-02-06 22:26+0100\n"
+ "PO-Revision-Date: 2008-02-17 13:30+0100\n"
+ "Last-Translator: David Paleino <d.paleino at gmail.com>\n"
+ "Language-Team: Italian <it at li.org>\n"
+ "Language: it\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+#, fuzzy
+msgid "Version"
+msgstr "Revisione"
+
+#: tasks.py:92 bugs.py:114
+#, fuzzy
+msgid "Summary"
+msgstr "riassunto"
+
+#: tasks.py:93 bugs.py:123
+#, fuzzy
+msgid "Last update:"
+msgstr "Ultimo aggiornamento"
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr "Per una migliore visione d'insieme della disponibilità del progetto come pacchetto "
+ "Debian, ogni riga ha un colore codificato secondo il seguente schema:"
+
+#: tasks.py:97
+#, fuzzy, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr "Se hai trovato un progetto che sembra essere un buon candidato per Debian Med, o se hai "
+ "preparato un pacchetto Debian non ufficiale, non esitare a mandare una descrizione di "
+ "quel progetto alla %smailing list Debian Med%s"
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr "Tasks della Blend"
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+#, fuzzy
+msgid "Homepage not available"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:109
+#, fuzzy
+msgid "Translate description"
+msgstr "Descrizione breve"
+
+#: tasks.py:110
+#, fuzzy
+msgid "Fix translated description"
+msgstr "Descrizione breve"
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+#, fuzzy
+msgid "Packages"
+msgstr "pagine"
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+#, fuzzy
+msgid "Official Debian packages with high relevance"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+#, fuzzy
+msgid "Debian packages in contrib or non-free"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:140
+#, fuzzy
+msgid "Debian package in contrib/non-free"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:141
+#, fuzzy
+msgid "Debian packages in experimental"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:142
+#, fuzzy
+msgid "Debian package in experimental"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:143
+#, fuzzy
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:144
+#, fuzzy
+msgid "New Debian package"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+#, fuzzy
+msgid "No known packages available"
+msgstr "pacchetto Debian non disponibile"
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr "Responsabile"
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+#, fuzzy
+msgid "Tasks"
+msgstr "Tasks della Blend"
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+#, fuzzy
+msgid "Bugs of package"
+msgstr "Bugs per il pacchetto"
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr "Bugs totali"
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr "Bugs aperti"
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr "Bugs risolti"
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+#, fuzzy
+msgid "Bugs page"
+msgstr "Bugs per il pacchetto"
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+#, fuzzy
+msgid "Done bugs"
+msgstr "Bugs aperti"
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+#, fuzzy
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr "Aiutaci a vedere Debian usata dai medici e dai ricercatori! Unisciti a noi sulla %spagina "
+ "Alioth%s."
+
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr "riassunto"
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr "Bugs per il pacchetto"
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr "Ultimo aggiornamento"
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr "Nota che questa pagina viene automaticamente generata due volte al giorno, alle 00:00 e "
+ "alle 12:00 UTC."
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr "Pagina riassunto bug"
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr "Statistiche DDTP"
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr "Riassunto per il pacchetto"
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr "Aiutaci a vedere Debian usata dai medici e dai ricercatori! Unisciti a noi sulla %spagina "
+ "Alioth%s."
+
+#: ../index.php:7
+msgid "information"
+msgstr "informazioni"
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr "Sviluppatori, visitate la nostra"
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr "pagina Wiki"
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr "Il progetto Debian Med presenta pacchetti che sono associati con <ul><li>la medicina</"
+ "li><li>la ricerca pre-clinica</li><li>le scienze della vita.</li></ul> Il suo sviluppo "
+ "è principalmente concentrato su tre aree per il momento: <ul><li>attività "
+ "mediche</li><li>imaging</li><li>bioinformatica</li></ul> e possono essere installati "
+ "direttamente da qualsiasi installazione Debian."
+
+#: ../index.php:22
+msgid "warning"
+msgstr "attenzione"
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr "Il tuo browser utilizza impostazioni di linguaggio per cui non forniamo ancora "
+ "unatraduzione.<br />Se puoi impiegare una o due ore di tempo, allora considera di "
+ "aiutarci nellatraduzione delle pagine per la tua lingua. Puoi trovare le istruzioni %squi"
+ "%s."
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr "Visita la %spagina Localizzazione%s."
+
+#: ../index.php:37
+msgid "pages"
+msgstr "pagine"
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr "Politica del Gruppo"
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr "Bugs"
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr "Controllo Qualità"
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr "Progetto Traduzione Descrizioni Debian"
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr "Tasks della Blend"
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr "Repository SVN"
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr "Localizzazioni"
+
+#: ../index.php:54
+msgid "members"
+msgstr "membri"
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr "Amministratore Progetto"
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr "Sviluppatore Progetto"
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr "Ingranaggio Verde"
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr "Ingranaggio Grigio"
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr "orario UTC"
+
+#: ../index.php:107
+msgid "badges"
+msgstr "medagliette"
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr "XHTML 1.1 Valido"
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr "CSS 2 Valido"
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr "Berkeley Open Infrastructure for Network Computing"
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr "attività recenti"
+
+#: ../index.php:138
+msgid "date"
+msgstr "data"
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr "autore"
+
+#: ../index.php:140
+msgid "content"
+msgstr "contenuto"
+
+#: ../index.php:141
+msgid "link"
+msgstr "link"
+
+#: ../index.php:170
+msgid "todo"
+msgstr "da fare"
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr "Per favore, nota che questo è un export SVN del nostro sito web. Potrebbe avere "
+ "dei problemi durante gli aggiornamenti."
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr "Locale attuale"
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr "Priorità"
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr "Maggiori informazioni su come contribuire al progetto Debian Med possono essere trovate "
+ "nella pagina %sCome contribuire%s."
+
+#: ../locales.php:41
+msgid "localization"
+msgstr "localizzazione"
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr "Locale attualmente installati"
+
+#: ../locales.php:48
+msgid "locale"
+msgstr "locale"
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr "stato traduzione"
+
+#: ../locales.php:51
+msgid "team"
+msgstr "team"
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr "Aggiungi nuovo locale"
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr "L'elenco sulla destra include vari progetti software che sono di qualche interesse al "
+ "Progetto Debian Med."
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr "Attualmente, solo alcuni sono disponibili come pacchetti Debian."
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr "È nostro obiettivo, comunque, includere in Debian Med tutto il software che può "
+ "sensibilmente contribuire a una Debian Pure Blend di qualità."
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr "Se hai trovato un progetto che sembra essere un buon candidato per Debian Med, o se hai "
+ "preparato un pacchetto Debian non ufficiale, non esitare a mandare una descrizione di "
+ "quel progetto alla %smailing list Debian Med%s"
+
+#
+# These strings are manually added, they
+# come from inside the update-bugs Python
+# script
+#
+# Please keep the static.pot file.
+#
+msgid "Subject"
+msgstr "Oggetto"
+
+msgid "Sender"
+msgstr "Mittente"
+
+msgid "Tags"
+msgstr "Tags"
+
+msgid "Date"
+msgstr "Data"
+
+msgid "Severity"
+msgstr "Gravità"
+
+msgid "Found in"
+msgstr "Trovato in"
+
+msgid "Fixed in"
+msgstr "Risolto in"
+
+msgid "translation not available"
+msgstr "traduzione non disponibile"
+
+msgid "yes"
+msgstr "sì"
+
+msgid "translated"
+msgstr "tradotto"
+
+msgid "edit"
+msgstr "modifica"
+
+msgid "edit translation"
+msgstr "modifica traduzione"
+
+msgid "untranslated"
+msgstr "non tradotto"
+
+msgid "Please follow the link below to start translating"
+msgstr "Per favore segui il link di seguito per iniziare la traduzione"
+
+#, fuzzy
+#~ msgid "Packaging Vcs"
+#~ msgstr "pagine"
+
+#, fuzzy
+#~ msgid "Debian packaging files in Vcs"
+#~ msgstr "pacchetto Debian non disponibile"
+
+#, fuzzy
+#~ msgid "Green: The project is <a href=\"#official-debs\">available as an official Debian "
+#~ "package</a>"
+#~ msgstr "Verde: Il progetto è %sdisponibile come pacchetto Debian ufficiale%s"
+
+#, fuzzy
+#~ msgid "Yellow: The project is <a href=\"#unofficial-debs\">available in experimental, as "
+#~ "an unofficial Debian package or has packaging files in Vcs</a>"
+#~ msgstr "Giallo: Il progetto è %sdisponibile come pacchetto Debian non ufficiale%s"
+
+#, fuzzy
+#~ msgid "Red: The project is <a href=\"#prospective-debs\">not (yet) available as a Debian "
+#~ "package</a>"
+#~ msgstr "Rosso: Il progetto %snon è (ancora) disponibile come pacchetto Debian%s"
+
+#, fuzzy
+#~ msgid "Recommended"
+#~ msgstr "Ricevuto"
+
+#, fuzzy
+#~ msgid "Debian packaging stuff in Vcs"
+#~ msgstr "pacchetto Debian non disponibile"
+
+#, fuzzy
+#~ msgid "Help us to see Debian used by medical practicioners and researchers!\n"
+#~ "Join us on the\n"
+#~ "<a href=\"%s\">Alioth page</a>."
+#~ msgstr "Aiutaci a vedere Debian usata dai medici e dai ricercatori! Unisciti a noi sulla "
+#~ "%spagina Alioth%s."
+
+#~ msgid "QA page"
+#~ msgstr "Controllo di Qualità"
+
+#~ msgid "DDTP page"
+#~ msgstr "Progetto Traduzione delle Descrizioni"
+
+#~ msgid "Locales page"
+#~ msgstr "Localizzazioni"
+
+#~ msgid "Long description"
+#~ msgstr "Descrizione lunga"
+
+#~ msgid "Join us! Help us in making Doctors use Debian! See the %sAlioth page%s."
+#~ msgstr "Unisciti a noi! Aiutaci a diffondere Debian tra i Medici! Guarda la %spagina "
+#~ "Alioth%s."
+
+#~ msgid "Commit Message"
+#~ msgstr "Messaggio di Commit"
+
+#~ msgid "Author"
+#~ msgstr "Autore"
+
+#~ msgid "Modified Files"
+#~ msgstr "File Modificati"
diff --git a/webtools/po/ja.po b/webtools/po/ja.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/ja.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/ko.po b/webtools/po/ko.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/ko.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/nl.po b/webtools/po/nl.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/nl.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/php-message-strings.pot b/webtools/po/php-message-strings.pot
new file mode 100644
index 0000000..b92e9ab
--- /dev/null
+++ b/webtools/po/php-message-strings.pot
@@ -0,0 +1,229 @@
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7 ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112 ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113 ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the %sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid ""
+"The Debian Med project presents packages that are associated with <ul><li>medicine</li><li>pre-clinical research</li><li>life science.</li></ul> "
+"Its developments are mostly focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</li><li>bioinformatics</li></ul>and can "
+"be installed directly from every Debian installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid ""
+"Your browser uses language settings that we could not yet provide translations for.<br />If you can spare one to two hours then please consider to "
+"help us in translating our pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the %sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid ""
+"If you discover a project which looks like a good candidate for Debian Med to you, or if you have prepared an inofficial Debian package, please do "
+"not hesitate to send a description of that project to the %sDebian Med mailing list%s"
+msgstr ""
diff --git a/webtools/po/pl.po b/webtools/po/pl.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/pl.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/pt.po b/webtools/po/pt.po
new file mode 100644
index 0000000..6bb6ebf
--- /dev/null
+++ b/webtools/po/pt.po
@@ -0,0 +1,681 @@
+# Translation file for Debian Pure Blends webtools.
+# Copyright (C) 2007, Debian Pure Blends Team <debian-custom at lists.debian.org>
+# This file is distributed under the GNU General Public License v2+.
+# David Paleino <d.paleino at gmail.com>, 2007.
+# Nelson A. de Oliveira <naoliv at debian.org>, 2007-2008.
+#
+msgid ""
+msgstr "Project-Id-Version: \n"
+ "Report-Msgid-Bugs-To: debian-custom at lists.debian.org\n"
+ "POT-Creation-Date: 2011-02-06 22:26+0100\n"
+ "PO-Revision-Date: 2008-02-10 21:36-0300\n"
+ "Last-Translator: Nelson A. de Oliveira <naoliv at debian.org>\n"
+ "Language-Team: Debian i10n Português <debian-l10n-portuguese at lists.debian.org>\n"
+ "Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+#, fuzzy
+msgid "Version"
+msgstr "Revisão"
+
+#: tasks.py:92 bugs.py:114
+#, fuzzy
+msgid "Summary"
+msgstr "sumário"
+
+#: tasks.py:93 bugs.py:123
+#, fuzzy
+msgid "Last update:"
+msgstr "Última atualização"
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+#, fuzzy
+msgid "Tasks page"
+msgstr "Página de traduções"
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+#, fuzzy
+msgid "Homepage not available"
+msgstr "status das traduções"
+
+#: tasks.py:109
+#, fuzzy
+msgid "Translate description"
+msgstr "Descrição resumida"
+
+#: tasks.py:110
+#, fuzzy
+msgid "Fix translated description"
+msgstr "Descrição resumida"
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+#, fuzzy
+msgid "Packages"
+msgstr "links"
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+#, fuzzy
+msgid "Official Debian packages with high relevance"
+msgstr "status das traduções"
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+#, fuzzy
+msgid "Debian packages in contrib or non-free"
+msgstr "status das traduções"
+
+#: tasks.py:140
+#, fuzzy
+msgid "Debian package in contrib/non-free"
+msgstr "status das traduções"
+
+#: tasks.py:141
+#, fuzzy
+msgid "Debian packages in experimental"
+msgstr "status das traduções"
+
+#: tasks.py:142
+#, fuzzy
+msgid "Debian package in experimental"
+msgstr "status das traduções"
+
+#: tasks.py:143
+#, fuzzy
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr "status das traduções"
+
+#: tasks.py:144
+#, fuzzy
+msgid "New Debian package"
+msgstr "status das traduções"
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+#, fuzzy
+msgid "No known packages available"
+msgstr "status das traduções"
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+#, fuzzy
+msgid "Tasks"
+msgstr "Página de traduções"
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+#, fuzzy
+msgid "Bugs of package"
+msgstr "Bugs do pacote"
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr "Total de bugs"
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr "Bugs abertos"
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr "Bugs corrigidos"
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+#, fuzzy
+msgid "Bugs page"
+msgstr "Bugs do pacote"
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+#, fuzzy
+msgid "Done bugs"
+msgstr "Bugs abertos"
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr "sumário"
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr "Bugs do pacote"
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr "Última atualização"
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr "Nota: esta página é atualizada automaticamente duas vezes ao dia, às "
+ "00:00 e 12:00 UTC."
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr "Sumário da página de bugs"
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr "Estatísticas do DDTP"
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr "Sumário do pacote"
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr "informação"
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr "Desenvolvedores, visitem nossa"
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr "Página Wiki"
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr "O projeto Debian Med disponibiliza pacotes que estão associados com "
+ "<ul><li>medicina</li><li>avaliação pré-clínica</"
+ "li><li>ciência da vida.</li></ul> Seu desenvolvimento é focado em três "
+ "áreas no momento: <ul><li>prática médica</li><li>imagem</"
+ "li><li>bioinformática.</li></ul> e podem ser instalados diretamente à "
+ "partir de qualquer instalação do Debian."
+
+#: ../index.php:22
+msgid "warning"
+msgstr "aviso"
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr "O seu navegador utiliza uma configuração de linguagem para o qual ainda "
+ "não possuímos tradução.<br />Se você dispor de uma ou "
+ "duas horas então, por favor, considere em nos ajudar a traduzir nossas pá"
+ "ginas para a sua língua. Instruções podem ser encontradas em %saqui"
+ "%s."
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr "Visite a %spágina de localização%s."
+
+#: ../index.php:37
+msgid "pages"
+msgstr "links"
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+#, fuzzy
+msgid "Bugs"
+msgstr "Página de bugs"
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+#, fuzzy
+msgid "Localizations"
+msgstr "localização"
+
+#: ../index.php:54
+msgid "members"
+msgstr "membros"
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr "Administrador"
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr "Desenvolvedor"
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr "Engrenagem Verde"
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr "Engrenagem Cinza"
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr "Tempo UTC"
+
+#: ../index.php:107
+msgid "badges"
+msgstr "emblemas"
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr "XHTML 1.1 válido"
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr "CSS 2 válido"
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr "Berkeley Open Infrastructure for Network Computing"
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr "atividade recente"
+
+#: ../index.php:138
+msgid "date"
+msgstr "data"
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr "autor"
+
+#: ../index.php:140
+msgid "content"
+msgstr "conteúdo"
+
+#: ../index.php:141
+msgid "link"
+msgstr "link"
+
+#: ../index.php:170
+msgid "todo"
+msgstr "fazer"
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr "Por favor, note que este site é uma cópia das páginas do nosso SVN. "
+ "Ele pode não funcionar corretamente durante as atualizações."
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr "Localização atual"
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr "Prioridade"
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr "Mais informações sobre como contribuir para o projeto Debian Med podem ser "
+ "encontradas na página %sComo Contribuir%s."
+
+#: ../locales.php:41
+msgid "localization"
+msgstr "localização"
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr "Localizações disponíveis"
+
+#: ../locales.php:48
+msgid "locale"
+msgstr "localização"
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr "status das traduções"
+
+#: ../locales.php:51
+msgid "team"
+msgstr "equipe"
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr "Adicionar nova localização"
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+#, fuzzy
+msgid "Tags"
+msgstr "links"
+
+#, fuzzy
+msgid "Date"
+msgstr "data"
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+#, fuzzy
+msgid "Fixed in"
+msgstr "Bugs corrigidos"
+
+#, fuzzy
+msgid "translation not available"
+msgstr "status das traduções"
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+#, fuzzy
+msgid "edit translation"
+msgstr "status das traduções"
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Packaging Vcs"
+#~ msgstr "links"
+
+#, fuzzy
+#~ msgid "Debian packaging files in Vcs"
+#~ msgstr "status das traduções"
+
+#, fuzzy
+#~ msgid "Recommended"
+#~ msgstr "Recebido"
+
+#, fuzzy
+#~ msgid "Debian packaging stuff in Vcs"
+#~ msgstr "status das traduções"
+
+#, fuzzy
+#~ msgid "QA page"
+#~ msgstr "links"
+
+#~ msgid "DDTP page"
+#~ msgstr "Página do DDTP"
+
+#~ msgid "Locales page"
+#~ msgstr "Página de traduções"
+
+#~ msgid "Long description"
+#~ msgstr "Descrição completa"
+
+#~ msgid "Join us! Help us in making Doctors use Debian! See the %sAlioth page%s."
+#~ msgstr "Junte-se a nós! Ajude-nos a fazer os Médicos utilizarem Debian! "
+#~ "Veja a %spágina do Alioth%s."
+
+#~ msgid "Commit Message"
+#~ msgstr "Mensagem de revisão"
+
+#~ msgid "Author"
+#~ msgstr "Autor"
+
+#~ msgid "Modified Files"
+#~ msgstr "Arquivos modificados"
diff --git a/webtools/po/ru.po b/webtools/po/ru.po
new file mode 100644
index 0000000..f1fc8c4
--- /dev/null
+++ b/webtools/po/ru.po
@@ -0,0 +1,590 @@
+#: tasks.py:90
+msgid "License"
+msgstr ""
+
+#: tasks.py:91
+msgid "Version"
+msgstr ""
+
+#: tasks.py:92 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:93 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:94 tasks.py:150
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:96
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:97
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:"
+ "%s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:101
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:102
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:103
+msgid "Project"
+msgstr ""
+
+#: tasks.py:104
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:105
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:106
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:108 bugs.py:262
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:109
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:110
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:111
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:112
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:113
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:125
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:133
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:136
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:137
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:139
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:140
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:141
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:142
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:143
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:144
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:146
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:147
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:149
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:151
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:200
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:202
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:224 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:225
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:231
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:234
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:237
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:242
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:243
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:246
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:247
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:248
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:263
+msgid "Not maintained in Vcs"
+msgstr ""
+
+#: bugs.py:264
+msgid "Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:13
+msgid "Help us to see Debian used by medical practitioners and biomedical researchers! Join us "
+ "on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the "
+ "%sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the "
+ "%sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/static.pot b/webtools/po/static.pot
new file mode 100644
index 0000000..6590646
--- /dev/null
+++ b/webtools/po/static.pot
@@ -0,0 +1,56 @@
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
+
diff --git a/webtools/po/zh_CN.po b/webtools/po/zh_CN.po
new file mode 100644
index 0000000..b615456
--- /dev/null
+++ b/webtools/po/zh_CN.po
@@ -0,0 +1,590 @@
+#: tasks.py:110
+msgid "License"
+msgstr ""
+
+#: tasks.py:111
+msgid "Version"
+msgstr ""
+
+#: tasks.py:112 bugs.py:114
+msgid "Summary"
+msgstr ""
+
+#: tasks.py:113 bugs.py:123
+msgid "Last update:"
+msgstr ""
+
+#: tasks.py:114 tasks.py:168
+msgid "Debian package not available"
+msgstr ""
+
+#: tasks.py:116
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+#: tasks.py:117
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:%"
+ "s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:121
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:122
+msgid "Tasks page"
+msgstr ""
+
+#: tasks.py:123
+msgid "Project"
+msgstr ""
+
+#: tasks.py:124
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:125
+msgid "This page is also available in the following languages:"
+msgstr ""
+
+#: tasks.py:126
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:128 bugs.py:259
+msgid "Homepage not available"
+msgstr ""
+
+#: tasks.py:129
+msgid "Translate description"
+msgstr ""
+
+#: tasks.py:130
+msgid "Fix translated description"
+msgstr ""
+
+#: tasks.py:131
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr ""
+
+#: tasks.py:132
+msgid "Table of contents"
+msgstr ""
+
+#: tasks.py:133
+msgid "complete packagelist"
+msgstr ""
+
+#: tasks.py:145
+msgid "Packages"
+msgstr ""
+
+#: tasks.py:146
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:153
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:154
+msgid "Official Debian package"
+msgstr ""
+
+#: tasks.py:155
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:157
+msgid "Debian packages in contrib or non-free"
+msgstr ""
+
+#: tasks.py:158
+msgid "Debian package in contrib/non-free"
+msgstr ""
+
+#: tasks.py:159
+msgid "Debian packages in experimental"
+msgstr ""
+
+#: tasks.py:160
+msgid "Debian package in experimental"
+msgstr ""
+
+#: tasks.py:161
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr ""
+
+#: tasks.py:162
+msgid "New Debian package"
+msgstr ""
+
+#: tasks.py:163
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:164
+msgid "Unofficial Debian package"
+msgstr ""
+
+#: tasks.py:165
+msgid "Unofficial packages built by somebody else"
+msgstr ""
+
+#: tasks.py:167
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:169
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:218
+msgid "Maintainer"
+msgstr ""
+
+#: tasks.py:220
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:242 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:243
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:219
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:231
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:234
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:239
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:240
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:241
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:243
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:245
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:260
+msgid "Package seems not to be maintained in Vcs"
+msgstr ""
+
+#: bugs.py:261
+msgid "Packaging Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:14
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the <a "
+ "href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the %"
+ "sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the %"
+ "sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/po/zh_TW.po b/webtools/po/zh_TW.po
new file mode 100644
index 0000000..97d01ca
--- /dev/null
+++ b/webtools/po/zh_TW.po
@@ -0,0 +1,591 @@
+#: tasks.py:110
+msgid "License"
+msgstr "授權方式"
+
+#: tasks.py:111
+msgid "Version"
+msgstr "版本"
+
+#: tasks.py:112 bugs.py:114
+msgid "Summary"
+msgstr "摘要"
+
+#: tasks.py:113 bugs.py:123
+msgid "Last update:"
+msgstr "最後更新"
+
+#: tasks.py:114 tasks.py:168
+msgid "Debian package not available"
+msgstr "尚未進入 Debian 的套件"
+
+#: tasks.py:116
+msgid "For a better overview of the project's availability as a Debian package, each head row "
+ "has a color code according to this scheme:"
+msgstr ""
+
+
+#: tasks.py:117
+#, python-format
+msgid "If you discover a project which looks like a good candidate for %s\n"
+ " to you, or if you have prepared an unofficial Debian "
+ "package, please do not hesitate to\n"
+ " send a description of that project to the <a href=\"mailto:%"
+ "s\">%s mailing list</a>"
+msgstr ""
+
+#: tasks.py:121
+#, python-format
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the %s Project. Currently, only a few of them are available as Debian packages. It is our "
+ "goal, however, to include all software in %s which can sensibly add to a high quality "
+ "Debian Pure Blend."
+msgstr ""
+
+#: tasks.py:122
+msgid "Tasks page"
+msgstr "套件項目網頁"
+
+#: tasks.py:123
+msgid "Project"
+msgstr "計畫"
+
+#: tasks.py:124
+#, python-format
+msgid "This is a list of the Tasks %s is made of:"
+msgstr ""
+
+#: tasks.py:125
+msgid "This page is also available in the following languages:"
+msgstr "此頁面也有下列語言版本"
+
+#: tasks.py:126
+#, python-format
+msgid "How to set <a href=\"%s\">the default document language</a>"
+msgstr ""
+
+#: tasks.py:128 bugs.py:259
+msgid "Homepage not available"
+msgstr "網站尚未完成"
+
+#: tasks.py:129
+msgid "Translate description"
+msgstr "翻譯描述"
+
+#: tasks.py:130
+msgid "Fix translated description"
+msgstr "修正翻譯描述"
+
+#: tasks.py:131
+msgid "Popularitycontest results: number of people who use this package regularly (number of "
+ "people who upgraded this package recently) out of"
+msgstr "套件流行調查結果:有多少人常常使用此套件(最近有多少人升級此套件)"
+
+#: tasks.py:132
+msgid "Table of contents"
+msgstr "內容列表"
+
+#: tasks.py:133
+msgid "complete packagelist"
+msgstr "完整套件列表"
+
+#: tasks.py:145
+msgid "Packages"
+msgstr "套件"
+
+#: tasks.py:146
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. The list "
+ "on\n"
+ "the right shows the tasks of %s."
+msgstr ""
+
+#: tasks.py:153
+msgid "Official Debian packages with high relevance"
+msgstr ""
+
+#: tasks.py:154
+msgid "Official Debian package"
+msgstr "正式 Debian 套件"
+
+#: tasks.py:155
+msgid "Official Debian packages with lower relevance"
+msgstr ""
+
+#: tasks.py:157
+msgid "Debian packages in contrib or non-free"
+msgstr "在 contrib 或 non-free 的 Debian 套件"
+
+#: tasks.py:158
+msgid "Debian package in contrib/non-free"
+msgstr "在 contrib/non-free 的 Debian 套件"
+
+#: tasks.py:159
+msgid "Debian packages in experimental"
+msgstr "在 experimental 的 Debian 套件"
+
+#: tasks.py:160
+msgid "Debian package in experimental"
+msgstr "在 experimental 的 Debian 套件"
+
+#: tasks.py:161
+msgid "Debian packages in New queue (hopefully available soon)"
+msgstr "在 NEW 佇列中的 Debian 套件(期待完成)"
+
+#: tasks.py:162
+msgid "New Debian package"
+msgstr "新 Debian 套件"
+
+#: tasks.py:163
+msgid "Packaging has started and developers might try the packaging code in VCS"
+msgstr ""
+
+#: tasks.py:164
+msgid "Unofficial Debian package"
+msgstr "非正式 Debian 套件"
+
+#: tasks.py:165
+msgid "Unofficial packages built by somebody else"
+msgstr "由某人建立的非正式套件"
+
+#: tasks.py:167
+msgid "No known packages available"
+msgstr ""
+
+#: tasks.py:169
+msgid "No known packages available but some record of interest (WNPP bug)"
+msgstr ""
+
+#: tasks.py:218
+msgid "Maintainer"
+msgstr "維護者"
+
+#: tasks.py:220
+msgid "Responsible"
+msgstr ""
+
+#: tasks.py:242 bugs.py:106
+msgid "Links to other tasks"
+msgstr ""
+
+#: tasks.py:243
+msgid "Index of all tasks"
+msgstr ""
+
+#: bugs.py:107
+msgid "Tasks"
+msgstr ""
+
+#: bugs.py:108
+msgid "Tasks overview"
+msgstr ""
+
+#: bugs.py:109
+msgid "Legend"
+msgstr ""
+
+#: bugs.py:110
+msgid "Bugs of package"
+msgstr ""
+
+#: bugs.py:111
+msgid "Total bugs"
+msgstr ""
+
+#: bugs.py:112
+msgid "Open bugs"
+msgstr ""
+
+#: bugs.py:113
+msgid "Fixed bugs"
+msgstr ""
+
+#: bugs.py:115
+#, python-format
+msgid "A %sDebian Pure Blend%s is a Debian internal project which assembles\n"
+ "a set of packages that might help users to solve certain tasks of their work. This page "
+ "should be helpful\n"
+ "to track down the bugs of packages that are interesting for the %s project to enable "
+ "developers a quick\n"
+ "overview about possible problems."
+msgstr ""
+
+#: bugs.py:121
+msgid "Bugs page"
+msgstr ""
+
+#: bugs.py:122
+msgid "This is a list of metapackages. The links are leading to the respective bugs page."
+msgstr ""
+
+#: bugs.py:124
+msgid "To estimate the overall status of the packages in the dependencies of\n"
+ "a metapackage a weighted severity is calculated. Done bugs are ignored and bugs in "
+ "dependent and\n"
+ "recommended packages are weighted by factor three compared to suggested packages. "
+ "Release critical\n"
+ "bugs have a much larger weight than important, while the contribution of normal bugs is "
+ "even smaller\n"
+ "and minor bugs have a very small weight. Wishlist bugs are ignored in this calculation. "
+ "The resulting\n"
+ "sum is compared to some boundaries to find a verbal form. The actual numbers need some "
+ "adjustment\n"
+ "to make real sense - this evaluation method is in testing phase."
+msgstr ""
+
+#: bugs.py:131
+msgid "The severities of bugs are weighted as follows"
+msgstr ""
+
+#: bugs.py:219
+msgid "Metapackage is in excellent shape"
+msgstr ""
+
+#: bugs.py:222
+msgid "Metapackage is in very good shape"
+msgstr ""
+
+#: bugs.py:225
+msgid "Metapackage is in good shape"
+msgstr ""
+
+#: bugs.py:228
+msgid "Consider looking into bugs of this metapackage"
+msgstr ""
+
+#: bugs.py:231
+msgid "Looking into bugs of this metapackage is recommended"
+msgstr ""
+
+#: bugs.py:234
+msgid "Immediately looking into bugs of the dependencies of this metapackage is advised"
+msgstr ""
+
+#: bugs.py:239
+msgid "Open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:240
+msgid "Open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:241
+msgid "Done bugs"
+msgstr ""
+
+#: bugs.py:243
+msgid "No open bugs in dependent packages"
+msgstr ""
+
+#: bugs.py:244
+msgid "No open bugs in suggested packages"
+msgstr ""
+
+#: bugs.py:245
+msgid "No done bugs"
+msgstr ""
+
+#: bugs.py:260
+msgid "Package seems not to be maintained in Vcs"
+msgstr ""
+
+#: bugs.py:261
+msgid "Packaging Vcs"
+msgstr ""
+
+#: webconf/debian-med.conf:14
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the <a "
+ "href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>."
+msgstr ""
+
+#
+# These strings occured in the old *.php files and the translations should be
+# preserved for later use.
+# Just keep this file
+#
+#: ../bug_details.tmpl:8 ../bugs.tmpl:7 ../ddtp.tmpl:7 ../ddtp_details.tmpl:8 ../locales.php:7
+#: ../tasks.tmpl:8 ../tasks_idx.tmpl:8
+msgid "summary"
+msgstr ""
+
+#: ../bug_details.tmpl:12 ../bugs.tmpl:11
+msgid "Bugs for package"
+msgstr ""
+
+#: ../bug_details.tmpl:40 ../bugs.tmpl:66 ../ddtp.tmpl:30 ../ddtp_details.tmpl:34 ../tasks.tmpl:112
+#: ../tasks_idx.tmpl:29
+msgid "Last update"
+msgstr ""
+
+#: ../bug_details.tmpl:41 ../bugs.tmpl:67 ../ddtp.tmpl:31 ../ddtp_details.tmpl:35 ../tasks.tmpl:113
+#: ../tasks_idx.tmpl:30
+msgid "Please note: this page gets automatically updated twice a day, on 00:00 and 12:00 UTC."
+msgstr ""
+
+#: ../bugs.tmpl:19 ../bugs.tmpl:31
+msgid "Summary bugs page"
+msgstr ""
+
+#: ../ddtp.tmpl:15
+msgid "DDTP Statistics"
+msgstr ""
+
+#: ../ddtp_details.tmpl:12
+msgid "Summary for package"
+msgstr ""
+
+#: ../inc/header.inc.php:34
+#, php-format
+msgid "Help us to see Debian used by medical practicioners and researchers! Join us on the %"
+ "sAlioth page%s."
+msgstr ""
+
+#: ../index.php:7
+msgid "information"
+msgstr ""
+
+#: ../index.php:11
+msgid "Developers please visit our"
+msgstr ""
+
+#: ../index.php:12
+msgid "Wiki page"
+msgstr ""
+
+#: ../index.php:15
+msgid "The Debian Med project presents packages that are associated with <ul><li>medicine</"
+ "li><li>pre-clinical research</li><li>life science.</li></ul> Its developments are mostly "
+ "focused on three areas for the moment: <ul><li>medical practice</li><li>imaging</"
+ "li><li>bioinformatics</li></ul>and can be installed directly from every Debian "
+ "installation."
+msgstr ""
+
+#: ../index.php:22
+msgid "warning"
+msgstr ""
+
+#: ../index.php:24 ../locales.php:26
+#, php-format
+msgid "Your browser uses language settings that we could not yet provide translations for.<br /"
+ ">If you can spare one to two hours then please consider to help us in translating our "
+ "pages for your people, too. Instructions are found %shere%s."
+msgstr ""
+
+#: ../index.php:29
+#, php-format
+msgid "Visit the %sLocalization page%s."
+msgstr ""
+
+#: ../index.php:37
+msgid "pages"
+msgstr ""
+
+#: ../index.php:42
+msgid "Group policy"
+msgstr ""
+
+#: ../index.php:43
+msgid "Bugs"
+msgstr ""
+
+#: ../index.php:44
+msgid "Quality Assurance"
+msgstr ""
+
+#: ../index.php:45
+msgid "Debian Description Translation Project"
+msgstr ""
+
+#: ../index.php:46
+msgid "Tasks of our Blend"
+msgstr ""
+
+#: ../index.php:47
+msgid "SVN repository"
+msgstr ""
+
+#: ../index.php:49
+msgid "Localizations"
+msgstr ""
+
+#: ../index.php:54
+msgid "members"
+msgstr ""
+
+#: ../index.php:72 ../index.php:92
+msgid "Project Administrator"
+msgstr ""
+
+#: ../index.php:77 ../index.php:96
+msgid "Project Developer"
+msgstr ""
+
+#: ../index.php:91
+msgid "Green Wheel"
+msgstr ""
+
+#: ../index.php:95
+msgid "Grey Wheel"
+msgstr ""
+
+#: ../index.php:101
+msgid "UTC time"
+msgstr ""
+
+#: ../index.php:107
+msgid "badges"
+msgstr ""
+
+#: ../index.php:113
+msgid "Valid XHTML 1.1"
+msgstr ""
+
+#: ../index.php:118
+msgid "Valid CSS 2"
+msgstr ""
+
+#: ../index.php:125
+msgid "Berkeley Open Infrastructure for Network Computing"
+msgstr ""
+
+#: ../index.php:132
+msgid "recent activity"
+msgstr ""
+
+#: ../index.php:138
+msgid "date"
+msgstr ""
+
+#: ../index.php:139 ../locales.php:50
+msgid "author"
+msgstr ""
+
+#: ../index.php:140
+msgid "content"
+msgstr ""
+
+#: ../index.php:141
+msgid "link"
+msgstr ""
+
+#: ../index.php:170
+msgid "todo"
+msgstr ""
+
+#: ../index.php:220
+msgid "Please, note that this is a SVN export of our website. It might break during SVN commits."
+msgstr ""
+
+#: ../locales.php:11
+msgid "Current locale"
+msgstr ""
+
+#: ../locales.php:15
+msgid "Priority"
+msgstr ""
+
+#: ../locales.php:31
+#, php-format
+msgid "More information on how to contribute to the Debian Med project, can be found in the %"
+ "sHow to Contribute%s page."
+msgstr ""
+
+#: ../locales.php:41
+msgid "localization"
+msgstr ""
+
+#: ../locales.php:45
+msgid "Currently installed locales"
+msgstr ""
+
+#: ../locales.php:48
+msgid "locale"
+msgstr ""
+
+#: ../locales.php:49
+msgid "translation status"
+msgstr ""
+
+#: ../locales.php:51
+msgid "team"
+msgstr ""
+
+#: ../locales.php:92
+msgid "Add new locale"
+msgstr ""
+
+#: ../tasks.tmpl:18
+msgid "The list to the right includes various software projects which are of some interest to "
+ "the Debian Med Project."
+msgstr ""
+
+#: ../tasks.tmpl:19
+msgid "Currently, only a few of them are available as Debian packages."
+msgstr ""
+
+#: ../tasks.tmpl:20
+msgid "It is our goal, however, to include all software in Debian Med which can sensibly add to "
+ "a high quality Debian Pure Blend."
+msgstr ""
+
+#: ../tasks.tmpl:31
+#, php-format
+msgid "If you discover a project which looks like a good candidate for Debian Med to you, or if "
+ "you have prepared an inofficial Debian package, please do not hesitate to send a "
+ "description of that project to the %sDebian Med mailing list%s"
+msgstr ""
+
+#
+# These strings are manually added, they
+# come from inside the Python scripts on
+# Alioth.
+#
+# Please keep the static.pot file.
+#
+#
+# update-bugs
+#
+msgid "Subject"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Severity"
+msgstr ""
+
+msgid "Found in"
+msgstr ""
+
+msgid "Fixed in"
+msgstr ""
+
+#
+# update-ddtp
+#
+msgid "translation not available"
+msgstr ""
+
+msgid "yes"
+msgstr ""
+
+msgid "translated"
+msgstr ""
+
+msgid "edit"
+msgstr ""
+
+msgid "edit translation"
+msgstr ""
+
+msgid "untranslated"
+msgstr ""
+
+msgid "Please follow the link below to start translating"
+msgstr ""
diff --git a/webtools/tasks.py b/webtools/tasks.py
index 936bfa6..89137c9 100755
--- a/webtools/tasks.py
+++ b/webtools/tasks.py
@@ -17,40 +17,16 @@ from genshi.template import TemplateLoader
from genshi import Markup
from genshi.template.eval import UndefinedError
-from blendstasktools import Tasks, GetDependencies2Use, pkgstatus, pkgstatus_sortedkeys
-from blendsunicode import to_unicode
-
-# The keys of the following dictionary are used to address the translation files of DDTP
-# The values contain dictionaries in turn with the following meaning:
-# 'short' = shortcut of language as extension of the output files
-# 'htaccess' = language definition in htaccess
-# 'title' = English name of the language used in title attribut of link
-# 'printed' = printed name for links
-language_dict = { 'en' : {'short':'en', 'htaccess':'en' , 'title':'English', 'printed':Markup('English')},
- 'cs' : {'short':'cs', 'htaccess':'cs' , 'title':'Czech', 'printed':Markup('česky')},
- 'da' : {'short':'da', 'htaccess':'da' , 'title':'Danish' , 'printed':Markup('dansk')},
- 'de' : {'short':'de', 'htaccess':'de' , 'title':'German', 'printed':Markup('Deutsch')},
- 'es' : {'short':'es', 'htaccess':'es' , 'title':'Spanish', 'printed':Markup('español')},
- 'fi' : {'short':'fi', 'htaccess':'fi' , 'title':'Finnish', 'printed':Markup('suomi')},
- 'fr' : {'short':'fr', 'htaccess':'fr' , 'title':'French', 'printed':Markup('français')},
- 'it' : {'short':'it', 'htaccess':'it' , 'title':'Italian', 'printed':Markup('Italiano')},
- 'ja' : {'short':'ja', 'htaccess':'ja' , 'title':'Japanese', 'printed':Markup('日本語 (Nihongo)')},
- 'ko' : {'short':'ko', 'htaccess':'ko' , 'title':'Korean', 'printed':Markup('한국어 (Hangul)')},
- 'nl' : {'short':'nl', 'htaccess':'nl' , 'title':'Dutch', 'printed':Markup('Nederlands')},
- 'pl' : {'short':'pl', 'htaccess':'pl' , 'title':'Polish', 'printed':Markup('polski')},
- 'pt_BR' : {'short':'pt', 'htaccess':'pt-BR', 'title':'Portuguese', 'printed':Markup('Português')},
- 'ru' : {'short':'ru', 'htaccess':'ru' , 'title':'Russian', 'printed':Markup('Русский (Russkij)')},
- 'zh_CN' : {'short':'zh_cn', 'htaccess':'zh-CN', 'title':'Chinese (China)', 'printed':Markup('中文(简)')},
- 'zh_TW' : {'short':'zh_tw', 'htaccess':'zh-TW', 'title':'Chinese (Taiwan)', 'printed':Markup('中文(正)')},
- }
-languages = language_dict.keys()
-languages.sort()
+from blendstasktools import Tasks, GetDependencies2Use, pkgstatus, pkgstatus_sortedkeys, UnlockBlendsTools
+from blendsunicode import to_unicode
+from blendslanguages import languages, language_dict
if len(argv) <= 1:
print >>stderr, "Usage: %s <Blend name>\n The <Blend name> needs a matching config file webconf/<Blend name>.conf"\
% argv[0]
exit(-1)
+# LockBlendsTools() # logger handler not defined at this moment, needs rethinking ... FIXME
tasks = Tasks(argv[1])
tasks.GetAllDependencies()
packages = tasks.GetNamesOnlyDict()
@@ -319,3 +295,5 @@ for lang in languages:
print >> htafp
htafp.close()
+
+UnlockBlendsTools()
diff --git a/webtools/templates/bugs.xhtml b/webtools/templates/bugs.xhtml
new file mode 100644
index 0000000..dde95e2
--- /dev/null
+++ b/webtools/templates/bugs.xhtml
@@ -0,0 +1,156 @@
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
+ xmlns:py="http://genshi.edgewall.org/">
+<head>
+<title>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} bugs</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+<link href="$css" type="text/css" rel="stylesheet"/>
+</head>
+<body>
+<div style="text-align: center;">
+<a href="$projecturl"><span py:choose="logourl">
+ <span py:when="None">${projectname} Project</span>
+ <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
+ </span>
+</a>
+</div>
+<div class="heading" py:if="projectadvertising">
+ <div class="tabBar" style="text-align: center;">$projectadvertising</div>
+</div>
+<table class="columns">
+<tr>
+ <td class="left">
+ <span class="section">Summary</span>
+ <div class="section">
+ <div class="sectionTop"/>
+ <div class="row">
+ $bugsofpackage
+ <strong>${tasks[task].metapkg.pkg}</strong>
+ </div>
+ <div class="row">
+ $totalbugs:
+ <strong>${nbugs[task]+ndone[task]}</strong>
+ </div>
+ <div class="row">
+ $openbugs:
+ <strong>${nbugs[task]}</strong>
+ </div>
+ <div class="row">
+ Fixed bugs:
+ <strong>${ndone[task]}</strong>
+ </div>
+ </div>
+
+ <span class="section">${othertasks}</span>
+ <div class="section">
+ <div class="sectionTop"/>
+ <div class="row">
+ <div class="link"><a href="index.html">${bugslink}</a></div>
+ <py:for each="t in taskskeys">
+ <div py:choose="t">
+ <span py:when="task"
+ class="curlink"><a href="${t}.html">${tasks[t].metapkg.PrintedName.capitalize()}</a> ${nbugs[t]} (${weighttask[t]})</span>
+ <span py:otherwise="" class="link ${weightedclass[t]}"><a href="${t}.html">${tasks[t].metapkg.PrintedName.capitalize()}</a> ${nbugs[t]} (${weighttask[t]})</span>
+ </div>
+ </py:for>
+ </div>
+ </div>
+
+ <span class="section">${legend}</span>
+ <div class="section">
+ <div class="sectionTop"/>
+ <div class="row">
+ <table>
+ <tr><th>Severity</th><th>Dependent</th><th>Suggested</th></tr>
+ <py:for each="s in severities">
+ <tr>
+ <td class="severity ${s}">${s}</td>
+ <td class="bugid ${s}">${severitystat[DEPENDENT][s]}</td>
+ <td class="bugid ${s}">${severitystat[SUGGESTED][s]}</td>
+ </tr>
+ </py:for>
+ </table>
+ </div>
+ </div>
+ </td>
+ <td class="main">
+ <div class="pageBody">
+
+<h1>Summary bugs page of ${tasks[task].metapkg.PrintedName.capitalize()} meta package</h1>
+
+<div class="severitysummary">${weightedsev}<sup>*</sup></div>
+
+<span py:choose="">
+ <span py:when="nbugs[task]+ndone[task] != 0">
+ <py:for each="cat in buglistcat">
+ <span py:choose="">
+ <span py:when="buglist[cat].pkgbugs != []">
+ <h2>${headings[cat]}</h2>
+ <div class="severitylist" py:if="severitysummary[cat] != ''">
+ ${severitysummary[cat]}
+ </div>
+ <table class="${cssclass[cat]}">
+ <py:for each="pkgbug in buglist[cat].pkgbugs">
+ <span py:if="pkgbug.nbugs > 0">
+ <tr>
+ <td class="bugid" colspan="3">
+ <div class="bugsheadertable">
+ <div class="bugsheadertr">
+ <span class="bugsheaderpackagetd" id="bugsheaderpackagetd"><a href="http://packages.qa.debian.org/${pkgbug.source[0]}/${pkgbug.source}.html">${pkgbug.pkgname}</a> (${pkgbug.nbugs})</span>
+ <span class="bugsheaderhomepagetd" id="bugsheaderhomepagetd" py:choose="pkgbug.homepage">
+ <span py:when="'#'">${nohomepage}</span>
+ <span py:otherwise=""><a href="$pkgbug.homepage">Homepage: ${pkgbug.homepage}</a></span>
+ </span>
+ <span class="bugvcsbrowser" id="bugvcsbrowser" py:choose="pkgbug.vcsbrowser">
+ <span py:when="'#'">${novcsbrowser}</span>
+ <span py:otherwise=""><a href="$pkgbug.vcsbrowser">${vcslocation}</a></span>
+ </span>
+ <span class="bugsmaintainer" id="bugsmaintainer" py:choose="">
+ <span py:when="pkgbug.maintainer != None">${pkgbug.maintainer}</span>
+ <span py:otherwise="">unknown maintainer</span>
+ </span>
+ </div>
+ </div>
+ </td>
+ </tr>
+ <py:for each="bug in pkgbug.bugs">
+ <tr>
+ <td class="bugid ${bug.severity}"><a href="http://bugs.debian.org/${bug.bug}">${bug.bug}</a></td>
+ <td class="summary ${bug.severity}">${bug.summary}</td>
+ <td class="severity ${bug.severity}">${bug.tags}</td>
+ </tr>
+ </py:for>
+ </span>
+ </py:for>
+ </table>
+ </span>
+ <span py:otherwise=""><h2>${nobugs[cat]}</h2></span>
+ </span>
+ </py:for>
+ </span>
+ <span py:otherwise=""><h2>$projectname
+ ${tasks[task].metapkg.PrintedName.capitalize()} has no known nbugs =
+ ${nbugs[task]} ndone = ${ndone[task]}</h2></span>
+</span>
+<div class="footnotecontent">
+ <sup>*</sup>${weightexplanation}
+ <br />
+ ${weightdetails}:
+ <br />
+ <table class="footnotecontent">
+ <py:for each="s in severities">
+ <tr><td class="footnotecontent">${s}</td><td class="footnotecontent">${weight[s]}</td></tr>
+ </py:for>
+ </table>
+</div>
+ </div>
+ </td>
+</tr>
+</table>
+<div class="footnote">
+ <address>${updatetimestamp}</address>
+</div>
+</body>
+</html>
diff --git a/webtools/templates/bugs_idx.xhtml b/webtools/templates/bugs_idx.xhtml
new file mode 100644
index 0000000..d56ce2a
--- /dev/null
+++ b/webtools/templates/bugs_idx.xhtml
@@ -0,0 +1,81 @@
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
+ xmlns:py="http://genshi.edgewall.org/">
+<head>
+<title>$projectname bugs</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+<link href="$css" type="text/css" rel="stylesheet"/>
+</head>
+<body>
+<div style="text-align: center;">
+<a href="$projecturl"><span py:choose="logourl">
+ <span py:when="None">${projectname} Project</span>
+ <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
+ </span>
+</a>
+</div>
+<div class="heading" py:if="projectadvertising">
+ <div class="tabBar" style="text-align: center;">$projectadvertising</div>
+</div>
+<table class="columns">
+<tr>
+ <td class="left">
+ <span class="section">$summary</span>
+ <div class="section">
+ <div class="sectionTop"></div>
+ <div class="row">${bugssummary}</div>
+ </div>
+ <span class="section">${legend}</span>
+ <div class="section">
+ <div class="sectionTop"/>
+ <div class="row">
+ <table>
+ <tr><th>Assessment</th><th>Limit</th></tr>
+ <py:for each="a in assessments">
+ <tr>
+ <td class="${a[1]}">${a[1]}</td>
+ <td class="${a[1]}">${a[0]}</td>
+ </tr>
+ </py:for>
+ </table>
+ </div>
+ </div>
+ </td>
+ <td class="main">
+ <div class="pageBody">
+ <h1>$gtstrBugsPage</h1>
+ <p>$gtstrListOfBugspages</p>
+ <dl>
+ <py:for each="task in taskskeys">
+ <dt class="${weightedclass[task]}"><a href="${task}.html" name="${task}" id="${task}">${tasks[task].metapkg.PrintedName.capitalize()} - <span py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['short']}</span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</span>
+ </span></a> (${weighttask[task]}<sup>*</sup>)</dt>
+ <dd><span py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['long']}</span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}</span>
+ </span></dd>
+ </py:for>
+ </dl>
+<div class="footnotecontent">
+ <sup>*</sup>${weightexplanation}
+ <br />
+ ${weightdetails}:
+ <br />
+ <table class="footnotecontent">
+ <py:for each="s in severities">
+ <tr><td class="footnotecontent">${s}</td><td class="footnotecontent">${weight[s]}</td></tr>
+ </py:for>
+ </table>
+</div>
+ </div>
+ </td>
+</tr>
+</table>
+<div id="footer">
+ <address>${updatetimestamp}</address>
+</div>
+</body>
+</html>
diff --git a/webtools/templates/packagelist.xhtml b/webtools/templates/packagelist.xhtml
new file mode 100644
index 0000000..1297b76
--- /dev/null
+++ b/webtools/templates/packagelist.xhtml
@@ -0,0 +1,90 @@
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
+ xmlns:py="http://genshi.edgewall.org/">
+<head>
+<title>$projectname $packagelist</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+<link href="$css" type="text/css" rel="stylesheet"/>
+</head>
+<body>
+<div style="text-align: center;">
+<a href="$projecturl"><span py:choose="logourl">
+ <span py:when="None">${projectname} Project</span>
+ <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
+ </span>
+</a>
+</div>
+<div class="heading" py:if="projectadvertising">
+ <div class="tabBar" style="text-align: center;">$projectadvertising</div>
+</div>
+<table class="columns">
+<tr>
+ <td class="left">
+ <span class="section">$summary</span>
+ <div class="section">
+ <div class="sectionTop"></div>
+ <div class="row">${idxsummary}</div>
+ </div>
+ </td>
+ <td class="main">
+ <div class="pageBody">
+ <h1>$gtstrTasksPage</h1>
+ <p>$gtstrThisIsAList</p>
+
+ <h2>$tableofcontents</h2>
+ <ul>
+ <py:for each="task in taskskeys">
+ <li><a href="#${task}">${tasks[task].metapkg.PrintedName.capitalize()}</a></li>
+ </py:for>
+ </ul>
+
+ <py:for each="task in taskskeys">
+ <a name="${task}" id="${task}"/>
+ <h2><a href="${task}" name="${task}" id="${task}">${tasks[task].metapkg.PrintedName.capitalize()} - <span py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['short']}</span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</span>
+ </span></a></h2>
+ <p py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['long']}</span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}</span>
+ </p>
+ <py:for each="pstatus in dependencies[task]">
+ <h3>${headline[pstatus]}</h3>
+ <dl>
+ <py:for each="project in projects[task][pstatus]">
+ <dt><span py:choose="project.properties['homepage']">
+ <span py:when="'#'">${project.pkg.capitalize()}</span>
+ <span py:otherwise=""><a href="${project.properties['homepage']}">${project.pkg.capitalize()}</a></span>
+ </span>
+ <span py:choose="">
+ <span py:when="len(project.properties['stable_testing_version'])>0">(<py:for each="version in project.properties['stable_testing_version']">${version[3]} <a href="http://packages.debian.org/${version[0]}/${project.pkg}">${version[2]}</a></py:for>)</span>
+ </span>
+ </dt>
+ <dd><span py:choose="">
+ <span py:when="project.desc.has_key(lang)">${project.desc[lang]['short']}</span>
+ <span py:otherwise="">${project.desc['en']['short']}</span>
+ </span>
+ </dd>
+ </py:for>
+ </dl>
+ </py:for>
+ </py:for>
+ </div>
+ </td>
+</tr>
+</table>
+<div id="footer">
+ <hr class="hidecss" />
+<p>${langavail}</p>
+<py:for each="l in languages">
+ <span py:if="lang != l" class="navpara">
+ <a href="packagelist.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
+ </span>
+</py:for>
+<p>${howtosetlang}</p>
+ <address>${updatetimestamp}</address>
+</div>
+</body>
+</html>
diff --git a/webtools/templates/tasks.xhtml b/webtools/templates/tasks.xhtml
new file mode 100644
index 0000000..b4180d8
--- /dev/null
+++ b/webtools/templates/tasks.xhtml
@@ -0,0 +1,247 @@
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
+ xmlns:py="http://genshi.edgewall.org/">
+<head>
+<title>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+<link href="$css" type="text/css" rel="stylesheet"/>
+</head>
+<body>
+<script type="text/javascript" src="../inc/wz_tooltip.js"></script>
+<div style="text-align: center;">
+<a href="$projecturl"><span py:choose="logourl">
+ <span py:when="None">${projectname} Project</span>
+ <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
+ </span>
+</a>
+</div>
+<div class="heading" py:if="projectadvertising">
+ <div class="tabBar" style="text-align: center;">$projectadvertising</div>
+</div>
+<table class="columns">
+<tr>
+ <td class="left">
+ <span class="section">${summary}</span>
+ <div class="section">
+ <div class="sectionTop"/>
+ <div class="row">
+ <div class="pkgname">${tasks[task].metapkg.PrintedName.capitalize()}</div>
+ <div class="pkgdesc" py:choose="">
+ <div py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['short']}</div>
+ <div py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</div>
+ </div>
+ <p><span py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['long']}
+ <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.org/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.pkg}">${fixtranslation}</a></div>
+ </span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}
+ <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.org/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.pkg}">${translatedesc}</a></div>
+ </span>
+ </span></p>
+ </div>
+ <div class="row">
+ <p>${description}
+ </p>
+ <p>${legend}</p>
+ <ul>
+ <py:for each="pstatus in dependencies[task]">
+ <li class="deb-${pstatus}"><a href="#${pstatus}-debs">${headline[pstatus]}</a></li>
+ </py:for>
+ </ul>
+ <p>${discovery}</p>
+ </div>
+ </div>
+
+ <span class="section">${othertasks}</span>
+ <div class="section">
+ <div class="sectionTop"/>
+ <div class="row">
+ <div class="link"><a href="index">${indexlink}</a></div>
+ <py:for each="t in taskskeys">
+ <div py:choose="t">
+ <span py:when="task" class="curlink"><a href="${t}">${tasks[t].metapkg.PrintedName.capitalize()}</a></span>
+ <span py:otherwise="" class="link"><a href="${t}">${tasks[t].metapkg.PrintedName.capitalize()}</a></span>
+ </div>
+ </py:for>
+ </div>
+ </div>
+ </td>
+ <td class="main">
+ <div class="pageBody">
+ <h1>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages</h1>
+<py:for each="pstatus in dependencies[task]">
+ <h2><a id="${pstatus}-debs" name="${pstatus}-debs"/>${headline[pstatus]}</h2>
+ <py:for each="project in projects[task][pstatus]">
+ <table class="project" summary="${project.pkg}">
+ <tbody>
+ <tr class="deb-${pstatus}">
+ <td class="project-name">
+ <a name="${project.pkg}" id="${project.pkg}"/>
+ <div class="pkgname">${project.pkg.capitalize()}
+ <span class="wnpp" py:if="project.properties.has_key('wnpp')"> - <a href="http://bugs.debian.org/${project.properties['wnpp']}">wnpp</a></span>
+ </div>
+ <div class="pkgdesc" py:choose="">
+ <div py:when="project.desc.has_key(lang)">${project.desc[lang]['short']}</div>
+ <div py:otherwise="">${project.desc['en']['short']}</div>
+ </div>
+ <div py:choose="project.properties['homepage']">
+ <span py:when="'#'">${nohomepage}</span>
+ <span py:otherwise=""><a href="${project.properties['homepage']}">${project.properties['homepage']}</a></span>
+ </div>
+ <div py:if="project.responsible != None">${maintainer[pstatus]}:
+ ${project.responsible} <span py:if="project.properties.has_key('changed_by')">(${project.properties['changed_by']})</span>
+ </div>
+ </td>
+ <td py:if="project.component and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'" class="project-info">
+ <span py:if="project.version != []" class="tooltip" id="${project.pkg}-versions">
+ <table class="versionclass">
+ <tr><th colspan="3" class="versionclass"><strong>Versions of package ${project.pkg}</strong></th></tr>
+ <tr><th class="release">Release</th><th class="version">Version</th><th class="archs">Architectures</th></tr>
+ <py:for each="version in project.version">
+ <tr><td class="release">${version['release']}</td><td class="version">${version['version']}</td><td class="archs">${version['archs']}</td></tr>
+ </py:for>
+ <tr py:if="project.outdated != {}"><td class="outdated">${project.outdated['release']}</td><td class="outdated">${project.outdated['version']}</td>
+ </tr>
+ </table>
+ </span>
+ <span py:if="project.debtags != []" class="tooltip" id="${project.pkg}-debtags">
+ <table class="versionclass">
+ <tr><th colspan="2" class="versionclass"><strong>Debtags of package ${project.pkg}:</strong></th></tr>
+ <py:for each="debtag in project.debtags">
+ <tr><td class="release">${debtag['tag']}</td><td class="version">${debtag['value']}</td></tr>
+ </py:for>
+ </table>
+ </span>
+ <div py:if="project.popcon != {}"
+ class="popcon"><a href="http://qa.debian.org/popcon-png.php?packages=${project.pkg}%26show_vote=on%26show_recent=on%26want_legend=on">Popcon</a>:
+ ${project.popcon['vote']} users (${project.popcon['recent']} upd.)<sup><a href="#popconexplanation">*</a></sup></div>
+ <div py:if="project.version != []">
+ <div py:choose="">
+ <div py:when="project.outdated == {}" class="project-info" onmouseover="TagToTip('${project.pkg}-versions', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Versions and Archs</div>
+ <div py:otherwise="" class="project-infomissing" onmouseover="TagToTip('${project.pkg}-versions', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Newer upstream!</div>
+ </div>
+ </div>
+ <div py:choose="">
+ <div py:when="project.debtags != []" class="project-info" onmouseover="TagToTip('${project.pkg}-debtags', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Debtags</div>
+ <div py:otherwise="">
+ <div class="project-infomissing"><a href="http://debtags.alioth.debian.org/edit.html?pkg=${project.pkg}">Go tagging</a></div>
+ </div>
+ </div>
+ </td>
+ <td class="project-license">
+ <em>${license}: ${project.properties['license']}</em>
+ <div py:choose="project.properties['pkg-url']">
+ <span py:when="'#'">${nopkgavail}</span>
+ <span py:otherwise=""><a href="${project.properties['pkg-url']}">${pdolinkname[pstatus]}</a></span>
+ </div>
+ <div py:if="project.properties['vcs-browser'] != '#'">
+ <span py:choose="">
+ <span py:when="project.properties.has_key('vcs-url')"><a href="${project.properties['vcs-browser']}" title="${project.properties['vcs-url']}">${project.properties['vcs-type']}</a></span>
+ <span py:otherwise=""><a href="${project.properties['vcs-browser']}">${project.properties['vcs-type']}</a></span>
+ </span>
+ </div>
+ <div py:if="lang != 'en' and project.component == 'main' and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'">
+ <div py:choose="">
+ <div class="trans" py:when="project.desc.has_key(lang)"><a href="http://ddtp.debian.org/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">${fixtranslation}</a></div>
+ <div class="trans-missing" py:otherwise=""><a href="http://ddtp.debian.org/ddtss/index.cgi/${lang}/fetch?package=${project.pkg}">${translatedesc}</a></div>
+ </div>
+ </div>
+ <div class="language" py:if="project.properties.has_key('language') and project.component != 'main'">Language: ${project.properties['language']}</div>
+ <div py:if="project.version != [] and (project.pkgstatus == 'new' or project.pkgstatus == 'pkgvcs')">Version: ${project.version[0]}</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="project-description"><span py:choose="">
+ <span py:when="project.desc.has_key(lang)">${project.desc[lang]['long']}</span>
+ <span py:otherwise="">${project.desc['en']['long']}</span>
+ </span>
+ <div class="enhanced-by" py:if="project.properties['Enhances'] != {}">
+ The package is enhanced by the following packages: <py:for each="enh in project.properties['Enhances'].keys()">
+ <a href="${project.properties['Enhances'][enh]}">${enh}</a>
+ </py:for>
+ </div>
+ <div class="registration" py:if="project.properties.has_key('registration')">
+ <span class="registrationlink" >Please register by following <a
+ href="${project.properties['registration']}">this link</a></span> if you are using ${project.pkg}.
+ </div>
+ <div class="published"
+ py:if="project.properties.has_key('published')">Please cite:
+ <span class="authors" py:if="project.properties['published'].has_key('authors')">${project.properties['published']['authors']}:</span>
+ <span py:choose="">
+ <span py:when="project.properties['published'].has_key('url')">
+ <span py:choose="">
+ <span class="title"
+ py:when="project.properties['published'].has_key('title')"><a href="${project.properties['published']['url']}">${project.properties['published']['title']}.</a></span>
+ <span py:otherwise=""><a href="${project.properties['published']['url']}">Link
+ to publication</a></span>
+ </span>
+ </span>
+ <span py:when="project.properties['published'].has_key('doi')">
+ <span py:choose="">
+ <span class="title"
+ py:when="project.properties['published'].has_key('title')"><a href="http://dx.doi.org/${project.properties['published']['doi']}">${project.properties['published']['title']}.</a></span>
+ <span py:otherwise=""><a href="http://dx.doi.org/${project.properties['published']['doi']}">Link
+ to publication</a></span>
+ </span>
+ </span>
+ <span py:otherwise=""><span class="title" py:if="project.properties['published'].has_key('title')">${project.properties['published']['title']}</span>
+ </span>
+ </span>
+ <span py:if="project.properties['published'].has_key('pubmed')">(<a href="http://www.ncbi.nlm.nih.gov/pubmed/${project.properties['published']['pubmed']}">PubMed</a></span><span py:if="project.properties['published'].has_key('pubmed') and project.properties['published'].has_key('eprint')">,</span><span py:if="not project.properties['published'].has_key('pubmed') and project.properties['published'].has_key('eprint')">(</span><span py:if="project.properties['published'].has_key('eprint')"><a href="${project.properties['published']['eprint']}">eprint</a></span><span py:if="project.properties['published'].has_key('pubmed') or project.properties['published'].has_key('eprint')">)</span>
+ <span class="journal" py:if="project.properties['published'].has_key('journal')">${project.properties['published']['journal']}</span>
+ <span class="journal" py:if="project.properties['published'].has_key('volume')">${project.properties['published']['volume']}</span><span class="journal" py:if="project.properties['published'].has_key('number')">(${project.properties['published']['number']})</span><span class="journal" py:if="project.properties['published'].has_key('pages')">:${project.properties['published']['pages']}</span>
+ <span class="year" py:if="project.properties['published'].has_key('year')">(${project.properties['published']['year']})</span>
+ </div>
+ </td>
+ <td py:if="project.component and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'" class="project-icon">
+ <div py:choose="">
+ <div py:when="project.icon != None">
+ <span class="tooltip" id="${project.pkg}-screenshot">
+ <img src="${project.image}" />
+ <table py:if="project.screenshots != []" class="versionclass">
+ <tr><th colspan="3"
+ class="versionclass"><strong>Other screenshots of package ${project.pkg}</strong></th></tr>
+ <tr><th class="version">Version</th><th class="archs">URL</th></tr>
+ <py:for each="screenshot in project.screenshots">
+ <tr><td class="version">${screenshot['version']}</td><td class="archs"><a href="${screenshot['url']}">${screenshot['url']}</a></td></tr>
+ </py:for>
+ </table>
+ </span>
+ <a href="http://screenshots.debian.net/package/${project.pkg}"><img class="icon" src="${project.icon}" width="300" alt="Screenshots of package ${project.pkg}" onmouseover="TagToTip('${project.pkg}-screenshot', FIX, ['${project.pkg}', 80, -100])" onmouseout="UnTip()" /></a>
+ </div>
+ <div py:otherwise="" class="project-infomissing"><a href="http://screenshots.debian.net/uploadfile?packagename=${project.pkg}">Upload screenshot</a></div>
+ </div>
+ </td>
+ </tr>
+ <tr py:if="project.remark">
+ <td colspan="3" class="remark">
+ <div py:if="project.remark['short']"><strong>Remark of ${projectname} team:</strong> ${project.remark['short']}</div>
+ <div py:if="project.remark['long']">${project.remark['long']}</div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </py:for>
+</py:for>
+ </div>
+ </td>
+</tr>
+</table>
+<div class="footnotecontent" id="popconexplanation">
+ <sup>*</sup>${popconexplanation} ${popconsubmit}
+</div>
+<div id="footer">
+ <hr class="hidecss" />
+<p>${langavail}</p>
+<py:for each="l in languages">
+ <span py:if="lang != l" class="navpara">
+ <a href="${task}.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
+ </span>
+</py:for>
+<p>${howtosetlang}</p>
+ <address>${updatetimestamp}</address>
+</div>
+</body>
+</html>
diff --git a/webtools/templates/tasks_idx.xhtml b/webtools/templates/tasks_idx.xhtml
new file mode 100644
index 0000000..90ad2c6
--- /dev/null
+++ b/webtools/templates/tasks_idx.xhtml
@@ -0,0 +1,63 @@
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
+ xmlns:py="http://genshi.edgewall.org/">
+<head>
+<title>$projectname</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+<link href="$css" type="text/css" rel="stylesheet"/>
+</head>
+<body>
+<div style="text-align: center;">
+<a href="$projecturl"><span py:choose="logourl">
+ <span py:when="None">${projectname} Project</span>
+ <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
+ </span>
+</a>
+</div>
+<div class="heading" py:if="projectadvertising">
+ <div class="tabBar" style="text-align: center;">$projectadvertising</div>
+</div>
+<table class="columns">
+<tr>
+ <td class="left">
+ <span class="section">$summary</span>
+ <div class="section">
+ <div class="sectionTop"></div>
+ <div class="row">${idxsummary}</div>
+ </div>
+ </td>
+ <td class="main">
+ <div class="pageBody">
+ <h1>$gtstrTasksPage</h1>
+ <p>$gtstrThisIsAList</p>
+ <dl>
+ <py:for each="task in taskskeys">
+ <dt><a href="${task}" name="${task}" id="${task}">${tasks[task].metapkg.PrintedName.capitalize()} - <span py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['short']}</span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</span>
+ </span></a></dt>
+ <dd><span py:choose="">
+ <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['long']}</span>
+ <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}</span>
+ </span></dd>
+ </py:for>
+ </dl>
+ </div>
+ </td>
+</tr>
+</table>
+<div id="footer">
+ <hr class="hidecss" />
+<p>${langavail}</p>
+<py:for each="l in languages">
+ <span py:if="lang != l" class="navpara">
+ <a href="index.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
+ </span>
+</py:for>
+<p>${howtosetlang}</p>
+ <address>${updatetimestamp}</address>
+</div>
+</body>
+</html>
diff --git a/webtools/update-all-tasks b/webtools/update-all-tasks
index 5558603..6cc2786 100755
--- a/webtools/update-all-tasks
+++ b/webtools/update-all-tasks
@@ -58,8 +58,9 @@ cd `dirname $0`
mkdir -p logs
for blend in `ls webconf/*.conf | grep -v -e debug -e rest-test | sed 's?webconf/\(.*\)\.conf?\1?'` ; do
starttime=`date "+%s"`
- time ./tasks.py $blend 2> logs/${blend}.err > logs/${blend}.out
+ # time
+ ./tasks.py $blend 2> logs/${blend}.err > logs/${blend}.out
endtime=`date "+%s"`
- echo "Rendering Blend '$blend' took $((endtime-starttime)) seconds"
+ echo "Rendering Blend '$blend' took $((endtime-starttime)) seconds" >> logs/${blend}.out
done
diff --git a/webtools/webconf/brdesktop.conf b/webtools/webconf/brdesktop.conf
new file mode 100644
index 0000000..2ea6f2e
--- /dev/null
+++ b/webtools/webconf/brdesktop.conf
@@ -0,0 +1,11 @@
+Blend: brdesktop
+ProjectName: BrDesktop
+ProjectUrl: http://brdesktop.org/
+Homepage: http://brdesktop.org/
+AliothUrl: http://qa.debian.org/developer.php?login=devel@listas.brdesktop.org
+ProjectList: devel at listas.brdesktop.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/brdesktop
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/brdesktop
+VcsDir: /svn/blends/projects/brdesktop/trunk/brdesktop
+CSS: ../inc/style.css
+PkgList: devel at listas.brdesktop.org
diff --git a/webtools/webconf/debian-accessibility.conf b/webtools/webconf/debian-accessibility.conf
new file mode 100644
index 0000000..fc900e8
--- /dev/null
+++ b/webtools/webconf/debian-accessibility.conf
@@ -0,0 +1,11 @@
+Blend: debian-accessibility
+ProjectName: Debian Accessibility
+ProjectUrl: http://www.debian.org/devel/debian-accessibility
+Homepage: http://www.debian.org/devel/debian-accessibility
+AliothUrl: http://alioth.debian.org/projects/accessibility
+ProjectList: debian-accessibility at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/accessibility
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/accessibility
+VcsDir: /svn/blends/projects/accessibility/trunk/debian-accessibility
+CSS: ../inc/style.css
+PkgList: debian-accessibility at lists.debian.org
diff --git a/webtools/webconf/debian-edu.conf b/webtools/webconf/debian-edu.conf
new file mode 100644
index 0000000..6e6e5dc
--- /dev/null
+++ b/webtools/webconf/debian-edu.conf
@@ -0,0 +1,14 @@
+Blend: debian-edu
+ProjectName: Debian Edu
+ProjectUrl: http://debian-edu.alioth.debian.org/
+Homepage: http://wiki.debian.org/DebianEdu
+AliothUrl: http://alioth.debian.org/projects/debian-edu
+ProjectList: debian-edu at lists.debian.org
+LogoUrl: http://blends.alioth.debian.org/edu/img/slx-tux.png
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/edu
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/edu
+#VcsDir: /svn/blends/projects/edu/trunk/debian-edu
+VcsDir: /svn/debian-edu/branches/wheezy/debian-edu
+CSS: ../inc/style.css
+PkgList: debian-edu at lists.debian.org
+DehsMail: tille at debian.org
diff --git a/webtools/webconf/debian-ezgo.conf b/webtools/webconf/debian-ezgo.conf
new file mode 100644
index 0000000..555fa51
--- /dev/null
+++ b/webtools/webconf/debian-ezgo.conf
@@ -0,0 +1,11 @@
+Blend: debian-ezgo
+ProjectName: Debian EzGo
+ProjectUrl: http://blends.alioth.debian.org/ezgo
+Homepage: http://ossacc.moe.edu.tw/uploads/datafile/ezgo7_linux/index.html
+AliothUrl: http://debian-ezgo.alioth.debian.org/
+ProjectList: ajqlee at debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/ezgo
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/ezgo
+VcsDir: /svn/blends/projects/ezgo/trunk/debian-ezgo
+CSS: ../inc/style.css
+PkgList: ajqlee at debian.org
diff --git a/webtools/webconf/debian-games.conf b/webtools/webconf/debian-games.conf
new file mode 100644
index 0000000..ebe9e09
--- /dev/null
+++ b/webtools/webconf/debian-games.conf
@@ -0,0 +1,11 @@
+Blend: debian-games
+ProjectName: Debian Games
+ProjectUrl: http://blends.alioth.debian.org/projects/debian-games
+Homepage: http://www.debian.org/devel/debian-games
+AliothUrl:
+ProjectList: debian-games at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/games
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/games
+VcsDir: /svn/blends/projects/games/trunk/debian-games
+CSS: ../inc/style.css
+PkgList: pkg-games-devel at lists.alioth.debian.org
diff --git a/webtools/webconf/debian-gis.conf b/webtools/webconf/debian-gis.conf
new file mode 100644
index 0000000..cb83974
--- /dev/null
+++ b/webtools/webconf/debian-gis.conf
@@ -0,0 +1,13 @@
+Blend: debian-gis
+ProjectName: Debian GIS
+ProjectUrl: http://pkg-grass.alioth.debian.org/
+Homepage: http://wiki.debian.org/DebianGis
+AliothUrl: http://alioth.debian.org/projects/debian-edu
+ProjectList: pkg-grass-devel at lists.alioth.debian.org
+LogoUrl: http://blends.alioth.debian.org/gis/img/debiangis_mollweide.png
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/gis
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/gis
+X-Old-VcsDir: /svn/pkg-grass/packages/debian-gis
+VcsDir: /svn/blends/projects/gis/trunk/debian-gis
+CSS: ../inc/style.css
+PkgList: pkg-grass-devel at lists.alioth.debian.org
diff --git a/webtools/webconf/debian-imaging.conf b/webtools/webconf/debian-imaging.conf
new file mode 100644
index 0000000..edc6c44
--- /dev/null
+++ b/webtools/webconf/debian-imaging.conf
@@ -0,0 +1,11 @@
+Blend: debian-imaging
+ProjectName: Debian Imaging
+ProjectUrl: http://blends.alioth.debian.org/imaging
+Homepage: http://blends.alioth.debian.org/imaging
+AliothUrl: http://blends.alioth.debian.org/imaging
+ProjectList: tille at debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/imaging
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/debian-imaging
+VcsDir: /svn/blends/projects/imaging/trunk/debian-imaging
+CSS: ../inc/style.css
+PkgList: tille at debian.org
diff --git a/webtools/webconf/debian-junior.conf b/webtools/webconf/debian-junior.conf
new file mode 100644
index 0000000..3703e89
--- /dev/null
+++ b/webtools/webconf/debian-junior.conf
@@ -0,0 +1,11 @@
+Blend: debian-junior
+ProjectName: Debian Junior
+ProjectUrl: http://blends.alioth.debian.org/projects/debian-jr
+Homepage: http://www.debian.org/devel/debian-jr
+AliothUrl:
+ProjectList: debian-junior at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/junior
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/junior
+VcsDir: /svn/blends/projects/junior/trunk/debian-junior
+CSS: ../inc/style.css
+PkgList: debian-jr at lists.debian.org
diff --git a/webtools/webconf/debian-lex.conf b/webtools/webconf/debian-lex.conf
new file mode 100644
index 0000000..8adb944
--- /dev/null
+++ b/webtools/webconf/debian-lex.conf
@@ -0,0 +1,11 @@
+Blend: debian-lex
+ProjectName: Debian Lex
+ProjectUrl: http://alioth.debian.org/projects/debian-lex
+Homepage: http://www.debian.org/devel/debian-lex/
+AliothUrl: http://blends.alioth.debian.org/lex
+ProjectList: debian-lex at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/lex
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/lex
+VcsDir: /svn/blends/projects/lex/trunk/debian-lex
+CSS: ../inc/style.css
+PkgList: debian-lex at lists.debian.org
diff --git a/webtools/webconf/debian-med.conf b/webtools/webconf/debian-med.conf
new file mode 100644
index 0000000..b4d8386
--- /dev/null
+++ b/webtools/webconf/debian-med.conf
@@ -0,0 +1,15 @@
+Blend: debian-med
+ProjectName: Debian Med
+ProjectUrl: http://debian-med.alioth.debian.org/
+Homepage: http://www.debian.org/devel/debian-med
+AliothUrl: http://alioth.debian.org/projects/debian-med
+ProjectList: debian-med at lists.debian.org
+LogoUrl: http://debian-med.alioth.debian.org/img/logo.png
+Ignore: alternative Logo: http://people.debian.org/~tille/debian-med/logos/med-06.jpg
+OutputDir: /var/lib/gforge/chroot/home/groups/debian-med/htdocs
+DataDir: /var/lib/gforge/chroot/home/groups/debian-med/data
+VcsDir: /svn/blends/projects/med/trunk/debian-med
+CSS: ../inc/style.css
+Advertising: _('Help us to see Debian used by medical practitioners and biomedical researchers! Join us on the <a href=\"http://alioth.debian.org/projects/debian-med\">Alioth page</a>.')
+PkgList: debian-med-packaging at lists.alioth.debian.org
+DehsMail: tille at debian.org
diff --git a/webtools/webconf/debian-multimedia.conf b/webtools/webconf/debian-multimedia.conf
new file mode 100644
index 0000000..305007e
--- /dev/null
+++ b/webtools/webconf/debian-multimedia.conf
@@ -0,0 +1,11 @@
+Blend: debian-multimedia
+ProjectName: Debian Multimedia
+ProjectUrl: http://blends.alioth.debian.org/multimedia
+Homepage: http://blends.alioth.debian.org/multimedia
+AliothUrl: http://blends.alioth.debian.org/multimedia
+ProjectList: pkg-multimedia-maintainers at lists.alioth.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/multimedia
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/debian-multimedia
+VcsDir: /svn/blends/projects/multimedia/trunk/debian-multimedia
+CSS: ../inc/style.css
+PkgList: pkg-multimedia-maintainers at lists.alioth.debian.org
diff --git a/webtools/webconf/debian-pan.conf b/webtools/webconf/debian-pan.conf
new file mode 100644
index 0000000..dda916b
--- /dev/null
+++ b/webtools/webconf/debian-pan.conf
@@ -0,0 +1,12 @@
+Blend: debian-pan
+ProjectName: PAN Blend
+ProjectUrl: http://wiki.debian.org/SynchrotronRadiationSoftware
+Homepage: http://wiki.debian.org/SynchrotronRadiationSoftware
+AliothUrl: http://alioth.debian.org/projects/debian-science
+ProjectList: debian-science at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/pan
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/pan
+VcsDir: /svn/blends/projects/pan/trunk/debian-pan
+CSS: ../inc/style.css
+PkgList: debian-science-maintainers at lists.alioth.debian.org
+DehsMail: tille at debian.org
diff --git a/webtools/webconf/debian-science.conf b/webtools/webconf/debian-science.conf
new file mode 100644
index 0000000..e5f0fa7
--- /dev/null
+++ b/webtools/webconf/debian-science.conf
@@ -0,0 +1,12 @@
+Blend: debian-science
+ProjectName: Debian Science
+ProjectUrl: http://wiki.debian.org/DebianScience
+Homepage: http://wiki.debian.org/DebianScience
+AliothUrl: http://alioth.debian.org/projects/debian-science
+ProjectList: debian-science at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/science
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/science
+VcsDir: /svn/blends/projects/science/trunk/debian-science
+CSS: ../inc/style.css
+PkgList: debian-science-maintainers at lists.alioth.debian.org
+DehsMail: tille at debian.org
diff --git a/webtools/webconf/debichem.conf b/webtools/webconf/debichem.conf
new file mode 100644
index 0000000..c1062ae
--- /dev/null
+++ b/webtools/webconf/debichem.conf
@@ -0,0 +1,11 @@
+Blend: debichem
+ProjectName: DebiChem
+ProjectUrl: http://alioth.debian.org/projects/debichem
+Homepage: http://debichem.alioth.debian.org/
+AliothUrl: http://alioth.debian.org/projects/debichem
+ProjectList: debichem-devel at lists.alioth.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/debichem
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/debichem
+VcsDir: /svn/blends/projects/debichem/trunk/debichem
+CSS: ../inc/style.css
+PkgList: debichem-devel at lists.alioth.debian.org
diff --git a/webtools/webconf/debug.conf b/webtools/webconf/debug.conf
new file mode 100644
index 0000000..cb551d0
--- /dev/null
+++ b/webtools/webconf/debug.conf
@@ -0,0 +1,11 @@
+Blend: debug
+ProjectName: Debug
+ProjectUrl: http://blends.debian.net/debug
+Homepage: http://blends.debian.net/debug
+AliothUrl: http://alioth.debian.org/projects/blends
+ProjectList: none at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/debug
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/debug
+VcsDir: /svn/blends/projects/debug
+CSS: ../inc/style.css
+PkgList: tillea at gmail.com
diff --git a/webtools/webconf/rest-test.conf b/webtools/webconf/rest-test.conf
new file mode 100644
index 0000000..869b9e5
--- /dev/null
+++ b/webtools/webconf/rest-test.conf
@@ -0,0 +1,12 @@
+Blend: rest-test
+ProjectName: Test reST formatting
+ProjectUrl: http://blends.debian.net/rest-test
+Homepage: http://blends.debian.net/rest-test
+AliothUrl: http://alioth.debian.org/projects/blends
+ProjectList: none at lists.debian.org
+OutputDir: /var/lib/gforge/chroot/home/groups/blends/htdocs/rest-test
+DataDir: /var/lib/gforge/chroot/home/groups/blends/data/rest-test
+VcsDir: /svn/blends/projects/debug
+CSS: ../inc/style.css
+PkgList: tillea at gmail.com
+RenderingLib: rest
--
Static and dynamic websites for Debian Pure Blends
More information about the Blends-commit
mailing list