From a6c48f8d712ced0009488133692b2d3dc3fc4855 Mon Sep 17 00:00:00 2001 From: iAddz Date: Sun, 12 Feb 2017 04:04:18 +0000 Subject: [PATCH] Localisation & German translation updates (#701) --- alliance_auth/urls.py | 6 +- authentication/views.py | 13 +- corputils/templates/corputils/base.html | 6 +- corputils/templates/corputils/corpstats.html | 14 +- corputils/templates/corputils/search.html | 16 +- corputils/views.py | 7 +- eveonline/views.py | 25 +- .../characternotexisting.html | 9 +- .../fleetactivitytracking/fatlinkmodify.html | 4 +- .../fatlinkpersonalmonthlystatisticsview.html | 2 +- .../fatlinkpersonalstatisticsview.html | 2 +- .../fleetactivitytracking/fatlinkview.html | 6 +- fleetactivitytracking/views.py | 7 +- groupmanagement/views.py | 41 +- locale/de/LC_MESSAGES/django.mo | Bin 25388 -> 31257 bytes locale/de/LC_MESSAGES/django.po | 2393 +++++++++-------- notifications/views.py | 11 +- optimer/views.py | 7 +- .../registered/discord_service_ctrl.html | 2 +- services/views.py | 3 +- srp/form.py | 2 +- srp/views.py | 53 +- stock/templates/public/base.html | 4 +- stock/templates/public/login.html | 2 +- stock/templates/public/register.html | 2 +- stock/templates/registered/addapikey.html | 12 +- stock/templates/registered/addoperation.html | 2 +- stock/templates/registered/addtimer.html | 2 +- stock/templates/registered/apisso.html | 9 +- stock/templates/registered/dashboard.html | 6 +- .../registered/fleetupdoctrinesview.html | 2 +- .../templates/registered/groupmanagement.html | 4 +- .../registered/groupmanagementmenu.html | 2 +- stock/templates/registered/groupmembers.html | 2 +- .../templates/registered/groupmembership.html | 2 +- stock/templates/registered/groups.html | 2 +- .../registered/hrapplicationmanagement.html | 4 +- .../registered/hrapplicationsearchview.html | 2 +- .../registered/hrapplicationview.html | 4 +- .../registered/notification_list.html | 8 +- .../registered/operationmanagement.html | 2 +- .../registered/service_credentials.html | 7 +- stock/templates/registered/srpfleetdata.html | 2 +- stock/templates/registered/srpmanagement.html | 4 +- .../templates/registered/timermanagement.html | 4 +- timerboard/views.py | 9 +- 46 files changed, 1426 insertions(+), 1302 deletions(-) diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py index 9f3c2a64..5ccbc7dc 100755 --- a/alliance_auth/urls.py +++ b/alliance_auth/urls.py @@ -36,9 +36,6 @@ urlpatterns = [ url(r'^sso/', include(esi.urls, namespace='esi')), url(r'^sso/login$', authentication.views.sso_login, name='auth_sso_login'), - # Corputils - url(r'^corpstats/', include(corputils.urls, namespace='corputils')), - # Index url(_(r'^$'), authentication.views.index_view, name='auth_index'), @@ -107,6 +104,9 @@ urlpatterns += i18n_patterns( url(_(r'^refresh_api_pair/([0-9]+)/$'), eveonline.views.user_refresh_api, name='auth_user_refresh_api'), url(_(r'^delete_api_pair/(\w+)/$'), eveonline.views.api_key_removal, name='auth_api_key_removal'), url(_(r'^characters/'), eveonline.views.characters_view, name='auth_characters'), + + # Corputils + url(_(r'^corpstats/'), include(corputils.urls, namespace='corputils')), # Group management url(_(r'^groups/'), groupmanagement.views.groups_view, name='auth_groups'), diff --git a/authentication/views.py b/authentication/views.py index 8663cd81..14e237d7 100644 --- a/authentication/views.py +++ b/authentication/views.py @@ -4,6 +4,7 @@ from django.contrib.auth import logout from django.contrib.auth import authenticate from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required +from django.utils.translation import ugettext_lazy as _ from eveonline.managers import EveManager from eveonline.models import EveCharacter from authentication.models import AuthServicesInfo @@ -34,10 +35,10 @@ def login_user(request): return redirect(redirect_to) else: logger.info("Login attempt failed for user %s: user marked inactive." % user) - messages.warning(request, 'Your account has been disabled.') + messages.warning(request, _('Your account has been disabled.')) else: logger.info("Failed login attempt: provided username %s" % form.cleaned_data['username']) - messages.error(request, 'Username/password invalid.') + messages.error(request, _('Username/password invalid.')) return render(request, 'public/login.html', context={'form': form}) else: logger.debug("Providing new login form.") @@ -68,7 +69,7 @@ def register_user_view(request): user.save() logger.info("Created new user %s" % user) login(request, user) - messages.warning(request, 'Add an API key to set up your account.') + messages.warning(request, _('Add an API key to set up your account.')) return redirect("auth_dashboard") else: @@ -106,10 +107,10 @@ def sso_login(request, token): token.save() return redirect('auth_dashboard') else: - messages.error(request, 'Your account has been disabled.') + messages.error(request, _('Your account has been disabled.')) else: messages.warning(request, - 'Authenticated character has no owning account. Please log in with username and password.') + _('Authenticated character has no owning account. Please log in with username and password.')) except EveCharacter.DoesNotExist: - messages.error(request, 'No account exists with the authenticated character. Please create an account first.') + messages.error(request, _('No account exists with the authenticated character. Please create an account first.')) return redirect(login_user) diff --git a/corputils/templates/corputils/base.html b/corputils/templates/corputils/base.html index 476a5974..e93921fa 100644 --- a/corputils/templates/corputils/base.html +++ b/corputils/templates/corputils/base.html @@ -10,7 +10,7 @@
diff --git a/corputils/templates/corputils/corpstats.html b/corputils/templates/corputils/corpstats.html index 48a70eb5..eba8958a 100644 --- a/corputils/templates/corputils/corpstats.html +++ b/corputils/templates/corputils/corpstats.html @@ -38,10 +38,10 @@
-

Members

+

{% trans "Members" %}

- Last update: {{ corpstats.last_updated|naturaltime }} + {% trans "Last update:" %} {{ corpstats.last_updated|naturaltime }} {% if corpstats.can_update %} @@ -57,14 +57,14 @@ - + {% if corpstats.show_apis %} {% endif %} - - - - + + + + {% for member in members %} diff --git a/corputils/templates/corputils/search.html b/corputils/templates/corputils/search.html index 9345b9eb..413fb0ea 100644 --- a/corputils/templates/corputils/search.html +++ b/corputils/templates/corputils/search.html @@ -5,7 +5,7 @@ {% block member_data %}
-
Search Results
+
{% trans "Search Results" %}
@@ -14,13 +14,13 @@
Character{% trans "Character" %}APIzKillboardMain CharacterMain CorporationMain Alliance{% trans "zKillboard" %}{% trans "Main Character" %}{% trans "Main Corporation" %}{% trans "Main Alliance" %}
- - - - - - - + + + + + + + {% for result in results %} diff --git a/corputils/views.py b/corputils/views.py index b98613f9..9374a28d 100644 --- a/corputils/views.py +++ b/corputils/views.py @@ -6,6 +6,7 @@ from django.contrib import messages from django.core.exceptions import PermissionDenied from django.db import IntegrityError from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger +from django.utils.translation import ugettext_lazy as _ from django.conf import settings from eveonline.models import EveCharacter, EveCorporationInfo from corputils.models import CorpStats @@ -50,11 +51,11 @@ def corpstats_add(request, token): if CorpStats.objects.filter(pk=cs.pk).visible_to(request.user).exists(): return redirect('corputils:view_corp', corp_id=corp.corporation_id) except EveCorporationInfo.DoesNotExist: - messages.error(request, 'Unrecognized corporation. Please ensure it is a member of the alliance or a blue.') + messages.error(request, _('Unrecognized corporation. Please ensure it is a member of the alliance or a blue.')) except IntegrityError: - messages.error(request, 'Selected corp already has a statistics module.') + messages.error(request, _('Selected corp already has a statistics module.')) except AssertionError: - messages.error(request, 'Failed to gather corporation statistics with selected token.') + messages.error(request, _('Failed to gather corporation statistics with selected token.')) return redirect('corputils:view') diff --git a/eveonline/views.py b/eveonline/views.py index e490b257..ae585464 100755 --- a/eveonline/views.py +++ b/eveonline/views.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ from eveonline.forms import UpdateKeyForm from eveonline.managers import EveManager from authentication.managers import AuthServicesInfoManager @@ -49,7 +50,7 @@ def add_api_key(request): not EveCharacter.objects.filter(character_id=c.id).exists()] logger.info("Successfully processed api add form for user %s" % request.user) if not settings.API_SSO_VALIDATION: - messages.success(request, 'Added API key %s to your account.' % form.cleaned_data['api_id']) + messages.success(request, _('Added API key %(apiid)s to your account.') % {"apiid": form.cleaned_data['api_id']}) auth = AuthServicesInfo.objects.get(user=request.user) if not auth.main_char_id: return redirect('auth_characters') @@ -73,11 +74,11 @@ def api_sso_validate(request, token, api_id): api = get_object_or_404(EveApiKeyPair, api_id=api_id) if api.user and api.user != request.user: logger.warning('User %s attempting to take ownership of api %s from %s' % (request.user, api_id, api.user)) - messages.warning(request, 'API %s already claimed by user %s' % (api_id, api.user)) + messages.warning(request, _('API %(apiid)s already claimed by user %(user)s') % {"apiid": api_id, "user": api.user}) return redirect('auth_dashboard') elif api.sso_verified: logger.debug('API %s has already been verified.' % api_id) - messages.info(request, 'API %s has already been verified' % api_id) + messages.info(request, _('API %(apiid)s has already been verified') % {"apiid": api_id}) return redirect('auth_dashboard') logger.debug('API %s has not been verified. Checking if token for %s matches.' % (api_id, token.character_name)) characters = EveApiManager.get_characters_from_api(api.api_id, api.api_key).result @@ -86,14 +87,14 @@ def api_sso_validate(request, token, api_id): api.sso_verified = True api.save() EveCharacter.objects.filter(character_id__in=characters).update(user=request.user, api_id=api_id) - messages.success(request, 'Confirmed ownership of API %s' % api.api_id) + messages.success(request, _('Confirmed ownership of API %(apiid)s') % {"apiid": api.api_id}) auth = AuthServicesInfo.objects.get(user=request.user) if not auth.main_char_id: return redirect('auth_characters') return redirect('auth_dashboard') else: - messages.warning(request, '%s not found on API %s. Please SSO as a character on the API.' % ( - token.character_name, api.api_id)) + messages.warning(request, _('%(character)s not found on API %(apiid)s. Please SSO as a character on the API.') % { + "character": token.character_name, "apiid": api.api_id}) return render(request, 'registered/apisso.html', context={'api': api}) @@ -127,7 +128,7 @@ def api_key_removal(request, api_id): authinfo = AuthServicesInfo.objects.get(user=request.user) EveManager.delete_api_key_pair(api_id, request.user.id) EveManager.delete_characters_by_api_id(api_id, request.user.id) - messages.success(request, 'Deleted API key %s' % api_id) + messages.success(request, _('Deleted API key %(apiid)s') % {"apiid": api_id}) logger.info("Succesfully processed api delete request by user %s for api %s" % (request.user, api_id)) if not EveCharacter.objects.filter(character_id=authinfo.main_char_id).exists(): authinfo.main_char_id = None @@ -150,10 +151,10 @@ def main_character_change(request, char_id): if EveCharacter.objects.filter(character_id=char_id).exists() and EveCharacter.objects.get( character_id=char_id).user == request.user: AuthServicesInfoManager.update_main_char_id(char_id, request.user) - messages.success(request, 'Changed main character ID to %s' % char_id) + messages.success(request, _('Changed main character ID to %(charid)s') % {"charid": char_id}) set_state(request.user) return redirect("auth_dashboard") - messages.error(request, 'Failed to change main character - selected character is not owned by your account.') + messages.error(request, _('Failed to change main character - selected character is not owned by your account.')) return redirect("auth_characters") @@ -164,12 +165,12 @@ def user_refresh_api(request, api_id): api_key_pair = EveApiKeyPair.objects.get(api_id=api_id) if api_key_pair.user == request.user: refresh_api(api_key_pair) - messages.success(request, 'Refreshed API key %s' % api_id) + messages.success(request, _('Refreshed API key %(apiid)s') % {"apiid": api_id}) set_state(request.user) else: - messages.warning(request, 'You are not authorized to refresh that API key.') + messages.warning(request, _('You are not authorized to refresh that API key.')) logger.warn("User %s not authorized to refresh api id %s" % (request.user, api_id)) else: - messages.warning(request, 'Unable to locate API key %s' % api_id) + messages.warning(request, _('Unable to locate API key %(apiid)s') % {"apiid": api_id}) logger.warn("User %s unable to refresh api id %s - api key not found" % (request.user, api_id)) return redirect("auth_dashboard") diff --git a/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html b/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html index b976c4df..67d76c67 100644 --- a/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html +++ b/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html @@ -1,8 +1,9 @@ {% extends 'public/base.html' %} +{% load i18n %} {% block title %}Fleet Participation{% endblock %} -{% block page_title %}Fleet Participation{% endblock %} +{% block page_title %}{% trans "Fleet Participation" %}{% endblock %}
-

Character not found!

+

{% trans "Character not found!" %}

@@ -13,8 +14,8 @@
- - This character is not part of any registered API-key. You must go to API key management and add an API with the character on before being able to click fleet attendance links. + + {% trans "This character is not part of any registered API-key. You must go to" %} {% trans "API key management and add an API with the character on before being able to click fleet attendance links." %}
diff --git a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html index aba5c80c..d30ac0f4 100644 --- a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html +++ b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html @@ -8,7 +8,7 @@ {% block content %}
-

{% blocktrans %}Edit fatlink "{{ fatlink }}"{% endblocktrans %} +

{% trans "Edit fatlink" %} "{{ fatlink }}"

{% if fat.station != "No Station" %} - + {% else %} {% endif %} diff --git a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html index 175e18d8..baa7dace 100644 --- a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html +++ b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html @@ -8,7 +8,7 @@ {% block content %}
-

{% trans "Participation data statistics for" %} {{ month }}, {{ year }} +

{% blocktrans %}Participation data statistics for {{ month }}, {{ year }}{% endblocktrans %} {% if char_id %}
{% trans "Previous month" %} diff --git a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html index 7be60991..18cec487 100644 --- a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html +++ b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html @@ -8,7 +8,7 @@ {% block content %}
-

{% trans "Participation data statistics for" %} {{ year }} +

{% blocktrans %}Participation data statistics for {{ year }}{% endblocktrans %}
{% trans "Previous year" %} {% if next_year %} diff --git a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html index c92680b7..ed85490a 100644 --- a/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html +++ b/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html @@ -36,7 +36,7 @@

