diff --git a/bin/cleanup.sh b/bin/cleanup.sh index 5e79cbd..76dff17 100755 --- a/bin/cleanup.sh +++ b/bin/cleanup.sh @@ -4,18 +4,17 @@ echo "aktualisiere Übersetzungen..." cd src unset DJANGO_SETTINGS_MODULE for dir in * - do - if [ -d ${dir}/locale ] - echo "Übersetze $dir" - then - echo -n "$dir: " - cd ${dir} - django-admin.py makemessages -l de - cd .. - fi - done +do + if [ -d ${dir}/locale ] + then + echo -n "$dir: " + cd ${dir} + django-admin.py makemessages -l de + cd .. + fi +done sleep 5s -export DJANGO_SETTINGS_MODULE="kasu.settings.production" +export DJANGO_SETTINGS_MODULE="kasu.settings" ./manage.py compilemessages echo "lösche den Python Compiler Cache..." @@ -23,5 +22,5 @@ find . -name "*.pyc" -exec rm -rf {} \; echo "Aktualisiere Statics" ./manage.py collectstatic --noinput -c echo "Erstelle Vorschaubilder" -./manage.py generateimages +./manage.py thumbnail_cleanup touch kasu/wsgi.py diff --git a/requirements/base.txt b/requirements/base.txt index 2c55f0f..e04f50b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -17,5 +17,3 @@ PyJWT pytz requests requests-oauthlib -social-auth-app-django -social-auth-core diff --git a/src/content/context_processors.py b/src/content/context_processors.py index 1cd1456..b1b93bf 100644 --- a/src/content/context_processors.py +++ b/src/content/context_processors.py @@ -3,7 +3,7 @@ from django.core.cache import cache from . import models - +from utils import STATUS_PUBLISHED def content_menus(request): """ Generate the menu tree and add these info to the template context. @@ -50,7 +50,7 @@ def content_menus(request): break current_path = current_path[0:current_path.rfind('.')] - return {'top_menu_items': top_level_pages, + return {'top_menu_items': top_level_pages.filter(status=STATUS_PUBLISHED), 'current_top_page': current_top_page, 'current_path': current_path, 'current_page': current_page} diff --git a/src/content/locale/de/LC_MESSAGES/django.mo b/src/content/locale/de/LC_MESSAGES/django.mo index e1a6915..a0fbddf 100644 Binary files a/src/content/locale/de/LC_MESSAGES/django.mo and b/src/content/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/content/locale/de/LC_MESSAGES/django.po b/src/content/locale/de/LC_MESSAGES/django.po index f61f37f..093f781 100644 --- a/src/content/locale/de/LC_MESSAGES/django.po +++ b/src/content/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kasu.content\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" "PO-Revision-Date: 2018-01-12 15:25+0105\n" "Last-Translator: b'Christian Berg '\n" "Language-Team: Deutsch <>\n" @@ -20,258 +20,252 @@ msgstr "" "X-Generator: Poedit 1.8.9\n" "X-Translated-Using: django-rosetta 0.7.14\n" -#: src/content/feeds.py:18 +#: .\content\feeds.py:18 msgid "Current news from Kasu" msgstr "Aktuelle Nachrichten von Kasu" -#: src/content/feeds.py:51 +#: .\content\feeds.py:51 msgid "Latest comments on kasu.at" msgstr "Neueste Kommentare auf Kasu.at " -#: src/content/feeds.py:52 +#: .\content\feeds.py:52 msgid "Kasu - latest comments" msgstr "Kasu - neue Kommentare" -#: src/content/forms.py:57 src/content/models.py:318 +#: .\content\forms.py:57 .\content\models.py:318 msgid "Please upload a PDF-File to this PDF-Page." msgstr "Bitte eine PDF Datei für diese PDF Seite hochladen." -#: src/content/models.py:76 +#: .\content\models.py:76 msgid "Headline" msgstr "Schlagzeile" -#: src/content/models.py:78 +#: .\content\models.py:78 msgid "Content" msgstr "Inhalt" -#: src/content/models.py:82 src/content/models.py:150 -#: src/content/templates/content/article_detail.html:25 +#: .\content\models.py:82 .\content\models.py:150 +#: .\content\templates\content\article_detail.html:25 msgid "Category" msgstr "Kategorie" -#: src/content/models.py:83 src/content/models.py:143 +#: .\content\models.py:83 .\content\models.py:143 msgid "Image" msgstr "Bild" -#: src/content/models.py:85 src/content/models.py:145 +#: .\content\models.py:85 .\content\models.py:145 msgid "Slug" msgstr "Slug" -#: src/content/models.py:88 -#: src/content/templates/content/article_detail.html:23 +#: .\content\models.py:88 .\content\templates\content\article_detail.html:23 msgid "Author" msgstr "Autor" -#: src/content/models.py:89 +#: .\content\models.py:89 msgid "Status" msgstr "Status" -#: src/content/models.py:91 +#: .\content\models.py:91 msgid "Created" msgstr "Erstellt" -#: src/content/models.py:92 +#: .\content\models.py:92 msgid "Modified" msgstr "Bearbeitet" -#: src/content/models.py:97 +#: .\content\models.py:97 msgid "Article" msgstr "Artikel" -#: src/content/models.py:98 +#: .\content\models.py:98 msgid "Articles" msgstr "Artikel" -#: src/content/models.py:139 src/content/models.py:140 +#: .\content\models.py:139 .\content\models.py:140 msgid "Name" msgstr "Name" -#: src/content/models.py:141 src/content/models.py:142 +#: .\content\models.py:141 .\content\models.py:142 msgid "Description" msgstr "Beschreibung" -#: src/content/models.py:151 +#: .\content\models.py:151 msgid "Categories" msgstr "Kategorien" -#: src/content/models.py:182 src/content/models.py:188 +#: .\content\models.py:182 .\content\models.py:188 msgid "The short name for the menu-entry of this page" msgstr "Ein kurzer Name für den Menüeintrag" -#: src/content/models.py:193 src/content/models.py:198 +#: .\content\models.py:193 .\content\models.py:198 msgid "The page title as you'd like it to be seen by the public" msgstr "Der Seitentitel der öffentlich angezeigt werden soll" -#: src/content/models.py:200 +#: .\content\models.py:200 msgid "slug" msgstr "Slug" -#: src/content/models.py:203 +#: .\content\models.py:203 msgid "" -"The name of the page as it will appear in URLs e.g " -"http://domain.com/blog/[my-slug]/" -msgstr "" -"Wie die Seite in der URL aufscheint also http://domain.com/blog/[slug]" +"The name of the page as it will appear in URLs e.g http://domain.com/blog/" +"[my-slug]/" +msgstr "Wie die Seite in der URL aufscheint also http://domain.com/blog/[slug]" -#: src/content/models.py:212 +#: .\content\models.py:212 msgid "Path" msgstr "Pfad" -#: src/content/models.py:224 +#: .\content\models.py:224 msgid "Position" msgstr "Position" -#: src/content/models.py:229 +#: .\content\models.py:229 msgid "status" msgstr "Status" -#: src/content/models.py:232 src/content/models.py:234 -#| msgid "Description" +#: .\content\models.py:232 .\content\models.py:234 msgid "search description" msgstr "Beschreibung für Suchfunktion" -#: src/content/models.py:237 -#| msgid "Content" +#: .\content\models.py:237 msgid "content type" msgstr "Inhaltstyp" -#: src/content/models.py:242 +#: .\content\models.py:242 msgid "enable comments" msgstr "Kommentare möglich" -#: src/content/models.py:247 +#: .\content\models.py:247 msgid "Template" msgstr "Vorlage" -#: src/content/models.py:255 -#| msgid "created on" +#: .\content\models.py:255 msgid "first created at" msgstr "erstellt am" -#: src/content/models.py:260 +#: .\content\models.py:260 msgid "latest updated at" msgstr "letzte Aktualisierung am" -#: src/content/models.py:331 +#: .\content\models.py:331 msgid "Page" msgstr "Seite" -#: src/content/models.py:332 +#: .\content\models.py:332 msgid "Pages" msgstr "Seiten" -#: src/content/templates/content/article_archive.html:5 -#: src/content/templates/content/article_archive.html:20 +#: .\content\templates\content\article_archive.html:5 +#: .\content\templates\content\article_archive.html:20 msgid "Article Archive" msgstr "Nachrichtenarchiv" -#: src/content/templates/content/article_archive.html:35 -#: src/content/templates/content/article_archive_month.html:5 -#: src/content/templates/content/article_archive_year.html:7 +#: .\content\templates\content\article_archive.html:35 +#: .\content\templates\content\article_archive_month.html:5 +#: .\content\templates\content\article_archive_year.html:7 msgid "Archive" msgstr "Archiv" -#: src/content/templates/content/article_archive.html:56 +#: .\content\templates\content\article_archive.html:56 msgid "All Categories" msgstr "Alle Kategorien" -#: src/content/templates/content/article_archive.html:71 +#: .\content\templates\content\article_archive.html:71 msgid "created on" msgstr "erstellt am" -#: src/content/templates/content/article_archive.html:73 +#: .\content\templates\content\article_archive.html:73 msgid "by" msgstr "von" -#: src/content/templates/content/article_archive.html:74 -#: src/content/templates/content/article_archive.html:75 +#: .\content\templates\content\article_archive.html:74 +#: .\content\templates\content\article_archive.html:75 msgid "comments" msgstr "Kommentare" -#: src/content/templates/content/article_archive.html:81 +#: .\content\templates\content\article_archive.html:81 msgid "Read More" msgstr "Mehr lesen" -#: src/content/templates/content/article_archive.html:86 +#: .\content\templates\content\article_archive.html:86 msgid "We're sorry. Your search yielded no results." msgstr "Es tut uns leid. Deine Suche ergab keine Treffer." -#: src/content/templates/content/article_archive.html:104 +#: .\content\templates\content\article_archive.html:104 msgid "Add Article" msgstr "neuer Artikel " -#: src/content/templates/content/article_archive_month.html:7 +#: .\content\templates\content\article_archive_month.html:7 msgid "back" msgstr "Zurück" -#: src/content/templates/content/article_detail.html:24 +#: .\content\templates\content\article_detail.html:24 msgid "Created on" msgstr "Erstellt am" -#: src/content/templates/content/article_detail.html:36 +#: .\content\templates\content\article_detail.html:36 msgid "share on" msgstr "Teile auf" -#: src/content/templates/content/article_detail.html:51 -#: src/content/views.py:156 +#: .\content\templates\content\article_detail.html:51 .\content\views.py:156 msgid "Edit Article" msgstr "Artikel bearbeiten" -#: src/content/templates/content/article_form.html:32 -#: src/content/templates/content/page_form.html:42 -#: src/content/templates/content/page_form.html:49 +#: .\content\templates\content\article_form.html:32 +#: .\content\templates\content\page_form.html:42 +#: .\content\templates\content\page_form.html:49 msgid "German" msgstr "Deutsch" -#: src/content/templates/content/article_form.html:33 -#: src/content/templates/content/page_form.html:43 -#: src/content/templates/content/page_form.html:57 +#: .\content\templates\content\article_form.html:33 +#: .\content\templates\content\page_form.html:43 +#: .\content\templates\content\page_form.html:57 msgid "English" msgstr "Englisch" -#: src/content/templates/content/article_form.html:59 -#: src/content/templates/content/page_form.html:66 +#: .\content\templates\content\article_form.html:59 +#: .\content\templates\content\page_form.html:66 msgid "reset" msgstr "Zurücksetzen" -#: src/content/templates/content/article_form.html:60 -#: src/content/templates/content/page_form.html:67 +#: .\content\templates\content\article_form.html:60 +#: .\content\templates\content\page_form.html:67 msgid "save" msgstr "Speichern" -#: src/content/templates/content/page_form.html:5 -#: src/content/templates/content/page_form.html:35 +#: .\content\templates\content\page_form.html:5 +#: .\content\templates\content\page_form.html:35 msgid "Edit Page" msgstr "Seite bearbeiten" -#: src/content/templates/content/page_form.html:5 -#: src/content/templates/content/page_form.html:19 -#: src/content/templates/content/page_form.html:35 +#: .\content\templates\content\page_form.html:5 +#: .\content\templates\content\page_form.html:19 +#: .\content\templates\content\page_form.html:35 msgid "Add Page" msgstr "Seite hinzufügen" -#: src/content/templates/content/page_form.html:18 +#: .\content\templates\content\page_form.html:18 msgid "Edit" msgstr "Bearbeiten" -#: src/content/templates/content/page_form.html:37 +#: .\content\templates\content\page_form.html:37 msgid "HTML Specific" msgstr "HTML spezifisch" -#: src/content/views.py:53 +#: .\content\views.py:53 msgid "This Category does not exist." msgstr "Diese Kategorie existiert nicht." -#: src/content/views.py:157 +#: .\content\views.py:157 msgid "Create Article" msgstr "Artikel erstellen" -#: src/content/views.py:233 +#: .\content\views.py:233 #, python-format msgid "No Page found matching the Path %s" msgstr "Keine Seite unter dem Pfad %s gefunden" -#: src/content/views.py:262 +#: .\content\views.py:262 #, python-format msgid "No PDF Document found matching the Path %s" msgstr "Kein PDF Dokument unter dem Pfad %s gefunden." diff --git a/src/events/locale/de/LC_MESSAGES/django.mo b/src/events/locale/de/LC_MESSAGES/django.mo index 01454b9..24227aa 100644 Binary files a/src/events/locale/de/LC_MESSAGES/django.mo and b/src/events/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/events/locale/de/LC_MESSAGES/django.po b/src/events/locale/de/LC_MESSAGES/django.po index 5652376..e8a75a1 100644 --- a/src/events/locale/de/LC_MESSAGES/django.po +++ b/src/events/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kasu.events\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" "PO-Revision-Date: 2018-01-12 15:25+0105\n" "Last-Translator: b'Christian Berg '\n" "Language-Team: Kasu \n" @@ -19,58 +19,58 @@ msgstr "" "X-Generator: Poedit 1.8.9\n" "X-Translated-Using: django-rosetta 0.7.14\n" -#: src/events/admin.py:14 src/events/models.py:82 +#: .\events\admin.py:14 .\events\models.py:82 msgid "Event Series" msgstr "Veranstaltungsreihen" -#: src/events/forms.py:17 +#: .\events\forms.py:17 msgid "Images" msgstr "Bilder" -#: src/events/forms.py:46 +#: .\events\forms.py:46 msgid "start" msgstr "Beginn" -#: src/events/forms.py:49 +#: .\events\forms.py:49 msgid "end" msgstr "Ende" -#: src/events/models.py:52 src/events/models.py:176 src/events/models.py:217 +#: .\events\models.py:52 .\events\models.py:176 .\events\models.py:217 msgid "Name" msgstr "Name" -#: src/events/models.py:53 src/events/models.py:177 src/events/models.py:225 +#: .\events\models.py:53 .\events\models.py:177 .\events\models.py:225 msgid "Description" msgstr "Beschreibung" -#: src/events/models.py:55 src/events/templates/events/event_detail.html:29 -#: src/events/templates/events/event_detail.html:87 -#: src/events/templates/events/event_list.html:28 -#: src/events/templates/events/photo_upload.html:13 +#: .\events\models.py:55 .\events\templates\events\event_detail.html:29 +#: .\events\templates\events\event_detail.html:87 +#: .\events\templates\events\event_list.html:28 +#: .\events\templates\events\photo_upload.html:13 msgid "Start" msgstr "Beginn" -#: src/events/models.py:56 src/events/templates/events/event_detail.html:30 -#: src/events/templates/events/event_detail.html:89 +#: .\events\models.py:56 .\events\templates\events\event_detail.html:30 +#: .\events\templates\events\event_detail.html:89 msgid "End" msgstr "Ende" -#: src/events/models.py:57 src/events/models.py:185 -#: src/events/templates/events/event_detail.html:34 -#: src/events/templates/events/event_detail.html:80 -#: src/events/templates/events/event_detail.html:92 +#: .\events\models.py:57 .\events\models.py:185 +#: .\events\templates\events\event_detail.html:34 +#: .\events\templates\events\event_detail.html:80 +#: .\events\templates\events\event_detail.html:92 msgid "Homepage" msgstr "Homepage" -#: src/events/models.py:59 src/events/models.py:179 src/events/models.py:219 +#: .\events\models.py:59 .\events\models.py:179 .\events\models.py:219 msgid "Image" msgstr "Bild" -#: src/events/models.py:66 +#: .\events\models.py:66 msgid "Mahjong Tournament" msgstr "Mahjong Turnier" -#: src/events/models.py:68 +#: .\events\models.py:68 msgid "" "This event is a tournament, different rules apply for the kyu " "ranking." @@ -78,11 +78,11 @@ msgstr "" "Diese Veranstaltung ist ein Turnier, es gelten andere Regeln für das Kyu " "Ranking." -#: src/events/models.py:72 +#: .\events\models.py:72 msgid "Mahjong Season" msgstr "Mahjong Saison" -#: src/events/models.py:83 +#: .\events\models.py:83 msgid "" "Wenn dieser Event zu einer Veranstaltungsreihe gehört werden Ort, " "Beschreibung, Bild und Homepage von dem hier angegebenen Event " @@ -91,245 +91,245 @@ msgstr "" "Wenn dieser Termin zu einer Veranstaltungsreihe gehört werden Ort, " "Beschreibung, Bild und Homepage von dem hier angegebenen Event übernommen." -#: src/events/models.py:92 src/events/models.py:195 src/events/models.py:248 +#: .\events\models.py:92 .\events\models.py:195 .\events\models.py:248 msgid "first created at" msgstr "erstellt am" -#: src/events/models.py:97 src/events/models.py:200 src/events/models.py:253 +#: .\events\models.py:97 .\events\models.py:200 .\events\models.py:253 msgid "latest updated at" msgstr "letzte Aktualisierung am" -#: src/events/models.py:103 +#: .\events\models.py:103 msgid "Event" msgstr "Termin" -#: src/events/models.py:104 +#: .\events\models.py:104 msgid "Events" msgstr "Termine" -#: src/events/models.py:117 +#: .\events\models.py:117 msgid "A event can't end before it had started" msgstr "Eine Veranstaltung kann nicht enden bevor sie begonnen hat" -#: src/events/models.py:186 +#: .\events\models.py:186 msgid "Postal Code" msgstr "Postleitzahl" -#: src/events/models.py:187 +#: .\events\models.py:187 msgid "Street Address" msgstr "Straße" -#: src/events/models.py:188 +#: .\events\models.py:188 msgid "Locality" msgstr "Ort" -#: src/events/models.py:189 +#: .\events\models.py:189 msgid "Country" msgstr "Land" -#: src/events/models.py:204 +#: .\events\models.py:204 msgid "Venue" msgstr "Veranstaltungsort" -#: src/events/models.py:205 +#: .\events\models.py:205 msgid "Venues" msgstr "Veranstaltungsorte" -#: src/events/models.py:232 +#: .\events\models.py:232 msgid "Startpage" msgstr "Startseite" -#: src/events/models.py:235 +#: .\events\models.py:235 msgid "Display this Photo on the Startpage Teaser" msgstr "Foto als Teaser auf der Startseite verwenden." -#: src/events/models.py:237 +#: .\events\models.py:237 msgid "Published on" msgstr "Veröffentlicht am" -#: src/events/models.py:239 +#: .\events\models.py:239 msgid "Number of views" msgstr "Wie oft gesehen" -#: src/events/models.py:263 src/events/templates/events/event_archive.html:38 -#: src/events/templates/events/event_list.html:18 +#: .\events\models.py:263 .\events\templates\events\event_archive.html:38 +#: .\events\templates\events\event_list.html:18 msgid "Event Image" msgstr "Veranstaltungsbild" -#: src/events/models.py:264 +#: .\events\models.py:264 msgid "Event Images" msgstr "Veranstaltungsbilder" -#: src/events/templates/events/event_archive.html:5 -#: src/events/templates/events/event_archive.html:9 +#: .\events\templates\events\event_archive.html:5 +#: .\events\templates\events\event_archive.html:9 msgid "Event Archive" msgstr "Veranstaltungsarchiv" -#: src/events/templates/events/event_archive.html:42 -#: src/events/templates/events/event_detail.html:85 -#: src/events/templates/events/event_list.html:22 -#: src/events/templates/events/photo_detail.html:53 +#: .\events\templates\events\event_archive.html:42 +#: .\events\templates\events\event_detail.html:85 +#: .\events\templates\events\event_list.html:22 +#: .\events\templates\events\photo_detail.html:53 msgid "Date" msgstr "Datum" -#: src/events/templates/events/event_archive.html:47 +#: .\events\templates\events\event_archive.html:47 msgid "Time" msgstr "Zeit" -#: src/events/templates/events/event_archive.html:49 -#: src/events/templates/events/photo_upload.html:16 +#: .\events\templates\events\event_archive.html:49 +#: .\events\templates\events\photo_upload.html:16 msgid "from" msgstr "von" -#: src/events/templates/events/event_archive.html:49 -#: src/events/templates/events/photo_upload.html:16 +#: .\events\templates\events\event_archive.html:49 +#: .\events\templates\events\photo_upload.html:16 msgid "to" msgstr "bis" -#: src/events/templates/events/event_archive.html:57 -#: src/events/templates/events/event_detail.html:31 -#: src/events/templates/events/event_detail.html:72 -#: src/events/templates/events/event_list.html:32 -#: src/events/templates/events/photo_upload.html:23 +#: .\events\templates\events\event_archive.html:57 +#: .\events\templates\events\event_detail.html:31 +#: .\events\templates\events\event_detail.html:72 +#: .\events\templates\events\event_list.html:32 +#: .\events\templates\events\photo_upload.html:23 msgid "Location" msgstr "Ort" -#: src/events/templates/events/event_archive.html:58 -#: src/events/templates/events/event_list.html:35 -#: src/events/templates/events/photo_upload.html:25 -#: src/events/templates/events/photo_upload.html:26 +#: .\events\templates\events\event_archive.html:58 +#: .\events\templates\events\event_list.html:35 +#: .\events\templates\events\photo_upload.html:25 +#: .\events\templates\events\photo_upload.html:26 msgid "Comments" msgstr "Kommentare" -#: src/events/templates/events/event_archive.html:59 -#: src/events/templates/events/event_detail.html:36 -#: src/events/templates/events/event_detail.html:48 -#: src/events/templates/events/photo_list.html:4 -#: src/events/templates/events/photo_upload.html:28 -#: src/events/templates/events/photo_upload.html:29 +#: .\events\templates\events\event_archive.html:59 +#: .\events\templates\events\event_detail.html:36 +#: .\events\templates\events\event_detail.html:48 +#: .\events\templates\events\photo_list.html:4 +#: .\events\templates\events\photo_upload.html:28 +#: .\events\templates\events\photo_upload.html:29 msgid "Photos" msgstr "Fotos" -#: src/events/templates/events/event_archive.html:60 -#: src/events/templates/events/event_archive.html:61 -#: src/events/templates/events/event_detail.html:35 -#: src/events/templates/events/event_detail.html:51 +#: .\events\templates\events\event_archive.html:60 +#: .\events\templates\events\event_archive.html:61 +#: .\events\templates\events\event_detail.html:35 +#: .\events\templates\events\event_detail.html:51 msgid "Hanchans" msgstr "Hanchans" -#: src/events/templates/events/event_detail.html:37 +#: .\events\templates\events\event_detail.html:37 msgid "tourney" msgstr "Turnier" -#: src/events/templates/events/event_detail.html:37 +#: .\events\templates\events\event_detail.html:37 msgid "other rules apply here" msgstr "hier gelten andere Regeln" -#: src/events/templates/events/event_detail.html:45 +#: .\events\templates\events\event_detail.html:45 msgid "Info" msgstr "Info" -#: src/events/templates/events/event_detail.html:54 +#: .\events\templates\events\event_detail.html:54 msgid "Mai-Star Games" msgstr "Mai-Star Spiele" -#: src/events/templates/events/event_detail.html:57 +#: .\events\templates\events\event_detail.html:57 msgid "Event Ranking" msgstr "Veranstaltungs Wertung" -#: src/events/templates/events/event_detail.html:100 +#: .\events\templates\events\event_detail.html:100 msgid "Share on Facebook" msgstr "Auf Facebook teilen" -#: src/events/templates/events/event_detail.html:104 +#: .\events\templates\events\event_detail.html:104 msgid "Share on Google+" msgstr "Auf Google+ teilen" -#: src/events/templates/events/event_detail.html:109 +#: .\events\templates\events\event_detail.html:109 msgid "Share on Twitter" msgstr "Auf Twitter teilen" -#: src/events/templates/events/event_detail.html:113 +#: .\events\templates\events\event_detail.html:113 msgid "Show on Google Maps" msgstr "Auf Google Maps zeigen" -#: src/events/templates/events/event_detail.html:127 -#: src/events/templates/events/event_form.html:9 src/events/views.py:62 +#: .\events\templates\events\event_detail.html:127 +#: .\events\templates\events\event_form.html:9 .\events\views.py:62 msgid "Edit Event" msgstr "Termin bearbeiten" -#: src/events/templates/events/event_detail.html:131 +#: .\events\templates\events\event_detail.html:131 msgid "Add Dates" msgstr "Termine hinzufügen" -#: src/events/templates/events/event_form.html:9 -#: src/events/templates/events/page.html:9 src/events/views.py:64 +#: .\events\templates\events\event_form.html:9 +#: .\events\templates\events\page.html:9 .\events\views.py:64 msgid "Add Event" msgstr "Neuer Termin" -#: src/events/templates/events/event_form.html:18 -#: src/events/templates/events/photo_list.html:35 +#: .\events\templates\events\event_form.html:18 +#: .\events\templates\events\photo_list.html:35 msgid "reset" msgstr "Zurücksetzen" -#: src/events/templates/events/event_form.html:19 -#: src/events/templates/events/eventseries_form.html:25 +#: .\events\templates\events\event_form.html:19 +#: .\events\templates\events\eventseries_form.html:25 msgid "save" msgstr "Speichern" -#: src/events/templates/events/event_list.html:4 -#: src/events/templates/events/event_list.html:5 +#: .\events\templates\events\event_list.html:4 +#: .\events\templates\events\event_list.html:5 msgid "Upcoming Events" msgstr "Bevorstehende Veranstaltungen" -#: src/events/templates/events/eventseries_form.html:24 +#: .\events\templates\events\eventseries_form.html:24 msgid "back" msgstr "Zurück" -#: src/events/templates/events/photo_confirm_delete.html:17 +#: .\events\templates\events\photo_confirm_delete.html:17 msgid "Cancel" msgstr "Abbrechen" -#: src/events/templates/events/photo_confirm_delete.html:21 -#: src/events/templates/events/photo_list.html:21 +#: .\events\templates\events\photo_confirm_delete.html:21 +#: .\events\templates\events\photo_list.html:21 msgid "Delete" msgstr "Löschen" -#: src/events/templates/events/photo_detail.html:44 +#: .\events\templates\events\photo_detail.html:44 msgid "previous" msgstr "Zurück" -#: src/events/templates/events/photo_detail.html:52 +#: .\events\templates\events\photo_detail.html:52 msgid "Photographer" msgstr "Fotograf" -#: src/events/templates/events/photo_detail.html:58 +#: .\events\templates\events\photo_detail.html:58 msgid "share on" msgstr "Teile auf" -#: src/events/templates/events/photo_detail.html:81 +#: .\events\templates\events\photo_detail.html:81 msgid "download" msgstr "Herunterladen" -#: src/events/templates/events/photo_detail.html:82 +#: .\events\templates\events\photo_detail.html:82 msgid "Rotate counter clockwise" msgstr "mit dem Uhrzeiger drehen" -#: src/events/templates/events/photo_detail.html:83 +#: .\events\templates\events\photo_detail.html:83 msgid "Rotate clockwise" msgstr "gegen den Uhrzeiger drehen" -#: src/events/templates/events/photo_detail.html:84 +#: .\events\templates\events\photo_detail.html:84 msgid "Save" msgstr "Speichern" -#: src/events/templates/events/photo_list.html:36 -#: src/events/templates/events/photo_upload.html:35 -#: src/events/templates/events/photo_upload.html:49 +#: .\events\templates\events\photo_list.html:36 +#: .\events\templates\events\photo_upload.html:35 +#: .\events\templates\events\photo_upload.html:49 msgid "Upload" msgstr "Hochladen" -#: src/events/views.py:149 +#: .\events\views.py:150 msgid "Event does not exist" msgstr "Veranstaltung gibt es nicht" diff --git a/src/events/views.py b/src/events/views.py index 8ee2a35..b22d745 100644 --- a/src/events/views.py +++ b/src/events/views.py @@ -80,7 +80,8 @@ class EventGallery(generic.ListView): event_series__isnull=True, photo_count__gt=0 ) - paginate_by = 12 + queryset = queryset.order_by('-start') + paginate_by = 24 class EventListIcal(generic.View): diff --git a/src/kasu/locale/de/LC_MESSAGES/django.mo b/src/kasu/locale/de/LC_MESSAGES/django.mo index e0f35e4..c6d7576 100644 Binary files a/src/kasu/locale/de/LC_MESSAGES/django.mo and b/src/kasu/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/kasu/locale/de/LC_MESSAGES/django.po b/src/kasu/locale/de/LC_MESSAGES/django.po index 9f2c8dd..feffee8 100644 --- a/src/kasu/locale/de/LC_MESSAGES/django.po +++ b/src/kasu/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kasu.utils\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" "PO-Revision-Date: 2016-09-28 00:24+0200\n" "Last-Translator: Christian Berg \n" "Language-Team: Kasu \n" @@ -19,175 +19,163 @@ msgstr "" "X-Generator: Poedit 1.8.9\n" "X-Translated-Using: django-rosetta 0.7.6\n" -#: src/kasu/settings.py:158 +#: .\kasu\settings.py:141 msgid "German" msgstr "Deutsch" -#: src/kasu/settings.py:158 +#: .\kasu\settings.py:141 msgid "English" msgstr "Englisch" -#: src/kasu/templates/404.html:8 +#: .\kasu\templates\404.html:8 msgid "The page your requested does not exist on this server." msgstr "Die angeforderte Seite existiert auf diesem Server nicht." -#: src/kasu/templates/base.html:22 +#: .\kasu\templates\base.html:22 msgid "Current News" msgstr "Aktuelle Neuigkeiten" -#: src/kasu/templates/base.html:24 src/kasu/templates/index.html:40 +#: .\kasu\templates\base.html:24 .\kasu\templates\index.html:40 msgid "Recent Comments" msgstr "Kürzliche Kommentare" -#: src/kasu/templates/base.html:45 +#: .\kasu\templates\base.html:45 msgid "Menu" msgstr "Menü" -#: src/kasu/templates/base.html:69 +#: .\kasu\templates\base.html:69 msgid "Current Event" msgstr "Aktuelle Veranstaltung" -#: src/kasu/templates/base.html:72 +#: .\kasu\templates\base.html:72 msgid "Since" msgstr "seit" -#: src/kasu/templates/base.html:73 src/kasu/templates/base.html:85 +#: .\kasu\templates\base.html:73 .\kasu\templates\base.html:87 msgid "Start" msgstr "Beginn" -#: src/kasu/templates/base.html:76 src/kasu/templates/base.html:88 +#: .\kasu\templates\base.html:76 .\kasu\templates\base.html:90 msgid "Location" msgstr "Ort" -#: src/kasu/templates/base.html:79 src/kasu/templates/base.html:90 +#: .\kasu\templates\base.html:81 .\kasu\templates\base.html:94 msgid "More Details" msgstr "Mehr Details" -#: src/kasu/templates/base.html:81 +#: .\kasu\templates\base.html:83 msgid "Next Event" msgstr "Nächste Veranstaltung" -#: src/kasu/templates/base.html:84 +#: .\kasu\templates\base.html:86 msgid "in" msgstr "in" -#: src/kasu/templates/base.html:93 +#: .\kasu\templates\base.html:97 msgid "Upcoming events" msgstr "Bevorstehende Veranstaltungen" -#: src/kasu/templates/base.html:143 +#: .\kasu\templates\base.html:147 msgid "Add Subpage" msgstr "Unterseite Hinzufügen" -#: src/kasu/templates/base.html:148 +#: .\kasu\templates\base.html:152 msgid "Edit Page" msgstr "Seite bearbeiten" -#: src/kasu/templates/base.html:156 +#: .\kasu\templates\base.html:160 msgid "Imprint" msgstr "Impressum" -#: src/kasu/templates/base.html:157 +#: .\kasu\templates\base.html:161 msgid "contact" msgstr "Kontakt" -#: src/kasu/templates/base.html:162 +#: .\kasu\templates\base.html:166 msgid "Language" msgstr "Sprache" -#: src/kasu/templates/base.html:171 +#: .\kasu\templates\base.html:175 msgid "Go" msgstr "Los" -#: src/kasu/templates/base.html:176 +#: .\kasu\templates\base.html:180 msgid "Logged in as" msgstr "Angemeldet als" -#: src/kasu/templates/base.html:178 +#: .\kasu\templates\base.html:182 msgid "Admin" msgstr "Admin" -#: src/kasu/templates/base.html:179 +#: .\kasu\templates\base.html:183 msgid "Logout" msgstr "Abmelden" -#: src/kasu/templates/base.html:181 +#: .\kasu\templates\base.html:185 msgid "no user logged in" msgstr "Niemand angemeldet" -#: src/kasu/templates/base.html:182 src/kasu/templates/comments/form.html:43 +#: .\kasu\templates\base.html:186 .\kasu\templates\comments\form.html:43 msgid "register" msgstr "Registrieren" -#: src/kasu/templates/base.html:183 src/kasu/templates/comments/form.html:44 +#: .\kasu\templates\base.html:187 .\kasu\templates\comments\form.html:44 msgid "login" msgstr "anmelden" -#: src/kasu/templates/base.html:185 -msgid "Login with Facebook" -msgstr "über Facebook anmelden" - -#: src/kasu/templates/base.html:187 -msgid "Login with Twitter" -msgstr "über Twitter anmelden" - -#: src/kasu/templates/base.html:189 -msgid "Login with Google" -msgstr "über Google anmelden" - -#: src/kasu/templates/comments/form.html:5 +#: .\kasu\templates\comments\form.html:5 msgid "New Comment" msgstr "Neuer Kommentar" -#: src/kasu/templates/comments/form.html:20 +#: .\kasu\templates\comments\form.html:20 msgid "now" msgstr "Jetzt" -#: src/kasu/templates/comments/form.html:25 +#: .\kasu\templates\comments\form.html:25 msgid "Preview" msgstr "Vorschau" -#: src/kasu/templates/comments/form.html:26 +#: .\kasu\templates\comments\form.html:26 msgid "Post" msgstr "Schreiben" -#: src/kasu/templates/comments/form.html:34 +#: .\kasu\templates\comments\form.html:34 msgid "not logged in" msgstr "Nicht angemeldet" -#: src/kasu/templates/comments/form.html:38 +#: .\kasu\templates\comments\form.html:38 msgid "Register now, or Login to leave a comment here." msgstr "Jetzt registrieren, oder anmelden um einen Kommentar zu schreiben." -#: src/kasu/templates/comments/list.html:2 src/kasu/templates/index.html:25 +#: .\kasu\templates\comments\list.html:2 .\kasu\templates\index.html:25 msgid "Comments" msgstr "Kommentare" -#: src/kasu/templates/comments/posted.html:4 -#: src/kasu/templates/comments/posted.html:7 +#: .\kasu\templates\comments\posted.html:4 +#: .\kasu\templates\comments\posted.html:7 msgid "Thank you for your comment" msgstr "Danke für deinen Kommentar." -#: src/kasu/templates/comments/preview.html:4 -#: src/kasu/templates/comments/preview.html:6 +#: .\kasu\templates\comments\preview.html:4 +#: .\kasu\templates\comments\preview.html:6 msgid "Preview your comment" msgstr "Vorschau deines Kommentars" -#: src/kasu/templates/comments/preview.html:10 +#: .\kasu\templates\comments\preview.html:10 msgid "Please correct the error below" msgid_plural "Please correct the errors below" msgstr[0] "Bitte den Fehler weiter unten beheben" msgstr[1] "Bitte die Fehler weiter unten beheben" -#: src/kasu/templates/index.html:4 +#: .\kasu\templates\index.html:4 msgid "traditional Asian game culture" msgstr "traditionelle asiatische Spielkultur" -#: src/kasu/templates/index.html:33 +#: .\kasu\templates\index.html:33 msgid "Read More" msgstr "Mehr lesen" -#: src/kasu/templates/index.html:47 +#: .\kasu\templates\index.html:47 #, python-format msgid "" "\n" @@ -204,26 +192,35 @@ msgstr "" " \n" " " -#: src/kasu/templates/index.html:59 +#: .\kasu\templates\index.html:59 msgid "Kasu in the social network" msgstr "Kasu im sozialem Netzwerk" -#: src/kasu/templates/index.html:62 src/kasu/templates/index.html:65 +#: .\kasu\templates\index.html:62 .\kasu\templates\index.html:65 msgid "Visit us on" msgstr "Besuche uns auf" -#: src/kasu/templates/index.html:74 +#: .\kasu\templates\index.html:74 msgid "Add Article" msgstr "Artikel hinzufügen" -#: src/kasu/templates/paginator.html:8 +#: .\kasu\templates\paginator.html:8 msgid "Previous" msgstr "Vorherige" -#: src/kasu/templates/paginator.html:20 +#: .\kasu\templates\paginator.html:20 msgid "Next" msgstr "Nächste" +#~ msgid "Login with Facebook" +#~ msgstr "über Facebook anmelden" + +#~ msgid "Login with Twitter" +#~ msgstr "über Twitter anmelden" + +#~ msgid "Login with Google" +#~ msgstr "über Google anmelden" + #~ msgid "United Kingdom" #~ msgstr "Vereinigtes Königreich" diff --git a/src/kasu/settings.py b/src/kasu/settings.py index 9af87a5..3f3f30f 100644 --- a/src/kasu/settings.py +++ b/src/kasu/settings.py @@ -49,7 +49,6 @@ PREREQ_APPS = [ 'ckeditor', 'ckeditor_uploader', 'easy_thumbnails', - 'social_django', ] PROJECT_APPS = [ 'kasu', @@ -103,8 +102,6 @@ TEMPLATES = [ 'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages', 'events.context_processors.events_overview', - 'social_django.context_processors.backends', - 'social_django.context_processors.login_redirect' ], 'loaders': [ ('django.template.loaders.cached.Loader', [ @@ -132,24 +129,10 @@ DEFAULT_FROM_EMAIL = "" # Login Settings ACCOUNT_ACTIVATION_DAYS = 5 AUTH_USER_MODEL = 'membership.Membership' -AUTHENTICATION_BACKENDS = ('social_core.backends.facebook.FacebookOAuth2', - 'social_core.backends.google.GoogleOAuth2', - 'social_core.backends.twitter.TwitterOAuth', - 'django.contrib.auth.backends.ModelBackend',) +AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) LOGIN_URL = '/membership/login/' LOGIN_ERROR_URL = '/membership/login/error/' LOGIN_REDIRECT_URL = '/users/' -SOCIAL_AUTH_CHANGE_SIGNAL_ONLY = False -SOCIAL_AUTH_ENABLED_BACKENDS = ('facebook-oauth2', 'google-oauth2', 'twitter') -SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/users/' -SOCIAL_AUTH_SLUGIFY_USERNAMES = True -SOCIAL_AUTH_FACEBOOK_KEY = '' -SOCIAL_AUTH_FACEBOOK_SECRET = '' -SOCIAL_AUTH_FACEBOOK_SCOPE = ['user_about_me', 'email'] -SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '' -SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '' -SOCIAL_AUTH_TWITTER_KEY = '' -SOCIAL_AUTH_TWITTER_SECRET = '' # Localization USE_I18N = True diff --git a/src/kasu/static/js/piwik.js b/src/kasu/static/js/piwik.js index 23d43a5..5ebbf1a 100644 --- a/src/kasu/static/js/piwik.js +++ b/src/kasu/static/js/piwik.js @@ -4,10 +4,12 @@ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { - var u="//kasu.at/piwik/"; + var u="/piwik/"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', '1']); + _paq.push(['disableCookies']); + _paq.push(['trackPageView']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); -/* End Piwik Code */ \ No newline at end of file +/* End Piwik Code */ diff --git a/src/kasu/templates/base.html b/src/kasu/templates/base.html index 49f65ce..14e5dff 100644 --- a/src/kasu/templates/base.html +++ b/src/kasu/templates/base.html @@ -73,7 +73,9 @@
  • {% trans "Start" %}:
  • -
  • {% trans "Location" %}: {{ current_event.location }}
  • +
  • {% trans "Location" %}: {{ current_event.location }} + - {{current_event.location.street_address}}, {{current_event.location.postal_code}} {{current_event.location.locality}} +
  • @@ -85,7 +87,9 @@
  • {% trans "Start" %}:
  • -
  • {% trans "Location" %}: {{ next_event.location }}
  • +
  • {% trans "Location" %}: {{ next_event.location }} + - {{next_event.location.street_address}}, {{next_event.location.postal_code}} {{next_event.location.locality}} +
  • @@ -181,12 +185,6 @@ {% trans "no user logged in" %} - {% trans "register" %} {% trans "login" %} - - - {% endif %} diff --git a/src/kasu/templates/form.html b/src/kasu/templates/form.html index 8175adc..b3a070d 100644 --- a/src/kasu/templates/form.html +++ b/src/kasu/templates/form.html @@ -5,8 +5,8 @@ {{ field }} - {% if field.help_text and not field.field.widget.input_type %} - {{field.help_text}} + {% if field.field.widget.input_type == 'checkbox' %} + {% elif field.help_text %}

    {{field.help_text}}

    {% endif %} diff --git a/src/kasu/urls.py b/src/kasu/urls.py index 05be4a4..44de711 100644 --- a/src/kasu/urls.py +++ b/src/kasu/urls.py @@ -62,7 +62,6 @@ urlpatterns = [ # Ignore PyLintBear (C0103) url(r'^(?P[\-\d\w\/]+)\.html$', views.PageHtml.as_view(), name='view-page'), url(r'^(?P[\-\d\w\/]+)\.pdf$', views.PagePdf.as_view()), - url('', include('social_django.urls', namespace='social')) ] if settings.DEBUG: diff --git a/src/mahjong_ranking/locale/de/LC_MESSAGES/django.mo b/src/mahjong_ranking/locale/de/LC_MESSAGES/django.mo index 588ddda..7fb95f4 100644 Binary files a/src/mahjong_ranking/locale/de/LC_MESSAGES/django.mo and b/src/mahjong_ranking/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/mahjong_ranking/locale/de/LC_MESSAGES/django.po b/src/mahjong_ranking/locale/de/LC_MESSAGES/django.po index ee79ef1..ba8ca05 100644 --- a/src/mahjong_ranking/locale/de/LC_MESSAGES/django.po +++ b/src/mahjong_ranking/locale/de/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: kasu.mahjong_ranking\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" -"PO-Revision-Date: 2018-01-12 15:23+0105\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" +"PO-Revision-Date: 2018-05-08 00:20+0105\n" "Last-Translator: b'Christian Berg '\n" "Language-Team: Kasu \n" "Language: de\n" @@ -17,387 +17,390 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.9\n" -"X-Translated-Using: django-rosetta 0.7.14\n" +"X-Translated-Using: django-rosetta 0.8.1\n" -#: src/mahjong_ranking/admin.py:24 +#: .\mahjong_ranking\admin.py:24 msgid "Recalculate" msgstr "Neuberechnen" -#: src/mahjong_ranking/admin.py:34 +#: .\mahjong_ranking\admin.py:34 msgid "Confirm" msgstr "Bestätigen" -#: src/mahjong_ranking/admin.py:44 +#: .\mahjong_ranking\admin.py:44 msgid "Set unconfirmed" msgstr "Als unbestätigt markieren" -#: src/mahjong_ranking/forms.py:22 +#: .\mahjong_ranking\forms.py:22 msgid "start" msgstr "Beginn" -#: src/mahjong_ranking/models.py:91 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:14 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:13 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:15 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:15 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:10 +#: .\mahjong_ranking\models.py:91 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:14 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:13 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:15 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:15 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:10 msgid "Start" msgstr "Beginn" -#: src/mahjong_ranking/models.py:92 +#: .\mahjong_ranking\models.py:92 msgid "This is crucial to get the right Hanchans that scores" msgstr "Wichtig damit die richtigen Hanchans in die Wertung kommen." -#: src/mahjong_ranking/models.py:99 +#: .\mahjong_ranking\models.py:99 msgid "Player 1" msgstr "Spieler 1" -#: src/mahjong_ranking/models.py:100 src/mahjong_ranking/models.py:102 -#: src/mahjong_ranking/models.py:119 src/mahjong_ranking/models.py:121 -#: src/mahjong_ranking/models.py:138 src/mahjong_ranking/models.py:140 -#: src/mahjong_ranking/models.py:157 src/mahjong_ranking/models.py:159 -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:19 -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:21 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:16 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:19 -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:35 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:32 +#: .\mahjong_ranking\models.py:100 .\mahjong_ranking\models.py:102 +#: .\mahjong_ranking\models.py:119 .\mahjong_ranking\models.py:121 +#: .\mahjong_ranking\models.py:138 .\mahjong_ranking\models.py:140 +#: .\mahjong_ranking\models.py:157 .\mahjong_ranking\models.py:159 +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:19 +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:21 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:16 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:19 +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:30 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:31 msgid "Score" msgstr "Punkte" -#: src/mahjong_ranking/models.py:112 src/mahjong_ranking/models.py:131 -#: src/mahjong_ranking/models.py:150 src/mahjong_ranking/models.py:169 -#: src/mahjong_ranking/models.py:171 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:20 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:18 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:17 +#: .\mahjong_ranking\models.py:112 .\mahjong_ranking\models.py:131 +#: .\mahjong_ranking\models.py:150 .\mahjong_ranking\models.py:169 +#: .\mahjong_ranking\models.py:171 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:20 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:18 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:17 msgid "Comment" msgstr "Kommentar" -#: src/mahjong_ranking/models.py:118 +#: .\mahjong_ranking\models.py:118 msgid "Player 2" msgstr "Spieler 2" -#: src/mahjong_ranking/models.py:137 +#: .\mahjong_ranking\models.py:137 msgid "Player 3" msgstr "Spieler 3" -#: src/mahjong_ranking/models.py:156 +#: .\mahjong_ranking\models.py:156 msgid "Player 4" msgstr "Spieler 4" -#: src/mahjong_ranking/models.py:173 +#: .\mahjong_ranking\models.py:173 msgid "Has been Confirmed" msgstr "Wurde bestätigt" -#: src/mahjong_ranking/models.py:174 +#: .\mahjong_ranking\models.py:174 msgid "Only valid and confirmed Hanchans will be counted in the rating." msgstr "Nur gültige und bestätigte Hanchans kommen in die Wertung." -#: src/mahjong_ranking/models.py:179 src/mahjong_ranking/models.py:607 -#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:29 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:63 +#: .\mahjong_ranking\models.py:179 .\mahjong_ranking\models.py:607 +#: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:29 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:63 msgid "Season" msgstr "Saison" -#: src/mahjong_ranking/models.py:184 +#: .\mahjong_ranking\models.py:184 msgid "Hanchan" msgstr "Hanchan" -#: src/mahjong_ranking/models.py:185 -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:17 +#: .\mahjong_ranking\models.py:185 +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:17 msgid "Hanchans" msgstr "Hanchans" -#: src/mahjong_ranking/models.py:188 +#: .\mahjong_ranking\models.py:188 msgid "Hanchan from {0:%Y-%m-%d} at {0:%H:%M} with {1}" msgstr "Hanchan vom {0:%Y-%m-%d} um {0:%H:%M} mit {1}" -#: src/mahjong_ranking/models.py:215 +#: .\mahjong_ranking\models.py:215 #, python-format msgid "%s can't attend the same game multiple times" msgstr "%s kann an einem Spiel nicht mehrfach teilnehmen." -#: src/mahjong_ranking/models.py:223 +#: .\mahjong_ranking\models.py:223 msgid "Games in the future may not be added, Dr. Brown" msgstr "Spiele aus der Zukunft dürfen noch nicht erfasst werden. Dr. Brown." -#: src/mahjong_ranking/models.py:225 +#: .\mahjong_ranking\models.py:225 msgid "Only games during the event are allowed" msgstr "Nur Spiele während der Veranstaltung zählen." -#: src/mahjong_ranking/models.py:228 +#: .\mahjong_ranking\models.py:228 msgid "Gamescore is lower then 100.000 Pt." msgstr "Spielstand ist weniger als 100.000 Punkte" -#: src/mahjong_ranking/models.py:230 +#: .\mahjong_ranking\models.py:230 msgid "Gamescore is over 100.000 Pt." msgstr "Spielstand ist über 100.000 Punkte." -#: src/mahjong_ranking/models.py:362 +#: .\mahjong_ranking\models.py:362 msgid "Kyū/Dan Ranking" msgstr "Kyū/Dan Wertung" -#: src/mahjong_ranking/models.py:363 +#: .\mahjong_ranking\models.py:363 msgid "Kyū/Dan Rankings" msgstr "Kyū/Dan Wertungen" -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:11 -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:55 -#| msgid "Edit Hanchan" +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:11 +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:55 msgid "Edit Hanchans" msgstr "Hanchans bearbeiten" -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:82 -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:56 -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:52 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:14 -msgid "Add Hanchan" -msgstr "Hanchan hinzufügen" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:84 -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:37 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:33 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:44 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:33 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:41 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:52 -msgid "Delete Hanchan" -msgstr "Hanchan löschen" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:94 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:71 -msgid "back" -msgstr "Zurück" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:95 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:72 -msgid "save" -msgstr "Speichern" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:7 -msgid "Played Hanchans" -msgstr "Gespielte Hanchans" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:18 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:15 -msgid "Place" -msgstr "Platz" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:21 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:18 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:17 -msgid "Dan Points" -msgstr "Dan Punkte" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:23 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:20 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:16 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:18 -msgid "Kyu Points" -msgstr "Kyu Punkte" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:43 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:14 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:47 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:36 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:44 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:55 -msgid "Edit Hanchan" -msgstr "Hanchan bearbeiten" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:48 -msgid "No Hanchan has been added to this event yet." -msgstr "Für diese Veranstaltung wurde noch keine Hanchan eingetragen." - -#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:54 -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:51 -msgid "Edit Event" -msgstr "Veranstaltung bearbeiten" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:5 -msgid "Tournament Ranking" -msgstr "Turnierwertung" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:12 -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:30 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:23 -msgid "Rank" -msgstr "Rang" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:13 -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:17 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:24 -msgid "Avatar" -msgstr "Avatar" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:14 -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:20 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:25 -msgid "Nickname" -msgstr "Spitzname" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:15 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:26 -msgid "Name" -msgstr "Name" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:16 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:27 -msgid "Average" -msgstr "Durchschnitt" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:20 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:15 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:15 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:16 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:16 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:31 -msgid "Placement" -msgstr "Platzierung" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:22 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:33 -msgid "count" -msgstr "Anzahl" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:23 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:34 -msgid "good" -msgstr "gut" - -#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:24 -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:35 -msgid "won" -msgstr "gewonnen" - -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:39 -msgid "Cancel" -msgstr "Abbruch" - -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:40 -msgid "Delete" -msgstr "Löschen" - -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:18 -msgid "Player" -msgstr "Spieler" - -#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:58 +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:49 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:58 msgid "Total" msgstr "Total" -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:9 -msgid "Player List" -msgstr "Spieler Liste" +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:51 +msgid "Difference" +msgstr "Unterschied" -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:25 -msgid "Full Name" -msgstr "Voller Name" +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:103 +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:56 +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:52 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:14 +msgid "Add Hanchan" +msgstr "Hanchan hinzufügen" -#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:40 +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:105 +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:37 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:33 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:44 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:33 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:41 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:52 +msgid "Delete Hanchan" +msgstr "Hanchan löschen" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:118 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:71 +msgid "back" +msgstr "Zurück" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:119 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:72 +msgid "save" +msgstr "Speichern" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:7 +msgid "Played Hanchans" +msgstr "Gespielte Hanchans" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:18 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:15 +msgid "Place" +msgstr "Platz" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:21 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:18 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:17 +msgid "Dan Points" +msgstr "Dan Punkte" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:23 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:20 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:16 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:18 +msgid "Kyu Points" +msgstr "Kyu Punkte" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:43 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:14 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:47 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:36 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:44 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:55 +msgid "Edit Hanchan" +msgstr "Hanchan bearbeiten" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:48 +msgid "No Hanchan has been added to this event yet." +msgstr "Für diese Veranstaltung wurde noch keine Hanchan eingetragen." + +#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:54 +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:51 +msgid "Edit Event" +msgstr "Veranstaltung bearbeiten" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:5 +msgid "Tournament Ranking" +msgstr "Turnierwertung" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:12 +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:25 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:23 +msgid "Rank" +msgstr "Rang" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:13 +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:17 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:24 +msgid "Avatar" +msgstr "Avatar" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:14 +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:20 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:25 +msgid "Nickname" +msgstr "Spitzname" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:15 +msgid "Name" +msgstr "Name" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:16 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:26 +msgid "Average" +msgstr "Durchschnitt" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:20 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:15 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:15 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:16 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:16 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:30 +msgid "Placement" +msgstr "Platzierung" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:22 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:32 +msgid "count" +msgstr "Anzahl" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:23 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:33 +msgid "good" +msgstr "gut" + +#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:24 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:34 +msgid "won" +msgstr "gewonnen" + +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:39 +msgid "Cancel" +msgstr "Abbruch" + +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:40 +msgid "Delete" +msgstr "Löschen" + +#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:18 +msgid "Player" +msgstr "Spieler" + +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:9 +#| msgid "Player List" +msgid "Players list" +msgstr "Spielerliste" + +#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:35 msgid "Games Total" msgstr "Spiele total" -#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:3 +#: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:3 msgid "Latest Hanchans" msgstr "Letzten Hanchans" -#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:15 +#: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:15 msgid "Latest Events" msgstr "Letzte Veranstaltungen" -#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:27 +#: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:27 msgid "Ladder Archive" msgstr "Ladder Archiv" -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:5 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:5 msgid "Dan Score for" msgstr "Dan Wertung für" -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:8 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:8 msgid "Hanchans that apply to the Dan Score" msgstr "Hanchans welche zur Dan Wertung zählen" -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:12 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:13 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:13 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:12 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:13 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:13 msgid "Date" msgstr "Datum" -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:13 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:12 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:14 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:14 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:13 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:12 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:14 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:14 msgid "Event" msgstr "Veranstaltung" -#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:16 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:14 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:17 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:17 +#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:16 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:14 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:17 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:17 msgid "Players" msgstr "Spieler" -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:6 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:6 msgid "Unconfirmed Hanchans from" msgstr "Nicht bestätigte Hanchans von" -#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:9 +#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:9 msgid "Invalid hanchans with" msgstr "Ungültige Hanchans mit" -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:6 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:6 msgid "Kyu Score for" msgstr "Kyu Wertung für" -#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:9 +#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:9 msgid "Hanchans that apply to the Kyu Score" msgstr "Hanchans welche zur Kyu Wertung zählen" -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:4 -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:5 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:4 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:5 msgid "Ladder Score for" msgstr "Ladder Wertung für" -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:8 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:8 msgid "Hanchans that apply to the Ladder Score" msgstr "Hanchans welche in der Ladder zählen" -#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:71 +#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:71 msgid "Go" msgstr "Los" -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:11 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:11 msgid "End" msgstr "Ende" -#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:12 +#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:12 msgid "Participants" msgstr "Teilnehmer" -#: src/mahjong_ranking/views.py:104 +#: .\mahjong_ranking\views.py:104 #, python-format msgid "%s has been updated successfully." msgstr "%s wurde erfolgreich aktualisiert." -#: src/mahjong_ranking/views.py:107 +#: .\mahjong_ranking\views.py:107 #, python-format msgid "%s has been added successfully. You can now add a new one." msgstr "%s wurde erfolgreich hinzugefügt. Du kannst eine neue eintragen." -#: src/mahjong_ranking/views.py:207 +#: .\mahjong_ranking\views.py:207 msgid "No user found matching the name {}" msgstr "Kein Benutzer mit dem Namen %s gefunden" +#~ msgid "Full Name" +#~ msgstr "Voller Name" + #~ msgid "Event does not exist" #~ msgstr "Veranstaltung existiert nicht" diff --git a/src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html b/src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html index 7b09151..b4cd34f 100755 --- a/src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html +++ b/src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html @@ -1,12 +1,12 @@ {% extends "mahjong_ranking/page.html" %} {% load i18n thumbnail %} -{% block title %}{% trans 'Player List' %}{% endblock %} +{% block title %}{% trans 'Players list' %}{% endblock %} {% block extra_head %} {% endblock %} -{% block teaser %}

    {% trans 'Player List' %}

    {% endblock %} +{% block teaser %}

    {% trans 'Players list' %}

    {% endblock %} {% block redbox %}{% include 'mahjong_ranking/ladder_redbox.html' %}{% endblock %} @@ -20,11 +20,6 @@ {% trans 'Nickname' %} - - - {% trans 'Full Name' %} - - {% trans 'Rank' %} @@ -51,7 +46,6 @@ width="70" height="70" alt="" /> {{ ranking.user }} - {% if user.is_authenticated %}{{ranking.user.last_name}} {{ranking.user.first_name}}{% else %}---{% endif %} {% if ranking.dan %} {{ranking.dan}}. Dan {% else %} {{ranking.kyu}} Kyu {% endif %} {% if ranking.dan %} {{ranking.dan_points}} {% else %} {{ranking.kyu_points}} {% endif %} {{ranking.hanchan_count}} @@ -59,4 +53,4 @@ {% endfor %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html b/src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html index 0d2792d..e8ed7ab 100755 --- a/src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html +++ b/src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html @@ -23,7 +23,6 @@ {% trans "Rank" %} {% trans "Avatar" %} {% trans "Nickname" %} - {% trans "Name" %} {% trans 'Average' %} Hanchans @@ -42,7 +41,6 @@ src="{% thumbnail player.user.avatar|default:'unknown_profile.jpg' 'avatar' %}" width="70" height="70" class="avatar" alt=""/> {{player.user}} - {% if user.is_authenticated %}{{player.user.last_name}} {{player.user.first_name}}{% else %}---{% endif %} {{player.avg_placement|floatformat:2 }} {{player.avg_score|floatformat:0|intcomma }} {{player.hanchan_count}} @@ -57,4 +55,4 @@ {% endfor %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/maistar_ranking/locale/de/LC_MESSAGES/django.mo b/src/maistar_ranking/locale/de/LC_MESSAGES/django.mo index 050fa34..c9540a3 100644 Binary files a/src/maistar_ranking/locale/de/LC_MESSAGES/django.mo and b/src/maistar_ranking/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/maistar_ranking/locale/de/LC_MESSAGES/django.po b/src/maistar_ranking/locale/de/LC_MESSAGES/django.po index 67ae8c4..5a51d2a 100644 --- a/src/maistar_ranking/locale/de/LC_MESSAGES/django.po +++ b/src/maistar_ranking/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kasu.mahjong_ranking\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" "PO-Revision-Date: 2016-09-28 00:24+0200\n" "Last-Translator: Christian Berg \n" "Language-Team: Kasu \n" @@ -19,208 +19,208 @@ msgstr "" "X-Generator: Poedit 1.8.9\n" "X-Translated-Using: django-rosetta 0.7.2\n" -#: src/maistar_ranking/admin.py:24 +#: .\maistar_ranking\admin.py:24 msgid "Recalculate" msgstr "Neuberechnen" -#: src/maistar_ranking/forms.py:35 +#: .\maistar_ranking\forms.py:35 #, python-format msgid "%s may only participate once." msgstr "%s darf nur einmal teilnehmen." -#: src/maistar_ranking/models.py:21 +#: .\maistar_ranking\models.py:21 msgid "Comment" msgstr "Kommentar" -#: src/maistar_ranking/models.py:24 +#: .\maistar_ranking\models.py:24 msgid "Player 1" msgstr "Spieler 1" -#: src/maistar_ranking/models.py:26 src/maistar_ranking/models.py:33 -#: src/maistar_ranking/models.py:40 src/maistar_ranking/models.py:47 -#: src/maistar_ranking/models.py:54 src/maistar_ranking/models.py:61 -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:19 +#: .\maistar_ranking\models.py:26 .\maistar_ranking\models.py:33 +#: .\maistar_ranking\models.py:40 .\maistar_ranking\models.py:47 +#: .\maistar_ranking\models.py:54 .\maistar_ranking\models.py:61 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:19 msgid "Score" msgstr "Punkte" -#: src/maistar_ranking/models.py:31 +#: .\maistar_ranking\models.py:31 msgid "Player 2" msgstr "Spieler 2" -#: src/maistar_ranking/models.py:38 +#: .\maistar_ranking\models.py:38 msgid "Player 3" msgstr "Spieler 3" -#: src/maistar_ranking/models.py:45 +#: .\maistar_ranking\models.py:45 msgid "Player 4" msgstr "Spieler 4" -#: src/maistar_ranking/models.py:52 +#: .\maistar_ranking\models.py:52 msgid "Player 5" msgstr "Spieler 5" -#: src/maistar_ranking/models.py:59 +#: .\maistar_ranking\models.py:59 msgid "Player 6" msgstr "Spieler 6" -#: src/maistar_ranking/models.py:65 +#: .\maistar_ranking\models.py:65 msgid "Has been confirmed" msgstr "Wurde bestätigt" -#: src/maistar_ranking/models.py:67 +#: .\maistar_ranking\models.py:67 msgid "the game only counts whe it has been confirmed" msgstr "das Spiel zählt nur wenn es bestätigt wurde" -#: src/maistar_ranking/models.py:70 src/maistar_ranking/models.py:153 -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:6 -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:4 -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:72 +#: .\maistar_ranking\models.py:70 .\maistar_ranking\models.py:153 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:6 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:4 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:72 msgid "Season" msgstr "Saison" -#: src/maistar_ranking/models.py:80 +#: .\maistar_ranking\models.py:80 msgid "Mai-Star Game with {0} from {1:%Y-%m-%d}" msgstr "Mai-Star Spiel mit {0} vom {1:%Y-%m-%d}" -#: src/maistar_ranking/templates/maistar_ranking/game_form.html:5 -#: src/maistar_ranking/templates/maistar_ranking/game_form.html:16 -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:27 -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:44 +#: .\maistar_ranking\templates\maistar_ranking\game_form.html:5 +#: .\maistar_ranking\templates\maistar_ranking\game_form.html:16 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:27 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:44 msgid "Edit Game" msgstr "Spiel bearbeiten" -#: src/maistar_ranking/templates/maistar_ranking/game_form.html:5 -#: src/maistar_ranking/templates/maistar_ranking/game_form.html:16 -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:41 +#: .\maistar_ranking\templates\maistar_ranking\game_form.html:5 +#: .\maistar_ranking\templates\maistar_ranking\game_form.html:16 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:41 msgid "Add Game" msgstr "Spiel hinzufügen" -#: src/maistar_ranking/templates/maistar_ranking/game_form.html:76 +#: .\maistar_ranking\templates\maistar_ranking\game_form.html:76 msgid "Back" msgstr "Zurück" -#: src/maistar_ranking/templates/maistar_ranking/game_form.html:77 +#: .\maistar_ranking\templates\maistar_ranking\game_form.html:77 msgid "Save" msgstr "Speichern" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:4 -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:6 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:4 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:6 msgid "Mai-Star Games" msgstr "Mai-Star Spiele" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:7 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:7 msgid "Played Mai-Star Games" msgstr "Gespielte Mai-Star Spiele" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:11 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:11 msgid "Game" msgstr "Spiel" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:14 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:14 msgid "Place" msgstr "Platz" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:19 -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:36 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:19 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:36 msgid "Points" msgstr "Punkte" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:24 -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:41 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:24 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:41 msgid "Delete Game" msgstr "Spiel löschen" -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:33 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:33 msgid "No Mai-Star games have been added to this event yet." msgstr "Für diese Veranstaltung wurden noch keine Mai-Star Spiele erfasst." -#: src/maistar_ranking/templates/maistar_ranking/game_list.html:40 +#: .\maistar_ranking\templates\maistar_ranking\game_list.html:40 msgid "Edit Event" msgstr "Veranstaltung bearbeiten" -#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:4 -#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:10 +#: .\maistar_ranking\templates\maistar_ranking\hanchan_confirm_delete.html:4 +#: .\maistar_ranking\templates\maistar_ranking\hanchan_confirm_delete.html:10 msgid "Delete game" msgstr "Spiel löschen" -#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:13 +#: .\maistar_ranking\templates\maistar_ranking\hanchan_confirm_delete.html:13 msgid "Cancel" msgstr "Abbrechen" -#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:14 +#: .\maistar_ranking\templates\maistar_ranking\hanchan_confirm_delete.html:14 msgid "Delete" msgstr "Löschen" -#: src/maistar_ranking/templates/maistar_ranking/page.html:5 +#: .\maistar_ranking\templates\maistar_ranking\page.html:5 msgid "Archive" msgstr "Archiv" -#: src/maistar_ranking/templates/maistar_ranking/page.html:7 +#: .\maistar_ranking\templates\maistar_ranking\page.html:7 msgid "Add Event" msgstr "Veranstaltung hinzufügen" -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:4 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:4 msgid "Ladder Score for" msgstr "Ladder Wertung für" -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:9 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:9 msgid "Mai-Star Games with" msgstr "Mai-Star Spiele mit" -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:14 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:14 msgid "Date" msgstr "Datum" -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:15 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:15 msgid "Event" msgstr "Veranstaltung" -#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:16 +#: .\maistar_ranking\templates\maistar_ranking\player_game_list.html:16 msgid "Players" msgstr "Spieler" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:4 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:4 msgid "Mai-Star Ranking" msgstr "Mai-Star Platzierung" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:10 -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:18 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:10 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:18 msgid "Placement" msgstr "Platzierung" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:11 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:11 msgid "Avatar" msgstr "Avatar" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:12 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:12 msgid "Nickname" msgstr "Spitzname" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:13 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:13 msgid "Name" msgstr "Name" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:14 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:14 msgid "Average" msgstr "Durchschnitt" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:15 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:15 msgid "Games" msgstr "Spiele" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:20 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:20 msgid "count" msgstr "Anzahl" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:21 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:21 msgid "good" msgstr "Gut" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:22 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:22 msgid "won" msgstr "Gewonnen" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:43 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:43 msgid "" "Unfortunately, nobody has it been done in the ranking.\n" " A player must have 6 games done, to be added to the ranking." @@ -229,15 +229,15 @@ msgstr "" "als 6 Spiele innerhalb einer Saison absolviert haben, werden für das " "Endergebnis nicht gewertet." -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:52 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:52 msgid "Latest Games" msgstr "Letzten Spiele" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:63 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:63 msgid "Latest Events" msgstr "Letzten Veranstaltungen" -#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:70 +#: .\maistar_ranking\templates\maistar_ranking\ranking_list.html:70 msgid "Ladder Archive" msgstr "Archiv" diff --git a/src/membership/admin.py b/src/membership/admin.py index d2daa27..70a8135 100644 --- a/src/membership/admin.py +++ b/src/membership/admin.py @@ -1,11 +1,11 @@ """ Admin Interface to manage the memberships.""" # import stuff we need from django -from django.contrib import admin +from django.contrib import admin, messages from django.contrib.auth.admin import UserAdmin, GroupAdmin from django.contrib.auth.models import Group +from django.core.exceptions import PermissionDenied from django.utils.translation import ugettext as _ from easy_thumbnails import fields, widgets - from membership.models import Membership, ActivationRequest @@ -16,13 +16,14 @@ def activate_user(modeladmin, request, queryset): :param request: An HttpRequest representing the current request. :param queryset: A QuerySet containing the objects selected by the user. """ - [activation.activate() for activation in queryset ] + [activation.activate() for activation in queryset] activate_user.short_description = _('Activate selected User') -def cleanup_activation(modeladmin, request, queryset): # Ignore PyLintBear (W0613) +def cleanup_activation(modeladmin, request, + queryset): # Ignore PyLintBear (W0613) """Delete every selected activation request that has been expired. :param modeladmin: The ModelAdmin that triggered this action. @@ -38,6 +39,33 @@ cleanup_activation.short_description = _( "Cleanup selected Activation Requests") +def clear_personal_data(modeladmin, request, queryset): + """deactivates the account and removes all personal user information. + + :param modeladmin: The ModelAdmin that triggered this action. + :param request: An HttpRequest representing the current request. + :param queryset: A QuerySet containing the objects selected by the user. + """ + cleared_memberships = 0 + if not modeladmin.has_delete_permission(request): + raise PermissionDenied + for membership in queryset: + if membership.membership == False: + [ setattr(membership, fieldname, None) for fieldname in membership.nullable_personal_data ] + [ setattr(membership, fieldname, "") for fieldname in membership.blankable_personal_data ] + membership.is_active = False + membership.confirmed = False + membership.membership = False + membership.save() + cleared_memberships += 1 + else: + modeladmin.message_user(request, _("Can't remove personal data from active member %s.") % membership.username, messages.ERROR) + if cleared_memberships > 0: + modeladmin.message_user(request, _("Cleared %d personal data profiles.") % cleared_memberships, messages.INFO) + +clear_personal_data.short_description = _("Clear personal Data") + + class ProxyGroup(Group): """A Proxy to list Usergroups from django.contrib.auth here.""" @@ -50,6 +78,8 @@ class ProxyGroup(Group): class MembershipAdmin(UserAdmin): """Admin interface to manage membership. e.g. users.""" + actions = [clear_personal_data, ] + formfield_overrides = { fields.ThumbnailerImageField: { 'widget': widgets.ImageClearableFileInput}, @@ -62,9 +92,9 @@ class MembershipAdmin(UserAdmin): 'is_active', 'membership', 'confirmed', - 'paid_until', + 'last_login', ) - list_editable = ('confirmed', 'paid_until',) + list_editable = ('confirmed', ) list_display_links = ('username',) fieldsets = ( (None, {'fields': (('username', 'password'), 'gender', 'avatar', diff --git a/src/membership/forms.py b/src/membership/forms.py index 2214837..6126566 100644 --- a/src/membership/forms.py +++ b/src/membership/forms.py @@ -3,16 +3,16 @@ Created on 03.10.2011 @author: Christian """ - +from datetime import date, timedelta from captcha.fields import ReCaptchaField from django import forms from django.conf import settings from django.contrib import auth from django.contrib.sites.models import Site from django.utils.translation import ugettext_lazy as _ - from utils.massmailer import MassMailer from . import models +from content.models import Page class MembershipForm(forms.ModelForm): @@ -25,6 +25,10 @@ class MembershipForm(forms.ModelForm): help_text=_('Input format: yyyy-mm-dd') ) email = forms.EmailField(label=_('Email'), required=True) + required_membership_fields = ( + 'first_name', 'last_name', 'birthday', + 'street_name', 'post_code', 'city' + ) class Meta: """get the user model dyamicly""" @@ -35,36 +39,22 @@ class MembershipForm(forms.ModelForm): 'post_code', 'city' ) - def clean_birthday(self): - """If the user wants to be a member the birthday field is mandatory.""" - if self.cleaned_data['membership'] \ - and not self.cleaned_data['birthday']: - raise forms.ValidationError(_('For your membership, we need this. \ - Please fill out this field yet.')) - return self.cleaned_data['birthday'] - - def clean_street_name(self): - """If the user wants to be a member the address is mandatory.""" - if self.cleaned_data['membership'] \ - and not self.cleaned_data['street_name']: - raise forms.ValidationError(_('For your membership, we need this. \ - Please fill out this field yet.')) - return self.cleaned_data['street_name'] - - def clean_post_code(self): - """If the user wants to be a member the address is mandatory.""" - if self.cleaned_data['membership'] \ - and not self.cleaned_data['post_code']: - raise forms.ValidationError(_('For your membership, we need this. \ - Please fill out this field yet.')) - return self.cleaned_data['post_code'] - - def clean_city(self): - """If the user wants to be a member the address is mandatory.""" - if self.cleaned_data['membership'] and not self.cleaned_data['city']: - raise forms.ValidationError(_('For your membership, we need this. \ - Please fill out this field yet.')) - return self.cleaned_data['city'] + def clean(self): + cleaned_data = super().clean() + errormsg = _('For your membership, we need this. \ + Please fill out this field yet.') + membership = cleaned_data.get('membership') + for fieldname in self.required_membership_fields: + if membership and not cleaned_data.get(fieldname): + self.add_error(fieldname, errormsg) + if membership and cleaned_data.get('birthday'): + birthday = cleaned_data.get('birthday') + today = date.today() + age = today.year - birthday.year - ( + (today.month, today.day) < (birthday.month, birthday.day)) + if age < 16: + self.add_error('birthday', + 'Midestalter für Mitlieder ist 16 Jahre!') class RegistrationForm(MembershipForm): @@ -78,6 +68,18 @@ class RegistrationForm(MembershipForm): widget=forms.PasswordInput(), label=_('password')) password2 = forms.CharField( widget=forms.PasswordInput(), label=_('password (again)')) + privacy_policy = forms.BooleanField( + label=_('Privacy policy'), + help_text=_( + 'I have read and understood the privacy policy') % + Page.objects.get(slug='privacypolicy').get_absolute_url()) + membership = forms.BooleanField( + label=_('Membership'), + help_text=_( + 'Yes, I confirm that I am in agreement with the ' + 'statutes and would like to become a member.') % + Page.objects.get(slug='statutes').get_absolute_url()) + recaptcha = ReCaptchaField() class Meta: @@ -86,7 +88,7 @@ class RegistrationForm(MembershipForm): fields = ('first_name', 'last_name', 'username', 'email', 'username', 'gender', 'first_name', 'last_name', 'email', 'avatar', - 'website', 'membership', 'birthday', 'telephone', + 'membership', 'birthday', 'telephone', 'street_name', 'post_code', 'city' ) @@ -122,7 +124,7 @@ class RegistrationForm(MembershipForm): def save(self, commit=True): """ Create the new User, set him/her inactive, create an acitivation request for the user and send him/her an activation email. - + :param commit: commit the SQL and send the email if True :return: the created User Object """ diff --git a/src/membership/locale/de/LC_MESSAGES/django.mo b/src/membership/locale/de/LC_MESSAGES/django.mo index 2db7ac4..4b7825c 100644 Binary files a/src/membership/locale/de/LC_MESSAGES/django.mo and b/src/membership/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/membership/locale/de/LC_MESSAGES/django.po b/src/membership/locale/de/LC_MESSAGES/django.po index de7d6c6..288a97c 100644 --- a/src/membership/locale/de/LC_MESSAGES/django.po +++ b/src/membership/locale/de/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: kasu.membership\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" -"PO-Revision-Date: 2018-01-12 15:22+0105\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" +"PO-Revision-Date: 2018-05-08 00:19+0105\n" "Last-Translator: b'Christian Berg '\n" "Language-Team: Kasu \n" "Language: de\n" @@ -17,167 +17,200 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.9\n" -"X-Translated-Using: django-rosetta 0.7.14\n" +"X-Translated-Using: django-rosetta 0.8.1\n" -#: src/membership/__init__.py:11 +#: .\membership\__init__.py:11 msgid "Male" msgstr "Männlich" -#: src/membership/__init__.py:12 +#: .\membership\__init__.py:12 msgid "Female" msgstr "Weiblich" -#: src/membership/admin.py:22 +#: .\membership\admin.py:22 msgid "Activate selected User" msgstr "Ausgewählte Benutzer freischalten" -#: src/membership/admin.py:38 +#: .\membership\admin.py:39 msgid "Cleanup selected Activation Requests" msgstr "Ausgewählte Aktivierungsanfragen bereinigen" -#: src/membership/admin.py:47 +#: .\membership\admin.py:62 +#, python-format +msgid "Can't remove personal data from active member %s." +msgstr "" +"Persönliche Daten von aktiven Mitglied %s können nicht entfernt werden." + +#: .\membership\admin.py:64 +#, python-format +msgid "Cleared %d personal data profiles." +msgstr "Persönliche Daten in %d Profilen entfernt." + +#: .\membership\admin.py:66 +msgid "Clear personal Data" +msgstr "Persönliche Daten bereinigen" + +#: .\membership\admin.py:75 msgid "Group" msgstr "Gruppe" -#: src/membership/admin.py:48 +#: .\membership\admin.py:76 msgid "Groups" msgstr "Gruppen" -#: src/membership/admin.py:72 src/membership/models.py:163 -#: src/membership/models.py:216 -#: src/membership/templates/membership/register_form.html:32 +#: .\membership\admin.py:102 .\membership\forms.py:78 +#: .\membership\models.py:163 .\membership\models.py:218 msgid "Membership" msgstr "Mitgliedschaft" -#: src/membership/admin.py:77 +#: .\membership\admin.py:107 msgid "Permissions" msgstr "Berechtigung" -#: src/membership/admin.py:79 +#: .\membership\admin.py:109 msgid "Important dates" msgstr "Wichtige Daten" -#: src/membership/forms.py:23 +#: .\membership\forms.py:24 +#: .\membership\templates\membership\membership_detail.html:46 msgid "birthday" msgstr "Geburtstag" -#: src/membership/forms.py:25 +#: .\membership\forms.py:26 msgid "Input format: yyyy-mm-dd" msgstr "Eingabeformat: tt.mm.jjjj" -#: src/membership/forms.py:27 +#: .\membership\forms.py:28 +#: .\membership\templates\membership\membership_detail.html:48 msgid "Email" msgstr "E-Mail" -#: src/membership/forms.py:42 src/membership/forms.py:50 -#: src/membership/forms.py:58 +#: .\membership\forms.py:45 msgid "" "For your membership, we need this. Please fill out this field " "yet." msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen." -#: src/membership/forms.py:65 -msgid "" -"For your membership, we need this. Please fill out this field " -"yet." -msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen." - -#: src/membership/forms.py:78 +#: .\membership\forms.py:69 msgid "password" msgstr "Passwort" -#: src/membership/forms.py:80 +#: .\membership\forms.py:71 msgid "password (again)" msgstr "Passwort (wiederholen)" -#: src/membership/forms.py:102 +#: .\membership\forms.py:73 +msgid "Privacy policy" +msgstr "Datenschutzerklärung" + +#: .\membership\forms.py:75 +#, python-format +msgid "I have read and understood the privacy policy" +msgstr "" +"Ich habe die Datenschutzerklärung gelesen und verstanden" + +#: .\membership\forms.py:80 +#, python-format +#| msgid "" +#| "Yes, I confirm that I am in agreement with the statutes and would " +#| "like to become a member." +msgid "" +"Yes, I confirm that I am in agreement with the statutes " +"and would like to become a member." +msgstr "" +"Ja, ich bin mit den Statuen einverstanden und möchte " +"Mitglied werden." + +#: .\membership\forms.py:105 msgid "This username is already taken. Please choose another." msgstr "" "Diesen Benutzername ist schon vergeben. Bitte einen anderen auswählen." -#: src/membership/forms.py:109 +#: .\membership\forms.py:112 msgid "" "This email address is already in use. Please supply a different " "email address." msgstr "Die E-Mail Adresse wird schon verwendet. Bitte eine andere angeben." -#: src/membership/forms.py:119 +#: .\membership\forms.py:122 msgid "The two password fields didn't match." msgstr "Die beiden Passwörter passen nicht." -#: src/membership/models.py:84 +#: .\membership\models.py:84 msgid "user" msgstr "Benutzer" -#: src/membership/models.py:86 +#: .\membership\models.py:86 msgid "activation key" msgstr "Aktivierungsschlüssel" -#: src/membership/models.py:90 +#: .\membership\models.py:90 msgid "pending activation" msgstr "Ausstehende Aktivierung" -#: src/membership/models.py:91 +#: .\membership\models.py:91 msgid "pending activations" msgstr "Wartende Aktivierungen" -#: src/membership/models.py:94 +#: .\membership\models.py:94 #, python-format msgid "user registration for %s" msgstr "Benutzerregistrierung für %s" -#: src/membership/models.py:149 +#: .\membership\models.py:149 msgid "Gender" msgstr "Geschlecht" -#: src/membership/models.py:165 +#: .\membership\models.py:165 msgid "" "Yes, I confirm that I am in agreement with the statutes and would " "like to become a member." msgstr "Ja, ich bin mit den Statuen einverstanden und möchte Mitglied werden." -#: src/membership/models.py:169 +#: .\membership\models.py:169 msgid "Birthday Date" msgstr "Geburtstag" -#: src/membership/models.py:173 +#: .\membership\models.py:173 +#: .\membership\templates\membership\membership_detail.html:49 msgid "Telephone" msgstr "Telefon" -#: src/membership/models.py:179 +#: .\membership\models.py:179 +#: .\membership\templates\membership\membership_detail.html:47 msgid "Address" msgstr "Adresse" -#: src/membership/models.py:185 +#: .\membership\models.py:185 msgid "Postcode" msgstr "Postleitzahl" -#: src/membership/models.py:190 +#: .\membership\models.py:190 msgid "Town/City" msgstr "Ort" -#: src/membership/models.py:198 +#: .\membership\models.py:198 msgid "Paid until" msgstr "Bezahlt bis" -#: src/membership/models.py:204 +#: .\membership\models.py:204 msgid "Confirmed" msgstr "Bestätigt" -#: src/membership/models.py:206 +#: .\membership\models.py:206 msgid "This person has paid the membership fee." msgstr "Diese Person hat ihre Mitgliedschaft bezahlt" -#: src/membership/models.py:217 +#: .\membership\models.py:219 msgid "Memberships" msgstr "Mitgliedschaften" -#: src/membership/templates/membership/email/activation_email.txt:2 +#: .\membership\templates\membership\email\activation_email.txt:2 #, python-format msgid "Welcome %(user)s," msgstr "Herzlich willkommen %(user)s," -#: src/membership/templates/membership/email/activation_email.txt:4 +#: .\membership\templates\membership\email\activation_email.txt:4 #, python-format msgid "" "We received an account request on %(site.domain)s for your email address.\n" @@ -186,7 +219,7 @@ msgstr "" "Jemand (hoffentlich du selbst) möchte mit dieser E-Mail Adresse einen neuen Benutzer Account für %(site.domain)s anlegen.\n" "Solltest du diesen Account aktivieren wollen, klicke bitte auf den unten stehenden Link, oder kopiere diesen in die Adresszeile deines Browsers:" -#: src/membership/templates/membership/email/activation_email.txt:9 +#: .\membership\templates\membership\email\activation_email.txt:9 #, python-format msgid "" "If you do not want to open an account on %(site.domain)s, please ignore this email.\n" @@ -195,7 +228,7 @@ msgstr "" "Wenn du keinen Zugang für %(site.domain)s eröffnen willst, ignoriere diese E-Mail bitte.\n" "Die Zugangsdaten werden dann in ein paar Tagen automatisch gelöscht." -#: src/membership/templates/membership/email/activation_email.txt:12 +#: .\membership\templates\membership\email\activation_email.txt:12 #, python-format msgid "" "Best Regards,\n" @@ -204,308 +237,230 @@ msgstr "" "mit den besten Wünschen\n" "Das Team von %(site.domain)s" -#: src/membership/templates/membership/email/password_reset_email.html:2 +#: .\membership\templates\membership\email\password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "" "Du hast diese E-Mail erhalten, weil jemand die das Passwort zurücksetzen " "möchte. " -#: src/membership/templates/membership/email/password_reset_email.html:3 +#: .\membership\templates\membership\email\password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" msgstr "Für deinen Benutzerzugang auf %(site_name)s" -#: src/membership/templates/membership/email/password_reset_email.html:5 +#: .\membership\templates\membership\email\password_reset_email.html:5 msgid "Please go to the following page and choose a new password:" msgstr "Bitte gehe auf folgende Seite und wähle ein neues Passwort aus:" -#: src/membership/templates/membership/email/password_reset_email.html:9 +#: .\membership\templates\membership\email\password_reset_email.html:9 msgid "Your username, in case you've forgotten:" msgstr "Dein Benutzername, für den Fall das du diesen vergessen hast:" -#: src/membership/templates/membership/email/password_reset_email.html:11 +#: .\membership\templates\membership\email\password_reset_email.html:11 msgid "Thanks for using our site!" msgstr "Danke das du unsere Seite verwendest!" -#: src/membership/templates/membership/email/password_reset_email.html:13 +#: .\membership\templates\membership\email\password_reset_email.html:13 #, python-format msgid "The %(site_name)s team" msgstr "Das %(site_name)s Team" -#: src/membership/templates/membership/email/password_reset_subject.txt:2 +#: .\membership\templates\membership\email\password_reset_subject.txt:2 #, python-format msgid "Password reset on %(site_name)s" msgstr "Passwort auf %(site_name)s zurücksetzen" -#: src/membership/templates/membership/hanchan_table.html:5 +#: .\membership\templates\membership\hanchan_table.html:5 msgid "Start" msgstr "Beginn" -#: src/membership/templates/membership/hanchan_table.html:6 +#: .\membership\templates\membership\hanchan_table.html:6 msgid "Event" msgstr "Termin" -#: src/membership/templates/membership/hanchan_table.html:7 +#: .\membership\templates\membership\hanchan_table.html:7 msgid "Players" msgstr "Spieler" -#: src/membership/templates/membership/hanchan_table.html:8 +#: .\membership\templates\membership\hanchan_table.html:8 msgid "Kyu Points" msgstr "Kyū Punkte" -#: src/membership/templates/membership/hanchan_table.html:9 +#: .\membership\templates\membership\hanchan_table.html:9 msgid "Dan Points" msgstr "Dan Punkte" -#: src/membership/templates/membership/hanchan_table.html:10 +#: .\membership\templates\membership\hanchan_table.html:10 msgid "Bonus Points" msgstr "Bonus Punkte" -#: src/membership/templates/membership/hanchan_table.html:11 +#: .\membership\templates\membership\hanchan_table.html:11 msgid "Comment" msgstr "Anmerkung" -#: src/membership/templates/membership/hanchan_table.html:26 +#: .\membership\templates\membership\hanchan_table.html:26 msgid "This Hanchan does not validate" msgstr "Diese Hanchan ist ungültig" -#: src/membership/templates/membership/membership_detail.html:6 +#: .\membership\templates\membership\membership_detail.html:5 msgid "profile for" msgstr "Profil für" -#: src/membership/templates/membership/membership_detail.html:10 +#: .\membership\templates\membership\membership_detail.html:9 msgid "Ladder Hanchans" msgstr "Ladder Hanchans" -#: src/membership/templates/membership/membership_detail.html:11 +#: .\membership\templates\membership\membership_detail.html:10 msgid "Kyu Hanchans" msgstr "Kyū Hanchans" -#: src/membership/templates/membership/membership_detail.html:12 +#: .\membership\templates\membership\membership_detail.html:11 msgid "Dan Hanchans" msgstr "Dan Hanchans" -#: src/membership/templates/membership/membership_detail.html:13 +#: .\membership\templates\membership\membership_detail.html:12 msgid "Invalid Hanchans" msgstr "Ungültige Hanchans" -#: src/membership/templates/membership/membership_detail.html:14 +#: .\membership\templates\membership\membership_detail.html:13 msgid "Mai-Star Games" msgstr "Mai-Star Spiele" -#: src/membership/templates/membership/membership_detail.html:20 +#: .\membership\templates\membership\membership_detail.html:17 msgid "Profile Image" msgstr "Profilbild" -#: src/membership/templates/membership/membership_detail.html:28 -msgid "Member Since" -msgstr "Mitglied seit" - -#: src/membership/templates/membership/membership_detail.html:29 -msgid "Last Login" -msgstr "Letzte Anmeldung" - -#: src/membership/templates/membership/membership_detail.html:39 -#: src/membership/templates/membership/membership_detail.html:43 +#: .\membership\templates\membership\membership_detail.html:26 +#: .\membership\templates\membership\membership_detail.html:29 msgid "Points" msgstr "Punkte" -#: src/membership/templates/membership/membership_detail.html:40 +#: .\membership\templates\membership\membership_detail.html:26 msgid "Maximum" msgstr "Maximum" -#: src/membership/templates/membership/membership_detail.html:45 +#: .\membership\templates\membership\membership_detail.html:32 msgid "Games Total" msgstr "Spiele gesamt" -#: src/membership/templates/membership/membership_detail.html:46 -#: src/membership/templates/membership/membership_detail.html:48 +#: .\membership\templates\membership\membership_detail.html:32 +#: .\membership\templates\membership\membership_detail.html:35 msgid "Won" msgstr "Gewonnen" -#: src/membership/templates/membership/membership_detail.html:46 -#: src/membership/templates/membership/membership_detail.html:48 +#: .\membership\templates\membership\membership_detail.html:32 +#: .\membership\templates\membership\membership_detail.html:35 msgid "Good" msgstr "Gut" -#: src/membership/templates/membership/membership_detail.html:48 +#: .\membership\templates\membership\membership_detail.html:35 msgid "Current Season" msgstr "Aktuelle Saison" -#: src/membership/templates/membership/membership_detail.html:58 -msgid "Edit Profile" -msgstr "Profil bearbeiten" +#: .\membership\templates\membership\membership_detail.html:42 +msgid "private data" +msgstr "Private Daten" -#: src/membership/templates/membership/membership_detail.html:62 -#: src/membership/templates/registration/password_change_form.html:23 -msgid "Change Password" -msgstr "Passwort ändern" - -#: src/membership/templates/membership/membership_detail.html:66 -#: src/membership/templates/membership/membership_detail.html:70 -#: src/membership/templates/membership/membership_detail.html:74 -#, python-format -msgid "Associate with %(name)s" -msgstr "Verbinde mit %(name)s" - -#: src/membership/templates/membership/membership_form.html:4 -#: src/membership/templates/membership/membership_form.html:6 -#: src/membership/templates/membership/membership_form.html:11 -msgid "Edit Userprofile" -msgstr "Profil bearbeiten" - -#: src/membership/templates/membership/membership_form.html:15 -msgid "Reset" -msgstr "Zurücksetzen" - -#: src/membership/templates/membership/membership_form.html:16 -msgid "Save" -msgstr "Speichern" - -#: src/membership/templates/membership/register_form.html:4 -#: src/membership/templates/membership/register_form.html:7 -msgid "Registration" -msgstr "Registrieren" - -#: src/membership/templates/membership/register_form.html:9 -msgid "" -"After you've provided your account data, you'll receive\n" -" an email asking you to verify your email address. You have to click on the\n" -" link in this verification email to confirm your email address, otherwise\n" -" your can't login." +#: .\membership\templates\membership\membership_detail.html:43 +msgid "This data can only be seen by yourself and members of the board." msgstr "" -"Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur Bestätigung bekommen.\n" -"Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist die Anmeldung möglich." +"Diese Angaben können nur von dir selbst und von Mitgliedern des Vorstandes " +"eingesehen werden." -#: src/membership/templates/membership/register_form.html:20 +#: .\membership\templates\membership\membership_detail.html:45 msgid "name" msgstr "Name" -#: src/membership/templates/membership/register_form.html:26 -#: src/membership/templates/registration/login.html:41 -msgid "login" -msgstr "Anmelden" +#: .\membership\templates\membership\membership_detail.html:50 +msgid "Member Since" +msgstr "Mitglied seit" -#: src/membership/templates/membership/register_form.html:39 +#: .\membership\templates\membership\membership_detail.html:51 +msgid "Last Login" +msgstr "Letzte Anmeldung" + +#: .\membership\templates\membership\membership_detail.html:54 +msgid "Edit Profile" +msgstr "Profil bearbeiten" + +#: .\membership\templates\membership\membership_detail.html:55 +#: .\membership\templates\registration\password_change_form.html:23 +msgid "Change Password" +msgstr "Passwort ändern" + +#: .\membership\templates\membership\membership_form.html:4 +#: .\membership\templates\membership\membership_form.html:6 +#: .\membership\templates\membership\membership_form.html:11 +msgid "Edit Userprofile" +msgstr "Profil bearbeiten" + +#: .\membership\templates\membership\membership_form.html:15 +msgid "Reset" +msgstr "Zurücksetzen" + +#: .\membership\templates\membership\membership_form.html:16 +msgid "Save" +msgstr "Speichern" + +#: .\membership\templates\membership\register_form.html:4 +msgid "Registration" +msgstr "Registrieren" + +#: .\membership\templates\membership\register_form.html:10 +msgid "Login crendentials" +msgstr "Anmeldedaten" + +#: .\membership\templates\membership\register_form.html:16 +msgid "Club membership" +msgstr "Vereinsmitgliedschaft" + +#: .\membership\templates\membership\register_form.html:27 msgid "reset" msgstr "Zurücksetzen" -#: src/membership/templates/membership/register_form.html:41 -#: src/membership/templates/registration/login.html:35 +#: .\membership\templates\membership\register_form.html:29 msgid "register" msgstr "Registrieren" -#: src/membership/templates/membership/register_successful.html:5 -#: src/membership/templates/membership/register_successful.html:7 -#: src/membership/templates/membership/register_successful.html:10 +#: .\membership\templates\membership\register_successful.html:5 +#: .\membership\templates\membership\register_successful.html:7 +#: .\membership\templates\membership\register_successful.html:10 msgid "Activation sent" msgstr "Aktivierung wurde zugesendet" -#: src/membership/templates/registration/login.html:4 -#: src/membership/templates/registration/login.html:11 -#: src/membership/templates/registration/login.html:53 -#: src/membership/templates/registration/password_reset_complete.html:13 -msgid "Login" +#: .\membership\templates\registration\login.html:17 +msgid "login" msgstr "Anmelden" -#: src/membership/templates/registration/login.html:17 -msgid "Have you already registered?" -msgstr "Bereits registriert?" +#: .\membership\templates\registration\login.html:19 +msgid "Your username and password didn't match. Please try again." +msgstr "Anmeldung fehlgeschlagen, bitte Benutzername und Passwort überprüfen." -#: src/membership/templates/registration/login.html:18 -#| msgid "" -#| "\n" -#| "

    As a registered member you can:

    \n" -#| "
      \n" -#| "
    • leave comments on this page.
    • \n" -#| "
    • subscribe to our Newsletter
    • \n" -#| "
    • apply to a membership to our club
    • \n" -#| "
    • club-members have access to our ranking-system
    • \n" -#| "
    \n" -msgid "" -"\n" -"

    As a registered member you can:

    \n" -"
      \n" -"
    • leave comments on this page.
    • \n" -"
    • subscribe to our Newsletter
    • \n" -"
    • apply to a membership to our club
    • \n" -"
    • club-members have access to our ranking-system
    • \n" -"
    \n" -" " -msgstr "" -"\n" -"

    Als registrierter auf dieser Seite kannst du:

    \n" -"
      \n" -"
    • Kommentare auf dieser Seite hinterlassen.
    • \n" -"
    • Dich für unseren Newsletter anmelden
    • \n" -"
    • Mitglied in unserem Verein werden
    • \n" -"
    • Vereinsmitglieder haben auch vollen Zugang zu unserem Ranking System
    • \n" -"
    " - -#: src/membership/templates/registration/login.html:27 -#| msgid "" -#| "\n" -#| "

    You can register here with your Google, or Facebook account.\n" -#| "If you don't own such an account, or do not want to use it for authentication,\n" -#| "you can fill out our registration form.

    \n" -msgid "" -"\n" -"

    You can register here with your Google, or Facebook account.\n" -" If you don't own such an account, or do not want to use it for\n" -" authentication,\n" -" you can fill out our registration form.

    \n" -" " -msgstr "" -"\n" -"

    Du kannst dich auch über deinen Facebook, Google, oder Twitter Account anmelden.\n" -"Wenn du so etwas nicht besitzt, oder nicht verwenden möchtest, \n" -"kannst du auch das Registrierungsformular ausfüllen.

    " - -#: src/membership/templates/registration/login.html:45 -#| msgid "Your username and password didn't match. Please try again." -msgid "" -"Your username and password didn't match. Please try\n" -" again." -msgstr "" -"Benutzername und Passwort stimmen nicht überein. Bitte noch einmal " -"versuchen." - -#: src/membership/templates/registration/login.html:50 +#: .\membership\templates\registration\login.html:22 msgid "Forgot your Password?" msgstr "Passwort vergessen?" -#: src/membership/templates/registration/login.html:60 -msgid "or login with an existing Account" -msgstr "oder über einen existierenden Account anmelden" +#: .\membership\templates\registration\login.html:26 +#: .\membership\templates\registration\password_reset_complete.html:13 +msgid "Login" +msgstr "Anmelden" -#: src/membership/templates/registration/login.html:63 -msgid "Login with Facebook" -msgstr "Über Facebook anmelden" - -#: src/membership/templates/registration/login.html:66 -msgid "Login with Twitter" -msgstr "Über Twitter anmelden" - -#: src/membership/templates/registration/login.html:69 -msgid "Login with Google" -msgstr "Über Google Anmelden" - -#: src/membership/templates/registration/password_change_done.html:4 -#: src/membership/templates/registration/password_change_done.html:7 +#: .\membership\templates\registration\password_change_done.html:4 +#: .\membership\templates\registration\password_change_done.html:7 msgid "Password change successful" msgstr "Benutzerprofil erfolgreich geändert." -#: src/membership/templates/registration/password_change_done.html:8 +#: .\membership\templates\registration\password_change_done.html:8 msgid "Your password was changed." msgstr "Passwort geändet" -#: src/membership/templates/registration/password_change_form.html:4 -#: src/membership/templates/registration/password_change_form.html:9 -#: src/membership/templates/registration/password_change_form.html:16 +#: .\membership\templates\registration\password_change_form.html:4 +#: .\membership\templates\registration\password_change_form.html:9 +#: .\membership\templates\registration\password_change_form.html:16 msgid "Password change" msgstr "Passwort wechseln" -#: src/membership/templates/registration/password_change_form.html:10 +#: .\membership\templates\registration\password_change_form.html:10 msgid "" "Please enter your old password, for security's sake, and then enter your new" " password twice so we can verify you typed it in correctly." @@ -513,23 +468,23 @@ msgstr "" "Zur Sicherheit bitte altes Passwort einmal und das gewünschte neue Passwort" " zweimal angeben, so können Tippfehler abgefangen werden." -#: src/membership/templates/registration/password_reset_complete.html:4 -#: src/membership/templates/registration/password_reset_complete.html:6 -#: src/membership/templates/registration/password_reset_complete.html:9 +#: .\membership\templates\registration\password_reset_complete.html:4 +#: .\membership\templates\registration\password_reset_complete.html:6 +#: .\membership\templates\registration\password_reset_complete.html:9 msgid "Password reset complete" msgstr "Das Rücksetzen des Passwortes ist abgeschlossen." -#: src/membership/templates/registration/password_reset_complete.html:10 +#: .\membership\templates\registration\password_reset_complete.html:10 msgid "Your password has been set. You may go ahead and log in now." msgstr "Das Passwort wurde gesetzt, Du kannst dich nun damit anmelden." -#: src/membership/templates/registration/password_reset_confirm.html:4 -#: src/membership/templates/registration/password_reset_confirm.html:6 -#: src/membership/templates/registration/password_reset_confirm.html:15 +#: .\membership\templates\registration\password_reset_confirm.html:4 +#: .\membership\templates\registration\password_reset_confirm.html:6 +#: .\membership\templates\registration\password_reset_confirm.html:15 msgid "Enter new password" msgstr "Neues Passwort eingeben" -#: src/membership/templates/registration/password_reset_confirm.html:12 +#: .\membership\templates\registration\password_reset_confirm.html:12 msgid "" "Please enter your new password twice so we can verify you typed it in " "correctly." @@ -537,15 +492,15 @@ msgstr "" "Bitte das Passwort zweimal eingeben, um sicher zu stellen das es korrekt " "eingetippt wurde." -#: src/membership/templates/registration/password_reset_confirm.html:18 +#: .\membership\templates\registration\password_reset_confirm.html:18 msgid "Change my password" msgstr "Passwort ändern" -#: src/membership/templates/registration/password_reset_confirm.html:26 +#: .\membership\templates\registration\password_reset_confirm.html:26 msgid "Password reset unsuccessful" msgstr "Passwort rücksetzen fehlgeschlagen" -#: src/membership/templates/registration/password_reset_confirm.html:27 +#: .\membership\templates\registration\password_reset_confirm.html:27 msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." @@ -553,22 +508,22 @@ msgstr "" "Der Link für die Rücksetzung des Passwortes war ungültig, vermutlich wurde " "er schon einmal benutzt. Bitte eine neue Rücksetzung beantragen." -#: src/membership/templates/registration/password_reset_done.html:4 -#: src/membership/templates/registration/password_reset_done.html:6 -#: src/membership/templates/registration/password_reset_done.html:12 +#: .\membership\templates\registration\password_reset_done.html:4 +#: .\membership\templates\registration\password_reset_done.html:6 +#: .\membership\templates\registration\password_reset_done.html:12 msgid "Password reset successful" msgstr "Passwort erfolgreich zurückgesetzt." -#: src/membership/templates/registration/password_reset_form.html:4 -#: src/membership/templates/registration/password_reset_form.html:6 +#: .\membership\templates\registration\password_reset_form.html:4 +#: .\membership\templates\registration\password_reset_form.html:6 msgid "Password reset" msgstr "Passwort zurücksetzen" -#: src/membership/templates/registration/password_reset_form.html:21 +#: .\membership\templates\registration\password_reset_form.html:21 msgid "Transmit" msgstr "Übermitteln" -#: src/membership/views.py:61 +#: .\membership\views.py:61 msgid "" "Activation successful. You can now login anytime with you username " "and password." @@ -576,15 +531,82 @@ msgstr "" "Die Aktivierung war erfolgreich. Du kannst dich ab jetzt jederzeit mit " "deinem Benutzernamen und Passwort anmelden." -#: src/membership/views.py:88 +#: .\membership\views.py:88 msgid "User Profile changed successfully" msgstr "Benutzerprofil erfolgreich geändert." -#: src/membership/views.py:112 -#| msgid "No %(verbose_name)s found matching the query" +#: .\membership\views.py:112 msgid "No Membership found matching the query" msgstr "Kein Mitglied gefunden welche der Anfrage entspricht" +#~ msgid "Associate with %(name)s" +#~ msgstr "Verbinde mit %(name)s" + +#~ msgid "or" +#~ msgstr "oder" + +#~ msgid "Login with Facebook" +#~ msgstr "Über Facebook anmelden" + +#~ msgid "Login with Twitter" +#~ msgstr "Über Twitter anmelden" + +#~ msgid "Login with Google" +#~ msgstr "Über Google Anmelden" + +#~ msgid "" +#~ "After you've provided your account data, you'll receive\n" +#~ " an email asking you to verify your email address. You have to click on the\n" +#~ " link in this verification email to confirm your email address, otherwise\n" +#~ " your can't login." +#~ msgstr "" +#~ "Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur Bestätigung bekommen.\n" +#~ "Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist die Anmeldung möglich." + +#~ msgid "Have you already registered?" +#~ msgstr "Bereits registriert?" + +#~ msgid "" +#~ "\n" +#~ "

    As a registered member you can:

    \n" +#~ "
      \n" +#~ "
    • leave comments on this page.
    • \n" +#~ "
    • subscribe to our Newsletter
    • \n" +#~ "
    • apply to a membership to our club
    • \n" +#~ "
    • club-members have access to our ranking-system
    • \n" +#~ "
    \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "

    Als registrierter auf dieser Seite kannst du:

    \n" +#~ "
      \n" +#~ "
    • Kommentare auf dieser Seite hinterlassen.
    • \n" +#~ "
    • Dich für unseren Newsletter anmelden
    • \n" +#~ "
    • Mitglied in unserem Verein werden
    • \n" +#~ "
    • Vereinsmitglieder haben auch vollen Zugang zu unserem Ranking System
    • \n" +#~ "
    " + +#~ msgid "" +#~ "\n" +#~ "

    You can register here with your Google, or Facebook account.\n" +#~ " If you don't own such an account, or do not want to use it for\n" +#~ " authentication,\n" +#~ " you can fill out our registration form.

    \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "

    Du kannst dich auch über deinen Facebook, Google, oder Twitter Account anmelden.\n" +#~ "Wenn du so etwas nicht besitzt, oder nicht verwenden möchtest, \n" +#~ "kannst du auch das Registrierungsformular ausfüllen.

    " + +#~ msgid "or login with an existing Account" +#~ msgstr "oder über einen existierenden Account anmelden" + +#~ msgid "" +#~ "For your membership, we need this. Please fill out this field " +#~ "yet." +#~ msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen." + #~ msgid "Given Name" #~ msgstr "Vorname" diff --git a/src/membership/models.py b/src/membership/models.py index 7b746d2..6aa9669 100644 --- a/src/membership/models.py +++ b/src/membership/models.py @@ -7,8 +7,8 @@ from os import path from django.conf import settings from django.contrib.auth.models import AbstractUser -from django.urls import reverse from django.db import models +from django.urls import reverse from django.utils import timezone from django.utils.translation import ugettext as _ from easy_thumbnails.fields import ThumbnailerImageField @@ -150,7 +150,7 @@ class Membership(AbstractUser): max_length=1, choices=GENDER_CHOICES, blank=True, - null=True + null=True, ) website = models.URLField(blank=True) avatar = ThumbnailerImageField( @@ -206,8 +206,10 @@ class Membership(AbstractUser): help_text=_('This person has paid the membership fee.') ) - # comment = models.TextField(blank=True) - # objects = MembershipManager() + nullable_personal_data = ( + 'gender', 'birthday', 'telephone', 'street_name', 'post_code', 'city') + blankable_personal_data = ( + 'email', 'password', 'first_name', 'last_name', 'website',) class Meta(object): """To manage object ordering and dispalynames on the admin interface.""" diff --git a/src/membership/templates/membership/membership_detail.html b/src/membership/templates/membership/membership_detail.html index d1af67c..ca1e764 100644 --- a/src/membership/templates/membership/membership_detail.html +++ b/src/membership/templates/membership/membership_detail.html @@ -1,5 +1,4 @@ -{% extends "base.html" %} -{% load i18n comments thumbnail %} +{% extends "base.html" %}{% load i18n comments thumbnail %} {% block title %}{{ membership.first_name }} {{membership.last_name}}{% endblock %} @@ -7,84 +6,61 @@ {% block navigation %} -{% endblock %} +
  • {% trans "Ladder Hanchans" %}
  • +
  • {% trans "Kyu Hanchans" %}
  • +
  • {% trans "Dan Hanchans" %}
  • +
  • {% trans "Invalid Hanchans" %}
  • +
  • {% trans "Mai-Star Games" %}
  • +{% endblock %} -{% block maincontent %} -{% if membership.avatar %} - {% trans 'Profile Image' %} -{% else %} -
    Noch kein Foto hoch geladen
    -{% endif %} +{% block maincontent %}{% if membership.avatar %} +{% trans 'Profile Image' %}{% else %} +
    Noch kein Foto hoch geladen
    {% endif %} -
    -
      -
    • Name: {{membership.first_name}} {{membership.last_name}}
    • -
    • {% trans "Member Since" %}: {{membership.date_joined}}
    • -
    • {% trans "Last Login" %}: {{membership.last_login}}
    • - {% if website %} -
    • Homepage: {{website}}
    • - {% endif %} -
    - {% if kyu_dan_ranking %} -

    Mahjong

    -
      - {% if kyu_dan_ranking.dan %} -
    • - {{kyu_dan_ranking.dan}}. Dan: {{ kyu_dan_ranking.dan_points }} {% trans 'Points' %} - ({% trans 'Maximum' %}: {{ kyu_dan_ranking.max_dan_points }}) -
    • - {% elif kyu_dan_ranking.kyu%} -
    • {{kyu_dan_ranking.kyu}}. Kyu: {{ kyu_dan_ranking.kyu_points }} {% trans 'Points' %}
    • - {% endif %} -
    • {% trans 'Games Total' %}: {{ kyu_dan_ranking.hanchan_count }} Hanchans - - {{kyu_dan_ranking.won_hanchans }} {% trans 'Won' %} / {{ kyu_dan_ranking.good_hanchans }} {% trans 'Good' %} -
    • -
    • {% trans 'Current Season' %}: {{ ladder_ranking.hanchan_count }} Hanchans - {{ ladder_ranking.won_hanchans }} {% trans 'Won' %} / {{ ladder_ranking.good_hanchans }} {% trans 'Good' %} -
    • -
    +
    + {% if kyu_dan_ranking %} +

    Mahjong

    +
      + {% if kyu_dan_ranking.dan %} +
    • + {{kyu_dan_ranking.dan}}. Dan: {{ kyu_dan_ranking.dan_points }} {% trans 'Points' %} ({% trans 'Maximum' %}: {{ kyu_dan_ranking.max_dan_points }}) +
    • + {% elif kyu_dan_ranking.kyu%} +
    • {{kyu_dan_ranking.kyu}}. Kyu: {{ kyu_dan_ranking.kyu_points }} {% trans 'Points' %}
    • {% endif %} +
    • + {% trans 'Games Total' %}: {{ kyu_dan_ranking.hanchan_count }} Hanchans - {{kyu_dan_ranking.won_hanchans }} {% trans 'Won' %} / {{ kyu_dan_ranking.good_hanchans }} {% trans 'Good' %} +
    • +
    • + {% trans 'Current Season' %}: {{ ladder_ranking.hanchan_count }} Hanchans - {{ ladder_ranking.won_hanchans }} {% trans 'Won' %} / {{ ladder_ranking.good_hanchans }} {% trans 'Good' %} +
    • +
    + {% endif %}
    + {% if membership == user or perms.membership.change_membership%} +
    +

    {% trans 'private data' %}

    +

    {% blocktrans %}This data can only be seen by yourself and members of the board.{% endblocktrans %}

    +
      + {% if membership.first_name %}
    • {% trans "name" %}: {{membership.first_name}} {{membership.last_name}}
    • {% endif %} + {% if membership.birthday %}
    • {% trans "birthday" %}: {{membership.birthday}}
    • {% endif %} + {% if membership.street_name %}
    • {% trans "Address" %}:
      {{ membership.street_name }}
      {{ membership.post_code }} {{ membership.city }}
    • {% endif %} + {% if membership.email %}
    • {% trans "Email" %}: {{membership.email}}
    • {% endif %} + {% if membership.telephone %}
    • {% trans "Telephone" %}: {{membership.telephone}}
    • {% endif %} +
    • {% trans "Member Since" %}: {{membership.date_joined}}
    • +
    • {% trans "Last Login" %}: {{membership.last_login}}
    • +
    + {% ifequal membership user %} + {% trans "Edit Profile" %} + {% trans 'Change Password' %} + {% endifequal %} +
    + {% endif %} -{% ifequal membership user %} - -{% endifequal %} -{% block score_list %} {% endblock %} -{% endblock %} +{% block score_list %} {% endblock %}{% endblock %} -{% block comments %} -{% if membership %} - {% render_comment_list for membership %} - {% render_comment_form for membership %} -{% endif %} -{% endblock %} +{% block comments %}{% if membership %}{% render_comment_list for membership %}{% render_comment_form for membership %}{% endif %}{% endblock %} {% block buttonbar%}{%endblock%} diff --git a/src/membership/templates/membership/register_form.html b/src/membership/templates/membership/register_form.html index 59519bf..bbda764 100644 --- a/src/membership/templates/membership/register_form.html +++ b/src/membership/templates/membership/register_form.html @@ -3,37 +3,25 @@ {% block title %}{% trans "Registration"%}{% endblock %} -{% block teaser%} -

    {% trans "Registration"%}

    -
    -{% blocktrans %}After you've provided your account data, you'll receive - an email asking you to verify your email address. You have to click on the - link in this verification email to confirm your email address, otherwise - your can't login.{% endblocktrans %} -
    -{% endblock %} - {% block maincontent %}
    {% csrf_token %} -
    - {% trans "name"%} - {% get_fieldset "gender, first_name, last_name, username" from form as form1 %} - {% with form1 as form %}{% include "form.html" %}{% endwith %} -
    -
    - {% trans "login"%} - {% get_fieldset "email, password1, password2, recaptcha" from form as form1 %} + {% trans "Login crendentials"%} + {% get_fieldset "username, email, password1, password2, privacy_policy, recaptcha" from form as form1 %} {% with form1 as form %}{% include "form.html" %}{% endwith %}
    -
    - {% trans "Membership"%} - {% get_fieldset "membership, birthday, street_name, post_code, city, telephone, website" from form as form2 %} +
    + {% trans "Club membership"%} + {% get_fieldset "membership, first_name, last_name, gender, birthday, street_name, post_code, city, telephone" from form as form2 %} {% with form2 as form %}{% include "form.html" %}{% endwith %}
    +
    + {{ current_page.content }} +
    +

    -{% endblock %} \ No newline at end of file + +{% endblock %} diff --git a/src/membership/templates/registration/logged_out.html b/src/membership/templates/registration/logged_out.html new file mode 100755 index 0000000..e970477 --- /dev/null +++ b/src/membership/templates/registration/logged_out.html @@ -0,0 +1,6 @@ +{% extends "base.html" %}{% load i18n %} + +{% block content %} + {{ current_page.content }} +{% endblock %} + diff --git a/src/membership/templates/registration/login.html b/src/membership/templates/registration/login.html index 47f3904..f09c442 100755 --- a/src/membership/templates/registration/login.html +++ b/src/membership/templates/registration/login.html @@ -1,72 +1,32 @@ -{% extends "base.html" %} -{% load i18n %} +{% extends "base.html" %}{% load i18n %} -{% block title %}{% trans 'Login' %}{% endblock %} {% block description %}Anmelden auf Kasu.at{% endblock %} {% block extra_head %} - -{% endblock %} +{% endblock %} + -{% block teaser %}

    {% trans 'Login' %}

    {% endblock %} {% block maincontent %}
    -

    Auf der Seite Anmelden

    - -
    -

    {% trans "Have you already registered?" %}

    - {% blocktrans %} -

    As a registered member you can:

    -
      -
    • leave comments on this page.
    • -
    • subscribe to our Newsletter
    • -
    • apply to a membership to our club
    • -
    • club-members have access to our ranking-system
    • -
    - {% endblocktrans %} - {% blocktrans %} -

    You can register here with your Google, or Facebook account. - If you don't own such an account, or do not want to use it for - authentication, - you can fill out our registration form.

    - {% endblocktrans %} -

    - {%trans "register"%}

    -
    - - {% csrf_token %} -
    - {% trans 'login' %} - {% csrf_token %} - {% include 'form.html' %} - {% if form.errors %} -

    {% blocktrans %}Your username and password didn't match. Please try - again.{% endblocktrans %}

    - {% endif %} - -

    - {% trans 'Forgot your Password?'%}

    -
    - -
    -
    - - -
    -

    {% trans "or login with an existing Account" %}

    - - - +
    + {{ current_page.content }} +
    +
    +
    + {% trans 'login' %} + {% csrf_token %} {% include 'form.html' %} {% if form.errors %} +

    {% blocktrans %}Your username and password didn't match. Please try again.{% endblocktrans %}

    + {% endif %} +

    + {% trans 'Forgot your Password?'%} +

    +
    + +
    +
    {% endblock %} diff --git a/src/membership/urls.py b/src/membership/urls.py index 7cf1a3b..4547ae8 100644 --- a/src/membership/urls.py +++ b/src/membership/urls.py @@ -9,6 +9,7 @@ from django.conf.urls import url from . import views urlpatterns = [ + url(r'^$',views.MembershipDetail.as_view()), url(r'^activate/(?P[\d\w]+)/$', views.ActivateRegistration.as_view(), name='membership-activate-registration'), diff --git a/src/utils/locale/de/LC_MESSAGES/django.mo b/src/utils/locale/de/LC_MESSAGES/django.mo index 0e4652f..b60127f 100644 Binary files a/src/utils/locale/de/LC_MESSAGES/django.mo and b/src/utils/locale/de/LC_MESSAGES/django.mo differ diff --git a/src/utils/locale/de/LC_MESSAGES/django.po b/src/utils/locale/de/LC_MESSAGES/django.po index 3deb814..271537e 100644 --- a/src/utils/locale/de/LC_MESSAGES/django.po +++ b/src/utils/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kasu.utils\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-11 22:50+0100\n" +"POT-Creation-Date: 2018-05-08 00:17+0200\n" "PO-Revision-Date: 2016-09-28 00:24+0200\n" "Last-Translator: Christian Berg \n" "Language-Team: Kasu \n" @@ -18,999 +18,999 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.9\n" -#: src/utils/__init__.py:17 +#: .\utils\__init__.py:17 msgid "Rejected" msgstr "Zurückgewiesen" -#: src/utils/__init__.py:18 +#: .\utils\__init__.py:18 msgid "Waiting..." msgstr "Wartend..." -#: src/utils/__init__.py:19 +#: .\utils\__init__.py:19 msgid "Published" msgstr "Veröffentlicht" -#: src/utils/countries.py:5 +#: .\utils\countries.py:5 msgid "United Kingdom" msgstr "Vereinigtes Königreich" -#: src/utils/countries.py:6 +#: .\utils\countries.py:6 msgid "Afghanistan" msgstr "Afghanistan" -#: src/utils/countries.py:7 +#: .\utils\countries.py:7 msgid "Aland Islands" msgstr "Aland Islands" -#: src/utils/countries.py:8 +#: .\utils\countries.py:8 msgid "Albania" msgstr "Albanien" -#: src/utils/countries.py:9 +#: .\utils\countries.py:9 msgid "Algeria" msgstr "Algerien" -#: src/utils/countries.py:10 +#: .\utils\countries.py:10 msgid "American Samoa" msgstr "Amerikanisch-Samoa" -#: src/utils/countries.py:11 +#: .\utils\countries.py:11 msgid "Andorra" msgstr "Andorra" -#: src/utils/countries.py:12 +#: .\utils\countries.py:12 msgid "Angola" msgstr "Angola" -#: src/utils/countries.py:13 +#: .\utils\countries.py:13 msgid "Anguilla" msgstr "Anguilla" -#: src/utils/countries.py:14 +#: .\utils\countries.py:14 msgid "Antarctica" msgstr "Antarktika" -#: src/utils/countries.py:15 +#: .\utils\countries.py:15 msgid "Antigua and Barbuda" msgstr "Antigua und Barbuda" -#: src/utils/countries.py:16 +#: .\utils\countries.py:16 msgid "Argentina" msgstr "Argentinien" -#: src/utils/countries.py:17 +#: .\utils\countries.py:17 msgid "Armenia" msgstr "Armenien" -#: src/utils/countries.py:18 +#: .\utils\countries.py:18 msgid "Aruba" msgstr "Aruba" -#: src/utils/countries.py:19 +#: .\utils\countries.py:19 msgid "Australia" msgstr "Australien" -#: src/utils/countries.py:20 +#: .\utils\countries.py:20 msgid "Austria" msgstr "Österreich" -#: src/utils/countries.py:21 +#: .\utils\countries.py:21 msgid "Azerbaijan" msgstr "Aserbaidschan" -#: src/utils/countries.py:22 +#: .\utils\countries.py:22 msgid "Bahamas" msgstr "Bahamas" -#: src/utils/countries.py:23 +#: .\utils\countries.py:23 msgid "Bahrain" msgstr "Bahrein" -#: src/utils/countries.py:24 +#: .\utils\countries.py:24 msgid "Bangladesh" msgstr "Bangladesch" -#: src/utils/countries.py:25 +#: .\utils\countries.py:25 msgid "Barbados" msgstr "Barbados" -#: src/utils/countries.py:26 +#: .\utils\countries.py:26 msgid "Belarus" msgstr "Weißrussland" -#: src/utils/countries.py:27 +#: .\utils\countries.py:27 msgid "Belgium" msgstr "Belgien" -#: src/utils/countries.py:28 +#: .\utils\countries.py:28 msgid "Belize" msgstr "Belize" -#: src/utils/countries.py:29 +#: .\utils\countries.py:29 msgid "Benin" msgstr "Benin" -#: src/utils/countries.py:30 +#: .\utils\countries.py:30 msgid "Bermuda" msgstr "Bermuda" -#: src/utils/countries.py:31 +#: .\utils\countries.py:31 msgid "Bhutan" msgstr "Bhutan" -#: src/utils/countries.py:32 +#: .\utils\countries.py:32 msgid "Bolivia" msgstr "Bolivien" -#: src/utils/countries.py:33 +#: .\utils\countries.py:33 msgid "Bosnia and Herzegovina" msgstr "Bosnien und Herzegowina" -#: src/utils/countries.py:34 +#: .\utils\countries.py:34 msgid "Botswana" msgstr "Botswana" -#: src/utils/countries.py:35 +#: .\utils\countries.py:35 msgid "Bouvet Island" msgstr "Bouvet Island" -#: src/utils/countries.py:36 +#: .\utils\countries.py:36 msgid "Brazil" msgstr "Brasilien" -#: src/utils/countries.py:37 +#: .\utils\countries.py:37 msgid "British Indian Ocean Territory" msgstr "British Indian Ocean Territory" -#: src/utils/countries.py:38 +#: .\utils\countries.py:38 msgid "Brunei Darussalam" msgstr "Brunei Darussalam" -#: src/utils/countries.py:39 +#: .\utils\countries.py:39 msgid "Bulgaria" msgstr "Bulgarien" -#: src/utils/countries.py:40 +#: .\utils\countries.py:40 msgid "Burkina Faso" msgstr "Burkina Faso" -#: src/utils/countries.py:41 +#: .\utils\countries.py:41 msgid "Burundi" msgstr "Burundi" -#: src/utils/countries.py:42 +#: .\utils\countries.py:42 msgid "Cambodia" msgstr "Kambodscha" -#: src/utils/countries.py:43 +#: .\utils\countries.py:43 msgid "Cameroon" msgstr "Kamerun" -#: src/utils/countries.py:44 +#: .\utils\countries.py:44 msgid "Canada" msgstr "Kanada" -#: src/utils/countries.py:45 +#: .\utils\countries.py:45 msgid "Cape Verde" msgstr "Cape Verde" -#: src/utils/countries.py:46 +#: .\utils\countries.py:46 msgid "Cayman Islands" msgstr "Cayman Islands" -#: src/utils/countries.py:47 +#: .\utils\countries.py:47 msgid "Central African Republic" msgstr "Zentralafrikanische Republik" -#: src/utils/countries.py:48 +#: .\utils\countries.py:48 msgid "Chad" msgstr "Tschad" -#: src/utils/countries.py:49 +#: .\utils\countries.py:49 msgid "Chile" msgstr "Chile" -#: src/utils/countries.py:50 +#: .\utils\countries.py:50 msgid "China" msgstr "China" -#: src/utils/countries.py:51 +#: .\utils\countries.py:51 msgid "Christmas Island" msgstr "Christmas Island" -#: src/utils/countries.py:52 +#: .\utils\countries.py:52 msgid "Cocos (Keeling) Islands" msgstr "Cocos (Keeling) Islands" -#: src/utils/countries.py:53 +#: .\utils\countries.py:53 msgid "Colombia" msgstr "Kolumbien" -#: src/utils/countries.py:54 +#: .\utils\countries.py:54 msgid "Comoros" msgstr "Komoren" -#: src/utils/countries.py:55 +#: .\utils\countries.py:55 msgid "Congo" msgstr "Kongo" -#: src/utils/countries.py:56 +#: .\utils\countries.py:56 msgid "Congo, The Democratic Republic of the" msgstr "Kongo, Demokratische Republik" -#: src/utils/countries.py:57 +#: .\utils\countries.py:57 msgid "Cook Islands" msgstr "Cook-Inseln" -#: src/utils/countries.py:58 +#: .\utils\countries.py:58 msgid "Costa Rica" msgstr "Costa Rica" -#: src/utils/countries.py:59 +#: .\utils\countries.py:59 msgid "Cote d'Ivoire" msgstr "Cote d'Ivoire" -#: src/utils/countries.py:60 +#: .\utils\countries.py:60 msgid "Croatia" msgstr "Kroatien" -#: src/utils/countries.py:61 +#: .\utils\countries.py:61 msgid "Cuba" msgstr "Kuba" -#: src/utils/countries.py:62 +#: .\utils\countries.py:62 msgid "Cyprus" msgstr "Zypern" -#: src/utils/countries.py:63 +#: .\utils\countries.py:63 msgid "Czech Republic" msgstr "Tschechische Republik" -#: src/utils/countries.py:64 +#: .\utils\countries.py:64 msgid "Denmark" msgstr "Dänemark" -#: src/utils/countries.py:65 +#: .\utils\countries.py:65 msgid "Djibouti" msgstr "Dschibuti" -#: src/utils/countries.py:66 +#: .\utils\countries.py:66 msgid "Dominica" msgstr "Dominica" -#: src/utils/countries.py:67 +#: .\utils\countries.py:67 msgid "Dominican Republic" msgstr "Dominikanische Republik" -#: src/utils/countries.py:68 +#: .\utils\countries.py:68 msgid "Ecuador" msgstr "Ecuador" -#: src/utils/countries.py:69 +#: .\utils\countries.py:69 msgid "Egypt" msgstr "Ägypten" -#: src/utils/countries.py:70 +#: .\utils\countries.py:70 msgid "El Salvador" msgstr "El Salvador" -#: src/utils/countries.py:71 +#: .\utils\countries.py:71 msgid "Equatorial Guinea" msgstr "Äquatorial-Guinea" -#: src/utils/countries.py:72 +#: .\utils\countries.py:72 msgid "Eritrea" msgstr "Eritrea" -#: src/utils/countries.py:73 +#: .\utils\countries.py:73 msgid "Estonia" msgstr "Estland" -#: src/utils/countries.py:74 +#: .\utils\countries.py:74 msgid "Ethiopia" msgstr "Äthiopien" -#: src/utils/countries.py:75 +#: .\utils\countries.py:75 msgid "Falkland Islands (Malvinas)" msgstr "Falklandinseln (Malvinas)" -#: src/utils/countries.py:76 +#: .\utils\countries.py:76 msgid "Faroe Islands" msgstr "Färöer-Inseln" -#: src/utils/countries.py:77 +#: .\utils\countries.py:77 msgid "Fiji" msgstr "Fidschi" -#: src/utils/countries.py:78 +#: .\utils\countries.py:78 msgid "Finland" msgstr "Finnland" -#: src/utils/countries.py:79 +#: .\utils\countries.py:79 msgid "France" msgstr "Frankreich" -#: src/utils/countries.py:80 +#: .\utils\countries.py:80 msgid "French Guiana" msgstr "Französisch-Guayana" -#: src/utils/countries.py:81 +#: .\utils\countries.py:81 msgid "French Polynesia" msgstr "Französisch-Polynesien" -#: src/utils/countries.py:82 +#: .\utils\countries.py:82 msgid "French Southern Territories" msgstr "Französisch Südliche Territorien" -#: src/utils/countries.py:83 +#: .\utils\countries.py:83 msgid "Gabon" msgstr "Gabun" -#: src/utils/countries.py:84 +#: .\utils\countries.py:84 msgid "Gambia" msgstr "Gambia" -#: src/utils/countries.py:85 +#: .\utils\countries.py:85 msgid "Georgia" msgstr "Georgia" -#: src/utils/countries.py:86 +#: .\utils\countries.py:86 msgid "Germany" msgstr "Deutschland" -#: src/utils/countries.py:87 +#: .\utils\countries.py:87 msgid "Ghana" msgstr "Ghana" -#: src/utils/countries.py:88 +#: .\utils\countries.py:88 msgid "Gibraltar" msgstr "Gibraltar" -#: src/utils/countries.py:89 +#: .\utils\countries.py:89 msgid "Greece" msgstr "Griechenland" -#: src/utils/countries.py:90 +#: .\utils\countries.py:90 msgid "Greenland" msgstr "Grönland" -#: src/utils/countries.py:91 +#: .\utils\countries.py:91 msgid "Grenada" msgstr "Grenada" -#: src/utils/countries.py:92 +#: .\utils\countries.py:92 msgid "Guadeloupe" msgstr "Guadeloupe" -#: src/utils/countries.py:93 +#: .\utils\countries.py:93 msgid "Guam" msgstr "Guam" -#: src/utils/countries.py:94 +#: .\utils\countries.py:94 msgid "Guatemala" msgstr "Guatemala" -#: src/utils/countries.py:95 +#: .\utils\countries.py:95 msgid "Guernsey" msgstr "Guernsey" -#: src/utils/countries.py:96 +#: .\utils\countries.py:96 msgid "Guinea" msgstr "Guinea" -#: src/utils/countries.py:97 +#: .\utils\countries.py:97 msgid "Guinea-Bissau" msgstr "Guinea-Bissau" -#: src/utils/countries.py:98 +#: .\utils\countries.py:98 msgid "Guyana" msgstr "Guyana" -#: src/utils/countries.py:99 +#: .\utils\countries.py:99 msgid "Haiti" msgstr "Haiti" -#: src/utils/countries.py:100 +#: .\utils\countries.py:100 msgid "Heard Island and McDonald Islands" msgstr "Heard und McDonald Inseln" -#: src/utils/countries.py:101 +#: .\utils\countries.py:101 msgid "Holy See (Vatican City State)" msgstr "Heiliger Stuhl (Vatikanstadt)" -#: src/utils/countries.py:102 +#: .\utils\countries.py:102 msgid "Honduras" msgstr "Honduras" -#: src/utils/countries.py:103 +#: .\utils\countries.py:103 msgid "Hong Kong" msgstr "Hongkong" -#: src/utils/countries.py:104 +#: .\utils\countries.py:104 msgid "Hungary" msgstr "Ungarn" -#: src/utils/countries.py:105 +#: .\utils\countries.py:105 msgid "Iceland" msgstr "Island" -#: src/utils/countries.py:106 +#: .\utils\countries.py:106 msgid "India" msgstr "Indien" -#: src/utils/countries.py:107 +#: .\utils\countries.py:107 msgid "Indonesia" msgstr "Indonesien" -#: src/utils/countries.py:108 +#: .\utils\countries.py:108 msgid "Iran, Islamic Republic of" msgstr "Iran, Islamische Republik" -#: src/utils/countries.py:109 +#: .\utils\countries.py:109 msgid "Iraq" msgstr "Irak" -#: src/utils/countries.py:110 +#: .\utils\countries.py:110 msgid "Ireland" msgstr "Irland" -#: src/utils/countries.py:111 +#: .\utils\countries.py:111 msgid "Isle of Man" msgstr "Isle of Man" -#: src/utils/countries.py:112 +#: .\utils\countries.py:112 msgid "Israel" msgstr "Israel" -#: src/utils/countries.py:113 +#: .\utils\countries.py:113 msgid "Italy" msgstr "Italien" -#: src/utils/countries.py:114 +#: .\utils\countries.py:114 msgid "Jamaica" msgstr "Jamaika" -#: src/utils/countries.py:115 +#: .\utils\countries.py:115 msgid "Japan" msgstr "Japan" -#: src/utils/countries.py:116 +#: .\utils\countries.py:116 msgid "Jersey" msgstr "Jersey" -#: src/utils/countries.py:117 +#: .\utils\countries.py:117 msgid "Jordan" msgstr "Jordan" -#: src/utils/countries.py:118 +#: .\utils\countries.py:118 msgid "Kazakhstan" msgstr "Kasachstan" -#: src/utils/countries.py:119 +#: .\utils\countries.py:119 msgid "Kenya" msgstr "Kenia" -#: src/utils/countries.py:120 +#: .\utils\countries.py:120 msgid "Kiribati" msgstr "Kiribati" -#: src/utils/countries.py:121 +#: .\utils\countries.py:121 msgid "Korea, Democratic People's Republic of" msgstr "Korea, Demokratische Volksrepublik" -#: src/utils/countries.py:122 +#: .\utils\countries.py:122 msgid "Korea, Republic of" msgstr "Korea, Republik" -#: src/utils/countries.py:123 +#: .\utils\countries.py:123 msgid "Kuwait" msgstr "Kuwait" -#: src/utils/countries.py:124 +#: .\utils\countries.py:124 msgid "Kyrgyzstan" msgstr "Kirgisistan" -#: src/utils/countries.py:125 +#: .\utils\countries.py:125 msgid "Lao People's Democratic Republic" msgstr "Lao Demokratischen Volksrepublik" -#: src/utils/countries.py:126 +#: .\utils\countries.py:126 msgid "Latvia" msgstr "Lettland" -#: src/utils/countries.py:127 +#: .\utils\countries.py:127 msgid "Lebanon" msgstr "Libanon" -#: src/utils/countries.py:128 +#: .\utils\countries.py:128 msgid "Lesotho" msgstr "Lesotho" -#: src/utils/countries.py:129 +#: .\utils\countries.py:129 msgid "Liberia" msgstr "Liberia" -#: src/utils/countries.py:130 +#: .\utils\countries.py:130 msgid "Libyan Arab Jamahiriya" msgstr "Libyen" -#: src/utils/countries.py:131 +#: .\utils\countries.py:131 msgid "Liechtenstein" msgstr "Liechtenstein" -#: src/utils/countries.py:132 +#: .\utils\countries.py:132 msgid "Lithuania" msgstr "Litauen" -#: src/utils/countries.py:133 +#: .\utils\countries.py:133 msgid "Luxembourg" msgstr "Luxemburg" -#: src/utils/countries.py:134 +#: .\utils\countries.py:134 msgid "Macao" msgstr "Macao" -#: src/utils/countries.py:135 +#: .\utils\countries.py:135 msgid "Macedonia, The Former Yugoslav Republic of" msgstr "Mazedonien, die ehemalige jugoslawische Republik" -#: src/utils/countries.py:136 +#: .\utils\countries.py:136 msgid "Madagascar" msgstr "Madagaskar" -#: src/utils/countries.py:137 +#: .\utils\countries.py:137 msgid "Malawi" msgstr "Malawi" -#: src/utils/countries.py:138 +#: .\utils\countries.py:138 msgid "Malaysia" msgstr "Malaysia" -#: src/utils/countries.py:139 +#: .\utils\countries.py:139 msgid "Maldives" msgstr "Malediven" -#: src/utils/countries.py:140 +#: .\utils\countries.py:140 msgid "Mali" msgstr "Mali" -#: src/utils/countries.py:141 +#: .\utils\countries.py:141 msgid "Malta" msgstr "Malta" -#: src/utils/countries.py:142 +#: .\utils\countries.py:142 msgid "Marshall Islands" msgstr "Marshall Islands" -#: src/utils/countries.py:143 +#: .\utils\countries.py:143 msgid "Martinique" msgstr "Martinique" -#: src/utils/countries.py:144 +#: .\utils\countries.py:144 msgid "Mauritania" msgstr "Mauretanien" -#: src/utils/countries.py:145 +#: .\utils\countries.py:145 msgid "Mauritius" msgstr "Mauritius" -#: src/utils/countries.py:146 +#: .\utils\countries.py:146 msgid "Mayotte" msgstr "Mayotte" -#: src/utils/countries.py:147 +#: .\utils\countries.py:147 msgid "Mexico" msgstr "Mexiko" -#: src/utils/countries.py:148 +#: .\utils\countries.py:148 msgid "Micronesia, Federated States of" msgstr "Mikronesien, Föderierte Staaten von" -#: src/utils/countries.py:149 +#: .\utils\countries.py:149 msgid "Moldova" msgstr "Moldawien" -#: src/utils/countries.py:150 +#: .\utils\countries.py:150 msgid "Monaco" msgstr "Monaco" -#: src/utils/countries.py:151 +#: .\utils\countries.py:151 msgid "Mongolia" msgstr "Mongolei" -#: src/utils/countries.py:152 +#: .\utils\countries.py:152 msgid "Montenegro" msgstr "Montenegro" -#: src/utils/countries.py:153 +#: .\utils\countries.py:153 msgid "Montserrat" msgstr "Montserrat" -#: src/utils/countries.py:154 +#: .\utils\countries.py:154 msgid "Morocco" msgstr "Marokko" -#: src/utils/countries.py:155 +#: .\utils\countries.py:155 msgid "Mozambique" msgstr "Mosambik" -#: src/utils/countries.py:156 +#: .\utils\countries.py:156 msgid "Myanmar" msgstr "Myanmar" -#: src/utils/countries.py:157 +#: .\utils\countries.py:157 msgid "Namibia" msgstr "Namibia" -#: src/utils/countries.py:158 +#: .\utils\countries.py:158 msgid "Nauru" msgstr "Nauru" -#: src/utils/countries.py:159 +#: .\utils\countries.py:159 msgid "Nepal" msgstr "Nepal" -#: src/utils/countries.py:160 +#: .\utils\countries.py:160 msgid "Netherlands" msgstr "Niederlande" -#: src/utils/countries.py:161 +#: .\utils\countries.py:161 msgid "Netherlands Antilles" msgstr "Niederländische Antillen" -#: src/utils/countries.py:162 +#: .\utils\countries.py:162 msgid "New Caledonia" msgstr "Neukaledonien" -#: src/utils/countries.py:163 +#: .\utils\countries.py:163 msgid "New Zealand" msgstr "New Zealand" -#: src/utils/countries.py:164 +#: .\utils\countries.py:164 msgid "Nicaragua" msgstr "Nicaragua" -#: src/utils/countries.py:165 +#: .\utils\countries.py:165 msgid "Niger" msgstr "Niger" -#: src/utils/countries.py:166 +#: .\utils\countries.py:166 msgid "Nigeria" msgstr "Nigeria" -#: src/utils/countries.py:167 +#: .\utils\countries.py:167 msgid "Niue" msgstr "Niue" -#: src/utils/countries.py:168 +#: .\utils\countries.py:168 msgid "Norfolk Island" msgstr "Norfolk Island" -#: src/utils/countries.py:169 +#: .\utils\countries.py:169 msgid "Northern Mariana Islands" msgstr "Northern Mariana Islands" -#: src/utils/countries.py:170 +#: .\utils\countries.py:170 msgid "Norway" msgstr "Norwegen" -#: src/utils/countries.py:171 +#: .\utils\countries.py:171 msgid "Oman" msgstr "Oman" -#: src/utils/countries.py:172 +#: .\utils\countries.py:172 msgid "Pakistan" msgstr "Pakistan" -#: src/utils/countries.py:173 +#: .\utils\countries.py:173 msgid "Palau" msgstr "Palau" -#: src/utils/countries.py:174 +#: .\utils\countries.py:174 msgid "Palestinian Territory, Occupied" msgstr "Palästinensische Autonomiegebiete" -#: src/utils/countries.py:175 +#: .\utils\countries.py:175 msgid "Panama" msgstr "Panama" -#: src/utils/countries.py:176 +#: .\utils\countries.py:176 msgid "Papua New Guinea" msgstr "Papua-Neuguinea" -#: src/utils/countries.py:177 +#: .\utils\countries.py:177 msgid "Paraguay" msgstr "Paraguay" -#: src/utils/countries.py:178 +#: .\utils\countries.py:178 msgid "Peru" msgstr "Peru" -#: src/utils/countries.py:179 +#: .\utils\countries.py:179 msgid "Philippines" msgstr "Philippinen" -#: src/utils/countries.py:180 +#: .\utils\countries.py:180 msgid "Pitcairn" msgstr "Pitcairn" -#: src/utils/countries.py:181 +#: .\utils\countries.py:181 msgid "Poland" msgstr "Polen" -#: src/utils/countries.py:182 +#: .\utils\countries.py:182 msgid "Portugal" msgstr "Portugal" -#: src/utils/countries.py:183 +#: .\utils\countries.py:183 msgid "Puerto Rico" msgstr "Puerto Rico" -#: src/utils/countries.py:184 +#: .\utils\countries.py:184 msgid "Qatar" msgstr "Katar" -#: src/utils/countries.py:185 +#: .\utils\countries.py:185 msgid "Reunion" msgstr "Wiedervereinigung" -#: src/utils/countries.py:186 +#: .\utils\countries.py:186 msgid "Romania" msgstr "Rumänien" -#: src/utils/countries.py:187 +#: .\utils\countries.py:187 msgid "Russian Federation" msgstr "Russischen Föderation" -#: src/utils/countries.py:188 +#: .\utils\countries.py:188 msgid "Rwanda" msgstr "Ruanda" -#: src/utils/countries.py:189 +#: .\utils\countries.py:189 msgid "Saint Barthelemy" msgstr "Saint Barthelemy" -#: src/utils/countries.py:190 +#: .\utils\countries.py:190 msgid "Saint Helena" msgstr "Saint Helena" -#: src/utils/countries.py:191 +#: .\utils\countries.py:191 msgid "Saint Kitts and Nevis" msgstr "Saint Kitts und Nevis" -#: src/utils/countries.py:192 +#: .\utils\countries.py:192 msgid "Saint Lucia" msgstr "Santa Lucia" -#: src/utils/countries.py:193 +#: .\utils\countries.py:193 msgid "Saint Martin" msgstr "Santa Martin" -#: src/utils/countries.py:194 +#: .\utils\countries.py:194 msgid "Saint Pierre and Miquelon" msgstr "Saint Pierre und Miquelon" -#: src/utils/countries.py:195 +#: .\utils\countries.py:195 msgid "Saint Vincent and the Grenadines" msgstr "Saint Vincent und die Grenadinen" -#: src/utils/countries.py:196 +#: .\utils\countries.py:196 msgid "Samoa" msgstr "Samoa" -#: src/utils/countries.py:197 +#: .\utils\countries.py:197 msgid "San Marino" msgstr "San Marino" -#: src/utils/countries.py:198 +#: .\utils\countries.py:198 msgid "Sao Tome and Principe" msgstr "Sao Tome und Principe" -#: src/utils/countries.py:199 +#: .\utils\countries.py:199 msgid "Saudi Arabia" msgstr "Saudi-Arabien" -#: src/utils/countries.py:200 +#: .\utils\countries.py:200 msgid "Senegal" msgstr "Senegal" -#: src/utils/countries.py:201 +#: .\utils\countries.py:201 msgid "Serbia" msgstr "Serbien" -#: src/utils/countries.py:202 +#: .\utils\countries.py:202 msgid "Seychelles" msgstr "Seychellen" -#: src/utils/countries.py:203 +#: .\utils\countries.py:203 msgid "Sierra Leone" msgstr "Sierra Leone" -#: src/utils/countries.py:204 +#: .\utils\countries.py:204 msgid "Singapore" msgstr "Singapur" -#: src/utils/countries.py:205 +#: .\utils\countries.py:205 msgid "Slovakia" msgstr "Slowakei" -#: src/utils/countries.py:206 +#: .\utils\countries.py:206 msgid "Slovenia" msgstr "Slowenien" -#: src/utils/countries.py:207 +#: .\utils\countries.py:207 msgid "Solomon Islands" msgstr "Salomon-Inseln" -#: src/utils/countries.py:208 +#: .\utils\countries.py:208 msgid "Somalia" msgstr "Somalia" -#: src/utils/countries.py:209 +#: .\utils\countries.py:209 msgid "South Africa" msgstr "Südafrika" -#: src/utils/countries.py:210 +#: .\utils\countries.py:210 msgid "South Georgia and the South Sandwich Islands" msgstr "Südgeorgien und die Südlichen Sandwichinseln" -#: src/utils/countries.py:211 +#: .\utils\countries.py:211 msgid "Spain" msgstr "Spanien" -#: src/utils/countries.py:212 +#: .\utils\countries.py:212 msgid "Sri Lanka" msgstr "Sri Lanka" -#: src/utils/countries.py:213 +#: .\utils\countries.py:213 msgid "Sudan" msgstr "Sudan" -#: src/utils/countries.py:214 +#: .\utils\countries.py:214 msgid "Suriname" msgstr "Suriname" -#: src/utils/countries.py:215 +#: .\utils\countries.py:215 msgid "Svalbard and Jan Mayen" msgstr "Svalbard und Jan Mayen" -#: src/utils/countries.py:216 +#: .\utils\countries.py:216 msgid "Swaziland" msgstr "Swaziland" -#: src/utils/countries.py:217 +#: .\utils\countries.py:217 msgid "Sweden" msgstr "Schweden" -#: src/utils/countries.py:218 +#: .\utils\countries.py:218 msgid "Switzerland" msgstr "Schweiz" -#: src/utils/countries.py:219 +#: .\utils\countries.py:219 msgid "Syrian Arab Republic" msgstr "Arabische Republik Syrien" -#: src/utils/countries.py:220 +#: .\utils\countries.py:220 msgid "Taiwan, Province of China" msgstr "Taiwan, Province of China" -#: src/utils/countries.py:221 +#: .\utils\countries.py:221 msgid "Tajikistan" msgstr "Tadschikistan" -#: src/utils/countries.py:222 +#: .\utils\countries.py:222 msgid "Tanzania, United Republic of" msgstr "Tansania, Vereinigte Republik" -#: src/utils/countries.py:223 +#: .\utils\countries.py:223 msgid "Thailand" msgstr "Thailand" -#: src/utils/countries.py:224 +#: .\utils\countries.py:224 msgid "Timor-Leste" msgstr "Timor-Leste" -#: src/utils/countries.py:225 +#: .\utils\countries.py:225 msgid "Togo" msgstr "Togo" -#: src/utils/countries.py:226 +#: .\utils\countries.py:226 msgid "Tokelau" msgstr "Tokelau" -#: src/utils/countries.py:227 +#: .\utils\countries.py:227 msgid "Tonga" msgstr "Tonga" -#: src/utils/countries.py:228 +#: .\utils\countries.py:228 msgid "Trinidad and Tobago" msgstr "Trinidad und Tobago" -#: src/utils/countries.py:229 +#: .\utils\countries.py:229 msgid "Tunisia" msgstr "Tunesien" -#: src/utils/countries.py:230 +#: .\utils\countries.py:230 msgid "Turkey" msgstr "Türkei" -#: src/utils/countries.py:231 +#: .\utils\countries.py:231 msgid "Turkmenistan" msgstr "Turkmenistan" -#: src/utils/countries.py:232 +#: .\utils\countries.py:232 msgid "Turks and Caicos Islands" msgstr "Turks-und Caicosinseln" -#: src/utils/countries.py:233 +#: .\utils\countries.py:233 msgid "Tuvalu" msgstr "Tuvalu" -#: src/utils/countries.py:234 +#: .\utils\countries.py:234 msgid "Uganda" msgstr "Uganda" -#: src/utils/countries.py:235 +#: .\utils\countries.py:235 msgid "Ukraine" msgstr "Ukraine" -#: src/utils/countries.py:236 +#: .\utils\countries.py:236 msgid "United Arab Emirates" msgstr "Vereinigte Arabische Emirate" -#: src/utils/countries.py:237 +#: .\utils\countries.py:237 msgid "United States" msgstr "Vereinigte Staaten" -#: src/utils/countries.py:238 +#: .\utils\countries.py:238 msgid "United States Minor Outlying Islands" msgstr "United States Minor Outlying Islands" -#: src/utils/countries.py:239 +#: .\utils\countries.py:239 msgid "Uruguay" msgstr "Uruguay" -#: src/utils/countries.py:240 +#: .\utils\countries.py:240 msgid "Uzbekistan" msgstr "Usbekistan" -#: src/utils/countries.py:241 +#: .\utils\countries.py:241 msgid "Vanuatu" msgstr "Vanuatu" -#: src/utils/countries.py:242 +#: .\utils\countries.py:242 msgid "Venezuela" msgstr "Venezuela" -#: src/utils/countries.py:243 +#: .\utils\countries.py:243 msgid "Viet Nam" msgstr "Vietnam" -#: src/utils/countries.py:244 +#: .\utils\countries.py:244 msgid "Virgin Islands, British" msgstr "Virgin Islands, British" -#: src/utils/countries.py:245 +#: .\utils\countries.py:245 msgid "Virgin Islands, U.S." msgstr "Virgin Islands, US" -#: src/utils/countries.py:246 +#: .\utils\countries.py:246 msgid "Wallis and Futuna" msgstr "Wallis und Futuna" -#: src/utils/countries.py:247 +#: .\utils\countries.py:247 msgid "Western Sahara" msgstr "Westsahara" -#: src/utils/countries.py:248 +#: .\utils\countries.py:248 msgid "Yemen" msgstr "Jemen" -#: src/utils/countries.py:249 +#: .\utils\countries.py:249 msgid "Zambia" msgstr "Sambia" -#: src/utils/countries.py:250 +#: .\utils\countries.py:250 msgid "Zimbabwe" msgstr "Zimbabwe"