diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9cafb92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +data/ +.*.swp +*.pyc +*.egg-info/ +.coverage +.ropeproject/ +*.mo +*.pot +tags +debianmemberportfolio/model/keyringcache.db +.idea/ diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..7cb22ef --- /dev/null +++ b/ChangeLog @@ -0,0 +1,87 @@ +2020-02-22 Jan Dittberner + * Update translations + +2018-05-12 Jan Dittberner + * add patch by Paul Wise to provide Repology information links + * Update translations + +2018-02-09 Jan Dittberner + * add patch by Paul Wise to provide Salsa links + * Update translations + +2015-11-12 Jan Dittberner + * port to Python 3 and Flask + +2015-03-09 Jan Dittberner + * apply patch for DMD link by Paul Wise + +2015-02-20 Jan Dittberner + * add Jessie requirements file + * fix language check if no Accept-Language header is sent + +2014-10-14 Jan Dittberner + * add patch by Paul Wise to use to update DUCK link to new static page + * add patch by Paul Wise to remove generated files from version + control + * add patch by Paul Wise to use https in links, comments, docstrings, + etc. + +2014-04-10 Jan Dittberner + * add patch by Paul Wise to use SSL where available + * add patch by Paul Wise to fix link to the contributors site + +2014-02-09 Jan Dittberner + * renamed module from ddportfolio to debianmemberportfolio + * add patch for DUCK URL by Paul Wise + +2014-02-08 Jan Dittberner + * moved to new server + * ported to Wheezy versions of the dependencies + * applied patches by Paul Wise and Olivier Berger + * update Sphinx documentation + * check responses in controller unit tests + * update copyright years of files + +2013-02-24 Jan Dittberner + * add sphinx documentation + * applied multiple patches by Paul Wise + +2012-12-08 Jan Dittberner + + * include patch for Debian URL checker by Paul Wise + * add link to Transifex translation project + +2012-11-21 Jan Dittberner + + * add pip requirements file with Debian Squeeze versions + * add indonesian translation by Izharul Haq + +2012-06-19 Jan Dittberner + + * add portuguese (Brasil) translation by Daniel Manzano + +2012-05-18 Jan Dittberner + + * add french translation by Stéphane Aulery + +2012-03-04 Jan Dittberner + + * update debtags location + +2012-01-07 Jan Dittberner + + * rename Debian Developer to Debian Member, change URL to + portfolio.debian.net + * PEP-8 compliance + +2011-03-06 Jan Dittberner + + * add one year bug history graph URL (http://glandium.org/blog/?p=1817) + +2010-06-03 Jan Dittberner + + * add support for extra parameters forumsid and wikihomepage + * add new patterns wiki and forum to section membership + * update copyright information + * add support for non-URL type information + * add ssh commands for MIA, owned debian.net-Domains and group membership diff --git a/MANIFEST.in b/MANIFEST.in index a0348e0..5df1764 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,2 @@ -recursive-include ddportfolioservice/public * -recursive-include ddportfolioservice/templates * +recursive-include debianmemberportfolio/static * +recursive-include debianmemberportfolio/templates * diff --git a/README.txt b/README.txt index 578eba3..1748835 100644 --- a/README.txt +++ b/README.txt @@ -1,19 +1,11 @@ -This file is for you to describe the ddportfolioservice application. Typically -you would include information such as the information below: -Installation and Setup -====================== +This is the source code for the Debian Member Portfolio Service +application [0]. -Install ``ddportfolioservice`` using easy_install:: +Cf. https://debian-member-portfolio-service.readthedocs.org/ for more +documentation (or its source in docs/source/devdocs.rst), including +how to configure a development environment. - easy_install ddportfolioservice -Make a config file as follows:: +[0] https://wiki.debian.org/DDPortfolio - paster make-config ddportfolioservice config.ini - -Tweak the config file as appropriate and then setup the application:: - - paster setup-app config.ini - -Then you are ready to go. diff --git a/agpl-3.0.txt b/agpl-3.0.txt index dba13ed..be3f7b2 100644 --- a/agpl-3.0.txt +++ b/agpl-3.0.txt @@ -1,7 +1,7 @@ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -643,7 +643,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -658,4 +658,4 @@ specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see -. +. diff --git a/babel.cfg b/babel.cfg new file mode 100644 index 0000000..f0234b3 --- /dev/null +++ b/babel.cfg @@ -0,0 +1,3 @@ +[python: **.py] +[jinja2: **/templates/**.html] +extensions=jinja2.ext.autoescape,jinja2.ext.with_ diff --git a/config.py b/config.py new file mode 100644 index 0000000..a77f89b --- /dev/null +++ b/config.py @@ -0,0 +1,33 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service Flask configuration +# +# Copyright © 2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +WTF_CSRF_ENABLED = False + +# available languages +LANGUAGES = { + 'en': 'English', + 'de': 'Deutsch', + 'fr': 'Français', + 'id': 'Bahasa Indonesia', + 'pt_BR': 'Portuguese (Brazil)' +} diff --git a/ddportfolioservice/__init__.py b/ddportfolioservice/__init__.py deleted file mode 100644 index 98fc07b..0000000 --- a/ddportfolioservice/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/config/__init__.py b/ddportfolioservice/config/__init__.py deleted file mode 100644 index 5d13c6e..0000000 --- a/ddportfolioservice/config/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service config package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/config/environment.py b/ddportfolioservice/config/environment.py deleted file mode 100644 index 4f4b8dc..0000000 --- a/ddportfolioservice/config/environment.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service environment configuration -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""Pylons environment configuration""" -import os - -from pylons import config - -import ddportfolioservice.lib.app_globals as app_globals -import ddportfolioservice.lib.helpers -from ddportfolioservice.config.routing import make_map - -def load_environment(global_conf, app_conf): - """Configure the Pylons environment via the ``pylons.config`` - object - """ - # Pylons paths - root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - paths = dict(root=root, - controllers=os.path.join(root, 'controllers'), - static_files=os.path.join(root, 'public'), - templates=[os.path.join(root, 'templates')]) - - # Initialize config with the basic options - config.init_app(global_conf, app_conf, package='ddportfolioservice', - template_engine='mako', paths=paths) - - config['routes.map'] = make_map() - config['pylons.g'] = app_globals.Globals() - config['pylons.h'] = ddportfolioservice.lib.helpers - - # Customize templating options via this variable - tmpl_options = config['buffet.template_options'] - - # CONFIGURATION OPTIONS HERE (note: all config options will override - # any Pylons config options) diff --git a/ddportfolioservice/config/middleware.py b/ddportfolioservice/config/middleware.py deleted file mode 100644 index 4cc9378..0000000 --- a/ddportfolioservice/config/middleware.py +++ /dev/null @@ -1,79 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service middleware configuration -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""Pylons middleware initialization""" -from paste.cascade import Cascade -from paste.registry import RegistryManager -from paste.urlparser import StaticURLParser -from paste.deploy.converters import asbool - -from pylons import config -from pylons.error import error_template -from pylons.middleware import error_mapper, ErrorDocuments, ErrorHandler, \ - StaticJavascripts -from pylons.wsgiapp import PylonsApp - -from ddportfolioservice.config.environment import load_environment - -def make_app(global_conf, full_stack=True, **app_conf): - """Create a Pylons WSGI application and return it - - ``global_conf`` - The inherited configuration for this application. Normally from - the [DEFAULT] section of the Paste ini file. - - ``full_stack`` - Whether or not this application provides a full WSGI stack (by - default, meaning it handles its own exceptions and errors). - Disable full_stack when this application is "managed" by - another WSGI middleware. - - ``app_conf`` - The application's local configuration. Normally specified in the - [app:] section of the Paste ini file (where - defaults to main). - """ - # Configure the Pylons environment - load_environment(global_conf, app_conf) - - # The Pylons WSGI app - app = PylonsApp() - - # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) - - if asbool(full_stack): - # Handle Python exceptions - app = ErrorHandler(app, global_conf, error_template=error_template, - **config['pylons.errorware']) - - # Display error documents for 401, 403, 404 status codes (and - # 500 when debug is disabled) - app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf) - - # Establish the Registry for this application - app = RegistryManager(app) - - # Static files - javascripts_app = StaticJavascripts() - static_app = StaticURLParser(config['pylons.paths']['static_files']) - app = Cascade([static_app, javascripts_app, app]) - return app diff --git a/ddportfolioservice/config/routing.py b/ddportfolioservice/config/routing.py deleted file mode 100644 index 19c0972..0000000 --- a/ddportfolioservice/config/routing.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service routing configuration -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""Routes configuration - -The more specific and detailed routes should be defined first so they -may take precedent over the more generic routes. For more information -refer to the routes manual at http://routes.groovie.org/docs/ -""" -from pylons import config -from routes import Mapper - -def make_map(): - """Create, configure and return the routes Mapper""" - map = Mapper(directory=config['pylons.paths']['controllers'], - always_scan=config['debug']) - - # The ErrorController route (handles 404/500 error pages); it should - # likely stay at the top, ensuring it can always be resolved - map.connect('error/:action/:id', controller='error') - - # CUSTOM ROUTES HERE - map.connect('', controller='ddportfolio', action='index') - map.connect('result', controller='ddportfolio', action='handle_post') - map.connect(':controller/:action/:id') - map.connect('*url', controller='template', action='view') - - return map diff --git a/ddportfolioservice/controllers/__init__.py b/ddportfolioservice/controllers/__init__.py deleted file mode 100644 index 6074769..0000000 --- a/ddportfolioservice/controllers/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service controllers package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py deleted file mode 100644 index 0ccf559..0000000 --- a/ddportfolioservice/controllers/ddportfolio.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service DdportfolioController -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -import logging -import simplejson - -from ddportfolioservice.lib.base import * -from ddportfolioservice.model.form import * -from ddportfolioservice.model.urlbuilder import * - -log = logging.getLogger(__name__) - -class DdportfolioController(BaseController): - - def index(self): - # Return a rendered template - # return render('/some/template.mako') - # or, Return a response - return render('/showform.mako') - - def handle_post(self): - schema = DeveloperData() - try: - form_result = schema.to_python(request.params) - except formencode.validators.Invalid, error: - c.messages = { 'errors' : error.unpack_errors() } - return render('/showform.mako') - data = build_urls(form_result) - if 'mode' in request.params and request.params['mode'] == 'json': - response.headers['Content-Type'] = 'text/json' - return simplejson.dumps(data['data']) - c.urldata = data - return render('/showurls.mako') diff --git a/ddportfolioservice/controllers/error.py b/ddportfolioservice/controllers/error.py deleted file mode 100644 index 114f52a..0000000 --- a/ddportfolioservice/controllers/error.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service ErrorController -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -import cgi -import os.path - -from paste.urlparser import StaticURLParser -from pylons.middleware import error_document_template, media_path - -from ddportfolioservice.lib.base import * - -class ErrorController(BaseController): - """Generates error documents as and when they are required. - - The ErrorDocuments middleware forwards to ErrorController when error - related status codes are returned from the application. - - This behaviour can be altered by changing the parameters to the - ErrorDocuments middleware in your config/middleware.py file. - - """ - def document(self): - """Render the error document""" - page = error_document_template % \ - dict(prefix=request.environ.get('SCRIPT_NAME', ''), - code=cgi.escape(request.params.get('code', '')), - message=cgi.escape(request.params.get('message', ''))) - return page - - def img(self, id): - """Serve Pylons' stock images""" - return self._serve_file(os.path.join(media_path, 'img'), id) - - def style(self, id): - """Serve Pylons' stock stylesheets""" - return self._serve_file(os.path.join(media_path, 'style'), id) - - def _serve_file(self, root, path): - """Call Paste's FileApp (a WSGI application) to serve the file - at the specified path - """ - static = StaticURLParser(root) - request.environ['PATH_INFO'] = '/%s' % path - return static(request.environ, self.start_response) diff --git a/ddportfolioservice/controllers/template.py b/ddportfolioservice/controllers/template.py deleted file mode 100644 index 817a4c4..0000000 --- a/ddportfolioservice/controllers/template.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service TemplateController -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -from ddportfolioservice.lib.base import * - -class TemplateController(BaseController): - - def view(self, url): - """By default, the final controller tried to fulfill the request - when no other routes match. It may be used to display a template - when all else fails, e.g.:: - - def view(self, url): - return render('/%s' % url) - - Or if you're using Mako and want to explicitly send a 404 (Not - Found) response code when the requested template doesn't exist:: - - import mako.exceptions - - def view(self, url): - try: - return render('/%s' % url) - except mako.exceptions.TopLevelLookupException: - abort(404) - - By default this controller aborts the request with a 404 (Not - Found) - """ - abort(404) diff --git a/ddportfolioservice/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot deleted file mode 100644 index 1933a4e..0000000 --- a/ddportfolioservice/i18n/ddportfolioservice.pot +++ /dev/null @@ -1,63 +0,0 @@ -# Translations template for ddportfolioservice. -# Copyright (C) 2009 ORGANIZATION -# This file is distributed under the same license as the ddportfolioservice -# project. -# FIRST AUTHOR , 2009. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ddportfolioservice 0.1\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2009-01-21 22:04+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.1\n" - -#: ddportfolioservice/templates/showform.mako:26 -#: ddportfolioservice/templates/showform.mako:32 -#: ddportfolioservice/templates/showurls.mako:25 -#: ddportfolioservice/templates/showurls.mako:31 -msgid "Debian Developer Portfolio" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:33 -msgid "Name:" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:39 -msgid "E-Mail address:" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:45 -msgid "User name:" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:51 -msgid "Output format:" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:52 -msgid "HTML" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:52 -msgid "JSON" -msgstr "" - -#: ddportfolioservice/templates/showform.mako:53 -msgid "Build DD Portfolio URLs" -msgstr "" - -#: ddportfolioservice/templates/showurls.mako:42 -msgid "Errors during URL creation" -msgstr "" - -#: ddportfolioservice/templates/showurls.mako:52 -msgid "Restart" -msgstr "" - diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo deleted file mode 100644 index 291f501..0000000 Binary files a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo and /dev/null differ diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po deleted file mode 100644 index 2ea7c5a..0000000 --- a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po +++ /dev/null @@ -1,63 +0,0 @@ -# German translations for ddportfolioservice. -# Copyright (C) 2009 Jan Dittberner -# This file is distributed under the same license as the ddportfolioservice -# project. -# Jan Dittberner , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: ddportfolioservice 0.1\n" -"Report-Msgid-Bugs-To: jan@dittberner.info\n" -"POT-Creation-Date: 2009-01-20 23:13+0100\n" -"PO-Revision-Date: 2009-01-21 22:06+0100\n" -"Last-Translator: Jan Dittberner \n" -"Language-Team: de \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.1\n" - -#: ddportfolioservice/templates/showform.mako:26 -#: ddportfolioservice/templates/showform.mako:32 -#: ddportfolioservice/templates/showurls.mako:25 -#: ddportfolioservice/templates/showurls.mako:31 -msgid "Debian Developer Portfolio" -msgstr "Debian-Entwicklerportfolio" - -#: ddportfolioservice/templates/showform.mako:33 -msgid "Name:" -msgstr "Name:" - -#: ddportfolioservice/templates/showform.mako:39 -msgid "E-Mail address:" -msgstr "E-Mailadresse:" - -#: ddportfolioservice/templates/showform.mako:45 -msgid "User name:" -msgstr "Benutzername:" - -#: ddportfolioservice/templates/showform.mako:51 -msgid "Output format:" -msgstr "Ausgabeformat:" - -#: ddportfolioservice/templates/showform.mako:52 -msgid "HTML" -msgstr "HTML" - -#: ddportfolioservice/templates/showform.mako:52 -msgid "JSON" -msgstr "JSON" - -#: ddportfolioservice/templates/showform.mako:53 -msgid "Build DD Portfolio URLs" -msgstr "Debian-Entwicklerportfolio-URLs bauen" - -#: ddportfolioservice/templates/showurls.mako:42 -msgid "Errors during URL creation" -msgstr "Fehler bei der URL-Erzeugung" - -#: ddportfolioservice/templates/showurls.mako:52 -msgid "Restart" -msgstr "Neu beginnen" - diff --git a/ddportfolioservice/lib/__init__.py b/ddportfolioservice/lib/__init__.py deleted file mode 100644 index 9017306..0000000 --- a/ddportfolioservice/lib/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service lib package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/lib/app_globals.py b/ddportfolioservice/lib/app_globals.py deleted file mode 100644 index 7969caa..0000000 --- a/ddportfolioservice/lib/app_globals.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service application Globals -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""The application's Globals object""" -from pylons import config - -class Globals(object): - """Globals acts as a container for objects available throughout the - life of the application - """ - - def __init__(self): - """One instance of Globals is created during application - initialization and is available during requests via the 'g' - variable - """ - pass diff --git a/ddportfolioservice/lib/base.py b/ddportfolioservice/lib/base.py deleted file mode 100644 index 9dc819c..0000000 --- a/ddportfolioservice/lib/base.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service base controller -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""The base Controller API - -Provides the BaseController class for subclassing, and other objects -utilized by Controllers. -""" -from pylons import c, cache, config, g, request, response, session -from pylons.controllers import WSGIController -from pylons.controllers.util import abort, etag_cache, redirect_to -from pylons.decorators import jsonify, validate -from pylons.i18n import _, ungettext, N_, add_fallback -from pylons.templating import render - -import ddportfolioservice.lib.helpers as h -import ddportfolioservice.model as model - -class BaseController(WSGIController): - - def __call__(self, environ, start_response): - """Invoke the Controller""" - # WSGIController.__call__ dispatches to the Controller method - # the request is routed to. This routing information is - # available in environ['pylons.routes_dict'] - # set language environment - for lang in request.languages: - try: - add_fallback(lang) - except: - pass - c.messages = { 'errors': [], 'messages': [] } - return WSGIController.__call__(self, environ, start_response) - -# Include the '_' function in the public names -__all__ = [__name for __name in locals().keys() if not __name.startswith('_') \ - or __name == '_'] diff --git a/ddportfolioservice/lib/helpers.py b/ddportfolioservice/lib/helpers.py deleted file mode 100644 index cd99905..0000000 --- a/ddportfolioservice/lib/helpers.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service webhelpers -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""Helper functions - -Consists of functions to typically be used within templates, but also -available to Controllers. This module is available to both as 'h'. -""" -from webhelpers import * -from webhelpers.rails import * diff --git a/ddportfolioservice/model/__init__.py b/ddportfolioservice/model/__init__.py deleted file mode 100644 index f5029b6..0000000 --- a/ddportfolioservice/model/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service model package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini deleted file mode 100644 index 719d3d6..0000000 --- a/ddportfolioservice/model/ddportfolio.ini +++ /dev/null @@ -1,71 +0,0 @@ -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -[DEFAULT] -keyring.dir=/usr/share/keyrings - -[overview] -urls=ddpo,alladdresses -ddpo.pattern=http://qa.debian.org/developer.php?login=%(email)s -alladdresses.pattern=http://qa.debian.org/developer.php?login=%(name)s - -[bugs] -urls=received,reported,bugstats,usertags,searchall,wnpp -received.pattern=http://bugs.debian.org/%(email)s -reported.pattern=http://bugs.debian.org/from:%(email)s -bugstats.pattern=http://asdfasdf.debian.net/~tar/bugstats/?%(email)s -usertags.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s -searchall.pattern=http://merkel.debian.org/~don/cgi/search.cgi?phrase=%(name)s&search=search -wnpp.pattern=http://qa.debian.org/developer.php?wnpp=%(email)s - -[build] -urls=buildd,igloo,svnbuildstat -buildd.pattern=http://buildd.debian.org/pkg.cgi?maint=%(email)s -igloo.pattern=http://oldpeople.debian.org/~igloo/status.php?email=%(email)s&thin=on -svnbuildstat.pattern=http://svnbuildstat.debian.net/packages/list/%(email)s - -[qa] -urls=lintian,lintianfull,dehs -lintian.pattern=http://lintian.debian.org/maintainer/%(email)s.html -lintianfull.pattern=http://lintian.debian.org/full/%(email)s.html -dehs.pattern=http://dehs.alioth.debian.org/report.php?login=%(email)s - -[upload] -urls=keylog -keylog.pattern=http://merkel.debian.org/~enrico/keylog/%(gpgfp)s.html - -[lists] -urls=dolists,adolists,gmane -dolists.pattern=http://lists.debian.org/cgi-bin/search?author=%(name)s&sort=date -adolists.pattern=http://www.google.com/search?q=site%%3Alists.alioth.debian.org+%%22%(name)s%%22 -gmane.pattern=http://search.gmane.org/?email=%(name)s&group=gmane.linux.debian.* - -[files] -urls=people,alioth -people.pattern=http://people.debian.org/~%(username)s/ -alioth.pattern=http://alioth.debian.org/~%(username)s/ - -[membership] -urls=nm,db,alioth -nm.pattern=https://nm.debian.org/nmstatus.php?email=%(email)s -db.pattern=http://db.debian.org/search.cgi?uid=%(username)s&dosearch=Search -alioth.pattern=http://alioth.debian.org/users/%(username)s/ - -[miscellaneous] -urls=debtags,links -debtags.pattern=http://debtags.alioth.debian.org/todo.html?maint=%(email)s -links.pattern=http://www.google.com/search?hl=en&lr=&q=site%%3Adebian.org+%%22%(name)s%%22+-site%%3Anm.debian.org+-site%%3Alintian.debian.org+-site%%3Abugs.debian.org+-site%%3Alists.debian.org+-site%%3Apackages.debian.org+-site%%3Alists.alioth.debian.org+-site%%3Aftp.debian.org++-site%%3Apackages.qa.debian.org++-site%%3Aftp*.*.debian.org+-inurl%%3Adebian.org%%2Fdevel%%2Fpeople.+-inurl%%3Aindices%%2FMaintainers+-inurl%%3Adebian.org%%2Fdebian%%2Fproject++-inurl%%3A%%2Fdists%%2F&btnG=Search diff --git a/ddportfolioservice/model/form.py b/ddportfolioservice/model/form.py deleted file mode 100644 index a727aa9..0000000 --- a/ddportfolioservice/model/form.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service form handling model -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -import formencode - -class DeveloperData(formencode.Schema): - """Validation schema for DeveloperData.""" - allow_extra_fields = True - filter_extra_fields = True - name = formencode.validators.String(not_empty=True) - email = formencode.validators.Email(not_empty=True) - username = formencode.validators.PlainText(not_empty=True) - # TODO: add validation for fingerprint field - # TODO: add validation for mode field diff --git a/ddportfolioservice/model/keyfinder.py b/ddportfolioservice/model/keyfinder.py deleted file mode 100644 index f70566c..0000000 --- a/ddportfolioservice/model/keyfinder.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service key finder module -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -""" -This module provides tools for finding PGP key information from a -given keyring. -""" - -db = None - -def _get_keyring_cache(): - global db - if not db: - import anydbm - import pkg_resources - import os.path - filename = pkg_resources.resource_filename(__name__, - 'keyringcache') - assert os.path.exists(filename) and os.path.isfile(filename) - db = anydbm.open(filename, 'r') - return db - -def _get_cached(cachekey): - cache = _get_keyring_cache() - if cachekey in cache: - return cache[cachekey].split(':') - return None - -def getFingerprintByEmail(email): - """Gets the fingerprints associated with the given email address - if available.""" - return _get_cached('fpr:email:%s' % email) - - -def getRealnameByEmail(email): - """Gets the real names associated with the given email address if - available.""" - return _get_cached('name:email:%s' % email) - - -def getLoginByEmail(email): - """Gets the logins associated with the given email address if - available.""" - return _get_cached('login:email:%s' % email) - - -def getLoginByFingerprint(fpr): - """Gets the login associated with the given fingerprint if - available.""" - return _get_cached('login:fpr:%s' % fpr) diff --git a/ddportfolioservice/model/keyringanalyzer.py b/ddportfolioservice/model/keyringanalyzer.py deleted file mode 100644 index 7ef1cbe..0000000 --- a/ddportfolioservice/model/keyringanalyzer.py +++ /dev/null @@ -1,131 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service application key ring analyzer tool -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -""" -This is a tool that analyzes GPG and PGP keyrings and stores the -retrieved data in a file database. The tool was inspired by Debian -qa's carnivore. -""" - -import anydbm -import pkg_resources -import glob -import ConfigParser -import os - - -def _get_keyrings(): - """Gets the available keyring files from the keyring directory - configured in ddportfolio.ini.""" - my_config = ConfigParser.ConfigParser() - my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini')) - keyrings = glob.glob(my_config.get('DEFAULT', 'keyring.dir') + - '/*.gpg') - keyrings.extend(glob.glob(my_config.get('DEFAULT', 'keyring.dir') + - '/*.pgp')) - keyrings.sort() - return keyrings - - -def _parse_uid(uid): - """Parse a uid of the form 'Real Name ' into - email and realname parts.""" - uid = uid.strip() - # First, strip comment - s = uid.find('(') - e = uid.find(')') - if s >= 0 and e >= 0: - uid = uid[:s] + uid[e+1:] - s = uid.find('<') - e = uid.find('>') - email = None - if s >= 0 and e >= 0: - email = uid[s+1:e] - uid = uid[:s] + uid[e+1:] - uid = uid.strip() - if not email and uid.find('@') >= 0: - email, uid = uid, email - return (uid, email) - -resultdict = {} - -def _get_canonical(key): - if not key in resultdict: - resultdict[key] = [] - return key - - -def _add_to_result(key, newvalue): - thekey = _get_canonical(key) - if newvalue not in resultdict[thekey]: - resultdict[thekey].append(newvalue) - - -def process_keyrings(): - """Process the keyrings and store the extracted data in an anydbm - file.""" - for keyring in _get_keyrings(): - contents = os.popen("gpg --no-default-keyring \ - --no-expensive-trust-checks \ - --keyring %s --list-keys \ - --with-colons --fingerprint" % (keyring)) - fpr = None - entry = None - lastpub = None - for line in contents.readlines(): - items = line.split(':') - uid = None - if items[0] == 'pub': - fpr = entry = None - lastpub = items[9].strip() - continue - elif items[0] == 'fpr': - fpr = items[9].strip() - uid = lastpub - elif items[0] == 'uid': - uid = items[9].strip() - else: - continue - # Do stuff with 'uid' - uid, email = _parse_uid(uid) - if email: - if email.endswith('@debian.org'): - login = email[0:-len('@debian.org')] - _add_to_result('login:email:%s' % email, login) - _add_to_result('login:fpr:%s' % fpr, login) - _add_to_result('fpr:login:%s' % login, fpr) - _add_to_result('fpr:email:%s' % email, fpr) - _add_to_result('email:fpr:%s' % fpr, email) - if uid: - _add_to_result('name:fpr:%s' % fpr, uid) - if email: - _add_to_result('name:email:%s' % email, uid) - contents.close() - db = anydbm.open(pkg_resources.resource_filename(__name__, - 'keyringcache'), 'c') - for key in resultdict: - db[key] = ":".join(resultdict[key]) - db.close() - - -if __name__ == '__main__': - process_keyrings() diff --git a/ddportfolioservice/model/urlbuilder.py b/ddportfolioservice/model/urlbuilder.py deleted file mode 100644 index e5cd8ff..0000000 --- a/ddportfolioservice/model/urlbuilder.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- python -*- -# -*- coding: utf8 -*- -# -# DDPortfolio service url builder -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -""" -This module provides the function build_urls to build personalized -URLs using the given information and the URL patterns defined in -ddportfolio.ini. -""" - -import ConfigParser -import pkg_resources -from ddportfolioservice.model import keyfinder -from urllib import quote_plus - -my_config = ConfigParser.ConfigParser() -my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini')) - - -def build_urls(fields): - """Build personalized URLs using the developer information in - fields.""" - data = {} - errors = {} - qfields = dict([(key, quote_plus(fields[key].encode('utf8'))) \ - for key in fields]) - fpr = keyfinder.getFingerprintByEmail(fields['email'].encode('utf8')) - if fpr: - qfields['gpgfp'] = fpr[0] - for section in my_config.sections(): - if my_config.has_option(section, 'urls'): - for url in my_config.get(section, 'urls').split(','): - if my_config.has_option(section, url + '.pattern'): - try: - data[section + '.' + url] = \ - my_config.get(section, url + '.pattern', - False, qfields) - except Exception, e: - errors['%s.%s.pattern' % (section, url)] = \ - [my_config.get(section, '%s.pattern' % url, - True), str(e)] - return {'data' : data, 'errors' : errors} diff --git a/ddportfolioservice/public/stylesheets/style.css b/ddportfolioservice/public/stylesheets/style.css deleted file mode 100644 index db49c40..0000000 --- a/ddportfolioservice/public/stylesheets/style.css +++ /dev/null @@ -1,4 +0,0 @@ -.errormsg { - font-size: 80%; - color: red; -} \ No newline at end of file diff --git a/ddportfolioservice/templates/showform.mako b/ddportfolioservice/templates/showform.mako deleted file mode 100644 index 7a64037..0000000 --- a/ddportfolioservice/templates/showform.mako +++ /dev/null @@ -1,57 +0,0 @@ -<%doc> -Template for the data input form. -Copyright (c) 2009 Jan Dittberner - -This file is part of DDPortfolio service. - -DDPortfolio service is free software: you can redistribute it and/or -modify it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -DDPortfolio service is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public -License along with this program. If not, see -. - - - - - ${_('Debian Developer Portfolio')} - ${h.stylesheet_link_tag('style')} - - - ${h.start_form(h.url_for(action='handle_post'), method='post')} -
- ${_('Debian Developer Portfolio')} -
- ${h.text_field('name', value=request.params.get('name', None))}
-
- ${h.text_field('email', value=request.params.get('email', None))}
-
- ${h.text_field('username', value=request.params.get('username', None))}
-
- ${_('HTML')} ${h.radio_button('mode', 'html', checked=(request.params.get('mode', 'html') == 'html'))} ${_('JSON')} ${h.radio_button('mode', 'json', checked=(request.params.get('mode', 'html') == 'json'))}
- ${h.submit(value=_('Build DD Portfolio URLs'))} -
- ${h.end_form()} - - diff --git a/ddportfolioservice/templates/showurls.mako b/ddportfolioservice/templates/showurls.mako deleted file mode 100644 index 8aae84b..0000000 --- a/ddportfolioservice/templates/showurls.mako +++ /dev/null @@ -1,54 +0,0 @@ -<%doc> -Template for the url output page. -Copyright (c) 2009 Jan Dittberner - -This file is part of DDPortfolio service. - -DDPortfolio service is free software: you can redistribute it and/or -modify it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -DDPortfolio service is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public -License along with this program. If not, see -. - - - - - ${_('Debian Developer Portfolio')} - ${h.stylesheet_link_tag('style')} - - - % if c.urldata['data']: -
- ${_('Debian Developer Portfolio')} -
    - % for key in c.urldata['data']: -
  • ${key}
    ${h.link_to(h.truncate( - c.urldata['data'][key], length=120), c.urldata['data'][key])}
  • - % endfor -
-
- % endif - % if c.urldata['errors']: -
- ${_('Errors during URL creation')} -
    - % for key in c.urldata['errors']: -
  • ${key}
    - ${c.urldata['errors'][key][0]}
    - ${c.urldata['errors'][key][1]}
  • - % endfor -
-
- % endif -

${h.link_to(_('Restart'), h.url_for(action='index'))}

- - diff --git a/ddportfolioservice/tests/__init__.py b/ddportfolioservice/tests/__init__.py deleted file mode 100644 index e3d153d..0000000 --- a/ddportfolioservice/tests/__init__.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service tests package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""Pylons application test package - -When the test runner finds and executes tests within this directory, -this file will be loaded to setup the test environment. - -It registers the root directory of the project in sys.path and -pkg_resources, in case the project hasn't been installed with -setuptools. It also initializes the application via websetup (paster -setup-app) with the project's test.ini configuration file. -""" -import os -import sys -from unittest import TestCase - -import pkg_resources -import paste.fixture -import paste.script.appinstall -from paste.deploy import loadapp -from routes import url_for - -__all__ = ['url_for', 'TestController'] - -here_dir = os.path.dirname(os.path.abspath(__file__)) -conf_dir = os.path.dirname(os.path.dirname(here_dir)) - -sys.path.insert(0, conf_dir) -pkg_resources.working_set.add_entry(conf_dir) -pkg_resources.require('Paste') -pkg_resources.require('PasteScript') - -test_file = os.path.join(conf_dir, 'test.ini') -cmd = paste.script.appinstall.SetupCommand('setup-app') -cmd.run([test_file]) - -class TestController(TestCase): - - def __init__(self, *args, **kwargs): - wsgiapp = loadapp('config:test.ini', relative_to=conf_dir) - self.app = paste.fixture.TestApp(wsgiapp) - TestCase.__init__(self, *args, **kwargs) diff --git a/ddportfolioservice/tests/functional/__init__.py b/ddportfolioservice/tests/functional/__init__.py deleted file mode 100644 index 528ca53..0000000 --- a/ddportfolioservice/tests/functional/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service functional tests package -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/tests/functional/test_ddportfolio.py b/ddportfolioservice/tests/functional/test_ddportfolio.py deleted file mode 100644 index 7c422f4..0000000 --- a/ddportfolioservice/tests/functional/test_ddportfolio.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service DdportfolioController test -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -from ddportfolioservice.tests import * - -class TestDdportfolioController(TestController): - - def test_index(self): - response = self.app.get(url_for(controller='ddportfolio')) - # Test response... diff --git a/ddportfolioservice/tests/test_models.py b/ddportfolioservice/tests/test_models.py deleted file mode 100644 index 1bd689b..0000000 --- a/ddportfolioservice/tests/test_models.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service model tests -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# diff --git a/ddportfolioservice/websetup.py b/ddportfolioservice/websetup.py deleted file mode 100644 index fcbacd8..0000000 --- a/ddportfolioservice/websetup.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- python -*- -# -*- coding: utf-8 -*- -# -# DDPortfolio service websetup -# Copyright (c) 2009 Jan Dittberner -# -# This file is part of DDPortfolio service. -# -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . -# -"""Setup the ddportfolioservice application""" -import logging - -from paste.deploy import appconfig -from pylons import config - -from ddportfolioservice.config.environment import load_environment - -log = logging.getLogger(__name__) - -def setup_config(command, filename, section, vars): - """Place any commands to setup ddportfolioservice here""" - conf = appconfig('config:' + filename) - load_environment(conf.global_conf, conf.local_conf) diff --git a/debianmemberportfolio/__init__.py b/debianmemberportfolio/__init__.py new file mode 100644 index 0000000..1667908 --- /dev/null +++ b/debianmemberportfolio/__init__.py @@ -0,0 +1,31 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service package +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from flask import Flask +from flask_babel import Babel + +app = Flask(__name__) +babel = Babel(app) +app.config.from_object('config') + +from debianmemberportfolio import views diff --git a/debianmemberportfolio/forms.py b/debianmemberportfolio/forms.py new file mode 100644 index 0000000..24872ee --- /dev/null +++ b/debianmemberportfolio/forms.py @@ -0,0 +1,73 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service views +# +# Copyright © 2015-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +from __future__ import unicode_literals + +from flask_babel import gettext as _ +from flask_wtf import FlaskForm +from wtforms import IntegerField, StringField, RadioField +from wtforms.validators import ( + AnyOf, DataRequired, Email, Length, Optional, Regexp +) +from string import hexdigits + + +class FingerPrint(Regexp): + def __init__(self, **kwargs): + super(FingerPrint, self).__init__(r'^[a-fA-F0-9]*$', **kwargs) + + +class PlainText(Regexp): + def __init__(self): + super(PlainText, self).__init__(r'^[a-zA-Z\-0-9]*$') + + +def gpg_fingerprint(data): + if data is not None: + return "".join([ + char for char in str(data) if char.lower() in hexdigits]) + return data + + +class DeveloperData(FlaskForm): + email = StringField('email', validators=[DataRequired(), Email()]) + name = StringField('name', validators=[Optional(), DataRequired()]) + gpgfp = StringField('gpgfp', filters=[gpg_fingerprint], validators=[ + Optional(), FingerPrint(), Length(min=32, max=40) + ]) + username = StringField('username', validators=[Optional(), PlainText()]) + nonddemail = StringField('nonddemail', validators=[Optional(), Email()]) + salsausername = StringField('salsausername', validators=[ + Optional(), PlainText() + ]) + mode = RadioField( + 'mode', default='html', choices=[ + ('json', _('JSON')), ('html', _('HTML')) + ], validators=[AnyOf(['json', 'html'])] + ) + forumsid = IntegerField('forumsid', default=None, validators=[Optional()]) + wikihomepage = StringField('wikihomepage', default=None, validators=[ + Optional()]) + + +class DeveloperDataRequest(FlaskForm): + email = StringField('email', validators=[DataRequired(), Email()]) diff --git a/debianmemberportfolio/model/.gitignore b/debianmemberportfolio/model/.gitignore new file mode 100644 index 0000000..bb8a9be --- /dev/null +++ b/debianmemberportfolio/model/.gitignore @@ -0,0 +1 @@ +keyringcache diff --git a/debianmemberportfolio/model/__init__.py b/debianmemberportfolio/model/__init__.py new file mode 100644 index 0000000..3f73c88 --- /dev/null +++ b/debianmemberportfolio/model/__init__.py @@ -0,0 +1,26 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service model package +# +# Copyright © 2009-2014 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Model classes and model related utilities for the Debian Member Portfolio +service. +""" diff --git a/debianmemberportfolio/model/dddatabuilder.py b/debianmemberportfolio/model/dddatabuilder.py new file mode 100644 index 0000000..c168489 --- /dev/null +++ b/debianmemberportfolio/model/dddatabuilder.py @@ -0,0 +1,57 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service data builder +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This file contains code to build a representation of a person based on keyring +data associated to a given email address. +""" + +import logging +from debianmemberportfolio.model import keyfinder + +TYPE_NO = 0 +TYPE_DM = 1 +TYPE_DD = 2 + +log = logging.getLogger(__name__) + + +def build_data(email_address): + """Build a DD data structure from a given email address.""" + fields = dict([(field, func(str(email_address))) + for (field, func) in + [('gpgfp', keyfinder.getFingerprintByEmail), + ('name', keyfinder.getRealnameByEmail), + ('username', keyfinder.getLoginByEmail)]]) + fields['email'] = email_address + if fields['username'] and fields['gpgfp'] and fields['name']: + fields['type'] = TYPE_DD + elif fields['name'] and fields['gpgfp']: + fields['type'] = TYPE_DM + else: + fields['type'] = TYPE_NO + if fields['name']: + log.debug('generate wikihomepage from name') + fields['wikihomepage'] = "".join( + [part.capitalize() for part in fields['name'].split()]) + + return fields diff --git a/debianmemberportfolio/model/keyfinder.py b/debianmemberportfolio/model/keyfinder.py new file mode 100644 index 0000000..5129e54 --- /dev/null +++ b/debianmemberportfolio/model/keyfinder.py @@ -0,0 +1,114 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service key finder module +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This module provides tools for finding PGP key information from a +given keyring. +""" + +import logging +import time +import sys + +db = None +cachetimestamp = 0 + + +def _get_keyring_cache(): + global db, cachetimestamp + if db is None or (time.time() - cachetimestamp) > 86300: + import dbm + import pkg_resources + import os.path + filename = pkg_resources.resource_filename(__name__, + 'keyringcache') + logging.debug('reading cache data from %s', filename) + assert ( + os.path.exists(filename + '.db') and + os.path.isfile(filename + '.db') + ) + db = dbm.open(filename, 'r') + cachetimestamp = time.time() + return db + + +def _get_cached(cachekey): + cache = _get_keyring_cache() + logging.debug('cache lookup for %s', cachekey) + if cachekey in cache: + logging.debug('found entry %s', cache[cachekey]) + return cache[cachekey].decode('utf8') + return None + + +def getFingerprintByEmail(email): + """ + Gets the fingerprints associated with the given email address if + available. + """ + return _get_cached('fpr:email:%s' % email) + + +def getRealnameByEmail(email): + """ + Gets the real names associated with the given email address if + available. + """ + return _get_cached('name:email:%s' % email) + + +def getLoginByEmail(email): + """ + Gets the logins associated with the given email address if + available. + """ + return _get_cached('login:email:%s' % email) + + +def getLoginByFingerprint(fpr): + """ + Gets the login associated with the given fingerprint if available. + """ + return _get_cached('login:fpr:%s' % fpr) + + +def _dump_cache(): + cache = _get_keyring_cache() + fprs = [] + for key in [key.decode('utf8') for key in list(cache.keys())]: + if key.startswith('email:fpr:'): + fpr = key.replace('email:fpr:', '') + if not fpr in fprs: + fprs.append(fpr) + + for fpr in fprs: + login = getLoginByFingerprint(fpr) + email = _get_cached('email:fpr:%s' % fpr) + name = _get_cached('name:fpr:%s' % fpr) + + print(fpr, login, ':') + print(' ', name, email) + + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr, level=logging.WARNING) + _dump_cache() diff --git a/debianmemberportfolio/model/keyringanalyzer.py b/debianmemberportfolio/model/keyringanalyzer.py new file mode 100644 index 0000000..9ea3fab --- /dev/null +++ b/debianmemberportfolio/model/keyringanalyzer.py @@ -0,0 +1,185 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service application key ring analyzer tool +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This is a tool that analyzes GPG and PGP keyrings and stores the +retrieved data in a file database. The tool was inspired by Debian +qa's carnivore. +""" + +import dbm +import pkg_resources +import glob +import configparser +import os +import os.path +import logging +import subprocess +import sys +import email.utils + + +CONFIG = configparser.ConfigParser() + + +def _get_keyrings(): + """ + Gets the available keyring files from the keyring directory + configured in portfolio.ini. + """ + keyringdir = os.path.expanduser(CONFIG.get('DEFAULT', 'keyring.dir')) + logging.debug("keyring dir is %s", keyringdir) + keyrings = glob.glob(os.path.join(keyringdir, '*.gpg')) + keyrings.extend(glob.glob(os.path.join(keyringdir, '*.pgp'))) + keyrings.sort() + return keyrings + + +def _parse_uid(uid): + """ + Parse a uid of the form 'Real Name ' into email + and realname parts. + """ + + # First try with the Python library, but it doesn't always catch everything + (name, mail) = email.utils.parseaddr(uid) + if (not name) and (not mail): + logging.warning("malformed uid %s", uid) + if (not name) or (not mail): + logging.debug("strange uid %s: '%s' - <%s>", uid, name, mail) + # Try and do better than the python library + if not '@' in mail: + uid = uid.strip() + # First, strip comment + s = uid.find('(') + e = uid.find(')') + if s >= 0 and e >= 0: + uid = uid[:s] + uid[e + 1:] + s = uid.find('<') + e = uid.find('>') + mail = None + if s >= 0 and e >= 0: + mail = uid[s + 1:e] + uid = uid[:s] + uid[e + 1:] + uid = uid.strip() + if not mail and uid.find('@') >= 0: + mail, uid = uid, mail + + name = uid + logging.debug("corrected: '%s' - <%s>", name, mail) + return (name, mail) + +resultdict = {} + + +def _get_canonical(key): + if not key in resultdict: + resultdict[key] = [] + return key + + +def _add_to_result(key, newvalue): + logging.debug("adding %s: %s", key, newvalue) + thekey = _get_canonical(key) + if newvalue not in resultdict[thekey]: + resultdict[thekey].append(newvalue) + + +def _handle_mail(mail, fpr): + if mail.endswith('@debian.org'): + login = mail[0:-len('@debian.org')] + _add_to_result('login:email:%s' % mail, login) + _add_to_result('login:fpr:%s' % fpr, login) + _add_to_result('fpr:login:%s' % login, fpr) + _add_to_result('fpr:email:%s' % mail, fpr) + _add_to_result('email:fpr:%s' % fpr, mail) + + +def _handle_uid(uid, fpr): + # Do stuff with 'uid' + if uid: + (uid, mail) = _parse_uid(uid) + if mail: + _handle_mail(mail, fpr) + if uid: + _add_to_result('name:fpr:%s' % fpr, uid) + if mail: + _add_to_result('name:email:%s' % mail, uid) + return fpr + + +def process_gpg_list_keys_line(line, fpr): + """ + Process a line of gpg --list-keys --with-colon output. + """ + items = line.split(':') + if items[0] == 'pub': + return None + if items[0] == 'fpr': + return items[9].strip() + if items[0] == 'uid': + if items[1] == 'r': + return fpr + return _handle_uid(items[9].strip(), fpr) + else: + return fpr + + +def process_keyrings(): + """Process the keyrings and store the extracted data in an anydbm + file.""" + for keyring in _get_keyrings(): + logging.debug("get data from %s", keyring) + proc = subprocess.Popen([ + "gpg", "--no-options", "--no-default-keyring", + "--homedir", os.path.expanduser( + CONFIG.get('DEFAULT', 'gnupghome')), + "--no-expensive-trust-checks", + "--keyring", keyring, "--list-keys", + "--with-colons", "--fixed-list-mode", "--with-fingerprint", + "--with-fingerprint"], + stdout=subprocess.PIPE) + fpr = None + for line in proc.stdout.readlines(): + try: + line = line.decode('utf8') + except UnicodeDecodeError: + line = line.decode('iso8859-1') + fpr = process_gpg_list_keys_line(line, fpr) + retcode = proc.wait() + if retcode != 0: + logging.error("subprocess ended with return code %d", retcode) + db = dbm.open(pkg_resources.resource_filename(__name__, + 'keyringcache'), 'c') + for key in resultdict: + db[key] = ":".join(resultdict[key]) + db.close() + + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr, level=logging.WARNING) + CONFIG.read_string(pkg_resources.resource_string( + __name__, 'portfolio.ini').decode('utf8')) + gpghome = os.path.expanduser(CONFIG.get('DEFAULT', 'gnupghome')) + if not os.path.isdir(gpghome): + os.makedirs(gpghome, 0o700) + process_keyrings() diff --git a/debianmemberportfolio/model/portfolio.ini b/debianmemberportfolio/model/portfolio.ini new file mode 100644 index 0000000..7cf278a --- /dev/null +++ b/debianmemberportfolio/model/portfolio.ini @@ -0,0 +1,124 @@ +# +# Configuration for Debian Member Portfolio Service +# +# Copyright © 2009-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +[DEFAULT] +gnupghome=~/debian/gnupghome +keyring.dir=~/debian/keyring.debian.org/keyrings +urlbuilder.sections=overview,bugs,build,qa,lists,files,membership, + miscellaneous,ssh,ubuntu + +[overview] +urls=ddpo,alladdresses +ddpo.pattern=https://qa.debian.org/developer.php?login=%(email)s +alladdresses.pattern=https://qa.debian.org/developer.php?login=%(name)s + +[bugs] +urls=received,reported,usertags,searchall,wnpp,correspondent,graph +received.pattern=https://bugs.debian.org/%(email)s +reported.pattern=https://bugs.debian.org/from:%(email)s +usertags.pattern=https://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s +searchall.pattern=http://bugs-search.debian.org/cgi-bin/search.cgi?phrase=%(name)s;search=search +wnpp.pattern=https://qa.debian.org/developer.php?wnpp=%(email)s +correspondent.pattern=https://bugs.debian.org/cgi-bin/pkgreport.cgi?correspondent=%(email)s +graph.pattern=https://qa.debian.org/data/bts/graphs/by-maint/%(email)s.png + +[build] +urls=buildd +buildd.pattern=https://buildd.debian.org/status/package.php?p=%(email)s&compact=compact&comaint=yes + +[qa] +urls=lintian,lintianfull,piuparts,patchtracker,dmd,duck,janitor +dmd.pattern=https://udd.debian.org/dmd.cgi?email1=%(email)s +lintian.pattern=https://lintian.debian.org/maintainer/%(email)s.html +lintianfull.pattern=https://lintian.debian.org/full/%(email)s.html +piuparts.pattern=https://piuparts.debian.org/sid/maintainer/%(firstchar)s/%(email)s.html +patchtracker.pattern=http://patch-tracker.debian.org/email/%(email)s +duck.pattern=http://duck.debian.net/persons/%(email)s.html +janitor.pattern=https://janitor.debian.net/m/%(email)s + +[lists] +urls=dolists,adolists +dolists.pattern=https://lists.debian.org/cgi-bin/search?P="%%22%(name)s%%22&SORT=0 +adolists.pattern=https://www.google.com/search?q=site%%3Alists.alioth.debian.org+%%22%(name)s%%22 +# debconf list search has a tricky URL format +# http://lists.debconf.org/lurker/search \ +# /20100510.202949.00000000@au:%(firstname)s,au:%(lastname)s.en.html +# /YYYYMMDD.HHmmss.hashcode@au:%(firstname)s,au:%(lastname)s.en.html +# maybe this could be implemented using some custom formatter function + +[files] +urls=people +people.pattern=https://people.debian.org/~%(username)s/ +people.optional=true + +[membership] +urls=nm,dbfinger,db,webid,salsa,wiki,forum +nm.pattern=https://nm.debian.org/public/nmstatus/%(username)s +dbfinger.pattern=finger %(username)s@db.debian.org +dbfinger.type=finger +dbfinger.optional=true +db.pattern=https://db.debian.org/search.cgi?uid=%(username)s&dosearch=Search +db.optional=true +webid.pattern=http://webid.debian.net/maintainers/%(username)s +webid.optional=true +salsa.pattern=https://salsa.debian.org/%(salsausername)s +salsa.optional=true +wiki.pattern=https://wiki.debian.org/%(wikihomepage)s +forum.pattern=http://forums.debian.net/memberlist.php?mode=viewprofile&u=%(forumsid)s +forum.optional=true + +[miscellaneous] +urls=debtags,links,planetname,planetuser,website,search,gpgfinger,gpgweb,contrib,repology +debtags.pattern=https://debtags.debian.org/reports/maint/%(email)s +planetname.pattern=https://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(name)s%%22 +planetuser.pattern=https://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(username)s%%22 +planetuser.optional=true +links.pattern=https://www.google.com/search?hl=en&lr=&q=site%%3Adebian.org+%%22%(name)s%%22+-site%%3Anm.debian.org+-site%%3Alintian.debian.org+-site%%3Abugs.debian.org+-site%%3Alists.debian.org+-site%%3Apackages.debian.org+-site%%3Alists.alioth.debian.org+-site%%3Aftp.debian.org++-site%%3Apackages.qa.debian.org++-site%%3Aftp*.*.debian.org+-inurl%%3Adebian.org%%2Fdevel%%2Fpeople.+-inurl%%3Aindices%%2FMaintainers+-inurl%%3Adebian.org%%2Fdebian%%2Fproject++-inurl%%3A%%2Fdists%%2F&btnG=Search +website.pattern=https://www.google.com/search?q=site:www.debian.org+%(name)s +search.pattern=https://search.debian.org/cgi-bin/omega?P=%%22%(name)s%%22 +gpgfinger.pattern=finger %(username)s/key@db.debian.org +gpgfinger.type=finger +gpgfinger.optional=true +gpgweb.pattern=https://db.debian.org/fetchkey.cgi?fingerprint=%(gpgfp)s +gpgweb.optional=true +nm.pattern=https://nm.debian.org/public/person/%(username)s +contrib.pattern=https://contributors.debian.org/contributor/%(email)s +contrib.optional=true +repology.pattern=https://repology.org/maintainer/%(email)s +repology.optional=true + +[ssh] +# SSH functions +urls=owndndoms,miainfo,groupinfo +# owned *.debian.net domains +owndndoms.pattern=ldapsearch -u -x -H ldaps://db.debian.org -b dc=debian,dc=org uid=%(username)s dnsZoneEntry +owndndoms.type=ldapsearch +owndndoms.optional=true +# MIA information +miainfo.pattern=ssh qa.debian.org /srv/qa.debian.org/mia/mia-query %(emailnoq)s +miainfo.type=ssh +# Group information +groupinfo.pattern=ssh master.debian.org id %(username)s +groupinfo.type=ssh +groupinfo.optional=true + +[ubuntu] +urls=ubuntudiff +ubuntudiff.pattern=http://ubuntudiff.debian.net/q/uploaders/%(email)s diff --git a/debianmemberportfolio/model/urlbuilder.py b/debianmemberportfolio/model/urlbuilder.py new file mode 100644 index 0000000..cb2f33f --- /dev/null +++ b/debianmemberportfolio/model/urlbuilder.py @@ -0,0 +1,114 @@ +# -*- python -*- +# -*- coding: utf8 -*- +# +# Debian Member Portfolio Service url builder +# +# Copyright © 2009-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This module provides the function build_urls to build personalized +URLs using the given information and the URL patterns defined in +portfolio.ini. +""" + +from configparser import ConfigParser, InterpolationMissingOptionError +from encodings.utf_8 import StreamReader as UTF8StreamReader + +import pkg_resources +from debianmemberportfolio.model import keyfinder +from urllib.parse import quote_plus +from flask_babel import gettext as _, lazy_gettext as N_ + + +my_config = ConfigParser() +my_config.read_file(UTF8StreamReader( + pkg_resources.resource_stream(__name__, 'portfolio.ini'))) + +_FIELDNAMES_MAP = { + 'email': N_('Email address'), + 'name': N_('Name'), + 'gpgfp': N_('GPG fingerprint'), + 'username': N_('Debian user name'), + 'nonddemail': N_('Non Debian email address'), + 'salsausername': N_('Salsa user name'), +} + + +class DDPortfolioEntry(object): + def __init__(self, config, section, key): + self.name = key + self.optional = config.has_option(section, key + '.optional') and \ + config.getboolean(section, key + '.optional') or False + if config.has_option(section, key + '.type'): + self.type = config.get(section, key + '.type') + else: + self.type = 'url' + + +def _build_quoted_fields(fields): + """ + Take a dictionary of raw field values and quote the values if required. + """ + qfields = {} + for key, value in fields.items(): + if value is not None: + if isinstance(value, str): + qfields[key] = quote_plus(value.encode('utf8')) + elif isinstance(value, str): + qfields[key] = quote_plus(value) + else: + qfields[key] = value + qfields[key] = str(qfields[key]).replace('%', '%%') + + if 'gpgfp' not in qfields: + fpr = keyfinder.getFingerprintByEmail(fields['email'].encode('utf8')) + if fpr: + qfields['gpgfp'] = fpr[0] + qfields['firstchar'] = fields['email'][0].encode('utf8') + qfields['emailnoq'] = fields['email'].encode('utf8') + return qfields + + +def build_urls(fields): + """Build personalized URLs using the developer information in + fields.""" + data = [] + qfields = _build_quoted_fields(fields) + for section in [section.strip() for section in + my_config.get('DEFAULT', + 'urlbuilder.sections').split(',')]: + data.append(['section', section]) + if my_config.has_option(section, 'urls'): + for entry in ([ + DDPortfolioEntry(my_config, section, url) for url in + my_config.get(section, 'urls').split(',')]): + try: + data.append( + ['url', section, entry, + my_config.get(section, entry.name + '.pattern', + raw=False, vars=qfields)]) + except InterpolationMissingOptionError as e: + if not entry.optional: + if e.reference in _FIELDNAMES_MAP: + data.append(['error', section, entry, + _('Missing input: %s') % + _(_FIELDNAMES_MAP[e.reference])]) + else: + data.append(['error', section, entry, + _('Missing input: %s') % e.reference]) + return data diff --git a/debianmemberportfolio/static/.gitignore b/debianmemberportfolio/static/.gitignore new file mode 100644 index 0000000..a059bb7 --- /dev/null +++ b/debianmemberportfolio/static/.gitignore @@ -0,0 +1 @@ +javascript diff --git a/debianmemberportfolio/static/images/agplv3-88x31.png b/debianmemberportfolio/static/images/agplv3-88x31.png new file mode 100644 index 0000000..1035191 Binary files /dev/null and b/debianmemberportfolio/static/images/agplv3-88x31.png differ diff --git a/debianmemberportfolio/static/images/openlogo-100.jpg b/debianmemberportfolio/static/images/openlogo-100.jpg new file mode 100644 index 0000000..db6caf4 Binary files /dev/null and b/debianmemberportfolio/static/images/openlogo-100.jpg differ diff --git a/debianmemberportfolio/static/robots.txt b/debianmemberportfolio/static/robots.txt new file mode 100644 index 0000000..f6e6d1d --- /dev/null +++ b/debianmemberportfolio/static/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Allow: / diff --git a/debianmemberportfolio/static/stylesheets/style.css b/debianmemberportfolio/static/stylesheets/style.css new file mode 100644 index 0000000..b99d87d --- /dev/null +++ b/debianmemberportfolio/static/stylesheets/style.css @@ -0,0 +1,61 @@ +html, body { + font-family:sans, Arial; + font-size:10pt; +} + +#debianlogo { + float:right; +} + +#content { + clear:both; +} + +#agpllogo { + float:left; + margin-right:10px; +} + +table { + border-collapse:collapse; + width:100%; +} + +th, td { + border:1px solid grey; +} + +tr.section { + background-color: #a0a0a0; + color: #f0f0f0; +} + +tr.odd td { + background-color: #f0f0f0; +} + +tr.even td { + background-color: #e0e0ff; +} + +tr.error td { + background-color: #ffe0e0; +} + +td { + vertical-align:top; + padding:2px; +} + +td p { + padding:0; + margin:0; +} + +.errormsg { + color:red; +} + +.hidden { + display:none; +} diff --git a/debianmemberportfolio/templates/base.html b/debianmemberportfolio/templates/base.html new file mode 100644 index 0000000..82986b7 --- /dev/null +++ b/debianmemberportfolio/templates/base.html @@ -0,0 +1,48 @@ + +{# vim: ft=jinja +Base template for XHTML templates. +Copyright © 2009-2020 Jan Dittberner + +This file is part of the Debian Member Portfolio service. + +Debian Member Portfolio service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} + + + {% block title %}{{ _('Debian Member Portfolio Service') }}{% endblock %} + + {% block extrahead %}{% endblock %} + + + +
+ {% block body %}{% endblock %} +
+ + + + + diff --git a/debianmemberportfolio/templates/showform.html b/debianmemberportfolio/templates/showform.html new file mode 100644 index 0000000..a0d091a --- /dev/null +++ b/debianmemberportfolio/templates/showform.html @@ -0,0 +1,103 @@ +{% extends "base.html" %} +{# +Template for the data input form. + +Copyright © 2009-2020 Jan Dittberner + +This file is part of the Debian Member Portfolio service. + +Debian Member Portfolio service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} +{% block title %}{{ super()}} - {{ _('Enter your personal information') }}{% endblock %} +{% block extrahead %}{{ super() }} + +{% endblock %} +{% block body %}{{ super() }} +
+
+ {{ _('Debian Member Portfolio') }} +
+
+ {{ form.email }}
+
+ +
+
+ {{ form.name }} +
+
+
+ {{ form.gpgfp }} +
+
+
+ {{ form.username }} +
+
+
+ {{ form.nonddemail }} +
+
+
+ {{ form.salsausername }} +
+
+
+ {{ form.wikihomepage }} +
+
+
+ {{ form.forumsid }} +
+
+
+ {% for subfield in form.mode %} + {{ subfield.label }} {{ subfield }} + {% endfor %}
+ +
+
+
+{% endblock %} diff --git a/debianmemberportfolio/templates/showformscript.js b/debianmemberportfolio/templates/showformscript.js new file mode 100644 index 0000000..842c272 --- /dev/null +++ b/debianmemberportfolio/templates/showformscript.js @@ -0,0 +1,119 @@ +{# vim: ft=jinja +Helper JavaScript for the data input form. +Copyright © 2009-2020, Jan Dittberner + +This file is part of the Debian Member Portfolio service. + +Debian Member Portfolio service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} +var defaulthiddendivs = new Array( + '#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield', + '#salsausernamefield', '#wikihomepagefield', '#forumsidfield'); +var maskedfielddivs = new Array( + '#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield', + '#salsausernamefield', '#wikihomepagefield', '#forumsidfield'); +var allfielddivs = new Array( + '#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield', + '#salsausernamefield', '#wikihomepagefield', '#forumsidfield'); + +function updateFields(data, textStatus) { + if (data.type == 2) { // DD + $('#name').prop('value', data.name).prop('readonly', 'readonly'); + $('#gpgfp').prop('value', data.gpgfp); + $('#username').prop('value', data.username).prop( + 'readonly', 'readonly'); + $('#nonddemail').prop('value', data.email).focus(); + $('#salsausername').prop('value', data.username); + $('#wikihomepage').prop('value', data.wikihomepage); + + $('#namefield').show(); + $('#gpgfpfield').show(); + $('#usernamefield').show(); + $('#nonddemailfield').show(); + $('#salsausernamefield').show(); + $('#wikihomepagefield').show(); + $('#forumsidfield').show(); + + $('#nonddemail').focus().select(); + } else if (data.type == 1) { // DM + $('#name').prop('value', data.name).prop('readonly', 'readonly'); + $('#gpgfp').prop('value', data.gpgfp); + $('#username').prop('value', ''); + $('#nonddemail').prop('value', data.email).focus(); + $('#wikihomepage').prop('value', data.wikihomepage); + + $('#namefield').show(); + $('#gpgfpfield').show(); + $('#usernamefield').hide(); + $('#nonddemailfield').hide(); + $('#salsausernamefield').show(); + $('#wikihomepagefield').show(); + $('#forumsidfield').show(); + + $('#salsausername').focus().select(); + } else { + $('#nonddemail').prop('value', data.email); + $('#name').removeAttr('readonly'); + $('#username').removeAttr('readonly').prop('value', ''); + $('#gpgfp').prop('value', ''); + + $('#usernamefield').hide(); + $('#gpgfpfield').hide(); + $('#nonddemailfield').hide(); + $('#namefield').show(); + $('#salsausernamefield').show(); + $('#wikihomepagefield').show(); + $('#forumsidfield').show(); + + $('#name').focus().select(); + } +} + +function onChangeShowAll(event) { + if ($('#showall').prop('checked')) { + for (var fielddiv in allfielddivs) { + $(allfielddivs[fielddiv]).show(); + } + } else { + for (var fielddiv in maskedfielddivs) { + $(maskedfielddivs[fielddiv]).hide(); + } + } +} + +function onBlurEmail() { + if ($.trim($('#email').prop('value')).length > 0) { + $.ajax({ + 'url' : '{{ url_for("fetchdddata") }}', + 'data' : {'email' : $('#email').prop('value')}, + 'dataType' : 'json', + 'success' : updateFields, + 'error' : function(request, textStatus, errorThrown) { + $('#email').focus(); + } + }); + } +} + +$(document).ready(function() { + for (var index in defaulthiddendivs) { + if (!$(defaulthiddendivs[index]).hasClass('witherrors')) { + $(defaulthiddendivs[index]).hide(); + } + } + + $('#showall').prop('checked', false).change(onChangeShowAll); + $('#showallfield').show(); + $('#email').blur(onBlurEmail).focus(); +}); diff --git a/debianmemberportfolio/templates/showurls.html b/debianmemberportfolio/templates/showurls.html new file mode 100644 index 0000000..4b5165b --- /dev/null +++ b/debianmemberportfolio/templates/showurls.html @@ -0,0 +1,61 @@ +{% extends "base.html" %} +{# +Template for the url output page. +Copyright © 2009-2015 Jan Dittberner + +This file is part of Debian Member Portfolio Service. + +Debian Member Portfolio Service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio Service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} +{% block title %}{{ super() }} - {{ _('Your personal links') }}{% endblock %} +{% block body %}{{ super() }} +{% if urldata %} +
+ {{ _('Debian Member Porfolio') }} + + + + + + {% for row in urldata %} + {% if row[0] == 'section' %} + + {% set urlclass = 'odd' %} + {% elif row[0] == 'error' %} + + + + + {% else %} + + + + + {% if urlclass == "odd" %}{% set urlclass = "even" %}{% else %}{% set urlclass = "odd" %}{% endif %} + {% endif %} + {% endfor %} + +
{{ _('Usage') }}{{ _('URL') }}
{{ row[4] }}{{ _('Error during URL creation:') }} + {{ row[3]|replace("\n", "
") }}
{{ row[4]|safe }} + {% if row[2].type == 'url' %} + {{ row[3]|truncate(120) }} + {% else %} + {{ row[3] }} + {% endif %} +
+
+{% endif %} +

{{ _('Restart') }}

+{% endblock body %} + diff --git a/debianmemberportfolio/translations/de/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/de/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ff035df --- /dev/null +++ b/debianmemberportfolio/translations/de/LC_MESSAGES/messages.po @@ -0,0 +1,425 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.6.4\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2020-10-27 08:36+0100\n" +"PO-Revision-Date: 2020-10-27 08:37+0100\n" +"Last-Translator: Jan Dittberner \n" +"Language: de\n" +"Language-Team: German \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"X-Generator: Poedit 2.4.1\n" + +#: debianmemberportfolio/forms.py:64 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:64 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Überblick" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Paketübersicht des Debian-Mitglieds" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Paketübersicht des Debian-Mitglieds\n" +"... mit allen E-Mailadressen" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Fehler" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Erhaltene Fehlerberichte\n" +"(Anmerkung: Co-Maintainer werden nicht aufgeführt, siehe #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Berichtete Fehler" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "User Tags" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Alle Nachrichten (d.h. Volltextsuche nach dem Entwicklernamen in allen " +"Fehlerlogs)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "Beitragender zu Fehlern" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Graph der Entwicklung offener Fehlerberichte über ein Jahr" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Build" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Qualitätssicherung" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "Maintainer Dashboard" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintian-Berichte" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe \"info\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian Nachverfolgungssystem für Patches" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-Prüfer" + +#: debianmemberportfolio/views.py:73 +msgid "Debian Janitor" +msgstr "Debian Janitor" + +#: debianmemberportfolio/views.py:76 +msgid "Mailing Lists" +msgstr "Mailinglisten" + +#: debianmemberportfolio/views.py:77 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Dateien" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:86 +msgid "Membership" +msgstr "Mitgliedschaft" + +#: debianmemberportfolio/views.py:87 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:88 +msgid "DB information via finger" +msgstr "DB-Informationen per finger" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via HTTP" +msgstr "DB-Informationen per HTTP" + +#: debianmemberportfolio/views.py:90 +msgid "FOAF profile" +msgstr "FOAF-Profil" + +#: debianmemberportfolio/views.py:91 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:92 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:93 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:96 +msgid "Miscellaneous" +msgstr "Sonstiges" + +#: debianmemberportfolio/views.py:97 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:98 +msgid "Planet Debian (name)" +msgstr "Planet Debian (Name)" + +#: debianmemberportfolio/views.py:99 +msgid "Planet Debian (username)" +msgstr "Planet Debian (Benutzername)" + +#: debianmemberportfolio/views.py:100 +msgid "links" +msgstr "Links" + +#: debianmemberportfolio/views.py:101 +msgid "Debian website" +msgstr "Debian Webseite" + +#: debianmemberportfolio/views.py:102 +msgid "Debian search" +msgstr "Debian-Suche" + +#: debianmemberportfolio/views.py:103 +msgid "GPG public key via finger" +msgstr "öffentlicher GPG-Schlüssel per finger" + +#: debianmemberportfolio/views.py:104 +msgid "GPG public key via HTTP" +msgstr "öffentlicher GPG-Schlüssel per HTTP" + +#: debianmemberportfolio/views.py:105 +msgid "NM, AM participation" +msgstr "NM-, AM-Mitwirkung" + +#: debianmemberportfolio/views.py:106 +msgid "Contribution information" +msgstr "Debian Contributor-Informationen" + +#: debianmemberportfolio/views.py:107 +msgid "Repology information" +msgstr "Repology-Informationen" + +#: debianmemberportfolio/views.py:110 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Per ssh erreichbare Informationen (für Debian Mitglieder)" + +#: debianmemberportfolio/views.py:111 +msgid "owned debian.net domains" +msgstr "Besitz von debian.net-Domains" + +#: debianmemberportfolio/views.py:112 +msgid "" +"MIA database " +"information" +msgstr "" +"Informationen in der MIA-Datenbank" + +#: debianmemberportfolio/views.py:114 +msgid "Group membership information" +msgstr "Information über Gruppenmitgliedschaften" + +#: debianmemberportfolio/views.py:117 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:118 +msgid "Available patches from Ubuntu" +msgstr "Verfügbare Patches aus Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-Mailadresse" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Name" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-Fingerabdruck" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian-Benutzername" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Nicht-Debian-E-Mailadresse" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa-Benutzername" + +#: debianmemberportfolio/model/urlbuilder.py:109 +#: debianmemberportfolio/model/urlbuilder.py:113 +#, python-format +msgid "Missing input: %s" +msgstr "Fehlende Eingabe: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian-Mitglieder-Portfolioservice" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian-Logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Dieser Dienst wurde durch Stefano Zacchirolis DDPortfolio-Seite im Debian Wiki inspiriert. Mit dem " +"Dienst können personalisierte Links zu Informationen im Bezug auf Debian für " +"Debian-Mitglieder und Paketbetreuer erzeugt werden." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Freie Software" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Dieser Dienst wird unter den Bedingungen der GNU Affero General Public License, so wie sie von " +"der Free Software Foundation veröffentlicht ist, bereitgestellt. Sie können " +"entweder Version 3 oder (auf Ihren Wunsch hin) jede spätere Version der " +"Lizenz verwenden. Sie können sich den Quelltext ansehen oder mit git von " +"%(cloneurl)s klonen. Wenn Sie diesen Service in Ihre Sprache übersetzen " +"möchten, können Sie auf Weblate dazu beitragen." + +# | msgid "Copyright © 2009-2018 Jan Dittberner" +#: debianmemberportfolio/templates/base.html:41 +#| msgid "Copyright © 2009-2019 Jan Dittberner" +msgid "Copyright © 2009-2020 Jan Dittberner" +msgstr "Copyright © 2009-2020 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Eingabe der persönlichen Informationen" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian-Mitglieder-Portfolioservice" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-Mailadresse:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Alle Formularfelder anzeigen" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Name:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-Fingerabdruck:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian-Benutzername:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Nicht-Debian-E-Mailadresse:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa-Benutzername:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Wiki user name:" +msgstr "Wiki-Benutzername:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Forum user id:" +msgstr "Forumsbenutzernummer:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Output format:" +msgstr "Ausgabeformat:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Build Debian Member Portfolio URLs" +msgstr "Debian-Mitgliedsportfolio-URLs bauen" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Ihre personalisierten Links" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian-Mitgliederportfolio" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Verwendung" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Fehler bei der URL-Erzeugung:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Neu beginnen" diff --git a/debianmemberportfolio/translations/el/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/el/LC_MESSAGES/messages.po new file mode 100644 index 0000000..c6cffbf --- /dev/null +++ b/debianmemberportfolio/translations/el/LC_MESSAGES/messages.po @@ -0,0 +1,411 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-06-26 21:00+0000\n" +"Last-Translator: THANOS SIOURDAKIS \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.7.1-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Επισκόπηση" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/es/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/es/LC_MESSAGES/messages.po new file mode 100644 index 0000000..20de512 --- /dev/null +++ b/debianmemberportfolio/translations/es/LC_MESSAGES/messages.po @@ -0,0 +1,437 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-12-19 04:21+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visión general" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visión general de paquetes del miembro de Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visión general de paquetes del miembro de Debian\n" +"… se muestran todas las direcciones de correo" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Fallos" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"fallos recibidos\n" +"(nota: no se muestran los corresponsables; véase el informe n.º 430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "fallos informados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "etiquetas de usuario" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"todos los mensajes (esto es, búsqueda de texto completo del nombre de " +"desarrollador/a en todos los registros de informes)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "contacto para fallos" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "gráfico de histórico anual de informes de error abiertos" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Generación de paquetes" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Control de calidad" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "tablero de responsable" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "informes de lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"informes íntegros de lintian (es decir, incluyen mensajes de nivel «info»)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de control de parches de Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Comprobador de URL de Debian (DUCK)" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de correo" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Archivos" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Membresía" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Información de BD a través de Finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Información de BD a través de HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "Perfil de FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Foro" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Varios" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nombre)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (nombre de usuario)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "enlaces" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Sitio web de Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Búsqueda en Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Clave pública de GPG a través de Finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Clave pública de GPG a través de HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participación en NM y AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Información de contribución" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Información de Repology" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Información accesible a través de SSH (para miembros de Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "titularidad de dominios debian.net" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"Información de la base de datos MIA" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Información de membresía a grupos" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Parches de Ubuntu disponibles" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Dirección de correo" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nombre" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Huella GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nombre de usuario de Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Direcciones de correo no de Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nombre de usuario de Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nombre de usuario de Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Falta la entrada: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Servicio de portafolios para miembros de Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logotipo de Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"La inspiración para este servicio provino de la página «DDPortfolio» del wiki de " +"Debian, ideada por Stefano Zacchiroli. Puede crear un juego de enlaces " +"personalizados que apunten a la información relacionada con Debian sobre un/" +"a miembro del proyecto o responsable de paquete." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL: «software» libre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"El servicio se pone a su disposición en virtud de los términos de la Licencia Pública General Affero " +"de GNU, tal como la publica al Free Software Foundation, sea bien la " +"versión 3 de la Licencia o bien cualquier otra versión posterior de su " +"preferencia. Puede explorar el código fuente o clonarlo desde %(cloneurl)s" +" sirviéndose de git. Si quiere " +"contribuir traduciendo este servicio a su lengua, puede hacerlo a través de <" +"a href=\"%(weblateurl)s\" title=\"Servicio de portafolios de miembros de " +"Debian en Weblate\">Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Derechos de autor © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Proporcione su información personal" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portafolio de miembro de Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Dirección de correo:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos los campos del formulario" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nombre:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Huella GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nombre de usuario de Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Dirección de correo no de Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Nombre de usuario de Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nombre de usuario de Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nombre de usuario del wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Identificador de usuario del foro:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de salida:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Crear los URL para portafolio de miembro de Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Sus enlaces personales" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portafolio de miembro de Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Se produjo un error al crear el URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/fr/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/fr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..df08b9c --- /dev/null +++ b/debianmemberportfolio/translations/fr/LC_MESSAGES/messages.po @@ -0,0 +1,430 @@ +# French translations for the Debian Member Portfolio Service +# +# Copyright (C) 2012 Stéphane Aulery +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Stéphane Aulery , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2019-09-17 14:24+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Vue d'ensemble" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Vue d'ensemble des paquets du membre Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Vue d'ensemble des paquets du membre Debian\n" +"... affichage de tous les courriels" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bogues" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bogues reçus\n" +"(note : co-responsables non listés, voir #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bogues rapportés" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags utilisateur" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Tous les messages (c-à-d, recherche plein texte sur le nom du développeur dans " +"tous les journaux de bogue)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "Correspondant pour les bogues" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Graphique de l'évolution des bogues ouverts sur l'année écoulée" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construire" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Assurance qualité" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "tableau de bord du mainteneur" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Rapports lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "Rapports lintian complets (c-à-d incluant les messages de niveau \"info\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "Piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Système de suivi des patchs de Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Vérificateur d'Url Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listes de diffusion" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "Gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Fichiers" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "anciens" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Adhésion" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "BD d’informations via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "BD d’informations via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "profil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Divers" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "Debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nom)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (nom d’utilisateur)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "Liens" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site web de Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Recherche Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Clef GPG publique via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Clef GPG publique via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "participation NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Informations de contribution" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informations accessibles via ssh (pour les membres de Debian)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "Propriété des domaines debian.net" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"Informations de la base de données MIA" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Information sur l’adhésion de groupe" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Rustines d’Ubuntu disponibles" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Courriel" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nom" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Empreinte GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nom d’utilisateur Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Courriel hors Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nom d’utilisateur Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nom d’utilisateur Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrée manquante : %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Service de portefeuille des membres de Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create " +"a set of customized links leading to a Debian Member's or package maintainer's " +"information regarding Debian." +msgstr "" +"Ce service a été inspiré par la " +"page DDPortfolio du Wiki de Debian de Stefano Zacchiroli. Vous pouvez créer " +"un ensemble personnalisé de liens fournissant des informations sur un membre ou " +"un mainteneur de paquet de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Logiciel libre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by the " +"Free Software Foundation, either version 3 of the License, or (at your option) " +"any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to your language you can " +"contribute at Weblate." +msgstr "" +"Ce service est disponible sous les termes de la licence GNU Affero General Public " +"License telle que publiée par la Free Software Foundation, soit la " +"version 3 de la licence, ou (à votre choix) toute version ultérieure. Vous " +"pouvez " +"parcourir le code source ou le cloner depuis %(cloneurl)s en utilisant git. Si vous voulez traduire ce service dans votre langage, " +"vous pouvez contribuer chez Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Saisissez vos informations personnelles" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portefeuille d’un Membre de Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Courriel :" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Afficher tous les champs du formulaire" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nom :" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Empreinte GPG :" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nom d’utilisateur Debian :" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Courriel hors Debian :" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Nom d’utilisateur Salsa :" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nom d’utilisateur Alioth :" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nom d’utilisateur Wiki :" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Numéro d’utilisateur Forum :" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Format de sortie :" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Construire les URLs du portefeuille du membre de Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Vos liens personnels" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portefeuille d’un membre de Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Utilisation" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erreur durant la création de l’URL :" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Recommencer" diff --git a/debianmemberportfolio/translations/id/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/id/LC_MESSAGES/messages.po new file mode 100644 index 0000000..587f9f9 --- /dev/null +++ b/debianmemberportfolio/translations/id/LC_MESSAGES/messages.po @@ -0,0 +1,435 @@ +# Indonesian translations for Debian Member Portfolio Service. +# +# Copyright (C) 2012 Izharul Haq +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Izharul Haq , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service\n" +"Report-Msgid-Bugs-To: atoz.chevara@yahoo.com\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2018-02-09 10:29+0100\n" +"Last-Translator: Jan Dittberner \n" +"Language: id\n" +"Language-Team: Indonesian \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.5.0\n" +"X-Generator: Poedit 1.8.11\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Gambaran Umum" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Gambaran Umum Paket Anggota Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Gambaran Umum Paket Anggota Debian\n" +"... tampilkan semua alamat email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Kutu" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"bugs diterima\n" +"(catatan: co-maintainers tidak tercantum, lihat #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "melaporkan bug" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "label pengguna" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"semua pesan (yaitu, pencarian teks lengkap untuk nama pengembang pada semua " +"catatan bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "koresponden untuk bug" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "grafik perkembangan laporan bug terbuka lebih dari setahun" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bangun" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Jaminan Mutu" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "dasbor maintainer" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "laporan lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "seluruh pesan lintian (i.e. termasuk pesan \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "sistem pelacakan patch Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian Url ChecKer" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Milis" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Berkas-berkas" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Keanggotaan" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "informasi DB melalui finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "informasi DB melalui HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "profil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Lain-Lain" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nama)" + +#: debianmemberportfolio/views.py:101 +#, fuzzy +msgid "Planet Debian (username)" +msgstr "Planet Debian (nama pengguna)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "tautan" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "website Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "pencarian Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "kunci publik GPG melalui finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "kunci publik GPG melalui HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "partisipasi NM, AM" + +#: debianmemberportfolio/views.py:108 +#, fuzzy +msgid "Contribution information" +msgstr "Informasi kontribusi" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informasi dicapai melalui ssh (untuk Anggota Debian)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "domain debian.net sendiri" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"informasi database MIA" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Informasi keanggotaan kelompok" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Tambalan dari Ubuntu yang tersedia" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Alamat Email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nama" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "sidik jari GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "nama pengguna Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Selain alamat email Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +#, fuzzy +msgid "Salsa user name" +msgstr "nama pengguna Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "nama pengguna Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Tidak ada masukan: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Layanan Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Layanan ini terinspirasi dari halaman DDPortfolio Stefano Zacchiroli di Wiki Debian. Anda dapat " +"membuat sebuah link kustom yang mengarah ke Anggota Debian atau informasi " +"mengenai pengelola paket Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Free Software" + +#: debianmemberportfolio/templates/base.html:40 +#, fuzzy, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Layanan ini tersedia di bawah persyaratan GNU Affero General Public License seperti yang " +"diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, atau " +"(dengan pilihan Anda) versi lainnya. Anda dapat menelusuri kode sumber atau klon " +"dari %(cloneurl)s " +"menggunakan git.\n" +"Jika anda ingin menerjemahkan layanan ini ke dalam bahasa anda, anda dapat " +"berkontribusi di Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Hak Cipta © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Masukkan informasi data pribadi anda" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Alamat surel:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Tampilkan semua bagian formulir" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nama:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "sidik jari GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nama pengguna Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Selain alamat email Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +#, fuzzy +msgid "Salsa user name:" +msgstr "Nama pengguna Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nama pengguna Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nama pengguna Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "ID pengguna Forum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Format Keluaran:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Membangun URL Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Tautan pribadi anda" + +#: debianmemberportfolio/templates/showurls.html:25 +#, fuzzy +msgid "Debian Member Porfolio" +msgstr "Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Penggunaan" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Kesalahan selama pembuatan URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Mulai ulang" diff --git a/debianmemberportfolio/translations/ja/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/ja/LC_MESSAGES/messages.po new file mode 100644 index 0000000..540d051 --- /dev/null +++ b/debianmemberportfolio/translations/ja/LC_MESSAGES/messages.po @@ -0,0 +1,420 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-09-27 13:40+0000\n" +"Last-Translator: Shuji Sado \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "概要" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debianメンバーのパッケージ概要" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debianメンバーのパッケージ概要\n" +"... 全メールアドレス表示" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "バグ" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"受領したバグ\n" +"(注: 共同メンテナーはリストされていません。#430986を参照)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "報告したバグ" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "ユーザータグ" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "すべてのメッセージ (i.e.、全てのバグのログの開発者名による全文検索)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "1年間にオープンしたバグの履歴グラフ" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "ビルド" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "品質保証" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "メンテナダッシュボード" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintianレポート" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debianパッチ追跡システム" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian Urlチェッカー" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "メーリングリスト" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "ファイル" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "メンバーシップ" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF プロファイル" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "フォーラム" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "その他" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (名前)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (ユーザー名)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "リンク" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian webサイト" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian検索" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "finger経由のGPG公開鍵" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "HTTP経由のGPG公開鍵" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "貢献情報" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Repology情報" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA データベース情報" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Emailアドレス" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "名前" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian ユーザー名" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Debian以外のメールアドレス" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsaユーザー名" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Aliothユーザー名" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debianメンバー・ポートフォリオ・サービス" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debianロゴ" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"このサービスは、Debian Wiki の Stefano Zacchiroli さんによる DDPortfolio ページにヒントを得ています。 Debian メンバーやパッケージメンテナの " +"Debian に関する情報につながるカスタマイズされたリンクのセットを作成することができます。" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - フリーソフトウェア" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debianメンバーポートフォリオ" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Emailアドレス:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "名前:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debianユーザー名:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Debian以外のメールアドレス:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsaユーザー名:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Aliothユーザー名:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wikiユーザー名:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "フォーラムのユーザーID:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "あなたの個人的なリンク" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debianメンバーポートフォリオ" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/mr/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/mr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..85a044d --- /dev/null +++ b/debianmemberportfolio/translations/mr/LC_MESSAGES/messages.po @@ -0,0 +1,413 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-12-14 20:21+0000\n" +"Last-Translator: Prachi Joshi \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "एचटीएमएल" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "आढावा" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "डेबियन सदस्याचे पॅकेज विहंगावलोकन" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"डेबियन सदस्याचे पॅकेज विहंगावलोकन\n" +"... सर्व ईमेल पत्ते दर्शवित आहे" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "बग" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "बग नोंदवले" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "वापरकर्ता टॅग" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "सर्व संदेश (उदा. सर्व बग लॉगवरील विकसकाच्या नावासाठी संपूर्ण मजकूर शोध)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "बग साठी संवाददाता" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "एक वर्षाचा ओपन बग हिस्ट्री ग्राफ" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "बांधा" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "इग्लू" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "गुणवत्ता हमी" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "देखभालकर्ता डॅशबोर्ड" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po new file mode 100644 index 0000000..1657c47 --- /dev/null +++ b/debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po @@ -0,0 +1,429 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2020-08-14 22:32+0000\n" +"Last-Translator: Allan Nordhøy \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Oversikt" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian-medlemmers pakkeoversikt" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debianmedlemmers pakkeoversikt\n" +"… viser alle e-postadresser" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Feil" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"feilrapporter mottatt\n" +"(merk: med-vedlikeholdere er ikke listet opp, se #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "feil rapportert" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "brukermerker" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"alle meldinger (med andre ord, fulltekstsøk etter utviklernavnet i alle " +"feilrapporter)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "korrespondent for feilrapporter" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Graf over feilrapporter som har vært åpen mer enn et år" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bygg" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "iglo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Kvalitetssikring" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "Vedlikeholdersoversikt" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian-rapporter" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "Komplette lintian-rapporter (dvs. også meldinger med nivå «info»)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debians sporingssystem for patcher" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-sjekker" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "E-postlister" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Filer" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Medlemskap" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB-informasjon via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB-informasjon via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF-profil" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Diverse" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (navn)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (brukernavn)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "lenker" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian-nettsiden" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian-søk" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Offentlig GPG-nøkkel via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Offentlig GPG-nøkkel via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM-, AM-deltagelse" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Bidragsinformasjon" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informasjon tilgjengelig via ssh (for Debian-medlemmer)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "eide debian.net -domener" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"Informasjon i MIA-databasen" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Gruppemedlemskapsinformasjon" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Tilgjengelige programfikser fra Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-postadresse" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Navn" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-fingeravtrykk" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian-brukernavn" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "E-postadresser utenom Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa-brukernavn" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth-brukernavn" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Manglende inndata: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian-medlems portfoliotjeneste" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian-logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Denne tjenesten er inspirert av Stefano Zacchiroli sin DDPortfolio-side i Debian-wikien. Du kan lage " +"et sett med tilpassede lenker som leder til et Debian-medlems eller -" +"pakkevedlikeholders informasjon om Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Fri programvare" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Tjenesten er tilgjengelig i tråd med vilkårene i GNU Affero General Public License som publisert " +"av Free Software Foundation, enten versjon 3 av lisensen eller (etter ditt " +"valg) enhver senere versjon. Du kan se igjennom kildekoden eller klode det fra %(cloneurl)s ved å bruke git. Hvis du ønsker a oversette denne " +"tjenesten til ditt språk kan du bidra ved å bruke Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Kopirett © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Skriv inn informasjon om deg selv" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian-medlems portfolio" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-postadresse:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Vis alle felt i skjema" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Navn:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-fingeravtrykk:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "E-postadresse utenom Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Forum-brukerid:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Fremvisningsformat:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Bygg Debian-medlemsportfolio-URLer" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Dine personlige lenker" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian-medlems portfolio" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Bruk" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Feil under oppretting av URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Start om igjen" diff --git a/debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po new file mode 100644 index 0000000..dd420a6 --- /dev/null +++ b/debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po @@ -0,0 +1,414 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2019-03-18 14:03+0000\n" +"Last-Translator: Frans Spiesschaert \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.6-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Overzicht" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Pakketoverzicht van Debian-leden" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Pakketoverzicht van Debian-leden\n" +"... alle e-mailadressen worden weergegeven" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"ontvangen bugs\n" +"(let op: mede-beheerders staan niet op de lijst, zie\n" +"#430986" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "gerapporteerde bugs" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "gebruikerslabels" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"alle berichten (d.w.z. zoeken in volledige tekst op de naam van de " +"ontwikkelaar in alle buglogs)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondent voor bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "grafiek van de evolutie van bugs die één jaar openstaan" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bouwen" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Kwaliteitsverzekering" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "beheerdersinstrumentenbord" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian-rapporten" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"volledige lintian-rapporten (d.w.z. inclusief berichten van niveau \"info\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian patchvolgsysteem" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-controle" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Mailinglijsten" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Bestanden" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oud-medewerkers" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Lidmaatschap" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB-informatie via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB-informatie via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF-profiel" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Diversen" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (naam)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (gebruikersnaam)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "links" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian-website" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian-zoeken" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "GPG openbare sleutel via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "GPG openbare sleutel via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM-deelname" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Bijdrage-informatie" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Via ssh toegankelijke informatie (voor Debian-leden)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "debian.net-domeinnamen in eigendom" + +#: debianmemberportfolio/views.py:113 +msgid "MIA database information" +msgstr "MIA-database-informatie" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Informatie over groepslidmaatschap" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Beschikbare patches van Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-mailadres" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Naam" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-vingerafdruk" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian-gebruikersnaam" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "E-mailadres buiten Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa-gebruikersnaam" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth-gebruikersnaam" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Ontbrekende invoer: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Portfoliodienst van Debian-leden" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian-logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Member's or package maintainer's information regarding Debian." +msgstr "" +"Deze dienst is geïnspireerd op Stefano Zacchiroli's DDPortfolio-pagina op de Debian-" +"wiki. U kunt een set aangepaste links creëren die leiden naar Debian-" +"gerelateerde informatie over een lid of pakketbeheerder van Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Vrije software" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "The service is available under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to your language you can contribute at Weblate." +msgstr "" +"Deze dienst is beschikbaar onder de voorwaarden van de GNU Affero General Public " +"License, zoals gepubliceerd door de Free Software Foundation, zowel " +"versie 3, als (optioneel) een hogere versie. U kunt door de broncode bladeren of " +"deze klonen van %(cloneurl)s m.b.v. git. Als u deze " +"dienst wilt vertalen naar uw eigen taal, dan kunt u bijdragen op Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Voer uw persoonlijke informatie in" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio van een lid van Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-mailadres:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Alle velden van het formulier weergeven" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Naam:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-vingerafdruk:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "E-mailadres buiten Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Forum-gebruikersid:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Uitvoerformaat:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URL's bouwen voor het Debian-lid" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Uw persoonlijke links" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio van een Debian-lid" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Gebruik" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Er is een fout opgetreden tijdens de URL-creatie:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Herbeginnen" diff --git a/debianmemberportfolio/translations/pl/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pl/LC_MESSAGES/messages.po new file mode 100644 index 0000000..2ce312a --- /dev/null +++ b/debianmemberportfolio/translations/pl/LC_MESSAGES/messages.po @@ -0,0 +1,412 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-10-27 06:59+0000\n" +"Last-Translator: Jan Dittberner \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.3.2-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Przegląd" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugi" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Pliki" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "profil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/pt/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pt/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ca0cc52 --- /dev/null +++ b/debianmemberportfolio/translations/pt/LC_MESSAGES/messages.po @@ -0,0 +1,434 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-09-22 18:40+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visão Geral" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visão geral dos Pacotes dos Membros do Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visão geral dos Pacote dos Membros do Debian\n" +"... exibindo todos os endereços de email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bugs recebidos\n" +"(nota: co-mantenedores não listados, veja #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bugs reportados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags de utilizador" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Todas as mensagens (Ex. pesquisa completa do texto para o nome do " +"programador em todos os logs de bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondente para bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Histórico gráfico de bugs abertos há um ano" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construção" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Iglu" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Garantia de Qualidade" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "painel do mantenedor" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "relatórios lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "todos os relatórios lintian (Ex. incluindo mensagens \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de rastreamento de patches Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Validador de Url do Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de Discussão" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Ficheiros" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Associação" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Infomações DB via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Informações DB via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "perfil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Fórum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Miscelânea" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nome)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "ligações" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site do Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Pesquisa Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Chave pública GPG via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Chave pública GPG via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participação NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Informação sobre Repology" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informação alcançável via ssh (para membros Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "domínios debian.net adquiridos" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA " +"informações de banco de dados" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Informações de Grupos associados" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Patches por Ubuntu disponíveis" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Endereços de email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nome" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Fingerprint GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Endereço de email não Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nome de utilizador Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrada ausente: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Serviço de Portfolio dos Membros do Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Este serviço tem sido inspirado por Stefano Zacchiroli's Página DDPortfolio na Debian Wiki. Pode " +"criar um conjunto de ligações customizados apontando para informações, ou de " +"membro Debian, ou de mantenedor de pacotes a respeito de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Sofware Livre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"O serviço está disponível sob os termos da Licença Pública Geral Affero GNU conforme publicado " +"pela the Free Software Foundation, tanto na versão 3 da licença, como (a seu " +"critério) qualquer versão mais recente. Pode visualizar o código fonte ou " +"cloná-lo%(cloneurl)s usando git. Se quiser " +"traduzir este serviço para o seu idioma pode contribuir em Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Direitos Autorais © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Endereço de email:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos os campos" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nome:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Fingerprint GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nome de utilizador Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Endereço de email não Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "nome de utilizador Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nome de utilizador Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nome de utilizador Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Id de utilizador do fórum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de saída:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URLs de Portfolio dos Membros Debian em Construção" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "As suas ligações pessoais" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Modo de uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erro durante a criação da URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/pt_BR/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pt_BR/LC_MESSAGES/messages.po new file mode 100644 index 0000000..28ae0ca --- /dev/null +++ b/debianmemberportfolio/translations/pt_BR/LC_MESSAGES/messages.po @@ -0,0 +1,430 @@ +# Portuguese (Brazil) translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2012 Daniel Manzano +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Daniel Manzano , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2020-07-26 06:41+0000\n" +"Last-Translator: Wellington Terumi Uemura \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.2-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visão Geral" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visão geral dos Pacotes dos Membros do Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visão geral dos Pacote dos Membros do Debian\n" +"... exibindo todos os endereços de email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bugs recebidos\n" +"(nota: co-mantenedores não listados, veja #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bugs reportados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags de usuário" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Todas as mensagens (Ex. pesquisa completa do texto para o nome do " +"desenvolvedor em todos os logs de bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondente para bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Histórico gráfico de bugs abertos há um ano" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construção" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Iglu" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Garantia de Qualidade" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "painel do mantenedor" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "relatórios lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "todos os relatórios lintian (Ex. incluindo mensagens \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de rastreamento de patches Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Validador de Url do Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de Discussão" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Arquivos" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Associação" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Infomações DB via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Informações DB via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "perfil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Fórum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Miscelânea" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nome)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Nome de usuário Debian" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "links" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site do Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Pesquisa Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Chave pública GPG via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Chave pública GPG via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participação NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informação alcançável via ssh (para membros Debian)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "domínios debian.net adquiridos" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA informações " +"de banco de dados" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Informações de Grupos associados" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Patches por Ubuntu disponíveis" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Endereços de email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nome" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Fingerprint GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nome de usuário Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Endereço de email não Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nome de usuário Debian" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nome de usuário Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrada ausente: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Serviço de Portfolio dos Membros do Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Este serviço tem sido inspirado por Stefano Zacchiroli's Página DDPortfolio na Debian Wiki. Você " +"pode criar um conjunto de links customizados apontando para informações, ou " +"de membro Debian, ou de mantenedor de pacotes a respeito de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Sofware Livre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"O serviço está disponível sob os termos da Licença Pública Geral Affero GNU conforme publicado " +"pela the Free Software Foundation, tanto na versão 3 da licença, como (a seu " +"critério) qualquer versão mais recente. Você pode visualizar o código fonte " +"ou cloná-lo%(cloneurl)s usando git. Se você " +"quiser traduzir este serviço para o seu idioma você pode contribuir em Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Direitos Autorais © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Endereço de email:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos os campos" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nome:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Fingerprint GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nome de usuário Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Endereço de email não Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "nome de utilizador Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nome de usuário Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nome de usuário Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Id de usuário do fórum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de saída:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URLs de Portfolio dos Membros Debian em Construção" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Os seus links pessoais" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Modo de uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erro durante a criação da URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/pt_PT/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pt_PT/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ec3c994 --- /dev/null +++ b/debianmemberportfolio/translations/pt_PT/LC_MESSAGES/messages.po @@ -0,0 +1,434 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-08-23 21:36+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese (Portugal) \n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.2.1-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visão Geral" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visão geral dos Pacotes dos Membros do Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visão geral dos Pacote dos Membros do Debian\n" +"... exibindo todos os endereços de email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bugs recebidos\n" +"(nota: co-mantenedores não listados, veja #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bugs reportados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags de utilizador" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Todas as mensagens (Ex. pesquisa completa do texto para o nome do " +"programador em todos os logs de bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondente para bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Histórico gráfico de bugs abertos há um ano" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construção" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Iglu" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Garantia de Qualidade" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "painel do mantenedor" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "relatórios lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "todos os relatórios lintian (Ex. incluindo mensagens \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de rastreamento de patches Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Validador de Url do Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de Discussão" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Ficheiros" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Associação" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Infomações DB via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Informações DB via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "perfil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Fórum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Miscelânea" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nome)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "ligações" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site do Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Pesquisa Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Chave pública GPG via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Chave pública GPG via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participação NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informação alcançável via ssh (para membros Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "domínios debian.net adquiridos" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA " +"informações de banco de dados" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Informações de Grupos associados" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Patches por Ubuntu disponíveis" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Endereços de email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nome" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Fingerprint GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Endereço de email não Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nome de utilizador Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrada ausente: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Serviço de Portfolio dos Membros do Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Este serviço tem sido inspirado por Stefano Zacchiroli's Página DDPortfolio na Debian Wiki. Pode " +"criar um conjunto de ligações customizados apontando para informações, ou de " +"membro Debian, ou de mantenedor de pacotes a respeito de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Sofware Livre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"O serviço está disponível sob os termos da Licença Pública Geral Affero GNU conforme publicado " +"pela the Free Software Foundation, tanto na versão 3 da licença, como (a seu " +"critério) qualquer versão mais recente. Pode visualizar o código fonte ou " +"cloná-lo%(cloneurl)s usando git. Se quiser " +"traduzir este serviço para o seu idioma pode contribuir em Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Direitos Autorais © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Endereço de email:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos os campos" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nome:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Fingerprint GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nome de utilizador Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Endereço de email não Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "nome de utilizador Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nome de utilizador Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nome de utilizador Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Id de utilizador do fórum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de saída:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URLs de Portfolio dos Membros Debian em Construção" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "As suas ligações pessoais" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Modo de uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erro durante a criação da URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/ru/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/ru/LC_MESSAGES/messages.po new file mode 100644 index 0000000..974aa4f --- /dev/null +++ b/debianmemberportfolio/translations/ru/LC_MESSAGES/messages.po @@ -0,0 +1,435 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-09-09 18:36+0000\n" +"Last-Translator: Nikita Epifanov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Обзор" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Обзор пакетов участников Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Обзор пакетов участников Debian\n" +"... отображение всех адресов электронной почты" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Ошибки" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"полученные ошибки\n" +"(примечание: со-сопровождающие не указаны, см. #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "сообщения об ошибках" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "теги пользователей" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"все сообщения (т.е. полнотекстовый поиск имени разработчика по всем журналам " +"ошибок)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "корреспондент по вопросам ошибок" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "график истории открытых ошибок за один год" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Сборка" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "иглу" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Гарантия качества" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "панель мониторинга" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintian отчеты" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "полные отчеты Lintian (т. е. включая сообщения уровня \"информация\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Система отслеживания патчей Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian Url проверщик" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Списки рассылки" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Файлы" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Членство" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Информация о ДБ по отпечатку" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Информация о ДБ по HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "Профиль FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Форум" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Разное" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Планета Debian (имя)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Планета Debian (имя пользователя)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "ссылки" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Сайт Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Поиск Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Открытый ключ GPG через отпечаток" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Открытый ключ GPG через HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM участие" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Информация о вкладе" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Информация о репологии" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Информация доступна по ssh (для членов Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "собственные домены debian.net" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"Информация из базы данных MIA" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Информация о членстве в группе" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Доступные патчи из Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Адрес электронной почты" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Имя" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Отпечаток GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Имя пользователя Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Электронный адрес, отличный от Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Имя пользователя Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Имя пользователя Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Пропущенный ввод: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Служба портфолио участников Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Логотип Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Этот сервис был вдохновлен страницей Стефано Заккироли DDPortfolio в Debian Wiki. Вы можете создать " +"набор настраиваемых ссылок, ведущих к информации участника Debian или " +"сопровождающего пакета относительно Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Свободное программное обеспечение" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Служба доступна на условиях Стандартной общественной лицензии GNU опубликованной Фондом " +"свободного программного обеспечения, либо 3 версии Лицензии, либо (по вашему " +"выбору) любой более поздней версии. Вы можете просмотреть исходный код или " +"клонировать его из %(cloneurl)s используя git. Если " +"вы хотите перевести эту услугу на свой язык, вы можете внести свой вклад по " +"ссылке Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Введите вашу личную информацию" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Портфолио участников Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Адрес электронной почты:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Показать все поля формы" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Имя:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Отпечаток GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Имя пользователя Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Электронный адрес, отличный от Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Имя пользователя Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Имя пользователя Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Имя пользователя Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "ID пользователя форума:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Формат вывода:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Создание URL-адресов портфолио участников Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Ваши личные ссылки" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Портфолио участников Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Использование" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Ошибка при создании URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Перезапустить" diff --git a/debianmemberportfolio/translations/sv/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/sv/LC_MESSAGES/messages.po new file mode 100644 index 0000000..55783fd --- /dev/null +++ b/debianmemberportfolio/translations/sv/LC_MESSAGES/messages.po @@ -0,0 +1,433 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-10-17 17:52+0000\n" +"Last-Translator: Mattias Münster \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Översikt" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian-medlemspaketets översikt" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debian-medlemspaketets översikt\n" +"... visar alla e-postadresser" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Buggar" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"buggar mottagna\n" +"(Obs: medansvariga som inte finns listade, se #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "buggar rapporterade" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "användartaggar" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"alla meddelanden (dvs. fulltextsökning efter utvecklarnamn i alla felloggar)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "korrespondent för buggar" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "ett års öppen bugghistorik diagram" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bygge" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "bygged.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Kvalitetssäkring" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "instrumentpanel för underhållare" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian rapporter" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"fullständiga lintianrapporter (dvs. inklusive \"info\" -nivåmeddelanden)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian patch-spårningssystem" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-kontroll" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Sändlistor" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Filer" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Medlemskap" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB-information via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB-information via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF-profil" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Diverse" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (namn)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (användarnamn)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "länkar" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian webbplats" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian sökning" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "GPG offentlig nyckel via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "GPG offentlig nyckel via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM deltagande" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Information om bidrag" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Information om repologi" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Information som kan nås via SSH (för Debianmedlemmar)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "ägda debian.net domäner" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA " +"databasinformation" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Information om gruppmedlemskap" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Tillgängliga patchar från Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-postadress" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Namn" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-fingeravtryck" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian användarnamn" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Icke Debian e-postadress" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa användarnamn" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth användarnamn" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Saknad inmatning: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian medlemsportföljtjänst" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian logotyp" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Den här tjänsten har inspirerats av Stefano Zacchirolis DDPortfolio-sida i Debian Wiki. Du " +"kan skapa en uppsättning anpassade länkar som leder till information om en " +"Debian-medlem eller paketunderhållare om Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - fri programvara" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Tjänsten är tillgänglig under villkoren i GNU Affero General Public License som publiceras av " +"Free Software Foundation, antingen version 3 i licensen, eller (efter eget " +"val) någon senare version. Du kan bläddra i källkoden eller klona den från %(cloneurl)s med git. Om du vill översätta den här tjänsten till " +"ditt språk kan du bidra till Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Ange din personliga information" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian medlemsportfölj" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-postadress:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Visa alla formulärfält" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Namn:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-fingeravtryck:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian användarnamn:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Icke Debian e-postadress:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa användarnamn:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth användarnamn:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki användarnamn:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Forum användar-id:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Utdataformat:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Bygg webbadresser till Debian medlemsportfölj" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Dina personliga länkar" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian medlemsportfölj" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Användning" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Fel under skapandet av URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Starta om" diff --git a/debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po new file mode 100644 index 0000000..e330f24 --- /dev/null +++ b/debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po @@ -0,0 +1,422 @@ +# German translations for the Debian Member Portfolio Service. +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2020-10-15 10:26+0000\n" +"Last-Translator: tao wang \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "概述" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian 成员的软件包概览" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debian 成员的软件包概览\n" +"... 显示所有邮件地址" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "缺陷" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"bugs 接收\n" +"(注意: 合作维护者未列入, 详见 #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "bugs 报告" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "用户标签" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "所有信息 (即,开发者名下所有缺陷日志的全文搜索)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "" +"需要支持的和未来应有的包(WNPP)" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "bug的通信者" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "一年处理Bug历史图表" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "构建" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "冰屋(igloo)" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "质量保证" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "维护者面板" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintian报告" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "全部Lintian报告(即包括\"info\"级信息)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian补丁追踪系统(Debian patch tracking system)" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian链接检查器(Debian Url Checker)" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "邮件列表" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "文件" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "老人" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "北斗五(Alioth)" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "成员关系" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB信息,通过finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB信息,通过HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF档案" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "论坛" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "杂项" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "包标签" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (名字)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (用户名)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "链接" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian网站" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian搜索" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "GPG公钥,通过finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "GPG公钥,通过HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM 参加" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "贡献信息" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "信息可获取,通过ssh(DM专用)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "拥有 debian.net 领域" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA 数据库信息" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "群组会员信息" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "来自Ubuntu的可用补丁" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "邮件地址" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "姓名" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG指纹" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian用户名" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "非Debian邮件地址" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa用户名" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth用户名" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "缺少输入: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian 成员职责目录(Member Portfolio)服务" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian Logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"这个服务由 Stefano Zacchiroli的 DDPortfolio 的 Debian Wiki页面 得到灵感. 你可以创建一个指向 Debian " +"Member 的或包维护者的关于Debian的信息的定制链接集合." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - 自由软件" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"这个服务在由自由软件基金会(FSF)发布的 GNU " +"Affero General Public License 第三版或(可选)更高版本协议下可用,可以点击 查看源代码,或从 %(cloneurl)s 使用 git 来克隆。如果想将这个服务翻译为你的语言,可以在这里投稿 Weblate。" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "输入你的个人信息" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian Member Portfolio" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "邮件地址:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "显示所有字段" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "姓名:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG指纹:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian用户名:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "非Debian邮件地址:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa用户名:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth用户名:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki用户名:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "论坛用户id:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "输出格式:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "构建Debian Member Prortfolio链接" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "你的个人链接" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian 成员职责目录" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "使用" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "在 URL 创建过程中的错误:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "重启" diff --git a/debianmemberportfolio/translations/zh_Hant/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/zh_Hant/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ba13785 --- /dev/null +++ b/debianmemberportfolio/translations/zh_Hant/LC_MESSAGES/messages.po @@ -0,0 +1,413 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-01-20 15:12+0000\n" +"Last-Translator: Louies \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_Hant\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.4-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "總覽" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian 會員的套餐總覽" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debian 會員套件概述\n" +"...顯示所有電子郵件地址" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "錯誤" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "錯誤回報" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "用戶標籤" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "建構" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "建構公司" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "品質保證" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "維護人員儀錶板" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian 報導" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian 補丁追踪系統" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL檢查器" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "郵遞清單" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "檔案" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/views.py b/debianmemberportfolio/views.py new file mode 100644 index 0000000..15df188 --- /dev/null +++ b/debianmemberportfolio/views.py @@ -0,0 +1,220 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service views +# +# Copyright © 2015-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +import json +import logging + +from debianmemberportfolio import app, babel +from flask import g, make_response, request, render_template, abort +# noinspection PyPep8Naming +from flask_babel import lazy_gettext as N_ +from config import LANGUAGES +from .forms import DeveloperData, DeveloperDataRequest +from .model import dddatabuilder +from .model.urlbuilder import build_urls + +log = logging.getLogger(__name__) + +#: This dictionary defines groups of labeled portfolio items. +_LABELS = { + 'overview': { + 'label': N_('Overview'), + 'ddpo': N_("Debian Member's Package Overview"), + 'alladdresses': N_("""Debian Member's Package Overview +... showing all email addresses"""), + }, + 'bugs': { + 'label': N_('Bugs'), + 'received': N_('''bugs received +(note: co-maintainers not listed, see \ +#430986)'''), + 'reported': N_('bugs reported'), + 'usertags': N_('user tags'), + 'searchall': N_('all messages (i.e., full text search for \ +developer name on all bug logs)'), + 'wnpp': N_('WNPP'), + 'correspondent': N_('correspondent for bugs'), + 'graph': N_('one year open bug history graph'), + }, + 'build': { + 'label': N_('Build'), + 'buildd': N_('buildd.d.o'), + 'igloo': N_('igloo'), + }, + 'qa': { + 'label': N_('Quality Assurance'), + 'dmd': N_('maintainer dashboard'), + 'lintian': N_('lintian reports'), + 'lintianfull': N_('full lintian reports (i.e. including \ +"info"-level messages)'), + 'piuparts': N_('piuparts'), + 'patchtracker': N_('Debian patch tracking system'), + 'duck': N_('Debian Url ChecKer'), + 'janitor': N_('Debian Janitor'), + }, + 'lists': { + 'label': N_('Mailing Lists'), + 'dolists': N_('lists.d.o'), + 'adolists': N_('lists.a.d.o'), + }, + 'files': { + 'label': N_('Files'), + 'people': N_('people.d.o'), + 'oldpeople': N_('oldpeople'), + }, + 'membership': { + 'label': N_('Membership'), + 'nm': N_('NM'), + 'dbfinger': N_('DB information via finger'), + 'db': N_('DB information via HTTP'), + 'webid': N_('FOAF profile'), + 'salsa': N_('Salsa'), + 'wiki': N_('Wiki'), + 'forum': N_('Forum'), + }, + 'miscellaneous': { + 'label': N_('Miscellaneous'), + 'debtags': N_('debtags'), + 'planetname': N_('Planet Debian (name)'), + 'planetuser': N_('Planet Debian (username)'), + 'links': N_('links'), + 'website': N_('Debian website'), + 'search': N_('Debian search'), + 'gpgfinger': N_('GPG public key via finger'), + 'gpgweb': N_('GPG public key via HTTP'), + 'nm': N_('NM, AM participation'), + 'contrib': N_('Contribution information'), + 'repology': N_('Repology information'), + }, + 'ssh': { + 'label': N_('Information reachable via ssh (for Debian Members)'), + 'owndndoms': N_('owned debian.net domains'), + 'miainfo': N_('MIA database information'), + 'groupinfo': N_('Group membership information'), + }, + 'ubuntu': { + 'label': N_('Ubuntu'), + 'ubuntudiff': N_('Available patches from Ubuntu'), + }, +} + +#: list of field name tuples for Debian Maintainers +DM_TUPLES = (('name', 'name'), + ('gpgfp', 'gpgfp'), + ('nonddemail', 'email')) + +#: list of field name tuples for Debian Developers +DD_TUPLES = (('username', 'username'), + ('salsausername', 'username')) + + +def _get_label(section, url=None): + if section in _LABELS: + if url: + if url in _LABELS[section]: + return _LABELS[section][url] + elif 'label' in _LABELS[section]: + return _LABELS[section]['label'] + if url: + return "%s.%s" % (section, url) + return section + + +@babel.localeselector +def get_locale(): + return request.accept_languages.best_match(LANGUAGES.keys()) + + +@app.before_request +def before_request(): + g.locale = get_locale() + + +@app.route('/') +def index(): + form = DeveloperData() + return render_template('showform.html', form=form) + + +@app.route('/result') +def urllist(): + form = DeveloperData(request.values) + if form.validate(): + fields = dddatabuilder.build_data(form.data['email']) + + form_data = form.data.copy() + + if fields['type'] in (dddatabuilder.TYPE_DD, dddatabuilder.TYPE_DM): + for dmtuple in DM_TUPLES: + if not form_data[dmtuple[0]]: + form_data[dmtuple[0]] = fields[dmtuple[1]] + if fields['type'] == dddatabuilder.TYPE_DD: + for ddtuple in DD_TUPLES: + if not form_data[ddtuple[0]]: + form_data[ddtuple[0]] = fields[ddtuple[1]] + if not form_data['wikihomepage']: + log.debug('generate wikihomepage from name') + form_data['wikihomepage'] = "".join([ + part.capitalize() for part in form_data['name'].split() + ]) + + data = build_urls(form_data) + + if form_data['mode'] == 'json': + response = make_response(json.dumps(dict( + [("{}.{}".format(entry[1], entry[2].name), entry[3]) + for entry in data if entry[0] == 'url']))) + response.headers['Content-Type'] = 'application/json' + return response + + for entry in data: + if entry[0] in ('url', 'error'): + entry.append(_get_label(entry[1], entry[2].name)) + elif entry[0] == 'section': + entry.append(_get_label(entry[1])) + + return render_template('showurls.html', urldata=data) + return render_template('showform.html', form=form) + + +@app.route('/htmlformhelper.js') +def formhelper_js(): + response = make_response(render_template('showformscript.js')) + response.headers['Content-Type'] = 'text/javascript; charset=utf-8' + return response + + +@app.route('/showformscripts/fetchdddata/') +def fetchdddata(): + form = DeveloperDataRequest(request.values) + if form.validate(): + fields = dddatabuilder.build_data(form.data['email']) + log.debug(fields) + response = make_response(json.dumps(fields)) + response.headers['Content-Type'] = 'application/json' + return response + abort( + 400, + "\n".join(["%s: %s" % (key, form.errors[key]) for key in form.errors]) + ) diff --git a/development.ini b/development.ini deleted file mode 100644 index 0a2cd4e..0000000 --- a/development.ini +++ /dev/null @@ -1,64 +0,0 @@ -# -# ddportfolioservice - Pylons development environment configuration -# -# The %(here)s variable will be replaced with the parent directory of this file -# -[DEFAULT] -debug = true -# Uncomment and replace with the address which should receive any error reports -#email_to = you@yourdomain.com -smtp_server = localhost -error_email_from = paste@localhost - -[server:main] -use = egg:Paste#http -host = 0.0.0.0 -port = 5000 - -[app:main] -use = egg:ddportfolioservice -full_stack = true -cache_dir = %(here)s/data -beaker.session.key = ddportfolioservice -beaker.session.secret = somesecret - -# If you'd like to fine-tune the individual locations of the cache data dirs -# for the Cache data, or the Session saves, un-comment the desired settings -# here: -#beaker.cache.data_dir = %(here)s/data/cache -#beaker.session.data_dir = %(here)s/data/sessions - -# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* -# Debug mode will enable the interactive debugging tool, allowing ANYONE to -# execute malicious code after an exception is raised. -#set debug = false - - -# Logging configuration -[loggers] -keys = root, ddportfolioservice - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = INFO -handlers = console - -[logger_ddportfolioservice] -level = DEBUG -handlers = -qualname = ddportfolioservice - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index ce686a8..0000000 --- a/docs/conf.py +++ /dev/null @@ -1,190 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Debian Developer Portfolio Service documentation build configuration file, created by -# sphinx-quickstart on Tue Jan 20 22:27:21 2009. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# The contents of this file are pickled, so don't put values in the namespace -# that aren't pickleable (module imports are okay, they're removed automatically). -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If your extensions are in another directory, add it here. If the directory -# is relative to the documentation root, use os.path.abspath to make it -# absolute, like shown here. -#sys.path.append(os.path.abspath('.')) - -# General configuration -# --------------------- - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['.templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Debian Developer Portfolio Service' -copyright = u'2009, Jan Dittberner' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '0.1' -# The full version, including alpha/beta/rc tags. -release = '0.1dev' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of documents that shouldn't be included in the build. -#unused_docs = [] - -# List of directories, relative to source directory, that shouldn't be searched -# for source files. -exclude_trees = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - - -# Options for HTML output -# ----------------------- - -# The style sheet to use for HTML and HTML Help pages. A file of that name -# must exist either in Sphinx' static/ path, or in one of the custom paths -# given in html_static_path. -html_style = 'default.css' - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['.static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -html_use_modindex = False - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, the reST sources are included in the HTML build as _sources/. -#html_copy_source = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = '' - -# Output file base name for HTML help builder. -htmlhelp_basename = 'DebianDeveloperPortfolioServicedoc' - - -# Options for LaTeX output -# ------------------------ - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, document class [howto/manual]). -latex_documents = [ - ('index', 'DebianDeveloperPortfolioService.tex', ur'Debian Developer Portfolio Service Documentation', - ur'Jan Dittberner', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_use_modindex = True diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 39a38d5..0000000 --- a/docs/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. Debian Developer Portfolio Service documentation master file, created by sphinx-quickstart on Tue Jan 20 22:27:21 2009. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to Debian Developer Portfolio Service's documentation! -============================================================== - -Contents: - -.. toctree:: - :maxdepth: 2 - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`search` - diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..d715c3e --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service documentation build configuration file, +# created by sphinx-quickstart on Tue Jan 20 22:27:21 2009. +# +# This file is execfile()d with the current directory set to its containing +# dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed +# automatically). +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os + +# If your extensions are in another directory, add it here. If the directory +# is relative to the documentation root, use os.path.abspath to make it +# absolute, like shown here. +sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The encoding of source files. +#source_encoding = 'utf-8' + +# General information about the project. +project = 'Debian Member Portfolio Service' +copyright = '2009-2020, Jan Dittberner' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.6.4' +# The full version, including alpha/beta/rc tags. +release = version + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +language = 'en' + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# ----------------------- + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If false, no module index is generated. +html_use_modindex = False + +# If false, no index is generated. +#html_use_index = True +html_theme = 'alabaster' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'DebianMemberPortfolioServicedoc' + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class +# [howto/manual]). +latex_documents = [ + ('index', + 'DebianMemberPortfolioService.tex', + 'Debian Member Portfolio Service Documentation', + 'Jan Dittberner', + 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_use_modindex = True diff --git a/docs/source/credits.rst b/docs/source/credits.rst new file mode 100644 index 0000000..2744e27 --- /dev/null +++ b/docs/source/credits.rst @@ -0,0 +1,23 @@ +Credits +======= + +The Debian Member Portfolio Service contains contributions from several people. + +Code +---- + + * Jan Dittberner + * Paul Wise + * Olivier Berger + +Translations +------------ + + * Jan Dittberner + * Daniel Manzano (Brazilian Portuguese) + * Izharul Haq (Indonesian) + * Stéphane Aulery (French) + +If you think your name is missing please tell me (Jan Dittberner) about your +contribution and I'll add you. + diff --git a/docs/source/devdocs.rst b/docs/source/devdocs.rst new file mode 100644 index 0000000..01b77ba --- /dev/null +++ b/docs/source/devdocs.rst @@ -0,0 +1,154 @@ +Development of Debian Member Portfolio Service +============================================== + +The Debian Member Portfolio Service is implemented in `Python 3 +`_ using the `Flask `_ web +application framework. + +The following sections describe how to setup a local development environment +for the Debian Member Portfolio Service. + +All instructions assume that you work on a Debian system. You should use Python +3 for development. + +Setup of a local development +---------------------------- + +To start working on the source code you need to have `git`_ installed:: + + sudo aptitude install git + +.. _git: http://www.git-scm.com/ + +The canonical git repository for the Debian Member Portfolio Service is +available at https://debianstuff.dittberner.info/git/debianmemberportfolio.git. +To get a clone of the source code you change to a directory of your choice and +invoke git clone:: + + cd ~/src + git clone https://debianstuff.dittberner.info/git/debianmemberportfolio.git + +You should use `venv`_ to separate the development environment from your +system wide Python installation. You can install virtualenv using:: + + sudo aptitude install python3-venv + +.. _venv: https://docs.python.org/3/library/venv.html + +When you have :command:`pyvenv` installed you should create a virtual +environment for Debian Member Portfolio Service development and install the +requirements using `pip `_:: + + mkdir ~/.virtualenvs + pyvenv ~/.virtualenvs/dmportfolio + . ~/.virtualenvs/dmportfolio/bin/activate + cd ~/src/debianmemberportfolio + pip install -r stretchreq.pip + +.. note:: + + The Debian Member Portfolio Service instance at http://portfolio.debian.net/ + is running on a Debian Stretch server, therefore :file:`stretchreq.pip` + contains dependency versions matching that Debian release. + +The dependency download and installation into the virtual environment takes +some time. + +Debian Member Portfolio Service needs the JQuery JavaScript library to function +properly. The JQuery library is not included in the git clone and must be +copied into the subdirectory +:file:`debianmemberportfolio/static/javascript/jquery`. On Debian systems you +can install the package libjs-jquery and place a symlink to the directory +:file:`/usr/share/javascript` into :file:`debianmemberportfolio/static`: :: + + sudo aptitude install libjs-jquery + ln -s /usr/share/javascript debianmemberportfolio/static + +Prepare for first startup +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Debian Member Portfolio Service uses data from the Debian keyring to get +information regarding PGP keys and names related to email addresses. Before you +can run the service you need to fetch a copy of the keyring and prepare it for +use by the code. + +.. note:: + + You need rsync and gnupg for these tasks:: + + sudo aptitude install rsync gnupg + +When you have both installed you can run:: + + . ~/.virtualenvs/dmportfolio/bin/activate + ./synckeyrings.sh + python debianmemberportfolio/model/keyringanalyzer.py + +The first synchronizes the keyrings in :file:`$HOME/debian/keyring.debian.org` +with files on the `keyring.debian.org `_ host. And +the second generates a key/value database in +:file:`debianmemberportfolio/model/keyringcache.db` that is used by the code. + +Run a development server +~~~~~~~~~~~~~~~~~~~~~~~~ + +You can run a development server using:: + + python3 run.py + +The output of this command should look like the following:: + + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) + * Restarting with stat + +You can now access your development server at the URL that is printed by the command. + +If you want to stop the development server press :kbd:`Ctrl + C`. + +Common development tasks +------------------------ + +Add new URL +~~~~~~~~~~~ + +Debian Member Portfolio Service uses a ini style configuration file +:file:`debianmemberportfolio/model/portfolio.ini` to configure the generated URL +patterns. The actual URL generation is done in +:py:func:`~debianmemberportfolio.views.urllist`. + +If you want to add a new URL type you have to add a line in +:file:`portfolio.ini` and an entry in :py:mod:`~debianmemberportfolio.views`'s +:py:attr:`~debianmemberportfolio.views._LABELS` dictionary. The top level +dictionary keys correspond to sections in the ini file. The dictionary values +are dictionaries themselves that contain a special key ``label`` that defines +the label of the section in the output and keys for each entry to be rendered +in that section. The values in these sub-dictionaries are strings marked for +translation using the :py:func:`~flask_babel.lazy_gettext` function from +:py:mod:`flask_babel`. + +The patterns in :file:`portfolio.ini` can contain the following placeholders +that are filled at runtime: + +================== ======================================== +Placeholder Replacement +================== ======================================== +%(salsausername)s user name on `salsa.debian.org`_ +%(email)s email address (URL encoded) +%(emailnoq)s email address +%(firstchar)s first character of the email address +%(forumsid)s forum user id +%(gpgfp)s GNUPG/PGP key fingerprint +%(name)s full name (i.e. John Smith) +%(username)s Debian user name +%(wikihomepage)s full name in camel case (i.e. JohnSmith) +================== ======================================== + +.. _salsa.debian.org: https://salsa.debian.org/ + +The replacement of placeholders is performed in the +:py:func:`~debianmemberportfolio.views.urllist` function. And uses data from +the Debian keyring. Access to the pre-parsed keyring data is performed using +the :py:func:`~debianmemberportfolio.model.dddatabuilder.build_data` function +of the module :py:mod:`debianmemberportfolio.model.dddatabuilder`, which uses +several helper functions from :py:mod:`debianmemberportfolio.model.keyfinder` +to access the key information. diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..cfdc5d3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,28 @@ +.. Debian Member Portfolio Service documentation master file, created by + sphinx-quickstart on Tue Jan 20 22:27:21 2009. You can adapt this file + completely to your liking, but it should at least contain the root `toctree` + directive. + +Debian Member Portfolio Service +=============================== + +The Debian Member Portfolio Service is a web application that provides links to +information regarding the activities of a person related to the `Debian Project +`_. + +The service was originally implemented and is hosted by Jan Dittberner at +http://portfolio.debian.net/. + +.. toctree:: + :maxdepth: 2 + + devdocs + sourcecode + credits + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`search` + diff --git a/docs/source/sourcecode.rst b/docs/source/sourcecode.rst new file mode 100644 index 0000000..1c5dd88 --- /dev/null +++ b/docs/source/sourcecode.rst @@ -0,0 +1,47 @@ +Source documentation +==================== + +The sections below contain mostly autogenerated documentation of the source +code of the Debian Member Portfolio Service. + +Forms +----- + +.. automodule:: debianmemberportfolio.forms + :members: + +Views +----- + +.. automodule:: debianmemberportfolio.views + :members: + +Model +----- + +.. automodule:: debianmemberportfolio.model + :members: + +dddatabuilder +~~~~~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.dddatabuilder + :members: + +keyfinder +~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.keyfinder + :members: + +keyringanalyzer +~~~~~~~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.keyringanalyzer + :members: + +urlbuilder +~~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.urlbuilder + :members: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..db22cd6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,11 @@ +Flask==0.12.2 +Jinja2==2.9.6 +MarkupSafe==1.0 +Werkzeug==0.12.2 +itsdangerous==0.24 +Babel==2.5.0 +Flask-Babel==0.11.2 +pytz==2017.2 +speaklater==1.3 +Flask-WTF==0.14.2 +WTForms==2.1 diff --git a/run.py b/run.py new file mode 100755 index 0000000..dca85bb --- /dev/null +++ b/run.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# -*- python -*- +# +# Debian Member Portfolio Service Flask runner +# +# Copyright © 2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +from debianmemberportfolio import app + +if __name__ == '__main__': + app.debug = True + app.run() diff --git a/setup.cfg b/setup.cfg index 5c5ebdd..00c4a19 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,34 +2,38 @@ tag_build = dev tag_svn_revision = true -[easy_install] -find_links = http://www.pylonshq.com/download/ - [build_sphinx] -source-dir = docs +source-dir = docs/source +build-dir = docs/build +all_files = 1 [publish] doc-dir=docs/html make-dirs=1 +[nosetests] +cover-package = debianmemberportfolio + # Babel configuration [compile_catalog] -domain = ddportfolioservice -directory = ddportfolioservice/i18n +domain = messages +directory = debianmemberportfolio/translations statistics = true [extract_messages] +charset = UTF-8 add_comments = TRANSLATORS: -output_file = ddportfolioservice/i18n/ddportfolioservice.pot +output_file = messages.pot width = 80 +msgid_bugs_address = jan@dittberner.info [init_catalog] -domain = ddportfolioservice -input_file = ddportfolioservice/i18n/ddportfolioservice.pot -output_dir = ddportfolioservice/i18n +domain = messages +input_file = messages.pot +output_dir = debianmemberportfolio/translations [update_catalog] -domain = ddportfolioservice -input_file = ddportfolioservice/i18n/ddportfolioservice.pot -output_dir = ddportfolioservice/i18n +domain = messages +input_file = messages.pot +output_dir = debianmemberportfolio/translations previous = true diff --git a/setup.py b/setup.py index 58aeb28..314736c 100644 --- a/setup.py +++ b/setup.py @@ -1,43 +1,42 @@ # -*- python -*- # -*- coding: utf-8 -*- # -# DDPortfolio service setup -# Copyright (c) 2009 Jan Dittberner +# Debian Member Portfolio Service setup +# Copyright © 2009-2020 Jan Dittberner # -# This file is part of DDPortfolio service. +# This file is part of the Debian Member Portfolio Service. # -# DDPortfolio service is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. # -# DDPortfolio service is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. # # You should have received a copy of the GNU Affero General Public -# License along with this program. If not, see -# . +# License along with this program. If not, see . # try: from setuptools import setup, find_packages except ImportError: + # noinspection PyUnresolvedReferences from ez_setup import use_setuptools use_setuptools() from setuptools import setup, find_packages setup( - name='ddportfolioservice', - version='0.1', - description='service to create DDPortfolio URLs', - long_description="""This is a service implementation that -returns a set of personalized URLs as outlined in -http://wiki.debian.org/DDPortfolio. It takes the Debian developers -full name and email address as input and returns a JSON formatted -array of URLs.""", - # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers - classifiers=['Development Status :: 3 - Alpha', + name='debianmemberportfolio', + version='0.6.4', + description='service to create Debian Member Portfolio URLs', + long_description="""This is a service implementation that returns a set of + personalized URLs as outlined in https://wiki.debian.org/DDPortfolio. It + takes the Debian Member's full name and email address as input and returns + a JSON formatted array of URLs.""", + # Get strings from https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=['Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'License :: DFSG approved', 'License :: OSI approved :: ' + @@ -46,22 +45,18 @@ array of URLs.""", keywords='Debian service JSON', author='Jan Dittberner', author_email='jan@dittberner.info', - url='http://debian-stuff.dittberner.info/ddportfolioservice', + url='http://debian-stuff.dittberner.info/debianmemberportfolio', license='AGPL-3.0+', - install_requires=["Pylons>=0.9.6.2"], + install_requires=["Flask>=0.12.2", 'Babel>=2.5.0', 'Flask-Babel>=0.11.2', 'wtforms'], packages=find_packages(exclude=['ez_setup']), include_package_data=True, test_suite='nose.collector', - package_data={'ddportfolioservice': ['*.ini', 'i18n/*/LC_MESSAGES/*.mo']}, - message_extractors = {'ddportfolioservice': [ + package_data={'debianmemberportfolio': + ['*.ini', 'translations/*/LC_MESSAGES/*.mo']}, + message_extractors={'debianmemberportfolio': [ ('**.py', 'python', None), - ('templates/**.mako', 'mako', None), - ('public/**', 'ignore', None)]}, - entry_points=""" - [paste.app_factory] - main = ddportfolioservice.config.middleware:make_app - - [paste.app_install] - main = pylons.util:PylonsInstaller - """, + ('templates/**.html', 'jinja2', None), + ('templates/**.js', 'jinja2', None), + ('static/**', 'ignore', None)]}, + zip_safe=False, ) diff --git a/stretch.pip b/stretch.pip new file mode 100644 index 0000000..a4fa1d3 --- /dev/null +++ b/stretch.pip @@ -0,0 +1,10 @@ +Flask==0.12 +Jinja2==2.8 +MarkupSafe==0.23 +Werkzeug==0.11.15 +itsdangerous==0.24 +Babel==2.3.4 +Flask-Babel==0.11.1 +pytz==2016.7 +Flask-WTF==0.12 +WTForms==2.1 diff --git a/synckeyrings.sh b/synckeyrings.sh new file mode 100755 index 0000000..20d11f4 --- /dev/null +++ b/synckeyrings.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright (C) 2009 Jan Dittberner and others This +# little script is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 3. +# +# On Debian systems, the complete text of the GNU General Public +# License can be found in /usr/share/common-licenses/GPL-3 file. +# +# This script syncs local copies of the debian-keyring with +# keyring.d.o (the keyring package is too old). +# +# ~/debian/keyring.debian.org/keyrings/ will be created if it doesn't exist. + +# Always exit if there is an error +set -e + +# For the rsync of the debian keyrings and for the nm.gpg +DESTDIR="${DEBHOME:-"$HOME/debian"}/keyring.debian.org/keyrings" +# For the following calls use LANG=C - some output is used for +# reports to a list / for an english report. +LANG=C +export LANG + +test -d $DESTDIR || mkdir -p $DESTDIR + +rsync -qcltz --block-size=8192 --partial --progress --exclude='emeritus-*' --exclude='removed-*' 'keyring.debian.org::keyrings/keyrings/*' $DESTDIR/. diff --git a/test.ini b/test.ini deleted file mode 100644 index 6f3a54e..0000000 --- a/test.ini +++ /dev/null @@ -1,21 +0,0 @@ -# -# ddportfolioservice - Pylons testing environment configuration -# -# The %(here)s variable will be replaced with the parent directory of this file -# -[DEFAULT] -debug = true -# Uncomment and replace with the address which should receive any error reports -#email_to = you@yourdomain.com -smtp_server = localhost -error_email_from = paste@localhost - -[server:main] -use = egg:Paste#http -host = 0.0.0.0 -port = 5000 - -[app:main] -use = config:development.ini - -# Add additional test specific configuration options as necessary.