{% if fat.station != "No Station" %} - + {% else %} {% endif %} @@ -46,7 +46,7 @@ {% endfor %}
CharacterCorporationAPIzKillboardMain CharacterMain CorporationMain Alliance{% trans "Character" %}{% trans "Corporation" %}{% trans "API" %}{% trans "zKillboard" %}{% trans "Main Character" %}{% trans "Main Corporation" %}{% trans "Main Alliance" %}
{{ fat.user }} {{ fat.character.character_name }}Docked in {{ fat.system }}{% blocktrans %}Docked in {{ fat.system }}{% endblocktrans %}{{ fat.system }}{{ fat.fatlink.name }} {{ fat.character.character_name }}Docked in {{ fat.system }}{% blocktrans %}Docked in {{ fat.system }}{% endblocktrans %}{{ fat.system }}
{% else %} -
No fleet activity on record.
+
{% trans "No fleet activity on record." %}
{% endif %} {% if perms.auth.fleetactivitytracking%} @@ -95,7 +95,7 @@ {% else %} -
No created fatlinks on record.
+
{% trans "No created fatlinks on record." %}
{% endif %} {% endif %}
diff --git a/fleetactivitytracking/views.py b/fleetactivitytracking/views.py index 9fd3df75..2c3cd203 100644 --- a/fleetactivitytracking/views.py +++ b/fleetactivitytracking/views.py @@ -5,6 +5,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import permission_required from django.core.exceptions import ValidationError +from django.utils.translation import ugettext_lazy as _ from django.utils import timezone from django.contrib import messages from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger @@ -233,7 +234,7 @@ def click_fatlink_view(request, token, hash, fatname): try: fat.full_clean() fat.save() - messages.success(request, 'Fleet participation registered.') + messages.success(request, _('Fleet participation registered.')) except ValidationError as e: err_messages = [] for errorname, message in e.message_dict.items(): @@ -244,9 +245,9 @@ def click_fatlink_view(request, token, hash, fatname): 'character_name': token.character_name} return render(request, 'fleetactivitytracking/characternotexisting.html', context=context) else: - messages.error(request, 'FAT link has expired.') + messages.error(request, _('FAT link has expired.')) except (ObjectDoesNotExist, KeyError): - messages.error(request, 'Invalid FAT link.') + messages.error(request, _('Invalid FAT link.')) return redirect('auth_fatlink_view') diff --git a/groupmanagement/views.py b/groupmanagement/views.py index 9f1a3a34..30fa5995 100755 --- a/groupmanagement/views.py +++ b/groupmanagement/views.py @@ -14,6 +14,7 @@ from groupmanagement.models import GroupRequest from authentication.models import AuthServicesInfo from authentication.managers import UserState from eveonline.managers import EveManager +from django.utils.translation import ugettext_lazy as _ import logging @@ -119,12 +120,12 @@ def group_membership_remove(request, group_id, user_id): # Remove group from user user.groups.remove(group) logger.info("User %s removed user %s from group %s" % (request.user, user, group)) - messages.success(request, "Removed user %s from group %s" % (user, group)) + messages.success(request, _("Removed user %(user)s from group %(group)s.") % {"user": user, "group": group}) except ObjectDoesNotExist: - messages.warning(request, "User does not exist in that group") + messages.warning(request, _("User does not exist in that group")) except ObjectDoesNotExist: - messages.warning(request, "Group does not exist") + messages.warning(request, _("Group does not exist")) return redirect('auth_group_membership_list', group_id) @@ -149,15 +150,14 @@ def group_accept_request(request, group_request_id): notify(group_request.user, "Group Application Accepted", level="success", message="Your application to %s has been accepted." % group_request.group) messages.success(request, - 'Accepted application from %s to %s.' % (group_request.main_char, group_request.group)) + _('Accepted application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning("User %s attempted to accept group join request %s but permission was denied" % (request.user, group_request_id)) raise p except: - messages.error(request, 'An unhandled error occurred while processing the application from %s to %s.' % ( - group_request.main_char, group_request.group)) + messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) logger.exception("Unhandled exception occurred while user %s attempting to accept grouprequest id %s." % ( request.user, group_request_id)) pass @@ -182,15 +182,14 @@ def group_reject_request(request, group_request_id): notify(group_request.user, "Group Application Rejected", level="danger", message="Your application to %s has been rejected." % group_request.group) messages.success(request, - 'Rejected application from %s to %s.' % (group_request.main_char, group_request.group)) + _('Rejected application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning("User %s attempted to reject group join request %s but permission was denied" % (request.user, group_request_id)) raise p except: - messages.error(request, 'An unhandled error occured while processing the application from %s to %s.' % ( - group_request.main_char, group_request.group)) + messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) logger.exception("Unhandled exception occured while user %s attempting to reject group request id %s" % ( request.user, group_request_id)) pass @@ -218,14 +217,14 @@ def group_leave_accept_request(request, group_request_id): notify(group_request.user, "Group Leave Request Accepted", level="success", message="Your request to leave %s has been accepted." % group_request.group) messages.success(request, - 'Accepted application from %s to leave %s.' % (group_request.main_char, group_request.group)) + _('Accepted application from %(mainchar)s to leave %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning("User %s attempted to accept group leave request %s but permission was denied" % (request.user, group_request_id)) raise p except: - messages.error(request, 'An unhandled error occured while processing the application from %s to leave %s.' % ( - group_request.main_char, group_request.group)) + messages.error(request, _('An unhandled error occured while processing the application from %(mainchar)s to leave %(group)s.') % { + "mainchar": group_request.main_char, "group": group_request.group}) logger.exception("Unhandled exception occured while user %s attempting to accept group leave request id %s" % ( request.user, group_request_id)) pass @@ -250,15 +249,15 @@ def group_leave_reject_request(request, group_request_id): request.user, group_request.user, group_request.group.name)) notify(group_request.user, "Group Leave Request Rejected", level="danger", message="Your request to leave %s has been rejected." % group_request.group) - messages.success(request, 'Rejected application from %s to leave %s.' % ( - group_request.main_char, group_request.group)) + messages.success(request, _('Rejected application from %(mainchar)s to leave %(group)s.') % { + "mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning("User %s attempted to reject group leave request %s but permission was denied" % (request.user, group_request_id)) raise p except: - messages.error(request, 'An unhandled error occured while processing the application from %s to leave %s.' % ( - group_request.main_char, group_request.group)) + messages.error(request, _('An unhandled error occured while processing the application from %(mainchar)s to leave %(group)s.') % { + "mainchar": group_request.main_char, "group": group_request.group}) logger.exception("Unhandled exception occured while user %s attempting to reject group leave request id %s" % ( request.user, group_request_id)) pass @@ -296,7 +295,7 @@ def group_request_add(request, group_id): if not GroupManager.joinable_group(group): logger.warning("User %s attempted to join group id %s but it is not a joinable group" % (request.user, group_id)) - messages.warning(request, "You cannot join that group") + messages.warning(request, _("You cannot join that group")) return redirect('auth_groups') if not request.user.has_perm('groupmanagement.request_groups') and not group.authgroup.public: # Does not have the required permission, trying to join a non-public group @@ -317,7 +316,7 @@ def group_request_add(request, group_id): grouprequest.leave_request = False grouprequest.save() logger.info("Created group request for user %s to group %s" % (request.user, Group.objects.get(id=group_id))) - messages.success(request, 'Applied to group %s.' % group) + messages.success(request, _('Applied to group %(group)s.') % {"group": group}) return redirect("auth_groups") @@ -328,12 +327,12 @@ def group_request_leave(request, group_id): if not GroupManager.joinable_group(group): logger.warning("User %s attempted to leave group id %s but it is not a joinable group" % (request.user, group_id)) - messages.warning(request, "You cannot leave that group") + messages.warning(request, _("You cannot leave that group")) return redirect('auth_groups') if group not in request.user.groups.all(): logger.debug("User %s attempted to leave group id %s but they are not a member" % (request.user, group_id)) - messages.warning(request, "You are not a member of that group") + messages.warning(request, _("You are not a member of that group")) return redirect('auth_groups') if group.authgroup.open: logger.info("%s leaving %s as is an open group" % (request.user, group)) @@ -348,5 +347,5 @@ def group_request_leave(request, group_id): grouprequest.leave_request = True grouprequest.save() logger.info("Created group leave request for user %s to group %s" % (request.user, Group.objects.get(id=group_id))) - messages.success(request, 'Applied to leave group %s.' % group) + messages.success(request, _('Applied to leave group %(group)s.') % {"group": group}) return redirect("auth_groups") diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index bc43249b5fb3c74c740e1275a911c5bb7f01f5bc..1d8276ac146e5ac1452dd163612ca1aa16431c8d 100644 GIT binary patch literal 31257 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

