diff --git a/.gitignore b/.gitignore index 90e1685d..7cf4ac96 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .*.sw* +.#* *.log taiga/search settings/local.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 52393fc9..a029198f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,16 @@ # Changelog # -## 1.8.0 ??? (unreleased) +## 1.8.0 Saracenia Purpurea (unreleased) ### Features - Improve timeline resource. - Add sitemap of taiga-front (the web client). - Search by reference (thanks to [@artlepool](https://github.com/artlepool)) - Add call 'by_username' to the API resource User +- i18n. + - Add deutsch (de) translation. + - Add nederlands (nl) translation. ### Misc - Lots of small and not so small bugfixes. diff --git a/regenerate.sh b/regenerate.sh index 222d2e78..0efc51a4 100755 --- a/regenerate.sh +++ b/regenerate.sh @@ -18,3 +18,5 @@ echo "-> Load initial roles" python manage.py loaddata initial_role --traceback echo "-> Generate sample data" python manage.py sample_data --traceback +echo "-> Rebuilding timeline" +python manage.py rebuild_timeline --purge diff --git a/settings/common.py b/settings/common.py index ba0d1254..a8c88c41 100644 --- a/settings/common.py +++ b/settings/common.py @@ -78,7 +78,7 @@ LANGUAGES = [ #("cs", "Čeština"), # Czech #("cy", "Cymraeg"), # Welsh #("da", "Dansk"), # Danish - #("de", "Deutsch"), # German + ("de", "Deutsch"), # German #("el", "Ελληνικά"), # Greek ("en", "English (US)"), # English #("en-au", "English (Australia)"), # Australian English @@ -122,7 +122,7 @@ LANGUAGES = [ #("my", "မြန်မာ"), # Burmese #("nb", "Norsk (bokmål)"), # Norwegian Bokmal #("ne", "नेपाली"), # Nepali - #("nl", "Nederlands"), # Dutch + ("nl", "Nederlands"), # Dutch #("nn", "Norsk (nynorsk)"), # Norwegian Nynorsk #("os", "Ирон æвзаг"), # Ossetic #("pa", "ਪੰਜਾਬੀ"), # Punjabi diff --git a/taiga/base/middleware/cors.py b/taiga/base/middleware/cors.py index 83031b73..86d6b5c5 100644 --- a/taiga/base/middleware/cors.py +++ b/taiga/base/middleware/cors.py @@ -25,8 +25,8 @@ COORS_ALLOWED_HEADERS = ["content-type", "x-requested-with", "x-session-id"] COORS_ALLOWED_CREDENTIALS = True COORS_EXPOSE_HEADERS = ["x-pagination-count", "x-paginated", "x-paginated-by", - "x-paginated-by", "x-pagination-current", "x-site-host", - "x-site-register"] + "x-pagination-current", "x-pagination-next", "x-pagination-prev", + "x-site-host", "x-site-register"] class CoorsMiddleware(object): diff --git a/taiga/base/templates/emails/base-body-html.jinja b/taiga/base/templates/emails/base-body-html.jinja index 602bde96..57f331a5 100644 --- a/taiga/base/templates/emails/base-body-html.jinja +++ b/taiga/base/templates/emails/base-body-html.jinja @@ -379,7 +379,7 @@ } - +
diff --git a/taiga/base/templates/emails/hero-body-html.jinja b/taiga/base/templates/emails/hero-body-html.jinja index 0439dcc8..c88c7e5f 100644 --- a/taiga/base/templates/emails/hero-body-html.jinja +++ b/taiga/base/templates/emails/hero-body-html.jinja @@ -340,7 +340,7 @@ } - +
diff --git a/taiga/base/templates/emails/updates-body-html.jinja b/taiga/base/templates/emails/updates-body-html.jinja index 86be9c92..af69858e 100644 --- a/taiga/base/templates/emails/updates-body-html.jinja +++ b/taiga/base/templates/emails/updates-body-html.jinja @@ -379,7 +379,7 @@ } - +
diff --git a/taiga/export_import/serializers.py b/taiga/export_import/serializers.py index 0aca3999..ec0ed783 100644 --- a/taiga/export_import/serializers.py +++ b/taiga/export_import/serializers.py @@ -241,7 +241,9 @@ class HistoryExportSerializerMixin(serializers.ModelSerializer): history = serializers.SerializerMethodField("get_history") def get_history(self, obj): - history_qs = history_service.get_history_queryset_by_model_instance(obj) + history_qs = history_service.get_history_queryset_by_model_instance(obj, + types=(history_models.HistoryType.change, history_models.HistoryType.create,)) + return HistoryExportSerializer(history_qs, many=True).data diff --git a/taiga/export_import/service.py b/taiga/export_import/service.py index 32ee9710..bd3049b9 100644 --- a/taiga/export_import/service.py +++ b/taiga/export_import/service.py @@ -22,7 +22,7 @@ from django.template.defaultfilters import slugify from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist -from taiga.projects.history.services import make_key_from_model_object +from taiga.projects.history.services import make_key_from_model_object, take_snapshot from taiga.timeline.service import build_project_namespace from taiga.projects.references import sequences as seq from taiga.projects.references import models as refs @@ -229,9 +229,13 @@ def store_task(project, data): for task_attachment in data.get("attachments", []): store_attachment(project, serialized.object, task_attachment) - for history in data.get("history", []): + history_entries = data.get("history", []) + for history in history_entries: store_history(project, serialized.object, history) + if not history_entries: + take_snapshot(serialized.object, user=serialized.object.owner) + custom_attributes_values = data.get("custom_attributes_values", None) if custom_attributes_values: custom_attributes = serialized.object.project.taskcustomattributes.all().values('id', 'name') @@ -319,9 +323,13 @@ def store_wiki_page(project, wiki_page): for attachment in wiki_page.get("attachments", []): store_attachment(project, serialized.object, attachment) - for history in wiki_page.get("history", []): + history_entries = wiki_page.get("history", []) + for history in history_entries: store_history(project, serialized.object, history) + if not history_entries: + take_snapshot(serialized.object, user=serialized.object.owner) + return serialized add_errors("wiki_pages", serialized.errors) @@ -381,9 +389,13 @@ def store_user_story(project, data): for role_point in data.get("role_points", []): store_role_point(project, serialized.object, role_point) - for history in data.get("history", []): + history_entries = data.get("history", []) + for history in history_entries: store_history(project, serialized.object, history) + if not history_entries: + take_snapshot(serialized.object, user=serialized.object.owner) + custom_attributes_values = data.get("custom_attributes_values", None) if custom_attributes_values: custom_attributes = serialized.object.project.userstorycustomattributes.all().values('id', 'name') @@ -434,9 +446,13 @@ def store_issue(project, data): for attachment in data.get("attachments", []): store_attachment(project, serialized.object, attachment) - for history in data.get("history", []): + history_entries = data.get("history", []) + for history in history_entries: store_history(project, serialized.object, history) + if not history_entries: + take_snapshot(serialized.object, user=serialized.object.owner) + custom_attributes_values = data.get("custom_attributes_values", None) if custom_attributes_values: custom_attributes = serialized.object.project.issuecustomattributes.all().values('id', 'name') diff --git a/taiga/locale/ca/LC_MESSAGES/django.po b/taiga/locale/ca/LC_MESSAGES/django.po index e8a1a632..956c3a16 100644 --- a/taiga/locale/ca/LC_MESSAGES/django.po +++ b/taiga/locale/ca/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-09 09:47+0200\n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" "PO-Revision-Date: 2015-06-09 07:47+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/taiga-back/" @@ -2554,7 +2554,7 @@ msgstr "" msgid "Stakeholder" msgstr "" -#: taiga/projects/userstories/api.py:173 +#: taiga/projects/userstories/api.py:174 #, python-brace-format msgid "" "Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " diff --git a/taiga/locale/de/LC_MESSAGES/django.po b/taiga/locale/de/LC_MESSAGES/django.po new file mode 100644 index 00000000..6ea5110a --- /dev/null +++ b/taiga/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,3000 @@ +# taiga-back.taiga. +# Copyright (C) 2015 Taiga Dev Team +# This file is distributed under the same license as the taiga-back package. +# +# Translators: +# Chris , 2015 +# Hans Raaf, 2015 +# Hans Raaf, 2015 +# Regina , 2015 +# Sebastian Blum , 2015 +# Thomas McWork , 2015 +msgid "" +msgstr "" +"Project-Id-Version: taiga-back\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" +"PO-Revision-Date: 2015-06-17 08:05+0000\n" +"Last-Translator: Regina \n" +"Language-Team: German (http://www.transifex.com/projects/p/taiga-back/" +"language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: taiga/auth/api.py:99 +msgid "Public register is disabled." +msgstr "Die Registrierung ist für die Öffentlichkeit gesperrrt." + +#: taiga/auth/api.py:132 +msgid "invalid register type" +msgstr "Ungültige Registrierungsart" + +#: taiga/auth/api.py:145 +msgid "invalid login type" +msgstr "Ungültige Loginart" + +#: taiga/auth/serializers.py:34 taiga/users/serializers.py:58 +msgid "invalid username" +msgstr "Ungültiger Benutzername" + +#: taiga/auth/serializers.py:39 taiga/users/serializers.py:64 +msgid "" +"Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" +msgstr "" +"255 oder weniger Zeichen aus Buchstaben, Zahlen und Punkt, Minus oder " +"Unterstrich erforderlich." + +#: taiga/auth/services.py:75 +msgid "Username is already in use." +msgstr "Der Benutzername wird schon verwendet." + +#: taiga/auth/services.py:78 +msgid "Email is already in use." +msgstr "Diese E-Mail Adresse wird schon verwendet." + +#: taiga/auth/services.py:94 +msgid "Token not matches any valid invitation." +msgstr "Das Token kann keiner gültigen Einladung zugeordnet werden." + +#: taiga/auth/services.py:122 +msgid "User is already registered." +msgstr "Der Benutzer ist schon registriert." + +#: taiga/auth/services.py:146 +msgid "Membership with user is already exists." +msgstr "Der Benutzer für diese Mitgliedschaft, existiert bereits." + +#: taiga/auth/services.py:172 +msgid "Error on creating new user." +msgstr "Fehler bei der Erstellung des neuen Benutzers." + +#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 +msgid "Invalid token" +msgstr "Ungültiges Token" + +#: taiga/base/api/fields.py:268 +msgid "This field is required." +msgstr "Das ist ein Pflichtfeld." + +#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +msgid "Invalid value." +msgstr "Ungültiger Wert." + +#: taiga/base/api/fields.py:453 +#, python-format +msgid "'%s' value must be either True or False." +msgstr "Der Wert für '%s' muss entweder True/Wahr oder False/Falsch sein." + +#: taiga/base/api/fields.py:517 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Geben Sie einen gültigen 'slug' ein, bestehend aus Buchstaben, Zahlen, " +"Unterstrichen oder Bindestrichen." + +#: taiga/base/api/fields.py:532 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Bitte machen Sie eine gültige Auswahl. %(value)s ist nicht verfügbar." + +#: taiga/base/api/fields.py:595 +msgid "Enter a valid email address." +msgstr "Geben Sie bitte eine gültige E-Mail Adresse an." + +#: taiga/base/api/fields.py:637 +#, python-format +msgid "Date has wrong format. Use one of these formats instead: %s" +msgstr "" +"Das Datum hat das falsche Format. Bitte verwenden Sie eines der folgenden " +"Formate: %s" + +#: taiga/base/api/fields.py:701 +#, python-format +msgid "Datetime has wrong format. Use one of these formats instead: %s" +msgstr "" +"Der Datentyp 'Datetime' hat ein falsches Format. Bitte verwenden Sie eines " +"der folgenden Formate: %s" + +#: taiga/base/api/fields.py:771 +#, python-format +msgid "Time has wrong format. Use one of these formats instead: %s" +msgstr "" +"Die Zeit hat ein falsches Format. Bitte verwenden Sie eines der folgenden " +"Formate: %s" + +#: taiga/base/api/fields.py:828 +msgid "Enter a whole number." +msgstr "Geben Sie bitte eine ganze Zahl ein." + +#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" +"Stellen Sie sicher, dass dieser Wert niedriger oder gleich ist wie " +"%(limit_value)s." + +#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" +"Stellen Sie sicher, dass dieser Wert höher oder gleich ist wie " +"%(limit_value)s." + +#: taiga/base/api/fields.py:860 +#, python-format +msgid "\"%s\" value must be a float." +msgstr "Der Wert für '%s' muss eine Fließkommazahl sein." + +#: taiga/base/api/fields.py:881 +msgid "Enter a number." +msgstr "Bitte geben Sie eine Zahl ein." + +#: taiga/base/api/fields.py:884 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "" +"Bitte stellen Sie sicher, dass nicht mehr als %s insgesamt vorhanden sind. " + +#: taiga/base/api/fields.py:885 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "" +"Bitte stellen Sie sicher, dass nicht mehr als %s Dezimalstellen vorhanden " +"sind." + +#: taiga/base/api/fields.py:886 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" +"Stellen Sie sicher, dass nicht mehr als %s Ziffern vor dem Dezimalpunkt " +"vorhanden sind." + +#: taiga/base/api/fields.py:953 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"Es wurde keine Datei übergeben. Prüfen Sie die Kodierung der HTML-Form." + +#: taiga/base/api/fields.py:954 +msgid "No file was submitted." +msgstr "Es wurde keine Datei eingereicht." + +#: taiga/base/api/fields.py:955 +msgid "The submitted file is empty." +msgstr "Die eingereichte Datei ist leer." + +#: taiga/base/api/fields.py:956 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Stellen Sie sicher, dass dieser Dateiname höchstens %(max)d Zeichen hat (er " +"hat %(length)d)." + +#: taiga/base/api/fields.py:957 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" + +#: taiga/base/api/fields.py:997 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Bitte laden Sie ein gültiges Bild hoch. Die Datei, die Sie hochgeladen " +"haben, ist entweder kein Bild oder defekt." + +#: taiga/base/api/pagination.py:115 +msgid "Page is not 'last', nor can it be converted to an int." +msgstr "" + +#: taiga/base/api/pagination.py:119 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "Ungültige Seite (%(page_number)s): %(message)s" + +#: taiga/base/api/permissions.py:61 +msgid "Invalid permission definition." +msgstr "Ungültige Berechtigungsdefinition" + +#: taiga/base/api/relations.py:221 +#, python-format +msgid "Invalid pk '%s' - object does not exist." +msgstr "Ungültige pk '%s' - Das Objekt existiert nicht." + +#: taiga/base/api/relations.py:222 +#, python-format +msgid "Incorrect type. Expected pk value, received %s." +msgstr "Falsche Eingabe. Erwartet pk Wert, erhalten %s." + +#: taiga/base/api/relations.py:310 +#, python-format +msgid "Object with %s=%s does not exist." +msgstr "Objekt mit %s=%s existiert nicht." + +#: taiga/base/api/relations.py:346 +msgid "Invalid hyperlink - No URL match" +msgstr "Ungültiger Hyperlink - keine passende URL. " + +#: taiga/base/api/relations.py:347 +msgid "Invalid hyperlink - Incorrect URL match" +msgstr "Ungültiger Hyperlink - Falsche URL Verknüpfung" + +#: taiga/base/api/relations.py:348 +msgid "Invalid hyperlink due to configuration error" +msgstr "Ungültiger Hyperlink durch Konfigurationsfehler" + +#: taiga/base/api/relations.py:349 +msgid "Invalid hyperlink - object does not exist." +msgstr "Ungültiger Hyperlink - Ziel existiert nicht." + +#: taiga/base/api/relations.py:350 +#, python-format +msgid "Incorrect type. Expected url string, received %s." +msgstr "Falsche Eingabe. Erwartet url Zeichenkette, erhalten %s." + +#: taiga/base/api/serializers.py:296 +msgid "Invalid data" +msgstr "Ungültige Daten" + +#: taiga/base/api/serializers.py:388 +msgid "No input provided" +msgstr "Es gab keine Eingabe" + +#: taiga/base/api/serializers.py:548 +msgid "Cannot create a new item, only existing items may be updated." +msgstr "" +"Es können nur existierende Einträge aktualisiertwerden. Eine Neuerstellung " +"ist nicht möglich." + +#: taiga/base/api/serializers.py:559 +msgid "Expected a list of items." +msgstr "Es wurde eine Liste von Einträgen erwartet." + +#: taiga/base/api/views.py:100 +msgid "Not found" +msgstr "Nicht gefunden." + +#: taiga/base/api/views.py:103 +msgid "Permission denied" +msgstr "Zugriff verweigert" + +#: taiga/base/api/views.py:451 +msgid "Server application error" +msgstr "Fehler bei der Serveranmeldung" + +#: taiga/base/connectors/exceptions.py:24 +msgid "Connection error." +msgstr "Verbindungsfehler." + +#: taiga/base/exceptions.py:53 +msgid "Malformed request." +msgstr "Fehlerhafte Anfrage." + +#: taiga/base/exceptions.py:58 +msgid "Incorrect authentication credentials." +msgstr "Ungültige Authentifizierungsdaten." + +#: taiga/base/exceptions.py:63 +msgid "Authentication credentials were not provided." +msgstr "Die Authentifizierungsdaten wurden nicht erbracht." + +#: taiga/base/exceptions.py:68 +msgid "You do not have permission to perform this action." +msgstr "Sie haben keine Berechtigung, diese Aktion auszuführen. " + +#: taiga/base/exceptions.py:73 +#, python-format +msgid "Method '%s' not allowed." +msgstr "Methode '%s' ist nicht erlaubt." + +#: taiga/base/exceptions.py:81 +msgid "Could not satisfy the request's Accept header" +msgstr "Könnte der Anforderung im Header nicht entsprechen." + +#: taiga/base/exceptions.py:90 +#, python-format +msgid "Unsupported media type '%s' in request." +msgstr "Nicht unterstützter Medientyp '%s' in Anfrage." + +#: taiga/base/exceptions.py:98 +msgid "Request was throttled." +msgstr "Die Anfrage wurde ausgebremst." + +#: taiga/base/exceptions.py:99 +#, python-format +msgid "Expected available in %d second%s." +msgstr "Voraussichtlich verfügbar in %d second%s." + +#: taiga/base/exceptions.py:113 +msgid "Unexpected error" +msgstr "Unerwarteter Fehler" + +#: taiga/base/exceptions.py:125 +msgid "Not found." +msgstr "Nicht gefunden." + +#: taiga/base/exceptions.py:130 +msgid "Method not supported for this endpoint." +msgstr "" + +#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +msgid "Wrong arguments." +msgstr "Falsche Argumente" + +#: taiga/base/exceptions.py:150 +msgid "Data validation error" +msgstr "Fehler bei Datenüberprüfung " + +#: taiga/base/exceptions.py:162 +msgid "Integrity Error for wrong or invalid arguments" +msgstr "" + +#: taiga/base/exceptions.py:169 +msgid "Precondition error" +msgstr "Voraussetzungsfehler" + +#: taiga/base/filters.py:74 +msgid "Error in filter params types." +msgstr "" + +#: taiga/base/filters.py:121 taiga/base/filters.py:210 +#: taiga/base/filters.py:259 +msgid "'project' must be an integer value." +msgstr "'project' muss ein Integer-Wert sein." + +#: taiga/base/tags.py:25 +msgid "tags" +msgstr "Tags" + +#: taiga/base/templates/emails/base-body-html.jinja:6 +msgid "Taiga" +msgstr "Taiga" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Follow us on Twitter" +msgstr "Folgen Sie uns auf Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Twitter" +msgstr "Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "Get the code on GitHub" +msgstr "Holen Sie sich den Source-Code auf GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "GitHub" +msgstr "GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Visit our website" +msgstr "Besuchen Sie unsere Webseite" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Taiga.io" +msgstr "Taiga.io" + +#: taiga/base/templates/emails/base-body-html.jinja:423 +#: taiga/base/templates/emails/hero-body-html.jinja:397 +#: taiga/base/templates/emails/updates-body-html.jinja:459 +#, python-format +msgid "" +"\n" +" Taiga Support:\n" +" %(support_url)s\n" +"
\n" +" Contact us:\n" +" \n" +" %(support_email)s\n" +" \n" +"
\n" +" Mailing list:\n" +" \n" +" %(mailing_list_url)s\n" +" \n" +" " +msgstr "" + +#: taiga/base/templates/emails/hero-body-html.jinja:6 +msgid "You have been Taigatized" +msgstr "Sie wurden taigatisiert" + +#: taiga/base/templates/emails/hero-body-html.jinja:359 +msgid "" +"\n" +"

You have been Taigatized!" +"

\n" +"

Welcome to Taiga, an Open " +"Source, Agile Project Management Tool

\n" +" " +msgstr "" +"\n" +"

Du wurdest Taigatisiert

\n" +"

Willkommn bei Taiga, einer agilen Open-Source-Projektverwaltung

" + +#: taiga/base/templates/emails/updates-body-html.jinja:6 +msgid "[Taiga] Updates" +msgstr "[Taiga] Aktualisierungen" + +#: taiga/base/templates/emails/updates-body-html.jinja:417 +msgid "Updates" +msgstr "Aktualisierungen" + +#: taiga/base/templates/emails/updates-body-html.jinja:423 +#, python-format +msgid "" +"\n" +"

comment:" +"

\n" +"

" +"%(comment)s

\n" +" " +msgstr "" + +#: taiga/base/templates/emails/updates-body-text.jinja:6 +#, python-format +msgid "" +"\n" +" Comment: %(comment)s\n" +" " +msgstr "" +"\n" +"Kommentar: %(comment)s\n" +" " + +#: taiga/export_import/api.py:103 +msgid "We needed at least one role" +msgstr "Es ist mindestens eine Rolle nötig" + +#: taiga/export_import/api.py:197 +msgid "Needed dump file" +msgstr "Exportdatei erforderlich" + +#: taiga/export_import/api.py:204 +msgid "Invalid dump format" +msgstr "Ungültiges Exportdatei Format" + +#: taiga/export_import/dump_service.py:96 +msgid "error importing project data" +msgstr "Fehler beim Importieren der Projektdaten" + +#: taiga/export_import/dump_service.py:109 +msgid "error importing lists of project attributes" +msgstr "Fehler beim Importieren der Listen von Projektattributen" + +#: taiga/export_import/dump_service.py:114 +msgid "error importing default project attributes values" +msgstr "Fehler beim Importieren der vorgegebenen Projekt Attributwerte " + +#: taiga/export_import/dump_service.py:124 +msgid "error importing custom attributes" +msgstr "Fehler beim Importieren der Kundenattribute" + +#: taiga/export_import/dump_service.py:129 +msgid "error importing roles" +msgstr "Fehler beim Importieren der Rollen" + +#: taiga/export_import/dump_service.py:144 +msgid "error importing memberships" +msgstr "Fehler beim Importieren der Mitgliedschaften" + +#: taiga/export_import/dump_service.py:149 +msgid "error importing sprints" +msgstr "Fehler beim Import der Sprints" + +#: taiga/export_import/dump_service.py:154 +msgid "error importing wiki pages" +msgstr "Fehler beim Importieren von Wiki Seiten" + +#: taiga/export_import/dump_service.py:159 +msgid "error importing wiki links" +msgstr "Fehler beim Importieren von Wiki Links" + +#: taiga/export_import/dump_service.py:164 +msgid "error importing issues" +msgstr "Fehler beim Importieren der Tickets" + +#: taiga/export_import/dump_service.py:169 +msgid "error importing user stories" +msgstr "Fehler beim Importieren der User Stories" + +#: taiga/export_import/dump_service.py:174 +msgid "error importing tasks" +msgstr "Fehler beim Importieren der Aufgaben" + +#: taiga/export_import/dump_service.py:179 +msgid "error importing tags" +msgstr "Fehler beim Importieren der Schlagworte" + +#: taiga/export_import/dump_service.py:183 +msgid "error importing timelines" +msgstr "Fehler beim Importieren der Chroniken" + +#: taiga/export_import/serializers.py:161 +msgid "{}=\"{}\" not found in this project" +msgstr "{}=\"{}\" wurde in diesem Projekt nicht gefunden" + +#: taiga/export_import/serializers.py:382 +#: taiga/projects/custom_attributes/serializers.py:103 +msgid "Invalid content. It must be {\"key\": \"value\",...}" +msgstr "Invalider Inhalt. Er muss wie folgt sein: {\"key\": \"value\",...}" + +#: taiga/export_import/serializers.py:397 +#: taiga/projects/custom_attributes/serializers.py:118 +msgid "It contain invalid custom fields." +msgstr "Enthält ungültige Benutzerfelder." + +#: taiga/export_import/serializers.py:466 +#: taiga/projects/milestones/serializers.py:63 +#: taiga/projects/serializers.py:66 taiga/projects/serializers.py:92 +#: taiga/projects/serializers.py:122 taiga/projects/serializers.py:164 +msgid "Name duplicated for the project" +msgstr "" + +#: taiga/export_import/tasks.py:49 taiga/export_import/tasks.py:50 +msgid "Error generating project dump" +msgstr "Fehler beim Erzeugen der Projekt Export-Datei " + +#: taiga/export_import/tasks.py:82 taiga/export_import/tasks.py:83 +msgid "Error loading project dump" +msgstr "Fehler beim Laden von Projekt Export-Datei" + +#: taiga/export_import/templates/emails/dump_project-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump generated

\n" +"

Hello %(user)s,

\n" +"

Your dump from project %(project)s has been correctly generated.\n" +"

You can download it here:

\n" +" Download the dump file\n" +"

This file will be deleted on %(deletion_date)s.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/dump_project-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your dump from project %(project)s has been correctly generated. You can " +"download it here:\n" +"\n" +"%(url)s\n" +"\n" +"This file will be deleted on %(deletion_date)s.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/dump_project-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been generated" +msgstr "[%(project)s] Ihre Projekt Export-Datei wurde erstellt" + +#: taiga/export_import/templates/emails/export_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project %(project)s has not been exported correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/export_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"Your project %(project)s has not been exported correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/export_error-subject.jinja:1 +#, python-format +msgid "[%(project)s] %(error_subject)s" +msgstr "[%(project)s] %(error_subject)s" + +#: taiga/export_import/templates/emails/import_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project has not been importer correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/import_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Your project has not been importer correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Hallo %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Dein Projekt wurde nicht richtig importiert.\n" +"\n" +"Die Taiga Systemadministratoren wurden informiert.\n" +"\n" +"Bitte versuche es noch einmal oder nehme Kontakt mit dem Support Team auf " +"über %(support_email)s\n" +"\n" +"---\n" +"Das Taiga Team\n" + +#: taiga/export_import/templates/emails/import_error-subject.jinja:1 +#, python-format +msgid "[Taiga] %(error_subject)s" +msgstr "[Taiga] %(error_subject)s" + +#: taiga/export_import/templates/emails/load_dump-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump imported

\n" +"

Hello %(user)s,

\n" +"

Your project dump has been correctly imported.

\n" +" Go to %(project)s\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/load_dump-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your project dump has been correctly imported.\n" +"\n" +"You can see the project %(project)s here:\n" +"\n" +"%(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/load_dump-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been imported" +msgstr "[%(project)s] Ihre Projekt Export-Datei wurde importiert" + +#: taiga/feedback/models.py:23 taiga/users/models.py:111 +msgid "full name" +msgstr "vollständiger Name" + +#: taiga/feedback/models.py:25 taiga/users/models.py:106 +msgid "email address" +msgstr "E-Mail Adresse" + +#: taiga/feedback/models.py:27 +msgid "comment" +msgstr "Kommentar" + +#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:63 +#: taiga/projects/custom_attributes/models.py:38 +#: taiga/projects/issues/models.py:53 taiga/projects/milestones/models.py:45 +#: taiga/projects/models.py:129 taiga/projects/models.py:561 +#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:82 +#: taiga/projects/wiki/models.py:38 taiga/userstorage/models.py:27 +msgid "created date" +msgstr "Erstellungsdatum" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Feedback

\n" +"

Taiga has received feedback from %(full_name)s <%(email)s>

\n" +" " +msgstr "" +"\n" +"

Feedback

\n" +"

Taiga hat Feedback erhalten von %(full_name)s <%(email)s>

" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:9 +#, python-format +msgid "" +"\n" +"

Comment

\n" +"

%(comment)s

\n" +" " +msgstr "" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 +#: taiga/users/admin.py:51 +msgid "Extra info" +msgstr "Zusätzliche Information" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:1 +#, python-format +msgid "" +"---------\n" +"- From: %(full_name)s <%(email)s>\n" +"---------\n" +"- Comment:\n" +"%(comment)s\n" +"---------" +msgstr "" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:8 +msgid "- Extra info:" +msgstr "- Zusätzliche Information:" + +#: taiga/feedback/templates/emails/feedback_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Feedback from %(full_name)s <%(email)s>\n" +msgstr "" + +#: taiga/hooks/api.py:52 +msgid "The payload is not a valid json" +msgstr "" + +#: taiga/hooks/api.py:61 +msgid "The project doesn't exist" +msgstr "Das Projekt existiert nicht" + +#: taiga/hooks/api.py:64 +msgid "Bad signature" +msgstr "" + +#: taiga/hooks/bitbucket/api.py:40 +msgid "The payload is not a valid application/x-www-form-urlencoded" +msgstr "" + +#: taiga/hooks/bitbucket/event_hooks.py:45 +msgid "The payload is not valid" +msgstr "" + +#: taiga/hooks/bitbucket/event_hooks.py:81 +#: taiga/hooks/github/event_hooks.py:76 taiga/hooks/gitlab/event_hooks.py:74 +msgid "The referenced element doesn't exist" +msgstr "Das referenzierte Element existiert nicht" + +#: taiga/hooks/bitbucket/event_hooks.py:88 +#: taiga/hooks/github/event_hooks.py:83 taiga/hooks/gitlab/event_hooks.py:81 +msgid "The status doesn't exist" +msgstr "Der Status existiert nicht" + +#: taiga/hooks/bitbucket/event_hooks.py:94 +msgid "Status changed from BitBucket commit" +msgstr "Der Status des BitBucket Commits hat sich geändert" + +#: taiga/hooks/github/event_hooks.py:97 +#, python-brace-format +msgid "" +"Status changed by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" +"({commit_url} \"See commit '{commit_id} - {commit_message}'\")." +msgstr "" +"Status geändert von [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" +"({commit_url} \"See commit '{commit_id} - {commit_message}'\")." + +#: taiga/hooks/github/event_hooks.py:108 +msgid "Status changed from GitHub commit." +msgstr "Der Status des GitHub Commits hat sich geändert" + +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 +msgid "Invalid issue information" +msgstr "Ungültige Ticket-Information" + +#: taiga/hooks/github/event_hooks.py:158 +#, python-brace-format +msgid "" +"Issue created by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\"):\n" +"\n" +"{description}" +msgstr "" +"Ticket erstellt von [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +" Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\"):\n" +"\n" +" {description}" + +#: taiga/hooks/github/event_hooks.py:169 +msgid "Issue created from GitHub." +msgstr "Ticket erstellt von GitHub." + +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +msgid "Invalid issue comment information" +msgstr "Ungültige Ticket-Kommentar Information" + +#: taiga/hooks/github/event_hooks.py:201 +#, python-brace-format +msgid "" +"Comment by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:212 +#, python-brace-format +msgid "" +"Comment From GitHub:\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/gitlab/event_hooks.py:87 +msgid "Status changed from GitLab commit" +msgstr "Der Status des GitLab Commits hat sich geändert" + +#: taiga/hooks/gitlab/event_hooks.py:129 +msgid "Created from GitLab" +msgstr "Erstellt von GitLab" + +#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 +#: taiga/permissions/permissions.py:52 +msgid "View project" +msgstr "Projekt ansehen" + +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:54 +msgid "View milestones" +msgstr "Meilensteine ansehen" + +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +msgid "View user stories" +msgstr "User Stories ansehen. " + +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 +msgid "View tasks" +msgstr "Aufgaben ansehen" + +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 +#: taiga/permissions/permissions.py:69 +msgid "View issues" +msgstr "Tickets ansehen" + +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:75 +msgid "View wiki pages" +msgstr "Wiki Seiten ansehen" + +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:80 +msgid "View wiki links" +msgstr "Wiki Links ansehen" + +#: taiga/permissions/permissions.py:35 taiga/permissions/permissions.py:70 +msgid "Vote issues" +msgstr "Tickets auswählen" + +#: taiga/permissions/permissions.py:39 +msgid "Request membership" +msgstr "Mitgliedschaft beantragen" + +#: taiga/permissions/permissions.py:40 +msgid "Add user story to project" +msgstr "User Story zu Projekt hinzufügen" + +#: taiga/permissions/permissions.py:41 +msgid "Add comments to user stories" +msgstr "Kommentar zu User Stories hinzufügen" + +#: taiga/permissions/permissions.py:42 +msgid "Add comments to tasks" +msgstr "Kommentare zu Aufgaben hinzufügen" + +#: taiga/permissions/permissions.py:43 +msgid "Add issues" +msgstr "Tickets hinzufügen" + +#: taiga/permissions/permissions.py:44 +msgid "Add comments to issues" +msgstr "Kommentare zu Tickets hinzufügen" + +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:76 +msgid "Add wiki page" +msgstr "Wiki Seite hinzufügen" + +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:77 +msgid "Modify wiki page" +msgstr "Wiki Seite ändern" + +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:81 +msgid "Add wiki link" +msgstr "Wiki Link hinzufügen" + +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:82 +msgid "Modify wiki link" +msgstr "Wiki Link ändern" + +#: taiga/permissions/permissions.py:55 +msgid "Add milestone" +msgstr "Meilenstein hinzufügen" + +#: taiga/permissions/permissions.py:56 +msgid "Modify milestone" +msgstr "Meilenstein ändern" + +#: taiga/permissions/permissions.py:57 +msgid "Delete milestone" +msgstr "Meilenstein löschen" + +#: taiga/permissions/permissions.py:59 +msgid "View user story" +msgstr "User Story ansehen" + +#: taiga/permissions/permissions.py:60 +msgid "Add user story" +msgstr "User Story hinzufügen" + +#: taiga/permissions/permissions.py:61 +msgid "Modify user story" +msgstr "User Story ändern" + +#: taiga/permissions/permissions.py:62 +msgid "Delete user story" +msgstr "User Story löschen" + +#: taiga/permissions/permissions.py:65 +msgid "Add task" +msgstr "Aufgabe hinzufügen" + +#: taiga/permissions/permissions.py:66 +msgid "Modify task" +msgstr "Aufgabe ändern" + +#: taiga/permissions/permissions.py:67 +msgid "Delete task" +msgstr "Aufgabe löschen" + +#: taiga/permissions/permissions.py:71 +msgid "Add issue" +msgstr "Ticket hinzufügen" + +#: taiga/permissions/permissions.py:72 +msgid "Modify issue" +msgstr "Ticket ändern" + +#: taiga/permissions/permissions.py:73 +msgid "Delete issue" +msgstr "Gelöschtes Ticket" + +#: taiga/permissions/permissions.py:78 +msgid "Delete wiki page" +msgstr "Wiki Seite löschen" + +#: taiga/permissions/permissions.py:83 +msgid "Delete wiki link" +msgstr "Wiki Link löschen" + +#: taiga/permissions/permissions.py:87 +msgid "Modify project" +msgstr "Projekt ändern" + +#: taiga/permissions/permissions.py:88 +msgid "Add member" +msgstr "Mitglied hinzufügen" + +#: taiga/permissions/permissions.py:89 +msgid "Remove member" +msgstr "Mitglied entfernen" + +#: taiga/permissions/permissions.py:90 +msgid "Delete project" +msgstr "Projekt löschen" + +#: taiga/permissions/permissions.py:91 +msgid "Admin project values" +msgstr "Administrator Projekt Werte" + +#: taiga/permissions/permissions.py:92 +msgid "Admin roles" +msgstr "Administrator-Rollen" + +#: taiga/projects/api.py:204 +msgid "Not valid template name" +msgstr "Unglültiger Templatename" + +#: taiga/projects/api.py:207 +msgid "Not valid template description" +msgstr "Ungültige Templatebeschreibung" + +#: taiga/projects/api.py:469 taiga/projects/serializers.py:257 +msgid "At least one of the user must be an active admin" +msgstr "Mindestens ein Benutzer muss ein aktiver Administrator sein. " + +#: taiga/projects/api.py:499 +msgid "You don't have permisions to see that." +msgstr "Sie haben keine Berechtigungen für diese Ansicht" + +#: taiga/projects/attachments/api.py:47 +msgid "Non partial updates not supported" +msgstr "Es werden nur Teilaktualisierungen unterstützt" + +#: taiga/projects/attachments/api.py:62 +msgid "Project ID not matches between object and project" +msgstr "Nr. unterschreidet sich zwischen dem Objekt und dem Projekt" + +#: taiga/projects/attachments/models.py:54 taiga/projects/issues/models.py:38 +#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:134 +#: taiga/projects/notifications/models.py:57 taiga/projects/tasks/models.py:37 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:34 +#: taiga/userstorage/models.py:25 +msgid "owner" +msgstr "Besitzer" + +#: taiga/projects/attachments/models.py:56 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:41 +#: taiga/projects/models.py:338 taiga/projects/models.py:364 +#: taiga/projects/models.py:395 taiga/projects/models.py:424 +#: taiga/projects/models.py:457 taiga/projects/models.py:480 +#: taiga/projects/models.py:507 taiga/projects/models.py:538 +#: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 +#: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 +msgid "project" +msgstr "Projekt" + +#: taiga/projects/attachments/models.py:58 +msgid "content type" +msgstr "Inhaltsart" + +#: taiga/projects/attachments/models.py:60 +msgid "object id" +msgstr "Objekt Nr." + +#: taiga/projects/attachments/models.py:66 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:48 +#: taiga/projects/models.py:132 taiga/projects/models.py:564 +#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:85 +#: taiga/projects/wiki/models.py:41 taiga/userstorage/models.py:29 +msgid "modified date" +msgstr "Zeitpunkt der Änderung" + +#: taiga/projects/attachments/models.py:71 +msgid "attached file" +msgstr "Angehangene Datei" + +#: taiga/projects/attachments/models.py:74 +msgid "is deprecated" +msgstr "wurde verworfen" + +#: taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:32 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/issues/models.py:61 taiga/projects/models.py:127 +#: taiga/projects/models.py:559 taiga/projects/tasks/models.py:60 +#: taiga/projects/userstories/models.py:90 +msgid "description" +msgstr "Beschreibung" + +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:33 +#: taiga/projects/milestones/models.py:54 taiga/projects/models.py:354 +#: taiga/projects/models.py:391 taiga/projects/models.py:418 +#: taiga/projects/models.py:453 taiga/projects/models.py:476 +#: taiga/projects/models.py:501 taiga/projects/models.py:534 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 +msgid "order" +msgstr "Reihenfolge" + +#: taiga/projects/choices.py:21 +msgid "AppearIn" +msgstr "Erscheint in" + +#: taiga/projects/choices.py:22 +msgid "Jitsi" +msgstr "Jitsi" + +#: taiga/projects/choices.py:23 +msgid "Talky" +msgstr "Gesprächig" + +#: taiga/projects/custom_attributes/models.py:31 +#: taiga/projects/milestones/models.py:34 taiga/projects/models.py:123 +#: taiga/projects/models.py:350 taiga/projects/models.py:389 +#: taiga/projects/models.py:414 taiga/projects/models.py:451 +#: taiga/projects/models.py:474 taiga/projects/models.py:497 +#: taiga/projects/models.py:532 taiga/projects/models.py:555 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 +msgid "name" +msgstr "Name" + +#: taiga/projects/custom_attributes/models.py:81 +msgid "values" +msgstr "Werte" + +#: taiga/projects/custom_attributes/models.py:91 +#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:34 +msgid "user story" +msgstr "User-Story" + +#: taiga/projects/custom_attributes/models.py:106 +msgid "task" +msgstr "Aufgabe" + +#: taiga/projects/custom_attributes/models.py:121 +msgid "issue" +msgstr "Ticket" + +#: taiga/projects/custom_attributes/serializers.py:57 +msgid "Already exists one with the same name." +msgstr "Dieser Name wird schon verwendet." + +#: taiga/projects/history/api.py:70 +msgid "Comment already deleted" +msgstr "Kommentar bereits gelöscht" + +#: taiga/projects/history/api.py:89 +msgid "Comment not deleted" +msgstr "Kommentar nicht gelöscht" + +#: taiga/projects/history/choices.py:27 +msgid "Change" +msgstr "Ändern" + +#: taiga/projects/history/choices.py:28 +msgid "Create" +msgstr "Erzeugen" + +#: taiga/projects/history/choices.py:29 +msgid "Delete" +msgstr "Löschen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:22 +#, python-format +msgid "%(role)s role points" +msgstr "%(role)s Rollenpunkte " + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:25 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:130 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:133 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:156 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:193 +msgid "from" +msgstr "Von" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:31 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:141 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:144 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:162 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:179 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:199 +msgid "to" +msgstr "An" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:43 +msgid "Added new attachment" +msgstr "Neuen Anhang hinzugefügt" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:61 +msgid "Updated attachment" +msgstr "Anhang aktualisiert" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:67 +msgid "deprecated" +msgstr "verworfen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:69 +msgid "not deprecated" +msgstr "nicht verworfen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:85 +msgid "Deleted attachment" +msgstr "Gelöschter Anhang" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:104 +msgid "added" +msgstr "hinzugefügt" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:109 +msgid "removed" +msgstr "entfernt" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:134 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:145 +#: taiga/projects/services/stats.py:124 taiga/projects/services/stats.py:125 +msgid "Unassigned" +msgstr "Nicht zugewiesen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:211 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:86 +msgid "-deleted-" +msgstr "-gelöscht-" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:20 +msgid "to:" +msgstr "An:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:20 +msgid "from:" +msgstr "Von:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:26 +msgid "Added" +msgstr "Hinzugefügt" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:33 +msgid "Changed" +msgstr "Geändert" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:40 +msgid "Deleted" +msgstr "Gelöscht" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:54 +msgid "added:" +msgstr "hinzugefügt:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:57 +msgid "removed:" +msgstr "entfernt:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:62 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:79 +msgid "From:" +msgstr "Von:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:63 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:80 +msgid "To:" +msgstr "An:" + +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/wiki/models.py:32 +msgid "content" +msgstr "Inhalt" + +#: taiga/projects/history/templatetags/functions.py:27 +#: taiga/projects/mixins/blocked.py:31 +msgid "blocked note" +msgstr "Blockierungsgrund" + +#: taiga/projects/issues/api.py:139 +msgid "You don't have permissions to set this sprint to this issue." +msgstr "" +"Sie haben nicht die Berechtigung, das Ticket auf diesen Sprint zu setzen." + +#: taiga/projects/issues/api.py:143 +msgid "You don't have permissions to set this status to this issue." +msgstr "" +"Sie haben nicht die Berechtigung, das Ticket auf diesen Status zu setzen. " + +#: taiga/projects/issues/api.py:147 +msgid "You don't have permissions to set this severity to this issue." +msgstr "" +"Sie haben nicht die Berechtigung, das Ticket auf diese Gewichtung zu setzen." + +#: taiga/projects/issues/api.py:151 +msgid "You don't have permissions to set this priority to this issue." +msgstr "" +"Sie haben nicht die Berechtigung, das Ticket auf diese Priorität zu setzen. " + +#: taiga/projects/issues/api.py:155 +msgid "You don't have permissions to set this type to this issue." +msgstr "Sie haben nicht die Berechtigung, das Ticket auf diese Art zu setzen." + +#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 +#: taiga/projects/userstories/models.py:57 +msgid "ref" +msgstr "ref" + +#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 +#: taiga/projects/userstories/models.py:67 +msgid "status" +msgstr "Status" + +#: taiga/projects/issues/models.py:42 +msgid "severity" +msgstr "Gewichtung" + +#: taiga/projects/issues/models.py:44 +msgid "priority" +msgstr "Priorität" + +#: taiga/projects/issues/models.py:46 +msgid "type" +msgstr "Art" + +#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 +#: taiga/projects/userstories/models.py:60 +msgid "milestone" +msgstr "Meilenstein" + +#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +msgid "finished date" +msgstr "Datum der Fertigstellung" + +#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 +#: taiga/projects/userstories/models.py:89 +msgid "subject" +msgstr "Betreff" + +#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 +#: taiga/projects/userstories/models.py:93 +msgid "assigned to" +msgstr "zugewiesen an" + +#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 +#: taiga/projects/userstories/models.py:103 +msgid "external reference" +msgstr "externe Referenz" + +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 +#: taiga/projects/models.py:352 taiga/projects/models.py:416 +#: taiga/projects/models.py:499 taiga/projects/models.py:557 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 +msgid "slug" +msgstr "Slug" + +#: taiga/projects/milestones/models.py:42 +msgid "estimated start date" +msgstr "geschätzter Starttermin" + +#: taiga/projects/milestones/models.py:43 +msgid "estimated finish date" +msgstr "geschätzter Endtermin" + +#: taiga/projects/milestones/models.py:50 taiga/projects/models.py:356 +#: taiga/projects/models.py:420 taiga/projects/models.py:503 +msgid "is closed" +msgstr "ist geschlossen" + +#: taiga/projects/milestones/models.py:52 +msgid "disponibility" +msgstr "Verfügbarkeit" + +#: taiga/projects/milestones/models.py:75 +msgid "The estimated start must be previous to the estimated finish." +msgstr "Der erwartete Beginn muss vor dem erwarteten Ende liegen. " + +#: taiga/projects/milestones/validators.py:12 +msgid "There's no sprint with that id" +msgstr "Es gibt keinen Sprint mit dieser id" + +#: taiga/projects/mixins/blocked.py:29 +msgid "is blocked" +msgstr "ist gesperrt" + +#: taiga/projects/mixins/ordering.py:47 +#, python-brace-format +msgid "'{param}' parameter is mandatory" +msgstr "'{param}' Parameter ist ein Pflichtfeld" + +#: taiga/projects/mixins/ordering.py:51 +msgid "'project' parameter is mandatory" +msgstr "Der 'project' Parameter ist ein Pflichtfeld" + +#: taiga/projects/models.py:59 +msgid "email" +msgstr "E-Mail" + +#: taiga/projects/models.py:61 +msgid "create at" +msgstr "erstellt am " + +#: taiga/projects/models.py:63 taiga/users/models.py:128 +msgid "token" +msgstr "Token" + +#: taiga/projects/models.py:69 +msgid "invitation extra text" +msgstr "Einladung Zusatztext " + +#: taiga/projects/models.py:72 +msgid "user order" +msgstr "Benutzerreihenfolge" + +#: taiga/projects/models.py:78 +msgid "The user is already member of the project" +msgstr "Der Benutzer ist bereits Mitglied dieses Projekts" + +#: taiga/projects/models.py:93 +msgid "default points" +msgstr "voreingestellte Punkte" + +#: taiga/projects/models.py:97 +msgid "default US status" +msgstr "voreingesteller User Story Status " + +#: taiga/projects/models.py:101 +msgid "default task status" +msgstr "voreingestellter Aufgabenstatus" + +#: taiga/projects/models.py:104 +msgid "default priority" +msgstr "voreingestellte Priorität " + +#: taiga/projects/models.py:107 +msgid "default severity" +msgstr "voreingestellte Gewichtung " + +#: taiga/projects/models.py:111 +msgid "default issue status" +msgstr "voreingestellter Ticket Status" + +#: taiga/projects/models.py:115 +msgid "default issue type" +msgstr "voreingestellter Ticket Typ" + +#: taiga/projects/models.py:136 +msgid "members" +msgstr "Mitglieder" + +#: taiga/projects/models.py:139 +msgid "total of milestones" +msgstr "Meilensteine Gesamt" + +#: taiga/projects/models.py:140 +msgid "total story points" +msgstr "Story Punkte insgesamt" + +#: taiga/projects/models.py:143 taiga/projects/models.py:570 +msgid "active backlog panel" +msgstr "aktives Backlog Panel" + +#: taiga/projects/models.py:145 taiga/projects/models.py:572 +msgid "active kanban panel" +msgstr "aktives Kanban Panel" + +#: taiga/projects/models.py:147 taiga/projects/models.py:574 +msgid "active wiki panel" +msgstr "aktives Wiki Panel" + +#: taiga/projects/models.py:149 taiga/projects/models.py:576 +msgid "active issues panel" +msgstr "aktives Tickets Panel" + +#: taiga/projects/models.py:152 taiga/projects/models.py:579 +msgid "videoconference system" +msgstr "Videokonferenzsystem" + +#: taiga/projects/models.py:154 taiga/projects/models.py:581 +msgid "videoconference room salt" +msgstr "" + +#: taiga/projects/models.py:159 +msgid "creation template" +msgstr "" + +#: taiga/projects/models.py:162 +msgid "anonymous permissions" +msgstr "Rechte für anonyme Nutzer" + +#: taiga/projects/models.py:166 +msgid "user permissions" +msgstr "Rechte für registrierte Nutzer" + +#: taiga/projects/models.py:169 +msgid "is private" +msgstr "ist privat" + +#: taiga/projects/models.py:180 +msgid "tags colors" +msgstr "Tag Farben" + +#: taiga/projects/models.py:339 +msgid "modules config" +msgstr "" + +#: taiga/projects/models.py:358 +msgid "is archived" +msgstr "ist archiviert" + +#: taiga/projects/models.py:360 taiga/projects/models.py:422 +#: taiga/projects/models.py:455 taiga/projects/models.py:478 +#: taiga/projects/models.py:505 taiga/projects/models.py:536 +#: taiga/users/models.py:113 +msgid "color" +msgstr "Farbe" + +#: taiga/projects/models.py:362 +msgid "work in progress limit" +msgstr "Ausführungslimit" + +#: taiga/projects/models.py:393 taiga/userstorage/models.py:31 +msgid "value" +msgstr "Wert" + +#: taiga/projects/models.py:567 +msgid "default owner's role" +msgstr "voreingestellte Besitzerrolle" + +#: taiga/projects/models.py:583 +msgid "default options" +msgstr "Vorgabe Optionen" + +#: taiga/projects/models.py:584 +msgid "us statuses" +msgstr "User Story Status " + +#: taiga/projects/models.py:585 taiga/projects/userstories/models.py:40 +#: taiga/projects/userstories/models.py:72 +msgid "points" +msgstr "Punkte" + +#: taiga/projects/models.py:586 +msgid "task statuses" +msgstr "Aufgaben Status" + +#: taiga/projects/models.py:587 +msgid "issue statuses" +msgstr "Ticket Status" + +#: taiga/projects/models.py:588 +msgid "issue types" +msgstr "Ticket Arten" + +#: taiga/projects/models.py:589 +msgid "priorities" +msgstr "Prioritäten" + +#: taiga/projects/models.py:590 +msgid "severities" +msgstr "Gewichtung" + +#: taiga/projects/models.py:591 +msgid "roles" +msgstr "Rollen" + +#: taiga/projects/notifications/choices.py:28 +msgid "Not watching" +msgstr "Nicht beobachten" + +#: taiga/projects/notifications/choices.py:29 +msgid "Watching" +msgstr "Beobachten" + +#: taiga/projects/notifications/choices.py:30 +msgid "Ignoring" +msgstr "Ignorieren" + +#: taiga/projects/notifications/mixins.py:87 +msgid "watchers" +msgstr "Beobachter" + +#: taiga/projects/notifications/models.py:59 +msgid "created date time" +msgstr "" + +#: taiga/projects/notifications/models.py:61 +msgid "updated date time" +msgstr "" + +#: taiga/projects/notifications/models.py:63 +msgid "history entries" +msgstr "Chronik Einträge" + +#: taiga/projects/notifications/models.py:66 +msgid "notify users" +msgstr "Benutzer benachrichtigen" + +#: taiga/projects/notifications/services.py:63 +#: taiga/projects/notifications/services.py:77 +msgid "Notify exists for specified user and project" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue updated

\n" +"

Hello %(user)s,
%(changer)s has updated an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Issue updated\n" +"Hello %(user)s, %(changer)s has updated an issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New issue created

\n" +"

Hello %(user)s,
%(changer)s has created a new issue on " +"%(project)s

\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New issue created\n" +"Hello %(user)s, %(changer)s has created a new issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Issue deleted\n" +"Hello %(user)s, %(changer)s has deleted an issue on %(project)s\n" +"Issue #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint updated

\n" +"

Hello %(user)s,
%(changer)s has updated an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See sprint\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Sprint updated\n" +"Hello %(user)s, %(changer)s has updated a sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New sprint created

\n" +"

Hello %(user)s,
%(changer)s has created a new sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See " +"sprint\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New sprint created\n" +"Hello %(user)s, %(changer)s has created a new sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Sprint deleted\n" +"Hello %(user)s, %(changer)s has deleted an sprint on %(project)s\n" +"Sprint %(name)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task updated

\n" +"

Hello %(user)s,
%(changer)s has updated a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Task updated\n" +"Hello %(user)s, %(changer)s has updated a task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the task #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New task created

\n" +"

Hello %(user)s,
%(changer)s has created a new task on " +"%(project)s

\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New task created\n" +"Hello %(user)s, %(changer)s has created a new task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the task #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Task deleted\n" +"Hello %(user)s, %(changer)s has deleted a task on %(project)s\n" +"Task #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the task #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story updated

\n" +"

Hello %(user)s,
%(changer)s has updated a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"User story updated\n" +"Hello %(user)s, %(changer)s has updated a user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the US #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New user story created

\n" +"

Hello %(user)s,
%(changer)s has created a new user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New user story created\n" +"Hello %(user)s, %(changer)s has created a new user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the US #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"User Story deleted\n" +"Hello %(user)s, %(changer)s has deleted a user story on %(project)s\n" +"User Story #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the US #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki Page updated

\n" +"

Hello %(user)s,
%(changer)s has updated a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See Wiki Page\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Wiki Page updated\n" +"\n" +"Hello %(user)s, %(changer)s has updated a wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the Wiki Page \"%(page)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New wiki page created

\n" +"

Hello %(user)s,
%(changer)s has created a new wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See " +"wiki page\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New wiki page created\n" +"\n" +"Hello %(user)s, %(changer)s has created a new wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the Wiki Page \"%(page)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki page deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Wiki page deleted\n" +"\n" +"Hello %(user)s, %(changer)s has deleted a wiki page on %(project)s\n" +"\n" +"Wiki page %(page)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Wiki Page \"%(page)s\"\n" +msgstr "" + +#: taiga/projects/notifications/validators.py:44 +msgid "Watchers contains invalid users" +msgstr "Beobachter enthält ungültige Benutzer " + +#: taiga/projects/occ/mixins.py:35 +msgid "The version must be an integer" +msgstr "Die Watcher beinhalten einen ungültigen Benutzer" + +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" +msgstr "" + +#: taiga/projects/occ/mixins.py:74 +msgid "The version doesn't match with the current one" +msgstr "Die Version stimmt nicht mit der aktuellen überein" + +#: taiga/projects/occ/mixins.py:93 +msgid "version" +msgstr "Version" + +#: taiga/projects/permissions.py:39 +msgid "You can't leave the project if there are no more owners" +msgstr "" +"Sie können das Projekt nicht verlassen, wenn keine weiteren Besitzer " +"vorhanden sind" + +#: taiga/projects/serializers.py:233 +msgid "Email address is already taken" +msgstr "Die E-Mailadresse ist bereits vergeben" + +#: taiga/projects/serializers.py:245 +msgid "Invalid role for the project" +msgstr "Ungültige Rolle für dieses Projekt" + +#: taiga/projects/serializers.py:340 +msgid "Total milestones must be major or equal to zero" +msgstr "Die Gesamtzahl der Meilensteine muss größer oder gleich Null sein " + +#: taiga/projects/serializers.py:402 +msgid "Default options" +msgstr "Voreingestellte Optionen" + +#: taiga/projects/serializers.py:403 +msgid "User story's statuses" +msgstr "Status für User-Stories" + +#: taiga/projects/serializers.py:404 +msgid "Points" +msgstr "Punkte" + +#: taiga/projects/serializers.py:405 +msgid "Task's statuses" +msgstr "Aufgaben Status" + +#: taiga/projects/serializers.py:406 +msgid "Issue's statuses" +msgstr "Ticket Status" + +#: taiga/projects/serializers.py:407 +msgid "Issue's types" +msgstr "Ticket Arten" + +#: taiga/projects/serializers.py:408 +msgid "Priorities" +msgstr "Prioritäten" + +#: taiga/projects/serializers.py:409 +msgid "Severities" +msgstr "Gewichtung" + +#: taiga/projects/serializers.py:410 +msgid "Roles" +msgstr "Rollen" + +#: taiga/projects/services/stats.py:72 +msgid "Future sprint" +msgstr "Zukünftiger Sprint" + +#: taiga/projects/services/stats.py:89 +msgid "Project End" +msgstr "Projektende" + +#: taiga/projects/tasks/api.py:58 taiga/projects/tasks/api.py:61 +#: taiga/projects/tasks/api.py:64 taiga/projects/tasks/api.py:67 +msgid "You don't have permissions for add/modify this task." +msgstr "" +"Sie haben nicht die Berechtigungen, um diese Aufgabe hinzuzufügen/zu ändern." + +#: taiga/projects/tasks/models.py:56 +msgid "us order" +msgstr "User-Story Befehl " + +#: taiga/projects/tasks/models.py:58 +msgid "taskboard order" +msgstr "Taskboard Befehl " + +#: taiga/projects/tasks/models.py:66 +msgid "is iocaine" +msgstr "ist Iocaine" + +#: taiga/projects/tasks/validators.py:12 +msgid "There's no task with that id" +msgstr "Es gibt keine Aufgabe mit dieser id" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:6 +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:4 +msgid "someone" +msgstr "jemand" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:11 +#, python-format +msgid "" +"\n" +"

You have been invited to Taiga!

\n" +"

Hi! %(full_name)s has sent you an invitation to join project " +"%(project)s in Taiga.
Taiga is a Free, open Source Agile Project " +"Management Tool.

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:17 +#, python-format +msgid "" +"\n" +"

And now a few words from the jolly good fellow or sistren
" +"who thought so kindly as to invite you

\n" +"

%(extra)s

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation to Taiga" +msgstr "Ihre Einladung zu Taiga annehmen" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation" +msgstr "Ihre Einladung annehmen" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:25 +msgid "The Taiga Team" +msgstr "Das Taiga-Team" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:6 +#, python-format +msgid "" +"\n" +"You, or someone you know, has invited you to Taiga\n" +"\n" +"Hi! %(full_name)s has sent you an invitation to join a project called " +"%(project)s which is being managed on Taiga, a Free, open Source Agile " +"Project Management Tool.\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:12 +#, python-format +msgid "" +"\n" +"And now a few words from the jolly good fellow or sistren who thought so " +"kindly as to invite you:\n" +"\n" +"%(extra)s\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:18 +msgid "Accept your invitation to Taiga following this link:" +msgstr "Nehmen Sie Ihre Einladung zu Taiga an, indem Sie diesem Link folgen: " + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:20 +msgid "" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"\n" + +#: taiga/projects/templates/emails/membership_invitation-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Invitation to join to the project '%(project)s'\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

You have been added to a project

\n" +"

Hello %(full_name)s,
you have been added to the project " +"%(project)s

\n" +" Go to " +"project\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"You have been added to a project\n" +"Hello %(full_name)s,you have been added to the project %(project)s\n" +"\n" +"See project at %(url)s\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Added to the project '%(project)s'\n" +msgstr "" +"\n" +" [Taiga] Zum Projekt hinzugefügt '%(project)s'\n" +" \n" + +#. Translators: Name of scrum project template. +#: taiga/projects/translations.py:28 +msgid "Scrum" +msgstr "Scrum" + +#. Translators: Description of scrum project template. +#: taiga/projects/translations.py:30 +msgid "" +"The agile product backlog in Scrum is a prioritized features list, " +"containing short descriptions of all functionality desired in the product. " +"When applying Scrum, it's not necessary to start a project with a lengthy, " +"upfront effort to document all requirements. The Scrum product backlog is " +"then allowed to grow and change as more is learned about the product and its " +"customers" +msgstr "" + +#. Translators: Name of kanban project template. +#: taiga/projects/translations.py:33 +msgid "Kanban" +msgstr "Kanban" + +#. Translators: Description of kanban project template. +#: taiga/projects/translations.py:35 +msgid "" +"Kanban is a method for managing knowledge work with an emphasis on just-in-" +"time delivery while not overloading the team members. In this approach, the " +"process, from definition of a task to its delivery to the customer, is " +"displayed for participants to see and team members pull work from a queue." +msgstr "" + +#. Translators: User story point value (value = undefined) +#: taiga/projects/translations.py:43 +msgid "?" +msgstr "?" + +#. Translators: User story point value (value = 0) +#: taiga/projects/translations.py:45 +msgid "0" +msgstr "0" + +#. Translators: User story point value (value = 0.5) +#: taiga/projects/translations.py:47 +msgid "1/2" +msgstr "1/2" + +#. Translators: User story point value (value = 1) +#: taiga/projects/translations.py:49 +msgid "1" +msgstr "1" + +#. Translators: User story point value (value = 2) +#: taiga/projects/translations.py:51 +msgid "2" +msgstr "2" + +#. Translators: User story point value (value = 3) +#: taiga/projects/translations.py:53 +msgid "3" +msgstr "3" + +#. Translators: User story point value (value = 5) +#: taiga/projects/translations.py:55 +msgid "5" +msgstr "5" + +#. Translators: User story point value (value = 8) +#: taiga/projects/translations.py:57 +msgid "8" +msgstr "8" + +#. Translators: User story point value (value = 10) +#: taiga/projects/translations.py:59 +msgid "10" +msgstr "10" + +#. Translators: User story point value (value = 13) +#: taiga/projects/translations.py:61 +msgid "13" +msgstr "13" + +#. Translators: User story point value (value = 20) +#: taiga/projects/translations.py:63 +msgid "20" +msgstr "20" + +#. Translators: User story point value (value = 40) +#: taiga/projects/translations.py:65 +msgid "40" +msgstr "40" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 +#: taiga/projects/translations.py:112 +msgid "New" +msgstr "Neu" + +#. Translators: User story status +#: taiga/projects/translations.py:76 +msgid "Ready" +msgstr "Fertig" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 +#: taiga/projects/translations.py:114 +msgid "In progress" +msgstr "In Arbeit" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 +#: taiga/projects/translations.py:116 +msgid "Ready for test" +msgstr "Bereit zum Testen" + +#. Translators: User story status +#: taiga/projects/translations.py:85 +msgid "Done" +msgstr "Erledigt" + +#. Translators: User story status +#: taiga/projects/translations.py:88 +msgid "Archived" +msgstr "Archiviert" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +msgid "Closed" +msgstr "Geschlossen" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +msgid "Needs Info" +msgstr "Information wird benötigt" + +#. Translators: Issue status +#: taiga/projects/translations.py:122 +msgid "Postponed" +msgstr "Verschoben" + +#. Translators: Issue status +#: taiga/projects/translations.py:124 +msgid "Rejected" +msgstr "Zurückgewiesen" + +#. Translators: Issue type +#: taiga/projects/translations.py:132 +msgid "Bug" +msgstr "Fehler" + +#. Translators: Issue type +#: taiga/projects/translations.py:134 +msgid "Question" +msgstr "Frage" + +#. Translators: Issue type +#: taiga/projects/translations.py:136 +msgid "Enhancement" +msgstr "Erweiterung" + +#. Translators: Issue priority +#: taiga/projects/translations.py:144 +msgid "Low" +msgstr "Niedrig" + +#. Translators: Issue priority +#. Translators: Issue severity +#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +msgid "Normal" +msgstr "Normal" + +#. Translators: Issue priority +#: taiga/projects/translations.py:148 +msgid "High" +msgstr "Hoch" + +#. Translators: Issue severity +#: taiga/projects/translations.py:155 +msgid "Wishlist" +msgstr "Wunschliste" + +#. Translators: Issue severity +#: taiga/projects/translations.py:157 +msgid "Minor" +msgstr "Gering" + +#. Translators: Issue severity +#: taiga/projects/translations.py:161 +msgid "Important" +msgstr "Wichtig" + +#. Translators: Issue severity +#: taiga/projects/translations.py:163 +msgid "Critical" +msgstr "Kritisch" + +#. Translators: User role +#: taiga/projects/translations.py:170 +msgid "UX" +msgstr "" + +#. Translators: User role +#: taiga/projects/translations.py:172 +msgid "Design" +msgstr "Design" + +#. Translators: User role +#: taiga/projects/translations.py:174 +msgid "Front" +msgstr "" + +#. Translators: User role +#: taiga/projects/translations.py:176 +msgid "Back" +msgstr "" + +#. Translators: User role +#: taiga/projects/translations.py:178 +msgid "Product Owner" +msgstr "Projekteigentümer " + +#. Translators: User role +#: taiga/projects/translations.py:180 +msgid "Stakeholder" +msgstr "Stakeholder" + +#: taiga/projects/userstories/api.py:174 +#, python-brace-format +msgid "" +"Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " +"{subject}\")" +msgstr "" +"Erstelle die User-Story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " +"{subject}\")" + +#: taiga/projects/userstories/models.py:37 +msgid "role" +msgstr "Rolle" + +#: taiga/projects/userstories/models.py:75 +msgid "backlog order" +msgstr "Backlog Befehl " + +#: taiga/projects/userstories/models.py:77 +#: taiga/projects/userstories/models.py:79 +msgid "sprint order" +msgstr "Sprintreihenfolge" + +#: taiga/projects/userstories/models.py:87 +msgid "finish date" +msgstr "Endtermin" + +#: taiga/projects/userstories/models.py:95 +msgid "is client requirement" +msgstr "ist Kundenanforderung" + +#: taiga/projects/userstories/models.py:97 +msgid "is team requirement" +msgstr "ist Teamanforderung" + +#: taiga/projects/userstories/models.py:102 +msgid "generated from issue" +msgstr "erzeugt von Ticket" + +#: taiga/projects/userstories/validators.py:28 +msgid "There's no user story with that id" +msgstr "Es gibt keine User Story mit dieser id" + +#: taiga/projects/validators.py:28 +msgid "There's no project with that id" +msgstr "Es gibt kein Projekt mit dieser id" + +#: taiga/projects/validators.py:37 +msgid "There's no user story status with that id" +msgstr "Es gibt keinen User-Story Status mit dieser id" + +#: taiga/projects/validators.py:46 +msgid "There's no task status with that id" +msgstr "Es gibt keinen Aufgabenstatus mit dieser id" + +#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 +#: taiga/projects/votes/models.py:54 +msgid "Votes" +msgstr "Stimmen" + +#: taiga/projects/votes/models.py:50 +msgid "votes" +msgstr "Stimmen" + +#: taiga/projects/votes/models.py:53 +msgid "Vote" +msgstr "Stimme" + +#: taiga/projects/wiki/api.py:60 +msgid "'content' parameter is mandatory" +msgstr "" + +#: taiga/projects/wiki/api.py:63 +msgid "'project_id' parameter is mandatory" +msgstr "" + +#: taiga/projects/wiki/models.py:36 +msgid "last modifier" +msgstr "letzte Änderung" + +#: taiga/projects/wiki/models.py:69 +msgid "href" +msgstr "href" + +#: taiga/users/admin.py:50 +msgid "Personal info" +msgstr "Personal Information" + +#: taiga/users/admin.py:52 +msgid "Permissions" +msgstr "Berechtigungen" + +#: taiga/users/admin.py:53 +msgid "Important dates" +msgstr "Wichtige Termine" + +#: taiga/users/api.py:124 taiga/users/api.py:131 +msgid "Invalid username or email" +msgstr "Ungültiger Benutzername oder E-Mail" + +#: taiga/users/api.py:140 +msgid "Mail sended successful!" +msgstr "E-Mail erfolgreich gesendet." + +#: taiga/users/api.py:152 taiga/users/api.py:157 +msgid "Token is invalid" +msgstr "Token ist ungültig" + +#: taiga/users/api.py:178 +msgid "Current password parameter needed" +msgstr "Aktueller Passwort Parameter wird benötigt" + +#: taiga/users/api.py:181 +msgid "New password parameter needed" +msgstr "Neuer Passwort Parameter benötigt" + +#: taiga/users/api.py:184 +msgid "Invalid password length at least 6 charaters needed" +msgstr "Ungültige Passwortlänge, mindestens 6 Zeichen erforderlich" + +#: taiga/users/api.py:187 +msgid "Invalid current password" +msgstr "Ungültiges aktuelles Passwort" + +#: taiga/users/api.py:203 +msgid "Incomplete arguments" +msgstr "" + +#: taiga/users/api.py:208 +msgid "Invalid image format" +msgstr "Ungültiges Bildformat" + +#: taiga/users/api.py:261 +msgid "Duplicated email" +msgstr "Doppelte E-Mail" + +#: taiga/users/api.py:263 +msgid "Not valid email" +msgstr "Ungültige E-Mail" + +#: taiga/users/api.py:283 taiga/users/api.py:289 +msgid "" +"Invalid, are you sure the token is correct and you didn't use it before?" +msgstr "" +"Ungültig. Sind Sie sicher, dass das Token korrekt ist und Sie es nicht " +"bereits verwendet haben?" + +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 +msgid "Invalid, are you sure the token is correct?" +msgstr "Ungültig. Sind Sie sicher, dass das Token korrekt ist?" + +#: taiga/users/models.py:69 +msgid "superuser status" +msgstr "Superuser Status" + +#: taiga/users/models.py:70 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Dieser Benutzer soll alle Berechtigungen erhalten, ohne dass diese zuvor " +"zugewiesen werden müssen. " + +#: taiga/users/models.py:100 +msgid "username" +msgstr "Benutzername" + +#: taiga/users/models.py:101 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" +msgstr "" +"Benötigt. 30 Zeichen oder weniger.. Buchstaben, Zahlen und /./-/_ Zeichen" + +#: taiga/users/models.py:104 +msgid "Enter a valid username." +msgstr "Geben Sie einen gültigen Benuzternamen ein." + +#: taiga/users/models.py:107 +msgid "active" +msgstr "aktiv" + +#: taiga/users/models.py:108 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Kennzeichnet den Benutzer als aktiv. Deaktiviere die Option anstelle einen " +"Benutzer zu löschen." + +#: taiga/users/models.py:114 +msgid "biography" +msgstr "Über mich" + +#: taiga/users/models.py:117 +msgid "photo" +msgstr "Foto" + +#: taiga/users/models.py:118 +msgid "date joined" +msgstr "Beitrittsdatum" + +#: taiga/users/models.py:120 +msgid "default language" +msgstr "Vorgegebene Sprache" + +#: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 +msgid "default timezone" +msgstr "Vorgegebene Zeitzone" + +#: taiga/users/models.py:126 +msgid "colorize tags" +msgstr "Tag-Farben" + +#: taiga/users/models.py:131 +msgid "email token" +msgstr "E-Mail Token" + +#: taiga/users/models.py:133 +msgid "new email address" +msgstr "neue E-Mail Adresse" + +#: taiga/users/models.py:188 +msgid "permissions" +msgstr "Berechtigungen" + +#: taiga/users/serializers.py:59 +msgid "invalid" +msgstr "ungültig" + +#: taiga/users/serializers.py:70 +msgid "Invalid username. Try with a different one." +msgstr "Ungültiger Benutzername. Versuchen Sie es mit einem anderen." + +#: taiga/users/services.py:48 taiga/users/services.py:52 +msgid "Username or password does not matches user." +msgstr "Benutzername oder Passwort stimmen mit keinem Benutzer überein." + +#: taiga/users/templates/emails/change_email-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Change your email

\n" +"

Hello %(full_name)s,
please confirm your email

\n" +" Confirm " +"email\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/change_email-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, please confirm your email\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"\n" +"Hallo %(full_name)s, bitte bestätigen Sie Ihre E-Mail-Adresse\n" +"\n" +"\n" +"%(url)s\n" +"\n" +"\n" +"\n" +"Sie können diese Nachricht ingnorieren, wenn Sie keine Anfrage gestellt " +"haben\n" +"\n" +"\n" +"---\n" +"\n" +"Das Taiga Team\n" + +#: taiga/users/templates/emails/change_email-subject.jinja:1 +msgid "[Taiga] Change email" +msgstr "[Taiga] E-Mail ändern" + +#: taiga/users/templates/emails/password_recovery-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Recover your password

\n" +"

Hello %(full_name)s,
you asked to recover your password

\n" +" Recover your password\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/password_recovery-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, you asked to recover your password\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/password_recovery-subject.jinja:1 +msgid "[Taiga] Password recovery" +msgstr "[Taiga] Passwort-Wiederherstellung" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:6 +msgid "" +"\n" +"
\n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:23 +#, python-format +msgid "" +"\n" +" You may remove your account from this service clicking " +"here\n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:1 +msgid "" +"\n" +"Thank you for registering in Taiga\n" +"\n" +"We hope you enjoy it\n" +"\n" +"We built Taiga because we wanted the project management tool that sits open " +"on our computers all day long, to serve as a continued reminder of why we " +"love to collaborate, code and design.\n" +"\n" +"We built it to be beautiful, elegant, simple to use and fun - without " +"forsaking flexibility and power.\n" +"\n" +"--\n" +"The taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:13 +#, python-format +msgid "" +"\n" +"You may remove your account from this service: %(url)s\n" +msgstr "" + +#: taiga/users/templates/emails/registered_user-subject.jinja:1 +msgid "You've been Taigatized!" +msgstr "Sie wurden taigatisiert! " + +#: taiga/users/validators.py:29 +msgid "There's no role with that id" +msgstr "Es gibt keine Rolle mit dieser id" + +#: taiga/userstorage/api.py:50 +msgid "" +"Duplicate key value violates unique constraint. Key '{}' already exists." +msgstr "" + +#: taiga/userstorage/models.py:30 +msgid "key" +msgstr "Schlüssel" + +#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +msgid "URL" +msgstr "URL" + +#: taiga/webhooks/models.py:29 +msgid "secret key" +msgstr "Geheimer Schlüssel" + +#: taiga/webhooks/models.py:39 +msgid "status code" +msgstr "Status Code" + +#: taiga/webhooks/models.py:40 +msgid "request data" +msgstr "Anfrage Daten" + +#: taiga/webhooks/models.py:41 +msgid "request headers" +msgstr "Anfrage Header" + +#: taiga/webhooks/models.py:42 +msgid "response data" +msgstr "Antwort Daten" + +#: taiga/webhooks/models.py:43 +msgid "response headers" +msgstr "Antwort Header" + +#: taiga/webhooks/models.py:44 +msgid "duration" +msgstr "Dauer" diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index 54e7762a..ce6bab28 100644 --- a/taiga/locale/en/LC_MESSAGES/django.po +++ b/taiga/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-09 09:47+0200\n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" "PO-Revision-Date: 2015-03-25 20:09+0100\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Taiga Dev Team \n" @@ -2503,7 +2503,7 @@ msgstr "" msgid "Stakeholder" msgstr "" -#: taiga/projects/userstories/api.py:173 +#: taiga/projects/userstories/api.py:174 #, python-brace-format msgid "" "Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index 23f5842e..f8c322b1 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-09 09:47+0200\n" -"PO-Revision-Date: 2015-06-09 07:47+0000\n" -"Last-Translator: Taiga Dev Team \n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" +"PO-Revision-Date: 2015-06-17 07:24+0000\n" +"Last-Translator: David Barragán \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/taiga-back/" "language/es/)\n" "MIME-Version: 1.0\n" @@ -477,6 +477,9 @@ msgid "" "%(comment)s

\n" " " msgstr "" +"\n" +"

comentario:

\n" +"

%(comment)s

" #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -851,7 +854,7 @@ msgid "" msgstr "" "\n" "

Feedback

\n" -"

Taiga ha recivido feedback de %(full_name)s <%(email)s>

" +"

Taiga ha recibido feedback de %(full_name)s <%(email)s>

" #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:9 #, python-format @@ -2477,7 +2480,7 @@ msgstr "La versión debe ser un número entero" #: taiga/projects/occ/mixins.py:58 msgid "The version parameter is not valid" -msgstr "" +msgstr "La versión no es válida" #: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" @@ -2961,7 +2964,7 @@ msgstr "Product Owner" msgid "Stakeholder" msgstr "Stakeholder" -#: taiga/projects/userstories/api.py:173 +#: taiga/projects/userstories/api.py:174 #, python-brace-format msgid "" "Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " @@ -3165,7 +3168,7 @@ msgstr "idioma por defecto" #: taiga/users/models.py:122 msgid "default theme" -msgstr "" +msgstr "tema por defecto" #: taiga/users/models.py:124 msgid "default timezone" diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index be67efcc..d38113fe 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-09 09:47+0200\n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" "PO-Revision-Date: 2015-06-09 07:47+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/taiga-back/" @@ -2954,7 +2954,7 @@ msgstr "Tuoteomistaja" msgid "Stakeholder" msgstr "Sidosryhmä" -#: taiga/projects/userstories/api.py:173 +#: taiga/projects/userstories/api.py:174 #, python-brace-format msgid "" "Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index a4481c97..a5de978e 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -8,15 +8,16 @@ # Florent B. , 2015 # Louis-Michel Couture , 2015 # Matthieu Durocher , 2015 +# Nlko , 2015 # Stéphane Mor , 2015 # William Godin , 2015 msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-09 09:47+0200\n" -"PO-Revision-Date: 2015-06-09 07:47+0000\n" -"Last-Translator: Taiga Dev Team \n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" +"PO-Revision-Date: 2015-06-12 21:30+0000\n" +"Last-Translator: Nlko \n" "Language-Team: French (http://www.transifex.com/projects/p/taiga-back/" "language/fr/)\n" "MIME-Version: 1.0\n" @@ -469,6 +470,9 @@ msgid "" "%(comment)s

\n" " " msgstr "" +"\n" +"

commentaire:

\n" +"

%(comment)s

" #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -894,6 +898,9 @@ msgid "" "\n" "{message}" msgstr "" +"Commentaire provenant de GitHub:\n" +"\n" +"{message}" #: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" @@ -1800,6 +1807,8 @@ msgid "" "\n" "[%(project)s] Created the sprint \"%(milestone)s\"\n" msgstr "" +"\n" +"[%(project)s] Sprint \"%(milestone)s\" créé\n" #: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-html.jinja:4 #, python-format @@ -1831,6 +1840,8 @@ msgid "" "\n" "[%(project)s] Deleted the Sprint \"%(milestone)s\"\n" msgstr "" +"\n" +"[%(project)s] Sprint \"%(milestone)s\" Éffacé\n" #: taiga/projects/notifications/templates/emails/tasks/task-change-body-html.jinja:4 #, python-format @@ -1860,6 +1871,8 @@ msgid "" "\n" "[%(project)s] Updated the task #%(ref)s \"%(subject)s\"\n" msgstr "" +"\n" +"[%(project)s] Tâche #%(ref)s \"%(subject)s\" mise à jour\n" #: taiga/projects/notifications/templates/emails/tasks/task-create-body-html.jinja:4 #, python-format @@ -1893,6 +1906,8 @@ msgid "" "\n" "[%(project)s] Created the task #%(ref)s \"%(subject)s\"\n" msgstr "" +"\n" +"[%(project)s] Tâche #%(ref)s \"%(subject)s\" créée\n" #: taiga/projects/notifications/templates/emails/tasks/task-delete-body-html.jinja:4 #, python-format @@ -1924,6 +1939,8 @@ msgid "" "\n" "[%(project)s] Deleted the task #%(ref)s \"%(subject)s\"\n" msgstr "" +"\n" +"[%(project)s] Tâche #%(ref)s \"%(subject)s\" supprimée\n" #: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-html.jinja:4 #, python-format @@ -1953,6 +1970,8 @@ msgid "" "\n" "[%(project)s] Updated the US #%(ref)s \"%(subject)s\"\n" msgstr "" +"\n" +"[%(project)s] US #%(ref)s \"%(subject)s\" mise à jour\n" #: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-html.jinja:4 #, python-format @@ -2594,7 +2613,7 @@ msgstr "Product Owner" msgid "Stakeholder" msgstr "Participant" -#: taiga/projects/userstories/api.py:173 +#: taiga/projects/userstories/api.py:174 #, python-brace-format msgid "" "Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " diff --git a/taiga/locale/nl/LC_MESSAGES/django.po b/taiga/locale/nl/LC_MESSAGES/django.po new file mode 100644 index 00000000..822ec21a --- /dev/null +++ b/taiga/locale/nl/LC_MESSAGES/django.po @@ -0,0 +1,3052 @@ +# taiga-back.taiga. +# Copyright (C) 2015 Taiga Dev Team +# This file is distributed under the same license as the taiga-back package. +# +# Translators: +# Dajo Hein, 2015 +# Haroun Pacquee, 2015 +msgid "" +msgstr "" +"Project-Id-Version: taiga-back\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" +"PO-Revision-Date: 2015-06-09 07:47+0000\n" +"Last-Translator: Taiga Dev Team \n" +"Language-Team: Dutch (http://www.transifex.com/projects/p/taiga-back/" +"language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: taiga/auth/api.py:99 +msgid "Public register is disabled." +msgstr "Publieke registratie is uitgeschakeld." + +#: taiga/auth/api.py:132 +msgid "invalid register type" +msgstr "ongeldig registratie type" + +#: taiga/auth/api.py:145 +msgid "invalid login type" +msgstr "ongeldig login type" + +#: taiga/auth/serializers.py:34 taiga/users/serializers.py:58 +msgid "invalid username" +msgstr "ongeldige gebruikersnaam" + +#: taiga/auth/serializers.py:39 taiga/users/serializers.py:64 +msgid "" +"Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" +msgstr "Verplicht. 255 tekens of minder. Letters, nummers en /./-/_ tekens'" + +#: taiga/auth/services.py:75 +msgid "Username is already in use." +msgstr "Gebruikersnaame is al in gebruik." + +#: taiga/auth/services.py:78 +msgid "Email is already in use." +msgstr "E-mail adres is al in gebruik." + +#: taiga/auth/services.py:94 +msgid "Token not matches any valid invitation." +msgstr "Token stemt niet overeen met een geldige uitnodiging." + +#: taiga/auth/services.py:122 +msgid "User is already registered." +msgstr "Gebruiker is al geregistreerd." + +#: taiga/auth/services.py:146 +msgid "Membership with user is already exists." +msgstr "Lidmaatschap met gebruiker bestaat al." + +#: taiga/auth/services.py:172 +msgid "Error on creating new user." +msgstr "Fout bij het aanmaken van een nieuwe gebruiker." + +#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 +msgid "Invalid token" +msgstr "Ongeldig token" + +#: taiga/base/api/fields.py:268 +msgid "This field is required." +msgstr "Dit veld is verplicht." + +#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +msgid "Invalid value." +msgstr "Ongeldige waarde." + +#: taiga/base/api/fields.py:453 +#, python-format +msgid "'%s' value must be either True or False." +msgstr "'%s' waarde moet True of False zijn." + +#: taiga/base/api/fields.py:517 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Geef een geldige 'slug' in bestaande uit letters, nummers, underscores of " +"koppeltekens." + +#: taiga/base/api/fields.py:532 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Selecteer een geldige keuze. %(value)s is niet één van de aanwezige " +"keuzemogelijkheden." + +#: taiga/base/api/fields.py:595 +msgid "Enter a valid email address." +msgstr "Voeg een geldig e-mail adres toe." + +#: taiga/base/api/fields.py:637 +#, python-format +msgid "Date has wrong format. Use one of these formats instead: %s" +msgstr "" +"Datum heeft het verkeerde formaat. Gebruik één van de volgende formaten: %s" + +#: taiga/base/api/fields.py:701 +#, python-format +msgid "Datetime has wrong format. Use one of these formats instead: %s" +msgstr "" +"Datum en tijd heeft het verkeerde formaat. Gebruik één van de volgende " +"formaten: %s" + +#: taiga/base/api/fields.py:771 +#, python-format +msgid "Time has wrong format. Use one of these formats instead: %s" +msgstr "" +"Tijd heeft een verkeerd formaat. Gebruik één van de volgende formaten: %s" + +#: taiga/base/api/fields.py:828 +msgid "Enter a whole number." +msgstr "Geef een geheel getal in." + +#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Zorg ervoor dat deze waarde minder of gelijk is aan %(limit_value)s." + +#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Zorg ervoor dat deze waarde groter of gelijk is aan %(limit_value)s." + +#: taiga/base/api/fields.py:860 +#, python-format +msgid "\"%s\" value must be a float." +msgstr "\"%s\" waarde dient een float te zijn." + +#: taiga/base/api/fields.py:881 +msgid "Enter a number." +msgstr "Geef een getal in." + +#: taiga/base/api/fields.py:884 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Zorg ervoor dat er niet meer dan %s nummers in totaal zijn." + +#: taiga/base/api/fields.py:885 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Zorg ervoor dat er niet meer dan %s plaatsen na de comma zijn." + +#: taiga/base/api/fields.py:886 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Zorg ervoor dat er niet meer dan %s nummers voor de comma staan." + +#: taiga/base/api/fields.py:953 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"Er was geen bestand aangegeven. Bekijken het type encoding in het formulier." + +#: taiga/base/api/fields.py:954 +msgid "No file was submitted." +msgstr "Er was geen bestand aangegeven." + +#: taiga/base/api/fields.py:955 +msgid "The submitted file is empty." +msgstr "Het gegeven bestand is leeg." + +#: taiga/base/api/fields.py:956 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Zorg ervoor dat deze bestandsnaam maximaal %(max)d tekens lang is (de naam " +"heeft %(length)d tekens)." + +#: taiga/base/api/fields.py:957 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" +"Gelieve ofwel een bestand mee te geven ofwel de checkbox aan te tikken, niet " +"beide." + +#: taiga/base/api/fields.py:997 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Upload een geldige afbeelding. Het bestand dat je hebt geuploadet was ofwel " +"een afbeelding ofwel een corrupte afbeelding." + +#: taiga/base/api/pagination.py:115 +msgid "Page is not 'last', nor can it be converted to an int." +msgstr "Pagina is niet 'last', noch kan het omgezet worden naar een int." + +#: taiga/base/api/pagination.py:119 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "Ongeldige pagina (%(page_number)s): %(message)s" + +#: taiga/base/api/permissions.py:61 +msgid "Invalid permission definition." +msgstr "Ongeldige definitie van permissie." + +#: taiga/base/api/relations.py:221 +#, python-format +msgid "Invalid pk '%s' - object does not exist." +msgstr "Ongeldige pk '%s' - object bestaat niet." + +#: taiga/base/api/relations.py:222 +#, python-format +msgid "Incorrect type. Expected pk value, received %s." +msgstr "Incorrect type. Pk waarde werd verwacht, maar %s gekregen." + +#: taiga/base/api/relations.py:310 +#, python-format +msgid "Object with %s=%s does not exist." +msgstr "Object met %s=%s bestaat niet." + +#: taiga/base/api/relations.py:346 +msgid "Invalid hyperlink - No URL match" +msgstr "Ongeldige hyperlink - Geen URL match" + +#: taiga/base/api/relations.py:347 +msgid "Invalid hyperlink - Incorrect URL match" +msgstr "Ongeldige hyperlink - Incorrecte URL match" + +#: taiga/base/api/relations.py:348 +msgid "Invalid hyperlink due to configuration error" +msgstr "Ongeldige hyperlink door configuratiefout" + +#: taiga/base/api/relations.py:349 +msgid "Invalid hyperlink - object does not exist." +msgstr "Ongeldige hyperlink - object bestaat niet." + +#: taiga/base/api/relations.py:350 +#, python-format +msgid "Incorrect type. Expected url string, received %s." +msgstr "Incorrect type. Url string werd verwacht, maar %s gekregen." + +#: taiga/base/api/serializers.py:296 +msgid "Invalid data" +msgstr "Ongeldige data" + +#: taiga/base/api/serializers.py:388 +msgid "No input provided" +msgstr "Geen input gegeven" + +#: taiga/base/api/serializers.py:548 +msgid "Cannot create a new item, only existing items may be updated." +msgstr "" +"Kan geen nieuw item aanmaken, enkel bestaande items mogen bijgewerkt worden." + +#: taiga/base/api/serializers.py:559 +msgid "Expected a list of items." +msgstr "Verwachtte een lijst van items." + +#: taiga/base/api/views.py:100 +msgid "Not found" +msgstr "Niet gevonden" + +#: taiga/base/api/views.py:103 +msgid "Permission denied" +msgstr "Toestemming geweigerd" + +#: taiga/base/api/views.py:451 +msgid "Server application error" +msgstr "Server applicatie fout" + +#: taiga/base/connectors/exceptions.py:24 +msgid "Connection error." +msgstr "Verbindingsfout." + +#: taiga/base/exceptions.py:53 +msgid "Malformed request." +msgstr "Slecht gevormde request." + +#: taiga/base/exceptions.py:58 +msgid "Incorrect authentication credentials." +msgstr "Incorrecte authenticatie gegevens." + +#: taiga/base/exceptions.py:63 +msgid "Authentication credentials were not provided." +msgstr "Authenticatie gegevens werden niet gegeven." + +#: taiga/base/exceptions.py:68 +msgid "You do not have permission to perform this action." +msgstr "Je hebt geen toestemming om deze actie te ondernemen." + +#: taiga/base/exceptions.py:73 +#, python-format +msgid "Method '%s' not allowed." +msgstr "Methode '%s' is niet toegestaan." + +#: taiga/base/exceptions.py:81 +msgid "Could not satisfy the request's Accept header" +msgstr "Kon niet voldoen aan de Accept header van de request" + +#: taiga/base/exceptions.py:90 +#, python-format +msgid "Unsupported media type '%s' in request." +msgstr "Niet ondersteund media type '%s' in de request." + +#: taiga/base/exceptions.py:98 +msgid "Request was throttled." +msgstr "Request werd gethrottled." + +#: taiga/base/exceptions.py:99 +#, python-format +msgid "Expected available in %d second%s." +msgstr "Verwachtte beschikbaarheid in %d second%s." + +#: taiga/base/exceptions.py:113 +msgid "Unexpected error" +msgstr "Onverwachte fout" + +#: taiga/base/exceptions.py:125 +msgid "Not found." +msgstr "Niet gevonden." + +#: taiga/base/exceptions.py:130 +msgid "Method not supported for this endpoint." +msgstr "Methode niet ondersteund voor dit endpoint." + +#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +msgid "Wrong arguments." +msgstr "Verkeerde argumenten." + +#: taiga/base/exceptions.py:150 +msgid "Data validation error" +msgstr "Data validatie fout" + +#: taiga/base/exceptions.py:162 +msgid "Integrity Error for wrong or invalid arguments" +msgstr "Integriteitsfout voor verkeerde of ongeldige argumenten" + +#: taiga/base/exceptions.py:169 +msgid "Precondition error" +msgstr "Preconditie fout" + +#: taiga/base/filters.py:74 +msgid "Error in filter params types." +msgstr "Fout in filter params types." + +#: taiga/base/filters.py:121 taiga/base/filters.py:210 +#: taiga/base/filters.py:259 +msgid "'project' must be an integer value." +msgstr "'project' moet een integer waarde zijn." + +#: taiga/base/tags.py:25 +msgid "tags" +msgstr "tags" + +#: taiga/base/templates/emails/base-body-html.jinja:6 +msgid "Taiga" +msgstr "Taiga" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Follow us on Twitter" +msgstr "Volg ons op Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Twitter" +msgstr "Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "Get the code on GitHub" +msgstr "Haal de code op GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "GitHub" +msgstr "GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Visit our website" +msgstr "Bezoek onze website" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Taiga.io" +msgstr "Taiga.io" + +#: taiga/base/templates/emails/base-body-html.jinja:423 +#: taiga/base/templates/emails/hero-body-html.jinja:397 +#: taiga/base/templates/emails/updates-body-html.jinja:459 +#, python-format +msgid "" +"\n" +" Taiga Support:\n" +" %(support_url)s\n" +"
\n" +" Contact us:\n" +" \n" +" %(support_email)s\n" +" \n" +"
\n" +" Mailing list:\n" +" \n" +" %(mailing_list_url)s\n" +" \n" +" " +msgstr "" +"\n" +" Taiga Support:\n" +" %(support_url)s\n" +"
\n" +" Contacteer ons:\n" +" \n" +" %(support_email)s\n" +" \n" +"
\n" +" Mailing lijst:\n" +" \n" +" %(mailing_list_url)s\n" +" \n" +" " + +#: taiga/base/templates/emails/hero-body-html.jinja:6 +msgid "You have been Taigatized" +msgstr "Je bent getaiganiseerd." + +#: taiga/base/templates/emails/hero-body-html.jinja:359 +msgid "" +"\n" +"

You have been Taigatized!" +"

\n" +"

Welcome to Taiga, an Open " +"Source, Agile Project Management Tool

\n" +" " +msgstr "" +"\n" +"

Je bent getaiganiseerd!\n" +"

Welkom bij Taiga, een " +"Open Source, Agile Project Management Tool

\n" +" " + +#: taiga/base/templates/emails/updates-body-html.jinja:6 +msgid "[Taiga] Updates" +msgstr "[Taiga] Updates" + +#: taiga/base/templates/emails/updates-body-html.jinja:417 +msgid "Updates" +msgstr "Updates" + +#: taiga/base/templates/emails/updates-body-html.jinja:423 +#, python-format +msgid "" +"\n" +"

comment:" +"

\n" +"

" +"%(comment)s

\n" +" " +msgstr "" + +#: taiga/base/templates/emails/updates-body-text.jinja:6 +#, python-format +msgid "" +"\n" +" Comment: %(comment)s\n" +" " +msgstr "" +"\n" +" Commentaar: %(comment)s\n" +" " + +#: taiga/export_import/api.py:103 +msgid "We needed at least one role" +msgstr "We hadden minstens één rol nodig" + +#: taiga/export_import/api.py:197 +msgid "Needed dump file" +msgstr "Dump file nodig" + +#: taiga/export_import/api.py:204 +msgid "Invalid dump format" +msgstr "Ongeldig dump formaat" + +#: taiga/export_import/dump_service.py:96 +msgid "error importing project data" +msgstr "fout bij het importeren van project data" + +#: taiga/export_import/dump_service.py:109 +msgid "error importing lists of project attributes" +msgstr "fout bij importeren van project attributenlijst" + +#: taiga/export_import/dump_service.py:114 +msgid "error importing default project attributes values" +msgstr "fout bij importeren van standaard projectattributen waarden" + +#: taiga/export_import/dump_service.py:124 +msgid "error importing custom attributes" +msgstr "fout bij importeren eigen attributen" + +#: taiga/export_import/dump_service.py:129 +msgid "error importing roles" +msgstr "fout bij importeren rollen" + +#: taiga/export_import/dump_service.py:144 +msgid "error importing memberships" +msgstr "fout bij importeren lidmaatschappen" + +#: taiga/export_import/dump_service.py:149 +msgid "error importing sprints" +msgstr "fout bij importeren sprints" + +#: taiga/export_import/dump_service.py:154 +msgid "error importing wiki pages" +msgstr "fout bij importeren wiki pagina's" + +#: taiga/export_import/dump_service.py:159 +msgid "error importing wiki links" +msgstr "fout bij importeren wiki links" + +#: taiga/export_import/dump_service.py:164 +msgid "error importing issues" +msgstr "fout bij importeren issues" + +#: taiga/export_import/dump_service.py:169 +msgid "error importing user stories" +msgstr "fout bij importeren user stories" + +#: taiga/export_import/dump_service.py:174 +msgid "error importing tasks" +msgstr "fout bij importeren taken" + +#: taiga/export_import/dump_service.py:179 +msgid "error importing tags" +msgstr "fout bij importeren tags" + +#: taiga/export_import/dump_service.py:183 +msgid "error importing timelines" +msgstr "fout bij importeren tijdlijnen" + +#: taiga/export_import/serializers.py:161 +msgid "{}=\"{}\" not found in this project" +msgstr "{}=\"{}\" niet gevonden in dit project" + +#: taiga/export_import/serializers.py:382 +#: taiga/projects/custom_attributes/serializers.py:103 +msgid "Invalid content. It must be {\"key\": \"value\",...}" +msgstr "Ongeldige inhoud. Volgend formaat geldt {\"key\": \"value\",...}" + +#: taiga/export_import/serializers.py:397 +#: taiga/projects/custom_attributes/serializers.py:118 +msgid "It contain invalid custom fields." +msgstr "Het bevat ongeldige eigen velden:" + +#: taiga/export_import/serializers.py:466 +#: taiga/projects/milestones/serializers.py:63 +#: taiga/projects/serializers.py:66 taiga/projects/serializers.py:92 +#: taiga/projects/serializers.py:122 taiga/projects/serializers.py:164 +msgid "Name duplicated for the project" +msgstr "Naam gedupliceerd voor het project" + +#: taiga/export_import/tasks.py:49 taiga/export_import/tasks.py:50 +msgid "Error generating project dump" +msgstr "Fout bij genereren project dump" + +#: taiga/export_import/tasks.py:82 taiga/export_import/tasks.py:83 +msgid "Error loading project dump" +msgstr "Fout bij laden project dump" + +#: taiga/export_import/templates/emails/dump_project-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump generated

\n" +"

Hello %(user)s,

\n" +"

Your dump from project %(project)s has been correctly generated.\n" +"

You can download it here:

\n" +" Download the dump file\n" +"

This file will be deleted on %(deletion_date)s.

\n" +"

The Taiga Team

\n" +" " +msgstr "" +"\n" +"

Project dump gegenereerd

\n" +"

Hallo %(user)s,

\n" +"

De dump van project %(project)s is correct gegenereerd.

\n" +"

Je kan het hier downloaden:

\n" +" Download het dump bestand\n" +"

Dit bestand zal verwijderd worden op %(deletion_date)s.

\n" +"

Het Taiga Team

\n" +" " + +#: taiga/export_import/templates/emails/dump_project-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your dump from project %(project)s has been correctly generated. You can " +"download it here:\n" +"\n" +"%(url)s\n" +"\n" +"This file will be deleted on %(deletion_date)s.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Hallo %(user)s,\n" +"\n" +"De dump van project %(project)s werd correct genereerd. Je kan het hier " +"downloaden:\n" +"\n" +"%(url)s\n" +"\n" +"Het bestand zal verwijderd worden op %(deletion_date)s.\n" +"\n" +"---\n" +"Het Taiga Team\n" + +#: taiga/export_import/templates/emails/dump_project-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been generated" +msgstr "[%(project)s] De project dump werd gegenereerd" + +#: taiga/export_import/templates/emails/export_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project %(project)s has not been exported correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/export_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"Your project %(project)s has not been exported correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/export_error-subject.jinja:1 +#, python-format +msgid "[%(project)s] %(error_subject)s" +msgstr "[%(project)s] %(error_subject)s" + +#: taiga/export_import/templates/emails/import_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project has not been importer correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/import_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Your project has not been importer correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/import_error-subject.jinja:1 +#, python-format +msgid "[Taiga] %(error_subject)s" +msgstr "[Taiga] %(error_subject)s" + +#: taiga/export_import/templates/emails/load_dump-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump imported

\n" +"

Hello %(user)s,

\n" +"

Your project dump has been correctly imported.

\n" +" Go to %(project)s\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/load_dump-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your project dump has been correctly imported.\n" +"\n" +"You can see the project %(project)s here:\n" +"\n" +"%(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/load_dump-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been imported" +msgstr "[%(project)s] Je project dump is geïmporteerd" + +#: taiga/feedback/models.py:23 taiga/users/models.py:111 +msgid "full name" +msgstr "volledige naam" + +#: taiga/feedback/models.py:25 taiga/users/models.py:106 +msgid "email address" +msgstr "e-mail adres" + +#: taiga/feedback/models.py:27 +msgid "comment" +msgstr "commentaar" + +#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:63 +#: taiga/projects/custom_attributes/models.py:38 +#: taiga/projects/issues/models.py:53 taiga/projects/milestones/models.py:45 +#: taiga/projects/models.py:129 taiga/projects/models.py:561 +#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:82 +#: taiga/projects/wiki/models.py:38 taiga/userstorage/models.py:27 +msgid "created date" +msgstr "aanmaakdatum" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Feedback

\n" +"

Taiga has received feedback from %(full_name)s <%(email)s>

\n" +" " +msgstr "" +"\n" +"

Feedback

\n" +"

Taiga heeft feedback ontvangen van %(full_name)s <%(email)s>

\n" +" " + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:9 +#, python-format +msgid "" +"\n" +"

Comment

\n" +"

%(comment)s

\n" +" " +msgstr "" +"\n" +"

Commentaar

\n" +"

%(comment)s

\n" +" " + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 +#: taiga/users/admin.py:51 +msgid "Extra info" +msgstr "Extra info" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:1 +#, python-format +msgid "" +"---------\n" +"- From: %(full_name)s <%(email)s>\n" +"---------\n" +"- Comment:\n" +"%(comment)s\n" +"---------" +msgstr "" +"---------\n" +"- Van: %(full_name)s <%(email)s>\n" +"---------\n" +"- Commentaar:\n" +"%(comment)s\n" +"---------" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:8 +msgid "- Extra info:" +msgstr "- Extra info:" + +#: taiga/feedback/templates/emails/feedback_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Feedback from %(full_name)s <%(email)s>\n" +msgstr "" +"\n" +"[Taiga] Feedback van %(full_name)s <%(email)s>\n" + +#: taiga/hooks/api.py:52 +msgid "The payload is not a valid json" +msgstr "De payload is geen geldige json" + +#: taiga/hooks/api.py:61 +msgid "The project doesn't exist" +msgstr "Het project bestaat niet" + +#: taiga/hooks/api.py:64 +msgid "Bad signature" +msgstr "Slechte signature" + +#: taiga/hooks/bitbucket/api.py:40 +msgid "The payload is not a valid application/x-www-form-urlencoded" +msgstr "De payload is geen geldige application/x-www-form-urlencoded" + +#: taiga/hooks/bitbucket/event_hooks.py:45 +msgid "The payload is not valid" +msgstr "De payload is niet geldig" + +#: taiga/hooks/bitbucket/event_hooks.py:81 +#: taiga/hooks/github/event_hooks.py:76 taiga/hooks/gitlab/event_hooks.py:74 +msgid "The referenced element doesn't exist" +msgstr "Het element waarnaar verwezen wordt bestaat niet" + +#: taiga/hooks/bitbucket/event_hooks.py:88 +#: taiga/hooks/github/event_hooks.py:83 taiga/hooks/gitlab/event_hooks.py:81 +msgid "The status doesn't exist" +msgstr "De status bestaat niet" + +#: taiga/hooks/bitbucket/event_hooks.py:94 +msgid "Status changed from BitBucket commit" +msgstr "Status veranderd door Bitbucket commit" + +#: taiga/hooks/github/event_hooks.py:97 +#, python-brace-format +msgid "" +"Status changed by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" +"({commit_url} \"See commit '{commit_id} - {commit_message}'\")." +msgstr "" + +#: taiga/hooks/github/event_hooks.py:108 +msgid "Status changed from GitHub commit." +msgstr "Status veranderd door GitHub commit." + +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 +msgid "Invalid issue information" +msgstr "Ongeldige issue informatie" + +#: taiga/hooks/github/event_hooks.py:158 +#, python-brace-format +msgid "" +"Issue created by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\"):\n" +"\n" +"{description}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:169 +msgid "Issue created from GitHub." +msgstr "Issue aangemaakt via GitHub." + +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +msgid "Invalid issue comment information" +msgstr "Ongeldige issue commentaar informatie" + +#: taiga/hooks/github/event_hooks.py:201 +#, python-brace-format +msgid "" +"Comment by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:212 +#, python-brace-format +msgid "" +"Comment From GitHub:\n" +"\n" +"{message}" +msgstr "" +"Commentaar via GitHub:\n" +"\n" +"{message}" + +#: taiga/hooks/gitlab/event_hooks.py:87 +msgid "Status changed from GitLab commit" +msgstr "Status veranderd door GitLab commit" + +#: taiga/hooks/gitlab/event_hooks.py:129 +msgid "Created from GitLab" +msgstr "Aangemaakt via GitLab" + +#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 +#: taiga/permissions/permissions.py:52 +msgid "View project" +msgstr "Bekijk project" + +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:54 +msgid "View milestones" +msgstr "Bekijk milestones" + +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +msgid "View user stories" +msgstr "Bekijk user stories" + +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 +msgid "View tasks" +msgstr "Bekijk taken" + +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 +#: taiga/permissions/permissions.py:69 +msgid "View issues" +msgstr "Bekijk issues" + +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:75 +msgid "View wiki pages" +msgstr "Bekijk wiki pagina's" + +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:80 +msgid "View wiki links" +msgstr "Bekijk wiki links" + +#: taiga/permissions/permissions.py:35 taiga/permissions/permissions.py:70 +msgid "Vote issues" +msgstr "Stem op issues" + +#: taiga/permissions/permissions.py:39 +msgid "Request membership" +msgstr "Vraag lidmaatschap aan" + +#: taiga/permissions/permissions.py:40 +msgid "Add user story to project" +msgstr "Voeg user story toe aan project" + +#: taiga/permissions/permissions.py:41 +msgid "Add comments to user stories" +msgstr "Voeg commentaar toe aan user stories" + +#: taiga/permissions/permissions.py:42 +msgid "Add comments to tasks" +msgstr "Voeg commentaar toe aan taken" + +#: taiga/permissions/permissions.py:43 +msgid "Add issues" +msgstr "Voeg issues toe" + +#: taiga/permissions/permissions.py:44 +msgid "Add comments to issues" +msgstr "Voeg commentaar toe aan issues" + +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:76 +msgid "Add wiki page" +msgstr "Voeg wiki pagina toe" + +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:77 +msgid "Modify wiki page" +msgstr "Wijzig wiki pagina" + +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:81 +msgid "Add wiki link" +msgstr "Voeg wiki link toe" + +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:82 +msgid "Modify wiki link" +msgstr "Wijzig wiki link" + +#: taiga/permissions/permissions.py:55 +msgid "Add milestone" +msgstr "Voeg milestone toe" + +#: taiga/permissions/permissions.py:56 +msgid "Modify milestone" +msgstr "Wijzig milestone" + +#: taiga/permissions/permissions.py:57 +msgid "Delete milestone" +msgstr "Verwijder milestone" + +#: taiga/permissions/permissions.py:59 +msgid "View user story" +msgstr "Bekijk user story" + +#: taiga/permissions/permissions.py:60 +msgid "Add user story" +msgstr "Voeg user story toe" + +#: taiga/permissions/permissions.py:61 +msgid "Modify user story" +msgstr "Wijzig user story" + +#: taiga/permissions/permissions.py:62 +msgid "Delete user story" +msgstr "Verwijder user story" + +#: taiga/permissions/permissions.py:65 +msgid "Add task" +msgstr "Voeg taak toe" + +#: taiga/permissions/permissions.py:66 +msgid "Modify task" +msgstr "Wijzig taak" + +#: taiga/permissions/permissions.py:67 +msgid "Delete task" +msgstr "Verwijder taak" + +#: taiga/permissions/permissions.py:71 +msgid "Add issue" +msgstr "Voeg issue toe" + +#: taiga/permissions/permissions.py:72 +msgid "Modify issue" +msgstr "Wijzig issue" + +#: taiga/permissions/permissions.py:73 +msgid "Delete issue" +msgstr "Verwijder issue" + +#: taiga/permissions/permissions.py:78 +msgid "Delete wiki page" +msgstr "Verwijder wiki pagina" + +#: taiga/permissions/permissions.py:83 +msgid "Delete wiki link" +msgstr "Verwijder wiki link" + +#: taiga/permissions/permissions.py:87 +msgid "Modify project" +msgstr "Wijzig project" + +#: taiga/permissions/permissions.py:88 +msgid "Add member" +msgstr "Voeg lid toe" + +#: taiga/permissions/permissions.py:89 +msgid "Remove member" +msgstr "Verwijder lid" + +#: taiga/permissions/permissions.py:90 +msgid "Delete project" +msgstr "Verwijder project" + +#: taiga/permissions/permissions.py:91 +msgid "Admin project values" +msgstr "Admin project waarden" + +#: taiga/permissions/permissions.py:92 +msgid "Admin roles" +msgstr "Admin rollen" + +#: taiga/projects/api.py:204 +msgid "Not valid template name" +msgstr "Ongeldige template naam" + +#: taiga/projects/api.py:207 +msgid "Not valid template description" +msgstr "Ongeldige template omschrijving" + +#: taiga/projects/api.py:469 taiga/projects/serializers.py:257 +msgid "At least one of the user must be an active admin" +msgstr "Minstens één van de gebruikers moet een active admin zijn" + +#: taiga/projects/api.py:499 +msgid "You don't have permisions to see that." +msgstr "Je hebt geen toestamming om dat te bekijken." + +#: taiga/projects/attachments/api.py:47 +msgid "Non partial updates not supported" +msgstr "Niet-partiële updates worden niet ondersteund." + +#: taiga/projects/attachments/api.py:62 +msgid "Project ID not matches between object and project" +msgstr "Project ID van object is niet gelijk aan die van het project" + +#: taiga/projects/attachments/models.py:54 taiga/projects/issues/models.py:38 +#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:134 +#: taiga/projects/notifications/models.py:57 taiga/projects/tasks/models.py:37 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:34 +#: taiga/userstorage/models.py:25 +msgid "owner" +msgstr "eigenaar" + +#: taiga/projects/attachments/models.py:56 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:41 +#: taiga/projects/models.py:338 taiga/projects/models.py:364 +#: taiga/projects/models.py:395 taiga/projects/models.py:424 +#: taiga/projects/models.py:457 taiga/projects/models.py:480 +#: taiga/projects/models.py:507 taiga/projects/models.py:538 +#: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 +#: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 +msgid "project" +msgstr "project" + +#: taiga/projects/attachments/models.py:58 +msgid "content type" +msgstr "inhoud type" + +#: taiga/projects/attachments/models.py:60 +msgid "object id" +msgstr "object id" + +#: taiga/projects/attachments/models.py:66 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:48 +#: taiga/projects/models.py:132 taiga/projects/models.py:564 +#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:85 +#: taiga/projects/wiki/models.py:41 taiga/userstorage/models.py:29 +msgid "modified date" +msgstr "gemodifieerde datum" + +#: taiga/projects/attachments/models.py:71 +msgid "attached file" +msgstr "bijgevoegd bestand" + +#: taiga/projects/attachments/models.py:74 +msgid "is deprecated" +msgstr "is verouderd" + +#: taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:32 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/issues/models.py:61 taiga/projects/models.py:127 +#: taiga/projects/models.py:559 taiga/projects/tasks/models.py:60 +#: taiga/projects/userstories/models.py:90 +msgid "description" +msgstr "omschrijving" + +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:33 +#: taiga/projects/milestones/models.py:54 taiga/projects/models.py:354 +#: taiga/projects/models.py:391 taiga/projects/models.py:418 +#: taiga/projects/models.py:453 taiga/projects/models.py:476 +#: taiga/projects/models.py:501 taiga/projects/models.py:534 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 +msgid "order" +msgstr "volgorde" + +#: taiga/projects/choices.py:21 +msgid "AppearIn" +msgstr "AppearIn" + +#: taiga/projects/choices.py:22 +msgid "Jitsi" +msgstr "Jitsi" + +#: taiga/projects/choices.py:23 +msgid "Talky" +msgstr "Talky" + +#: taiga/projects/custom_attributes/models.py:31 +#: taiga/projects/milestones/models.py:34 taiga/projects/models.py:123 +#: taiga/projects/models.py:350 taiga/projects/models.py:389 +#: taiga/projects/models.py:414 taiga/projects/models.py:451 +#: taiga/projects/models.py:474 taiga/projects/models.py:497 +#: taiga/projects/models.py:532 taiga/projects/models.py:555 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 +msgid "name" +msgstr "naam" + +#: taiga/projects/custom_attributes/models.py:81 +msgid "values" +msgstr "waarden" + +#: taiga/projects/custom_attributes/models.py:91 +#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:34 +msgid "user story" +msgstr "user story" + +#: taiga/projects/custom_attributes/models.py:106 +msgid "task" +msgstr "taak" + +#: taiga/projects/custom_attributes/models.py:121 +msgid "issue" +msgstr "issue" + +#: taiga/projects/custom_attributes/serializers.py:57 +msgid "Already exists one with the same name." +msgstr "Er bestaat er al één met dezelfde naam." + +#: taiga/projects/history/api.py:70 +msgid "Comment already deleted" +msgstr "Commentaar is al verwijderd" + +#: taiga/projects/history/api.py:89 +msgid "Comment not deleted" +msgstr "Commentaar niet verwijderd" + +#: taiga/projects/history/choices.py:27 +msgid "Change" +msgstr "Verander" + +#: taiga/projects/history/choices.py:28 +msgid "Create" +msgstr "Creëer" + +#: taiga/projects/history/choices.py:29 +msgid "Delete" +msgstr "Verwijder" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:22 +#, python-format +msgid "%(role)s role points" +msgstr "%(role)s rol punten" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:25 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:130 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:133 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:156 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:193 +msgid "from" +msgstr "van" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:31 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:141 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:144 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:162 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:179 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:199 +msgid "to" +msgstr "naar" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:43 +msgid "Added new attachment" +msgstr "Nieuwe bijlage toegevoegd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:61 +msgid "Updated attachment" +msgstr "Bijlage bijgewerkt" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:67 +msgid "deprecated" +msgstr "verouderd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:69 +msgid "not deprecated" +msgstr "niet verouderd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:85 +msgid "Deleted attachment" +msgstr "Bijlage verwijderd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:104 +msgid "added" +msgstr "toegevoegd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:109 +msgid "removed" +msgstr "verwijderd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:134 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:145 +#: taiga/projects/services/stats.py:124 taiga/projects/services/stats.py:125 +msgid "Unassigned" +msgstr "Niet toegewezen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:211 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:86 +msgid "-deleted-" +msgstr "-verwijderd-" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:20 +msgid "to:" +msgstr "naar:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:20 +msgid "from:" +msgstr "van:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:26 +msgid "Added" +msgstr "Toegevoegd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:33 +msgid "Changed" +msgstr "Veranderd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:40 +msgid "Deleted" +msgstr "Verwijderd" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:54 +msgid "added:" +msgstr "toegevoegd:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:57 +msgid "removed:" +msgstr "verwijderd:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:62 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:79 +msgid "From:" +msgstr "Van:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:63 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:80 +msgid "To:" +msgstr "Naar:" + +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/wiki/models.py:32 +msgid "content" +msgstr "inhoud" + +#: taiga/projects/history/templatetags/functions.py:27 +#: taiga/projects/mixins/blocked.py:31 +msgid "blocked note" +msgstr "geblokkeerde notitie" + +#: taiga/projects/issues/api.py:139 +msgid "You don't have permissions to set this sprint to this issue." +msgstr "Je hebt geen toestemming om deze sprint op deze issue te zetten." + +#: taiga/projects/issues/api.py:143 +msgid "You don't have permissions to set this status to this issue." +msgstr "Je hebt geen toestemming om deze status toe te kennen aan dze issue." + +#: taiga/projects/issues/api.py:147 +msgid "You don't have permissions to set this severity to this issue." +msgstr "" +"Je hebt geen toestemming om dit ernstniveau toe te kennen aan deze issue." + +#: taiga/projects/issues/api.py:151 +msgid "You don't have permissions to set this priority to this issue." +msgstr "" +"Je hebt geen toestemming om deze prioriteit toe te kennen aan deze issue." + +#: taiga/projects/issues/api.py:155 +msgid "You don't have permissions to set this type to this issue." +msgstr "Je hebt geen toestemming om dit type toe te kennen aan deze issue." + +#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 +#: taiga/projects/userstories/models.py:57 +msgid "ref" +msgstr "ref" + +#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 +#: taiga/projects/userstories/models.py:67 +msgid "status" +msgstr "status" + +#: taiga/projects/issues/models.py:42 +msgid "severity" +msgstr "erstniveau" + +#: taiga/projects/issues/models.py:44 +msgid "priority" +msgstr "prioriteit" + +#: taiga/projects/issues/models.py:46 +msgid "type" +msgstr "type" + +#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 +#: taiga/projects/userstories/models.py:60 +msgid "milestone" +msgstr "milestone" + +#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +msgid "finished date" +msgstr "datum van afwerking" + +#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 +#: taiga/projects/userstories/models.py:89 +msgid "subject" +msgstr "onderwerp" + +#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 +#: taiga/projects/userstories/models.py:93 +msgid "assigned to" +msgstr "toegewezen aan" + +#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 +#: taiga/projects/userstories/models.py:103 +msgid "external reference" +msgstr "externe referentie" + +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 +#: taiga/projects/models.py:352 taiga/projects/models.py:416 +#: taiga/projects/models.py:499 taiga/projects/models.py:557 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 +msgid "slug" +msgstr "slug" + +#: taiga/projects/milestones/models.py:42 +msgid "estimated start date" +msgstr "geschatte start datum" + +#: taiga/projects/milestones/models.py:43 +msgid "estimated finish date" +msgstr "geschatte datum van afwerking" + +#: taiga/projects/milestones/models.py:50 taiga/projects/models.py:356 +#: taiga/projects/models.py:420 taiga/projects/models.py:503 +msgid "is closed" +msgstr "is gesloten" + +#: taiga/projects/milestones/models.py:52 +msgid "disponibility" +msgstr "beschikbaarheid" + +#: taiga/projects/milestones/models.py:75 +msgid "The estimated start must be previous to the estimated finish." +msgstr "The geschatte start moet vroeger zijn dan het geschatte einde." + +#: taiga/projects/milestones/validators.py:12 +msgid "There's no sprint with that id" +msgstr "Er is geen sprint met dat id" + +#: taiga/projects/mixins/blocked.py:29 +msgid "is blocked" +msgstr "is geblokkeerd" + +#: taiga/projects/mixins/ordering.py:47 +#, python-brace-format +msgid "'{param}' parameter is mandatory" +msgstr "'{param}' parameter is verplicht" + +#: taiga/projects/mixins/ordering.py:51 +msgid "'project' parameter is mandatory" +msgstr "'project' parameter is verplicht" + +#: taiga/projects/models.py:59 +msgid "email" +msgstr "e-mail" + +#: taiga/projects/models.py:61 +msgid "create at" +msgstr "aangemaakt op" + +#: taiga/projects/models.py:63 taiga/users/models.py:128 +msgid "token" +msgstr "token" + +#: taiga/projects/models.py:69 +msgid "invitation extra text" +msgstr "uitnodiging extra text" + +#: taiga/projects/models.py:72 +msgid "user order" +msgstr "gebruiker volgorde" + +#: taiga/projects/models.py:78 +msgid "The user is already member of the project" +msgstr "The gebruikers is al lid van het project" + +#: taiga/projects/models.py:93 +msgid "default points" +msgstr "standaard punten" + +#: taiga/projects/models.py:97 +msgid "default US status" +msgstr "standaard US status" + +#: taiga/projects/models.py:101 +msgid "default task status" +msgstr "default taak status" + +#: taiga/projects/models.py:104 +msgid "default priority" +msgstr "standaard prioriteit" + +#: taiga/projects/models.py:107 +msgid "default severity" +msgstr "standaard ernstniveau" + +#: taiga/projects/models.py:111 +msgid "default issue status" +msgstr "standaard issue status" + +#: taiga/projects/models.py:115 +msgid "default issue type" +msgstr "standaard issue type" + +#: taiga/projects/models.py:136 +msgid "members" +msgstr "leden" + +#: taiga/projects/models.py:139 +msgid "total of milestones" +msgstr "totaal van de milestones" + +#: taiga/projects/models.py:140 +msgid "total story points" +msgstr "totaal story points" + +#: taiga/projects/models.py:143 taiga/projects/models.py:570 +msgid "active backlog panel" +msgstr "actief backlog paneel" + +#: taiga/projects/models.py:145 taiga/projects/models.py:572 +msgid "active kanban panel" +msgstr "actief kanban paneel" + +#: taiga/projects/models.py:147 taiga/projects/models.py:574 +msgid "active wiki panel" +msgstr "actief wiki paneel" + +#: taiga/projects/models.py:149 taiga/projects/models.py:576 +msgid "active issues panel" +msgstr "actief issues paneel" + +#: taiga/projects/models.py:152 taiga/projects/models.py:579 +msgid "videoconference system" +msgstr "videoconference systeem" + +#: taiga/projects/models.py:154 taiga/projects/models.py:581 +msgid "videoconference room salt" +msgstr "videoconference kamer salt" + +#: taiga/projects/models.py:159 +msgid "creation template" +msgstr "aanmaak template" + +#: taiga/projects/models.py:162 +msgid "anonymous permissions" +msgstr "anonieme toestemmingen" + +#: taiga/projects/models.py:166 +msgid "user permissions" +msgstr "gebruikers toestemmingen" + +#: taiga/projects/models.py:169 +msgid "is private" +msgstr "is privé" + +#: taiga/projects/models.py:180 +msgid "tags colors" +msgstr "tag kleuren" + +#: taiga/projects/models.py:339 +msgid "modules config" +msgstr "module config" + +#: taiga/projects/models.py:358 +msgid "is archived" +msgstr "is gearchiveerd" + +#: taiga/projects/models.py:360 taiga/projects/models.py:422 +#: taiga/projects/models.py:455 taiga/projects/models.py:478 +#: taiga/projects/models.py:505 taiga/projects/models.py:536 +#: taiga/users/models.py:113 +msgid "color" +msgstr "kleur" + +#: taiga/projects/models.py:362 +msgid "work in progress limit" +msgstr "work in progress limiet" + +#: taiga/projects/models.py:393 taiga/userstorage/models.py:31 +msgid "value" +msgstr "waarde" + +#: taiga/projects/models.py:567 +msgid "default owner's role" +msgstr "standaard rol eigenaar" + +#: taiga/projects/models.py:583 +msgid "default options" +msgstr "standaard instellingen" + +#: taiga/projects/models.py:584 +msgid "us statuses" +msgstr "us statussen" + +#: taiga/projects/models.py:585 taiga/projects/userstories/models.py:40 +#: taiga/projects/userstories/models.py:72 +msgid "points" +msgstr "punten" + +#: taiga/projects/models.py:586 +msgid "task statuses" +msgstr "taak statussen" + +#: taiga/projects/models.py:587 +msgid "issue statuses" +msgstr "issue statussen" + +#: taiga/projects/models.py:588 +msgid "issue types" +msgstr "issue types" + +#: taiga/projects/models.py:589 +msgid "priorities" +msgstr "prioriteiten" + +#: taiga/projects/models.py:590 +msgid "severities" +msgstr "ernstniveaus" + +#: taiga/projects/models.py:591 +msgid "roles" +msgstr "rollen" + +#: taiga/projects/notifications/choices.py:28 +msgid "Not watching" +msgstr "Niet volgend" + +#: taiga/projects/notifications/choices.py:29 +msgid "Watching" +msgstr "Volgend" + +#: taiga/projects/notifications/choices.py:30 +msgid "Ignoring" +msgstr "Negerend" + +#: taiga/projects/notifications/mixins.py:87 +msgid "watchers" +msgstr "volgers" + +#: taiga/projects/notifications/models.py:59 +msgid "created date time" +msgstr "aanmaak datum en tijd" + +#: taiga/projects/notifications/models.py:61 +msgid "updated date time" +msgstr "gewijzigde datum en tijd" + +#: taiga/projects/notifications/models.py:63 +msgid "history entries" +msgstr "geschiedenis items" + +#: taiga/projects/notifications/models.py:66 +msgid "notify users" +msgstr "verwittig gebruikers" + +#: taiga/projects/notifications/services.py:63 +#: taiga/projects/notifications/services.py:77 +msgid "Notify exists for specified user and project" +msgstr "Verwittiging bestaat voor gespecifieerde gebruiker en project" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue updated

\n" +"

Hello %(user)s,
%(changer)s has updated an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Issue updated\n" +"Hello %(user)s, %(changer)s has updated an issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Issue bijgewerkt#%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New issue created

\n" +"

Hello %(user)s,
%(changer)s has created a new issue on " +"%(project)s

\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New issue created\n" +"Hello %(user)s, %(changer)s has created a new issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Issue aangemaakt #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Issue deleted\n" +"Hello %(user)s, %(changer)s has deleted an issue on %(project)s\n" +"Issue #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Issue verwijderd #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint updated

\n" +"

Hello %(user)s,
%(changer)s has updated an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See sprint\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Sprint updated\n" +"Hello %(user)s, %(changer)s has updated a sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the sprint \"%(milestone)s\"\n" +msgstr "" +"\n" +"[%(project)s] Sprint bijgewerkt\"%(milestone)s\"\n" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New sprint created

\n" +"

Hello %(user)s,
%(changer)s has created a new sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See " +"sprint\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New sprint created\n" +"Hello %(user)s, %(changer)s has created a new sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the sprint \"%(milestone)s\"\n" +msgstr "" +"\n" +"[%(project)s] Sprint aangemaakt \"%(milestone)s\"\n" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Sprint deleted\n" +"Hello %(user)s, %(changer)s has deleted an sprint on %(project)s\n" +"Sprint %(name)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Sprint \"%(milestone)s\"\n" +msgstr "" +"\n" +"[%(project)s] Sprint verwijderd \"%(milestone)s\"\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task updated

\n" +"

Hello %(user)s,
%(changer)s has updated a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Task updated\n" +"Hello %(user)s, %(changer)s has updated a task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the task #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Taak bijgewerkt#%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New task created

\n" +"

Hello %(user)s,
%(changer)s has created a new task on " +"%(project)s

\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New task created\n" +"Hello %(user)s, %(changer)s has created a new task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the task #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Taak aangemaakt #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Task deleted\n" +"Hello %(user)s, %(changer)s has deleted a task on %(project)s\n" +"Task #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the task #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Taak verwijderd #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story updated

\n" +"

Hello %(user)s,
%(changer)s has updated a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"User story updated\n" +"Hello %(user)s, %(changer)s has updated a user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the US #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] US bijgewerkt#%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New user story created

\n" +"

Hello %(user)s,
%(changer)s has created a new user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New user story created\n" +"Hello %(user)s, %(changer)s has created a new user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the US #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] US aangemaakt #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"User Story deleted\n" +"Hello %(user)s, %(changer)s has deleted a user story on %(project)s\n" +"User Story #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the US #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] US verwijderd #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki Page updated

\n" +"

Hello %(user)s,
%(changer)s has updated a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See Wiki Page\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Wiki Page updated\n" +"\n" +"Hello %(user)s, %(changer)s has updated a wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the Wiki Page \"%(page)s\"\n" +msgstr "" +"\n" +"[%(project)s] Wiki Pagina bijgewerkt \"%(page)s\"\n" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New wiki page created

\n" +"

Hello %(user)s,
%(changer)s has created a new wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See " +"wiki page\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New wiki page created\n" +"\n" +"Hello %(user)s, %(changer)s has created a new wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the Wiki Page \"%(page)s\"\n" +msgstr "" +"\n" +"[%(project)s] Wiki Pagina aangemaakt \"%(page)s\"\n" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki page deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Wiki page deleted\n" +"\n" +"Hello %(user)s, %(changer)s has deleted a wiki page on %(project)s\n" +"\n" +"Wiki page %(page)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Wiki Page \"%(page)s\"\n" +msgstr "" +"\n" +"[%(project)s] Wiki Pagina verwijderd \"%(page)s\"\n" + +#: taiga/projects/notifications/validators.py:44 +msgid "Watchers contains invalid users" +msgstr "Volgers bevat ongeldige gebruikers" + +#: taiga/projects/occ/mixins.py:35 +msgid "The version must be an integer" +msgstr "De versie moet een integer zijn" + +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" +msgstr "" + +#: taiga/projects/occ/mixins.py:74 +msgid "The version doesn't match with the current one" +msgstr "De versie stemt niet overeen met de huidige waarde" + +#: taiga/projects/occ/mixins.py:93 +msgid "version" +msgstr "versie" + +#: taiga/projects/permissions.py:39 +msgid "You can't leave the project if there are no more owners" +msgstr "Je kan het project niet verlaten als er geen andere eigenaars zijn" + +#: taiga/projects/serializers.py:233 +msgid "Email address is already taken" +msgstr "E-mail adres is al in gebruik" + +#: taiga/projects/serializers.py:245 +msgid "Invalid role for the project" +msgstr "Ongeldige rol voor project" + +#: taiga/projects/serializers.py:340 +msgid "Total milestones must be major or equal to zero" +msgstr "Totaal milestones moet groter of gelijk zijn aan 0" + +#: taiga/projects/serializers.py:402 +msgid "Default options" +msgstr "Standaard opties" + +#: taiga/projects/serializers.py:403 +msgid "User story's statuses" +msgstr "Status van User story" + +#: taiga/projects/serializers.py:404 +msgid "Points" +msgstr "Punten" + +#: taiga/projects/serializers.py:405 +msgid "Task's statuses" +msgstr "Statussen van taken" + +#: taiga/projects/serializers.py:406 +msgid "Issue's statuses" +msgstr "Statussen van Issues" + +#: taiga/projects/serializers.py:407 +msgid "Issue's types" +msgstr "Types van issue" + +#: taiga/projects/serializers.py:408 +msgid "Priorities" +msgstr "Prioriteiten" + +#: taiga/projects/serializers.py:409 +msgid "Severities" +msgstr "Ernstniveaus" + +#: taiga/projects/serializers.py:410 +msgid "Roles" +msgstr "Rollen" + +#: taiga/projects/services/stats.py:72 +msgid "Future sprint" +msgstr "Toekomstige sprint" + +#: taiga/projects/services/stats.py:89 +msgid "Project End" +msgstr "Project einde" + +#: taiga/projects/tasks/api.py:58 taiga/projects/tasks/api.py:61 +#: taiga/projects/tasks/api.py:64 taiga/projects/tasks/api.py:67 +msgid "You don't have permissions for add/modify this task." +msgstr "Je hebt geen toestemming om deze taak toe te voegen/te wijzigen" + +#: taiga/projects/tasks/models.py:56 +msgid "us order" +msgstr "us volgorde" + +#: taiga/projects/tasks/models.py:58 +msgid "taskboard order" +msgstr "takenbord volgorde" + +#: taiga/projects/tasks/models.py:66 +msgid "is iocaine" +msgstr "is iocaine" + +#: taiga/projects/tasks/validators.py:12 +msgid "There's no task with that id" +msgstr "Er is geen taak met dat id" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:6 +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:4 +msgid "someone" +msgstr "iemand" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:11 +#, python-format +msgid "" +"\n" +"

You have been invited to Taiga!

\n" +"

Hi! %(full_name)s has sent you an invitation to join project " +"%(project)s in Taiga.
Taiga is a Free, open Source Agile Project " +"Management Tool.

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:17 +#, python-format +msgid "" +"\n" +"

And now a few words from the jolly good fellow or sistren
" +"who thought so kindly as to invite you

\n" +"

%(extra)s

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation to Taiga" +msgstr "Accepteer je uitnodiging tot Taiga" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation" +msgstr "Accepteer je uitnodiging" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:25 +msgid "The Taiga Team" +msgstr "Het Taiga Team" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:6 +#, python-format +msgid "" +"\n" +"You, or someone you know, has invited you to Taiga\n" +"\n" +"Hi! %(full_name)s has sent you an invitation to join a project called " +"%(project)s which is being managed on Taiga, a Free, open Source Agile " +"Project Management Tool.\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:12 +#, python-format +msgid "" +"\n" +"And now a few words from the jolly good fellow or sistren who thought so " +"kindly as to invite you:\n" +"\n" +"%(extra)s\n" +" " +msgstr "" +"\n" +"En nu enkele woorden van de blije broeder of zuster die zo vriendelijk was " +"om je uit te nodigen:\n" +"\n" +"%(extra)s\n" +" " + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:18 +msgid "Accept your invitation to Taiga following this link:" +msgstr "Accepteer je uitnodiging tot Taiga via onderstaande link:" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:20 +msgid "" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"---\n" +"Het Taiga Team\n" + +#: taiga/projects/templates/emails/membership_invitation-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Invitation to join to the project '%(project)s'\n" +msgstr "" +"\n" +"[Taiga] Uitnodiging om toe te treden tot project '%(project)s'\n" + +#: taiga/projects/templates/emails/membership_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

You have been added to a project

\n" +"

Hello %(full_name)s,
you have been added to the project " +"%(project)s

\n" +" Go to " +"project\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"You have been added to a project\n" +"Hello %(full_name)s,you have been added to the project %(project)s\n" +"\n" +"See project at %(url)s\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Added to the project '%(project)s'\n" +msgstr "" +"\n" +"[Taiga] Toegevoegd aan het project '%(project)s'\n" + +#. Translators: Name of scrum project template. +#: taiga/projects/translations.py:28 +msgid "Scrum" +msgstr "Scrum" + +#. Translators: Description of scrum project template. +#: taiga/projects/translations.py:30 +msgid "" +"The agile product backlog in Scrum is a prioritized features list, " +"containing short descriptions of all functionality desired in the product. " +"When applying Scrum, it's not necessary to start a project with a lengthy, " +"upfront effort to document all requirements. The Scrum product backlog is " +"then allowed to grow and change as more is learned about the product and its " +"customers" +msgstr "" +"De agile product backlog in Scrum is een geprioritiseerde lijst van " +"features, het bevat korte omschrijvingen van alle functionaliteit die men " +"verwacht van het product. Bij het toepassen van Scrum is het niet nodig om " +"een project te starten waar op voorhand grote moeite gedaan werd om alle " +"requirements te documenteren. De Scrum product backlog kan op die manier " +"groeien en veranderen naarmate men meer leert over het product en de " +"gebruikers" + +#. Translators: Name of kanban project template. +#: taiga/projects/translations.py:33 +msgid "Kanban" +msgstr "Kanban" + +#. Translators: Description of kanban project template. +#: taiga/projects/translations.py:35 +msgid "" +"Kanban is a method for managing knowledge work with an emphasis on just-in-" +"time delivery while not overloading the team members. In this approach, the " +"process, from definition of a task to its delivery to the customer, is " +"displayed for participants to see and team members pull work from a queue." +msgstr "" +"Kanban is een methode om kenniswerk te beheren met een nadruk om just-in-" +"time aflevering terwijl we toch de teamleden niet willen overladen. Via deze " +"benadering wordt het werk door teamleden van een queue afgehaald, van " +"definitie tot taak tot het afleveren naar de klant." + +#. Translators: User story point value (value = undefined) +#: taiga/projects/translations.py:43 +msgid "?" +msgstr "?" + +#. Translators: User story point value (value = 0) +#: taiga/projects/translations.py:45 +msgid "0" +msgstr "0" + +#. Translators: User story point value (value = 0.5) +#: taiga/projects/translations.py:47 +msgid "1/2" +msgstr "1/2" + +#. Translators: User story point value (value = 1) +#: taiga/projects/translations.py:49 +msgid "1" +msgstr "1" + +#. Translators: User story point value (value = 2) +#: taiga/projects/translations.py:51 +msgid "2" +msgstr "2" + +#. Translators: User story point value (value = 3) +#: taiga/projects/translations.py:53 +msgid "3" +msgstr "3" + +#. Translators: User story point value (value = 5) +#: taiga/projects/translations.py:55 +msgid "5" +msgstr "5" + +#. Translators: User story point value (value = 8) +#: taiga/projects/translations.py:57 +msgid "8" +msgstr "8" + +#. Translators: User story point value (value = 10) +#: taiga/projects/translations.py:59 +msgid "10" +msgstr "10" + +#. Translators: User story point value (value = 13) +#: taiga/projects/translations.py:61 +msgid "13" +msgstr "13" + +#. Translators: User story point value (value = 20) +#: taiga/projects/translations.py:63 +msgid "20" +msgstr "20" + +#. Translators: User story point value (value = 40) +#: taiga/projects/translations.py:65 +msgid "40" +msgstr "40" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 +#: taiga/projects/translations.py:112 +msgid "New" +msgstr "Nieuw" + +#. Translators: User story status +#: taiga/projects/translations.py:76 +msgid "Ready" +msgstr "Klaar" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 +#: taiga/projects/translations.py:114 +msgid "In progress" +msgstr "Lopende" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 +#: taiga/projects/translations.py:116 +msgid "Ready for test" +msgstr "Klaar om te testen" + +#. Translators: User story status +#: taiga/projects/translations.py:85 +msgid "Done" +msgstr "Afgewerkt" + +#. Translators: User story status +#: taiga/projects/translations.py:88 +msgid "Archived" +msgstr "Gearchiveerd" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +msgid "Closed" +msgstr "Gesloten" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +msgid "Needs Info" +msgstr "Info nodig" + +#. Translators: Issue status +#: taiga/projects/translations.py:122 +msgid "Postponed" +msgstr "Verzet naar later" + +#. Translators: Issue status +#: taiga/projects/translations.py:124 +msgid "Rejected" +msgstr "Geweigerd" + +#. Translators: Issue type +#: taiga/projects/translations.py:132 +msgid "Bug" +msgstr "Bug" + +#. Translators: Issue type +#: taiga/projects/translations.py:134 +msgid "Question" +msgstr "Vraag" + +#. Translators: Issue type +#: taiga/projects/translations.py:136 +msgid "Enhancement" +msgstr "Verbetering" + +#. Translators: Issue priority +#: taiga/projects/translations.py:144 +msgid "Low" +msgstr "Laag" + +#. Translators: Issue priority +#. Translators: Issue severity +#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +msgid "Normal" +msgstr "Normaal" + +#. Translators: Issue priority +#: taiga/projects/translations.py:148 +msgid "High" +msgstr "Hoog" + +#. Translators: Issue severity +#: taiga/projects/translations.py:155 +msgid "Wishlist" +msgstr "Wensenlijst" + +#. Translators: Issue severity +#: taiga/projects/translations.py:157 +msgid "Minor" +msgstr "Mineur" + +#. Translators: Issue severity +#: taiga/projects/translations.py:161 +msgid "Important" +msgstr "Belangrijk" + +#. Translators: Issue severity +#: taiga/projects/translations.py:163 +msgid "Critical" +msgstr "Kritiek" + +#. Translators: User role +#: taiga/projects/translations.py:170 +msgid "UX" +msgstr "UX" + +#. Translators: User role +#: taiga/projects/translations.py:172 +msgid "Design" +msgstr "Design" + +#. Translators: User role +#: taiga/projects/translations.py:174 +msgid "Front" +msgstr "Front" + +#. Translators: User role +#: taiga/projects/translations.py:176 +msgid "Back" +msgstr "Back" + +#. Translators: User role +#: taiga/projects/translations.py:178 +msgid "Product Owner" +msgstr "Product Owner" + +#. Translators: User role +#: taiga/projects/translations.py:180 +msgid "Stakeholder" +msgstr "Stakeholder" + +#: taiga/projects/userstories/api.py:174 +#, python-brace-format +msgid "" +"Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " +"{subject}\")" +msgstr "" +"User story wordt gegenereerd [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " +"{subject}\")" + +#: taiga/projects/userstories/models.py:37 +msgid "role" +msgstr "rol" + +#: taiga/projects/userstories/models.py:75 +msgid "backlog order" +msgstr "backlog volgorde" + +#: taiga/projects/userstories/models.py:77 +#: taiga/projects/userstories/models.py:79 +msgid "sprint order" +msgstr "sprint volgorde" + +#: taiga/projects/userstories/models.py:87 +msgid "finish date" +msgstr "afwerkdatum" + +#: taiga/projects/userstories/models.py:95 +msgid "is client requirement" +msgstr "is requirement van de klant" + +#: taiga/projects/userstories/models.py:97 +msgid "is team requirement" +msgstr "is requirement van het team" + +#: taiga/projects/userstories/models.py:102 +msgid "generated from issue" +msgstr "gegenereerd van issue" + +#: taiga/projects/userstories/validators.py:28 +msgid "There's no user story with that id" +msgstr "Er is geen user story met dat id" + +#: taiga/projects/validators.py:28 +msgid "There's no project with that id" +msgstr "Er is geen project met dat is" + +#: taiga/projects/validators.py:37 +msgid "There's no user story status with that id" +msgstr "Er is geen user story status met dat id" + +#: taiga/projects/validators.py:46 +msgid "There's no task status with that id" +msgstr "Er is geen taak status met dat id" + +#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 +#: taiga/projects/votes/models.py:54 +msgid "Votes" +msgstr "Stemmen" + +#: taiga/projects/votes/models.py:50 +msgid "votes" +msgstr "stemmen" + +#: taiga/projects/votes/models.py:53 +msgid "Vote" +msgstr "Stem" + +#: taiga/projects/wiki/api.py:60 +msgid "'content' parameter is mandatory" +msgstr "'inhoud' parameter is verplicht" + +#: taiga/projects/wiki/api.py:63 +msgid "'project_id' parameter is mandatory" +msgstr "'project_id' parameter is verplicht" + +#: taiga/projects/wiki/models.py:36 +msgid "last modifier" +msgstr "gebruiker met laatste wijziging" + +#: taiga/projects/wiki/models.py:69 +msgid "href" +msgstr "href" + +#: taiga/users/admin.py:50 +msgid "Personal info" +msgstr "Persoonlijke info" + +#: taiga/users/admin.py:52 +msgid "Permissions" +msgstr "Toestemmingen" + +#: taiga/users/admin.py:53 +msgid "Important dates" +msgstr "Belangrijke data" + +#: taiga/users/api.py:124 taiga/users/api.py:131 +msgid "Invalid username or email" +msgstr "Ongeldige gebruikersnaam of e-mail" + +#: taiga/users/api.py:140 +msgid "Mail sended successful!" +msgstr "Mail met succes verzonden!" + +#: taiga/users/api.py:152 taiga/users/api.py:157 +msgid "Token is invalid" +msgstr "Token is ongeldig" + +#: taiga/users/api.py:178 +msgid "Current password parameter needed" +msgstr "Huidig wachtwoord parameter vereist" + +#: taiga/users/api.py:181 +msgid "New password parameter needed" +msgstr "Nieuw wachtwoord parameter vereist" + +#: taiga/users/api.py:184 +msgid "Invalid password length at least 6 charaters needed" +msgstr "Ongeldige lengte van wachtwoord, minstens 6 tekens vereist" + +#: taiga/users/api.py:187 +msgid "Invalid current password" +msgstr "Ongeldig huidig wachtwoord" + +#: taiga/users/api.py:203 +msgid "Incomplete arguments" +msgstr "Onvolledige argumenten" + +#: taiga/users/api.py:208 +msgid "Invalid image format" +msgstr "Ongeldig afbeelding formaat" + +#: taiga/users/api.py:261 +msgid "Duplicated email" +msgstr "Gedupliceerde e-mail" + +#: taiga/users/api.py:263 +msgid "Not valid email" +msgstr "Ongeldige e-mail" + +#: taiga/users/api.py:283 taiga/users/api.py:289 +msgid "" +"Invalid, are you sure the token is correct and you didn't use it before?" +msgstr "Ongeldig, weet je zeker dat het token correct en ongebruikt is?" + +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 +msgid "Invalid, are you sure the token is correct?" +msgstr "Ongeldig, weet je zeker dat het token correct is?" + +#: taiga/users/models.py:69 +msgid "superuser status" +msgstr "superuser status" + +#: taiga/users/models.py:70 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Beduidt dat deze gebruik alle toestemmingen heeft zonder deze expliciet toe " +"te wijzen." + +#: taiga/users/models.py:100 +msgid "username" +msgstr "gebruikersnaam" + +#: taiga/users/models.py:101 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" +msgstr "Vereist. 30 of minder karakters. Letters, nummers en /./-/_ karakters" + +#: taiga/users/models.py:104 +msgid "Enter a valid username." +msgstr "Geef een geldige gebruikersnaam in" + +#: taiga/users/models.py:107 +msgid "active" +msgstr "actief" + +#: taiga/users/models.py:108 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Beduidt of deze gebruiker als actief moet behandeld worden. Deselecteer dit " +"i.p.v. accounts te verwijderen." + +#: taiga/users/models.py:114 +msgid "biography" +msgstr "biografie" + +#: taiga/users/models.py:117 +msgid "photo" +msgstr "foto" + +#: taiga/users/models.py:118 +msgid "date joined" +msgstr "toetrededatum" + +#: taiga/users/models.py:120 +msgid "default language" +msgstr "standaard taal" + +#: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 +msgid "default timezone" +msgstr "standaard tijdzone" + +#: taiga/users/models.py:126 +msgid "colorize tags" +msgstr "kleur tags" + +#: taiga/users/models.py:131 +msgid "email token" +msgstr "e-mail token" + +#: taiga/users/models.py:133 +msgid "new email address" +msgstr "nieuw e-mail adres" + +#: taiga/users/models.py:188 +msgid "permissions" +msgstr "toestemmingen" + +#: taiga/users/serializers.py:59 +msgid "invalid" +msgstr "ongeldig" + +#: taiga/users/serializers.py:70 +msgid "Invalid username. Try with a different one." +msgstr "Ongeldige gebruikersnaam. Probeer met een andere." + +#: taiga/users/services.py:48 taiga/users/services.py:52 +msgid "Username or password does not matches user." +msgstr "Gebruikersnaam of wachtwoord stemt niet overeen met gebruiker." + +#: taiga/users/templates/emails/change_email-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Change your email

\n" +"

Hello %(full_name)s,
please confirm your email

\n" +" Confirm " +"email\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/change_email-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, please confirm your email\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/change_email-subject.jinja:1 +msgid "[Taiga] Change email" +msgstr "[Taiga] Verander e-mail" + +#: taiga/users/templates/emails/password_recovery-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Recover your password

\n" +"

Hello %(full_name)s,
you asked to recover your password

\n" +" Recover your password\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/password_recovery-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, you asked to recover your password\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/password_recovery-subject.jinja:1 +msgid "[Taiga] Password recovery" +msgstr "[Taiga] Wachtwoord recuperatie" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:6 +msgid "" +"\n" +"
\n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:23 +#, python-format +msgid "" +"\n" +" You may remove your account from this service clicking " +"here\n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:1 +msgid "" +"\n" +"Thank you for registering in Taiga\n" +"\n" +"We hope you enjoy it\n" +"\n" +"We built Taiga because we wanted the project management tool that sits open " +"on our computers all day long, to serve as a continued reminder of why we " +"love to collaborate, code and design.\n" +"\n" +"We built it to be beautiful, elegant, simple to use and fun - without " +"forsaking flexibility and power.\n" +"\n" +"--\n" +"The taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:13 +#, python-format +msgid "" +"\n" +"You may remove your account from this service: %(url)s\n" +msgstr "" +"\n" +"Je mag je acccount verwijderen van deze service: %(url)s\n" + +#: taiga/users/templates/emails/registered_user-subject.jinja:1 +msgid "You've been Taigatized!" +msgstr "Je bent getaiganiseerd!" + +#: taiga/users/validators.py:29 +msgid "There's no role with that id" +msgstr "Er is geen rol met dat id" + +#: taiga/userstorage/api.py:50 +msgid "" +"Duplicate key value violates unique constraint. Key '{}' already exists." +msgstr "" +"Gedupliceerde key value overtreed unieke constraint. Key '{}' bestaat al." + +#: taiga/userstorage/models.py:30 +msgid "key" +msgstr "key" + +#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +msgid "URL" +msgstr "URL" + +#: taiga/webhooks/models.py:29 +msgid "secret key" +msgstr "geheime sleutel" + +#: taiga/webhooks/models.py:39 +msgid "status code" +msgstr "status code" + +#: taiga/webhooks/models.py:40 +msgid "request data" +msgstr "request data" + +#: taiga/webhooks/models.py:41 +msgid "request headers" +msgstr "request headers" + +#: taiga/webhooks/models.py:42 +msgid "response data" +msgstr "response data" + +#: taiga/webhooks/models.py:43 +msgid "response headers" +msgstr "response headers" + +#: taiga/webhooks/models.py:44 +msgid "duration" +msgstr "duur" diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index 39db28aa..0969028b 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-09 09:47+0200\n" +"POT-Creation-Date: 2015-06-15 12:34+0200\n" "PO-Revision-Date: 2015-06-09 07:47+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Chinese Traditional (http://www.transifex.com/projects/p/" @@ -2946,7 +2946,7 @@ msgstr "產品所有人" msgid "Stakeholder" msgstr "利害關係人" -#: taiga/projects/userstories/api.py:173 +#: taiga/projects/userstories/api.py:174 #, python-brace-format msgid "" "Generating the user story [US #{ref} - {subject}](:us:{ref} \"US #{ref} - " diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index cedb54f2..553bee2c 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -98,6 +98,7 @@ class BasicUserStoryStatusSerializer(serializers.ModelSerializer): class Meta: model = models.UserStoryStatus + i18n_fields = ("name",) fields = ("name", "color") @@ -128,6 +129,7 @@ class BasicTaskStatusSerializerSerializer(serializers.ModelSerializer): class Meta: model = models.TaskStatus + i18n_fields = ("name",) fields = ("name", "color") @@ -170,6 +172,7 @@ class BasicIssueStatusSerializer(serializers.ModelSerializer): class Meta: model = models.IssueStatus + i18n_fields = ("name",) fields = ("name", "color") @@ -273,6 +276,7 @@ class ProjectMembershipSerializer(serializers.ModelSerializer): full_name = serializers.CharField(source='user.get_full_name', required=False) username = serializers.CharField(source='user.username', required=False) color = serializers.CharField(source='user.color', required=False) + is_active = serializers.BooleanField(source='user.is_active', required=False) photo = serializers.SerializerMethodField("get_photo") class Meta: diff --git a/taiga/projects/userstories/serializers.py b/taiga/projects/userstories/serializers.py index 1ad8dc87..3978381e 100644 --- a/taiga/projects/userstories/serializers.py +++ b/taiga/projects/userstories/serializers.py @@ -26,7 +26,7 @@ from taiga.projects.validators import ProjectExistsValidator from taiga.projects.validators import UserStoryStatusExistsValidator from taiga.projects.userstories.validators import UserStoryExistsValidator from taiga.projects.notifications.validators import WatchersValidator -from taiga.projects.serializers import UserStoryStatusSerializer +from taiga.projects.serializers import BasicUserStoryStatusSerializer from taiga.users.serializers import BasicInfoSerializer as UserBasicInfoSerializer from . import models @@ -53,7 +53,7 @@ class UserStorySerializer(WatchersValidator, serializers.ModelSerializer): origin_issue = serializers.SerializerMethodField("get_origin_issue") blocked_note_html = serializers.SerializerMethodField("get_blocked_note_html") description_html = serializers.SerializerMethodField("get_description_html") - status_extra_info = UserStoryStatusSerializer(source="status", required=False, read_only=True) + status_extra_info = BasicUserStoryStatusSerializer(source="status", required=False, read_only=True) assigned_to_extra_info = UserBasicInfoSerializer(source="assigned_to", required=False, read_only=True) class Meta: diff --git a/taiga/timeline/apps.py b/taiga/timeline/apps.py index f7790905..cbdea045 100644 --- a/taiga/timeline/apps.py +++ b/taiga/timeline/apps.py @@ -32,3 +32,5 @@ class TimelineAppConfig(AppConfig): sender=apps.get_model("projects", "Membership")) signals.post_delete.connect(handlers.delete_membership_push_to_timeline, sender=apps.get_model("projects", "Membership")) + signals.post_save.connect(handlers.create_user_push_to_timeline, + sender=apps.get_model("users", "User")) diff --git a/taiga/timeline/management/commands/clear_unnecessary_new_membership_entries.py b/taiga/timeline/management/commands/clear_unnecessary_new_membership_entries.py new file mode 100644 index 00000000..f9b65dcf --- /dev/null +++ b/taiga/timeline/management/commands/clear_unnecessary_new_membership_entries.py @@ -0,0 +1,36 @@ +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino +# Copyright (C) 2014 David Barragán +# This program 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. +# +# This program 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 django.conf import settings +from django.core.management.base import BaseCommand + +from taiga.timeline.models import Timeline +from taiga.projects.models import Project + +class Command(BaseCommand): + help = 'Regenerate unnecessary new memberships entry lines' + def handle(self, *args, **options): + debug_enabled = settings.DEBUG + if debug_enabled: + print("Please, execute this script only with DEBUG mode disabled (DEBUG=False)") + return + + removing_timeline_ids = [] + for t in Timeline.objects.filter(event_type="projects.membership.create").order_by("created"): + print(t.created) + if t.project.owner.id == t.data["user"].get("id", None): + removing_timeline_ids.append(t.id) + + Timeline.objects.filter(id__in=removing_timeline_ids).delete() diff --git a/taiga/timeline/management/commands/rebuild_timeline.py b/taiga/timeline/management/commands/rebuild_timeline.py index c5864610..283c7080 100644 --- a/taiga/timeline/management/commands/rebuild_timeline.py +++ b/taiga/timeline/management/commands/rebuild_timeline.py @@ -46,13 +46,16 @@ class BulkCreator(object): self.timeline_objects = [] self.created = None - def createElement(self, element): + def create_element(self, element): self.timeline_objects.append(element) if len(self.timeline_objects) > 1000: - Timeline.objects.bulk_create(self.timeline_objects, batch_size=1000) - del self.timeline_objects - self.timeline_objects = [] - gc.collect() + self.flush() + + def flush(self): + Timeline.objects.bulk_create(self.timeline_objects, batch_size=1000) + del self.timeline_objects + self.timeline_objects = [] + gc.collect() bulk_creator = BulkCreator() @@ -63,7 +66,7 @@ def custom_add_to_object_timeline(obj:object, instance:object, event_type:str, n event_type_key = _get_impl_key_from_model(instance.__class__, event_type) impl = _timeline_impl_map.get(event_type_key, None) - bulk_creator.createElement(Timeline( + bulk_creator.create_element(Timeline( content_object=obj, namespace=namespace, event_type=event_type_key, @@ -74,13 +77,15 @@ def custom_add_to_object_timeline(obj:object, instance:object, event_type:str, n )) -def generate_timeline(initial_date, final_date): - if initial_date or final_date: +def generate_timeline(initial_date, final_date, project_id): + if initial_date or final_date or project_id: timelines = Timeline.objects.all() if initial_date: timelines = timelines.filter(created__gte=initial_date) if final_date: timelines = timelines.filter(created__lt=final_date) + if project_id: + timelines = timelines.filter(project__id=project_id) timelines.delete() @@ -97,6 +102,22 @@ def generate_timeline(initial_date, final_date): projects = projects.filter(created_date__lt=final_date) history_entries = history_entries.filter(created_at__lt=final_date) + if project_id: + project = Project.objects.get(id=project_id) + us_keys = ['userstories.userstory:%s'%(id) for id in project.user_stories.values_list("id", flat=True)] + tasks_keys = ['tasks.task:%s'%(id) for id in project.tasks.values_list("id", flat=True)] + issue_keys = ['issues.issue:%s'%(id) for id in project.issues.values_list("id", flat=True)] + wiki_keys = ['wiki.wikipage:%s'%(id) for id in project.wiki_pages.values_list("id", flat=True)] + keys = us_keys + tasks_keys + issue_keys + wiki_keys + + projects = projects.filter(id=project_id) + history_entries = history_entries.filter(key__in=keys) + + #Memberships + for membership in project.memberships.exclude(user=None).exclude(user=project.owner): + bulk_creator.created = membership.created_at + _push_to_timelines(project, membership.user, membership, "create") + for project in projects.iterator(): bulk_creator.created = project.created_date print("Project:", bulk_creator.created) @@ -115,6 +136,8 @@ def generate_timeline(initial_date, final_date): except ObjectDoesNotExist as e: print("Ignoring") + bulk_creator.flush() + class Command(BaseCommand): help = 'Regenerate project timeline' @@ -136,6 +159,12 @@ class Command(BaseCommand): dest='final_date', default=None, help='Final date for timeline generation'), + ) + ( + make_option('--project', + action='store', + dest='project', + default=None, + help='Selected project id for timeline generation'), ) @@ -148,4 +177,4 @@ class Command(BaseCommand): if options["purge"] == True: Timeline.objects.all().delete() - generate_timeline(options["initial_date"], options["final_date"]) + generate_timeline(options["initial_date"], options["final_date"], options["project"]) diff --git a/taiga/timeline/management/commands/rebuild_timeline_for_user_creation.py b/taiga/timeline/management/commands/rebuild_timeline_for_user_creation.py new file mode 100644 index 00000000..d4f99ed5 --- /dev/null +++ b/taiga/timeline/management/commands/rebuild_timeline_for_user_creation.py @@ -0,0 +1,98 @@ +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino +# Copyright (C) 2014 David Barragán +# This program 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. +# +# This program 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 . + +# Examples: +# python manage.py rebuild_timeline_for_user_creation --settings=settings.local_timeline + +from django.conf import settings +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist +from django.core.management.base import BaseCommand +from django.db.models import Model +from django.db import reset_queries + +from taiga.timeline.service import (_get_impl_key_from_model, + _timeline_impl_map, extract_user_info) +from taiga.timeline.models import Timeline +from taiga.timeline.signals import _push_to_timelines +from taiga.users.models import User + +from unittest.mock import patch + +import gc + +class BulkCreator(object): + def __init__(self): + self.timeline_objects = [] + self.created = None + + def create_element(self, element): + self.timeline_objects.append(element) + if len(self.timeline_objects) > 1000: + self.flush() + + def flush(self): + Timeline.objects.bulk_create(self.timeline_objects, batch_size=1000) + del self.timeline_objects + self.timeline_objects = [] + gc.collect() + +bulk_creator = BulkCreator() + + +def custom_add_to_object_timeline(obj:object, instance:object, event_type:str, namespace:str="default", extra_data:dict={}): + assert isinstance(obj, Model), "obj must be a instance of Model" + assert isinstance(instance, Model), "instance must be a instance of Model" + event_type_key = _get_impl_key_from_model(instance.__class__, event_type) + impl = _timeline_impl_map.get(event_type_key, None) + + bulk_creator.create_element(Timeline( + content_object=obj, + namespace=namespace, + event_type=event_type_key, + project=None, + data=impl(instance, extra_data=extra_data), + data_content_type = ContentType.objects.get_for_model(instance.__class__), + created = bulk_creator.created, + )) + + +def generate_timeline(): + with patch('taiga.timeline.service._add_to_object_timeline', new=custom_add_to_object_timeline): + # Users api wasn't a HistoryResourceMixin so we can't interate on the HistoryEntries in this case + users = User.objects.order_by("date_joined") + for user in users.iterator(): + bulk_creator.created = user.date_joined + print("User:", user.date_joined) + extra_data = { + "values_diff": {}, + "user": extract_user_info(user), + } + _push_to_timelines(None, user, user, "create", extra_data=extra_data) + del extra_data + + bulk_creator.flush() + +class Command(BaseCommand): + help = 'Regenerate project timeline' + + def handle(self, *args, **options): + debug_enabled = settings.DEBUG + if debug_enabled: + print("Please, execute this script only with DEBUG mode disabled (DEBUG=False)") + return + + generate_timeline() diff --git a/taiga/timeline/migrations/0004_auto_20150603_1312.py b/taiga/timeline/migrations/0004_auto_20150603_1312.py new file mode 100644 index 00000000..5764b682 --- /dev/null +++ b/taiga/timeline/migrations/0004_auto_20150603_1312.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('timeline', '0003_auto_20150410_0829'), + ] + + operations = [ + migrations.AlterField( + model_name='timeline', + name='project', + field=models.ForeignKey(null=True, to='projects.Project'), + preserve_default=True, + ), + ] diff --git a/taiga/timeline/models.py b/taiga/timeline/models.py index 5a070c49..ac181842 100644 --- a/taiga/timeline/models.py +++ b/taiga/timeline/models.py @@ -31,7 +31,7 @@ class Timeline(models.Model): content_object = GenericForeignKey('content_type', 'object_id') namespace = models.CharField(max_length=250, default="default", db_index=True) event_type = models.CharField(max_length=250, db_index=True) - project = models.ForeignKey(Project) + project = models.ForeignKey(Project, null=True) data = JsonField() data_content_type = models.ForeignKey(ContentType, related_name="data_timelines") created = models.DateTimeField(default=timezone.now) diff --git a/taiga/timeline/serializers.py b/taiga/timeline/serializers.py index 20a266df..903dc00d 100644 --- a/taiga/timeline/serializers.py +++ b/taiga/timeline/serializers.py @@ -43,6 +43,7 @@ class TimelineDataJsonField(serializers.WritableField): "photo": get_photo_or_gravatar_url(user), "big_photo": get_big_photo_or_gravatar_url(user), "username": user.username, + "date_joined": user.date_joined, } except User.DoesNotExist: pass diff --git a/taiga/timeline/service.py b/taiga/timeline/service.py index 96567739..5317942f 100644 --- a/taiga/timeline/service.py +++ b/taiga/timeline/service.py @@ -57,11 +57,15 @@ def _add_to_object_timeline(obj:object, instance:object, event_type:str, namespa event_type_key = _get_impl_key_from_model(instance.__class__, event_type) impl = _timeline_impl_map.get(event_type_key, None) + project = None + if hasattr(instance, "project"): + project = instance.project + Timeline.objects.create( content_object=obj, namespace=namespace, event_type=event_type_key, - project=instance.project, + project=project, data=impl(instance, extra_data=extra_data), data_content_type = ContentType.objects.get_for_model(instance.__class__), ) @@ -96,8 +100,8 @@ def get_timeline(obj, namespace=None): def filter_timeline_for_user(timeline, user): - # Filtering public projects - tl_filter = Q(project__is_private=False) + # Filtering entities from public projects or entities without project + tl_filter = Q(project__is_private=False) | Q(project=None) # Filtering private project with some public parts content_types = { @@ -115,6 +119,10 @@ def filter_timeline_for_user(timeline, user): project__anon_permissions__contains=[content_type_key], data_content_type=content_type) + # There is no specific permission for seeing new memberships + membership_content_type = ContentType.objects.get(app_label="projects", model="membership") + tl_filter |= Q(project__is_private=True, data_content_type=membership_content_type) + # Filtering private projects where user is member if not user.is_anonymous(): membership_model = apps.get_model('projects', 'Membership') diff --git a/taiga/timeline/signals.py b/taiga/timeline/signals.py index a90ce867..03d8b9f5 100644 --- a/taiga/timeline/signals.py +++ b/taiga/timeline/signals.py @@ -34,10 +34,11 @@ def _push_to_timeline(*args, **kwargs): def _push_to_timelines(project, user, obj, event_type, extra_data={}): + if project is not None: # Project timeline - _push_to_timeline(project, obj, event_type, - namespace=build_project_namespace(project), - extra_data=extra_data) + _push_to_timeline(project, obj, event_type, + namespace=build_project_namespace(project), + extra_data=extra_data) # User timeline _push_to_timeline(user, obj, event_type, @@ -56,18 +57,18 @@ def _push_to_timelines(project, user, obj, event_type, extra_data={}): if watchers: related_people |= watchers - # Team - team_members_ids = project.memberships.filter(user__isnull=False).values_list("id", flat=True) - team = User.objects.filter(id__in=team_members_ids) - related_people |= team + if project is not None: + # Team + team_members_ids = project.memberships.filter(user__isnull=False).values_list("id", flat=True) + team = User.objects.filter(id__in=team_members_ids) + related_people |= team + related_people = related_people.distinct() - related_people = related_people.distinct() + _push_to_timeline(related_people, obj, event_type, + namespace=build_user_namespace(user), + extra_data=extra_data) - _push_to_timeline(related_people, obj, event_type, - namespace=build_user_namespace(user), - extra_data=extra_data) - - #Related people: team members + #Related people: team members def on_new_history_entry(sender, instance, created, **kwargs): @@ -98,12 +99,18 @@ def on_new_history_entry(sender, instance, created, **kwargs): "comment_html": instance.comment_html, } + # Detect deleted comment + if instance.delete_comment_date: + extra_data["comment_deleted"] = True + _push_to_timelines(project, user, obj, event_type, extra_data=extra_data) def create_membership_push_to_timeline(sender, instance, **kwargs): # Creating new membership with associated user - if not instance.pk and instance.user: + # If the user is the project owner we don't do anything because that info will + # be shown in created project timeline entry + if not instance.pk and instance.user and instance.user != instance.project.owner: _push_to_timelines(instance.project, instance.user, instance, "create") #Updating existing membership @@ -120,3 +127,10 @@ def create_membership_push_to_timeline(sender, instance, **kwargs): def delete_membership_push_to_timeline(sender, instance, **kwargs): if instance.user: _push_to_timelines(instance.project, instance.user, instance, "delete") + + +def create_user_push_to_timeline(sender, instance, created, **kwargs): + if created: + project = None + user = instance + _push_to_timelines(project, user, user, "create") diff --git a/taiga/timeline/timeline_implementations.py b/taiga/timeline/timeline_implementations.py index 8a782ce1..2b911607 100644 --- a/taiga/timeline/timeline_implementations.py +++ b/taiga/timeline/timeline_implementations.py @@ -105,3 +105,11 @@ def membership_timeline(instance, extra_data={}): } result.update(extra_data) return result + +@register_timeline_implementation("users.user", "create") +def user_timeline(instance, extra_data={}): + result = { + "user": service.extract_user_info(instance), + } + result.update(extra_data) + return result diff --git a/taiga/users/permissions.py b/taiga/users/permissions.py index 168a9419..70cfa3b8 100644 --- a/taiga/users/permissions.py +++ b/taiga/users/permissions.py @@ -44,7 +44,7 @@ class UserPermission(TaigaResourcePermission): me_perms = IsAuthenticated() remove_avatar_perms = IsAuthenticated() starred_perms = AllowAny() - change_email_perms = IsTheSameUser() + change_email_perms = AllowAny() contacts_perms = AllowAny() diff --git a/tests/integration/resources_permissions/test_users_resources.py b/tests/integration/resources_permissions/test_users_resources.py index 5bcf3c4e..fada3a72 100644 --- a/tests/integration/resources_permissions/test_users_resources.py +++ b/tests/integration/resources_permissions/test_users_resources.py @@ -272,9 +272,10 @@ def test_user_action_password_recovery(client, data): def test_user_action_change_email(client, data): url = reverse('users-change-email') - data.registered_user.email_token = "test-token" - data.registered_user.new_email = "new@email.com" - data.registered_user.save() + def after_each_request(): + data.registered_user.email_token = "test-token" + data.registered_user.new_email = "new@email.com" + data.registered_user.save() users = [ None, @@ -283,5 +284,6 @@ def test_user_action_change_email(client, data): ] patch_data = json.dumps({"email_token": "test-token"}) - results = helper_test_http_method(client, 'post', url, patch_data, users) - assert results == [401, 204, 400] + after_each_request() + results = helper_test_http_method(client, 'post', url, patch_data, users, after_each_request=after_each_request) + assert results == [204, 204, 204] diff --git a/tests/integration/test_timeline.py b/tests/integration/test_timeline.py index b6743d9f..326a7b85 100644 --- a/tests/integration/test_timeline.py +++ b/tests/integration/test_timeline.py @@ -36,7 +36,7 @@ def test_add_to_object_timeline(): service._add_to_object_timeline(user1, task, "test") - assert Timeline.objects.filter(object_id=user1.id).count() == 1 + assert Timeline.objects.filter(object_id=user1.id).count() == 2 assert Timeline.objects.order_by("-id")[0].data == id(task) @@ -59,9 +59,9 @@ def test_get_timeline(): service._add_to_object_timeline(user1, task4, "test") service._add_to_object_timeline(user2, task1, "test") - assert Timeline.objects.filter(object_id=user1.id).count() == 4 - assert Timeline.objects.filter(object_id=user2.id).count() == 1 - assert Timeline.objects.filter(object_id=user3.id).count() == 0 + assert Timeline.objects.filter(object_id=user1.id).count() == 5 + assert Timeline.objects.filter(object_id=user2.id).count() == 2 + assert Timeline.objects.filter(object_id=user3.id).count() == 1 def test_filter_timeline_no_privileges(): @@ -72,7 +72,7 @@ def test_filter_timeline_no_privileges(): service.register_timeline_implementation("tasks.task", "test", lambda x, extra_data=None: str(id(x))) service._add_to_object_timeline(user1, task1, "test") - timeline = Timeline.objects.all() + timeline = Timeline.objects.exclude(event_type="users.user.create") timeline = service.filter_timeline_for_user(timeline, user2) assert timeline.count() == 0 @@ -88,7 +88,7 @@ def test_filter_timeline_public_project(): service.register_timeline_implementation("tasks.task", "test", lambda x, extra_data=None: str(id(x))) service._add_to_object_timeline(user1, task1, "test") service._add_to_object_timeline(user1, task2, "test") - timeline = Timeline.objects.all() + timeline = Timeline.objects.exclude(event_type="users.user.create") timeline = service.filter_timeline_for_user(timeline, user2) assert timeline.count() == 1 @@ -104,7 +104,7 @@ def test_filter_timeline_private_project_anon_permissions(): service.register_timeline_implementation("tasks.task", "test", lambda x, extra_data=None: str(id(x))) service._add_to_object_timeline(user1, task1, "test") service._add_to_object_timeline(user1, task2, "test") - timeline = Timeline.objects.all() + timeline = Timeline.objects.exclude(event_type="users.user.create") timeline = service.filter_timeline_for_user(timeline, user2) assert timeline.count() == 1 @@ -123,9 +123,9 @@ def test_filter_timeline_private_project_member_permissions(): service.register_timeline_implementation("tasks.task", "test", lambda x, extra_data=None: str(id(x))) service._add_to_object_timeline(user1, task1, "test") service._add_to_object_timeline(user1, task2, "test") - timeline = Timeline.objects.all() + timeline = Timeline.objects.exclude(event_type="users.user.create") timeline = service.filter_timeline_for_user(timeline, user2) - assert timeline.count() == 1 + assert timeline.count() == 3 def test_create_project_timeline(): diff --git a/tests/integration/test_users.py b/tests/integration/test_users.py index 4682d5a2..1898aea8 100644 --- a/tests/integration/test_users.py +++ b/tests/integration/test_users.py @@ -93,6 +93,18 @@ def test_validate_requested_email_change(client): assert user.new_email is None assert user.email == "new@email.com" +def test_validate_requested_email_change_for_anonymous_user(client): + user = f.UserFactory.create(email_token="change_email_token", new_email="new@email.com") + url = reverse('users-change-email') + data = {"email_token": "change_email_token"} + + response = client.post(url, json.dumps(data), content_type="application/json") + + assert response.status_code == 204 + user = models.User.objects.get(pk=user.id) + assert user.email_token is None + assert user.new_email is None + assert user.email == "new@email.com" def test_validate_requested_email_change_without_token(client): user = f.UserFactory.create(email_token="change_email_token", new_email="new@email.com")
\n" +"

Thank you for registering in Taiga

\n" +"

We hope you enjoy it

\n" +"

We built Taiga because we wanted the project management tool " +"that sits open on our computers all day long, to serve as a continued " +"reminder of why we love to collaborate, code and design.

\n" +"

We built it to be beautiful, elegant, simple to use and fun - " +"without forsaking flexibility and power.

\n" +" The taiga Team\n" +"
\n" +"

Thank you for registering in Taiga

\n" +"

We hope you enjoy it

\n" +"

We built Taiga because we wanted the project management tool " +"that sits open on our computers all day long, to serve as a continued " +"reminder of why we love to collaborate, code and design.

\n" +"

We built it to be beautiful, elegant, simple to use and fun - " +"without forsaking flexibility and power.

\n" +" The taiga Team\n" +"