mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
Merge branch 'master' of https://gitlab.com/allianceauth/allianceauth into v2.10.x
This commit is contained in:
commit
0e45403195
@ -22,3 +22,7 @@ indent_style = tab
|
|||||||
|
|
||||||
[*.bat]
|
[*.bat]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|
||||||
|
[{Dockerfile,*.dockerfile}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -38,7 +38,6 @@ htmlcov/
|
|||||||
.tox/
|
.tox/
|
||||||
.coverage
|
.coverage
|
||||||
.cache
|
.cache
|
||||||
nosetests.xml
|
|
||||||
coverage.xml
|
coverage.xml
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
|
.only-default: &only-default
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- branches
|
||||||
|
- merge_requests
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- pre-commit
|
- pre-commit
|
||||||
- gitlab
|
- gitlab
|
||||||
- test
|
- test
|
||||||
- deploy
|
- deploy
|
||||||
|
- docker
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- template: Dependency-Scanning.gitlab-ci.yml
|
- template: Dependency-Scanning.gitlab-ci.yml
|
||||||
@ -15,6 +22,7 @@ before_script:
|
|||||||
- pip install wheel tox
|
- pip install wheel tox
|
||||||
|
|
||||||
pre-commit-check:
|
pre-commit-check:
|
||||||
|
<<: *only-default
|
||||||
stage: pre-commit
|
stage: pre-commit
|
||||||
image: python:3.8-bullseye
|
image: python:3.8-bullseye
|
||||||
variables:
|
variables:
|
||||||
@ -39,6 +47,7 @@ dependency_scanning:
|
|||||||
- pip install wheel tox
|
- pip install wheel tox
|
||||||
|
|
||||||
test-3.7-core:
|
test-3.7-core:
|
||||||
|
<<: *only-default
|
||||||
image: python:3.7-bullseye
|
image: python:3.7-bullseye
|
||||||
script:
|
script:
|
||||||
- tox -e py37-core
|
- tox -e py37-core
|
||||||
@ -48,6 +57,7 @@ test-3.7-core:
|
|||||||
cobertura: coverage.xml
|
cobertura: coverage.xml
|
||||||
|
|
||||||
test-3.8-core:
|
test-3.8-core:
|
||||||
|
<<: *only-default
|
||||||
image: python:3.8-bullseye
|
image: python:3.8-bullseye
|
||||||
script:
|
script:
|
||||||
- tox -e py38-core
|
- tox -e py38-core
|
||||||
@ -57,6 +67,7 @@ test-3.8-core:
|
|||||||
cobertura: coverage.xml
|
cobertura: coverage.xml
|
||||||
|
|
||||||
test-3.9-core:
|
test-3.9-core:
|
||||||
|
<<: *only-default
|
||||||
image: python:3.9-bullseye
|
image: python:3.9-bullseye
|
||||||
script:
|
script:
|
||||||
- tox -e py39-core
|
- tox -e py39-core
|
||||||
@ -65,7 +76,18 @@ test-3.9-core:
|
|||||||
reports:
|
reports:
|
||||||
cobertura: coverage.xml
|
cobertura: coverage.xml
|
||||||
|
|
||||||
|
test-3.10-core:
|
||||||
|
<<: *only-default
|
||||||
|
image: python:3.10-bullseye
|
||||||
|
script:
|
||||||
|
- tox -e py310-core
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
reports:
|
||||||
|
cobertura: coverage.xml
|
||||||
|
|
||||||
test-3.7-all:
|
test-3.7-all:
|
||||||
|
<<: *only-default
|
||||||
image: python:3.7-bullseye
|
image: python:3.7-bullseye
|
||||||
script:
|
script:
|
||||||
- tox -e py37-all
|
- tox -e py37-all
|
||||||
@ -75,6 +97,7 @@ test-3.7-all:
|
|||||||
cobertura: coverage.xml
|
cobertura: coverage.xml
|
||||||
|
|
||||||
test-3.8-all:
|
test-3.8-all:
|
||||||
|
<<: *only-default
|
||||||
image: python:3.8-bullseye
|
image: python:3.8-bullseye
|
||||||
script:
|
script:
|
||||||
- tox -e py38-all
|
- tox -e py38-all
|
||||||
@ -84,6 +107,7 @@ test-3.8-all:
|
|||||||
cobertura: coverage.xml
|
cobertura: coverage.xml
|
||||||
|
|
||||||
test-3.9-all:
|
test-3.9-all:
|
||||||
|
<<: *only-default
|
||||||
image: python:3.9-bullseye
|
image: python:3.9-bullseye
|
||||||
script:
|
script:
|
||||||
- tox -e py39-all
|
- tox -e py39-all
|
||||||
@ -92,9 +116,19 @@ test-3.9-all:
|
|||||||
reports:
|
reports:
|
||||||
cobertura: coverage.xml
|
cobertura: coverage.xml
|
||||||
|
|
||||||
|
test-3.10-all:
|
||||||
|
<<: *only-default
|
||||||
|
image: python:3.10-bullseye
|
||||||
|
script:
|
||||||
|
- tox -e py310-all
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
reports:
|
||||||
|
cobertura: coverage.xml
|
||||||
|
|
||||||
deploy_production:
|
deploy_production:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
image: python:3.9-bullseye
|
image: python:3.10-bullseye
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- pip install twine wheel
|
- pip install twine wheel
|
||||||
@ -105,3 +139,65 @@ deploy_production:
|
|||||||
|
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_TAG
|
- if: $CI_COMMIT_TAG
|
||||||
|
|
||||||
|
build-image:
|
||||||
|
before_script: []
|
||||||
|
image: docker:20.10.10
|
||||||
|
stage: docker
|
||||||
|
services:
|
||||||
|
- docker:20.10.10-dind
|
||||||
|
script: |
|
||||||
|
CURRENT_DATE=$(echo $CI_COMMIT_TIMESTAMP | head -c 10 | tr -d -)
|
||||||
|
IMAGE_TAG=$CI_REGISTRY_IMAGE/auth:$CURRENT_DATE-$CI_COMMIT_SHORT_SHA
|
||||||
|
CURRENT_TAG=$CI_REGISTRY_IMAGE/auth:$CI_COMMIT_TAG
|
||||||
|
MINOR_TAG=$CI_REGISTRY_IMAGE/auth:$(echo $CI_COMMIT_TAG | cut -d '.' -f 1-2)
|
||||||
|
MAJOR_TAG=$CI_REGISTRY_IMAGE/auth:$(echo $CI_COMMIT_TAG | cut -d '.' -f 1)
|
||||||
|
LATEST_TAG=$CI_REGISTRY_IMAGE/auth:latest
|
||||||
|
|
||||||
|
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
docker build . -t $IMAGE_TAG -f docker/Dockerfile --build-arg AUTH_VERSION=$(echo $CI_COMMIT_TAG | cut -c 2-)
|
||||||
|
docker tag $IMAGE_TAG $CURRENT_TAG
|
||||||
|
docker tag $IMAGE_TAG $MINOR_TAG
|
||||||
|
docker tag $IMAGE_TAG $MAJOR_TAG
|
||||||
|
docker tag $IMAGE_TAG $LATEST_TAG
|
||||||
|
docker image push --all-tags $CI_REGISTRY_IMAGE/auth
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_TAG
|
||||||
|
|
||||||
|
build-image-dev:
|
||||||
|
before_script: []
|
||||||
|
image: docker:20.10.10
|
||||||
|
stage: docker
|
||||||
|
services:
|
||||||
|
- docker:20.10.10-dind
|
||||||
|
script: |
|
||||||
|
CURRENT_DATE=$(echo $CI_COMMIT_TIMESTAMP | head -c 10 | tr -d -)
|
||||||
|
IMAGE_TAG=$CI_REGISTRY_IMAGE/auth:$CURRENT_DATE-$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA
|
||||||
|
|
||||||
|
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
docker build . -t $IMAGE_TAG -f docker/Dockerfile --build-arg AUTH_PACKAGE=git+https://gitlab.com/allianceauth/allianceauth@$CI_COMMIT_BRANCH
|
||||||
|
docker push $IMAGE_TAG
|
||||||
|
rules:
|
||||||
|
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == ""'
|
||||||
|
when: manual
|
||||||
|
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != ""'
|
||||||
|
when: never
|
||||||
|
|
||||||
|
build-image-mr:
|
||||||
|
before_script: []
|
||||||
|
image: docker:20.10.10
|
||||||
|
stage: docker
|
||||||
|
services:
|
||||||
|
- docker:20.10.10-dind
|
||||||
|
script: |
|
||||||
|
CURRENT_DATE=$(echo $CI_COMMIT_TIMESTAMP | head -c 10 | tr -d -)
|
||||||
|
IMAGE_TAG=$CI_REGISTRY_IMAGE/auth:$CURRENT_DATE-$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME-$CI_COMMIT_SHORT_SHA
|
||||||
|
|
||||||
|
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
docker build . -t $IMAGE_TAG -f docker/Dockerfile --build-arg AUTH_PACKAGE=git+$CI_MERGE_REQUEST_SOURCE_PROJECT_URL@$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||||
|
docker push $IMAGE_TAG
|
||||||
|
rules:
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||||
|
when: manual
|
||||||
|
- if: '$CI_PIPELINE_SOURCE != "merge_request_event"'
|
||||||
|
when: never
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# This will make sure the app is always imported when
|
# This will make sure the app is always imported when
|
||||||
# Django starts so that shared_task will use this app.
|
# Django starts so that shared_task will use this app.
|
||||||
|
|
||||||
__version__ = '2.9.2'
|
__version__ = '2.9.3'
|
||||||
__title__ = 'Alliance Auth'
|
__title__ = 'Alliance Auth'
|
||||||
__url__ = 'https://gitlab.com/allianceauth/allianceauth'
|
__url__ = 'https://gitlab.com/allianceauth/allianceauth'
|
||||||
NAME = f'{__title__} v{__version__}'
|
NAME = f'{__title__} v{__version__}'
|
||||||
|
@ -419,7 +419,7 @@ class TestUserAdmin(TestCaseWithTestData):
|
|||||||
|
|
||||||
# actions
|
# actions
|
||||||
|
|
||||||
@patch(MODULE_PATH + '.UserAdmin.message_user', auto_spec=True)
|
@patch(MODULE_PATH + '.UserAdmin.message_user', auto_spec=True, unsafe=True)
|
||||||
@patch(MODULE_PATH + '.update_character')
|
@patch(MODULE_PATH + '.update_character')
|
||||||
def test_action_update_main_character_model(
|
def test_action_update_main_character_model(
|
||||||
self, mock_task, mock_message_user
|
self, mock_task, mock_message_user
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from math import ceil
|
from math import ceil
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
import requests
|
||||||
import requests_mock
|
import requests_mock
|
||||||
from packaging.version import Version as Pep440Version
|
from packaging.version import Version as Pep440Version
|
||||||
|
|
||||||
@ -307,3 +308,25 @@ class TestFetchListFromGitlab(TestCase):
|
|||||||
result = _fetch_list_from_gitlab(self.url, max_pages=max_pages)
|
result = _fetch_list_from_gitlab(self.url, max_pages=max_pages)
|
||||||
self.assertEqual(result, GITHUB_TAGS[:4])
|
self.assertEqual(result, GITHUB_TAGS[:4])
|
||||||
self.assertEqual(requests_mocker.call_count, max_pages)
|
self.assertEqual(requests_mocker.call_count, max_pages)
|
||||||
|
|
||||||
|
@requests_mock.mock()
|
||||||
|
@patch(MODULE_PATH + '.admin_status.logger')
|
||||||
|
def test_should_not_raise_any_exception_from_github_request_but_log_as_warning(
|
||||||
|
self, requests_mocker, mock_logger
|
||||||
|
):
|
||||||
|
for my_exception in [
|
||||||
|
requests.exceptions.ConnectionError,
|
||||||
|
requests.exceptions.HTTPError,
|
||||||
|
requests.exceptions.URLRequired,
|
||||||
|
requests.exceptions.TooManyRedirects,
|
||||||
|
requests.exceptions.ConnectTimeout,
|
||||||
|
requests.exceptions.Timeout,
|
||||||
|
|
||||||
|
]:
|
||||||
|
requests_mocker.get(self.url, exc=my_exception)
|
||||||
|
try:
|
||||||
|
result = _fetch_list_from_gitlab(self.url)
|
||||||
|
except Exception as ex:
|
||||||
|
self.fail(f"Unexpected exception raised: {ex}")
|
||||||
|
self.assertTrue(mock_logger.warning.called)
|
||||||
|
self.assertListEqual(result, [])
|
||||||
|
@ -49,6 +49,7 @@ def run_model_update():
|
|||||||
for alliance in EveAllianceInfo.objects.all().values('alliance_id'):
|
for alliance in EveAllianceInfo.objects.all().values('alliance_id'):
|
||||||
update_alliance.apply_async(args=[alliance['alliance_id']], priority=TASK_PRIORITY)
|
update_alliance.apply_async(args=[alliance['alliance_id']], priority=TASK_PRIORITY)
|
||||||
|
|
||||||
|
#update existing character models if required
|
||||||
# update existing character models
|
# update existing character models
|
||||||
character_ids = EveCharacter.objects.all().values_list('character_id', flat=True)
|
character_ids = EveCharacter.objects.all().values_list('character_id', flat=True)
|
||||||
for character_ids_chunk in chunks(character_ids, CHUNK_SIZE):
|
for character_ids_chunk in chunks(character_ids, CHUNK_SIZE):
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
|
from django import forms
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.contrib.auth.models import Permission
|
from django.contrib.auth.models import Permission
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.models import Group as BaseGroup, User
|
from django.contrib.auth.models import Group as BaseGroup, User
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.db.models.functions import Lower
|
from django.db.models.functions import Lower
|
||||||
from django.db.models.signals import pre_save, post_save, pre_delete, \
|
from django.db.models.signals import pre_save, post_save, pre_delete, \
|
||||||
post_delete, m2m_changed
|
post_delete, m2m_changed
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
from django.utils.timezone import now
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .models import AuthGroup
|
from .models import AuthGroup, ReservedGroupName
|
||||||
from .models import GroupRequest
|
from .models import GroupRequest
|
||||||
|
|
||||||
if 'eve_autogroups' in apps.app_configs:
|
if 'eve_autogroups' in apps.app_configs:
|
||||||
@ -70,8 +74,7 @@ if _has_auto_groups:
|
|||||||
managedalliancegroup__isnull=True,
|
managedalliancegroup__isnull=True,
|
||||||
managedcorpgroup__isnull=True
|
managedcorpgroup__isnull=True
|
||||||
)
|
)
|
||||||
else:
|
return queryset
|
||||||
return queryset
|
|
||||||
|
|
||||||
|
|
||||||
class HasLeaderFilter(admin.SimpleListFilter):
|
class HasLeaderFilter(admin.SimpleListFilter):
|
||||||
@ -90,11 +93,22 @@ class HasLeaderFilter(admin.SimpleListFilter):
|
|||||||
return queryset.filter(authgroup__group_leaders__isnull=False)
|
return queryset.filter(authgroup__group_leaders__isnull=False)
|
||||||
elif value == 'no':
|
elif value == 'no':
|
||||||
return queryset.filter(authgroup__group_leaders__isnull=True)
|
return queryset.filter(authgroup__group_leaders__isnull=True)
|
||||||
else:
|
return queryset
|
||||||
return queryset
|
|
||||||
|
|
||||||
|
class GroupAdminForm(forms.ModelForm):
|
||||||
|
def clean_name(self):
|
||||||
|
my_name = self.cleaned_data['name']
|
||||||
|
if ReservedGroupName.objects.filter(name__iexact=my_name).exists():
|
||||||
|
raise ValidationError(
|
||||||
|
_("This name has been reserved and can not be used for groups."),
|
||||||
|
code='reserved_name'
|
||||||
|
)
|
||||||
|
return my_name
|
||||||
|
|
||||||
|
|
||||||
class GroupAdmin(admin.ModelAdmin):
|
class GroupAdmin(admin.ModelAdmin):
|
||||||
|
form = GroupAdminForm
|
||||||
list_select_related = ('authgroup',)
|
list_select_related = ('authgroup',)
|
||||||
ordering = ('name',)
|
ordering = ('name',)
|
||||||
list_display = (
|
list_display = (
|
||||||
@ -209,6 +223,41 @@ class GroupRequestAdmin(admin.ModelAdmin):
|
|||||||
_leave_request.boolean = True
|
_leave_request.boolean = True
|
||||||
|
|
||||||
|
|
||||||
|
class ReservedGroupNameAdminForm(forms.ModelForm):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['created_by'].initial = self.current_user.username
|
||||||
|
self.fields['created_at'].initial = _("(auto)")
|
||||||
|
|
||||||
|
created_by = forms.CharField(disabled=True)
|
||||||
|
created_at = forms.CharField(disabled=True)
|
||||||
|
|
||||||
|
def clean_name(self):
|
||||||
|
my_name = self.cleaned_data['name'].lower()
|
||||||
|
if Group.objects.filter(name__iexact=my_name).exists():
|
||||||
|
raise ValidationError(
|
||||||
|
_("There already exists a group with that name."), code='already_exists'
|
||||||
|
)
|
||||||
|
return my_name
|
||||||
|
|
||||||
|
def clean_created_at(self):
|
||||||
|
return now()
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(ReservedGroupName)
|
||||||
|
class ReservedGroupNameAdmin(admin.ModelAdmin):
|
||||||
|
form = ReservedGroupNameAdminForm
|
||||||
|
list_display = ("name", "created_by", "created_at")
|
||||||
|
|
||||||
|
def get_form(self, request, *args, **kwargs):
|
||||||
|
form = super().get_form(request, *args, **kwargs)
|
||||||
|
form.current_user = request.user
|
||||||
|
return form
|
||||||
|
|
||||||
|
def has_change_permission(self, *args, **kwargs) -> bool:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_save, sender=Group)
|
@receiver(pre_save, sender=Group)
|
||||||
def redirect_pre_save(sender, signal=None, *args, **kwargs):
|
def redirect_pre_save(sender, signal=None, *args, **kwargs):
|
||||||
pre_save.send(BaseGroup, *args, **kwargs)
|
pre_save.send(BaseGroup, *args, **kwargs)
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2021-11-25 18:38
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('groupmanagement', '0017_improve_groups_documentation'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ReservedGroupName',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(help_text='Name that can not be used for groups.', max_length=150, unique=True, verbose_name='name')),
|
||||||
|
('reason', models.TextField(help_text='Reason why this name is reserved.', verbose_name='reason')),
|
||||||
|
('created_by', models.CharField(help_text='Name of the user who created this entry.', max_length=255, verbose_name='created by')),
|
||||||
|
('created_at', models.DateTimeField(default=django.utils.timezone.now, help_text='Date when this entry was created', verbose_name='created at')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -4,8 +4,7 @@ from django.conf import settings
|
|||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import post_save
|
from django.utils.timezone import now
|
||||||
from django.dispatch import receiver
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from allianceauth.authentication.models import State
|
from allianceauth.authentication.models import State
|
||||||
@ -181,18 +180,35 @@ class AuthGroup(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Group)
|
class ReservedGroupName(models.Model):
|
||||||
def create_auth_group(sender, instance, created, **kwargs):
|
"""Name that can not be used for groups.
|
||||||
"""
|
|
||||||
Creates the AuthGroup model when a group is created
|
|
||||||
"""
|
|
||||||
if created:
|
|
||||||
AuthGroup.objects.create(group=instance)
|
|
||||||
|
|
||||||
|
This enables AA to ignore groups on other services (e.g. Discord) with that name.
|
||||||
|
"""
|
||||||
|
name = models.CharField(
|
||||||
|
_('name'),
|
||||||
|
max_length=150,
|
||||||
|
unique=True,
|
||||||
|
help_text=_("Name that can not be used for groups.")
|
||||||
|
)
|
||||||
|
reason = models.TextField(
|
||||||
|
_('reason'), help_text=_("Reason why this name is reserved.")
|
||||||
|
)
|
||||||
|
created_by = models.CharField(
|
||||||
|
_('created by'),
|
||||||
|
max_length=255,
|
||||||
|
help_text="Name of the user who created this entry."
|
||||||
|
)
|
||||||
|
created_at = models.DateTimeField(
|
||||||
|
_('created at'), default=now, help_text=_("Date when this entry was created")
|
||||||
|
)
|
||||||
|
|
||||||
@receiver(post_save, sender=Group)
|
def __str__(self) -> str:
|
||||||
def save_auth_group(sender, instance, **kwargs):
|
return self.name
|
||||||
"""
|
|
||||||
Ensures AuthGroup model is saved automatically
|
def save(self, *args, **kwargs) -> None:
|
||||||
"""
|
if Group.objects.filter(name__iexact=self.name).exists():
|
||||||
instance.authgroup.save()
|
raise RuntimeError(
|
||||||
|
f"Save failed. There already exists a group with the name: {self.name}."
|
||||||
|
)
|
||||||
|
super().save(*args, **kwargs)
|
||||||
|
@ -1,11 +1,33 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
|
from django.db.models.signals import pre_save, post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from allianceauth.authentication.signals import state_changed
|
from allianceauth.authentication.signals import state_changed
|
||||||
|
|
||||||
|
from .models import AuthGroup, ReservedGroupName
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(pre_save, sender=Group)
|
||||||
|
def find_new_name_for_conflicting_groups(sender, instance, **kwargs):
|
||||||
|
"""Find new name for a group which name is already reserved."""
|
||||||
|
new_name = instance.name
|
||||||
|
num = 0
|
||||||
|
while ReservedGroupName.objects.filter(name__iexact=new_name).exists():
|
||||||
|
num += 1
|
||||||
|
new_name = f"{instance.name}_{num}"
|
||||||
|
instance.name = new_name
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_save, sender=Group)
|
||||||
|
def create_auth_group(sender, instance, created, **kwargs):
|
||||||
|
"""Create the AuthGroup model when a group is created."""
|
||||||
|
if created:
|
||||||
|
AuthGroup.objects.create(group=instance)
|
||||||
|
|
||||||
|
|
||||||
@receiver(state_changed)
|
@receiver(state_changed)
|
||||||
def check_groups_on_state_change(sender, user, state, **kwargs):
|
def check_groups_on_state_change(sender, user, state, **kwargs):
|
||||||
logger.debug(
|
logger.debug(
|
||||||
|
@ -10,9 +10,10 @@ from allianceauth.authentication.models import CharacterOwnership, State
|
|||||||
from allianceauth.eveonline.models import (
|
from allianceauth.eveonline.models import (
|
||||||
EveCharacter, EveCorporationInfo, EveAllianceInfo
|
EveCharacter, EveCorporationInfo, EveAllianceInfo
|
||||||
)
|
)
|
||||||
|
|
||||||
from ..admin import HasLeaderFilter, GroupAdmin, Group
|
from ..admin import HasLeaderFilter, GroupAdmin, Group
|
||||||
from . import get_admin_change_view_url
|
from . import get_admin_change_view_url
|
||||||
|
from ..models import ReservedGroupName
|
||||||
|
|
||||||
|
|
||||||
if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS:
|
if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS:
|
||||||
_has_auto_groups = True
|
_has_auto_groups = True
|
||||||
@ -396,3 +397,108 @@ class TestGroupAdmin(TestCase):
|
|||||||
c.login(username='superuser', password='secret')
|
c.login(username='superuser', password='secret')
|
||||||
response = c.get(get_admin_change_view_url(self.group_1))
|
response = c.get(get_admin_change_view_url(self.group_1))
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_should_create_new_group(self):
|
||||||
|
# given
|
||||||
|
user = User.objects.create_superuser("bruce")
|
||||||
|
self.client.force_login(user)
|
||||||
|
# when
|
||||||
|
response = self.client.post(
|
||||||
|
"/admin/groupmanagement/group/add/",
|
||||||
|
data={
|
||||||
|
"name": "new group",
|
||||||
|
"authgroup-TOTAL_FORMS": 1,
|
||||||
|
"authgroup-INITIAL_FORMS": 0,
|
||||||
|
"authgroup-MIN_NUM_FORMS": 0,
|
||||||
|
"authgroup-MAX_NUM_FORMS": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# then
|
||||||
|
self.assertEqual(response.status_code, 302)
|
||||||
|
self.assertEqual(response.url, "/admin/groupmanagement/group/")
|
||||||
|
self.assertTrue(Group.objects.filter(name="new group").exists())
|
||||||
|
|
||||||
|
def test_should_not_allow_creating_new_group_with_reserved_name(self):
|
||||||
|
# given
|
||||||
|
ReservedGroupName.objects.create(
|
||||||
|
name="new group", reason="dummy", created_by="bruce"
|
||||||
|
)
|
||||||
|
user = User.objects.create_superuser("bruce")
|
||||||
|
self.client.force_login(user)
|
||||||
|
# when
|
||||||
|
response = self.client.post(
|
||||||
|
"/admin/groupmanagement/group/add/",
|
||||||
|
data={
|
||||||
|
"name": "New group",
|
||||||
|
"authgroup-TOTAL_FORMS": 1,
|
||||||
|
"authgroup-INITIAL_FORMS": 0,
|
||||||
|
"authgroup-MIN_NUM_FORMS": 0,
|
||||||
|
"authgroup-MAX_NUM_FORMS": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# then
|
||||||
|
self.assertContains(
|
||||||
|
response, "This name has been reserved and can not be used for groups"
|
||||||
|
)
|
||||||
|
self.assertFalse(Group.objects.filter(name="new group").exists())
|
||||||
|
|
||||||
|
def test_should_not_allow_changing_name_of_existing_group_to_reserved_name(self):
|
||||||
|
# given
|
||||||
|
ReservedGroupName.objects.create(
|
||||||
|
name="new group", reason="dummy", created_by="bruce"
|
||||||
|
)
|
||||||
|
group = Group.objects.create(name="dummy")
|
||||||
|
user = User.objects.create_superuser("bruce")
|
||||||
|
self.client.force_login(user)
|
||||||
|
# when
|
||||||
|
response = self.client.post(
|
||||||
|
f"/admin/groupmanagement/group/{group.pk}/change/",
|
||||||
|
data={
|
||||||
|
"name": "new group",
|
||||||
|
"authgroup-TOTAL_FORMS": 1,
|
||||||
|
"authgroup-INITIAL_FORMS": 0,
|
||||||
|
"authgroup-MIN_NUM_FORMS": 0,
|
||||||
|
"authgroup-MAX_NUM_FORMS": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# then
|
||||||
|
self.assertContains(
|
||||||
|
response, "This name has been reserved and can not be used for groups"
|
||||||
|
)
|
||||||
|
self.assertFalse(Group.objects.filter(name="new group").exists())
|
||||||
|
|
||||||
|
|
||||||
|
class TestReservedGroupNameAdmin(TestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
cls.user = User.objects.create_superuser("bruce")
|
||||||
|
|
||||||
|
def test_should_create_new_entry(self):
|
||||||
|
# given
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
# when
|
||||||
|
response = self.client.post(
|
||||||
|
"/admin/groupmanagement/reservedgroupname/add/",
|
||||||
|
data={"name": "Test", "reason": "dummy"}
|
||||||
|
)
|
||||||
|
# then
|
||||||
|
self.assertEqual(response.status_code, 302)
|
||||||
|
self.assertEqual(response.url, "/admin/groupmanagement/reservedgroupname/")
|
||||||
|
obj = ReservedGroupName.objects.get(name="test")
|
||||||
|
self.assertEqual(obj.name, "test")
|
||||||
|
self.assertEqual(obj.created_by, self.user.username)
|
||||||
|
self.assertTrue(obj.created_at)
|
||||||
|
|
||||||
|
def test_should_not_allow_names_of_existing_groups(self):
|
||||||
|
# given
|
||||||
|
Group.objects.create(name="Already taken")
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
# when
|
||||||
|
response = self.client.post(
|
||||||
|
"/admin/groupmanagement/reservedgroupname/add/",
|
||||||
|
data={"name": "already taken", "reason": "dummy"}
|
||||||
|
)
|
||||||
|
# then
|
||||||
|
self.assertContains(response, "There already exists a group with that name")
|
||||||
|
self.assertFalse(ReservedGroupName.objects.filter(name="already taken").exists())
|
||||||
|
@ -5,7 +5,7 @@ from django.test import TestCase, override_settings
|
|||||||
|
|
||||||
from allianceauth.tests.auth_utils import AuthUtils
|
from allianceauth.tests.auth_utils import AuthUtils
|
||||||
|
|
||||||
from ..models import GroupRequest, RequestLog
|
from ..models import GroupRequest, RequestLog, ReservedGroupName
|
||||||
|
|
||||||
MODULE_PATH = "allianceauth.groupmanagement.models"
|
MODULE_PATH = "allianceauth.groupmanagement.models"
|
||||||
|
|
||||||
@ -284,3 +284,22 @@ class TestAuthGroupRequestApprovers(TestCase):
|
|||||||
leaders = child_group.authgroup.group_request_approvers()
|
leaders = child_group.authgroup.group_request_approvers()
|
||||||
# then
|
# then
|
||||||
self.assertSetEqual(leaders, set())
|
self.assertSetEqual(leaders, set())
|
||||||
|
|
||||||
|
|
||||||
|
class TestReservedGroupName(TestCase):
|
||||||
|
def test_should_return_name(self):
|
||||||
|
# given
|
||||||
|
obj = ReservedGroupName(name="test", reason="abc", created_by="xxx")
|
||||||
|
# when
|
||||||
|
result = str(obj)
|
||||||
|
# then
|
||||||
|
self.assertEqual(result, "test")
|
||||||
|
|
||||||
|
def test_should_not_allow_creating_reserved_name_for_existing_group(self):
|
||||||
|
# given
|
||||||
|
Group.objects.create(name="Dummy")
|
||||||
|
# when
|
||||||
|
with self.assertRaises(RuntimeError):
|
||||||
|
ReservedGroupName.objects.create(
|
||||||
|
name="dummy", reason="abc", created_by="xxx"
|
||||||
|
)
|
||||||
|
@ -6,6 +6,27 @@ from allianceauth.eveonline.autogroups.models import AutogroupsConfig
|
|||||||
from allianceauth.tests.auth_utils import AuthUtils
|
from allianceauth.tests.auth_utils import AuthUtils
|
||||||
|
|
||||||
|
|
||||||
|
from ..models import ReservedGroupName
|
||||||
|
|
||||||
|
|
||||||
|
class TestGroupSignals(TestCase):
|
||||||
|
def test_should_create_authgroup_when_group_is_created(self):
|
||||||
|
# when
|
||||||
|
group = Group.objects.create(name="test")
|
||||||
|
# then
|
||||||
|
self.assertEqual(group.authgroup.group, group)
|
||||||
|
|
||||||
|
def test_should_rename_group_that_conflicts_with_reserved_name(self):
|
||||||
|
# given
|
||||||
|
ReservedGroupName.objects.create(name="test", reason="dummy", created_by="xyz")
|
||||||
|
ReservedGroupName.objects.create(name="test_1", reason="dummy", created_by="xyz")
|
||||||
|
# when
|
||||||
|
group = Group.objects.create(name="Test")
|
||||||
|
# then
|
||||||
|
self.assertNotEqual(group.name, "test")
|
||||||
|
self.assertNotEqual(group.name, "test_1")
|
||||||
|
|
||||||
|
|
||||||
class TestCheckGroupsOnStateChange(TestCase):
|
class TestCheckGroupsOnStateChange(TestCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
from unittest.mock import Mock, patch
|
|
||||||
|
|
||||||
from django.test import RequestFactory, TestCase
|
from django.test import RequestFactory, TestCase
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from allianceauth.tests.auth_utils import AuthUtils
|
from allianceauth.tests.auth_utils import AuthUtils
|
||||||
from esi.models import Token
|
|
||||||
|
|
||||||
from .. import views
|
from .. import views
|
||||||
|
|
||||||
|
@ -388,7 +388,7 @@ def group_request_leave(request, group_id):
|
|||||||
logger.info(f"{request.user} attempted to leave {group} but already has an pending leave request.")
|
logger.info(f"{request.user} attempted to leave {group} but already has an pending leave request.")
|
||||||
messages.warning(request, _("You already have a pending leave request for that group."))
|
messages.warning(request, _("You already have a pending leave request for that group."))
|
||||||
return redirect("groupmanagement:groups")
|
return redirect("groupmanagement:groups")
|
||||||
if getattr(settings, 'AUTO_LEAVE', False):
|
if getattr(settings, 'GROUPMANAGEMENT_AUTO_LEAVE', False):
|
||||||
logger.info(f"{request.user} leaving joinable group {group} due to auto_leave")
|
logger.info(f"{request.user} leaving joinable group {group} due to auto_leave")
|
||||||
request_info = request.user.username + ":" + group.name
|
request_info = request.user.username + ":" + group.name
|
||||||
log = RequestLog(request_type=True, group=group, request_info=request_info, action=1, request_actor=request.user)
|
log = RequestLog(request_type=True, group=group, request_info=request_info, action=1, request_actor=request.user)
|
||||||
|
Binary file not shown.
@ -2,18 +2,18 @@
|
|||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Erik Kalkoken <erik.kalkoken@gmail.com>, 2020
|
# Erik Kalkoken <erik.kalkoken@gmail.com>, 2020
|
||||||
# Joel Falknau <ozirascal@gmail.com>, 2021
|
# Joel Falknau <ozirascal@gmail.com>, 2021
|
||||||
# Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021
|
# Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021\n"
|
"Last-Translator: Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021\n"
|
||||||
"Language-Team: German (https://www.transifex.com/alliance-auth/teams/107430/de/)\n"
|
"Language-Team: German (https://www.transifex.com/alliance-auth/teams/107430/de/)\n"
|
||||||
@ -40,12 +40,12 @@ msgstr ""
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr "Status geändert zu %s"
|
msgstr "Status geändert zu %s"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr "Dein Nutzerstatus ist nun %(state)s"
|
msgstr "Dein Nutzerstatus ist nun %(state)s"
|
||||||
@ -66,29 +66,29 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Hauptcharakter (Status: %(state)s)"
|
"Hauptcharakter (Status: %(state)s)"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "Kein Hauptcharakter gesetzt."
|
msgstr "Kein Hauptcharakter gesetzt."
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "Charakter hinzufügen"
|
msgstr "Charakter hinzufügen"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "Hauptcharakter ändern"
|
msgstr "Hauptcharakter ändern"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr "Gruppen"
|
msgstr "Gruppen"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "Charaktere"
|
msgstr "Charaktere"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -97,13 +97,13 @@ msgstr "Charaktere"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "Corp"
|
msgstr "Corp"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -397,7 +397,7 @@ msgstr "Benutzername"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -476,7 +476,6 @@ msgstr "Flotte"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -485,8 +484,8 @@ msgstr "Ersteller"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Dauer"
|
msgstr "Dauer"
|
||||||
|
|
||||||
@ -571,11 +570,128 @@ msgstr "Flottenteilnahme registriert."
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "FAT-Link ist abgelaufen."
|
msgstr "FAT-Link ist abgelaufen."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
"Dieser Name ist reserviert und kann nicht als Gruppenname genutzt werden."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr "(automatisch)"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr "Es existiert bereits eine Gruppe mit diesem Namen."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr "Gruppenverwaltung"
|
msgstr "Gruppenverwaltung"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
"Interne Gruppe. Nutzer können diese nicht sehen und dieser nicht beitreten. "
|
||||||
|
"<br>Dies ist für Gruppen genutzt wie Mitglieder, Corp_*, Allianz_*, "
|
||||||
|
"etc.<br><b>Überschreibt die Versteckt und Offen Option wenn gesetzt</b>"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
"Diese Gruppe ist nicht sichtbar, aber Nutzer können dennoch beitreten wenn "
|
||||||
|
"diese den Link hierzu haben."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
"Gruppe ist offen und Nutzer werden dieser automatisch hinzugefügt bei "
|
||||||
|
"Anfrage.<br>Wenn die Gruppe nicht offen ist, müssen Anfragen manuell "
|
||||||
|
"bestätigt werden."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
"Öffentliche Gruppe. Jeder registrierte Nutzer kann dieser Gruppe beitreten, "
|
||||||
|
"he nach gesetzter Sichtbarkeit in den andern Optionen dieser Gruppe.<br>Auth"
|
||||||
|
" wird Nutzer nicht von dieser Gruppe entfernen wenn diese nicht länger "
|
||||||
|
"authentifiziert sind."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
"Gruppenleiter können Anfragen für diese Gruppe bearbeiten. Nutze die "
|
||||||
|
"<code>auth.group_management</code> Berechtigung um Nutzern zu erlauben alle "
|
||||||
|
"Gruppen zu verwalten<br>"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
"Mitglieder von Führungsgruppen können Anfragen für diese Gruppe bearbeiten. "
|
||||||
|
"Nutze die <code>auth.group_management</code> Berechtigung um Nutzern zu "
|
||||||
|
"erlauben alle Gruppen zu verwalten.<br>"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
"Hier gelistete Ränge können dieser Gruppe beitreten, vorausgesetzt sie haben"
|
||||||
|
" die entsprechenden Berechtigungen.<br>"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
"Kurze Beschreibung <i>(max. 512 Zeichen)</i> der Gruppe die dem Nutzer "
|
||||||
|
"angezeigt wird."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr "Kann nicht öffentlichen Gruppen beitreten"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr "Name kann nicht für Gruppen genutzt werden"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr "Grund"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr "Grund wieso dieser Name reserviert ist."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr "Erstellt bei"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr "Erstellt"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr "Datum der Erstellung dieses Eintrags"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -603,7 +719,7 @@ msgstr "Typ"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -669,6 +785,7 @@ msgstr "Gruppen"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Beschreibung"
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
@ -865,24 +982,24 @@ msgstr "Du bist bereits Mitglied dieser Gruppe."
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr "Du hast Dich bereits für diese Gruppe beworben."
|
msgstr "Du hast Dich bereits für diese Gruppe beworben."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "Beitritt zur Gruppe %(group)s beantragt."
|
msgstr "Beitritt zur Gruppe %(group)s beantragt."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "Du kannst diese Gruppe nicht verlassen"
|
msgstr "Du kannst diese Gruppe nicht verlassen"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "Du bist kein Mitglied dieser Gruppe"
|
msgstr "Du bist kein Mitglied dieser Gruppe"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr "Du hast bereits ein ausstehendes Austrittsgesuch für diese Gruppe."
|
msgstr "Du hast bereits ein ausstehendes Austrittsgesuch für diese Gruppe."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "Austrittsgesuch für Gruppe %(group)s gesendet."
|
msgstr "Austrittsgesuch für Gruppe %(group)s gesendet."
|
||||||
@ -1143,43 +1260,56 @@ msgstr "Alle gelesenen Benachrichtigungen gelöscht."
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr "Flottenoperationen"
|
msgstr "Flottenoperationen"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr "Doktrin"
|
msgstr "Doktrin"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "Startzeit"
|
msgstr "Startzeit"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "Operationsname"
|
msgstr "Operationsname"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr "Operationsart"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr "Flottenkommandeur"
|
msgstr "Flottenkommandeur"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr "Zusätzliche Info"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr "(Optinal) Beschreibe die Operation mit ein paar Worten"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr "Operation erstellen"
|
msgstr "Operation erstellen"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr "Form Up System"
|
msgstr "Form Up System"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr "Ortszeit"
|
msgstr "Ortszeit"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr "FC"
|
msgstr "FC"
|
||||||
|
|
||||||
@ -1197,9 +1327,8 @@ msgid "Current Eve Time:"
|
|||||||
msgstr "Momentane Eve Zeit"
|
msgstr "Momentane Eve Zeit"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
msgstr "Anstehende Flottenoperationen"
|
||||||
msgstr "Nächste Timer"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
||||||
@ -1207,9 +1336,8 @@ msgid "No upcoming timers."
|
|||||||
msgstr "Keine kommenden Timer."
|
msgstr "Keine kommenden Timer."
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
msgstr "Vergangene Flottenoperationen"
|
||||||
msgstr "Vergangene Timer"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
||||||
@ -1226,17 +1354,17 @@ msgstr "Aktualisiere Flottenoperationen"
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr "Flottenoperation existiert nicht"
|
msgstr "Flottenoperation existiert nicht"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "Operation timer für %(opname)s erstellt."
|
msgstr "Operation timer für %(opname)s erstellt."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "Operation timer für %(opname)s entfernt."
|
msgstr "Operation timer für %(opname)s entfernt."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "Änderungen für Operation timer %(opname)s gespeichert."
|
msgstr "Änderungen für Operation timer %(opname)s gespeichert."
|
||||||
@ -1400,11 +1528,11 @@ msgstr "Passwort"
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "Passwort muss mindestens 8 Zeichen lang sein"
|
msgstr "Passwort muss mindestens 8 Zeichen lang sein"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr "Discord Konto deaktiviert"
|
msgstr "Discord Konto deaktiviert"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1740,10 +1868,6 @@ msgstr "Flottenzeit"
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr "Flottendoktrin"
|
msgstr "Flottendoktrin"
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr "Zusätzliche Info"
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr "Killboard Link (zkillboard.com oder kb.evetools.org)"
|
msgstr "Killboard Link (zkillboard.com oder kb.evetools.org)"
|
||||||
@ -1958,12 +2082,12 @@ msgstr ""
|
|||||||
"Der Killmail Link Deiner SRP Anfrage ist ungültig. Bitte stelle sicher, dass"
|
"Der Killmail Link Deiner SRP Anfrage ist ungültig. Bitte stelle sicher, dass"
|
||||||
" Du zKillboard benutzt."
|
" Du zKillboard benutzt."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr "SRP Anfrage für Deine %(ship)s gesendet."
|
msgstr "SRP Anfrage für Deine %(ship)s gesendet."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
@ -1972,40 +2096,40 @@ msgstr ""
|
|||||||
"Charakter %(charid)s gehört nicht zu Deinem Auth Konto. Bitte füge den API "
|
"Charakter %(charid)s gehört nicht zu Deinem Auth Konto. Bitte füge den API "
|
||||||
"Key für diesen Charakter hinzu und versuche es erneut."
|
"Key für diesen Charakter hinzu und versuche es erneut."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr "Keine SRP Anfragen ausgewählt."
|
msgstr "Keine SRP Anfragen ausgewählt."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr "Ausgewählte SRP Anfrage konnte nicht gefunden werden."
|
msgstr "Ausgewählte SRP Anfrage konnte nicht gefunden werden."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr "%(numrequests)s SRP Anfragen gelöscht"
|
msgstr "%(numrequests)s SRP Anfragen gelöscht"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr "%(numrequests)s SRP Anfragen bestätigt."
|
msgstr "%(numrequests)s SRP Anfragen bestätigt."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr "Ausgewählte SRP Anfrage konnte nicht gefunden werden."
|
msgstr "Ausgewählte SRP Anfrage konnte nicht gefunden werden."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr "%(numrequests)s SRP Anfragen abgelehnt."
|
msgstr "%(numrequests)s SRP Anfragen abgelehnt."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr "Unfähig SRP Anfrage mit der ID %(requestid)s zu finden."
|
msgstr "Unfähig SRP Anfrage mit der ID %(requestid)s zu finden."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr "Änderungen der SRP Flotte %(fleetname)s gespeichert"
|
msgstr "Änderungen der SRP Flotte %(fleetname)s gespeichert"
|
||||||
@ -2232,6 +2356,14 @@ msgstr "Corp Timer"
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr "Struktur"
|
msgstr "Struktur"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr "Nächste Timer"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr "Vergangene Timer"
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-30 14:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -380,7 +380,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -459,7 +459,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -468,8 +467,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -554,11 +553,104 @@ msgstr ""
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this group."
|
||||||
|
"<br>Used for groups such as Members, Corp_*, Alliance_* etc.<br><b>Overrides "
|
||||||
|
"Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the <code>auth."
|
||||||
|
"group_management</code> permission to allow a user to manage all groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -586,7 +678,7 @@ msgstr ""
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -652,6 +744,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -844,24 +937,24 @@ msgstr ""
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1122,43 +1215,56 @@ msgstr ""
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1176,8 +1282,7 @@ msgid "Current Eve Time:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
@ -1186,8 +1291,7 @@ msgid "No upcoming timers."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
@ -1205,17 +1309,17 @@ msgstr ""
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1379,11 +1483,11 @@ msgstr ""
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1706,10 +1810,6 @@ msgstr ""
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1919,52 +2019,52 @@ msgid ""
|
|||||||
"zKillboard."
|
"zKillboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
"API key for this character and try again"
|
"API key for this character and try again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2191,6 +2291,14 @@ msgstr ""
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -12,7 +12,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2021\n"
|
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2021\n"
|
||||||
"Language-Team: Spanish (https://www.transifex.com/alliance-auth/teams/107430/es/)\n"
|
"Language-Team: Spanish (https://www.transifex.com/alliance-auth/teams/107430/es/)\n"
|
||||||
@ -39,12 +39,12 @@ msgstr ""
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -63,29 +63,29 @@ msgid ""
|
|||||||
" "
|
" "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "No se ha seleccionado un personaje principal."
|
msgstr "No se ha seleccionado un personaje principal."
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "Agregar Personaje"
|
msgstr "Agregar Personaje"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "Cambiar Personaje Principal"
|
msgstr "Cambiar Personaje Principal"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "Personajes"
|
msgstr "Personajes"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -94,13 +94,13 @@ msgstr "Personajes"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nombre"
|
msgstr "Nombre"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "Corporación"
|
msgstr "Corporación"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -391,7 +391,7 @@ msgstr "Usuario"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -470,7 +470,6 @@ msgstr "Flota"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -479,8 +478,8 @@ msgstr "Creador"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Duracion"
|
msgstr "Duracion"
|
||||||
|
|
||||||
@ -565,11 +564,105 @@ msgstr "Participacion de flota registrada."
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "Enlace de participacion expirado."
|
msgstr "Enlace de participacion expirado."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr "Manejo de Grupo"
|
msgstr "Manejo de Grupo"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -597,7 +690,7 @@ msgstr "Tipo"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -663,6 +756,7 @@ msgstr "Grupos"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descripcion"
|
msgstr "Descripcion"
|
||||||
|
|
||||||
@ -858,24 +952,24 @@ msgstr ""
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "Solicitud enviada al grupo %(group)s."
|
msgstr "Solicitud enviada al grupo %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "No puedes dejar el grupos"
|
msgstr "No puedes dejar el grupos"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "No eres miembro de ese grupo"
|
msgstr "No eres miembro de ese grupo"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "Solicitaste dejar el grupo %(group)s."
|
msgstr "Solicitaste dejar el grupo %(group)s."
|
||||||
@ -1136,43 +1230,56 @@ msgstr "Se borraron todas las notificaciones leidas."
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr "Operaciones de Flota"
|
msgstr "Operaciones de Flota"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr "Doctrina"
|
msgstr "Doctrina"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "Tiempo de inicio"
|
msgstr "Tiempo de inicio"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "Nombre de la operacion"
|
msgstr "Nombre de la operacion"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr "Comandante"
|
msgstr "Comandante"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr "Informacion Adicional"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr "Create Operacion"
|
msgstr "Create Operacion"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr "Sistema de encuentro"
|
msgstr "Sistema de encuentro"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr "Tiempo Local"
|
msgstr "Tiempo Local"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr "Comandante"
|
msgstr "Comandante"
|
||||||
|
|
||||||
@ -1190,9 +1297,8 @@ msgid "Current Eve Time:"
|
|||||||
msgstr "Tipo en EVE actual:"
|
msgstr "Tipo en EVE actual:"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
msgstr ""
|
||||||
msgstr "Siguientes Timers"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
||||||
@ -1200,9 +1306,8 @@ msgid "No upcoming timers."
|
|||||||
msgstr "No hay proximos timers."
|
msgstr "No hay proximos timers."
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
msgstr ""
|
||||||
msgstr "Timers Pasados"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
||||||
@ -1219,17 +1324,17 @@ msgstr "Actualizar Operacion"
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr "La operacion no existe"
|
msgstr "La operacion no existe"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "Se creo operacion para el timer %(opname)s."
|
msgstr "Se creo operacion para el timer %(opname)s."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "Se removio la operacion para %(opname)s."
|
msgstr "Se removio la operacion para %(opname)s."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "Se guardaron los cambios para la operacion %(opname)s"
|
msgstr "Se guardaron los cambios para la operacion %(opname)s"
|
||||||
@ -1393,11 +1498,11 @@ msgstr "Contraseña"
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "La contraseña tiene que tener 8 caracteres de largo minimo"
|
msgstr "La contraseña tiene que tener 8 caracteres de largo minimo"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1722,10 +1827,6 @@ msgstr "Hora de flota"
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr "Doctrina"
|
msgstr "Doctrina"
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr "Informacion Adicional"
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1936,52 +2037,52 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"El enalce suministrado no es valido. Por favor verifica si esats usando ZKB."
|
"El enalce suministrado no es valido. Por favor verifica si esats usando ZKB."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr "Solicitud de SRP para tu %(ship)s completo."
|
msgstr "Solicitud de SRP para tu %(ship)s completo."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
"API key for this character and try again"
|
"API key for this character and try again"
|
||||||
msgstr "El personaje %(charid)s no pertenece a tu cuenta"
|
msgstr "El personaje %(charid)s no pertenece a tu cuenta"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr "No se selecciono ninguna solicitud de SRP"
|
msgstr "No se selecciono ninguna solicitud de SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr "Imposible localizar la solicitud de SRP."
|
msgstr "Imposible localizar la solicitud de SRP."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr "Se borraron %(numrequests)s pedidos de SRP"
|
msgstr "Se borraron %(numrequests)s pedidos de SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr "Se aprobaron %(numrequests)s pedidos de SRP"
|
msgstr "Se aprobaron %(numrequests)s pedidos de SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr "Imposible localizar el pedido de SRP"
|
msgstr "Imposible localizar el pedido de SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr "Se rechazaron %(numrequests)s pedios de SRP."
|
msgstr "Se rechazaron %(numrequests)s pedios de SRP."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr "Imposible localizar la solicitud de SRP con ID %(requestid)s"
|
msgstr "Imposible localizar la solicitud de SRP con ID %(requestid)s"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr "Se guardaron los cambios en el SRP de la flota %(fleetname)s"
|
msgstr "Se guardaron los cambios en el SRP de la flota %(fleetname)s"
|
||||||
@ -2208,6 +2309,14 @@ msgstr "Timers de Corporacion"
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr "Estructura"
|
msgstr "Estructura"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr "Siguientes Timers"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr "Timers Pasados"
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
Binary file not shown.
@ -2,22 +2,23 @@
|
|||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# François LACROIX-DURANT <umbre@fallenstarscreations.com>, 2020
|
# François LACROIX-DURANT <umbre@fallenstarscreations.com>, 2020
|
||||||
# Philippe Querin-Laporte <philippe.querin@hotmail.com>, 2020
|
# Philippe Querin-Laporte <philippe.querin@hotmail.com>, 2020
|
||||||
# Keven D. <theenarki@gmail.com>, 2020
|
# Keven D. <theenarki@gmail.com>, 2020
|
||||||
# Idea ., 2021
|
# Idea ., 2021
|
||||||
# Mickael PATTE, 2021
|
# Mickael PATTE, 2021
|
||||||
#
|
# Geoffrey Fabbro, 2021
|
||||||
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Mickael PATTE, 2021\n"
|
"Last-Translator: Geoffrey Fabbro, 2021\n"
|
||||||
"Language-Team: French (France) (https://www.transifex.com/alliance-auth/teams/107430/fr_FR/)\n"
|
"Language-Team: French (France) (https://www.transifex.com/alliance-auth/teams/107430/fr_FR/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -31,7 +32,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/analytics/models.py:30
|
#: allianceauth/analytics/models.py:30
|
||||||
msgid "Google Analytics V4"
|
msgid "Google Analytics V4"
|
||||||
msgstr ""
|
msgstr "Google Analytics V4"
|
||||||
|
|
||||||
#: allianceauth/authentication/decorators.py:37
|
#: allianceauth/authentication/decorators.py:37
|
||||||
msgid "A main character is required to perform that action. Add one below."
|
msgid "A main character is required to perform that action. Add one below."
|
||||||
@ -43,12 +44,12 @@ msgstr ""
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr "État changé à: %s"
|
msgstr "État changé à: %s"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr "L'état de votre personnage est maintenant: %(state)s"
|
msgstr "L'état de votre personnage est maintenant: %(state)s"
|
||||||
@ -69,29 +70,29 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
" Personnage Principal (État: %(state)s)"
|
" Personnage Principal (État: %(state)s)"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "Aucun personnage principal sélectionné."
|
msgstr "Aucun personnage principal sélectionné."
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "Ajouter un Personnage"
|
msgstr "Ajouter un Personnage"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "Changer de Personnage Principal"
|
msgstr "Changer de Personnage Principal"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr "Groupes"
|
msgstr "Groupes"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "Personnages"
|
msgstr "Personnages"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -100,13 +101,13 @@ msgstr "Personnages"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "Corpo"
|
msgstr "Corpo"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -119,7 +120,7 @@ msgstr "Connexion"
|
|||||||
|
|
||||||
#: allianceauth/authentication/templates/public/register.html:7
|
#: allianceauth/authentication/templates/public/register.html:7
|
||||||
msgid "Registration"
|
msgid "Registration"
|
||||||
msgstr ""
|
msgstr "Enregistrement"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/public/register.html:22
|
#: allianceauth/authentication/templates/public/register.html:22
|
||||||
#: allianceauth/authentication/templates/registration/registration_form.html:5
|
#: allianceauth/authentication/templates/registration/registration_form.html:5
|
||||||
@ -400,7 +401,7 @@ msgstr "Utilisateur"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -479,7 +480,6 @@ msgstr "Flotte"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -488,8 +488,8 @@ msgstr "Créateur"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Durée"
|
msgstr "Durée"
|
||||||
|
|
||||||
@ -574,11 +574,105 @@ msgstr "Participation à la flotte enregistrée."
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "le lien a expiré"
|
msgstr "le lien a expiré"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr "Gestion de groupe"
|
msgstr "Gestion de groupe"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -606,7 +700,7 @@ msgstr "Type"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -672,6 +766,7 @@ msgstr "Groupes"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Description"
|
msgstr "Description"
|
||||||
|
|
||||||
@ -868,24 +963,24 @@ msgstr "Vous faites déjà parti de ce groupe."
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr "Vous avez déjà une application en attente pour joindre ce groupe."
|
msgstr "Vous avez déjà une application en attente pour joindre ce groupe."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "Appliqué au groupe %(group)s."
|
msgstr "Appliqué au groupe %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "Vous ne pouvez pas quitter ce groupe."
|
msgstr "Vous ne pouvez pas quitter ce groupe."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "Vous n'êtes pas un membre de ce groupe."
|
msgstr "Vous n'êtes pas un membre de ce groupe."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr "Vous avec déjà une demande de quitter ce groupe en attente."
|
msgstr "Vous avec déjà une demande de quitter ce groupe en attente."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "Appliqué pour quitter le groupe %(group)s."
|
msgstr "Appliqué pour quitter le groupe %(group)s."
|
||||||
@ -924,7 +1019,7 @@ msgstr "Appliquer"
|
|||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:6
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:6
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:6
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:6
|
||||||
msgid "HR Application Management"
|
msgid "HR Application Management"
|
||||||
msgstr ""
|
msgstr "Gestion de l'application HR"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:11
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:11
|
||||||
msgid "Personal Applications"
|
msgid "Personal Applications"
|
||||||
@ -1102,7 +1197,7 @@ msgstr "Supprimer tous lu"
|
|||||||
#: allianceauth/notifications/templates/notifications/list.html:33
|
#: allianceauth/notifications/templates/notifications/list.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:63
|
#: allianceauth/notifications/templates/notifications/list.html:63
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr ""
|
msgstr "Horodatage"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:34
|
#: allianceauth/notifications/templates/notifications/list.html:34
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:64
|
#: allianceauth/notifications/templates/notifications/list.html:64
|
||||||
@ -1140,49 +1235,62 @@ msgstr "Toutes les notifications ont été marquées comme lues."
|
|||||||
|
|
||||||
#: allianceauth/notifications/views.py:91
|
#: allianceauth/notifications/views.py:91
|
||||||
msgid "Deleted all read notifications."
|
msgid "Deleted all read notifications."
|
||||||
msgstr ""
|
msgstr "Supprimer toutes les notifications lues"
|
||||||
|
|
||||||
#: allianceauth/optimer/auth_hooks.py:10
|
#: allianceauth/optimer/auth_hooks.py:10
|
||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr "Opérations de flotte"
|
msgstr "Opérations de flotte"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr "Composition"
|
msgstr "Composition"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "Heure de départ"
|
msgstr "Heure de départ"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "Nom de l'opération"
|
msgstr "Nom de l'opération"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr "Commandant de flotte"
|
msgstr "Commandant de flotte"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr "Information additionnelle"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr "Créer une opération"
|
msgstr "Créer une opération"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr "Système de départ"
|
msgstr "Système de départ"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr "Heure Locale"
|
msgstr "Heure Locale"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr "Commandant de flotte"
|
msgstr "Commandant de flotte"
|
||||||
|
|
||||||
@ -1200,9 +1308,8 @@ msgid "Current Eve Time:"
|
|||||||
msgstr "Heure d'Eve actuelle:"
|
msgstr "Heure d'Eve actuelle:"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
msgstr ""
|
||||||
msgstr "Prochains minuteurs"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
||||||
@ -1210,9 +1317,8 @@ msgid "No upcoming timers."
|
|||||||
msgstr "Aucun minuteur à venir."
|
msgstr "Aucun minuteur à venir."
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
msgstr ""
|
||||||
msgstr "Minuteurs précédents"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
||||||
@ -1229,17 +1335,17 @@ msgstr "Mettre à jour l'objectif de la flotte"
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr "L'objectif de la flotte n'existe pas."
|
msgstr "L'objectif de la flotte n'existe pas."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "Minuteur d'opération créé pour %(opname)s."
|
msgstr "Minuteur d'opération créé pour %(opname)s."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "Minuteur d'opération supprimé pour %(opname)s."
|
msgstr "Minuteur d'opération supprimé pour %(opname)s."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "Minuteur d'opération modifié pour %(opname)s."
|
msgstr "Minuteur d'opération modifié pour %(opname)s."
|
||||||
@ -1247,7 +1353,7 @@ msgstr "Minuteur d'opération modifié pour %(opname)s."
|
|||||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:6
|
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:6
|
||||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:10
|
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:10
|
||||||
msgid "Permissions Audit"
|
msgid "Permissions Audit"
|
||||||
msgstr ""
|
msgstr "Audit des Permissions"
|
||||||
|
|
||||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22
|
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22
|
||||||
msgid "User / Character"
|
msgid "User / Character"
|
||||||
@ -1403,11 +1509,11 @@ msgstr "Mot de passe"
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "Votre mot de passe doit contenir au moins 8 caractères."
|
msgstr "Votre mot de passe doit contenir au moins 8 caractères."
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr "Compte Discord Désactivé"
|
msgstr "Compte Discord Désactivé"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1656,7 +1762,7 @@ msgstr "Une erreur est survenue durant la gestion de votre compte XenForo."
|
|||||||
|
|
||||||
#: allianceauth/services/modules/xenforo/views.py:50
|
#: allianceauth/services/modules/xenforo/views.py:50
|
||||||
msgid "Deactivated XenForo account."
|
msgid "Deactivated XenForo account."
|
||||||
msgstr ""
|
msgstr "Désactivation du compte XenForo"
|
||||||
|
|
||||||
#: allianceauth/services/modules/xenforo/views.py:65
|
#: allianceauth/services/modules/xenforo/views.py:65
|
||||||
msgid "Reset XenForo account password."
|
msgid "Reset XenForo account password."
|
||||||
@ -1672,7 +1778,7 @@ msgstr "Outil de format de flotte"
|
|||||||
|
|
||||||
#: allianceauth/services/templates/services/fleetformattertool.html:11
|
#: allianceauth/services/templates/services/fleetformattertool.html:11
|
||||||
msgid "Fleet Broadcast Formatter Tool"
|
msgid "Fleet Broadcast Formatter Tool"
|
||||||
msgstr ""
|
msgstr "Outil de diffusion des flottes formées"
|
||||||
|
|
||||||
#: allianceauth/services/templates/services/fleetformattertool.html:24
|
#: allianceauth/services/templates/services/fleetformattertool.html:24
|
||||||
msgid "Format"
|
msgid "Format"
|
||||||
@ -1714,7 +1820,7 @@ msgstr "Définir le mot de passe"
|
|||||||
|
|
||||||
#: allianceauth/services/templates/services/services.html:5
|
#: allianceauth/services/templates/services/services.html:5
|
||||||
msgid "Services Management"
|
msgid "Services Management"
|
||||||
msgstr ""
|
msgstr "Gestion de Services"
|
||||||
|
|
||||||
#: allianceauth/services/templates/services/services.html:10
|
#: allianceauth/services/templates/services/services.html:10
|
||||||
msgid "Available Services"
|
msgid "Available Services"
|
||||||
@ -1742,10 +1848,6 @@ msgstr "Heure de flotte"
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr "Composition de flotte"
|
msgstr "Composition de flotte"
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr "Information additionnelle"
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr "Lien ZkillBoard ()"
|
msgstr "Lien ZkillBoard ()"
|
||||||
@ -1835,15 +1937,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/srp/templates/srp/data.html:178
|
#: allianceauth/srp/templates/srp/data.html:178
|
||||||
msgid "No SRP requests for this fleet."
|
msgid "No SRP requests for this fleet."
|
||||||
msgstr ""
|
msgstr "Aucune requête d'SRP pour cette flotte"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:8
|
#: allianceauth/srp/templates/srp/management.html:8
|
||||||
msgid "Srp Management"
|
msgid "Srp Management"
|
||||||
msgstr ""
|
msgstr "Gestion du SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:14
|
#: allianceauth/srp/templates/srp/management.html:14
|
||||||
msgid "SRP Management"
|
msgid "SRP Management"
|
||||||
msgstr ""
|
msgstr "Gestion du SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:18
|
#: allianceauth/srp/templates/srp/management.html:18
|
||||||
msgid "View All"
|
msgid "View All"
|
||||||
@ -1851,15 +1953,15 @@ msgstr "Afficher Tout"
|
|||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:23
|
#: allianceauth/srp/templates/srp/management.html:23
|
||||||
msgid "Add SRP Fleet"
|
msgid "Add SRP Fleet"
|
||||||
msgstr ""
|
msgstr "Ajouter une flotte SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:41
|
#: allianceauth/srp/templates/srp/management.html:41
|
||||||
msgid "Fleet AAR"
|
msgid "Fleet AAR"
|
||||||
msgstr ""
|
msgstr "Flotte AAR"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:42
|
#: allianceauth/srp/templates/srp/management.html:42
|
||||||
msgid "Fleet SRP Code"
|
msgid "Fleet SRP Code"
|
||||||
msgstr ""
|
msgstr "Code de la flotte SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:43
|
#: allianceauth/srp/templates/srp/management.html:43
|
||||||
msgid "Fleet ISK Cost"
|
msgid "Fleet ISK Cost"
|
||||||
@ -1867,11 +1969,11 @@ msgstr "Coût en ISK de la flotte"
|
|||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:44
|
#: allianceauth/srp/templates/srp/management.html:44
|
||||||
msgid "SRP Status"
|
msgid "SRP Status"
|
||||||
msgstr ""
|
msgstr "Statut du SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:45
|
#: allianceauth/srp/templates/srp/management.html:45
|
||||||
msgid "Pending Requests"
|
msgid "Pending Requests"
|
||||||
msgstr ""
|
msgstr "Requête en Attente"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:64
|
#: allianceauth/srp/templates/srp/management.html:64
|
||||||
msgid "Link"
|
msgid "Link"
|
||||||
@ -1887,50 +1989,50 @@ msgstr "Complété"
|
|||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:103
|
#: allianceauth/srp/templates/srp/management.html:103
|
||||||
msgid "Are you sure you want to delete this SRP code and its contents?"
|
msgid "Are you sure you want to delete this SRP code and its contents?"
|
||||||
msgstr ""
|
msgstr "êtes vous sur de vouloir supprimer le code SRP et tout sont contenu"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/management.html:124
|
#: allianceauth/srp/templates/srp/management.html:124
|
||||||
msgid "No SRP fleets created."
|
msgid "No SRP fleets created."
|
||||||
msgstr ""
|
msgstr "Aucune flotte de SRP crée"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/request.html:6
|
#: allianceauth/srp/templates/srp/request.html:6
|
||||||
msgid "SRP Request"
|
msgid "SRP Request"
|
||||||
msgstr ""
|
msgstr "Requête de SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/request.html:11
|
#: allianceauth/srp/templates/srp/request.html:11
|
||||||
#: allianceauth/srp/templates/srp/request.html:20
|
#: allianceauth/srp/templates/srp/request.html:20
|
||||||
msgid "Create SRP Request"
|
msgid "Create SRP Request"
|
||||||
msgstr ""
|
msgstr "Création de la requête SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/update.html:6
|
#: allianceauth/srp/templates/srp/update.html:6
|
||||||
#: allianceauth/srp/templates/srp/update.html:11
|
#: allianceauth/srp/templates/srp/update.html:11
|
||||||
#: allianceauth/srp/templates/srp/update.html:23
|
#: allianceauth/srp/templates/srp/update.html:23
|
||||||
msgid "Update AAR Link"
|
msgid "Update AAR Link"
|
||||||
msgstr ""
|
msgstr "Mise à jour du lien AAR"
|
||||||
|
|
||||||
#: allianceauth/srp/templates/srp/update.html:17
|
#: allianceauth/srp/templates/srp/update.html:17
|
||||||
msgid "SRP Fleet Does Not Exist"
|
msgid "SRP Fleet Does Not Exist"
|
||||||
msgstr ""
|
msgstr "Aucune flotte SRP existante"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:85
|
#: allianceauth/srp/views.py:85
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created SRP fleet %(fleetname)s."
|
msgid "Created SRP fleet %(fleetname)s."
|
||||||
msgstr ""
|
msgstr "Flotte SRP %(fleetname)s Crée."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:103
|
#: allianceauth/srp/views.py:103
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed SRP fleet %(fleetname)s."
|
msgid "Removed SRP fleet %(fleetname)s."
|
||||||
msgstr ""
|
msgstr "Flotte SRP %(fleetname)s Supprimée."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:115
|
#: allianceauth/srp/views.py:115
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Disabled SRP fleet %(fleetname)s."
|
msgid "Disabled SRP fleet %(fleetname)s."
|
||||||
msgstr ""
|
msgstr "Flotte SRP %(fleetname)sDésactivée."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:127
|
#: allianceauth/srp/views.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Enabled SRP fleet %(fleetname)s."
|
msgid "Enabled SRP fleet %(fleetname)s."
|
||||||
msgstr ""
|
msgstr "Flotte SRP %(fleetname)sActive."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:140
|
#: allianceauth/srp/views.py:140
|
||||||
#, python-format
|
#, python-format
|
||||||
@ -1949,60 +2051,62 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/srp/views.py:179
|
#: allianceauth/srp/views.py:179
|
||||||
msgid "This kill mail has already been posted."
|
msgid "This kill mail has already been posted."
|
||||||
msgstr ""
|
msgstr "Ce Kill Mail a déjà été posté"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:200
|
#: allianceauth/srp/views.py:200
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your SRP request Killmail link is invalid. Please make sure you are using "
|
"Your SRP request Killmail link is invalid. Please make sure you are using "
|
||||||
"zKillboard."
|
"zKillboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Votre requête SRP ou lien Killmail est invalide. Veuillez vérifier que vous "
|
||||||
|
"avez bien utilisé zKillboard"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
"API key for this character and try again"
|
"API key for this character and try again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr ""
|
msgstr "Aucune requête SRP sélectionnée"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr ""
|
msgstr "Impossible à trouver, veuillez sélectionner une autre requête SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr "Suppressions de la requête SRP %(numrequests)s"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr "requête SRP %(numrequests)s Approuvé"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr ""
|
msgstr "Impossible à trouver, veuillez sélectionner une autre requête SRP"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2017,11 +2121,11 @@ msgstr "Fermé"
|
|||||||
|
|
||||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:26
|
#: allianceauth/templates/allianceauth/admin-status/overview.html:26
|
||||||
msgid "Powered by GitLab"
|
msgid "Powered by GitLab"
|
||||||
msgstr ""
|
msgstr "Propulsé par Gitlab"
|
||||||
|
|
||||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:33
|
#: allianceauth/templates/allianceauth/admin-status/overview.html:33
|
||||||
msgid "Support Discord"
|
msgid "Support Discord"
|
||||||
msgstr ""
|
msgstr "Support Discord"
|
||||||
|
|
||||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:41
|
#: allianceauth/templates/allianceauth/admin-status/overview.html:41
|
||||||
msgid "Software Version"
|
msgid "Software Version"
|
||||||
@ -2041,11 +2145,11 @@ msgstr "Mise à jour disponible"
|
|||||||
|
|
||||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:62
|
#: allianceauth/templates/allianceauth/admin-status/overview.html:62
|
||||||
msgid "Latest Pre-Release"
|
msgid "Latest Pre-Release"
|
||||||
msgstr ""
|
msgstr "Dernière Pre-Release"
|
||||||
|
|
||||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
|
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
|
||||||
msgid "Pre-Release available"
|
msgid "Pre-Release available"
|
||||||
msgstr ""
|
msgstr "Pre-Release disponible"
|
||||||
|
|
||||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
|
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
|
||||||
msgid "Task Queue"
|
msgid "Task Queue"
|
||||||
@ -2074,11 +2178,11 @@ msgstr "Administrateur"
|
|||||||
|
|
||||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
|
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
|
||||||
msgid "AA Documentation"
|
msgid "AA Documentation"
|
||||||
msgstr ""
|
msgstr "Documentation AA"
|
||||||
|
|
||||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:26
|
#: allianceauth/templates/allianceauth/top-menu-admin.html:26
|
||||||
msgid "AA Support Discord"
|
msgid "AA Support Discord"
|
||||||
msgstr ""
|
msgstr "Support Discord AA"
|
||||||
|
|
||||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:10
|
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:10
|
||||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:14
|
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:14
|
||||||
@ -2231,6 +2335,14 @@ msgstr "Minuteur de corporation"
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr "Structure"
|
msgstr "Structure"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr "Prochains minuteurs"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr "Minuteurs précédents"
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
Binary file not shown.
@ -4,17 +4,17 @@
|
|||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Linus Hope, 2021
|
|
||||||
# Alessandro Cresti, 2021
|
# Alessandro Cresti, 2021
|
||||||
|
# Linus Hope, 2021
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Alessandro Cresti, 2021\n"
|
"Last-Translator: Linus Hope, 2021\n"
|
||||||
"Language-Team: Italian (Italy) (https://www.transifex.com/alliance-auth/teams/107430/it_IT/)\n"
|
"Language-Team: Italian (Italy) (https://www.transifex.com/alliance-auth/teams/107430/it_IT/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -40,12 +40,12 @@ msgstr ""
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -67,29 +67,29 @@ msgstr ""
|
|||||||
" Personaggio principale (State: %(state)s)\n"
|
" Personaggio principale (State: %(state)s)\n"
|
||||||
" "
|
" "
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "Nessun personaggio principale impostato"
|
msgstr "Nessun personaggio principale impostato"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "Aggiungi personaggio"
|
msgstr "Aggiungi personaggio"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "Cambia personaggio principale"
|
msgstr "Cambia personaggio principale"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr "Gruppi dei quali fai parte"
|
msgstr "Gruppi dei quali fai parte"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "Personaggi"
|
msgstr "Personaggi"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -98,13 +98,13 @@ msgstr "Personaggi"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nome"
|
msgstr "Nome"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "Corporazione"
|
msgstr "Corporazione"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -117,7 +117,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/authentication/templates/public/register.html:7
|
#: allianceauth/authentication/templates/public/register.html:7
|
||||||
msgid "Registration"
|
msgid "Registration"
|
||||||
msgstr ""
|
msgstr "Iscriviti"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/public/register.html:22
|
#: allianceauth/authentication/templates/public/register.html:22
|
||||||
#: allianceauth/authentication/templates/registration/registration_form.html:5
|
#: allianceauth/authentication/templates/registration/registration_form.html:5
|
||||||
@ -217,7 +217,7 @@ msgstr "Statistiche della corporazione"
|
|||||||
#: allianceauth/corputils/templates/corputils/base.html:3
|
#: allianceauth/corputils/templates/corputils/base.html:3
|
||||||
#: allianceauth/corputils/templates/corputils/base.html:6
|
#: allianceauth/corputils/templates/corputils/base.html:6
|
||||||
msgid "Corporation Member Data"
|
msgid "Corporation Member Data"
|
||||||
msgstr ""
|
msgstr "Informazioni sui membri della corporazione"
|
||||||
|
|
||||||
#: allianceauth/corputils/templates/corputils/base.html:12
|
#: allianceauth/corputils/templates/corputils/base.html:12
|
||||||
msgid "Corporations"
|
msgid "Corporations"
|
||||||
@ -401,7 +401,7 @@ msgstr "Utente"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -480,7 +480,6 @@ msgstr "Flotta"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -489,8 +488,8 @@ msgstr "Autore"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Durata"
|
msgstr "Durata"
|
||||||
|
|
||||||
@ -575,11 +574,105 @@ msgstr "Partecipazione alla flotta registrata."
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "Il FAT link è scaduto."
|
msgstr "Il FAT link è scaduto."
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -607,7 +700,7 @@ msgstr "Tipo"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -673,6 +766,7 @@ msgstr "Gruppi"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descrizione"
|
msgstr "Descrizione"
|
||||||
|
|
||||||
@ -806,20 +900,20 @@ msgstr ""
|
|||||||
#: allianceauth/groupmanagement/views.py:159
|
#: allianceauth/groupmanagement/views.py:159
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed user %(user)s from group %(group)s."
|
msgid "Removed user %(user)s from group %(group)s."
|
||||||
msgstr ""
|
msgstr "Rimosso il membro %(user)s da %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:161
|
#: allianceauth/groupmanagement/views.py:161
|
||||||
msgid "User does not exist in that group"
|
msgid "User does not exist in that group"
|
||||||
msgstr ""
|
msgstr "L’utente non fa parte del gruppo selezionato"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:164
|
#: allianceauth/groupmanagement/views.py:164
|
||||||
msgid "Group does not exist"
|
msgid "Group does not exist"
|
||||||
msgstr ""
|
msgstr "Il gruppo non esiste"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:191
|
#: allianceauth/groupmanagement/views.py:191
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Accepted application from %(mainchar)s to %(group)s."
|
msgid "Accepted application from %(mainchar)s to %(group)s."
|
||||||
msgstr ""
|
msgstr "La domanda di %(mainchar)s per %(group)s è stata accettata."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:197
|
#: allianceauth/groupmanagement/views.py:197
|
||||||
#: allianceauth/groupmanagement/views.py:228
|
#: allianceauth/groupmanagement/views.py:228
|
||||||
@ -828,16 +922,20 @@ msgid ""
|
|||||||
"An unhandled error occurred while processing the application from "
|
"An unhandled error occurred while processing the application from "
|
||||||
"%(mainchar)s to %(group)s."
|
"%(mainchar)s to %(group)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Si è verificato un’errore durante l’elaborazione della domanda di "
|
||||||
|
"%(mainchar)s per %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:222
|
#: allianceauth/groupmanagement/views.py:222
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected application from %(mainchar)s to %(group)s."
|
msgid "Rejected application from %(mainchar)s to %(group)s."
|
||||||
msgstr ""
|
msgstr "La domanda di %(mainchar)s per %(group)s è stata rifiutata."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:257
|
#: allianceauth/groupmanagement/views.py:257
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Accepted application from %(mainchar)s to leave %(group)s."
|
msgid "Accepted application from %(mainchar)s to leave %(group)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"La domanda di congedo da parte di %(mainchar)s per %(group)s è stata "
|
||||||
|
"accettata."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:262
|
#: allianceauth/groupmanagement/views.py:262
|
||||||
#: allianceauth/groupmanagement/views.py:294
|
#: allianceauth/groupmanagement/views.py:294
|
||||||
@ -846,91 +944,95 @@ msgid ""
|
|||||||
"An unhandled error occurred while processing the application from "
|
"An unhandled error occurred while processing the application from "
|
||||||
"%(mainchar)s to leave %(group)s."
|
"%(mainchar)s to leave %(group)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Si è verificato un’errore durante l’elaborazione della domanda di comgedo da"
|
||||||
|
" parte di %(mainchar)s per %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:288
|
#: allianceauth/groupmanagement/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected application from %(mainchar)s to leave %(group)s."
|
msgid "Rejected application from %(mainchar)s to leave %(group)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"La domanda di congedo da parte di %(mainchar)s per %(group)s è stata "
|
||||||
|
"rifiutata."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:332
|
#: allianceauth/groupmanagement/views.py:332
|
||||||
#: allianceauth/groupmanagement/views.py:342
|
#: allianceauth/groupmanagement/views.py:342
|
||||||
msgid "You cannot join that group"
|
msgid "You cannot join that group"
|
||||||
msgstr ""
|
msgstr "Non puoi aderire a questo gruppo"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:337
|
#: allianceauth/groupmanagement/views.py:337
|
||||||
msgid "You are already a member of that group."
|
msgid "You are already a member of that group."
|
||||||
msgstr ""
|
msgstr "Sei già parte del gruppo selezionato."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:354
|
#: allianceauth/groupmanagement/views.py:354
|
||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr ""
|
msgstr "La tua domanda per questo gruppo non è ancora stata valutata."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr ""
|
msgstr "Hai fatto domanda per il gruppo %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr ""
|
msgstr "Non puoi lasciare questo gruppo."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr ""
|
msgstr "Non sei un membro di questo gruppo."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr ""
|
msgstr "La tua domanda di congedo non è ancora stata valutata."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr ""
|
msgstr "Hai fatto domanda di congedo per %(group)s."
|
||||||
|
|
||||||
#: allianceauth/hrapplications/auth_hooks.py:14
|
#: allianceauth/hrapplications/auth_hooks.py:14
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr ""
|
msgstr "Domande"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/forms.py:6
|
#: allianceauth/hrapplications/forms.py:6
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:92
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:92
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr "Commenti"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/forms.py:10
|
#: allianceauth/hrapplications/forms.py:10
|
||||||
msgid "Search String"
|
msgid "Search String"
|
||||||
msgstr ""
|
msgstr "Stringa di ricerca"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:5
|
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:5
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:8
|
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:8
|
||||||
msgid "Choose a Corp"
|
msgid "Choose a Corp"
|
||||||
msgstr ""
|
msgstr "Seleziona una corporazione"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:11
|
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:11
|
||||||
msgid "Available Corps"
|
msgid "Available Corps"
|
||||||
msgstr ""
|
msgstr "Corporazioni disponibili"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:23
|
#: allianceauth/hrapplications/templates/hrapplications/corpchoice.html:23
|
||||||
msgid "No corps are accepting applications at this time."
|
msgid "No corps are accepting applications at this time."
|
||||||
msgstr ""
|
msgstr "Nessuna corporazione accetta domanda al momento."
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/create.html:5
|
#: allianceauth/hrapplications/templates/hrapplications/create.html:5
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/create.html:8
|
#: allianceauth/hrapplications/templates/hrapplications/create.html:8
|
||||||
msgid "Apply To"
|
msgid "Apply To"
|
||||||
msgstr ""
|
msgstr "Applica a"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:6
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:6
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:6
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:6
|
||||||
msgid "HR Application Management"
|
msgid "HR Application Management"
|
||||||
msgstr ""
|
msgstr "HR Risorse umane"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:11
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:11
|
||||||
msgid "Personal Applications"
|
msgid "Personal Applications"
|
||||||
msgstr ""
|
msgstr "Domande personali"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:15
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:15
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:18
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:18
|
||||||
msgid "Create Application"
|
msgid "Create Application"
|
||||||
msgstr ""
|
msgstr "Crea una domanda"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:26
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:26
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:80
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:80
|
||||||
@ -938,7 +1040,7 @@ msgstr ""
|
|||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:24
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:24
|
||||||
#: allianceauth/services/templates/services/services.html:16
|
#: allianceauth/services/templates/services/services.html:16
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr "Nome utente"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:29
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:29
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:84
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:84
|
||||||
@ -948,7 +1050,7 @@ msgstr ""
|
|||||||
#: allianceauth/srp/templates/srp/data.html:103
|
#: allianceauth/srp/templates/srp/data.html:103
|
||||||
#: allianceauth/srp/templates/srp/management.html:46
|
#: allianceauth/srp/templates/srp/management.html:46
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr ""
|
msgstr "Azioni"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:39
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:39
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:100
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:100
|
||||||
@ -957,7 +1059,7 @@ msgstr ""
|
|||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:16
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:16
|
||||||
#: allianceauth/srp/templates/srp/data.html:130
|
#: allianceauth/srp/templates/srp/data.html:130
|
||||||
msgid "Approved"
|
msgid "Approved"
|
||||||
msgstr ""
|
msgstr "Approvato"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:41
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:102
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:102
|
||||||
@ -965,25 +1067,25 @@ msgstr ""
|
|||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:42
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:42
|
||||||
#: allianceauth/srp/templates/srp/data.html:134
|
#: allianceauth/srp/templates/srp/data.html:134
|
||||||
msgid "Rejected"
|
msgid "Rejected"
|
||||||
msgstr ""
|
msgstr "Rifiutato"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:61
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:61
|
||||||
msgid "Application Management"
|
msgid "Application Management"
|
||||||
msgstr ""
|
msgstr "Gestione delle domande"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:65
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:65
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:16
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:16
|
||||||
msgid "Search Applications"
|
msgid "Search Applications"
|
||||||
msgstr ""
|
msgstr "Cerca domande"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:71
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:71
|
||||||
msgid "Reviewed"
|
msgid "Reviewed"
|
||||||
msgstr ""
|
msgstr "Revisionato"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:79
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:79
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:123
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:123
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr "Data"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:95
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:95
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:139
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:139
|
||||||
@ -993,126 +1095,126 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:114
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:114
|
||||||
msgid "No pending applications."
|
msgid "No pending applications."
|
||||||
msgstr ""
|
msgstr "Nessuna domanda in sospeso."
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:163
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:163
|
||||||
msgid "No reviewed applications."
|
msgid "No reviewed applications."
|
||||||
msgstr ""
|
msgstr "Nessuna domanda revisionata."
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:177
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:177
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:63
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:63
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:135
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:135
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr "Chiudi"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:178
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:178
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:64
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:64
|
||||||
msgid "Application Search"
|
msgid "Application Search"
|
||||||
msgstr ""
|
msgstr "Cerca domande"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:185
|
#: allianceauth/hrapplications/templates/hrapplications/management.html:185
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:71
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:71
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr "Cerca"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:12
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:12
|
||||||
msgid "Application Search Results"
|
msgid "Application Search Results"
|
||||||
msgstr ""
|
msgstr "Risultati della tua ricerca domande"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:23
|
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:23
|
||||||
msgid "Application ID"
|
msgid "Application ID"
|
||||||
msgstr ""
|
msgstr "ID Domande"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:6
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:6
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:11
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:11
|
||||||
msgid "View Application"
|
msgid "View Application"
|
||||||
msgstr ""
|
msgstr "Visiona domanda"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:18
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:18
|
||||||
msgid "Denied"
|
msgid "Denied"
|
||||||
msgstr ""
|
msgstr "Accesso negato"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:28
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:28
|
||||||
msgid "Applicant"
|
msgid "Applicant"
|
||||||
msgstr ""
|
msgstr "Candidato"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:79
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:79
|
||||||
msgid "Approve"
|
msgid "Approve"
|
||||||
msgstr ""
|
msgstr "Approva"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:85
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:85
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr "Cancella"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:88
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:88
|
||||||
msgid "Mark in Progress"
|
msgid "Mark in Progress"
|
||||||
msgstr ""
|
msgstr "Segnala in elaborazione"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:102
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:102
|
||||||
#: allianceauth/services/forms.py:17
|
#: allianceauth/services/forms.py:17
|
||||||
msgid "Comments"
|
msgid "Comments"
|
||||||
msgstr ""
|
msgstr "Commenti"
|
||||||
|
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:137
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:137
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:144
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:144
|
||||||
msgid "Add Comment"
|
msgid "Add Comment"
|
||||||
msgstr ""
|
msgstr "Aggiungi commento"
|
||||||
|
|
||||||
#: allianceauth/notifications/models.py:21
|
#: allianceauth/notifications/models.py:21
|
||||||
msgid "danger"
|
msgid "danger"
|
||||||
msgstr ""
|
msgstr "pericolo"
|
||||||
|
|
||||||
#: allianceauth/notifications/models.py:22
|
#: allianceauth/notifications/models.py:22
|
||||||
msgid "warning"
|
msgid "warning"
|
||||||
msgstr ""
|
msgstr "attenzione"
|
||||||
|
|
||||||
#: allianceauth/notifications/models.py:23
|
#: allianceauth/notifications/models.py:23
|
||||||
msgid "info"
|
msgid "info"
|
||||||
msgstr ""
|
msgstr "informazioni"
|
||||||
|
|
||||||
#: allianceauth/notifications/models.py:24
|
#: allianceauth/notifications/models.py:24
|
||||||
msgid "success"
|
msgid "success"
|
||||||
msgstr ""
|
msgstr "successo"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:5
|
#: allianceauth/notifications/templates/notifications/list.html:5
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:9
|
#: allianceauth/notifications/templates/notifications/list.html:9
|
||||||
#: allianceauth/templates/allianceauth/notifications_menu_item.html:6
|
#: allianceauth/templates/allianceauth/notifications_menu_item.html:6
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr ""
|
msgstr "Notifiche"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:16
|
#: allianceauth/notifications/templates/notifications/list.html:16
|
||||||
msgid "Unread"
|
msgid "Unread"
|
||||||
msgstr ""
|
msgstr "Non letto"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:18
|
#: allianceauth/notifications/templates/notifications/list.html:18
|
||||||
msgid "Read"
|
msgid "Read"
|
||||||
msgstr ""
|
msgstr "Letto"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:21
|
#: allianceauth/notifications/templates/notifications/list.html:21
|
||||||
msgid "Mark All Read"
|
msgid "Mark All Read"
|
||||||
msgstr ""
|
msgstr "Seleziona tutto visionato"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:22
|
#: allianceauth/notifications/templates/notifications/list.html:22
|
||||||
msgid "Delete All Read"
|
msgid "Delete All Read"
|
||||||
msgstr ""
|
msgstr "Cancella tutti i visionati"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:33
|
#: allianceauth/notifications/templates/notifications/list.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:63
|
#: allianceauth/notifications/templates/notifications/list.html:63
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr ""
|
msgstr "Ora"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:34
|
#: allianceauth/notifications/templates/notifications/list.html:34
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:64
|
#: allianceauth/notifications/templates/notifications/list.html:64
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr ""
|
msgstr "Titolo"
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:53
|
#: allianceauth/notifications/templates/notifications/list.html:53
|
||||||
msgid "No unread notifications."
|
msgid "No unread notifications."
|
||||||
msgstr ""
|
msgstr "Nessuna notifica non visionata."
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:83
|
#: allianceauth/notifications/templates/notifications/list.html:83
|
||||||
msgid "No read notifications."
|
msgid "No read notifications."
|
||||||
msgstr ""
|
msgstr "Nessuna notifica visionata."
|
||||||
|
|
||||||
#: allianceauth/notifications/templates/notifications/view.html:5
|
#: allianceauth/notifications/templates/notifications/view.html:5
|
||||||
#: allianceauth/notifications/templates/notifications/view.html:11
|
#: allianceauth/notifications/templates/notifications/view.html:11
|
||||||
@ -1143,43 +1245,56 @@ msgstr ""
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1197,8 +1312,7 @@ msgid "Current Eve Time:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
@ -1207,8 +1321,7 @@ msgid "No upcoming timers."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
@ -1226,17 +1339,17 @@ msgstr ""
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1400,11 +1513,11 @@ msgstr ""
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1729,10 +1842,6 @@ msgstr ""
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1942,52 +2051,52 @@ msgid ""
|
|||||||
"zKillboard."
|
"zKillboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
"API key for this character and try again"
|
"API key for this character and try again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2214,6 +2323,14 @@ msgstr ""
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -12,7 +12,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2020\n"
|
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2020\n"
|
||||||
"Language-Team: Japanese (https://www.transifex.com/alliance-auth/teams/107430/ja/)\n"
|
"Language-Team: Japanese (https://www.transifex.com/alliance-auth/teams/107430/ja/)\n"
|
||||||
@ -38,12 +38,12 @@ msgstr "実行するためにはメインキャラクターの設定が必要で
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "メールアドレス"
|
msgstr "メールアドレス"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr "分類が%sに変更されました。"
|
msgstr "分類が%sに変更されました。"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr "あなたの分類は%(state)sになりました。"
|
msgstr "あなたの分類は%(state)sになりました。"
|
||||||
@ -64,29 +64,29 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
" メインキャラクター(分類:%(state)s)"
|
" メインキャラクター(分類:%(state)s)"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "メンキャラクターが選択されていません。"
|
msgstr "メンキャラクターが選択されていません。"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "キャラクターを追加"
|
msgstr "キャラクターを追加"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "メンキャラクターを変更"
|
msgstr "メンキャラクターを変更"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "キャラクター"
|
msgstr "キャラクター"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -95,13 +95,13 @@ msgstr "キャラクター"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名前"
|
msgstr "名前"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "Corp"
|
msgstr "Corp"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -386,7 +386,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -463,7 +463,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -472,8 +471,8 @@ msgstr "作成者"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "有効時間"
|
msgstr "有効時間"
|
||||||
|
|
||||||
@ -558,11 +557,105 @@ msgstr "Fleet参加が登録されました。"
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "Fat-Linkの有効期間が終了してます。"
|
msgstr "Fat-Linkの有効期間が終了してます。"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -590,7 +683,7 @@ msgstr ""
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -656,6 +749,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -848,24 +942,24 @@ msgstr "すでにその Group に参加してます。"
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr "すでに参加申請を送付済みです。"
|
msgstr "すでに参加申請を送付済みです。"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "%(group)sへの参加申請を送信しました。"
|
msgstr "%(group)sへの参加申請を送信しました。"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "この Group から脱退することはできません"
|
msgstr "この Group から脱退することはできません"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "あなたはその Group のメンバーではありません"
|
msgstr "あなたはその Group のメンバーではありません"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr "すでに脱退申請を送信済みです。"
|
msgstr "すでに脱退申請を送信済みです。"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "%(group)sからの脱退申請を送信しました。"
|
msgstr "%(group)sからの脱退申請を送信しました。"
|
||||||
@ -1126,43 +1220,56 @@ msgstr "確認済みのすべての通知を削除"
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "開始時間"
|
msgstr "開始時間"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "作戦名"
|
msgstr "作戦名"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1180,8 +1287,7 @@ msgid "Current Eve Time:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
@ -1190,8 +1296,7 @@ msgid "No upcoming timers."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
@ -1209,17 +1314,17 @@ msgstr ""
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "%(opname)sのTimerが作成されました。"
|
msgstr "%(opname)sのTimerが作成されました。"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "%(opname)sのTimerが削除されました。"
|
msgstr "%(opname)sのTimerが削除されました。"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "%(opname)sのTimerの変更が保存されました。"
|
msgstr "%(opname)sのTimerの変更が保存されました。"
|
||||||
@ -1383,11 +1488,11 @@ msgstr ""
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "Passwordは8 文字以上必要です。"
|
msgstr "Passwordは8 文字以上必要です。"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr "Discordのアカウントを無効化"
|
msgstr "Discordのアカウントを無効化"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1712,10 +1817,6 @@ msgstr ""
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1928,52 +2029,52 @@ msgid ""
|
|||||||
"zKillboard."
|
"zKillboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
"API key for this character and try again"
|
"API key for this character and try again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2199,6 +2300,14 @@ msgstr ""
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -15,7 +15,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2020\n"
|
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2020\n"
|
||||||
"Language-Team: Korean (Korea) (https://www.transifex.com/alliance-auth/teams/107430/ko_KR/)\n"
|
"Language-Team: Korean (Korea) (https://www.transifex.com/alliance-auth/teams/107430/ko_KR/)\n"
|
||||||
@ -41,12 +41,12 @@ msgstr "해당 기능을 수행하려면 주 캐릭터가 요구됨. 아래에
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "이메일"
|
msgstr "이메일"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr "상태가 %s로 변경됐습니다."
|
msgstr "상태가 %s로 변경됐습니다."
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr "사용자의 상태는 %(state)s입니다."
|
msgstr "사용자의 상태는 %(state)s입니다."
|
||||||
@ -68,29 +68,29 @@ msgstr ""
|
|||||||
" 메인 캐릭터 (상태: %(state)s)\n"
|
" 메인 캐릭터 (상태: %(state)s)\n"
|
||||||
" "
|
" "
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "주 캐릭터가 지정되지 않음"
|
msgstr "주 캐릭터가 지정되지 않음"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "캐릭터 추가"
|
msgstr "캐릭터 추가"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "주 캐릭터 변경"
|
msgstr "주 캐릭터 변경"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr "그룹 멤버쉽"
|
msgstr "그룹 멤버쉽"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "캐릭터"
|
msgstr "캐릭터"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -99,13 +99,13 @@ msgstr "캐릭터"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "이름"
|
msgstr "이름"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "콥"
|
msgstr "콥"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -390,7 +390,7 @@ msgstr "유저"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -467,7 +467,6 @@ msgstr "함대"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -476,8 +475,8 @@ msgstr "생성자"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "소요 시간"
|
msgstr "소요 시간"
|
||||||
|
|
||||||
@ -562,11 +561,105 @@ msgstr "플릿 참여 등록됨"
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "플릿활동추적 링크 기한만료"
|
msgstr "플릿활동추적 링크 기한만료"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr "그룹 관리"
|
msgstr "그룹 관리"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -594,7 +687,7 @@ msgstr "타입"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -660,6 +753,7 @@ msgstr "그룹"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "설명"
|
msgstr "설명"
|
||||||
|
|
||||||
@ -852,24 +946,24 @@ msgstr "이미 해당 그룹에 가입되어 있습니다."
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr "해당 그룹에 대한 참여신청이 보류되었습니다."
|
msgstr "해당 그룹에 대한 참여신청이 보류되었습니다."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "%(group)s그룹에 지원하였음."
|
msgstr "%(group)s그룹에 지원하였음."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "해당 그룹을 떠날 수 없습니다."
|
msgstr "해당 그룹을 떠날 수 없습니다."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "해당그룹의 멤버가 아닙니다."
|
msgstr "해당그룹의 멤버가 아닙니다."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr "해당 그룹의 탈퇴 신청이 접수된 상태입니다."
|
msgstr "해당 그룹의 탈퇴 신청이 접수된 상태입니다."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "%(group)s그룹의 탈퇴가 신청됨."
|
msgstr "%(group)s그룹의 탈퇴가 신청됨."
|
||||||
@ -1130,43 +1224,56 @@ msgstr "모든 읽은 알림을 삭제했습니다."
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr "플릿 옵"
|
msgstr "플릿 옵"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr "독트린"
|
msgstr "독트린"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "시작 시간"
|
msgstr "시작 시간"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "옵 이름"
|
msgstr "옵 이름"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr "플릿 커맨더"
|
msgstr "플릿 커맨더"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr "추가 기재 사항"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr "옵 만들기"
|
msgstr "옵 만들기"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr "폼업 성계"
|
msgstr "폼업 성계"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr "현지 시간"
|
msgstr "현지 시간"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr "FC"
|
msgstr "FC"
|
||||||
|
|
||||||
@ -1184,9 +1291,8 @@ msgid "Current Eve Time:"
|
|||||||
msgstr "현재 이브 시간:"
|
msgstr "현재 이브 시간:"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
msgstr ""
|
||||||
msgstr "다음 옵 타이머"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
||||||
@ -1194,9 +1300,8 @@ msgid "No upcoming timers."
|
|||||||
msgstr "예정된 옵 타이머가 없습니다."
|
msgstr "예정된 옵 타이머가 없습니다."
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
msgstr ""
|
||||||
msgstr "이전 옵 타이머"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
||||||
@ -1213,17 +1318,17 @@ msgstr "플릿 옵 수정"
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr "존재하지 않는 플릿 옵"
|
msgstr "존재하지 않는 플릿 옵"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "%(opname)s 의 옵 타이머를 생성했습니다."
|
msgstr "%(opname)s 의 옵 타이머를 생성했습니다."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "%(opname)s 의 옵 타이머를 제거했습니다."
|
msgstr "%(opname)s 의 옵 타이머를 제거했습니다."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "%(opname)s 의 옵 타이머 변경사항을 저장했습니다."
|
msgstr "%(opname)s 의 옵 타이머 변경사항을 저장했습니다."
|
||||||
@ -1387,11 +1492,11 @@ msgstr "비밀번호"
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "비밀번호는 8글자 이상이어야 합니다."
|
msgstr "비밀번호는 8글자 이상이어야 합니다."
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr "디스코드 계정 비활성화"
|
msgstr "디스코드 계정 비활성화"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1716,10 +1821,6 @@ msgstr "플릿 시간"
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr "플릿 독트린"
|
msgstr "플릿 독트린"
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr "추가 기재 사항"
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1929,12 +2030,12 @@ msgid ""
|
|||||||
"zKillboard."
|
"zKillboard."
|
||||||
msgstr "SRP 보상 요구를 위한 킬메일 링크가 유효하지 않습니다. zkillboard를 사용해 주십시요."
|
msgstr "SRP 보상 요구를 위한 킬메일 링크가 유효하지 않습니다. zkillboard를 사용해 주십시요."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr "%(ship)s에 대한 SRP 보상 요청이 제출되었습니다."
|
msgstr "%(ship)s에 대한 SRP 보상 요청이 제출되었습니다."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
@ -1942,40 +2043,40 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%(charid)s 캐릭터가 Auth 계정에 포함되어 있지 않습니다. 해당 캐릭터의 API를 추가하신 후, 다시 시도하시기 바랍니다."
|
"%(charid)s 캐릭터가 Auth 계정에 포함되어 있지 않습니다. 해당 캐릭터의 API를 추가하신 후, 다시 시도하시기 바랍니다."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr "SRP 보상 요청이 선택되지 않았습니다."
|
msgstr "SRP 보상 요청이 선택되지 않았습니다."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr "선택하신 SRP 보상 요청을 찾을 수 없습니다."
|
msgstr "선택하신 SRP 보상 요청을 찾을 수 없습니다."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr "SRP 보상 요청 %(numrequests)s 삭제 완료"
|
msgstr "SRP 보상 요청 %(numrequests)s 삭제 완료"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr "SRP 보상 요청 %(numrequests)s 승인 완료"
|
msgstr "SRP 보상 요청 %(numrequests)s 승인 완료"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr "선택하신 SRP 보상 요청을 찾을 수 없습니다."
|
msgstr "선택하신 SRP 보상 요청을 찾을 수 없습니다."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr "SRP 보상 요청 %(numrequests)s 거절됨."
|
msgstr "SRP 보상 요청 %(numrequests)s 거절됨."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr "SRP 보상 요청 %(requestid)s을 찾을 수 없습니다. "
|
msgstr "SRP 보상 요청 %(requestid)s을 찾을 수 없습니다. "
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr "SRP 보상 요청 플릿 %(fleetname)s의 변경 사항이 저장되었습니다."
|
msgstr "SRP 보상 요청 플릿 %(fleetname)s의 변경 사항이 저장되었습니다."
|
||||||
@ -2201,6 +2302,14 @@ msgstr "콥 타이머"
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr "스트럭처"
|
msgstr "스트럭처"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr "다음 옵 타이머"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr "이전 옵 타이머"
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Андрей Зубков <and.vareba81@gmail.com>, 2020\n"
|
"Last-Translator: Андрей Зубков <and.vareba81@gmail.com>, 2020\n"
|
||||||
"Language-Team: Russian (https://www.transifex.com/alliance-auth/teams/107430/ru/)\n"
|
"Language-Team: Russian (https://www.transifex.com/alliance-auth/teams/107430/ru/)\n"
|
||||||
@ -39,12 +39,12 @@ msgstr "Необходимо указать основного персонаж
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:74
|
#: allianceauth/authentication/models.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "State changed to: %s"
|
msgid "State changed to: %s"
|
||||||
msgstr "Статус изменен: %s"
|
msgstr "Статус изменен: %s"
|
||||||
|
|
||||||
#: allianceauth/authentication/models.py:75
|
#: allianceauth/authentication/models.py:80
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your user's state is now: %(state)s"
|
msgid "Your user's state is now: %(state)s"
|
||||||
msgstr "Статус пилота: %(state)s"
|
msgstr "Статус пилота: %(state)s"
|
||||||
@ -66,29 +66,29 @@ msgstr ""
|
|||||||
" Основной персонаж (статус: %(state)s)\n"
|
" Основной персонаж (статус: %(state)s)\n"
|
||||||
" "
|
" "
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||||
msgid "No main character set."
|
msgid "No main character set."
|
||||||
msgstr "Основной персонаж не установлен."
|
msgstr "Основной персонаж не установлен."
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||||
msgid "Add Character"
|
msgid "Add Character"
|
||||||
msgstr "Добавить Персонажа"
|
msgstr "Добавить Персонажа"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||||
msgid "Change Main"
|
msgid "Change Main"
|
||||||
msgstr "Сменить основного персонажа"
|
msgstr "Сменить основного персонажа"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||||
msgid "Group Memberships"
|
msgid "Group Memberships"
|
||||||
msgstr "Роли"
|
msgstr "Роли"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||||
msgid "Characters"
|
msgid "Characters"
|
||||||
msgstr "Персонажи"
|
msgstr "Персонажи"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||||
@ -97,13 +97,13 @@ msgstr "Персонажи"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Имя"
|
msgstr "Имя"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||||
msgid "Corp"
|
msgid "Corp"
|
||||||
msgstr "Корпорация"
|
msgstr "Корпорация"
|
||||||
|
|
||||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||||
msgid "Alliance"
|
msgid "Alliance"
|
||||||
@ -391,7 +391,7 @@ msgstr "Пользователь"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -474,7 +474,6 @@ msgstr "Флот"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -483,8 +482,8 @@ msgstr "Создатель"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Продолжительность"
|
msgstr "Продолжительность"
|
||||||
|
|
||||||
@ -569,11 +568,105 @@ msgstr "Флотовое участие зарегистрированно."
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "ФлАк ссылка устарела"
|
msgstr "ФлАк ссылка устарела"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr "Управление Группой"
|
msgstr "Управление Группой"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -601,7 +694,7 @@ msgstr "Тип"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -667,6 +760,7 @@ msgstr "Группы"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Описание"
|
msgstr "Описание"
|
||||||
|
|
||||||
@ -863,24 +957,24 @@ msgstr "Вы уже участник этой группы."
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr "Вы уже подали заявку на вступление этой группы."
|
msgstr "Вы уже подали заявку на вступление этой группы."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "Вступить в группу %(group)s."
|
msgstr "Вступить в группу %(group)s."
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "Вы не можете покинуть эту группу"
|
msgstr "Вы не можете покинуть эту группу"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "Вы не участник группыы"
|
msgstr "Вы не участник группыы"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr "Ваш запрос находится на рассмотрении"
|
msgstr "Ваш запрос находится на рассмотрении"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "Запрос на выход из группы %(group)s."
|
msgstr "Запрос на выход из группы %(group)s."
|
||||||
@ -1141,43 +1235,56 @@ msgstr "Удалить все прочитанные уведомления"
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr "Флотовые операции"
|
msgstr "Флотовые операции"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr "Доктрина"
|
msgstr "Доктрина"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "Начало"
|
msgstr "Начало"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "Название операции"
|
msgstr "Название операции"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr "ФлитКом"
|
msgstr "ФлитКом"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr "Дополнительная информация"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr "Создать операцию"
|
msgstr "Создать операцию"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr "Система сбора"
|
msgstr "Система сбора"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr "Локальное время"
|
msgstr "Локальное время"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr "ФК"
|
msgstr "ФК"
|
||||||
|
|
||||||
@ -1195,9 +1302,8 @@ msgid "Current Eve Time:"
|
|||||||
msgstr "Текущий EVE Time:"
|
msgstr "Текущий EVE Time:"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
msgstr ""
|
||||||
msgstr "Следующие таймера"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
||||||
@ -1205,9 +1311,8 @@ msgid "No upcoming timers."
|
|||||||
msgstr "Нет предстоящих таймеров"
|
msgstr "Нет предстоящих таймеров"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
msgstr ""
|
||||||
msgstr "Прошлые таймера"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
||||||
@ -1224,17 +1329,17 @@ msgstr "Обновить Флотовые операции"
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr "Флотовая операция не существует"
|
msgstr "Флотовая операция не существует"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "Таймер для %(opname)s назначен."
|
msgstr "Таймер для %(opname)s назначен."
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "Таймер для %(opname)s удалено. "
|
msgstr "Таймер для %(opname)s удалено. "
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "Таймер для %(opname)sобновлен."
|
msgstr "Таймер для %(opname)sобновлен."
|
||||||
@ -1398,11 +1503,11 @@ msgstr "Пароль"
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "Пароль должен быть не менее 8 символов."
|
msgstr "Пароль должен быть не менее 8 символов."
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr "Discord персонаж отключен"
|
msgstr "Discord персонаж отключен"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1735,10 +1840,6 @@ msgstr "Флотовое время"
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr "Флотовая Доктрина"
|
msgstr "Флотовая Доктрина"
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr "Дополнительная информация"
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1950,12 +2051,12 @@ msgstr ""
|
|||||||
"Ваш SRP запрос Killmail неправильный. Пожалуйста убедитесь в правильности "
|
"Ваш SRP запрос Killmail неправильный. Пожалуйста убедитесь в правильности "
|
||||||
"ссылки. "
|
"ссылки. "
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr "Запрос SRP на Ваш %(ship)s утвержден."
|
msgstr "Запрос SRP на Ваш %(ship)s утвержден."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
@ -1964,40 +2065,40 @@ msgstr ""
|
|||||||
"Персонаж %(charid)s больше не имеет авторизации с Вашим аккаунтом. "
|
"Персонаж %(charid)s больше не имеет авторизации с Вашим аккаунтом. "
|
||||||
"Пожалуйста перепроверьте ключ доступа."
|
"Пожалуйста перепроверьте ключ доступа."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr "Нет SRP выбранных запросов"
|
msgstr "Нет SRP выбранных запросов"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr "Не могу найти выбранный SRP запрос."
|
msgstr "Не могу найти выбранный SRP запрос."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr "Удален %(numrequests)sиз SRP запросов."
|
msgstr "Удален %(numrequests)sиз SRP запросов."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr "Утвержден %(numrequests)s SRP запрос."
|
msgstr "Утвержден %(numrequests)s SRP запрос."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr "Невозможно найти выбранный SRP запрос"
|
msgstr "Невозможно найти выбранный SRP запрос"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr "SRP запрос %(numrequests)s отказано."
|
msgstr "SRP запрос %(numrequests)s отказано."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr "Невозможно найти SRP запрос с ID %(requestid)s."
|
msgstr "Невозможно найти SRP запрос с ID %(requestid)s."
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr "Сохранены изменения в SRP флот %(fleetname)s"
|
msgstr "Сохранены изменения в SRP флот %(fleetname)s"
|
||||||
@ -2226,6 +2327,14 @@ msgstr "Корпоративные таймера"
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr "Структура"
|
msgstr "Структура"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr "Следующие таймера"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr "Прошлые таймера"
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-10-30 14:36+1000\n"
|
"POT-Creation-Date: 2021-11-29 01:03+1000\n"
|
||||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||||
"Last-Translator: Aaron BuBu <351793078@qq.com>, 2020\n"
|
"Last-Translator: Aaron BuBu <351793078@qq.com>, 2020\n"
|
||||||
"Language-Team: Chinese Simplified (https://www.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
|
"Language-Team: Chinese Simplified (https://www.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
|
||||||
@ -385,7 +385,7 @@ msgstr "用户"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:25
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:29
|
||||||
#: allianceauth/optimer/form.py:7 allianceauth/timerboard/form.py:59
|
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
#: allianceauth/timerboard/templates/timerboard/view.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
#: allianceauth/timerboard/templates/timerboard/view.html:201
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
#: allianceauth/timerboard/templates/timerboard/view.html:374
|
||||||
@ -462,7 +462,6 @@ msgstr "舰队"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:49
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:74
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:17
|
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
#: allianceauth/timerboard/templates/timerboard/view.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
#: allianceauth/timerboard/templates/timerboard/view.html:205
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
#: allianceauth/timerboard/templates/timerboard/view.html:378
|
||||||
@ -471,8 +470,8 @@ msgstr "创建者"
|
|||||||
|
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:51
|
||||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:77
|
||||||
#: allianceauth/optimer/form.py:9
|
#: allianceauth/optimer/form.py:18
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "持续时间"
|
msgstr "持续时间"
|
||||||
|
|
||||||
@ -557,11 +556,105 @@ msgstr "成功注册舰队PAP"
|
|||||||
msgid "FAT link has expired."
|
msgid "FAT link has expired."
|
||||||
msgstr "PAP链接已过期"
|
msgstr "PAP链接已过期"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:104
|
||||||
|
msgid "This name has been reserved and can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:230
|
||||||
|
msgid "(auto)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/admin.py:239
|
||||||
|
msgid "There already exists a group with that name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/auth_hooks.py:17
|
#: allianceauth/groupmanagement/auth_hooks.py:17
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/menu.html:14
|
||||||
msgid "Group Management"
|
msgid "Group Management"
|
||||||
msgstr "用户组管理"
|
msgstr "用户组管理"
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:102
|
||||||
|
msgid ""
|
||||||
|
"Internal group, users cannot see, join or request to join this "
|
||||||
|
"group.<br>Used for groups such as Members, Corp_*, Alliance_* "
|
||||||
|
"etc.<br><b>Overrides Hidden and Open options when selected.</b>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:110
|
||||||
|
msgid "Group is hidden from users but can still join with the correct link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:116
|
||||||
|
msgid ""
|
||||||
|
"Group is open and users will be automatically added upon request.<br>If the "
|
||||||
|
"group is not open users will need their request manually approved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:123
|
||||||
|
msgid ""
|
||||||
|
"Group is public. Any registered user is able to join this group, with "
|
||||||
|
"visibility based on the other options set for this group.<br>Auth will not "
|
||||||
|
"remove users from this group automatically when they are no longer "
|
||||||
|
"authenticated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:134
|
||||||
|
msgid ""
|
||||||
|
"Group leaders can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:144
|
||||||
|
msgid ""
|
||||||
|
"Members of leader groups can process requests for this group. Use the "
|
||||||
|
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||||
|
"groups.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:153
|
||||||
|
msgid ""
|
||||||
|
"States listed here will have the ability to join this group provided they "
|
||||||
|
"have the proper permissions.<br>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:161
|
||||||
|
msgid ""
|
||||||
|
"Short description <i>(max. 512 characters)</i> of the group shown to users."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:168
|
||||||
|
msgid "Can request non-public groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:189
|
||||||
|
msgid "name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:192
|
||||||
|
msgid "Name that can not be used for groups."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "reason"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:195
|
||||||
|
msgid "Reason why this name is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:198
|
||||||
|
msgid "created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "created at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/groupmanagement/models.py:203
|
||||||
|
msgid "Date when this entry was created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||||
msgid "Audit Log"
|
msgid "Audit Log"
|
||||||
@ -589,7 +682,7 @@ msgstr "类型"
|
|||||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||||
#: allianceauth/notifications/templates/notifications/list.html:65
|
#: allianceauth/notifications/templates/notifications/list.html:65
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:18
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:19
|
||||||
#: allianceauth/services/templates/services/services.html:18
|
#: allianceauth/services/templates/services/services.html:18
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
#: allianceauth/timerboard/templates/timerboard/view.html:40
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
#: allianceauth/timerboard/templates/timerboard/view.html:207
|
||||||
@ -655,6 +748,7 @@ msgstr "群组"
|
|||||||
|
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:25
|
||||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:16
|
||||||
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "描述"
|
msgstr "描述"
|
||||||
|
|
||||||
@ -847,24 +941,24 @@ msgstr "你已经是那个群组的一员了。"
|
|||||||
msgid "You already have a pending application for that group."
|
msgid "You already have a pending application for that group."
|
||||||
msgstr "你已经有了该组的未决申请"
|
msgstr "你已经有了该组的未决申请"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:362
|
#: allianceauth/groupmanagement/views.py:363
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to group %(group)s."
|
msgid "Applied to group %(group)s."
|
||||||
msgstr "修改已经应用到%(group)s啦"
|
msgstr "修改已经应用到%(group)s啦"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:372
|
#: allianceauth/groupmanagement/views.py:373
|
||||||
msgid "You cannot leave that group"
|
msgid "You cannot leave that group"
|
||||||
msgstr "你无法离开那个用户组"
|
msgstr "你无法离开那个用户组"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:376
|
#: allianceauth/groupmanagement/views.py:377
|
||||||
msgid "You are not a member of that group"
|
msgid "You are not a member of that group"
|
||||||
msgstr "你不是那个用户组的成员"
|
msgstr "你不是那个用户组的成员"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:388
|
#: allianceauth/groupmanagement/views.py:389
|
||||||
msgid "You already have a pending leave request for that group."
|
msgid "You already have a pending leave request for that group."
|
||||||
msgstr "你已经有了该组的未决离开请求"
|
msgstr "你已经有了该组的未决离开请求"
|
||||||
|
|
||||||
#: allianceauth/groupmanagement/views.py:403
|
#: allianceauth/groupmanagement/views.py:405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Applied to leave group %(group)s."
|
msgid "Applied to leave group %(group)s."
|
||||||
msgstr "已经离开群组%(group)s"
|
msgstr "已经离开群组%(group)s"
|
||||||
@ -1125,43 +1219,56 @@ msgstr "删除所有已读通知"
|
|||||||
msgid "Fleet Operations"
|
msgid "Fleet Operations"
|
||||||
msgstr "起队搞事"
|
msgstr "起队搞事"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:6
|
#: allianceauth/optimer/form.py:12
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:10
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
||||||
msgid "Doctrine"
|
msgid "Doctrine"
|
||||||
msgstr "船型"
|
msgstr "船型"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:8
|
#: allianceauth/optimer/form.py:14
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
||||||
msgid "Start Time"
|
msgid "Start Time"
|
||||||
msgstr "集合时间"
|
msgstr "集合时间"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:10
|
#: allianceauth/optimer/form.py:15
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:9
|
||||||
msgid "Operation Name"
|
msgid "Operation Name"
|
||||||
msgstr "搞事名目"
|
msgstr "搞事名目"
|
||||||
|
|
||||||
#: allianceauth/optimer/form.py:11
|
#: allianceauth/optimer/form.py:16
|
||||||
|
msgid "Operation Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:17
|
||||||
#: allianceauth/srp/templates/srp/management.html:40
|
#: allianceauth/srp/templates/srp/management.html:40
|
||||||
msgid "Fleet Commander"
|
msgid "Fleet Commander"
|
||||||
msgstr "FC"
|
msgstr "FC"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||||
|
#: allianceauth/srp/templates/srp/data.html:93
|
||||||
|
msgid "Additional Info"
|
||||||
|
msgstr "其他信息"
|
||||||
|
|
||||||
|
#: allianceauth/optimer/form.py:23
|
||||||
|
msgid "(Optional) Describe the operation with a couple of short words."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/add.html:7
|
#: allianceauth/optimer/templates/optimer/add.html:7
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:14
|
#: allianceauth/optimer/templates/optimer/management.html:14
|
||||||
msgid "Create Operation"
|
msgid "Create Operation"
|
||||||
msgstr "起一个队"
|
msgstr "起一个队"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:11
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:12
|
||||||
msgid "Form Up System"
|
msgid "Form Up System"
|
||||||
msgstr "集结点"
|
msgstr "集结点"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:13
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
#: allianceauth/timerboard/templates/timerboard/view.html:37
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
#: allianceauth/timerboard/templates/timerboard/view.html:204
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
#: allianceauth/timerboard/templates/timerboard/view.html:377
|
||||||
msgid "Local Time"
|
msgid "Local Time"
|
||||||
msgstr "本地时间"
|
msgstr "本地时间"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
#: allianceauth/optimer/templates/optimer/fleetoptable.html:16
|
||||||
msgid "FC"
|
msgid "FC"
|
||||||
msgstr "FC"
|
msgstr "FC"
|
||||||
|
|
||||||
@ -1179,9 +1286,8 @@ msgid "Current Eve Time:"
|
|||||||
msgstr "当前EVE游戏内时间"
|
msgstr "当前EVE游戏内时间"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:27
|
#: allianceauth/optimer/templates/optimer/management.html:27
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
msgid "Next Fleet Operations"
|
||||||
msgid "Next Timers"
|
msgstr ""
|
||||||
msgstr "接下来的时间节点"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:31
|
#: allianceauth/optimer/templates/optimer/management.html:31
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
#: allianceauth/timerboard/templates/timerboard/view.html:363
|
||||||
@ -1189,9 +1295,8 @@ msgid "No upcoming timers."
|
|||||||
msgstr "没有快到的时间节点,歇一会吧"
|
msgstr "没有快到的时间节点,歇一会吧"
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
msgid "Past Fleet Operations"
|
||||||
msgid "Past Timers"
|
msgstr ""
|
||||||
msgstr "已经过去的时间节点"
|
|
||||||
|
|
||||||
#: allianceauth/optimer/templates/optimer/management.html:38
|
#: allianceauth/optimer/templates/optimer/management.html:38
|
||||||
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
#: allianceauth/timerboard/templates/timerboard/view.html:536
|
||||||
@ -1208,17 +1313,17 @@ msgstr "更新搞事队"
|
|||||||
msgid "Fleet Operation Does Not Exist"
|
msgid "Fleet Operation Does Not Exist"
|
||||||
msgstr "这搞事队不存在啊,你会不会搞事啊"
|
msgstr "这搞事队不存在啊,你会不会搞事啊"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:55
|
#: allianceauth/optimer/views.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created operation timer for %(opname)s."
|
msgid "Created operation timer for %(opname)s."
|
||||||
msgstr "为%(opname)s创建了搞事时间节点,冲鸭"
|
msgstr "为%(opname)s创建了搞事时间节点,冲鸭"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:73
|
#: allianceauth/optimer/views.py:87
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removed operation timer for %(opname)s."
|
msgid "Removed operation timer for %(opname)s."
|
||||||
msgstr "移除了%(opname)s的搞事时间节点,咕咕咕?"
|
msgstr "移除了%(opname)s的搞事时间节点,咕咕咕?"
|
||||||
|
|
||||||
#: allianceauth/optimer/views.py:96
|
#: allianceauth/optimer/views.py:125
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to operation timer for %(opname)s."
|
msgid "Saved changes to operation timer for %(opname)s."
|
||||||
msgstr "对搞事时间节点%(opname)s的修改保存了,朝令夕改你是不是合格FC啊?"
|
msgstr "对搞事时间节点%(opname)s的修改保存了,朝令夕改你是不是合格FC啊?"
|
||||||
@ -1382,11 +1487,11 @@ msgstr "密码"
|
|||||||
msgid "Password must be at least 8 characters long."
|
msgid "Password must be at least 8 characters long."
|
||||||
msgstr "密码至少要有8个字符啊,你也太不注重安全啦"
|
msgstr "密码至少要有8个字符啊,你也太不注重安全啦"
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:225
|
#: allianceauth/services/modules/discord/models.py:234
|
||||||
msgid "Discord Account Disabled"
|
msgid "Discord Account Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: allianceauth/services/modules/discord/models.py:227
|
#: allianceauth/services/modules/discord/models.py:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your Discord account was disabled automatically by Auth. If you think this "
|
"Your Discord account was disabled automatically by Auth. If you think this "
|
||||||
"was a mistake, please contact an admin."
|
"was a mistake, please contact an admin."
|
||||||
@ -1711,10 +1816,6 @@ msgstr "集结时间"
|
|||||||
msgid "Fleet Doctrine"
|
msgid "Fleet Doctrine"
|
||||||
msgstr "舰队船型"
|
msgstr "舰队船型"
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:14 allianceauth/srp/templates/srp/data.html:93
|
|
||||||
msgid "Additional Info"
|
|
||||||
msgstr "其他信息"
|
|
||||||
|
|
||||||
#: allianceauth/srp/form.py:16
|
#: allianceauth/srp/form.py:16
|
||||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1924,52 +2025,52 @@ msgid ""
|
|||||||
"zKillboard."
|
"zKillboard."
|
||||||
msgstr "小老弟,你这个补损用的KB链接不对劲儿啊,你是不是没用zKillboard啊?"
|
msgstr "小老弟,你这个补损用的KB链接不对劲儿啊,你是不是没用zKillboard啊?"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:211
|
#: allianceauth/srp/views.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submitted SRP request for your %(ship)s."
|
msgid "Submitted SRP request for your %(ship)s."
|
||||||
msgstr "你的%(ship)s的补损申请好啦"
|
msgstr "你的%(ship)s的补损申请好啦"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:215
|
#: allianceauth/srp/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Character %(charid)s does not belong to your Auth account. Please add the "
|
"Character %(charid)s does not belong to your Auth account. Please add the "
|
||||||
"API key for this character and try again"
|
"API key for this character and try again"
|
||||||
msgstr "%(charid)s这个角色好像不在你的账号里啊,你交没交ESI啊?交过再试一次吧"
|
msgstr "%(charid)s这个角色好像不在你的账号里啊,你交没交ESI啊?交过再试一次吧"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:235 allianceauth/srp/views.py:261
|
#: allianceauth/srp/views.py:236 allianceauth/srp/views.py:262
|
||||||
#: allianceauth/srp/views.py:299
|
#: allianceauth/srp/views.py:300
|
||||||
msgid "No SRP requests selected"
|
msgid "No SRP requests selected"
|
||||||
msgstr "你没选中任何补损请求哦"
|
msgstr "你没选中任何补损请求哦"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:246 allianceauth/srp/views.py:284
|
#: allianceauth/srp/views.py:247 allianceauth/srp/views.py:285
|
||||||
msgid "Unable to locate selected SRP request."
|
msgid "Unable to locate selected SRP request."
|
||||||
msgstr "你选的这条补损请求找不到呀"
|
msgstr "你选的这条补损请求找不到呀"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:249
|
#: allianceauth/srp/views.py:250
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %(numrequests)s SRP requests"
|
msgid "Deleted %(numrequests)s SRP requests"
|
||||||
msgstr "删了%(numrequests)s条补损请求,你是不是准备赖账啊?"
|
msgstr "删了%(numrequests)s条补损请求,你是不是准备赖账啊?"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:287
|
#: allianceauth/srp/views.py:288
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Approved %(numrequests)s SRP requests"
|
msgid "Approved %(numrequests)s SRP requests"
|
||||||
msgstr "通过了%(numrequests)s条补损请求,钱包大出血?"
|
msgstr "通过了%(numrequests)s条补损请求,钱包大出血?"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:319
|
#: allianceauth/srp/views.py:320
|
||||||
msgid "Unable to locate selected SRP request"
|
msgid "Unable to locate selected SRP request"
|
||||||
msgstr "你选的这条补损请求找不到呀"
|
msgstr "你选的这条补损请求找不到呀"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:322
|
#: allianceauth/srp/views.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rejected %(numrequests)s SRP requests."
|
msgid "Rejected %(numrequests)s SRP requests."
|
||||||
msgstr "已拒绝%(numrequests)s个补损申请,小老弟你这是想赖账?"
|
msgstr "已拒绝%(numrequests)s个补损申请,小老弟你这是想赖账?"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:335
|
#: allianceauth/srp/views.py:336
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to locate SRP request with ID %(requestid)s"
|
msgid "Unable to locate SRP request with ID %(requestid)s"
|
||||||
msgstr "找不到ID是%(requestid)s的补损申请呀,老哥眼花了?"
|
msgstr "找不到ID是%(requestid)s的补损申请呀,老哥眼花了?"
|
||||||
|
|
||||||
#: allianceauth/srp/views.py:359
|
#: allianceauth/srp/views.py:360
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||||
msgstr "你做的修改已经保存到%(fleetname)s这个补损舰队啦,尽情白给吧!"
|
msgstr "你做的修改已经保存到%(fleetname)s这个补损舰队啦,尽情白给吧!"
|
||||||
@ -2195,6 +2296,14 @@ msgstr "公司时间表"
|
|||||||
msgid "Structure"
|
msgid "Structure"
|
||||||
msgstr "建筑"
|
msgstr "建筑"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:194
|
||||||
|
msgid "Next Timers"
|
||||||
|
msgstr "接下来的时间节点"
|
||||||
|
|
||||||
|
#: allianceauth/timerboard/templates/timerboard/view.html:367
|
||||||
|
msgid "Past Timers"
|
||||||
|
msgstr "已经过去的时间节点"
|
||||||
|
|
||||||
#: allianceauth/timerboard/views.py:74
|
#: allianceauth/timerboard/views.py:74
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Added new timer in %(system)s at %(time)s."
|
msgid "Added new timer in %(system)s at %(time)s."
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from copy import copy
|
from copy import copy
|
||||||
|
from typing import Set, Iterable
|
||||||
|
|
||||||
|
|
||||||
class DiscordRoles:
|
class DiscordRoles:
|
||||||
@ -39,7 +40,7 @@ class DiscordRoles:
|
|||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(self._roles.keys())
|
return len(self._roles.keys())
|
||||||
|
|
||||||
def has_roles(self, role_ids: set) -> bool:
|
def has_roles(self, role_ids: Set[int]) -> bool:
|
||||||
"""returns true if this objects contains all roles defined by given role_ids
|
"""returns true if this objects contains all roles defined by given role_ids
|
||||||
incl. managed roles
|
incl. managed roles
|
||||||
"""
|
"""
|
||||||
@ -47,13 +48,22 @@ class DiscordRoles:
|
|||||||
all_role_ids = self._roles.keys()
|
all_role_ids = self._roles.keys()
|
||||||
return role_ids.issubset(all_role_ids)
|
return role_ids.issubset(all_role_ids)
|
||||||
|
|
||||||
def ids(self) -> set:
|
def ids(self) -> Set[int]:
|
||||||
"""return a set of all role IDs"""
|
"""return a set of all role IDs"""
|
||||||
return set(self._roles.keys())
|
return set(self._roles.keys())
|
||||||
|
|
||||||
def subset(self, role_ids: set = None, managed_only: bool = False) -> object:
|
def subset(
|
||||||
"""returns a new object containing the subset of roles as defined
|
self,
|
||||||
by given role IDs and/or including managed roles only
|
role_ids: Iterable[int] = None,
|
||||||
|
managed_only: bool = False,
|
||||||
|
role_names: Iterable[str] = None
|
||||||
|
) -> "DiscordRoles":
|
||||||
|
"""returns a new object containing the subset of roles
|
||||||
|
|
||||||
|
Args:
|
||||||
|
- role_ids: role ids must be in the provided list
|
||||||
|
- managed_only: roles must be managed
|
||||||
|
- role_names: role names must match provided list (not case sensitive)
|
||||||
"""
|
"""
|
||||||
if role_ids is not None:
|
if role_ids is not None:
|
||||||
role_ids = {int(id) for id in role_ids}
|
role_ids = {int(id) for id in role_ids}
|
||||||
@ -74,15 +84,21 @@ class DiscordRoles:
|
|||||||
if role_id in role_ids and role['managed']
|
if role_id in role_ids and role['managed']
|
||||||
])
|
])
|
||||||
|
|
||||||
else:
|
elif role_ids is None and managed_only is False and role_names is not None:
|
||||||
return copy(self)
|
role_names = {self.sanitize_role_name(name).lower() for name in role_names}
|
||||||
|
return type(self)([
|
||||||
|
role for role in self._roles.values()
|
||||||
|
if role["name"].lower() in role_names
|
||||||
|
])
|
||||||
|
|
||||||
def union(self, other: object) -> object:
|
return copy(self)
|
||||||
|
|
||||||
|
def union(self, other: object) -> "DiscordRoles":
|
||||||
"""returns a new roles object that is the union of this roles object
|
"""returns a new roles object that is the union of this roles object
|
||||||
with other"""
|
with other"""
|
||||||
return type(self)(list(self) + list(other))
|
return type(self)(list(self) + list(other))
|
||||||
|
|
||||||
def difference(self, other: object) -> object:
|
def difference(self, other: object) -> "DiscordRoles":
|
||||||
"""returns a new roles object that only contains the roles
|
"""returns a new roles object that only contains the roles
|
||||||
that exist in the current objects, but not in other
|
that exist in the current objects, but not in other
|
||||||
"""
|
"""
|
||||||
@ -94,11 +110,10 @@ class DiscordRoles:
|
|||||||
role_name = self.sanitize_role_name(role_name)
|
role_name = self.sanitize_role_name(role_name)
|
||||||
if role_name in self._roles_by_name:
|
if role_name in self._roles_by_name:
|
||||||
return self._roles_by_name[role_name]
|
return self._roles_by_name[role_name]
|
||||||
else:
|
return dict()
|
||||||
return dict()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_from_matched_roles(cls, matched_roles: list) -> None:
|
def create_from_matched_roles(cls, matched_roles: list) -> "DiscordRoles":
|
||||||
"""returns a new object created from the given list of matches roles
|
"""returns a new object created from the given list of matches roles
|
||||||
|
|
||||||
matches_roles must be a list of tuples in the form: (role, created)
|
matches_roles must be a list of tuples in the form: (role, created)
|
||||||
@ -107,7 +122,7 @@ class DiscordRoles:
|
|||||||
return cls(raw_roles)
|
return cls(raw_roles)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _assert_valid_role(role: dict):
|
def _assert_valid_role(role: dict) -> None:
|
||||||
if not isinstance(role, dict):
|
if not isinstance(role, dict):
|
||||||
raise TypeError('Roles must be of type dict: %s' % role)
|
raise TypeError('Roles must be of type dict: %s' % role)
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ TEST_BOT_TOKEN = 'abcdefhijlkmnopqastzvwxyz1234567890ABCDEFGHOJKLMNOPQRSTUVWXY'
|
|||||||
TEST_ROLE_ID = 654321012345678912
|
TEST_ROLE_ID = 654321012345678912
|
||||||
|
|
||||||
|
|
||||||
def create_role(id: int, name: str, managed=False):
|
def create_role(id: int, name: str, managed=False) -> dict:
|
||||||
return {
|
return {
|
||||||
'id': int(id),
|
'id': int(id),
|
||||||
'name': str(name),
|
'name': str(name),
|
||||||
@ -21,8 +21,10 @@ def create_matched_role(role, created=False) -> tuple:
|
|||||||
ROLE_ALPHA = create_role(1, 'alpha')
|
ROLE_ALPHA = create_role(1, 'alpha')
|
||||||
ROLE_BRAVO = create_role(2, 'bravo')
|
ROLE_BRAVO = create_role(2, 'bravo')
|
||||||
ROLE_CHARLIE = create_role(3, 'charlie')
|
ROLE_CHARLIE = create_role(3, 'charlie')
|
||||||
|
ROLE_CHARLIE_2 = create_role(4, 'Charlie') # Discord roles are case sensitive
|
||||||
ROLE_MIKE = create_role(13, 'mike', True)
|
ROLE_MIKE = create_role(13, 'mike', True)
|
||||||
|
|
||||||
|
|
||||||
ALL_ROLES = [ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE]
|
ALL_ROLES = [ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE]
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from . import ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE, ALL_ROLES, create_role
|
from . import (
|
||||||
|
ROLE_ALPHA,
|
||||||
|
ROLE_BRAVO,
|
||||||
|
ROLE_CHARLIE,
|
||||||
|
ROLE_CHARLIE_2,
|
||||||
|
ROLE_MIKE,
|
||||||
|
ALL_ROLES,
|
||||||
|
create_role
|
||||||
|
)
|
||||||
from .. import DiscordRoles
|
from .. import DiscordRoles
|
||||||
|
|
||||||
|
|
||||||
@ -143,6 +151,16 @@ class TestSubset(TestCase):
|
|||||||
expected = {1, 2, 3, 13}
|
expected = {1, 2, 3, 13}
|
||||||
self.assertSetEqual(roles.ids(), expected)
|
self.assertSetEqual(roles.ids(), expected)
|
||||||
|
|
||||||
|
def test_should_return_role_names_only(self):
|
||||||
|
# given
|
||||||
|
all_roles = DiscordRoles([
|
||||||
|
ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE, ROLE_CHARLIE_2
|
||||||
|
])
|
||||||
|
# when
|
||||||
|
roles = all_roles.subset(role_names={"bravo", "charlie"})
|
||||||
|
# then
|
||||||
|
self.assertSetEqual(roles.ids(), {2, 3, 4})
|
||||||
|
|
||||||
|
|
||||||
class TestHasRoles(TestCase):
|
class TestHasRoles(TestCase):
|
||||||
|
|
||||||
|
@ -6,11 +6,12 @@ from django.contrib.auth.models import User
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy
|
from django.utils.translation import gettext_lazy
|
||||||
|
|
||||||
|
from allianceauth.groupmanagement.models import ReservedGroupName
|
||||||
from allianceauth.notifications import notify
|
from allianceauth.notifications import notify
|
||||||
|
|
||||||
from . import __title__
|
from . import __title__
|
||||||
from .app_settings import DISCORD_GUILD_ID
|
from .app_settings import DISCORD_GUILD_ID
|
||||||
from .discord_client import DiscordApiBackoff, DiscordRoles
|
from .discord_client import DiscordApiBackoff, DiscordClient, DiscordRoles
|
||||||
from .discord_client.helpers import match_or_create_roles_from_names
|
from .discord_client.helpers import match_or_create_roles_from_names
|
||||||
from .managers import DiscordUserManager
|
from .managers import DiscordUserManager
|
||||||
from .utils import LoggerAddTag
|
from .utils import LoggerAddTag
|
||||||
@ -109,11 +110,16 @@ class DiscordUser(models.Model):
|
|||||||
- False on error or raises exception
|
- False on error or raises exception
|
||||||
"""
|
"""
|
||||||
client = DiscordUser.objects._bot_client()
|
client = DiscordUser.objects._bot_client()
|
||||||
|
member_roles = self._determine_member_roles(client)
|
||||||
|
if member_roles is None:
|
||||||
|
return None
|
||||||
|
return self._update_roles_if_needed(client, state_name, member_roles)
|
||||||
|
|
||||||
|
def _determine_member_roles(self, client: DiscordClient) -> DiscordRoles:
|
||||||
|
"""Determine the roles of the current member / user."""
|
||||||
member_info = client.guild_member(guild_id=DISCORD_GUILD_ID, user_id=self.uid)
|
member_info = client.guild_member(guild_id=DISCORD_GUILD_ID, user_id=self.uid)
|
||||||
if member_info is None:
|
if member_info is None:
|
||||||
# User is no longer a member
|
return None # User is no longer a member
|
||||||
return None
|
|
||||||
|
|
||||||
guild_roles = DiscordRoles(client.guild_roles(guild_id=DISCORD_GUILD_ID))
|
guild_roles = DiscordRoles(client.guild_roles(guild_id=DISCORD_GUILD_ID))
|
||||||
logger.debug('Current guild roles: %s', guild_roles.ids())
|
logger.debug('Current guild roles: %s', guild_roles.ids())
|
||||||
if 'roles' in member_info:
|
if 'roles' in member_info:
|
||||||
@ -128,10 +134,13 @@ class DiscordUser(models.Model):
|
|||||||
set(member_info['roles']).difference(guild_roles.ids())
|
set(member_info['roles']).difference(guild_roles.ids())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
member_roles = guild_roles.subset(member_info['roles'])
|
return guild_roles.subset(member_info['roles'])
|
||||||
else:
|
raise RuntimeError('member_info from %s is not valid' % self.user)
|
||||||
raise RuntimeError('member_info from %s is not valid' % self.user)
|
|
||||||
|
|
||||||
|
def _update_roles_if_needed(
|
||||||
|
self, client: DiscordClient, state_name: str, member_roles: DiscordRoles
|
||||||
|
) -> bool:
|
||||||
|
"""Update the roles of this member/user if needed."""
|
||||||
requested_roles = match_or_create_roles_from_names(
|
requested_roles = match_or_create_roles_from_names(
|
||||||
client=client,
|
client=client,
|
||||||
guild_id=DISCORD_GUILD_ID,
|
guild_id=DISCORD_GUILD_ID,
|
||||||
@ -143,10 +152,13 @@ class DiscordUser(models.Model):
|
|||||||
'Requested roles for user %s: %s', self.user, requested_roles.ids()
|
'Requested roles for user %s: %s', self.user, requested_roles.ids()
|
||||||
)
|
)
|
||||||
logger.debug('Current roles user %s: %s', self.user, member_roles.ids())
|
logger.debug('Current roles user %s: %s', self.user, member_roles.ids())
|
||||||
|
reserved_role_names = ReservedGroupName.objects.values_list("name", flat=True)
|
||||||
|
member_roles_reserved = member_roles.subset(role_names=reserved_role_names)
|
||||||
member_roles_managed = member_roles.subset(managed_only=True)
|
member_roles_managed = member_roles.subset(managed_only=True)
|
||||||
if requested_roles != member_roles.difference(member_roles_managed):
|
member_roles_persistent = member_roles_managed.union(member_roles_reserved)
|
||||||
|
if requested_roles != member_roles.difference(member_roles_persistent):
|
||||||
logger.debug('Need to update roles for user %s', self.user)
|
logger.debug('Need to update roles for user %s', self.user)
|
||||||
new_roles = requested_roles.union(member_roles_managed)
|
new_roles = requested_roles.union(member_roles_persistent)
|
||||||
success = client.modify_guild_member(
|
success = client.modify_guild_member(
|
||||||
guild_id=DISCORD_GUILD_ID,
|
guild_id=DISCORD_GUILD_ID,
|
||||||
user_id=self.uid,
|
user_id=self.uid,
|
||||||
@ -157,10 +169,8 @@ class DiscordUser(models.Model):
|
|||||||
else:
|
else:
|
||||||
logger.warning('Failed to update roles for %s', self.user)
|
logger.warning('Failed to update roles for %s', self.user)
|
||||||
return success
|
return success
|
||||||
|
logger.info('No need to update roles for user %s', self.user)
|
||||||
else:
|
return True
|
||||||
logger.info('No need to update roles for user %s', self.user)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def update_username(self) -> bool:
|
def update_username(self) -> bool:
|
||||||
"""Updates the username incl. the discriminator
|
"""Updates the username incl. the discriminator
|
||||||
@ -171,7 +181,6 @@ class DiscordUser(models.Model):
|
|||||||
- None if user is no longer a member of the Discord server
|
- None if user is no longer a member of the Discord server
|
||||||
- False on error or raises exception
|
- False on error or raises exception
|
||||||
"""
|
"""
|
||||||
|
|
||||||
client = DiscordUser.objects._bot_client()
|
client = DiscordUser.objects._bot_client()
|
||||||
user_info = client.guild_member(guild_id=DISCORD_GUILD_ID, user_id=self.uid)
|
user_info = client.guild_member(guild_id=DISCORD_GUILD_ID, user_id=self.uid)
|
||||||
if user_info is None:
|
if user_info is None:
|
||||||
|
@ -9,6 +9,7 @@ from ..discord_client.tests import ( # noqa
|
|||||||
ROLE_ALPHA,
|
ROLE_ALPHA,
|
||||||
ROLE_BRAVO,
|
ROLE_BRAVO,
|
||||||
ROLE_CHARLIE,
|
ROLE_CHARLIE,
|
||||||
|
ROLE_CHARLIE_2,
|
||||||
ROLE_MIKE,
|
ROLE_MIKE,
|
||||||
ALL_ROLES,
|
ALL_ROLES,
|
||||||
create_user_info
|
create_user_info
|
||||||
|
@ -5,6 +5,7 @@ from requests.exceptions import HTTPError
|
|||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from allianceauth.tests.auth_utils import AuthUtils
|
from allianceauth.tests.auth_utils import AuthUtils
|
||||||
|
from allianceauth.groupmanagement.models import ReservedGroupName
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
TEST_USER_NAME,
|
TEST_USER_NAME,
|
||||||
@ -15,7 +16,8 @@ from . import (
|
|||||||
ROLE_ALPHA,
|
ROLE_ALPHA,
|
||||||
ROLE_BRAVO,
|
ROLE_BRAVO,
|
||||||
ROLE_CHARLIE,
|
ROLE_CHARLIE,
|
||||||
ROLE_MIKE
|
ROLE_CHARLIE_2,
|
||||||
|
ROLE_MIKE,
|
||||||
)
|
)
|
||||||
from ..discord_client import DiscordClient, DiscordApiBackoff
|
from ..discord_client import DiscordClient, DiscordApiBackoff
|
||||||
from ..discord_client.tests import create_matched_role
|
from ..discord_client.tests import create_matched_role
|
||||||
@ -294,25 +296,33 @@ class TestUpdateGroups(TestCase):
|
|||||||
args, kwargs = mock_DiscordClient.return_value.modify_guild_member.call_args
|
args, kwargs = mock_DiscordClient.return_value.modify_guild_member.call_args
|
||||||
self.assertEqual(set(kwargs['role_ids']), {1, 2})
|
self.assertEqual(set(kwargs['role_ids']), {1, 2})
|
||||||
|
|
||||||
def test_update_if_needed_and_preserve_managed_roles(
|
def test_should_update_and_preserve_managed_and_reserved_roles(
|
||||||
self,
|
self,
|
||||||
mock_user_group_names,
|
mock_user_group_names,
|
||||||
mock_DiscordClient
|
mock_DiscordClient
|
||||||
):
|
):
|
||||||
roles_current = [1, 13]
|
# given
|
||||||
|
roles_current = [1, 3, 4, 13]
|
||||||
mock_user_group_names.return_value = []
|
mock_user_group_names.return_value = []
|
||||||
mock_DiscordClient.return_value.match_or_create_roles_from_names\
|
mock_DiscordClient.return_value.match_or_create_roles_from_names\
|
||||||
.return_value = self.roles_requested
|
.return_value = self.roles_requested
|
||||||
mock_DiscordClient.return_value.guild_roles.return_value = self.guild_roles
|
mock_DiscordClient.return_value.guild_roles.return_value = [
|
||||||
mock_DiscordClient.return_value.guild_member.return_value = \
|
ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE, ROLE_CHARLIE_2
|
||||||
{'roles': roles_current}
|
]
|
||||||
|
mock_DiscordClient.return_value.guild_member.return_value = {
|
||||||
|
'roles': roles_current
|
||||||
|
}
|
||||||
mock_DiscordClient.return_value.modify_guild_member.return_value = True
|
mock_DiscordClient.return_value.modify_guild_member.return_value = True
|
||||||
|
ReservedGroupName.objects.create(
|
||||||
|
name="charlie", reason="dummy", created_by="xyz"
|
||||||
|
)
|
||||||
|
# when
|
||||||
result = self.discord_user.update_groups()
|
result = self.discord_user.update_groups()
|
||||||
|
# then
|
||||||
self.assertTrue(result)
|
self.assertTrue(result)
|
||||||
self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called)
|
self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called)
|
||||||
args, kwargs = mock_DiscordClient.return_value.modify_guild_member.call_args
|
args, kwargs = mock_DiscordClient.return_value.modify_guild_member.call_args
|
||||||
self.assertEqual(set(kwargs['role_ids']), {1, 2, 13})
|
self.assertEqual(set(kwargs['role_ids']), {1, 2, 3, 4, 13})
|
||||||
|
|
||||||
def test_dont_update_if_not_needed(
|
def test_dont_update_if_not_needed(
|
||||||
self,
|
self,
|
||||||
|
3
allianceauth/templates/bundles/jquery-ui-css.html
Normal file
3
allianceauth/templates/bundles/jquery-ui-css.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<!-- Start jQuery UI CSS from cdnjs -->
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" integrity="sha512-aOG0c6nPNzGk+5zjwyJaoRUgCdOrfSDhmMID2u4+OIslr0GjpLKo7Xm0Ao3xmpM4T8AmIouRkqwj1nrdVsLKEQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
<!-- End jQuery UI CSS from cdnjs -->
|
3
allianceauth/templates/bundles/jquery-ui-js.html
Normal file
3
allianceauth/templates/bundles/jquery-ui-js.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<!-- Start jQuery UI JS from cdnjs -->
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||||
|
<!-- End jQuery UI JS from cdnjs -->
|
@ -156,14 +156,27 @@ def _latests_versions(tags: list) -> tuple:
|
|||||||
|
|
||||||
|
|
||||||
def _fetch_list_from_gitlab(url: str, max_pages: int = MAX_PAGES) -> list:
|
def _fetch_list_from_gitlab(url: str, max_pages: int = MAX_PAGES) -> list:
|
||||||
"""returns a list from the GitLab API. Supports pageing"""
|
"""returns a list from the GitLab API. Supports paging"""
|
||||||
result = list()
|
result = list()
|
||||||
|
|
||||||
for page in range(1, max_pages + 1):
|
for page in range(1, max_pages + 1):
|
||||||
request = requests.get(
|
try:
|
||||||
url, params={'page': page}, timeout=REQUESTS_TIMEOUT
|
request = requests.get(
|
||||||
)
|
url, params={'page': page}, timeout=REQUESTS_TIMEOUT
|
||||||
request.raise_for_status()
|
)
|
||||||
|
request.raise_for_status()
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
error_str = str(e)
|
||||||
|
|
||||||
|
logger.warning(
|
||||||
|
f'Unable to fetch from GitLab API. Error: {error_str}',
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
result += request.json()
|
result += request.json()
|
||||||
|
|
||||||
if 'x-total-pages' in request.headers:
|
if 'x-total-pages' in request.headers:
|
||||||
try:
|
try:
|
||||||
total_pages = int(request.headers['x-total-pages'])
|
total_pages = int(request.headers['x-total-pages'])
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 303 KiB |
32
docker/.env.example
Normal file
32
docker/.env.example
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
PROTOCOL=https://
|
||||||
|
AUTH_SUBDOMAIN=%AUTH_SUBDOMAIN%
|
||||||
|
DOMAIN=%DOMAIN%
|
||||||
|
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v2.9
|
||||||
|
|
||||||
|
# Nginx Proxy Manager
|
||||||
|
PROXY_HTTP_PORT=80
|
||||||
|
PROXY_HTTPS_PORT=443
|
||||||
|
PROXY_DASH_PORT=81
|
||||||
|
PROXY_MYSQL_PASS=%PROXY_MYSQL_PASS%
|
||||||
|
PROXY_MYSQL_PASS_ROOT=%PROXY_MYSQL_PASS_ROOT%
|
||||||
|
|
||||||
|
# grafana
|
||||||
|
GRAFANA_DB_PASSWORD=%GRAFANA_DB_PASSWORD%
|
||||||
|
|
||||||
|
# Alliance Auth Environment Config
|
||||||
|
AA_SITENAME=%AA_SITENAME%
|
||||||
|
AA_SECRET_KEY=%AA_SECRET_KEY%
|
||||||
|
AA_DB_HOST=auth_mysql
|
||||||
|
AA_DB_NAME=alliance_auth
|
||||||
|
AA_DB_USER=aauth
|
||||||
|
AA_DB_PASSWORD=%AA_DB_PASSWORD%
|
||||||
|
AA_DB_ROOT_PASSWORD=%AA_DB_ROOT_PASSWORD%
|
||||||
|
AA_EMAIL_HOST=''
|
||||||
|
AA_EMAIL_PORT=587
|
||||||
|
AA_EMAIL_HOST_USER=''
|
||||||
|
AA_EMAIL_HOST_PASSWORD=''
|
||||||
|
AA_EMAIL_USE_TLS=True
|
||||||
|
AA_DEFAULT_FROM_EMAIL=''
|
||||||
|
ESI_SSO_CLIENT_ID=%ESI_SSO_CLIENT_ID%
|
||||||
|
ESI_SSO_CLIENT_SECRET=%ESI_SSO_CLIENT_SECRET%
|
||||||
|
ESI_USER_CONTACT_EMAIL=%ESI_USER_CONTACT_EMAIL%
|
2
docker/.gitignore
vendored
Normal file
2
docker/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
setup.sql
|
49
docker/Dockerfile
Normal file
49
docker/Dockerfile
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
FROM python:3.9-slim
|
||||||
|
ARG AUTH_VERSION=2.9.0
|
||||||
|
ARG AUTH_PACKAGE=allianceauth==${AUTH_VERSION}
|
||||||
|
ENV VIRTUAL_ENV=/opt/venv
|
||||||
|
ENV AUTH_USER=allianceauth
|
||||||
|
ENV AUTH_GROUP=allianceauth
|
||||||
|
ENV AUTH_USERGROUP=${AUTH_USER}:${AUTH_GROUP}
|
||||||
|
ENV STATIC_BASE=/var/www
|
||||||
|
ENV AUTH_HOME=/home/allianceauth
|
||||||
|
|
||||||
|
# Setup user and directory permissions
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN groupadd -g 61000 ${AUTH_GROUP}
|
||||||
|
RUN useradd -g 61000 -l -M -s /bin/false -u 61000 ${AUTH_USER}
|
||||||
|
RUN mkdir -p ${VIRTUAL_ENV} \
|
||||||
|
&& chown ${AUTH_USERGROUP} ${VIRTUAL_ENV} \
|
||||||
|
&& mkdir -p ${STATIC_BASE} \
|
||||||
|
&& chown ${AUTH_USERGROUP} ${STATIC_BASE} \
|
||||||
|
&& mkdir -p ${AUTH_HOME} \
|
||||||
|
&& chown ${AUTH_USERGROUP} ${AUTH_HOME}
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
|
||||||
|
libmariadb-dev gcc supervisor git htop
|
||||||
|
|
||||||
|
# Switch to non-root user
|
||||||
|
USER ${AUTH_USER}
|
||||||
|
RUN python3 -m venv $VIRTUAL_ENV
|
||||||
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
||||||
|
WORKDIR ${AUTH_HOME}
|
||||||
|
|
||||||
|
# Install python dependencies
|
||||||
|
RUN pip install --upgrade pip
|
||||||
|
RUN pip install wheel gunicorn
|
||||||
|
RUN pip install ${AUTH_PACKAGE}
|
||||||
|
|
||||||
|
# Initialize auth
|
||||||
|
RUN allianceauth start myauth
|
||||||
|
COPY /allianceauth/project_template/project_name/settings/local.py ${AUTH_HOME}/myauth/myauth/settings/local.py
|
||||||
|
RUN allianceauth update myauth
|
||||||
|
RUN mkdir -p ${STATIC_BASE}/myauth/static
|
||||||
|
RUN python ${AUTH_HOME}/myauth/manage.py collectstatic --noinput
|
||||||
|
COPY /docker/conf/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||||
|
RUN echo 'alias auth="python $AUTH_HOME/myauth/manage.py"' >> ~/.bashrc && \
|
||||||
|
echo 'alias supervisord="supervisord -c /etc/supervisor/conf.d/supervisord.conf"' >> ~/.bashrc && \
|
||||||
|
source ~/.bashrc
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
|
69
docker/README.md
Normal file
69
docker/README.md
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# Alliance Auth -- Docker
|
||||||
|
|
||||||
|
## Prerequesites
|
||||||
|
You should have the following available on the system you are using to set this up:
|
||||||
|
* Docker - https://docs.docker.com/get-docker/
|
||||||
|
* git
|
||||||
|
* curl
|
||||||
|
|
||||||
|
## Setup Guide
|
||||||
|
|
||||||
|
1. run `bash <(curl -s https://gitlab.com/allianceauth/allianceauth/-/raw/v2.9.x/docker/scripts/download.sh)`. This will download all the files you need to install auth and place them in a directory named `aa-docker`. Feel free to rename/move this folder.
|
||||||
|
1. run `./scripts/prepare-env.sh` to set up your environment
|
||||||
|
1. (optional) Change `PROTOCOL` to `http://` if not using SSL in `.env`
|
||||||
|
1. run `docker-compose --env-file=.env up -d` (NOTE: if this command hangs, follow the instructions [here](https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged))
|
||||||
|
1. run `docker-compose exec allianceauth bash` to open up a terminal inside your auth container
|
||||||
|
1. run `auth migrate`
|
||||||
|
1. run `auth collectstatic`
|
||||||
|
1. run `auth createsuperuser`
|
||||||
|
1. visit http://yourdomain:81 to set up nginx proxy manager (NOTE: if this doesn't work, the machine likely has a firewall. You'll want to open up ports 80,443, and 81. [Instructions for ufw](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands))
|
||||||
|
1. login with user `admin@example.com` and password `changeme`, then update your password as requested
|
||||||
|
1. click on "Proxy Hosts"
|
||||||
|
1. click "Add Proxy Host", with the following settings for auth. The example uses `auth.localhost` for the domain, but you'll want to use whatever address you have auth configured on
|
||||||
|

|
||||||
|
1. click "Add Proxy Host", with the following settings for grafana. The example uses `grafana.localhost` for the domain
|
||||||
|

|
||||||
|
|
||||||
|
Congrats! You should now see auth running at http://auth.yourdomain and grafana at http://grafana.yourdomain!
|
||||||
|
|
||||||
|
## SSL Guide
|
||||||
|
Unless you're running auth locally in docker for testing, you should be using SSL.
|
||||||
|
Thankfully, setting up SSL in nginx Proxy Manager takes about three clicks.
|
||||||
|
1. Edit your existing proxy host, and go to the SSL tab. Select "Request a new SSL Certificate" from the drop down.
|
||||||
|
1. Now, enable "Force SSL" and "HTTP/2 Support". (NOTE: Do not enable HSTS unless you know what you're doing. This will force your domains to only work with SSL enabled, and is cached extremely hard in browsers. )
|
||||||
|

|
||||||
|
1. (optional) select "Use a DNS Challenge". This is not a required option, but it is recommended if you use a supported DNS provider. You'll then be asked for an API key for the provider you choose. If you use Cloudflare, you'll probably have issues getting SSL certs unless you use a DNS Challenge.
|
||||||
|
1. The email address here will be used to notify you if there are issues renewing your certificates.
|
||||||
|
1. Repeat for any other services, like grafana.
|
||||||
|
|
||||||
|
That's it! You should now be able to access your auth install at https://auth.yourdomain
|
||||||
|
|
||||||
|
## Adding extra packages
|
||||||
|
There are a handful of ways to add packages:
|
||||||
|
* Running `pip install` in the container
|
||||||
|
* Modifying the container's initial command to install packages
|
||||||
|
* Building a custom Docker image (recommended, and less scary than it sounds!)
|
||||||
|
|
||||||
|
### Using a custom docker image
|
||||||
|
Using a custom docker image is the preferred approach, as it gives you the stability of packages only changing when you tell them to, along with packages not having to be downloaded every time your container restarts
|
||||||
|
|
||||||
|
1. Add each additional package that you want to install to a single line in `conf/requirements.txt`. It is recommended, but not required, that you include a version number as well. This will keep your packages from magically updating. You can lookup packages on https://package.wiki, and copy everything after `pip install` from the top of the page to use the most recent version. It should look something like `allianceauth-signal-pings==0.0.7`. Every entry in this file should be on a separate line
|
||||||
|
1. In `docker-compose.yml`, comment out the `image` line under `allianceauth` (line 36... ish) and uncomment the `build` section
|
||||||
|
1. Now run `docker-compose --env-file=.env up -d`, your custom container will be built, and auth will have your new packages. Make sure to follow the package's instructions on config values that go in `local.py`
|
||||||
|
|
||||||
|
_NOTE: It is recommended that you put any secret values (API keys, database credentials, etc) in an environment variable instead of hardcoding them into `local.py`. This gives you the ability to track your config in git without committing passwords. To do this, just add it to your `.env` file, and then reference in `local.py` with `os.environ.get("SECRET_NAME")`_
|
||||||
|
|
||||||
|
## Updating Auth
|
||||||
|
|
||||||
|
### Base Image
|
||||||
|
Whether you're using a custom image or not, the version of auth is dictated by $AA_DOCKER_TAG in your `.env` file.
|
||||||
|
1. To update to a new version of auth, update the version number at the end (or replace the whole value with the tag in the release notes).
|
||||||
|
1. Next, run `docker-compose pull`
|
||||||
|
1. Finally, run `docker-compose --env-file=.env up -d`
|
||||||
|
|
||||||
|
_NOTE: If you specify a version of allianceauth in your `requirements.txt` in a custom image it will override the version from the base image. Not recommended unless you know what you're doing_
|
||||||
|
|
||||||
|
### Custom Packages
|
||||||
|
1. Update the versions in your `requirements.txt` file
|
||||||
|
1. Run `docker-compose build`
|
||||||
|
1. Run `docker-compose --env-file=.env up -d`
|
81
docker/conf/local.py
Normal file
81
docker/conf/local.py
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# Every setting in base.py can be overloaded by redefining it here.
|
||||||
|
from .base import *
|
||||||
|
|
||||||
|
SECRET_KEY = os.environ.get("AA_SECRET_KEY")
|
||||||
|
SITE_NAME = os.environ.get("AA_SITENAME")
|
||||||
|
DEBUG = os.environ.get("AA_DEBUG", False)
|
||||||
|
DATABASES['default'] = {
|
||||||
|
'ENGINE': 'django.db.backends.mysql',
|
||||||
|
'NAME': os.environ.get("AA_DB_NAME"),
|
||||||
|
'USER': os.environ.get("AA_DB_USER"),
|
||||||
|
'PASSWORD': os.environ.get("AA_DB_PASSWORD"),
|
||||||
|
'HOST': os.environ.get("AA_DB_HOST"),
|
||||||
|
'PORT': os.environ.get("AA_DB_PORT", "3306"),
|
||||||
|
}
|
||||||
|
|
||||||
|
# Register an application at https://developers.eveonline.com for Authentication
|
||||||
|
# & API Access and fill out these settings. Be sure to set the callback URL
|
||||||
|
# to https://example.com/sso/callback substituting your domain for example.com
|
||||||
|
# Logging in to auth requires the publicData scope (can be overridden through the
|
||||||
|
# LOGIN_TOKEN_SCOPES setting). Other apps may require more (see their docs).
|
||||||
|
|
||||||
|
ESI_SSO_CLIENT_ID = os.environ.get("ESI_SSO_CLIENT_ID")
|
||||||
|
ESI_SSO_CLIENT_SECRET = os.environ.get("ESI_SSO_CLIENT_SECRET")
|
||||||
|
ESI_SSO_CALLBACK_URL = (f"{os.environ.get('PROTOCOL')}"
|
||||||
|
f"{os.environ.get('AUTH_SUBDOMAIN')}."
|
||||||
|
f"{os.environ.get('DOMAIN')}/sso/callback")
|
||||||
|
ESI_USER_CONTACT_EMAIL = os.environ.get("ESI_USER_CONTACT_EMAIL") # A server maintainer that CCP can contact in case of issues.
|
||||||
|
|
||||||
|
# By default emails are validated before new users can log in.
|
||||||
|
# It's recommended to use a free service like SparkPost or Elastic Email to send email.
|
||||||
|
# https://www.sparkpost.com/docs/integrations/django/
|
||||||
|
# https://elasticemail.com/resources/settings/smtp-api/
|
||||||
|
# Set the default from email to something like 'noreply@example.com'
|
||||||
|
# Email validation can be turned off by uncommenting the line below. This can break some services.
|
||||||
|
REGISTRATION_VERIFY_EMAIL = False
|
||||||
|
EMAIL_HOST = os.environ.get("AA_EMAIL_HOST", "")
|
||||||
|
EMAIL_PORT = os.environ.get("AA_EMAIL_PORT", 587)
|
||||||
|
EMAIL_HOST_USER = os.environ.get("AA_EMAIL_HOST_USER", "")
|
||||||
|
EMAIL_HOST_PASSWORD = os.environ.get("AA_EMAIL_HOST_PASSWORD", "")
|
||||||
|
EMAIL_USE_TLS = os.environ.get("AA_EMAIL_USE_TLS", True)
|
||||||
|
DEFAULT_FROM_EMAIL = os.environ.get("AA_DEFAULT_FROM_EMAIL", "")
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'myauth.urls'
|
||||||
|
WSGI_APPLICATION = 'myauth.wsgi.application'
|
||||||
|
STATIC_ROOT = "/var/www/myauth/static/"
|
||||||
|
BROKER_URL = F"redis://{os.environ.get('AA_REDIS', 'redis:6379')}/0"
|
||||||
|
CELERY_RESULT_BACKEND = F"redis://{os.environ.get('AA_REDIS', 'redis:6379')}/0"
|
||||||
|
CACHES = {
|
||||||
|
"default": {
|
||||||
|
"BACKEND": "redis_cache.RedisCache",
|
||||||
|
"LOCATION": os.environ.get('AA_REDIS', 'redis:6379'),
|
||||||
|
"OPTIONS": {
|
||||||
|
"DB": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add any additional apps to this list.
|
||||||
|
INSTALLED_APPS += [
|
||||||
|
# https://allianceauth.readthedocs.io/en/latest/features/apps/index.html
|
||||||
|
# 'allianceauth.corputils',
|
||||||
|
# 'allianceauth.fleetactivitytracking',
|
||||||
|
# 'allianceauth.optimer',
|
||||||
|
# 'allianceauth.permissions_tool',
|
||||||
|
# 'allianceauth.srp',
|
||||||
|
# 'allianceauth.timerboard',
|
||||||
|
|
||||||
|
# https://allianceauth.readthedocs.io/en/latest/features/services/index.html
|
||||||
|
# 'allianceauth.services.modules.discord',
|
||||||
|
# 'allianceauth.services.modules.discourse',
|
||||||
|
# 'allianceauth.services.modules.ips4',
|
||||||
|
# 'allianceauth.services.modules.openfire',
|
||||||
|
# 'allianceauth.services.modules.phpbb3',
|
||||||
|
# 'allianceauth.services.modules.smf',
|
||||||
|
# 'allianceauth.services.modules.teamspeak3',
|
||||||
|
# 'allianceauth.services.modules.xenforo',
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Add any custom settings below here. #
|
||||||
|
#######################################
|
20
docker/conf/nginx.conf
Normal file
20
docker/conf/nginx.conf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
location = /favicon.ico { access_log off; log_not_found off; }
|
||||||
|
location /static {
|
||||||
|
alias /var/www/myauth/static;
|
||||||
|
autoindex off;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /robots.txt {
|
||||||
|
alias /var/www/myauth/static/robots.txt;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://allianceauth:8000;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
}
|
0
docker/conf/requirements.txt
Normal file
0
docker/conf/requirements.txt
Normal file
56
docker/conf/supervisord.conf
Normal file
56
docker/conf/supervisord.conf
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
[supervisord]
|
||||||
|
nodaemon=true
|
||||||
|
user=allianceauth
|
||||||
|
|
||||||
|
[program:beat]
|
||||||
|
command=/opt/venv/bin/celery -A myauth beat
|
||||||
|
directory=/home/allianceauth/myauth
|
||||||
|
user=allianceauth
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=10
|
||||||
|
priority=998
|
||||||
|
stdout_events_enabled=true
|
||||||
|
stderr_events_enabled=true
|
||||||
|
|
||||||
|
[program:worker]
|
||||||
|
command=/opt/venv/bin/celery -A myauth worker -l INFO --max-tasks-per-child=250
|
||||||
|
directory=/home/allianceauth/myauth
|
||||||
|
user=allianceauth
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
numprocs=1
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=10
|
||||||
|
stopwaitsecs = 600
|
||||||
|
killasgroup=true
|
||||||
|
priority=998
|
||||||
|
stdout_events_enabled=true
|
||||||
|
stderr_events_enabled=true
|
||||||
|
|
||||||
|
[program:gunicorn]
|
||||||
|
user=allianceauth
|
||||||
|
directory=/home/allianceauth/myauth
|
||||||
|
command=/opt/venv/bin/gunicorn myauth.wsgi --bind :8000 --workers=3 --timeout 120
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
stdout_events_enabled=true
|
||||||
|
stderr_events_enabled=true
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
stopsignal=INT
|
||||||
|
|
||||||
|
[group:myauth]
|
||||||
|
programs=beat,worker,gunicorn
|
||||||
|
priority=999
|
||||||
|
|
||||||
|
[supervisorctl]
|
8
docker/custom.dockerfile
Normal file
8
docker/custom.dockerfile
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
ARG AA_DOCKER_TAG
|
||||||
|
FROM $AA_DOCKER_TAG
|
||||||
|
|
||||||
|
RUN cd /home/allianceauth
|
||||||
|
COPY /conf/requirements.txt requirements.txt
|
||||||
|
RUN pip install -r requirements.txt
|
||||||
|
RUN python $AUTH_HOME/myauth/manage.py collectstatic --noinput
|
||||||
|
RUN allianceauth update myauth
|
96
docker/docker-compose.yml
Normal file
96
docker/docker-compose.yml
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
auth_mysql:
|
||||||
|
image: mysql:8.0
|
||||||
|
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --default-authentication-plugin=mysql_native_password]
|
||||||
|
volumes:
|
||||||
|
- ./mysql-data:/var/lib/mysql
|
||||||
|
- ./setup.sql:/docker-entrypoint-initdb.d/setup.sql
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=${AA_DB_ROOT_PASSWORD?err}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "-uroot", "-proot", "-h", "localhost", "ping"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
image: nginx:1.21
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./conf/nginx.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
- static-volume:/var/www/myauth/static
|
||||||
|
depends_on:
|
||||||
|
- allianceauth
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:6.2
|
||||||
|
command: redis-server
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- "redis-data:/data"
|
||||||
|
|
||||||
|
allianceauth:
|
||||||
|
image: ${AA_DOCKER_TAG?err}
|
||||||
|
# build:
|
||||||
|
# context: .
|
||||||
|
# dockerfile: custom.dockerfile
|
||||||
|
# args:
|
||||||
|
# AA_DOCKER_TAG: ${AA_DOCKER_TAG?err}
|
||||||
|
restart: always
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
volumes:
|
||||||
|
- ./conf/local.py:/home/allianceauth/myauth/myauth/settings/local.py
|
||||||
|
- ./templates:/home/allianceauth/myauth/myauth/templates/
|
||||||
|
- ./conf/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf
|
||||||
|
- static-volume:/var/www/myauth/static
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- auth_mysql
|
||||||
|
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana:8.2
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- auth_mysql
|
||||||
|
volumes:
|
||||||
|
- grafana-data:/var/lib/grafana
|
||||||
|
proxy:
|
||||||
|
image: 'jc21/nginx-proxy-manager:latest'
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- '${PROXY_HTTP_PORT:-80}:80'
|
||||||
|
- '${PROXY_DASH_PORT:-81}:81'
|
||||||
|
- '${PROXY_HTTPS_PORT:-443}:443'
|
||||||
|
environment:
|
||||||
|
DB_MYSQL_HOST: "proxy-db"
|
||||||
|
DB_MYSQL_PORT: 3306
|
||||||
|
DB_MYSQL_USER: "npm"
|
||||||
|
DB_MYSQL_PASSWORD: "${PROXY_MYSQL_PASS?err}"
|
||||||
|
DB_MYSQL_NAME: "npm"
|
||||||
|
volumes:
|
||||||
|
- proxy-data:/data
|
||||||
|
- proxy-le:/etc/letsencrypt
|
||||||
|
proxy-db:
|
||||||
|
image: 'jc21/mariadb-aria:latest'
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: "${PROXY_MYSQL_PASS_ROOT?err}"
|
||||||
|
MYSQL_DATABASE: 'npm'
|
||||||
|
MYSQL_USER: 'npm'
|
||||||
|
MYSQL_PASSWORD: "${PROXY_MYSQL_PASS?err}"
|
||||||
|
ports:
|
||||||
|
- 3306
|
||||||
|
volumes:
|
||||||
|
- proxy-db:/var/lib/mysql
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
redis-data:
|
||||||
|
static-volume:
|
||||||
|
grafana-data:
|
||||||
|
proxy-data:
|
||||||
|
proxy-le:
|
||||||
|
proxy-db:
|
BIN
docker/docs/images/grafana-host.png
Normal file
BIN
docker/docs/images/grafana-host.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 85 KiB |
BIN
docker/docs/images/nginx-host.png
Normal file
BIN
docker/docs/images/nginx-host.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 86 KiB |
BIN
docker/docs/images/proxy-manager-ssl.png
Normal file
BIN
docker/docs/images/proxy-manager-ssl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
4
docker/scripts/download.sh
Executable file
4
docker/scripts/download.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
git clone https://gitlab.com/allianceauth/allianceauth.git aa-git
|
||||||
|
cp -R aa-git/docker ./aa-docker
|
||||||
|
rm -rf aa-git
|
46
docker/scripts/prepare-env.sh
Executable file
46
docker/scripts/prepare-env.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
FILE=./.env
|
||||||
|
if test -f "$FILE"; then
|
||||||
|
echo "$FILE exists. If you wish to recreate your auth environment variables (which will break everything), delete the .env file."
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# Autogenerate 24 character hexadecimal strings for all passwords + secret key
|
||||||
|
sed -i.bak 's/%PROXY_MYSQL_PASS%/'"$(openssl rand -hex 24)"'/g' .env
|
||||||
|
sed -i.bak 's/%PROXY_MYSQL_PASS_ROOT%/'"$(openssl rand -hex 24)"'/g' .env
|
||||||
|
sed -i.bak 's/%GRAFANA_DB_PASSWORD%/'"$(openssl rand -hex 24)"'/g' .env
|
||||||
|
sed -i.bak 's/%AA_SECRET_KEY%/'"$(openssl rand -hex 24)"'/g' .env
|
||||||
|
sed -i.bak 's/%AA_DB_PASSWORD%/'"$(openssl rand -hex 24)"'/g' .env
|
||||||
|
sed -i.bak 's/%AA_DB_ROOT_PASSWORD%/'"$(openssl rand -hex 24)"'/g' .env
|
||||||
|
|
||||||
|
#Prompts to collect user information
|
||||||
|
IFS= read -p "Enter the display name for your auth instance: " sitename
|
||||||
|
sed -i.bak 's/%AA_SITENAME%/'\""${sitename}"\"'/g' .env
|
||||||
|
|
||||||
|
read -p "Enter the base domain: " domain
|
||||||
|
sed -i.bak 's/%DOMAIN%/'${domain}'/g' .env
|
||||||
|
|
||||||
|
read -p "Enter the subdomain for auth: " subdomain
|
||||||
|
sed -i.bak 's/%AUTH_SUBDOMAIN%/'${subdomain}'/g' .env
|
||||||
|
|
||||||
|
read -p "Enter an email address. This is requested by CCP if there are any issues with your ESI application, and is not used in any other way by AllianceAuth: " email
|
||||||
|
sed -i.bak 's/%ESI_USER_CONTACT_EMAIL%/'${email}'/g' .env
|
||||||
|
|
||||||
|
echo "Visit https://developers.eveonline.com/ and create an application with the callback url https://${subdomain}.${domain}/sso/callback"
|
||||||
|
|
||||||
|
read -p "Enter ESI Client ID: " clientid
|
||||||
|
sed -i.bak 's/%ESI_SSO_CLIENT_ID%/'${clientid}'/g' .env
|
||||||
|
|
||||||
|
read -p "Enter ESI Client Secret: " clientsecret
|
||||||
|
sed -i.bak 's/%ESI_SSO_CLIENT_SECRET%/'${clientsecret}'/g' .env
|
||||||
|
|
||||||
|
source ./.env
|
||||||
|
cp setup.base.sql setup.sql
|
||||||
|
|
||||||
|
# Create init SQL file for auth database with users
|
||||||
|
sed -i.bak 's/authpass/'"$AA_DB_PASSWORD"'/g' setup.sql
|
||||||
|
sed -i.bak 's/grafanapass/'"$GRAFANA_DB_PASSWORD"'/g' setup.sql
|
||||||
|
rm *.bak
|
||||||
|
rm .env.bak
|
7
docker/setup.base.sql
Normal file
7
docker/setup.base.sql
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
CREATE USER 'aauth'@'%' IDENTIFIED BY 'authpass';
|
||||||
|
CREATE USER 'grafana'@'%' IDENTIFIED BY 'grafanapass';
|
||||||
|
CREATE DATABASE alliance_auth CHARACTER SET utf8mb4;
|
||||||
|
GRANT ALL PRIVILEGES ON alliance_auth.* TO 'aauth'@'%';
|
||||||
|
GRANT
|
||||||
|
SELECT,
|
||||||
|
SHOW VIEW ON alliance_auth.* TO 'grafana'@'%';
|
@ -1,71 +0,0 @@
|
|||||||
# Group Management
|
|
||||||
|
|
||||||
In order to access group management, users need to be either a superuser, granted the `auth | user | group_management ( Access to add members to groups within the alliance )` permission or a group leader (discussed later).
|
|
||||||
|
|
||||||
## Group Requests
|
|
||||||
|
|
||||||
When a user joins or leaves a group which is not marked as "Open", their group request will have to be approved manually by a user with the `group_management` permission or by a group leader of the group they are requesting.
|
|
||||||
|
|
||||||
## Group Membership
|
|
||||||
|
|
||||||
The group membership tab gives an overview of all of the non-internal groups.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Group Member Management
|
|
||||||
|
|
||||||
Clicking on the blue eye will take you to the group member management screen. Here you can see a list of people who are in the group, and remove members where necessary.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Group Audit Log
|
|
||||||
|
|
||||||
Whenever a user Joins, Leaves, or is Removed from a group, this is logged. To find the audit log for a given group, click the light-blue button to the right of the Group Member Management (blue eye) button.
|
|
||||||
|
|
||||||
These logs contain the Date and Time the action was taken (in EVE/UTC), the user which submitted the request being acted upon (requestor), the user's main character, the type of request (join, leave or removed), the action taken (accept, reject or remove), and the user that took the action (actor).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Group Leaders
|
|
||||||
|
|
||||||
Group leaders have the same abilities as users with the `group_management` permission, _however_, they will only be able to:
|
|
||||||
|
|
||||||
- Approve requests for groups they are a leader of.
|
|
||||||
- View the Group Membership and Group Members of groups they are leaders of.
|
|
||||||
|
|
||||||
This allows you to more finely control who has access to manage which groups.
|
|
||||||
|
|
||||||
## Settings
|
|
||||||
|
|
||||||
Here is a list of available settings for Group Management. They can be configured by adding them to your AA settings file (``local.py``).
|
|
||||||
Note that all settings are optional and the app will use the documented default settings if they are not used.
|
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+---------------------------------------------+---------------------------------------------------------------------------+------------+
|
|
||||||
| Name | Description | Default |
|
|
||||||
+=============================================+===========================================================================+============+
|
|
||||||
| ``GROUPMANAGEMENT_REQUESTS_NOTIFICATION`` | Send Auth notifications to all group leaders for join and leave requests. | ``False`` |
|
|
||||||
+---------------------------------------------+---------------------------------------------------------------------------+------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
## Permissions
|
|
||||||
|
|
||||||
Group Management should be mostly done using group leaders, a series of permissions are included below for thoroughness.
|
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
| Permission | Admin Site | Auth Site |
|
|
||||||
+================================+===================+====================================================================================+
|
|
||||||
| auth.group_management | None | Can Approve and Deny all Group Requests, Can view and manage all group memberships |
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
| groupmanagement.request_groups | None | Can Request Non-Public Groups |
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
| groupmanagement.add_group | Can Add Models | None |
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
| groupmanagement.change_group | Can Edit Models | None |
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
| groupmanagement.delete_group | Can Delete Models | None |
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
| groupmanagement.view_group | Can View Models | None |
|
|
||||||
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
|
||||||
```
|
|
@ -1,8 +1,8 @@
|
|||||||
# Groups
|
# Groups
|
||||||
|
|
||||||
Group Management is one of the core tasks of Alliance Auth. Many of Alliance Auth's services allow for synchronising of group membership, allowing you to grant permissions or roles in services to access certain aspects of them.
|
Group Management is one of the core tasks of Alliance Auth. Many of Alliance Auth's services allow for synchronizing of group membership, allowing you to grant permissions or roles in services to access certain aspects of them.
|
||||||
|
|
||||||
## User Organized Groups
|
## Creating groups
|
||||||
|
|
||||||
Administrators can create custom groups for users to join. Examples might be groups like `Leadership`, `CEO` or `Scouts`.
|
Administrators can create custom groups for users to join. Examples might be groups like `Leadership`, `CEO` or `Scouts`.
|
||||||
|
|
||||||
@ -38,7 +38,81 @@ The key difference is that the group is completely unmanaged by Auth. **Once a m
|
|||||||
|
|
||||||
Most people won't have a use for public groups, though it can be useful if you wish to allow public access to some services. You can grant service permissions on a public group to allow this behavior.
|
Most people won't have a use for public groups, though it can be useful if you wish to allow public access to some services. You can grant service permissions on a public group to allow this behavior.
|
||||||
|
|
||||||
## Permission
|
```eval_rst
|
||||||
|
.. _ref-reserved-group-names:
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reserved group names
|
||||||
|
|
||||||
|
When using Alliance Auth to manage external services like Discord, Auth will automatically duplicate groups on those services. E.g. on Discord Auth will create roles of the same name as groups. However, there may be cases where you want to manage groups on external services by yourself or by another bot. For those cases you can define a list of reserved group names. Auth will ensure that you can not create groups with a reserved name. You will find this list on the admin site under groupmanagement.
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
.. note::
|
||||||
|
While this feature can help to avoid naming conflicts with groups on external services, the respective service component in Alliance Auth also needs to be build in such a way that it knows how to prevent these conflicts. Currently only the Discord service has this ability.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Managing groups
|
||||||
|
|
||||||
|
In order to access group management, users need to be either a superuser, granted the `auth | user | group_management ( Access to add members to groups within the alliance )` permission or a group leader (discussed later).
|
||||||
|
|
||||||
|
### Group Requests
|
||||||
|
|
||||||
|
When a user joins or leaves a group which is not marked as "Open", their group request will have to be approved manually by a user with the `group_management` permission or by a group leader of the group they are requesting.
|
||||||
|
|
||||||
|
### Group Membership
|
||||||
|
|
||||||
|
The group membership tab gives an overview of all of the non-internal groups.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### Group Member Management
|
||||||
|
|
||||||
|
Clicking on the blue eye will take you to the group member management screen. Here you can see a list of people who are in the group, and remove members where necessary.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### Group Audit Log
|
||||||
|
|
||||||
|
Whenever a user Joins, Leaves, or is Removed from a group, this is logged. To find the audit log for a given group, click the light-blue button to the right of the Group Member Management (blue eye) button.
|
||||||
|
|
||||||
|
These logs contain the Date and Time the action was taken (in EVE/UTC), the user which submitted the request being acted upon (requestor), the user's main character, the type of request (join, leave or removed), the action taken (accept, reject or remove), and the user that took the action (actor).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Group Leaders
|
||||||
|
|
||||||
|
Group leaders have the same abilities as users with the `group_management` permission, _however_, they will only be able to:
|
||||||
|
|
||||||
|
- Approve requests for groups they are a leader of.
|
||||||
|
- View the Group Membership and Group Members of groups they are leaders of.
|
||||||
|
|
||||||
|
This allows you to more finely control who has access to manage which groups.
|
||||||
|
|
||||||
|
### Auto Leave
|
||||||
|
|
||||||
|
By default in AA, Both requests and leaves for non-open groups must be approved by a group manager. If you wish to allow users to leave groups without requiring approvals, add the following lines to your `local.py`
|
||||||
|
|
||||||
|
```python
|
||||||
|
## Allows users to freely leave groups without requiring approval.
|
||||||
|
AUTO_LEAVE = True
|
||||||
|
```
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
Here is a list of available settings for Group Management. They can be configured by adding them to your AA settings file (``local.py``).
|
||||||
|
Note that all settings are optional and the app will use the documented default settings if they are not used.
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+---------------------------------------------+---------------------------------------------------------------------------+------------+
|
||||||
|
| Name | Description | Default |
|
||||||
|
+=============================================+===========================================================================+============+
|
||||||
|
| ``GROUPMANAGEMENT_REQUESTS_NOTIFICATION`` | Send Auth notifications to all group leaders for join and leave requests. | ``False`` |
|
||||||
|
+---------------------------------------------+---------------------------------------------------------------------------+------------+
|
||||||
|
| ``GROUPMANAGEMENT_AUTO_LEAVE`` | Allows users to freely leave groups without requiring approval.. | ``False`` |
|
||||||
|
+---------------------------------------------+---------------------------------------------------------------------------+------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
## Permissions
|
||||||
|
|
||||||
In order to join a group other than a public group, the permission `groupmanagement.request_groups` (`Can request non-public groups` in the admin panel) must be active on their account, either via a group or directly applied to their User account.
|
In order to join a group other than a public group, the permission `groupmanagement.request_groups` (`Can request non-public groups` in the admin panel) must be active on their account, either via a group or directly applied to their User account.
|
||||||
|
|
||||||
@ -49,11 +123,14 @@ When a user loses this permission, they will be removed from all groups _except_
|
|||||||
By default, the ``groupmanagement.request_groups`` permission is applied to the ``Member`` group. In most instances this, and perhaps adding it to the ``Blue`` group, should be all that is ever needed. It is unsupported and NOT advisable to apply this permission to a public group. See #697 for more information.
|
By default, the ``groupmanagement.request_groups`` permission is applied to the ``Member`` group. In most instances this, and perhaps adding it to the ``Blue`` group, should be all that is ever needed. It is unsupported and NOT advisable to apply this permission to a public group. See #697 for more information.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Auto Leave
|
Group Management should be mostly done using group leaders, a series of permissions are included below for thoroughness:
|
||||||
|
|
||||||
By default in AA, Both requests and leaves for non-open groups must be approved by a group manager. If you wish to allow users to leave groups without requiring approvals, add the following lines to your `local.py`
|
```eval_rst
|
||||||
|
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
||||||
```python
|
| Permission | Admin Site | Auth Site |
|
||||||
## Allows users to freely leave groups without requiring approval.
|
+================================+===================+====================================================================================+
|
||||||
AUTO_LEAVE = True
|
| auth.group_management | None | Can Approve and Deny all Group Requests, Can view and manage all group memberships |
|
||||||
|
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
||||||
|
| groupmanagement.request_groups | None | Can Request Non-Public Groups |
|
||||||
|
+--------------------------------+-------------------+------------------------------------------------------------------------------------+
|
||||||
```
|
```
|
||||||
|
@ -9,7 +9,6 @@ Managing access to applications and services is one of the core functions of **A
|
|||||||
dashboard
|
dashboard
|
||||||
states
|
states
|
||||||
groups
|
groups
|
||||||
groupmanagement
|
|
||||||
analytics
|
analytics
|
||||||
notifications
|
notifications
|
||||||
```
|
```
|
||||||
|
@ -92,6 +92,28 @@ If you want users to have their Discord nickname changed to their in-game charac
|
|||||||
|
|
||||||
Once users link their accounts you’ll notice Roles get populated on Discord. These are the equivalent to groups on every other service. The default permissions should be enough for members to use text and audio communications. Add more permissions to the roles as desired through the server management window.
|
Once users link their accounts you’ll notice Roles get populated on Discord. These are the equivalent to groups on every other service. The default permissions should be enough for members to use text and audio communications. Add more permissions to the roles as desired through the server management window.
|
||||||
|
|
||||||
|
By default Alliance Auth is taking over full control of role assignments on Discord. This means that users on Discord can in general only have roles that correlate to groups on Auth. However, there are two exceptions to this rule.
|
||||||
|
|
||||||
|
### Internal Discord roles
|
||||||
|
|
||||||
|
First, users will keep their so called "Discord managed roles". Those are internal roles created by Discord e.g. for Nitro.
|
||||||
|
|
||||||
|
### Excluding roles from being managed by Auth
|
||||||
|
|
||||||
|
Second, it is possible to exclude Discord roles from being managed by Auth at all. This can be useful if you have other bots on your Discord server that are using their own roles and which would otherwise conflict with Auth. This would also allow you to manage a role manually on Discord if you so chose.
|
||||||
|
|
||||||
|
To exclude roles from being managed by Auth you only have to add them to the list of reserved group names in Group Management.
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
.. note::
|
||||||
|
Role names on Discord are case sensitive, while reserved group names on Auth are not. Therefore reserved group names will cover all roles regardless of their case. For example if you have reserved the group name "alpha", then the Discord roles "alpha" and "Alpha" will both be persisted.
|
||||||
|
```
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
.. seealso::
|
||||||
|
For more information see :ref:`ref-reserved-group-names`.
|
||||||
|
```
|
||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
The Discord service contains a number of tasks that can be run to manually perform updates to all users.
|
The Discord service contains a number of tasks that can be run to manually perform updates to all users.
|
||||||
@ -159,7 +181,7 @@ This indicates your callback URL doesn't match. Ensure the `DISCORD_CALLBACK_URL
|
|||||||
|
|
||||||
### "Add/Remove" Errors in Discord Service
|
### "Add/Remove" Errors in Discord Service
|
||||||
|
|
||||||
If you are recieving errors in your Notifications after verifying that your settings are all correct try the following:
|
If you are receiving errors in your Notifications after verifying that your settings are all correct try the following:
|
||||||
|
|
||||||
- Ensure that the bot's role in Discord is at the top of the roles list. Each time you add it to your server you will need to do this again.
|
- Ensure that the bot's role in Discord is at the top of the roles list. Each time you add it to your server you will need to do this again.
|
||||||
- Make sure that the bot is not trying to modify the Owner of the discord, as it will fail. A holding discord account added with invite link will mitigate this.
|
- Make sure that the bot is not trying to modify the Owner of the discord, as it will fail. A holding discord account added with invite link will mitigate this.
|
||||||
|
@ -13,4 +13,3 @@ celery>5,<6
|
|||||||
celery_once
|
celery_once
|
||||||
passlib
|
passlib
|
||||||
redis>=3.3.1,<4.0.0
|
redis>=3.3.1,<4.0.0
|
||||||
django-nose
|
|
||||||
|
4
setup.py
4
setup.py
@ -22,7 +22,7 @@ install_requires = [
|
|||||||
'celery>=4.3.0,<6.0.0,!=4.4.4', # 4.4.4 is missing a dependency
|
'celery>=4.3.0,<6.0.0,!=4.4.4', # 4.4.4 is missing a dependency
|
||||||
'celery_once>=2.0.1',
|
'celery_once>=2.0.1',
|
||||||
|
|
||||||
'django>=3.2.8,<4.0.0',
|
'django>=3.2.9,<4.0.0',
|
||||||
'django-bootstrap-form',
|
'django-bootstrap-form',
|
||||||
'django-registration>=3.1',
|
'django-registration>=3.1',
|
||||||
'django-sortedm2m',
|
'django-sortedm2m',
|
||||||
@ -39,7 +39,6 @@ install_requires = [
|
|||||||
testing_extras = [
|
testing_extras = [
|
||||||
'coverage>=4.3.1',
|
'coverage>=4.3.1',
|
||||||
'requests-mock>=1.2.0',
|
'requests-mock>=1.2.0',
|
||||||
'django-nose',
|
|
||||||
'django-webtest',
|
'django-webtest',
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -80,6 +79,7 @@ setup(
|
|||||||
'Programming Language :: Python :: 3.7',
|
'Programming Language :: Python :: 3.7',
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
|
'Programming Language :: Python :: 3.10',
|
||||||
'Topic :: Internet :: WWW/HTTP',
|
'Topic :: Internet :: WWW/HTTP',
|
||||||
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
|
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
|
||||||
],
|
],
|
||||||
|
@ -6,15 +6,6 @@ Testing all services and plug-in apps
|
|||||||
|
|
||||||
from allianceauth.project_template.project_name.settings.base import *
|
from allianceauth.project_template.project_name.settings.base import *
|
||||||
|
|
||||||
# Use nose to run all tests
|
|
||||||
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
|
|
||||||
|
|
||||||
NOSE_ARGS = [
|
|
||||||
#'--with-coverage',
|
|
||||||
#'--cover-package=',
|
|
||||||
#'--exe', # If your tests need this to be found/run, check they py files are not chmodded +x
|
|
||||||
]
|
|
||||||
|
|
||||||
# Celery configuration
|
# Celery configuration
|
||||||
CELERY_ALWAYS_EAGER = True # Forces celery to run locally for testing
|
CELERY_ALWAYS_EAGER = True # Forces celery to run locally for testing
|
||||||
|
|
||||||
@ -36,7 +27,6 @@ INSTALLED_APPS += [
|
|||||||
'allianceauth.services.modules.phpbb3',
|
'allianceauth.services.modules.phpbb3',
|
||||||
'allianceauth.services.modules.xenforo',
|
'allianceauth.services.modules.xenforo',
|
||||||
'allianceauth.services.modules.teamspeak3',
|
'allianceauth.services.modules.teamspeak3',
|
||||||
'django_nose',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = 'tests.urls'
|
ROOT_URLCONF = 'tests.urls'
|
||||||
|
@ -6,21 +6,9 @@ Testing core packages only
|
|||||||
|
|
||||||
from allianceauth.project_template.project_name.settings.base import *
|
from allianceauth.project_template.project_name.settings.base import *
|
||||||
|
|
||||||
# Use nose to run all tests
|
|
||||||
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
|
|
||||||
|
|
||||||
NOSE_ARGS = [
|
|
||||||
#'--with-coverage',
|
|
||||||
#'--cover-package=',
|
|
||||||
#'--exe', # If your tests need this to be found/run, check they py files are not chmodded +x
|
|
||||||
]
|
|
||||||
|
|
||||||
# Celery configuration
|
# Celery configuration
|
||||||
CELERY_ALWAYS_EAGER = True # Forces celery to run locally for testing
|
CELERY_ALWAYS_EAGER = True # Forces celery to run locally for testing
|
||||||
|
|
||||||
INSTALLED_APPS += [
|
|
||||||
'django_nose',
|
|
||||||
]
|
|
||||||
|
|
||||||
ROOT_URLCONF = 'tests.urls'
|
ROOT_URLCONF = 'tests.urls'
|
||||||
|
|
||||||
|
7
tox.ini
7
tox.ini
@ -1,7 +1,7 @@
|
|||||||
[tox]
|
[tox]
|
||||||
skipsdist = true
|
skipsdist = true
|
||||||
usedevelop = true
|
usedevelop = true
|
||||||
envlist = py{37,38,39}-{all,core}
|
envlist = py{37,38,39,310}-{all,core}
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
setenv =
|
setenv =
|
||||||
@ -11,11 +11,12 @@ basepython =
|
|||||||
py37: python3.7
|
py37: python3.7
|
||||||
py38: python3.8
|
py38: python3.8
|
||||||
py39: python3.9
|
py39: python3.9
|
||||||
|
py310: python3.10
|
||||||
deps=
|
deps=
|
||||||
coverage
|
coverage
|
||||||
install_command = pip install -e ".[testing]" -U {opts} {packages}
|
install_command = pip install -e ".[testing]" -U {opts} {packages}
|
||||||
commands =
|
commands =
|
||||||
all: coverage run runtests.py -v 2
|
all: coverage run runtests.py -v 2 --debug-mode
|
||||||
core: coverage run runtests.py allianceauth.authentication.tests.test_app_settings -v 2
|
core: coverage run runtests.py allianceauth.authentication.tests.test_app_settings -v 2 --debug-mode
|
||||||
all: coverage report -m
|
all: coverage report -m
|
||||||
all: coverage xml
|
all: coverage xml
|
||||||
|
Loading…
x
Reference in New Issue
Block a user