fww`u 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 fTa=n|i#e1!drx&d%B_=o*?IVAhV\n" "Language-Team: LANGUAGE \n" @@ -15,899 +15,1176 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: alliance_auth/settings.py:83 +#: alliance_auth/settings.py:104 alliance_auth/tests/test_settings.py:92 msgid "English" msgstr "Englisch" -#: alliance_auth/settings.py:84 +#: alliance_auth/settings.py:105 alliance_auth/tests/test_settings.py:93 msgid "German" msgstr "Deutsch" -#: alliance_auth/urls.py:19 +#: alliance_auth/urls.py:39 msgid "^$" msgstr "" -#: alliance_auth/urls.py:155 +#: alliance_auth/urls.py:82 msgid "^login_user/" msgstr "" -#: alliance_auth/urls.py:156 +#: alliance_auth/urls.py:83 msgid "^register_user/" msgstr "" -#: alliance_auth/urls.py:158 +#: alliance_auth/urls.py:85 msgid "^user/password/$" msgstr "" -#: alliance_auth/urls.py:159 +#: alliance_auth/urls.py:86 msgid "^user/password/done/$" msgstr "" -#: alliance_auth/urls.py:161 +#: alliance_auth/urls.py:88 msgid "^user/password/reset/$" msgstr "" -#: alliance_auth/urls.py:163 +#: alliance_auth/urls.py:90 msgid "^user/password/password/reset/done/$" msgstr "" -#: alliance_auth/urls.py:165 +#: alliance_auth/urls.py:92 msgid "^user/password/reset/complete/$" msgstr "" -#: alliance_auth/urls.py:167 +#: alliance_auth/urls.py:94 msgid "" "^user/password/reset/confirm/(?P[0-9A-Za-z_\\-]+)/(?P.+)/$" msgstr "" -#: alliance_auth/urls.py:171 +#: alliance_auth/urls.py:98 msgid "^dashboard/$" msgstr "" -#: alliance_auth/urls.py:172 +#: alliance_auth/urls.py:99 msgid "^help/$" msgstr "" -#: alliance_auth/urls.py:175 +#: alliance_auth/urls.py:102 msgid "^add_api_key/" msgstr "" -#: alliance_auth/urls.py:176 -msgid "^api_key_management/" -msgstr "" - -#: alliance_auth/urls.py:178 +#: alliance_auth/urls.py:103 msgid "^refresh_api_pair/([0-9]+)/$" msgstr "" -#: alliance_auth/urls.py:179 +#: alliance_auth/urls.py:104 msgid "^delete_api_pair/(\\w+)/$" msgstr "" -#: alliance_auth/urls.py:180 +#: alliance_auth/urls.py:105 msgid "^characters/" msgstr "" -#: alliance_auth/urls.py:183 +#: alliance_auth/urls.py:108 +msgid "^corpstats/" +msgstr "" + +#: alliance_auth/urls.py:111 msgid "^groups/" msgstr "" -#: alliance_auth/urls.py:184 +#: alliance_auth/urls.py:112 msgid "^group/management/" msgstr "" -#: alliance_auth/urls.py:186 +#: alliance_auth/urls.py:114 +msgid "^group/membership/$" +msgstr "" + +#: alliance_auth/urls.py:116 +msgid "^group/membership/(\\w+)/$" +msgstr "" + +#: alliance_auth/urls.py:118 +msgid "^group/membership/(\\w+)/remove/(\\w+)/$" +msgstr "" + +#: alliance_auth/urls.py:120 msgid "^group/request_add/(\\w+)" msgstr "" -#: alliance_auth/urls.py:188 +#: alliance_auth/urls.py:122 msgid "^group/request/accept/(\\w+)" msgstr "" -#: alliance_auth/urls.py:190 +#: alliance_auth/urls.py:124 msgid "^group/request/reject/(\\w+)" msgstr "" -#: alliance_auth/urls.py:193 +#: alliance_auth/urls.py:127 msgid "^group/request_leave/(\\w+)" msgstr "" -#: alliance_auth/urls.py:195 +#: alliance_auth/urls.py:129 msgid "group/leave_request/accept/(\\w+)" msgstr "" -#: alliance_auth/urls.py:197 +#: alliance_auth/urls.py:131 msgid "^group/leave_request/reject/(\\w+)" msgstr "" -#: alliance_auth/urls.py:201 +#: alliance_auth/urls.py:135 msgid "^hr_application_management/" msgstr "" -#: alliance_auth/urls.py:203 +#: alliance_auth/urls.py:137 msgid "^hr_application_create/$" msgstr "" -#: alliance_auth/urls.py:205 +#: alliance_auth/urls.py:139 msgid "^hr_application_create/(\\d+)" msgstr "" -#: alliance_auth/urls.py:207 +#: alliance_auth/urls.py:141 msgid "^hr_application_remove/(\\w+)" msgstr "" -#: alliance_auth/urls.py:209 +#: alliance_auth/urls.py:143 msgid "hr_application_view/(\\w+)" msgstr "" -#: alliance_auth/urls.py:211 +#: alliance_auth/urls.py:145 msgid "hr_application_personal_view/(\\w+)" msgstr "" -#: alliance_auth/urls.py:213 +#: alliance_auth/urls.py:147 msgid "hr_application_personal_removal/(\\w+)" msgstr "" -#: alliance_auth/urls.py:216 +#: alliance_auth/urls.py:150 msgid "hr_application_approve/(\\w+)" msgstr "" -#: alliance_auth/urls.py:218 +#: alliance_auth/urls.py:152 msgid "hr_application_reject/(\\w+)" msgstr "" -#: alliance_auth/urls.py:220 +#: alliance_auth/urls.py:154 msgid "hr_application_search/" msgstr "" -#: alliance_auth/urls.py:222 +#: alliance_auth/urls.py:156 msgid "hr_mark_in_progress/(\\w+)" msgstr "" -#: alliance_auth/urls.py:226 +#: alliance_auth/urls.py:160 msgid "^optimer/$" msgstr "" -#: alliance_auth/urls.py:227 +#: alliance_auth/urls.py:161 msgid "^add_optimer/$" msgstr "" -#: alliance_auth/urls.py:228 +#: alliance_auth/urls.py:162 msgid "^remove_optimer/(\\w+)" msgstr "" -#: alliance_auth/urls.py:229 +#: alliance_auth/urls.py:163 msgid "^edit_optimer/(\\w+)$" msgstr "" -#: alliance_auth/urls.py:232 +#: alliance_auth/urls.py:166 msgid "^services/$" msgstr "" -#: alliance_auth/urls.py:233 -msgid "^services/jabber_broadcast/$" -msgstr "" - -#: alliance_auth/urls.py:240 -msgid "^corputils/$" -msgstr "" - -#: alliance_auth/urls.py:241 -msgid "^corputils/(?P[0-9]+)/$" -msgstr "" - -#: alliance_auth/urls.py:242 -msgid "^corputils/search/$" -msgstr "" - -#: alliance_auth/urls.py:243 -msgid "^corputils/search/(?P[0-9]+)/$" -msgstr "" - -#: alliance_auth/urls.py:246 +#: alliance_auth/urls.py:169 msgid "^timers/$" msgstr "" -#: alliance_auth/urls.py:247 +#: alliance_auth/urls.py:170 msgid "^add_timer/$" msgstr "" -#: alliance_auth/urls.py:248 +#: alliance_auth/urls.py:171 msgid "^remove_timer/(\\w+)" msgstr "" -#: alliance_auth/urls.py:249 +#: alliance_auth/urls.py:172 msgid "^edit_timer/(\\w+)$" msgstr "" -#: alliance_auth/urls.py:252 -msgid "^sigtracker/$" -msgstr "" - -#: alliance_auth/urls.py:253 -msgid "^add_signature/$" -msgstr "" - -#: alliance_auth/urls.py:254 -msgid "^remove_signature/(\\w+)" -msgstr "" - -#: alliance_auth/urls.py:255 -msgid "^edit_signature/(\\w+)$" -msgstr "" - -#: alliance_auth/urls.py:258 +#: alliance_auth/urls.py:175 msgid "^srp/$" msgstr "" -#: alliance_auth/urls.py:259 +#: alliance_auth/urls.py:176 msgid "^srp_all/$" msgstr "" -#: alliance_auth/urls.py:260 +#: alliance_auth/urls.py:177 msgid "^srp_fleet_view/(\\w+)$" msgstr "" -#: alliance_auth/urls.py:261 +#: alliance_auth/urls.py:178 msgid "^srp_fleet_add_view/$" msgstr "" -#: alliance_auth/urls.py:262 +#: alliance_auth/urls.py:179 msgid "^srp_fleet_edit/(\\w+)$" msgstr "" -#: alliance_auth/urls.py:263 +#: alliance_auth/urls.py:180 msgid "^srp_request/(\\w+)" msgstr "" -#: alliance_auth/urls.py:264 +#: alliance_auth/urls.py:181 msgid "srp_request_amount_update/(\\w+)" msgstr "" -#: alliance_auth/urls.py:268 +#: alliance_auth/urls.py:185 msgid "^tool/fleet_formatter_tool/$" msgstr "" -#: alliance_auth/urls.py:272 +#: alliance_auth/urls.py:189 msgid "^notifications/$" msgstr "" -#: alliance_auth/urls.py:273 +#: alliance_auth/urls.py:190 msgid "^notifications/(\\w+)/$" msgstr "" -#: alliance_auth/urls.py:276 -msgid "^set_jabber_password/$" -msgstr "" - -#: alliance_auth/urls.py:279 -msgid "^fits/$" -msgstr "" - -#: authentication/forms.py:6 -#: customization/templates/registered/services.html:17 -#: customization/templates/registered/services.html:342 -#: registration/forms.py:11 -#: stock/templates/registered/hrapplicationmanagement.html:25 -#: stock/templates/registered/hrapplicationmanagement.html:79 -#: stock/templates/registered/hrapplicationmanagement.html:120 +#: authentication/forms.py:9 authentication/forms.py:14 +#: stock/templates/registered/hrapplicationmanagement.html:26 +#: stock/templates/registered/hrapplicationmanagement.html:80 +#: stock/templates/registered/hrapplicationmanagement.html:124 #: stock/templates/registered/hrapplicationsearchview.html:26 -#: stock/templates/registered/services.html:25 -#: stock/templates/registered/services.html:379 +#: stock/templates/registered/services.html:16 msgid "Username" msgstr "Benutzername" -#: authentication/forms.py:7 -#: customization/templates/registered/services.html:18 -#: customization/templates/registered/services.html:343 -#: registration/forms.py:12 services/forms.py:26 services/forms.py:30 -#: stock/templates/registered/services.html:26 -#: stock/templates/registered/services.html:380 +#: authentication/forms.py:10 authentication/forms.py:15 services/forms.py:25 msgid "Password" msgstr "Passwort" -#: corputils/forms.py:9 +#: authentication/forms.py:16 +msgid "Password Again" +msgstr "Passwort wdh." + +#: authentication/forms.py:17 +msgid "Email" +msgstr "E-Mail" + +#: authentication/forms.py:18 +msgid "Email Again" +msgstr "E-Mail wdh." + +#: authentication/views.py:38 authentication/views.py:110 +msgid "Your account has been disabled." +msgstr "Dein Account wurde deaktiviert." + +#: authentication/views.py:41 +msgid "Username/password invalid." +msgstr "Benutzername/Passwort ungültig." + +#: authentication/views.py:72 +msgid "Add an API key to set up your account." +msgstr "Füge einen API Key hinzu um deinen Account einzurichten." + +#: authentication/views.py:113 +msgid "" +"Authenticated character has no owning account. Please log in with username " +"and password." +msgstr "" +"Authentifizierter Charakter hat keinen zugehörigen Account. Bitte melde dich mit Benutzername und Passwort an." + +#: authentication/views.py:115 +msgid "" +"No account exists with the authenticated character. Please create an account " +"first." +msgstr "" +"Es existiert kein Account für den authentifizierten Character. Bitte erstelle einen Account." + +#: corputils/templates/corputils/base.html:3 +#: corputils/templates/corputils/base.html:4 +#: corputils/templates/corputils/base.html:7 +msgid "Corporation Member Data" +msgstr "Corporation Mitgliedsdaten" + +#: corputils/templates/corputils/base.html:13 +msgid "Corporations" +msgstr "Corporations" + +#: corputils/templates/corputils/base.html:24 +msgid "Add" +msgstr "Hinzufügen" + +#: corputils/templates/corputils/base.html:30 msgid "Search characters..." msgstr "Suche Charaktere..." -#: customization/templates/registered/dashboard.html:4 -#: customization/templates/registered/dashboard.html:14 -#: stock/templates/registered/dashboard.html:4 -#: stock/templates/registered/dashboard.html:9 -msgid "Dashboard" -msgstr "Dashboard" +#: corputils/templates/corputils/corpstats.html:28 +msgid "API Index:" +msgstr "API Index:" -#: customization/templates/registered/dashboard.html:24 -#: stock/templates/registered/corputils.html:107 -#: stock/templates/registered/corputilssearchview.html:40 -#: stock/templates/registered/dashboard.html:19 -msgid "Main character" +#: corputils/templates/corputils/corpstats.html:41 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:25 +#: stock/templates/registered/groupmembers.html:13 +msgid "Members" +msgstr "Mitgliederzahl:" + +#: corputils/templates/corputils/corpstats.html:44 +msgid "Last update:" +msgstr "Letzes Update:" + +#: corputils/templates/corputils/corpstats.html:60 +#: corputils/templates/corputils/search.html:17 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29 +#: stock/templates/registered/fleetupcharacters.html:46 +#: stock/templates/registered/groupmembers.html:19 +msgid "Character" +msgstr "Charakter" + +#: corputils/templates/corputils/corpstats.html:64 +#: corputils/templates/corputils/search.html:20 +msgid "zKillboard" +msgstr "zKillboard" + +#: corputils/templates/corputils/corpstats.html:65 +#: corputils/templates/corputils/search.html:21 +#: stock/templates/registered/dashboard.html:14 +#: stock/templates/registered/hrapplicationmanagement.html:81 +#: stock/templates/registered/hrapplicationmanagement.html:125 +#: stock/templates/registered/hrapplicationsearchview.html:27 +#: stock/templates/registered/hrapplicationview.html:34 +msgid "Main Character" msgstr "Hauptcharakter" -#: customization/templates/registered/dashboard.html:48 -#: stock/templates/registered/dashboard.html:43 -msgid "Groups" -msgstr "Gruppen" +#: corputils/templates/corputils/corpstats.html:66 +#: corputils/templates/corputils/search.html:22 +msgid "Main Corporation" +msgstr "Haupt Corporation" -#: customization/templates/registered/dashboard.html:69 -#: stock/templates/registered/dashboard.html:64 -msgid "Not a part of the corporation." -msgstr "Nicht Mitglied der Corporation" +#: corputils/templates/corputils/corpstats.html:67 +#: corputils/templates/corputils/search.html:23 +msgid "Main Alliance" +msgstr "Haupt Allianz" -#: customization/templates/registered/dashboard.html:71 -#: stock/templates/registered/dashboard.html:66 -msgid "Not a part of the alliance." -msgstr "Nicht Mitglied der Allianz" +#: corputils/templates/corputils/corpstats.html:80 +#: corputils/templates/corputils/search.html:35 +msgid "Killboard" +msgstr "Killboard" -#: customization/templates/registered/fleetfits.html:8 -#: stock/templates/registered/fleetfits.html:8 -msgid "Alliance Fleet Doctrines" -msgstr "Allianzflottendoktrinen" +#: corputils/templates/corputils/search.html:8 +msgid "Search Results" +msgstr "Suchergebnisse" -#: customization/templates/registered/operationmanagement.html:8 -#: stock/templates/registered/operationmanagement.html:8 -msgid "Fleet Operation Management" -msgstr "Flotten Operations Management" +#: corputils/templates/corputils/search.html:18 +#: stock/templates/registered/fleetupcharacters.html:47 +#: stock/templates/registered/hrapplicationmanagement.html:27 +#: stock/templates/registered/hrapplicationmanagement.html:82 +#: stock/templates/registered/hrapplicationmanagement.html:126 +#: stock/templates/registered/hrapplicationsearchview.html:28 +msgid "Corporation" +msgstr "Corporation" -#: customization/templates/registered/operationmanagement.html:13 -#: stock/templates/registered/operationmanagement.html:13 -msgid "Fleet Operation Timers" -msgstr "Flotten Operations Zeiten" +#: corputils/templates/corputils/search.html:19 +msgid "API" +msgstr "API" -#: customization/templates/registered/operationmanagement.html:17 -#: stock/templates/registered/addoperation.html:9 -#: stock/templates/registered/operationmanagement.html:17 -msgid "Create Operation" -msgstr "Operation erstellen" +#: corputils/views.py:54 +msgid "" +"Unrecognized corporation. Please ensure it is a member of the alliance or a " +"blue." +msgstr "" +"Unbekannte Corporation. Bitte stelle sicher sie ist ein Mitglied der Allianz oder " +"blau." -#: customization/templates/registered/operationmanagement.html:24 -#: stock/templates/registered/fleetup.html:116 -#: stock/templates/registered/operationmanagement.html:24 -#: stock/templates/registered/timermanagement.html:24 -msgid "Current Eve Time:" -msgstr "Momentane Eve Zeit" +#: corputils/views.py:56 +msgid "Selected corp already has a statistics module." +msgstr "Ausgewählte Corp hat bereits ein statistik modul." -#: customization/templates/registered/operationmanagement.html:30 -#: optimer/form.py:14 stock/templates/registered/operationmanagement.html:30 -msgid "Operation Name" -msgstr "Operationsname" +#: corputils/views.py:58 +msgid "Failed to gather corporation statistics with selected token." +msgstr "Fehler beim Sammeln von Corpstatistiken mit ausgewählten Token." -#: customization/templates/registered/operationmanagement.html:31 -#: optimer/form.py:9 stock/templates/registered/fleetup.html:73 -#: stock/templates/registered/fleetupdoctrinesview.html:50 -#: stock/templates/registered/operationmanagement.html:31 -msgid "Doctrine" -msgstr "Doktrin" +#: eveonline/views.py:53 +msgid "Added API key %(apiid)s to your account." +msgstr "API key %(apiid)s zum Account hinzugefügt." -#: customization/templates/registered/operationmanagement.html:32 -#: stock/templates/registered/operationmanagement.html:32 -msgid "Form Up System" -msgstr "Form Up System" +#: eveonline/views.py:77 +msgid "API %(apiid)s already claimed by user %(user)s" +msgstr "API %(apiid)s wird bereits von %(user)s genutzt" -#: customization/templates/registered/operationmanagement.html:33 -#: stock/templates/registered/operationmanagement.html:33 -msgid "Form Up Location" -msgstr "Form Up Location" +#: eveonline/views.py:81 +msgid "API %(apiid)s has already been verified" +msgstr "API %(apiid)s wurde bereits verifiziert" -#: customization/templates/registered/operationmanagement.html:34 -#: optimer/form.py:12 stock/templates/registered/operationmanagement.html:34 -msgid "Start Time" -msgstr "Startzeit" +#: eveonline/views.py:90 +msgid "Confirmed ownership of API %(apiid)s" +msgstr "Besitz von API %(apiid)s bestätigt" -#: customization/templates/registered/operationmanagement.html:35 -#: stock/templates/registered/operationmanagement.html:35 -#: stock/templates/registered/timermanagement.html:35 -#: stock/templates/registered/timermanagement.html:137 -#: stock/templates/registered/timermanagement.html:239 -msgid "Local Time" -msgstr "Ortszeit" +#: eveonline/views.py:96 +msgid "" +"%(character)s not found on API %(apiid)s. Please SSO as a character on the API." +msgstr "" +"%(character)s wurde nicht in API %(apiid)s gefunden. Bitte SSO als ein Charakter des API Keys." -#: customization/templates/registered/operationmanagement.html:36 -#: optimer/form.py:13 -#: stock/templates/registered/fatlinkpersonalmonthlystatisticsview.html:44 -#: stock/templates/registered/fatlinkview.html:73 -#: stock/templates/registered/operationmanagement.html:36 -msgid "Duration" -msgstr "Dauer" +#: eveonline/views.py:131 +msgid "Deleted API key %(apiid)s" +msgstr "API Key %(apiid)s wurde entfernt" -#: customization/templates/registered/operationmanagement.html:37 -#: stock/templates/registered/operationmanagement.html:37 -msgid "FC" -msgstr "FC" +#: eveonline/views.py:154 +msgid "Changed main character ID to %(charid)s" +msgstr "Hauptcharakter ID zu %(charid)s geändert" -#: customization/templates/registered/operationmanagement.html:38 -#: stock/templates/registered/operationmanagement.html:38 -#: stock/templates/registered/timermanagement.html:30 -#: stock/templates/registered/timermanagement.html:132 -#: stock/templates/registered/timermanagement.html:234 timerboard/form.py:12 -msgid "Details" -msgstr "Details" +#: eveonline/views.py:157 +msgid "" +"Failed to change main character - selected character is not owned by your " +"account." +msgstr "" +"Hauptcharakter änderung fehlgeschlagen - ausgewählter Charakter gehört " +"nicht zu deinem Account." -#: customization/templates/registered/operationmanagement.html:39 -#: stock/templates/registered/operationmanagement.html:39 -#: stock/templates/registered/signaturemanagement.html:31 -#: stock/templates/registered/srpfleetdata.html:45 -msgid "Post Time" -msgstr "Veröffentlichungs Zeit" +#: eveonline/views.py:168 +msgid "Refreshed API key %(apiid)s" +msgstr "API key %(apiid)s erneuert" -#: customization/templates/registered/operationmanagement.html:41 -#: stock/templates/registered/fatlinkpersonalmonthlystatisticsview.html:41 -#: stock/templates/registered/fatlinkview.html:70 -#: stock/templates/registered/operationmanagement.html:41 -#: stock/templates/registered/signaturemanagement.html:33 -#: stock/templates/registered/timermanagement.html:36 -#: stock/templates/registered/timermanagement.html:138 -#: stock/templates/registered/timermanagement.html:240 -msgid "Creator" -msgstr "Ersteller" +#: eveonline/views.py:171 +msgid "You are not authorized to refresh that API key." +msgstr "Es ist dir nicht erlaubt den API key zu erneuern." -#: customization/templates/registered/operationmanagement.html:42 -#: customization/templates/registered/services.html:20 -#: customization/templates/registered/services.html:304 -#: customization/templates/registered/services.html:345 -#: customization/templates/registered/services.html:627 -#: stock/templates/registered/apikeymanagment.html:29 -#: stock/templates/registered/groupmanagement.html:20 -#: stock/templates/registered/groupmanagement.html:50 -#: stock/templates/registered/groups.html:19 -#: stock/templates/registered/operationmanagement.html:42 -#: stock/templates/registered/services.html:28 -#: stock/templates/registered/services.html:341 -#: stock/templates/registered/services.html:382 -#: stock/templates/registered/services.html:693 -#: stock/templates/registered/signaturemanagement.html:34 -#: stock/templates/registered/timermanagement.html:38 -#: stock/templates/registered/timermanagement.html:140 -#: stock/templates/registered/timermanagement.html:242 -msgid "Action" -msgstr "Aktion" +#: eveonline/views.py:174 +msgid "Unable to locate API key %(apiid)s" +msgstr "API key %(apiid)s ist nicht auffindbar" -#: customization/templates/registered/services.html:7 -#: stock/templates/registered/services.html:7 -msgid "Services Management" -msgstr "Dienst Verwaltung" - -#: customization/templates/registered/services.html:12 -#: stock/templates/registered/services.html:12 -msgid "Available Services" -msgstr "Verfügbare Dienste" - -#: customization/templates/registered/services.html:16 -#: customization/templates/registered/services.html:300 -#: customization/templates/registered/services.html:341 -#: customization/templates/registered/services.html:623 -#: stock/templates/registered/services.html:24 -#: stock/templates/registered/services.html:337 -#: stock/templates/registered/services.html:378 -#: stock/templates/registered/services.html:689 -msgid "Service" -msgstr "Dienst" - -#: customization/templates/registered/services.html:19 -#: customization/templates/registered/services.html:344 -#: stock/templates/registered/services.html:27 -#: stock/templates/registered/services.html:381 -msgid "Domain" -msgstr "Domain" - -#: customization/templates/registered/services.html:301 -#: customization/templates/registered/services.html:624 -#: stock/templates/registered/services.html:338 -#: stock/templates/registered/services.html:690 -msgid "Unique ID" -msgstr "Einzigartige ID" - -#: customization/templates/registered/services.html:303 -#: customization/templates/registered/services.html:626 -#: stock/templates/registered/services.html:340 -#: stock/templates/registered/services.html:692 -msgid "Quick Link" -msgstr "Schnell Link" - -#: customization/templates/registered/services.html:663 -#: stock/templates/registered/groups.html:57 -#: stock/templates/registered/services.html:729 -msgid "You are not in the corporation." -msgstr "Du bist nicht in dieser Corporation." - -#: customization/templates/registered/services.html:665 -#: stock/templates/registered/groups.html:59 -#: stock/templates/registered/services.html:731 -msgid "You are not in the alliance." -msgstr "Du bist kein Mitglied der Allianz." - -#: customization/templates/registered/teamspeakjoin.html:8 -#: stock/templates/registered/teamspeakjoin.html:8 -msgid "Verify Teamspeak" -msgstr "Teamspeak bestätigen" - -#: customization/templates/registered/teamspeakjoin.html:13 -#: stock/templates/registered/teamspeakjoin.html:13 -msgid "Verify Teamspeak Identity" -msgstr "Teamspeak-Identität bestätigen" - -#: customization/templates/registered/teamspeakjoin.html:16 -#: stock/templates/registered/teamspeakjoin.html:16 -msgid "Join Server" -msgstr "Server beitreten" - -#: customization/templates/registered/teamspeakjoin.html:22 -#: stock/templates/registered/teamspeakjoin.html:22 -msgid "Continue" -msgstr "Fortsetzen" - -#: fleetactivitytracking/forms.py:15 +#: fleetactivitytracking/forms.py:17 msgid "Name of fat-link" msgstr "Name des fat-links:" -#: fleetactivitytracking/forms.py:16 +#: fleetactivitytracking/forms.py:18 msgid "Duration of fat-link" msgstr "Dauer des fat-link" -#: fleetactivitytracking/forms.py:17 -#: stock/templates/registered/fatlinkpersonalmonthlystatisticsview.html:42 -#: stock/templates/registered/fatlinkview.html:71 +#: fleetactivitytracking/forms.py:20 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:39 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:76 msgid "Fleet" msgstr "Flotte" -#: groupmanagement/views.py:163 groupmanagement/views.py:183 -#: stock/templates/registered/hrapplicationmanagement.html:36 -#: stock/templates/registered/hrapplicationmanagement.html:70 -#: stock/templates/registered/hrapplicationmanagement.html:96 -#: stock/templates/registered/hrapplicationmanagement.html:137 -#: stock/templates/registered/hrapplicationsearchview.html:40 -#: stock/templates/registered/hrapplicationview.html:21 -#: stock/templates/registered/srpfleetdata.html:78 -#: stock/templates/registered/srpmanagement.html:83 -msgid "Pending" -msgstr "Ausstehend" +#: fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:4 +msgid "Fleet Participation" +msgstr "Flotten Teilnahme" -#: hrapplications/forms.py:5 -#: stock/templates/registered/hrapplicationview.html:92 -msgid "Comment" -msgstr "Kommentar" +#: fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:6 +msgid "Character not found!" +msgstr "Charakter nicht gefunden!" -#: hrapplications/forms.py:8 -msgid "Search String" -msgstr "Suchbegriff" +#: fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:17 +msgid "Character not registered!" +msgstr "Charakter nicht registriert!" -#: optimer/form.py:10 sigtracker/form.py:12 -#: stock/templates/registered/fatlinkmodify.html:25 -#: stock/templates/registered/fatlinkview.html:29 -#: stock/templates/registered/signaturemanagement.html:24 -#: stock/templates/registered/timermanagement.html:32 -#: stock/templates/registered/timermanagement.html:134 -#: stock/templates/registered/timermanagement.html:236 timerboard/form.py:13 +#: fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:18 +msgid "This character is not part of any registered API-key. You must go to" +msgstr "Dieser Charakter ist nicht Teil eines registrierten API-Keys. Gehe zur" + +#: fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:18 +msgid "" +"API key management and add an API with the character on before being " +"able to click fleet attendance links." +msgstr "API key verwaltung und füge eine API für diesen Charakter hinzu bevor du fat links klickst." + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkformatter.html:8 +msgid "Create Fatlink" +msgstr "Erstelle Fatlink" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkformatter.html:14 +#: stock/templates/registered/addoperation.html:15 +#: stock/templates/registered/addoperation.html:24 +msgid "Create Fleet Operation" +msgstr "Flotten-Operation erstellen" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkformatter.html:18 +msgid "Bad request!" +msgstr "Fehlerhafte Anfrage!" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkformatter.html:29 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:66 +msgid "Create fatlink" +msgstr "Erstelle fatlink" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:7 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:7 +msgid "Fatlink view" +msgstr "Fatlink sehen" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:11 +msgid "Edit fatlink" +msgstr "Editiere fatlink" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:15 +msgid "Delete fat" +msgstr "Lösche fat" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:21 +msgid "Registered characters" +msgstr "Registrierte Charaktere" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:28 +#: stock/templates/registered/groupmembers.html:18 +#: stock/templates/registered/hrapplicationview.html:33 +msgid "User" +msgstr "Benutzername" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:30 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:30 +#: optimer/form.py:8 stock/templates/registered/timermanagement.html:31 +#: stock/templates/registered/timermanagement.html:163 +#: stock/templates/registered/timermanagement.html:295 timerboard/form.py:18 msgid "System" msgstr "System" -#: optimer/form.py:11 stock/templates/registered/fleetup.html:72 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:31 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:22 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:31 +msgid "Ship" +msgstr "Schiff" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:32 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:40 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:32 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77 +#: stock/templates/registered/fleetup.html:57 +#: stock/templates/registered/fleetup.html:59 +#: stock/templates/registered/timermanagement.html:33 +#: stock/templates/registered/timermanagement.html:165 +#: stock/templates/registered/timermanagement.html:297 +msgid "Eve Time" +msgstr "Eve Zeit" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:40 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:39 +#, python-format +msgid "Docked in %(fat.system)s" +msgstr "Docked in %(fat.system)s" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:7 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:7 +msgid "Personal fatlink statistics" +msgstr "Persönliche fatlink Statistic" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:11 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:11 +#, python-format +msgid "Participation data statistics for %(month)s, %(year)s" +msgstr "Teilnahme Statistic für %(month)s, %(year)s" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:14 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:13 +msgid "Previous month" +msgstr "Vorheriger Monat" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:15 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:15 +msgid "Next month" +msgstr "Nächster Monat" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:19 +#, python-format +msgid "%(user)s has collected %(n_fats)s links this month." +msgstr "%(user)s hat diesen Monat %(n_fats)s gesammelt." + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:23 +msgid "Times used" +msgstr "male genutzt" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:33 +#, python-format +msgid "%(user)s has created %(n_created_fats)s links this month." +msgstr "%(user)s hat diesen Monat %(n_created_fats)s links erstellt." + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:37 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74 +#: stock/templates/registered/dashboard.html:88 +#: stock/templates/registered/fleetupdoctrine.html:49 +#: stock/templates/registered/fleetupdoctrinesview.html:49 +#: stock/templates/registered/fleetupfittingsview.html:40 +#: stock/templates/registered/groupmembership.html:18 +#: stock/templates/registered/groups.html:17 +#: stock/templates/registered/hrapplicationview.html:47 +msgid "Name" +msgstr "Name" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:38 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:75 +#: stock/templates/registered/operationmanagement.html:40 +#: stock/templates/registered/timermanagement.html:35 +#: stock/templates/registered/timermanagement.html:167 +#: stock/templates/registered/timermanagement.html:299 +msgid "Creator" +msgstr "Ersteller" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:41 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:78 +#: optimer/form.py:11 stock/templates/registered/operationmanagement.html:35 +msgid "Duration" +msgstr "Dauer" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:42 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:79 +msgid "Edit" +msgstr "Editieren" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:11 +msgid "Participation data statistics for %(year)s" +msgstr "Teilnahme Statistic für %(year)s" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:13 +msgid "Previous year" +msgstr "Vorheriges Jahr" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:15 +msgid "Next year" +msgstr "Nächstes Jahr" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:22 +msgid "Month" +msgstr "Monat" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:23 +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:26 +msgid "Fats" +msgstr "Fats" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:7 +msgid "Fatlink statistics" +msgstr "Fatlink Statistik" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23 +msgid "Ticker" +msgstr "Ticker: " + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:24 +#: stock/templates/registered/dashboard.html:89 +#: stock/templates/registered/groupmembers.html:20 +#: stock/templates/registered/hrapplicationview.html:48 +msgid "Corp" +msgstr "Corp" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:27 +msgid "Average fats" +msgstr "Durchschnittliche fats" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:11 +msgid "Participation data" +msgstr "Teilnahme Daten" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:15 +msgid "Most recent clicked fatlinks" +msgstr "Letzter geklickter fatlink" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:20 +msgid "Personal statistics" +msgstr "Persönliche Statistik" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:28 +msgid "fatname" +msgstr "fatname" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:49 +msgid "No fleet activity on record." +msgstr "Keine Flotten aktivität bekannt." + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:56 +msgid "Most recent fatlinks" +msgstr "Letzter fatlink" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:61 +msgid "View statistics" +msgstr "Statistik" + +#: fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:98 +msgid "No created fatlinks on record." +msgstr "Keine erstellten fatlinks bekannt." + +#: fleetactivitytracking/views.py:237 +msgid "Fleet participation registered." +msgstr "Flotten Teilnahme registriert." + +#: fleetactivitytracking/views.py:248 +msgid "FAT link has expired." +msgstr "FAT link ist abgelaufen." + +#: fleetactivitytracking/views.py:250 +msgid "Invalid FAT link." +msgstr "Ungültiger FAT link." + +#: groupmanagement/views.py:122 +msgid "Removed user %(user)s from group %(group)s." +msgstr "Benutzer %(user)s von Gruppe %(group)s entfernt." + +#: groupmanagement/views.py:124 +msgid "User does not exist in that group" +msgstr "Benutzer existiert nicht in dieser Gruppe" + +#: groupmanagement/views.py:127 +msgid "Group does not exist" +msgstr "Gruppe existiert nicht" + +#: groupmanagement/views.py:152 +msgid "Accepted application from %(mainchar)s to %(group)s." +msgstr "Anfrage von %(mainchar)s zur Gruppe %(group)s beizutreten Akzeptiert." + +#: groupmanagement/views.py:159 groupmanagement/views.py:191 +msgid "" +"An unhandled error occurred while processing the application from " +"%(mainchar)s to %(group)s." +msgstr "" +"Bei der bearbeitung der Anfrage von %(mainchar)s zur Gruppe %(group)s " +"beizutreten ist ein unbehandelter Fehler aufgetreten." + +#: groupmanagement/views.py:184 +msgid "Rejected application from %(mainchar)s to %(group)s." +msgstr "Anfrage von %(mainchar)s zur Gruppe %(group)s beizutreten Abgelehnt." + +#: groupmanagement/views.py:219 +msgid "Accepted application from %(mainchar)s to leave %(group)s." +msgstr "Anfrage von %(mainchar)s die Gruppe %(group)s zu verlassen Akzeptiert." + +#: groupmanagement/views.py:225 groupmanagement/views.py:258 +msgid "" +"An unhandled error occured while processing the application from %(mainchar)s " +"to leave %(group)s." +msgstr "" +"Bei der bearbeitung der Anfrage von %(mainchar)s die Gruppe %(group)s " +"zu verlassen ist ein unbehandelter Fehler aufgetreten." + +#: groupmanagement/views.py:251 +msgid "Rejected application from %(mainchar)s to leave %(group)s." +msgstr "Anfrage von %(mainchar)s die Gruppe %(group)s zu verlassen Abgelehnt." + +#: groupmanagement/views.py:290 +msgid "You cannot join that group" +msgstr "Du kannst dieser Gruppe nicht beitreten" + +#: groupmanagement/views.py:298 groupmanagement/views.py:329 +#: stock/templates/registered/hrapplicationmanagement.html:37 +#: stock/templates/registered/hrapplicationmanagement.html:70 +#: stock/templates/registered/hrapplicationmanagement.html:97 +#: stock/templates/registered/hrapplicationmanagement.html:141 +#: stock/templates/registered/hrapplicationsearchview.html:40 +#: stock/templates/registered/hrapplicationview.html:22 +#: stock/templates/registered/srpfleetdata.html:75 +#: stock/templates/registered/srpmanagement.html:79 +msgid "Pending" +msgstr "Ausstehend" + +#: groupmanagement/views.py:305 +msgid "Applied to group %(group)s." +msgstr "Für die Gruppe %(group)s beworben." + +#: groupmanagement/views.py:316 +msgid "You cannot leave that group" +msgstr "Du kannst diese Gruppe nicht verlassen" + +#: groupmanagement/views.py:321 +msgid "You are not a member of that group" +msgstr "Du bist kein Mitglied dieser Gruppe" + +#: groupmanagement/views.py:336 +msgid "Applied to leave group %(group)s." +msgstr "Anfrage die Gruppe %(group)s zu verlassen gesendet." + +#: hrapplications/forms.py:7 +#: stock/templates/registered/hrapplicationview.html:111 +msgid "Comment" +msgstr "Kommentar" + +#: hrapplications/forms.py:11 +msgid "Search String" +msgstr "Suchbegriff" + +#: notifications/views.py:37 +msgid "You are not authorized to view that notification." +msgstr "Du bist nicht autorisiert diese Mitteilung zu sehen." + +#: notifications/views.py:49 +msgid "Deleted notification." +msgstr "Mitteilung gelöscht." + +#: notifications/views.py:53 +msgid "Failed to locate notification." +msgstr "Mitteilung konnte nicht gefunden werden." + +#: notifications/views.py:61 +msgid "Marked all notifications as read." +msgstr "Alle Mitteilungen als gelesen Markieren." + +#: notifications/views.py:69 +msgid "Deleted all read notifications." +msgstr "Alle gelesenen Mitteilungen gelöscht." + +#: optimer/form.py:7 stock/templates/registered/fleetup.html:73 +#: stock/templates/registered/fleetupdoctrinesview.html:50 +#: stock/templates/registered/operationmanagement.html:30 +msgid "Doctrine" +msgstr "Doktrin" + +#: optimer/form.py:9 stock/templates/registered/fleetup.html:72 #: stock/templates/registered/fleetup.html:158 msgid "Location" msgstr "Ort" -#: optimer/form.py:15 stock/templates/registered/srpmanagement.html:37 +#: optimer/form.py:10 stock/templates/registered/operationmanagement.html:33 +msgid "Start Time" +msgstr "Startzeit" + +#: optimer/form.py:12 stock/templates/registered/operationmanagement.html:29 +msgid "Operation Name" +msgstr "Operationsname" + +#: optimer/form.py:13 stock/templates/registered/srpmanagement.html:38 msgid "Fleet Commander" msgstr "Flottenkommandeur" -#: optimer/form.py:16 +#: optimer/form.py:14 msgid "Extra Details" msgstr "Zusätzliche Details" -#: registration/forms.py:13 -msgid "Password Again" -msgstr "Passwort wdh." +#: optimer/views.py:57 +msgid "Created operation timer for %(opname)s." +msgstr "Operation timer für %(opname)s erstellt." -#: registration/forms.py:14 -msgid "Email" -msgstr "E-Mail" +#: optimer/views.py:76 +msgid "Removed operation timer for %(opname)s." +msgstr "Operation timer für %(opname)s entfernt." -#: registration/forms.py:15 -msgid "Email Again" -msgstr "E-Mail wdh." +#: optimer/views.py:105 +msgid "Saved changes to operation timer for %(opname)s." +msgstr "Änderungen for operation timer %(opname)s gespeichert." -#: services/forms.py:6 -msgid "Group" -msgstr "Gruppen" - -#: services/forms.py:7 -msgid "Message" -msgstr "Nachricht" - -#: services/forms.py:11 +#: services/forms.py:8 msgid "Name of Fleet:" msgstr "SRP Flotte erstellen:" -#: services/forms.py:12 +#: services/forms.py:9 msgid "Fleet Commander:" msgstr "Flottenkommandeur:" -#: services/forms.py:13 +#: services/forms.py:10 msgid "Fleet Comms:" msgstr "Flotten Comms:" -#: services/forms.py:14 +#: services/forms.py:11 msgid "Fleet Type:" msgstr "Flottenzeit:" -#: services/forms.py:15 +#: services/forms.py:12 msgid "Ship Priorities:" msgstr "Schiffs priorität:" -#: services/forms.py:16 +#: services/forms.py:13 msgid "Formup Location:" msgstr "Formup Location:" -#: services/forms.py:17 +#: services/forms.py:14 msgid "Formup Time:" msgstr "Formup Zeit:" -#: services/forms.py:18 +#: services/forms.py:15 msgid "Expected Duration:" msgstr "Erwartete Dauer:" -#: services/forms.py:19 +#: services/forms.py:16 msgid "Purpose:" msgstr "Grund:" -#: services/forms.py:20 +#: services/forms.py:17 msgid "Reimbursable?*" msgstr "Erstattungsfähig?" -#: services/forms.py:20 services/forms.py:21 +#: services/forms.py:17 services/forms.py:19 msgid "Yes" msgstr "Ja" -#: services/forms.py:20 services/forms.py:21 +#: services/forms.py:17 services/forms.py:19 msgid "No" msgstr "Nein" -#: services/forms.py:21 +#: services/forms.py:19 msgid "Important?*" msgstr "Wichtig?" -#: services/forms.py:22 +#: services/forms.py:21 msgid "Comments" msgstr "Kommentar" -#: services/forms.py:25 -msgid "Email Address" -msgstr "Email Adresse" - -#: services/forms.py:27 -msgid "Update Avatar" -msgstr "Signatur aktualisieren" - -#: services/forms.py:34 +#: services/forms.py:30 msgid "Password must be at least 8 characters long." msgstr "Passwort muss mindestens 8 Zeichen lang sein" -#: services/forms.py:43 +#: services/modules/discord/templates/registered/discord_service_ctrl.html:23 +msgid "Link Discord Server" +msgstr "Verbinde zu Discord Server" + +#: services/modules/openfire/forms.py:8 +msgid "Group" +msgstr "Gruppen" + +#: services/modules/openfire/forms.py:9 +msgid "Message" +msgstr "Nachricht" + +#: services/modules/openfire/urls.py:16 +msgid "^set_password/$" +msgstr "" + +#: services/modules/openfire/urls.py:25 +msgid "^services/jabber_broadcast/$" +msgstr "" + +#: services/modules/teamspeak3/forms.py:15 #, python-format msgid "Unable to locate user %s on server" msgstr "Unfähig den Benutzer %s auf dem Server zu finden" -#: sigtracker/form.py:7 -msgid "More Than 50%" -msgstr "Mehr als 50%" +#: services/modules/teamspeak3/templates/registered/teamspeak3_service_ctrl.html:4 +#: stock/templates/registered/services.html:15 +msgid "Service" +msgstr "Dienst" -#: sigtracker/form.py:7 -msgid "Less Than 50%" -msgstr "Weniger als 50%" +#: services/modules/teamspeak3/templates/registered/teamspeak3_service_ctrl.html:5 +msgid "Unique ID" +msgstr "Einzigartige ID" -#: sigtracker/form.py:7 -msgid "Less Than 10%" -msgstr "Weniger als 10%" +#: services/modules/teamspeak3/templates/registered/teamspeak3_service_ctrl.html:7 +#: stock/templates/registered/groupmanagement.html:26 +#: stock/templates/registered/groupmanagement.html:57 +#: stock/templates/registered/groupmembers.html:22 +#: stock/templates/registered/groupmembership.html:22 +#: stock/templates/registered/groups.html:19 +#: stock/templates/registered/notification_list.html:30 +#: stock/templates/registered/notification_list.html:61 +#: stock/templates/registered/operationmanagement.html:41 +#: stock/templates/registered/services.html:18 +#: stock/templates/registered/timermanagement.html:37 +#: stock/templates/registered/timermanagement.html:169 +#: stock/templates/registered/timermanagement.html:301 +msgid "Action" +msgstr "Aktion" -#: sigtracker/form.py:8 -msgid "More Than 24 Hours" -msgstr "Mehr als 24 Stunden" +#: services/modules/teamspeak3/templates/registered/teamspeak3_service_ctrl.html:20 +msgid "Quick Link" +msgstr "Schnell Link" -#: sigtracker/form.py:8 -msgid "Less Than 24 Hours" -msgstr "Weniger als 24 Stunden" +#: services/views.py:59 +msgid "There's a problem with your main character. Please select a new one." +msgstr "Es gibt ein Problem mit deinem Hauptcharakter. Bitte wähle einen neuen aus" -#: sigtracker/form.py:8 -msgid "Less Than 4 Hours" -msgstr "Weniger als 4 Stunden" - -#: sigtracker/form.py:9 -msgid "Only Smallest" -msgstr "Nur kleinste" - -#: sigtracker/form.py:9 -msgid "Up to Medium" -msgstr "bis mittel" - -#: sigtracker/form.py:9 -msgid "Larger" -msgstr "Größere" - -#: sigtracker/form.py:9 -msgid "Very Large" -msgstr "Sehr Große" - -#: sigtracker/form.py:13 -#: stock/templates/registered/signaturemanagement.html:23 -msgid "ID" -msgstr "ID" - -#: sigtracker/form.py:14 -#: stock/templates/registered/signaturemanagement.html:27 -msgid "Lifetime Status" -msgstr "Lebenszeit Status" - -#: sigtracker/form.py:15 -#: stock/templates/registered/signaturemanagement.html:28 -msgid "Mass Status" -msgstr "Masse Status" - -#: sigtracker/form.py:16 -#: stock/templates/registered/signaturemanagement.html:29 -msgid "Ship Size" -msgstr "Schiffsgröße" - -#: sigtracker/form.py:17 -msgid "End Destination" -msgstr "Ziel" - -#: sigtracker/form.py:18 -#: stock/templates/registered/signaturemanagement.html:26 -msgid "Goes Through" -msgstr "Geht durch" - -#: sigtracker/form.py:19 -#: stock/templates/registered/signaturemanagement.html:30 -msgid "Notes" -msgstr "Notizen" - -#: srp/form.py:6 stock/templates/registered/srpmanagement.html:34 +#: srp/form.py:7 stock/templates/registered/srpmanagement.html:35 msgid "Fleet Name" msgstr "Flottenname" -#: srp/form.py:7 stock/templates/registered/srpmanagement.html:35 +#: srp/form.py:8 stock/templates/registered/srpmanagement.html:36 msgid "Fleet Time" msgstr "Flottenzeit" -#: srp/form.py:8 stock/templates/registered/srpmanagement.html:36 +#: srp/form.py:9 stock/templates/registered/srpmanagement.html:37 msgid "Fleet Doctrine" msgstr "Flottendoktrin" -#: srp/form.py:12 stock/templates/registered/srpfleetdata.html:41 +#: srp/form.py:13 stock/templates/registered/srpfleetdata.html:42 msgid "Additional Info" msgstr "Zusätzliche Info" -#: srp/form.py:14 +#: srp/form.py:15 msgid "zKillboard Link" msgstr "zKillboard Link" -#: srp/form.py:28 +#: srp/form.py:24 +msgid "Invalid Link. Please use zKillboard.com" +msgstr "Ungültiger Link. Bitte benutze zKillboard.com" + +#: srp/form.py:29 msgid "Total SRP Amount" msgstr "Aktualisiere SRP Menge" -#: srp/form.py:32 +#: srp/form.py:33 msgid "After Action Report Link" msgstr "Abschlussbericht Link" -#: stock/templates/public/base.html:82 +#: srp/views.py:97 +msgid "Created SRP fleet %(fleetname)s." +msgstr "SRP Flotte %(fleetname)s erstellt." + +#: srp/views.py:116 +msgid "Removed SRP fleet %(fleetname)s." +msgstr "SRP Flotte %(fleetname)s entfernt." + +#: srp/views.py:120 srp/views.py:137 srp/views.py:154 srp/views.py:171 +#: srp/views.py:189 srp/views.py:393 +msgid "Unable to locate SRP fleet with ID %(fleetid)s" +msgstr "Unfähig SRP Flotte mit der ID %(fleetid)s zu finden" + +#: srp/views.py:133 +msgid "Disabled SRP fleet %(fleetname)s." +msgstr "SRP link für %(fleetname)s deaktiviert." + +#: srp/views.py:150 +msgid "Enabled SRP fleet %(fleetname)s." +msgstr "SRP link für %(fleetname)s aktiviert." + +#: srp/views.py:167 +msgid "Marked SRP fleet %(fleetname)s as completed." +msgstr "SRP Flotte %(fleetname)s als vollständig markiert." + +#: srp/views.py:184 +#, python-brace-format +msgid "Marked SRP fleet %(fleetname)s as incomplete." +msgstr "SRP Flotte %(fleetname)s als unvollständig markiert." + +#: srp/views.py:228 +msgid "" +"Your SRP request Killmail link is invalid. Please make sure you are using " +"zKillboard." +msgstr "" +"Der Killmail link deiner SRP anfrage ist ungültig. Bitte stelle sicher, " +"dass du zKillboard benutzt." + +#: srp/views.py:239 +msgid "Submitted SRP request for your %(ship)s." +msgstr "SRP anfrage für %(ship)s gesendet." + +#: srp/views.py:261 +msgid "Deleted SRP request from %(character)s for their %(ship)s." +msgstr "SPR anfrage von %(character)s für %(ship)s entfernt." + +#: srp/views.py:266 srp/views.py:299 srp/views.py:331 srp/views.py:345 +msgid "Unable to locate SRP request with ID %(requestid)s" +msgstr "Unfähig SRP anfrage mit der ID %(requestid)s zu finden." + +#: srp/views.py:287 +msgid "Approved SRP request from %(character)s for their %(ship)s." +msgstr "SRP anfrage von %(character)s für %(ship)s genehmigt." + +#: srp/views.py:318 +msgid "Rejected SRP request from %(character)s for their %(ship)s." +msgstr "SRP anfrage von %(character)s für %(ship)s abgelehnt." + +#: srp/views.py:357 +msgid "Updated SRP amount." +msgstr "Aktualisiere SRP Menge" + +#: srp/views.py:382 +msgid "Saved changes to SRP fleet %(fleetname)s" +msgstr "Änderungen der SRP flotte %(fleetname)s gespeichert" + +#: stock/templates/public/base.html:85 +msgid "Admin" +msgstr "Admin" + +#: stock/templates/public/base.html:87 msgid "Logout" msgstr "Ausloggen" -#: stock/templates/public/base.html:84 -#: stock/templates/registration/password_reset_complete.html:54 +#: stock/templates/public/base.html:89 stock/templates/public/login.html:14 +#: stock/templates/registration/password_reset_complete.html:49 msgid "Login" msgstr "Einloggen" -#: stock/templates/public/base.html:95 +#: stock/templates/public/base.html:101 msgid "Main Navigation" msgstr "Haupmenü" -#: stock/templates/public/base.html:101 +#: stock/templates/public/base.html:106 msgid " Dashboard" msgstr " Dashboard" -#: stock/templates/public/base.html:107 -msgid " Api Keys" -msgstr " API Keys" - #: stock/templates/public/base.html:113 -msgid " Characters" -msgstr " Charaktere" - -#: stock/templates/public/base.html:120 msgid " Groups" msgstr " Gruppen" -#: stock/templates/public/base.html:127 +#: stock/templates/public/base.html:120 msgid " Help" msgstr " Hilfe" -#: stock/templates/public/base.html:132 +#: stock/templates/public/base.html:126 msgid "Aux Navigation" msgstr "Zusatz Navigation" -#: stock/templates/public/base.html:138 +#: stock/templates/public/base.html:131 msgid " Services" msgstr " Dienste" -#: stock/templates/public/base.html:147 +#: stock/templates/public/base.html:140 msgid " Applications" msgstr " Bewerbungen" -#: stock/templates/public/base.html:155 +#: stock/templates/public/base.html:148 msgid " Corporation Stats" msgstr " Korporationsstatistiken" -#: stock/templates/public/base.html:163 +#: stock/templates/public/base.html:156 msgid " Group Management" msgstr " Gruppenverwaltung" -#: stock/templates/public/base.html:171 -msgid " Fleet Doctrines" -msgstr " Flottendoktrinen" - -#: stock/templates/public/base.html:186 -msgid " Wormhole Tracker" -msgstr " Wurmloch Tracker" - -#: stock/templates/public/base.html:193 +#: stock/templates/public/base.html:174 msgid " Fleet Operations" msgstr " Flottenoperationen" -#: stock/templates/public/base.html:200 +#: stock/templates/public/base.html:181 msgid " Structure Timers" msgstr " Strukturen Timer" -#: stock/templates/public/base.html:213 +#: stock/templates/public/base.html:188 +msgid " Fleet Activity Tracking" +msgstr " Flottenaktivitäts-Tracking" + +#: stock/templates/public/base.html:194 msgid " Ship Replacement" msgstr " Schiff’s erstattung" -#: stock/templates/public/base.html:220 +#: stock/templates/public/base.html:200 msgid "Util" msgstr "Werkzeuge" -#: stock/templates/public/base.html:225 +#: stock/templates/public/base.html:204 #: stock/templates/registration/password_change_done.html:10 #: stock/templates/registration/password_change_form.html:9 #: stock/templates/registration/password_change_form.html:18 -#: stock/templates/registration/password_reset_confirm.html:53 +#: stock/templates/registration/password_reset_confirm.html:49 msgid "Change Password" msgstr "Passwort ändern" -#: stock/templates/public/base.html:233 +#: stock/templates/public/base.html:211 msgid " Fleet Broadcast Formatter" msgstr "Flottenübertragungen Formatierer " -#: stock/templates/public/base.html:241 -msgid " Jabber Broadcast" -msgstr " Jabberübertragungen" - -#: stock/templates/public/login.html:55 -msgid "Username/Password Invalid" -msgstr "Benutzername/Passwort ungültig" - -#: stock/templates/public/login.html:58 -#: stock/templates/public/register.html:62 -msgid "Register" -msgstr "Registrieren" - -#: stock/templates/public/login.html:63 +#: stock/templates/public/login.html:57 msgid "Please sign in" msgstr "Bitte einloggen" -#: stock/templates/public/login.html:66 +#: stock/templates/public/login.html:62 msgid "Sign in" msgstr "Einloggen" -#: stock/templates/public/login.html:71 +#: stock/templates/public/login.html:68 msgid "Reset" msgstr "Zurücksetzen" -#: stock/templates/public/register.html:56 +#: stock/templates/public/login.html:71 +#: stock/templates/public/register.html:57 +msgid "Register" +msgstr "Registrieren" + +#: stock/templates/public/register.html:13 +msgid "Registration" +msgstr "Registration" + +#: stock/templates/public/register.html:51 msgid "Username Already Registered" msgstr "Name ist bereit in Benutzung" -#: stock/templates/public/register.html:60 +#: stock/templates/public/register.html:55 msgid "Register Account" msgstr "Registriere Account" @@ -927,19 +1204,6 @@ msgstr "" msgid "Member API keys need to be account-wide." msgstr "Mitglieder API Key muss für den ganzen Account sein." -#: stock/templates/registered/addapikey.html:27 -#, python-format -msgid "" -"Create\n" -" a full API key" -msgstr "" -"Einen\n" -" vollständigen API Key erstellen" - #: stock/templates/registered/addapikey.html:32 #, python-format msgid "" @@ -950,43 +1214,29 @@ msgstr "Blaue API Key erfordern Zugriffsmaske %(BLUE_API_MASK)s oder höher" msgid "BLUE API keys need to be account-wide." msgstr "BLAUE API Keys müssen Account-weit sein." -#: stock/templates/registered/addapikey.html:40 -#, python-format -msgid "" -"Create\n" -" a blue key" -msgstr "" -"Einen blauen Key " -"erstellen" - #: stock/templates/registered/addapikey.html:49 -#: stock/templates/registered/apikeymanagment.html:21 msgid "Add Key" msgstr "Key hinzufügen" -#: stock/templates/registered/addoperation.html:15 -#: stock/templates/registered/addoperation.html:24 -#: stock/templates/registered/fatlinkformatter.html:13 -msgid "Create Fleet Operation" -msgstr "Flotten-Operation erstellen" +#: stock/templates/registered/addoperation.html:7 +msgid "Alliance Auth - Fleet Operation Create" +msgstr "Allianz Auth - Flotten Operation Erstellen" -#: stock/templates/registered/addsignature.html:8 -#: stock/templates/registered/addsignature.html:14 -#: stock/templates/registered/addsignature.html:23 -#: stock/templates/registered/signaturemanagement.html:16 -msgid "Create Signature" -msgstr "Signatur erstellen" +#: stock/templates/registered/addoperation.html:9 +#: stock/templates/registered/operationmanagement.html:16 +msgid "Create Operation" +msgstr "Operation erstellen" + +#: stock/templates/registered/addtimer.html:7 +msgid "Alliance Auth - Structure Timer Create" +msgstr "Allianz Auth - Struktur Timer Erstellen" #: stock/templates/registered/addtimer.html:9 msgid "Timer Create" msgstr "Timer erstellen" #: stock/templates/registered/addtimer.html:15 -#: stock/templates/registered/timermanagement.html:17 +#: stock/templates/registered/timermanagement.html:16 msgid "Create Structure Timer" msgstr "Struktur-Timer erstellen" @@ -994,31 +1244,28 @@ msgstr "Struktur-Timer erstellen" msgid "Create Timer" msgstr "Timer erstellen" -#: stock/templates/registered/apikeymanagment.html:8 -#: stock/templates/registered/apikeymanagment.html:18 -msgid "API Key Management" -msgstr "API Key Verwaltung" +#: stock/templates/registered/apisso.html:3 +#: stock/templates/registered/apisso.html:4 +#: stock/templates/registered/apisso.html:7 +msgid "Verify API Ownership" +msgstr "Bestätige API Besitz" -#: stock/templates/registered/apikeymanagment.html:16 -msgid "No api keys found" -msgstr "Keine API Key gefunden" - -#: stock/templates/registered/apikeymanagment.html:27 -msgid "API ID" -msgstr "API ID" - -#: stock/templates/registered/apikeymanagment.html:28 -msgid "API Key" -msgstr "API Key" +#: stock/templates/registered/apisso.html:10 +#, python-format +msgid "" +"Please authenticate as a character on API %(api.api_id)s to prove ownership." +msgstr "" +"Bitte authentifiziere als ein Charakter der API %(api.api_id)s um Besitz zu bestätigen" #: stock/templates/registered/characters.html:7 #: stock/templates/registered/characters.html:12 #: stock/templates/registered/fleetup.html:28 #: stock/templates/registered/fleetupcharacters.html:29 #: stock/templates/registered/fleetupdoctrine.html:28 +#: stock/templates/registered/fleetupdoctrinesview.html:28 #: stock/templates/registered/fleetupfitting.html:28 #: stock/templates/registered/fleetupfittingsview.html:28 -#: stock/templates/registered/hrapplicationview.html:42 +#: stock/templates/registered/hrapplicationview.html:43 msgid "Characters" msgstr "Charaktere" @@ -1027,371 +1274,67 @@ msgid "No primary character set" msgstr "Keinen primären Charakter festgelegt" #: stock/templates/registered/characters.html:35 -msgid "" -"" -msgstr "" -"" +msgid "Refresh Primary" +msgstr "Aktualisiere Hauptcharakter" -#: stock/templates/registered/characters.html:39 -msgid "" -"" -msgstr "" -"" +#: stock/templates/registered/characters.html:37 +msgid "Make Primary" +msgstr "Mache zum Hauptcharakter" -#: stock/templates/registered/characters.html:57 +#: stock/templates/registered/characters.html:52 msgid "Alliance: " msgstr "Allianz: " -#: stock/templates/registered/characters.html:59 +#: stock/templates/registered/characters.html:54 msgid "Corporation: " msgstr "Corporation: " -#: stock/templates/registered/characters.html:61 +#: stock/templates/registered/characters.html:56 msgid "Corporation Ticker: " msgstr "Corporation Ticker: " -#: stock/templates/registered/corputils.html:7 -#: stock/templates/registered/corputilssearchview.html:8 -msgid "Corporation Member Tracking" -msgstr "Corporation Mitglieder Tracking" +#: stock/templates/registered/dashboard.html:5 +#: stock/templates/registered/dashboard.html:9 +msgid "Dashboard" +msgstr "Dashboard" -#: stock/templates/registered/corputils.html:12 -msgid "Corporation Member Data" -msgstr "Corporation Mitgliedsdaten" +#: stock/templates/registered/dashboard.html:38 +msgid "Missing main character model." +msgstr "Hauptcharakter model fehlt" -#: stock/templates/registered/corputils.html:18 -#: stock/templates/registered/fleetupcharacters.html:47 -#: stock/templates/registered/hrapplicationmanagement.html:26 -#: stock/templates/registered/hrapplicationmanagement.html:81 -#: stock/templates/registered/hrapplicationmanagement.html:122 -#: stock/templates/registered/hrapplicationsearchview.html:28 -msgid "Corporation" -msgstr "Corporation" +#: stock/templates/registered/dashboard.html:42 +msgid "Add API Key" +msgstr "API Key hinzufügen" -#: stock/templates/registered/corputils.html:26 -msgid "Ticker:" -msgstr "Ticker: " +#: stock/templates/registered/dashboard.html:45 +msgid "Change Main" +msgstr "Hauptcharakter ändern" -#: stock/templates/registered/corputils.html:28 -msgid "Member count:" -msgstr "Mitgliederzahl:" +#: stock/templates/registered/dashboard.html:52 +msgid "Groups" +msgstr "Gruppen" -#: stock/templates/registered/corputils.html:30 -msgid "Player count:" -msgstr "Spieleranzahl:" +#: stock/templates/registered/dashboard.html:71 +msgid "API Key requires EVE SSO verification" +msgstr "API Key benötigt EVE SSO bestätigung" -#: stock/templates/registered/corputils.html:32 -msgid "Unregistered characters:" -msgstr "Nicht registrierte Charaktere:" +#: stock/templates/registered/dashboard.html:71 +msgid "API Key is valid" +msgstr "API Key ist gültig" -#: stock/templates/registered/corputils.html:35 -msgid "API Index:" -msgstr "API Index:" +#: stock/templates/registered/dashboard.html:72 +msgid "API ID" +msgstr "API ID" -#: stock/templates/registered/corputils.html:51 -msgid "Alliance corporations" -msgstr "Allianz Corporations" +#: stock/templates/registered/dashboard.html:90 +#: stock/templates/registered/groupmembers.html:21 +#: stock/templates/registered/hrapplicationview.html:49 +msgid "Alliance" +msgstr "Allianz" -#: stock/templates/registered/corputils.html:80 -#: stock/templates/registered/corputils.html:112 -#: stock/templates/registered/corputils.html:115 -#: stock/templates/registered/corputils.html:148 -#: stock/templates/registered/corputils.html:194 -#: stock/templates/registered/corputils.html:205 -#: stock/templates/registered/corputilssearchview.html:42 -#: stock/templates/registered/corputilssearchview.html:45 -#: stock/templates/registered/corputilssearchview.html:63 -msgid "Killboard" -msgstr "Killboard" - -#: stock/templates/registered/corputils.html:89 -#: stock/templates/registered/corputilssearchview.html:29 -#: stock/templates/registered/hrapplicationmanagement.html:177 -#: stock/templates/registered/hrapplicationsearchview.html:77 -msgid "Search" -msgstr "Suche" - -#: stock/templates/registered/corputils.html:96 -msgid "Registered Main Characters" -msgstr "Registrierte Haupt Charaktere" - -#: stock/templates/registered/corputils.html:97 -msgid "Characters without API" -msgstr "Charaktere ohne API" - -#: stock/templates/registered/corputils.html:108 -msgid "Main corporation" -msgstr "Haupt Corporation" - -#: stock/templates/registered/corputils.html:109 -msgid "Character list" -msgstr "Charakterliste" - -#: stock/templates/registered/corputils.html:110 -#: stock/templates/registered/fatlinkpersonalstatisticsview.html:25 -#: stock/templates/registered/fatlinkstatisticsview.html:29 -msgid "Fats" -msgstr "" - -#: stock/templates/registered/corputils.html:113 -#: stock/templates/registered/corputilssearchview.html:43 -msgid "Fleet statistics" -msgstr " Flottenstatistic" - -#: stock/templates/registered/corputils.html:117 -#: stock/templates/registered/corputils.html:164 -#: stock/templates/registered/corputilssearchview.html:47 -#: stock/templates/registered/corputilssearchview.html:83 -msgid "API JackKnife" -msgstr "API JackKnife" - -#: stock/templates/registered/corputils.html:177 -#, python-format -msgid "" -"Seems there are no characters in %(corp.corporation_name)s tied to a " -"registered API!" -msgstr "" -"Scheint, als wären keine Charaktere zu %(corp.corporation_name)s verbunden" - -#: stock/templates/registered/corputils.html:187 -#, python-format -msgid "" -"There are atleast %(n_unacounted)s characters not accounted for in EveWho." -msgstr "" -"Es sind mindestens %(n_unacounted)s Charaktere nicht in EveWho bekannt." - -#: stock/templates/registered/corputils.html:193 -#: stock/templates/registered/corputilssearchview.html:39 -#: stock/templates/registered/fatlinkmodify.html:24 -#: stock/templates/registered/fatlinkview.html:28 -#: stock/templates/registered/fleetupcharacters.html:46 -msgid "Character" -msgstr "Charakter" - -#: stock/templates/registered/corputils.html:214 -#, python-format -msgid "" -"Good job! Every character in %(corp.corporation_name)s seem to be tied to an " -"API!" -msgstr "" -"Gut gemacht! Alle Charaktere in %(corp.corporation_name)s scheinen mit einer " -"APIverknüft zu sein!" - -#: stock/templates/registered/corputils.html:223 -msgid "No corporation model found. Contact your admin." -msgstr "Kein Corporation Model gefunden. Kontaktiere deinen Admin." - -#: stock/templates/registered/corputilssearchview.html:14 -msgid "Member Search Results" -msgstr "Mitgliedersuche Ergebnisse" - -#: stock/templates/registered/corputilssearchview.html:59 -msgid "No API registered!" -msgstr "Keine API registriert!" - -#: stock/templates/registered/discord.html:8 -#: stock/templates/registered/jabberbroadcast.html:8 -#: stock/templates/registered/jabberbroadcast.html:13 -msgid "Jabber Broadcast" -msgstr "Jabber Übertragung" - -#: stock/templates/registered/discord.html:13 -msgid "Discord Connection" -msgstr "Discordverbindung" - -#: stock/templates/registered/discord.html:19 -msgid "Account Linked" -msgstr "Account verbunden" - -#: stock/templates/registered/discord.html:21 -msgid "" -"Enter your Discord account credentials below. These are not stored: they are " -"needed to determine your user ID and make you join the server." -msgstr "" -"Gib Deine Discord Accountdaten unten an. Diese werden nicht gespeichert: sie " -"werden benötigt, um deine Nutzer ID zu ermitteln und dich mit dem Server zu " -"verbinden." - -#: stock/templates/registered/discord.html:22 -msgid "If you do not have a Discord account, please create one Link to the line members" -msgstr "" -"Gebe diesen Link den Teilnehmern" +msgid "Give this link to the line members" +msgstr "Gebe diesen link den leine membern" #: stock/templates/registered/srpfleetdata.html:15 msgid "SRP Fleet Data" @@ -1983,26 +2047,30 @@ msgstr "Verluste insgesamt:" msgid "Total ISK Cost:" msgstr "ISK-Kosten insgesamt:" -#: stock/templates/registered/srpfleetdata.html:39 +#: stock/templates/registered/srpfleetdata.html:40 msgid "Pilot Name" msgstr "Name des Piloten" -#: stock/templates/registered/srpfleetdata.html:40 +#: stock/templates/registered/srpfleetdata.html:41 msgid "Killboard Link" msgstr "Killboard Link" -#: stock/templates/registered/srpfleetdata.html:42 -msgid "Ship Type" -msgstr "Schiffstypen" - #: stock/templates/registered/srpfleetdata.html:43 +msgid "Ship Type" +msgstr "Schiffstyp" + +#: stock/templates/registered/srpfleetdata.html:44 msgid "Killboard Loss Amt" msgstr "Summe Killboard Verluste" -#: stock/templates/registered/srpfleetdata.html:44 +#: stock/templates/registered/srpfleetdata.html:45 msgid "SRP ISK Cost" msgstr "SRP ISK-Kosten" +#: stock/templates/registered/srpfleetdata.html:113 +msgid "No SRP requests for this fleet." +msgstr "Keine SRP anfragen für diese Flotte." + #: stock/templates/registered/srpfleetrequest.html:8 msgid "SRP Request" msgstr "SRP-Anfrage" @@ -2013,7 +2081,6 @@ msgid "Create SRP Request" msgstr "Erstelle SRP-Anfrage" #: stock/templates/registered/srpfleetrequest.html:21 -#: stock/templates/registered/srpfleetrequestamount.html:21 msgid "SRP Code Does Not Exist" msgstr "SRP-Code existiert nicht" @@ -2026,7 +2093,7 @@ msgstr "SRP-Anfrage erfolgreich eingereicht" msgid "Update SRP Amount" msgstr "Aktualisiere SRP Menge" -#: stock/templates/registered/srpfleetrequestamount.html:27 +#: stock/templates/registered/srpfleetrequestamount.html:24 msgid "Update SRP Request Amount" msgstr "Aktualisiere SPR Anfragen Menge" @@ -2050,31 +2117,56 @@ msgstr "Zeige alles" msgid "Add SRP Fleet" msgstr "Füge SRP Flotte hinzu" -#: stock/templates/registered/srpmanagement.html:38 +#: stock/templates/registered/srpmanagement.html:39 msgid "Fleet AAR" msgstr "Flotten AAR" -#: stock/templates/registered/srpmanagement.html:39 +#: stock/templates/registered/srpmanagement.html:40 msgid "Fleet SRP Code" msgstr "Flotten SRP Code" -#: stock/templates/registered/srpmanagement.html:40 +#: stock/templates/registered/srpmanagement.html:41 msgid "Fleet ISK Cost" msgstr "Flotten ISK Kosten" -#: stock/templates/registered/srpmanagement.html:41 +#: stock/templates/registered/srpmanagement.html:42 msgid "SRP Status" msgstr "SRP Status" -#: stock/templates/registered/srpmanagement.html:68 +#: stock/templates/registered/srpmanagement.html:43 + +msgid "Pending Requests" +msgstr "Ausstehende Anfragen" + +#: stock/templates/registered/srpmanagement.html:62 +msgid "Link" +msgstr "Link" + +#: stock/templates/registered/srpmanagement.html:70 msgid "Disabled" msgstr "Deaktiviert" -#: stock/templates/registered/srpmanagement.html:87 +#: stock/templates/registered/srpmanagement.html:83 #: stock/templates/registration/password_change_done.html:16 msgid "Completed" msgstr "Fertig" +#: stock/templates/registered/srpmanagement.html:120 +msgid "No SRP fleets created." +msgstr "Keine SRP-Flotte erstellt." + +#: stock/templates/registered/teamspeakjoin.html:8 +msgid "Verify Teamspeak" +msgstr "Teamspeak bestätigen" + +#: stock/templates/registered/teamspeakjoin.html:13 +msgid "Verify Teamspeak Identity" +msgstr "Teamspeak-Identität bestätigen" + +#: stock/templates/registered/teamspeakjoin.html:16 +msgid "Join Server" +msgstr "Server beitreten" + #: stock/templates/registered/timermanagement.html:8 msgid "Structure Timer Management" msgstr "Struktur-Timer Verwaltung" @@ -2083,41 +2175,49 @@ msgstr "Struktur-Timer Verwaltung" msgid "Structure Timers" msgstr "Struktur-Timer" -#: stock/templates/registered/timermanagement.html:27 -msgid "Next Timer" -msgstr "Nächster Timer" - -#: stock/templates/registered/timermanagement.html:31 -#: stock/templates/registered/timermanagement.html:133 -#: stock/templates/registered/timermanagement.html:235 timerboard/form.py:16 -msgid "Objective" -msgstr "Ziel" - -#: stock/templates/registered/timermanagement.html:51 -#: stock/templates/registered/timermanagement.html:153 -#: stock/templates/registered/timermanagement.html:256 timerboard/form.py:10 -msgid "Hostile" -msgstr "Feindlich" - -#: stock/templates/registered/timermanagement.html:56 -#: stock/templates/registered/timermanagement.html:158 -#: stock/templates/registered/timermanagement.html:261 timerboard/form.py:10 -msgid "Friendly" -msgstr "Freundlich" - -#: stock/templates/registered/timermanagement.html:61 -#: stock/templates/registered/timermanagement.html:163 -#: stock/templates/registered/timermanagement.html:266 timerboard/form.py:10 -msgid "Neutral" -msgstr "Neutral" - -#: stock/templates/registered/timermanagement.html:129 +#: stock/templates/registered/timermanagement.html:26 msgid "Corp Timers" msgstr "Corp Timer" -#: stock/templates/registered/timermanagement.html:231 -msgid "Future Timers" -msgstr "Zukünftige Timer" +#: stock/templates/registered/timermanagement.html:30 +#: stock/templates/registered/timermanagement.html:162 +#: stock/templates/registered/timermanagement.html:294 timerboard/form.py:21 +msgid "Objective" +msgstr "Ziel" + +#: stock/templates/registered/timermanagement.html:50 +#: stock/templates/registered/timermanagement.html:182 +#: stock/templates/registered/timermanagement.html:314 timerboard/form.py:15 +msgid "Hostile" +msgstr "Feindlich" + +#: stock/templates/registered/timermanagement.html:55 +#: stock/templates/registered/timermanagement.html:187 +#: stock/templates/registered/timermanagement.html:319 timerboard/form.py:15 +msgid "Friendly" +msgstr "Freundlich" + +#: stock/templates/registered/timermanagement.html:60 +#: stock/templates/registered/timermanagement.html:192 +#: stock/templates/registered/timermanagement.html:324 timerboard/form.py:15 +msgid "Neutral" +msgstr "Neutral" + +#: stock/templates/registered/timermanagement.html:157 +msgid "Next Timers" +msgstr "Nächste Timer" + +#: stock/templates/registered/timermanagement.html:287 +msgid "No upcoming timers." +msgstr "Keine kommenden timer." + +#: stock/templates/registered/timermanagement.html:289 +msgid "Past Timers" +msgstr "Vergangene Timer" + +#: stock/templates/registered/timermanagement.html:420 +msgid "No past timers." +msgstr "Keine vergangenen Timer." #: stock/templates/registered/timerupdate.html:15 #: stock/templates/registered/timerupdate.html:27 @@ -2133,19 +2233,19 @@ msgstr "Struktur Timer existiert nicht" msgid "Password Change" msgstr "Passwort ändern" -#: stock/templates/registration/password_reset_complete.html:49 +#: stock/templates/registration/password_reset_complete.html:45 msgid "Password reset complete" msgstr "Passwort wurde zurückgesetzt" -#: stock/templates/registration/password_reset_complete.html:51 +#: stock/templates/registration/password_reset_complete.html:47 msgid "Your password has been set." msgstr "Passwort wurde gesetzt" -#: stock/templates/registration/password_reset_confirm.html:58 +#: stock/templates/registration/password_reset_confirm.html:54 msgid "Password reset unsuccessful" msgstr "Passwort Zurücksetzen Fehlgeschlagen" -#: stock/templates/registration/password_reset_confirm.html:60 +#: stock/templates/registration/password_reset_confirm.html:56 msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." @@ -2198,49 +2298,62 @@ msgstr "Vielen dank, dass du unsere Seite nutzt!" msgid "Your IT Team" msgstr "Euer IT Team" -#: stock/templates/registration/password_reset_form.html:51 +#: stock/templates/registration/password_reset_form.html:46 msgid "Password Reset" msgstr "Passwort zurücksetzen" -#: stock/templates/registration/password_reset_form.html:53 +#: stock/templates/registration/password_reset_form.html:48 msgid "Forgotten your password? Enter your email below." msgstr "Hast du dein Passwort vergessen? Gib unten deine Email-Adresse ein." -#: stock/templates/registration/password_reset_form.html:56 +#: stock/templates/registration/password_reset_form.html:51 msgid "Reset Password" msgstr "Passwort zurücksetzen" -#: timerboard/form.py:9 +#: timerboard/form.py:14 msgid "Other" msgstr "anderes" -#: timerboard/form.py:14 +#: timerboard/form.py:19 msgid "Planet/Moon" msgstr "Planet/Mond" -#: timerboard/form.py:15 +#: timerboard/form.py:20 msgid "Structure Type" msgstr "Struktur-Timer" -#: timerboard/form.py:17 +#: timerboard/form.py:22 msgid "Days Remaining" msgstr "Tage Verbleibend" -#: timerboard/form.py:18 +#: timerboard/form.py:23 msgid "Hours Remaining" msgstr "Stunden Verbleibend" -#: timerboard/form.py:19 +#: timerboard/form.py:25 msgid "Minutes Remaining" msgstr "Minuten Verbleibend" -#: timerboard/form.py:20 +#: timerboard/form.py:27 msgid "Important" msgstr "Wichtig" -#: timerboard/form.py:21 +#: timerboard/form.py:28 msgid "Corp-Restricted" msgstr "Corp-beschränkt" +#: timerboard/views.py:95 +msgid "Added new timer in %(system)s at %(time)s." +msgstr "Neuen Timer hinzugefügt in %(system)s um %(time)s." +#: timerboard/views.py:114 +msgid "Deleted timer in %(system)s at %(time)s." +msgstr "Timer in %(system)s um %(time)s entfernt." +#: timerboard/views.py:118 +msgid "Unable to locate timer with ID %(timerid)s." +msgstr "Unfähig den Timer mit der ID %(timerid)s zu finden. " + +#: timerboard/views.py:154 +msgid "Saved changes to the timer." +msgstr "Änderungen am Timer gespeichert" \ No newline at end of file diff --git a/notifications/views.py b/notifications/views.py index 201d7c9f..a75e64a8 100644 --- a/notifications/views.py +++ b/notifications/views.py @@ -3,6 +3,7 @@ from django.shortcuts import render, get_object_or_404, redirect from .models import Notification from django.contrib.auth.decorators import login_required from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ import logging logger = logging.getLogger(__name__) @@ -33,7 +34,7 @@ def notification_view(request, notif_id): else: logger.warn( "User %s not authorized to view notif_id %s belonging to user %s" % (request.user, notif_id, notif.user)) - messages.error(request, 'You are not authorized to view that notification.') + messages.error(request, _('You are not authorized to view that notification.')) return redirect('auth_notification_list') @@ -45,11 +46,11 @@ def remove_notification(request, notif_id): if Notification.objects.filter(id=notif_id).exists(): notif.delete() logger.info("Deleting notif id %s by user %s" % (notif_id, request.user)) - messages.success(request, 'Deleted notification.') + messages.success(request, _('Deleted notification.')) else: logger.error( "Unable to delete notif id %s for user %s - notif matching id not found." % (notif_id, request.user)) - messages.error(request, 'Failed to locate notification.') + messages.error(request, _('Failed to locate notification.')) return redirect('auth_notification_list') @@ -57,7 +58,7 @@ def remove_notification(request, notif_id): def mark_all_read(request): logger.debug('mark all notifications read called by user %s' % request.user) Notification.objects.filter(user=request.user).update(viewed=True) - messages.success(request, 'Marked all notifications as read.') + messages.success(request, _('Marked all notifications as read.')) return redirect('auth_notification_list') @@ -65,5 +66,5 @@ def mark_all_read(request): def delete_all_read(request): logger.debug('delete all read notifications called by user %s' % request.user) Notification.objects.filter(user=request.user).filter(viewed=True).delete() - messages.success(request, 'Deleted all read notifications.') + messages.success(request, _('Deleted all read notifications.')) return redirect('auth_notification_list') diff --git a/optimer/views.py b/optimer/views.py index d201dbe1..e10c35e7 100644 --- a/optimer/views.py +++ b/optimer/views.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import permission_required from django.utils import timezone +from django.utils.translation import ugettext_lazy as _ from django.shortcuts import get_object_or_404 from django.shortcuts import render, redirect from django.contrib import messages @@ -53,7 +54,7 @@ def add_optimer_view(request): op.eve_character = character op.save() logger.info("User %s created op timer with name %s" % (request.user, op.operation_name)) - messages.success(request, 'Created operation timer for %s.' % op.operation_name) + messages.success(request, _('Created operation timer for %(opname)s.') % {"opname": op.operation_name}) return redirect("/optimer/") else: logger.debug("Returning new opForm") @@ -72,7 +73,7 @@ def remove_optimer(request, optimer_id): op = optimer.objects.get(id=optimer_id) op.delete() logger.info("Deleting optimer id %s by user %s" % (optimer_id, request.user)) - messages.success(request, 'Removed operation timer for %s.' % op.operation_name) + messages.success(request, _('Removed operation timer for %(opname)s.') % {"opname": op.operation_name}) else: logger.error("Unable to delete optimer id %s for user %s - operation matching id not found." % ( optimer_id, request.user)) @@ -101,7 +102,7 @@ def edit_optimer(request, optimer_id): op.eve_character = character logger.info("User %s updating optimer id %s " % (request.user, optimer_id)) op.save() - messages.success(request, 'Saved changes to operation timer for %s.' % op.operation_name) + messages.success(request, _('Saved changes to operation timer for %(opname)s.') % {"opname": op.operation_name}) return redirect("auth_optimer_view") else: data = { diff --git a/services/modules/discord/templates/registered/discord_service_ctrl.html b/services/modules/discord/templates/registered/discord_service_ctrl.html index f9315c9a..7b7fa34b 100644 --- a/services/modules/discord/templates/registered/discord_service_ctrl.html +++ b/services/modules/discord/templates/registered/discord_service_ctrl.html @@ -20,7 +20,7 @@ {% endif %} {% if request.user.is_superuser %}

{% endif %} diff --git a/services/views.py b/services/views.py index 7cfd3833..a5517341 100755 --- a/services/views.py +++ b/services/views.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render +from django.utils.translation import ugettext_lazy as _ from alliance_auth.hooks import get_hooks from authentication.decorators import members_and_blues @@ -54,7 +55,7 @@ def services_view(request): try: char = EveCharacter.objects.get(character_id=auth.main_char_id) except EveCharacter.DoesNotExist: - messages.warning(request, "There's a problem with your main character. Please select a new one.") + messages.warning(request, _("There's a problem with your main character. Please select a new one.")) context = {'service_ctrls': []} for fn in get_hooks('services_hook'): diff --git a/srp/form.py b/srp/form.py index 7dfccfe6..2d0d6504 100755 --- a/srp/form.py +++ b/srp/form.py @@ -21,7 +21,7 @@ class SrpFleetUserRequestForm(forms.Form): def clean_killboard_link(self): data = self.cleaned_data['killboard_link'] if "zkillboard.com" not in data: - raise forms.ValidationError("Invalid Link. Please use zKillboard.com") + raise forms.ValidationError(_("Invalid Link. Please use zKillboard.com")) return data diff --git a/srp/views.py b/srp/views.py index f327108b..775a7f96 100755 --- a/srp/views.py +++ b/srp/views.py @@ -14,6 +14,7 @@ from srp.form import SrpFleetMainUpdateForm from services.managers.srp_manager import srpManager from notifications import notify from django.utils import timezone +from django.utils.translation import ugettext_lazy as _ from authentication.decorators import members_and_blues import uuid @@ -93,7 +94,7 @@ def srp_fleet_add_view(request): completed = True completed_srp_code = srp_fleet_main.fleet_srp_code logger.info("Created SRP Fleet %s by user %s" % (srp_fleet_main.fleet_name, request.user)) - messages.success(request, 'Created SRP fleet %s.' % srp_fleet_main.fleet_name) + messages.success(request, _('Created SRP fleet %(fleetname)s.') % {"fleetname": srp_fleet_main.fleet_name}) else: logger.debug("Returning blank SrpFleetMainForm") @@ -112,11 +113,11 @@ def srp_fleet_remove(request, fleet_id): srpfleetmain = SrpFleetMain.objects.get(id=fleet_id) srpfleetmain.delete() logger.info("SRP Fleet %s deleted by user %s" % (srpfleetmain.fleet_name, request.user)) - messages.success(request, 'Removed SRP fleet %s.' % srpfleetmain.fleet_name) + messages.success(request, _('Removed SRP fleet %(fleetname)s.') % {"fleetname": srpfleetmain.fleet_name}) else: logger.error( "Unable to delete SRP fleet id %s for user %s - fleet matching id not found." % (fleet_id, request.user)) - messages.error(request, 'Unable to locate SRP fleet with ID %s' % fleet_id) + messages.error(request, _('Unable to locate SRP fleet with ID %(fleetid)s') % {"fleetid": fleet_id}) return redirect("auth_srp_management_view") @@ -129,11 +130,11 @@ def srp_fleet_disable(request, fleet_id): srpfleetmain.fleet_srp_code = "" srpfleetmain.save() logger.info("SRP Fleet %s disabled by user %s" % (srpfleetmain.fleet_name, request.user)) - messages.success(request, 'Disabled SRP fleet %s.' % srpfleetmain.fleet_name) + messages.success(request, _('Disabled SRP fleet %(fleetname)s.') % {"fleetname": srpfleetmain.fleet_name}) else: logger.error( "Unable to disable SRP fleet id %s for user %s - fleet matching id not found." % (fleet_id, request.user)) - messages.error(request, 'Unable to locate SRP fleet with ID %s' % fleet_id) + messages.error(request, _('Unable to locate SRP fleet with ID %(fleetid)s') % {"fleetid": fleet_id}) return redirect("auth_srp_management_view") @@ -146,11 +147,11 @@ def srp_fleet_enable(request, fleet_id): srpfleetmain.fleet_srp_code = random_string(8) srpfleetmain.save() logger.info("SRP Fleet %s enable by user %s" % (srpfleetmain.fleet_name, request.user)) - messages.success(request, 'Enabled SRP fleet %s.' % srpfleetmain.fleet_name) + messages.success(request, _('Enabled SRP fleet %(fleetname)s.') % {"fleetname": srpfleetmain.fleet_name}) else: logger.error( "Unable to enable SRP fleet id %s for user %s - fleet matching id not found." % (fleet_id, request.user)) - messages.error(request, 'Unable to locate SRP fleet with ID %s' % fleet_id) + messages.error(request, _('Unable to locate SRP fleet with ID %(fleetid)s') % {"fleetid": fleet_id}) return redirect("auth_srp_management_view") @@ -163,11 +164,11 @@ def srp_fleet_mark_completed(request, fleet_id): srpfleetmain.fleet_srp_status = "Completed" srpfleetmain.save() logger.info("Marked SRP Fleet %s as completed by user %s" % (srpfleetmain.fleet_name, request.user)) - messages.success(request, 'Marked SRP fleet %s as completed.' % srpfleetmain.fleet_name) + messages.success(request, _('Marked SRP fleet %(fleetname)s as completed.') % {"fleetname": srpfleetmain.fleet_name}) else: logger.error("Unable to mark SRP fleet with id %s as completed for user %s - fleet matching id not found." % ( fleet_id, request.user)) - messages.error(request, 'Unable to locate SRP fleet with ID %s' % fleet_id) + messages.error(request, _('Unable to locate SRP fleet with ID %(fleetid)s') % {"fleetid": fleet_id}) return redirect("auth_srp_fleet_view", fleet_id) @@ -180,12 +181,12 @@ def srp_fleet_mark_uncompleted(request, fleet_id): srpfleetmain.fleet_srp_status = "" srpfleetmain.save() logger.info("Marked SRP Fleet %s as incomplete for user %s" % (fleet_id, request.user)) - messages.success(request, 'Marked SRP fleet %s as incomplete.' % srpfleetmain.fleet_name) + messages.success(request, _('Marked SRP fleet %(fleetname)s as incomplete.') % {"fleetname": srpfleetmain.fleet_name}) return redirect("auth_srp_fleet_view", fleet_id) else: logger.error("Unable to mark SRP Fleet id %s as incomplete for user %s - fleet matching id not found." % ( fleet_id, request.user)) - messages.error(request, 'Unable to locate SRP fleet with ID %s' % fleet_id) + messages.error(request, _('Unable to locate SRP fleet with ID %(fleetid)s') % {"fleetid": fleet_id}) return redirect('auth_srp_management_view') @@ -224,7 +225,7 @@ def srp_request_view(request, fleet_srp): request.user, srp_request.killboard_link)) # THIS SHOULD BE IN FORM VALIDATION messages.error(request, - "Your SRP request Killmail link is invalid. Please make sure you are using zKillboard.") + _("Your SRP request Killmail link is invalid. Please make sure you are using zKillboard.")) return redirect("auth_srp_management_view") srp_ship_name = EveManager.get_itemtype(ship_type_id).name srp_request.srp_ship_name = srp_ship_name @@ -235,7 +236,7 @@ def srp_request_view(request, fleet_srp): completed = True logger.info("Created SRP Request on behalf of user %s for fleet name %s" % ( request.user, srp_fleet_main.fleet_name)) - messages.success(request, 'Submitted SRP request for your %s.' % srp_ship_name) + messages.success(request, _('Submitted SRP request for your %(ship)s.') % {"ship": srp_ship_name}) else: logger.debug("Returning blank SrpFleetUserRequestForm") @@ -257,12 +258,12 @@ def srp_request_remove(request, srp_request_id): stored_fleet_view = srpuserrequest.srp_fleet_main.id srpuserrequest.delete() logger.info("Deleted SRP request id %s for user %s" % (srp_request_id, request.user)) - messages.success(request, 'Deleted SRP request from %s for their %s.' % ( - srpuserrequest.character, srpuserrequest.srp_ship_name)) + messages.success(request, _('Deleted SRP request from %(character)s for their %(ship)s.') % { + "character": srpuserrequest.character, "ship": srpuserrequest.srp_ship_name}) if stored_fleet_view is None: logger.error("Unable to delete srp request id %s for user %s - request matching id not found." % ( srp_request_id, request.user)) - messages.error(request, 'Unable to locate SRP request with ID %s' % srp_request_id) + messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": srp_request_id}) return redirect("auth_srp_management_view") else: return redirect("auth_srp_fleet_view", stored_fleet_view) @@ -283,8 +284,8 @@ def srp_request_approve(request, srp_request_id): srpuserrequest.save() logger.info("Approved SRP request id %s for character %s by user %s" % ( srp_request_id, srpuserrequest.character, request.user)) - messages.success(request, 'Approved SRP request from %s for their %s.' % ( - srpuserrequest.character, srpuserrequest.srp_ship_name)) + messages.success(request, _('Approved SRP request from %(character)s for their %(ship)s.') % { + "character": srpuserrequest.character, "ship": srpuserrequest.srp_ship_name}) notify( srpuserrequest.character.user, 'SRP Request Approved', @@ -295,7 +296,7 @@ def srp_request_approve(request, srp_request_id): if stored_fleet_view is None: logger.error("Unable to approve srp request id %s on behalf of user %s - request matching id not found." % ( srp_request_id, request.user)) - messages.error(request, 'Unable to locate SRP request with ID %s' % srp_request_id) + messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": srp_request_id}) return redirect("auth_srp_management_view") else: return redirect("auth_srp_fleet_view", stored_fleet_view) @@ -314,8 +315,8 @@ def srp_request_reject(request, srp_request_id): srpuserrequest.save() logger.info("SRP request id %s for character %s rejected by %s" % ( srp_request_id, srpuserrequest.character, request.user)) - messages.success(request, 'Rejected SRP request from %s for their %s.' % ( - srpuserrequest.character, srpuserrequest.srp_ship_name)) + messages.success(request, _('Rejected SRP request from %(character)s for their %(ship)s.') % { + "character": srpuserrequest.character, "ship": srpuserrequest.srp_ship_name}) notify( srpuserrequest.character.user, 'SRP Request Rejected', @@ -327,7 +328,7 @@ def srp_request_reject(request, srp_request_id): if stored_fleet_view is None: logger.error("Unable to reject SRP request id %s on behalf of user %s - request matching id not found." % ( srp_request_id, request.user)) - messages.error(request, 'Unable to locate SRP request with ID %s' % srp_request_id) + messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": srp_request_id}) return redirect("auth_srp_management_view") else: return redirect("auth_srp_fleet_view", stored_fleet_view) @@ -341,7 +342,7 @@ def srp_request_update_amount_view(request, fleet_srp_request_id): if SrpUserRequest.objects.filter(id=fleet_srp_request_id).exists() is False: logger.error("Unable to locate SRP request id %s for user %s" % (fleet_srp_request_id, request.user)) - messages.error(request, 'Unable to locate SRP request with ID %s' % fleet_srp_request_id) + messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": fleet_srp_request_id}) return redirect("auth_srp_management_view") if request.method == 'POST': @@ -353,7 +354,7 @@ def srp_request_update_amount_view(request, fleet_srp_request_id): srp_request.save() logger.info("Updated srp request id %s total to %s by user %s" % ( fleet_srp_request_id, form.cleaned_data['srp_total_amount'], request.user)) - messages.success(request, 'Updated SRP amount.') + messages.success(request, _('Updated SRP amount.')) return redirect("auth_srp_fleet_view", srp_request.srp_fleet_main.id) else: logger.debug("Returning blank SrpFleetUpdateCostForm") @@ -378,7 +379,7 @@ def srp_fleet_edit_view(request, fleet_id): srpfleetmain.fleet_srp_aar_link = form.cleaned_data['fleet_aar_link'] srpfleetmain.save() logger.info("User %s edited SRP Fleet %s" % (request.user, srpfleetmain.fleet_name)) - messages.success(request, 'Saved changes to SRP fleet %s' % srpfleetmain.fleet_name) + messages.success(request, _('Saved changes to SRP fleet %(fleetname)s') % {"fleetname": srpfleetmain.fleet_name}) return redirect("auth_srp_management_view") else: logger.debug("Returning blank SrpFleetMainUpdateForm") @@ -389,5 +390,5 @@ def srp_fleet_edit_view(request, fleet_id): else: logger.error( "Unable to edit srp fleet id %s for user %s - fleet matching id not found." % (fleet_id, request.user)) - messages.error(request, 'Unable to locate SRP fleet with ID %s' % fleet_id) + messages.error(request, _('Unable to locate SRP fleet with ID %(fleetid)s') % {"fleetid": fleet_id}) return redirect("auth_srp_management_view") diff --git a/stock/templates/public/base.html b/stock/templates/public/base.html index c6db7eb3..51a66054 100755 --- a/stock/templates/public/base.html +++ b/stock/templates/public/base.html @@ -65,7 +65,7 @@ {% endif %} {% if user.is_authenticated %} {% if user.is_staff %} -
  • Admin
  • +
  • {% trans "Admin" %}
  • {% endif %}
  • {% trans "Logout" %}
  • {% else %} @@ -162,7 +162,7 @@
  • - Fleet Activity Tracking + {% trans " Fleet Activity Tracking" %}
  • diff --git a/stock/templates/public/login.html b/stock/templates/public/login.html index 0a0564c9..dc8366aa 100644 --- a/stock/templates/public/login.html +++ b/stock/templates/public/login.html @@ -11,7 +11,7 @@ - {{ SITE_NAME }} - Login + {{ SITE_NAME }} - {% trans "Login" %} {% include 'bundles/bootstrap-css.html' %} {% include 'bundles/fontawesome.html' %} diff --git a/stock/templates/public/register.html b/stock/templates/public/register.html index 62697b89..147fa989 100644 --- a/stock/templates/public/register.html +++ b/stock/templates/public/register.html @@ -10,7 +10,7 @@ - {{ SITE_NAME }} - Login + {{ SITE_NAME }} - {% trans "Registration" %} {% include 'bundles/bootstrap-css.html' %} {% include 'bundles/fontawesome.html' %} diff --git a/stock/templates/registered/addapikey.html b/stock/templates/registered/addapikey.html index 2a3382a6..03c003e7 100644 --- a/stock/templates/registered/addapikey.html +++ b/stock/templates/registered/addapikey.html @@ -24,9 +24,9 @@

    {% endif %}

    - {% blocktrans %}Create - a full API key{% endblocktrans %} + {% trans "Create + a full API key" %}

    {% blocktrans %}Blue API keys require access mask {{BLUE_API_MASK}} or greater for services.{% endblocktrans %} @@ -37,9 +37,9 @@

    {% endif %}

    - {% blocktrans %}Create - a blue key{% endblocktrans %} + {% trans "Create + a blue key" %}

    diff --git a/stock/templates/registered/addoperation.html b/stock/templates/registered/addoperation.html index 66ef70d2..88116a5a 100644 --- a/stock/templates/registered/addoperation.html +++ b/stock/templates/registered/addoperation.html @@ -4,7 +4,7 @@ {% load i18n %} {% get_current_language as LANGUAGE_CODE %} -{% block title %}Alliance Auth - Fleet Operation Create{% endblock %} +{% block title %}{% trans "Alliance Auth - Fleet Operation Create" %}{% endblock %} {% block page_title %}{% trans "Create Operation" %}{% endblock page_title %} {% block extra_css %} diff --git a/stock/templates/registered/addtimer.html b/stock/templates/registered/addtimer.html index 1fc4e9c4..11b1c2e3 100755 --- a/stock/templates/registered/addtimer.html +++ b/stock/templates/registered/addtimer.html @@ -4,7 +4,7 @@ {% load i18n %} {% get_current_language as LANGUAGE_CODE %} -{% block title %}Alliance Auth - Structure Timer Create{% endblock %} +{% block title %}{% trans "Alliance Auth - Structure Timer Create" %}{% endblock %} {% block page_title %}{% trans "Timer Create" %}{% endblock page_title %} {% block extra_css %} diff --git a/stock/templates/registered/apisso.html b/stock/templates/registered/apisso.html index e9bb4291..4b219d21 100644 --- a/stock/templates/registered/apisso.html +++ b/stock/templates/registered/apisso.html @@ -1,13 +1,14 @@ {% extends 'public/base.html' %} {% load staticfiles %} -{% block title %}Verify API Ownership{% endblock %} -{% block page_title%}Verify API Ownership{% endblock %} +{% load i18n %} +{% block title %}{% trans "Verify API Ownership" %}{% endblock %} +{% block page_title%}{% trans "Verify API Ownership" %}{% endblock %} {% block content %}
    -

    Verify API Ownership

    +

    {% trans "Verify API Ownership" %}

    diff --git a/stock/templates/registered/fleetupdoctrinesview.html b/stock/templates/registered/fleetupdoctrinesview.html index 72407798..7899eacc 100644 --- a/stock/templates/registered/fleetupdoctrinesview.html +++ b/stock/templates/registered/fleetupdoctrinesview.html @@ -78,7 +78,7 @@ {% endfor %} {% else %} -

    There seems to be no Doctrines in here at the moment!

    +

    {% trans "There seems to be no Doctrines in here at the moment!" %}

    {% endif %}
    diff --git a/stock/templates/registered/groupmanagement.html b/stock/templates/registered/groupmanagement.html index 767d7e75..42e622ff 100644 --- a/stock/templates/registered/groupmanagement.html +++ b/stock/templates/registered/groupmanagement.html @@ -42,7 +42,7 @@ {% endfor %} {% else %} -
    No group add requests.
    +
    {% trans "No group add requests." %}
    {% endif %} @@ -73,7 +73,7 @@ {% endfor %} {% else %} -
    No group leave requests.
    +
    {% trans "No group leave requests." %}
    {% endif %} diff --git a/stock/templates/registered/groupmanagementmenu.html b/stock/templates/registered/groupmanagementmenu.html index 2423f3e0..4601cbb3 100644 --- a/stock/templates/registered/groupmanagementmenu.html +++ b/stock/templates/registered/groupmanagementmenu.html @@ -11,7 +11,7 @@ - Group Management + {% trans "Group Management" %} diff --git a/stock/templates/registered/groupmembership.html b/stock/templates/registered/groupmembership.html index 66c7c7a7..9c57204b 100644 --- a/stock/templates/registered/groupmembership.html +++ b/stock/templates/registered/groupmembership.html @@ -47,7 +47,7 @@ {% endfor %} {% else %} -
    No groups to list.
    +
    {% trans "No groups to list." %}
    {% endif %} diff --git a/stock/templates/registered/groups.html b/stock/templates/registered/groups.html index 89d3260a..a96af407 100644 --- a/stock/templates/registered/groups.html +++ b/stock/templates/registered/groups.html @@ -47,7 +47,7 @@ {% endfor %} {% else %} -
    No groups available.
    +
    {% trans "No groups available." %}
    {% endif %} diff --git a/stock/templates/registered/hrapplicationmanagement.html b/stock/templates/registered/hrapplicationmanagement.html index f3967698..ebd5432b 100755 --- a/stock/templates/registered/hrapplicationmanagement.html +++ b/stock/templates/registered/hrapplicationmanagement.html @@ -111,7 +111,7 @@ {% endfor %} {% else %} -
    No pending applications.
    +
    {% trans "No pending applications." %}
    {% endif %} @@ -155,7 +155,7 @@ {% endfor %} {% else %} -
    No reviewed applications.
    +
    {% trans "No reviewed applications." %}
    {% endif %} diff --git a/stock/templates/registered/hrapplicationsearchview.html b/stock/templates/registered/hrapplicationsearchview.html index ac2fedd8..3826d04f 100755 --- a/stock/templates/registered/hrapplicationsearchview.html +++ b/stock/templates/registered/hrapplicationsearchview.html @@ -64,7 +64,7 @@ @@ -76,7 +76,7 @@ {% endfor %} {% else %} -
    No read notifications.
    +
    {% trans "No read notifications." %}
    {% endif %} diff --git a/stock/templates/registered/operationmanagement.html b/stock/templates/registered/operationmanagement.html index 215479f3..db4fa937 100644 --- a/stock/templates/registered/operationmanagement.html +++ b/stock/templates/registered/operationmanagement.html @@ -72,7 +72,7 @@ {% else %} -
    No fleet operations found.
    +
    {% trans "No fleet operations found." %}
    {% endif %} diff --git a/stock/templates/registered/service_credentials.html b/stock/templates/registered/service_credentials.html index 944da785..b92082d1 100644 --- a/stock/templates/registered/service_credentials.html +++ b/stock/templates/registered/service_credentials.html @@ -1,11 +1,12 @@ {% extends "public/base.html" %} {% load staticfiles %} +{% load i18n %} {% block page_title %}Credentials{% endblock page_title %} -{% block title %}Credentials{% endblock title%} +{% block title %}{% trans "Credentials" %}{% endblock title%} {% block content %}
    -

    {{ service }} Credentials

    +

    {% blocktrans %}{{ service }} Credentials{% endblocktrans %}

    @@ -16,7 +17,7 @@
    {% endfor %} - Continue + {% trans "Continue" %}
    diff --git a/stock/templates/registered/srpfleetdata.html b/stock/templates/registered/srpfleetdata.html index dfbb6a6a..ce526b04 100755 --- a/stock/templates/registered/srpfleetdata.html +++ b/stock/templates/registered/srpfleetdata.html @@ -110,7 +110,7 @@ {% endfor %} {% else %} -
    No SRP requests for this fleet.
    +
    {% trans "No SRP requests for this fleet." %}
    {% endif %} diff --git a/stock/templates/registered/srpmanagement.html b/stock/templates/registered/srpmanagement.html index 188ca656..5bd9b408 100755 --- a/stock/templates/registered/srpmanagement.html +++ b/stock/templates/registered/srpmanagement.html @@ -40,7 +40,7 @@ {% trans "Fleet SRP Code" %} {% trans "Fleet ISK Cost" %} {% trans "SRP Status" %} - {% trans "Pending Requests" %} + {% trans "Pending Requests" %} {% trans "Actions" %} {% for srpfleet in srpfleets %} @@ -117,7 +117,7 @@ {% endfor %} {% else %} -
    No SRP fleets created.
    +
    {% trans "No SRP fleets created." %}
    {% endif %} diff --git a/stock/templates/registered/timermanagement.html b/stock/templates/registered/timermanagement.html index 4a9dab24..7b7caf78 100755 --- a/stock/templates/registered/timermanagement.html +++ b/stock/templates/registered/timermanagement.html @@ -290,7 +290,7 @@ {% endfor %} {% else %} -
    No upcoming timers.
    +
    {% trans "No upcoming timers." %}
    {% endif %}

    {% trans "Past Timers" %}

    {% if past_timers %} @@ -426,7 +426,7 @@ {% endfor %} {% else %} -
    No past timers.
    +
    {% trans "No past timers." %}
    {% endif %} diff --git a/timerboard/views.py b/timerboard/views.py index 29e8c408..6bcd6b4c 100755 --- a/timerboard/views.py +++ b/timerboard/views.py @@ -7,6 +7,7 @@ from django.contrib.auth.decorators import permission_required from django.shortcuts import get_object_or_404 from authentication.decorators import members_and_blues from django.utils import timezone +from django.utils.translation import ugettext_lazy as _ from django.contrib import messages from authentication.states import MEMBER_STATE, BLUE_STATE from authentication.models import AuthServicesInfo @@ -91,7 +92,7 @@ def add_timer_view(request): timer.user = request.user timer.save() logger.info("Created new timer in %s at %s by user %s" % (timer.system, timer.eve_time, request.user)) - messages.success(request, 'Added new timer in %s at %s.' % (timer.system, timer.eve_time)) + messages.success(request, _('Added new timer in %(system)s at %(time)s.') % {"system": timer.system, "time": timer.eve_time}) return redirect("/timers/") else: logger.debug("Returning new TimerForm") @@ -110,11 +111,11 @@ def remove_timer(request, timer_id): timer = Timer.objects.get(id=timer_id) timer.delete() logger.debug("Deleting timer id %s by user %s" % (timer_id, request.user)) - messages.success(request, 'Deleted timer in %s at %s.' % (timer.system, timer.eve_time)) + messages.success(request, _('Deleted timer in %(system)s at %(time)s.') % (timer.system, timer.eve_time)) else: logger.error( "Unable to delete timer id %s for user %s - timer matching id not found." % (timer_id, request.user)) - messages.error(request, 'Unable to locate timer with ID %s.' % timer_id) + messages.error(request, _('Unable to locate timer with ID %(timerid)s.') % {"timerid": timer_id}) return redirect("auth_timer_view") @@ -150,7 +151,7 @@ def edit_timer(request, timer_id): timer.eve_character = character timer.eve_corp = corporation logger.info("User %s updating timer id %s " % (request.user, timer_id)) - messages.success(request, 'Saved changes to the timer.') + messages.success(request, _('Saved changes to the timer.')) timer.save() return redirect("auth_timer_view") else: