diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 00000000..3a6bc90f --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,6 @@ +# git config blame.ignoreRevsFile .git-blame-ignore-revs + + + +# Ruff initial formatting storm +a99315ea55339f0b6010b5c9d8703e51278fcf29 diff --git a/.gitignore b/.gitignore index 0ede2ddf..3d0b061c 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ celerybeat-schedule #other .flake8 +.ruff_cache .pylintrc Makefile alliance_auth.sqlite3 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ba0aa5d9..348e31a1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,7 @@ before_script: pre-commit-check: <<: *only-default stage: pre-commit - image: python:3.11-bookworm + image: python:3.12-bookworm # variables: # PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit # cache: @@ -51,30 +51,6 @@ secret_detection: stage: gitlab before_script: [] -test-3.8-core: - <<: *only-default - image: python:3.8-bookworm - script: - - tox -e py38-core - artifacts: - when: always - reports: - coverage_report: - coverage_format: cobertura - path: coverage.xml - -test-3.9-core: - <<: *only-default - image: python:3.9-bookworm - script: - - tox -e py39-core - artifacts: - when: always - reports: - coverage_report: - coverage_format: cobertura - path: coverage.xml - test-3.10-core: <<: *only-default image: python:3.10-bookworm @@ -111,23 +87,11 @@ test-3.12-core: coverage_format: cobertura path: coverage.xml -test-3.8-all: +test-3.13-core: <<: *only-default - image: python:3.8-bookworm + image: python:3.13-rc-bookworm script: - - tox -e py38-all - artifacts: - when: always - reports: - coverage_report: - coverage_format: cobertura - path: coverage.xml - -test-3.9-all: - <<: *only-default - image: python:3.9-bookworm - script: - - tox -e py39-all + - tox -e py313-core artifacts: when: always reports: @@ -172,9 +136,21 @@ test-3.12-all: coverage_format: cobertura path: coverage.xml +test-3.13-all: + <<: *only-default + image: python:3.13-rc-bookworm + script: + - tox -e py313-all + artifacts: + when: always + reports: + coverage_report: + coverage_format: cobertura + path: coverage.xml + build-test: stage: test - image: python:3.11-bookworm + image: python:3.12-bookworm before_script: - python -m pip install --upgrade pip @@ -193,13 +169,13 @@ build-test: test-docs: <<: *only-default - image: python:3.11-bookworm + image: python:3.12-bookworm script: - tox -e docs deploy_production: stage: deploy - image: python:3.11-bookworm + image: python:3.12-bookworm before_script: - python -m pip install --upgrade pip @@ -215,10 +191,10 @@ deploy_production: build-image: before_script: [] - image: docker:24.0 + image: docker:27 stage: docker services: - - docker:24.0-dind + - docker:27-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 @@ -239,10 +215,10 @@ build-image: build-image-dev: before_script: [] - image: docker:24.0 + image: docker:27 stage: docker services: - - docker:24.0-dind + - docker:27-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 @@ -260,10 +236,10 @@ build-image-dev: build-image-mr: before_script: [] - image: docker:24.0 + image: docker:27 stage: docker services: - - docker:24.0-dind + - docker:27-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 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 42400cba..abebc6f7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,22 +3,42 @@ # Update this file: # pre-commit autoupdate +# Set the default language versions for the hooks +default_language_version: + python: python3 # Force all Python hooks to use Python 3 + node: 22.12.0 # Force all Node hooks to use Node 22.12.0 + +# Globally exclude files +# https://pre-commit.com/#top_level-exclude +exclude: | + (?x)( + LICENSE| + allianceauth\/static\/allianceauth\/css\/themes\/bootstrap-locals.less| + \.min\.css| + \.min\.js| + \.po| + \.mo| + swagger\.json| + static/(.*)/libs/| + telnetlib\.py + ) + repos: # Code Upgrades - - repo: https://github.com/asottile/pyupgrade - rev: v3.15.2 - hooks: - - id: pyupgrade - args: [--py38-plus] - repo: https://github.com/adamchainz/django-upgrade - rev: 1.17.0 + rev: 1.25.0 hooks: - id: django-upgrade - args: [--target-version=4.2] + args: [--target-version=5.2] + - repo: https://github.com/asottile/pyupgrade + rev: v3.20.0 + hooks: + - id: pyupgrade + args: [--py310-plus] # Formatting - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: # Identify invalid files - id: check-ast @@ -33,9 +53,9 @@ repos: - id: detect-private-key - id: check-case-conflict # Python checks - # - id: check-docstring-first +# - id: check-docstring-first - id: debug-statements - # - id: requirements-txt-fixer +# - id: requirements-txt-fixer - id: fix-encoding-pragma args: [--remove] - id: fix-byte-order-marker @@ -44,57 +64,34 @@ repos: args: [--fix=lf] - id: trailing-whitespace args: [--markdown-linebreak-ext=md] - exclude: | - (?x)( - \.min\.css| - \.min\.js| - \.po| - \.mo| - swagger\.json - ) - id: check-executables-have-shebangs - id: end-of-file-fixer - exclude: | - (?x)( - \.min\.css| - \.min\.js| - \.po| - \.mo| - swagger\.json - ) - repo: https://github.com/editorconfig-checker/editorconfig-checker.python - rev: 2.7.3 + rev: 3.2.1 hooks: - id: editorconfig-checker - exclude: | - (?x)( - LICENSE| - allianceauth\/static\/allianceauth\/css\/themes\/bootstrap-locals.less| - \.po| - \.mo| - swagger\.json| - \.ice - ) - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.41.0 + rev: v0.45.0 hooks: - id: markdownlint + language: node args: - --disable=MD013 + # Infrastructure - repo: https://github.com/tox-dev/pyproject-fmt - rev: 2.1.3 + rev: v2.6.0 hooks: - id: pyproject-fmt - name: pyproject.toml formatter - description: "Format the pyproject.toml file." args: - --indent=4 additional_dependencies: - - tox==4.15.0 # https://github.com/tox-dev/tox/releases/latest + - tox==4.26.0 # https://github.com/tox-dev/tox/releases/latest + - repo: https://github.com/tox-dev/tox-ini-fmt + rev: 1.5.0 + hooks: + - id: tox-ini-fmt - repo: https://github.com/abravalheri/validate-pyproject - rev: v0.18 + rev: v0.24.1 hooks: - id: validate-pyproject - name: Validate pyproject.toml - description: "Validate the pyproject.toml file." diff --git a/.readthedocs.yml b/.readthedocs.yml index b3b00bfd..34be14fc 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -7,11 +7,11 @@ version: 2 # Set the version of Python and other tools you might need build: - os: ubuntu-22.04 + os: ubuntu-24.04 apt_packages: - redis tools: - python: "3.11" + python: "3.12" jobs: post_system_dependencies: - redis-server --daemonize yes diff --git a/README.md b/README.md index 1b4232ea..31557bc5 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # Alliance Auth -[![license](https://img.shields.io/badge/license-GPLv2-green)](https://pypi.org/project/allianceauth/) -[![python](https://img.shields.io/pypi/pyversions/allianceauth)](https://pypi.org/project/allianceauth/) -[![django](https://img.shields.io/pypi/djversions/allianceauth?label=django)](https://pypi.org/project/allianceauth/) -[![version](https://img.shields.io/pypi/v/allianceauth?label=release)](https://pypi.org/project/allianceauth/) -[![pipeline status](https://gitlab.com/allianceauth/allianceauth/badges/master/pipeline.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master) +[![License](https://img.shields.io/badge/license-GPLv2-green)](https://pypi.org/project/allianceauth/) +[![Python Versions](https://img.shields.io/pypi/pyversions/allianceauth)](https://pypi.org/project/allianceauth/) +[![Django Versions](https://img.shields.io/pypi/djversions/allianceauth?label=django)](https://pypi.org/project/allianceauth/) +[![Stable AA Version](https://img.shields.io/pypi/v/allianceauth?label=release)](https://pypi.org/project/allianceauth/) +[![Pipeline Status](https://gitlab.com/allianceauth/allianceauth/badges/master/pipeline.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master) [![Documentation Status](https://readthedocs.org/projects/allianceauth/badge/?version=latest)](https://allianceauth.readthedocs.io/?badge=latest) -[![coverage report](https://gitlab.com/allianceauth/allianceauth/badges/master/coverage.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master) +[![Test Coverage Report](https://gitlab.com/allianceauth/allianceauth/badges/master/coverage.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master) [![Chat on Discord](https://img.shields.io/discord/399006117012832262.svg)](https://discord.gg/fjnHAmk) -An auth system for EVE Online to help in-game organizations manage online service access. +A flexible authentication platform for EVE Online to help in-game organizations manage access to applications and services. AA provides both, a stable core, and a robust framework for community development and custom applications. ## Content @@ -22,17 +22,17 @@ An auth system for EVE Online to help in-game organizations manage online servic ## Overview -Alliance Auth (AA) is a web site that helps Eve Online organizations efficiently manage access to applications and services. +Alliance Auth (AA) is a platform that helps Eve Online organizations efficiently manage access to applications and services. Main features: -- Automatically grants or revokes user access to external services (e.g. Discord, Mumble) and web apps (e.g. SRP requests) based on the user's current membership to [in-game organizations](https://allianceauth.readthedocs.io/en/latest/features/core/states/) and [groups](https://allianceauth.readthedocs.io/en/latest/features/core/groups/) +- Automatically grants or revokes user access to external services (e.g.: Discord, Mumble) based on the user's current membership to [a variety of EVE Online affiliation](https://allianceauth.readthedocs.io/en/latest/features/core/states/) and [groups](https://allianceauth.readthedocs.io/en/latest/features/core/groups/) - Provides a central web site where users can directly access web apps (e.g. SRP requests, Fleet Schedule) and manage their access to external services and groups. -- Includes a set of connectors (called ["services"](https://allianceauth.readthedocs.io/en/latest/features/services/)) for integrating access management with many popular external applications / services like Discord, Mumble, Teamspeak 3, SMF and others +- Includes a set of connectors (called ["Services"](https://allianceauth.readthedocs.io/en/latest/features/services/)) for integrating access management with many popular external applications / services like Discord, Mumble, Teamspeak 3, SMF and others -- Includes a set of web [apps](https://allianceauth.readthedocs.io/en/latest/features/apps/) which add many useful functions, e.g.: fleet schedule, timer board, SRP request management, fleet activity tracker +- Includes a set of web [Apps](https://allianceauth.readthedocs.io/en/latest/features/apps/) which add many useful functions, e.g.: fleet schedule, timer board, SRP request management, fleet activity tracker - Can be easily extended with additional services and apps. Many are provided by the community and can be found here: [Community Creations](https://gitlab.com/allianceauth/community-creations) @@ -42,9 +42,15 @@ For further details about AA - including an installation guide and a full list o ## Screenshot -Here is an example of the Alliance Auth web site with some plug-ins apps and services enabled: +Here is an example of the Alliance Auth web site with a mixture of Services, Apps and Community Creations enabled: -![screenshot](https://i.imgur.com/2tnX9kD.png) +### Flatly Theme + +![Flatly Theme](docs/_static/images/promotion/SampleInstallation-Flatly.png) + +### Darkly Theme + +![Darkly Theme](docs/_static/images/promotion/SampleInstallation-Darkly.png) ## Support diff --git a/allianceauth/__init__.py b/allianceauth/__init__.py index 77d54c77..1b5e038c 100644 --- a/allianceauth/__init__.py +++ b/allianceauth/__init__.py @@ -5,7 +5,7 @@ manage online service access. # This will make sure the app is always imported when # Django starts so that shared_task will use this app. -__version__ = '4.4.2' -__title__ = 'Alliance Auth' +__version__ = '5.0.0a3' +__title__ = 'AllianceAuth' __url__ = 'https://gitlab.com/allianceauth/allianceauth' NAME = f'{__title__} v{__version__}' diff --git a/allianceauth/admin_status/__init__.py b/allianceauth/admin_status/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/allianceauth/admin_status/admin.py b/allianceauth/admin_status/admin.py new file mode 100644 index 00000000..a6a10970 --- /dev/null +++ b/allianceauth/admin_status/admin.py @@ -0,0 +1,19 @@ +"""Admin site for admin status applicaton""" +from django.contrib import admin + +from allianceauth.admin_status.models import ApplicationAnnouncement + + +@admin.register(ApplicationAnnouncement) +class ApplicationAnnouncementAdmin(admin.ModelAdmin): + list_display = ["application_name", "announcement_number", "announcement_text", "hide_announcement"] + list_filter = ["hide_announcement"] + ordering = ["application_name", "announcement_number"] + readonly_fields = ["application_name", "announcement_number", "announcement_text", "announcement_url"] + fields = ["application_name", "announcement_number", "announcement_text", "announcement_url", "hide_announcement"] + + def has_add_permission(self, request): + return False + + def has_delete_permission(self, request, obj=None): + return False diff --git a/allianceauth/admin_status/apps.py b/allianceauth/admin_status/apps.py new file mode 100644 index 00000000..35f5e6dd --- /dev/null +++ b/allianceauth/admin_status/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AdminStatusApplication(AppConfig): + name = 'allianceauth.admin_status' + label = 'admin_status' diff --git a/allianceauth/admin_status/hooks.py b/allianceauth/admin_status/hooks.py new file mode 100644 index 00000000..fc5ca081 --- /dev/null +++ b/allianceauth/admin_status/hooks.py @@ -0,0 +1,207 @@ +import hashlib +import logging +from dataclasses import dataclass +from enum import Enum +from urllib.parse import quote_plus + +import requests + +from django.core.cache import cache + +from allianceauth.hooks import get_hooks, register + +logger = logging.getLogger(__name__) + +# timeout for all requests +REQUESTS_TIMEOUT = 5 # 5 seconds +# max pages to be fetched from gitlab +MAX_PAGES = 50 +# Cache time +NOTIFICATION_CACHE_TIME = 300 # 5 minutes + + +@dataclass +class Announcement: + """ + Dataclass storing all data for an announcement to be sent arround + """ + application_name: str + announcement_url: str + announcement_number: int + announcement_text: str + + @classmethod + def build_from_gitlab_issue_dict(cls, application_name: str, gitlab_issue: dict) -> "Announcement": + """Builds the announcement from the JSON dict of a GitLab issue""" + return Announcement(application_name, gitlab_issue["web_url"], gitlab_issue["iid"], gitlab_issue["title"]) + + @classmethod + def build_from_github_issue_dict(cls, application_name: str, github_issue: dict) -> "Announcement": + """Builds the announcement from the JSON dict of a GitHub issue""" + return Announcement(application_name, github_issue["html_url"], github_issue["number"], github_issue["title"]) + + def get_hash(self): + """Get a hash of the Announcement for comparison""" + name = f"{self.application_name}.{self.announcement_number}" + hash_value = hashlib.sha256(name.encode("utf-8")).hexdigest() + return hash_value + + +@dataclass +class AppAnnouncementHook: + """ + A hook for an application to send GitHub/GitLab issues as announcements on the dashboard + + Args: + - app_name: The name of your application + - repository_namespace: The namespace of the remote repository of your application source code. + It should look like `/`. + - repository_kind: Enumeration to determine if your repository is a GitHub or GitLab repository. + - label: The label applied to issues that should be seen as announcements, case-sensitive. + Default value: `announcement` + """ + class Service(Enum): + """Simple enumeration to determine which api should be called to access issues""" + GITLAB = "gitlab" + GITHUB = "github" + + app_name: str + repository_namespace: str + repository_kind: Service + label: str = "announcement" + + + def get_announcement_list(self) -> list[Announcement]: + """ + Checks the application repository to find issues with the `Announcement` tag and return their title and link to + be displayed. + """ + logger.debug("Getting announcement list for the app %s", self.app_name) + match self.repository_kind: + case AppAnnouncementHook.Service.GITHUB: + announcement_list = self._get_github_announcement_list() + case AppAnnouncementHook.Service.GITLAB: + announcement_list = self._get_gitlab_announcement_list() + case _: + announcement_list = [] + + logger.debug("Announcements for app %s: %s", self.app_name, announcement_list) + return announcement_list + + def _get_github_announcement_list(self) -> list[Announcement]: + """ + Return the issue list for a GitHub repository + Will filter if the `pull_request` attribute is present + """ + raw_list = _fetch_list_from_github( + f"https://api.github.com/repos/{self.repository_namespace}/issues" + f"?labels={self.label}" + ) + return [Announcement.build_from_github_issue_dict(self.app_name, github_issue) for github_issue in raw_list] + + def _get_gitlab_announcement_list(self) -> list[Announcement]: + """Return the issues list for a GitLab repository""" + raw_list = _fetch_list_from_gitlab( + f"https://gitlab.com/api/v4/projects/{quote_plus(self.repository_namespace)}/issues" + f"?labels={self.label}&state=opened") + return [Announcement.build_from_gitlab_issue_dict(self.app_name, gitlab_issue) for gitlab_issue in raw_list] + +@register("app_announcement_hook") +def alliance_auth_announcements_hook(): + return AppAnnouncementHook("AllianceAuth", "allianceauth/allianceauth", AppAnnouncementHook.Service.GITLAB) + +def get_all_applications_announcements() -> list[Announcement]: + """ + Retrieve all known application announcements and returns them + """ + application_notifications = [] + + hooks = [fn() for fn in get_hooks("app_announcement_hook")] + for hook in hooks: + logger.debug(hook) + try: + application_notifications.extend(cache.get_or_set( + f"{hook.app_name}_notification_issues", + hook.get_announcement_list, + NOTIFICATION_CACHE_TIME, + )) + except requests.HTTPError: + logger.warning("Error when getting %s notifications", hook, exc_info=True) + + logger.debug(application_notifications) + if application_notifications: + application_notifications = application_notifications[:10] + + return application_notifications + + +def _fetch_list_from_gitlab(url: str, max_pages: int = MAX_PAGES) -> list: + """returns a list from the GitLab API. Supports paging""" + result = [] + + for page in range(1, max_pages + 1): + try: + request = requests.get( + url, params={'page': page}, timeout=REQUESTS_TIMEOUT + ) + 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() + + if 'x-total-pages' in request.headers: + try: + total_pages = int(request.headers['x-total-pages']) + except ValueError: + total_pages = None + else: + total_pages = None + + if not total_pages or page >= total_pages: + break + + return result + +def _fetch_list_from_github(url: str, max_pages: int = MAX_PAGES) -> list: + """returns a list from the GitHub API. Supports paging""" + + result = [] + for page in range(1, max_pages+1): + try: + request = requests.get( + url, + params={'page': page}, + headers={ + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28" + }, + timeout=REQUESTS_TIMEOUT, + ) + request.raise_for_status() + except requests.exceptions.RequestException as e: + error_str = str(e) + + logger.warning( + f'Unable to fetch from GitHub API. Error: {error_str}', + exc_info=True, + ) + + return result + + result += request.json() + logger.debug(request.json()) + + # https://docs.github.com/en/rest/using-the-rest-api/using-pagination-in-the-rest-api?apiVersion=2022-11-28 + # See Example creating a pagination method + if not ('link' in request.headers and 'rel=\"next\"' in request.headers['link']): + break + + return result diff --git a/allianceauth/admin_status/managers.py b/allianceauth/admin_status/managers.py new file mode 100644 index 00000000..f445fad2 --- /dev/null +++ b/allianceauth/admin_status/managers.py @@ -0,0 +1,57 @@ +from typing import TYPE_CHECKING + +from django.db import models + +from allianceauth.admin_status.hooks import ( + Announcement, + get_all_applications_announcements, +) +from allianceauth.services.hooks import get_extension_logger + +if TYPE_CHECKING: + from .models import ApplicationAnnouncement + +logger = get_extension_logger(__name__) + +class ApplicationAnnouncementManager(models.Manager): + + def sync_and_return(self): + """ + Checks all hooks if new notifications need to be created. + Return all notification objects after + """ + logger.info("Syncing announcements") + current_announcements = get_all_applications_announcements() + self._delete_obsolete_announcements(current_announcements) + self._store_new_announcements(current_announcements) + + return self.all() + + def _delete_obsolete_announcements(self, current_announcements: list[Announcement]): + """Deletes all announcements stored in the database that aren't retrieved anymore""" + hashes = [announcement.get_hash() for announcement in current_announcements] + self.exclude(announcement_hash__in=hashes).delete() + + def _store_new_announcements(self, current_announcements: list[Announcement]): + """Stores a new database object for new application announcements""" + + for current_announcement in current_announcements: + try: + announcement = self.get(announcement_hash=current_announcement.get_hash()) + except self.model.DoesNotExist: + self.create_from_announcement(current_announcement) + else: + # if exists update the text only + if announcement.announcement_text != current_announcement.announcement_text: + announcement.announcement_text = current_announcement.announcement_text + announcement.save() + + def create_from_announcement(self, announcement: Announcement) -> "ApplicationAnnouncement": + """Creates from the Announcement dataclass""" + return self.create( + application_name=announcement.application_name, + announcement_number=announcement.announcement_number, + announcement_text=announcement.announcement_text, + announcement_url=announcement.announcement_url, + announcement_hash=announcement.get_hash(), + ) diff --git a/allianceauth/admin_status/migrations/0001_initial.py b/allianceauth/admin_status/migrations/0001_initial.py new file mode 100644 index 00000000..f7bcdc26 --- /dev/null +++ b/allianceauth/admin_status/migrations/0001_initial.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.9 on 2025-05-18 15:43 + +import django.db.models.manager +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='ApplicationAnnouncement', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('application_name', models.CharField(help_text='Name of the application that issued the announcement', max_length=50)), + ('announcement_number', models.IntegerField(help_text='Issue number on the notification source')), + ('announcement_text', models.TextField(help_text='Issue title text displayed on the dashboard', max_length=300)), + ('announcement_url', models.TextField(max_length=200)), + ('announcement_hash', models.CharField(default=None, editable=False, help_text='hash of an announcement. Must be nullable for unique comparison.', max_length=64, null=True, unique=True)), + ('hide_announcement', models.BooleanField(default=False, help_text='Set to true if the announcement should not be displayed on the dashboard')), + ], + options={ + 'constraints': [models.UniqueConstraint(fields=('application_name', 'announcement_number'), name='functional_pk_applicationissuenumber')], + }, + managers=[ + ('object', django.db.models.manager.Manager()), + ], + ), + ] diff --git a/allianceauth/admin_status/migrations/__init__.py b/allianceauth/admin_status/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/allianceauth/admin_status/models.py b/allianceauth/admin_status/models.py new file mode 100644 index 00000000..7b048378 --- /dev/null +++ b/allianceauth/admin_status/models.py @@ -0,0 +1,45 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ + +from allianceauth.admin_status.managers import ApplicationAnnouncementManager + + +class ApplicationAnnouncement(models.Model): + """ + Announcement originating from an application + """ + object = ApplicationAnnouncementManager() + + application_name = models.CharField(max_length=50, help_text=_("Name of the application that issued the announcement")) + announcement_number = models.IntegerField(help_text=_("Issue number on the notification source")) + announcement_text = models.TextField(max_length=300, help_text=_("Issue title text displayed on the dashboard")) + announcement_url = models.TextField(max_length=200) + + announcement_hash = models.CharField( + max_length=64, + default=None, + unique=True, + editable=False, + help_text="hash of an announcement." + ) + + hide_announcement = models.BooleanField( + default=False, + help_text=_("Set to true if the announcement should not be displayed on the dashboard") + ) + + class Meta: + # Should be updated to a composite key when the switch to Django 5.2 is made + # https://docs.djangoproject.com/en/5.2/topics/composite-primary-key/ + constraints = [ + models.UniqueConstraint( + fields=["application_name", "announcement_number"], name="functional_pk_applicationissuenumber" + ) + ] + + def __str__(self): + return f"{self.application_name} announcement #{self.announcement_number}" + + def is_hidden(self) -> bool: + """Function in case rules are made in the future to force hide/force show some announcements""" + return self.hide_announcement diff --git a/allianceauth/templates/allianceauth/admin-status/celery_bar_partial.html b/allianceauth/admin_status/templates/admin-status/celery_bar_partial.html similarity index 82% rename from allianceauth/templates/allianceauth/admin-status/celery_bar_partial.html rename to allianceauth/admin_status/templates/admin-status/celery_bar_partial.html index d322bba4..b926917f 100644 --- a/allianceauth/templates/allianceauth/admin-status/celery_bar_partial.html +++ b/allianceauth/admin_status/templates/admin-status/celery_bar_partial.html @@ -2,7 +2,7 @@ {% load admin_status %}
+
- {% translate "Alliance Auth Notifications" as widget_title %} + {% translate "Announcements" as widget_title %} {% include "framework/dashboard/widget-title.html" with title=widget_title %}

@@ -118,6 +114,20 @@

+
diff --git a/allianceauth/admin_status/templatetags/__init__.py b/allianceauth/admin_status/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/allianceauth/templatetags/admin_status.py b/allianceauth/admin_status/templatetags/admin_status.py similarity index 82% rename from allianceauth/templatetags/admin_status.py rename to allianceauth/admin_status/templatetags/admin_status.py index f9f8347b..af1f8f48 100644 --- a/allianceauth/templatetags/admin_status.py +++ b/allianceauth/admin_status/templatetags/admin_status.py @@ -8,6 +8,7 @@ from django.conf import settings from django.core.cache import cache from allianceauth import __version__ +from allianceauth.admin_status.models import ApplicationAnnouncement from allianceauth.authentication.task_statistics.counters import ( dashboard_results, ) @@ -25,10 +26,6 @@ MAX_PAGES = 50 GITLAB_AUTH_REPOSITORY_TAGS_URL = ( 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth/repository/tags' ) -GITLAB_AUTH_ANNOUNCEMENT_ISSUES_URL = ( - 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth/issues' - '?labels=announcement&state=opened' -) logger = logging.getLogger(__name__) @@ -41,10 +38,10 @@ def decimal_widthratio(this_value, max_value, max_width) -> str: return str(round(this_value / max_value * max_width, 2)) -@register.inclusion_tag('allianceauth/admin-status/overview.html') +@register.inclusion_tag('admin-status/overview.html') def status_overview() -> dict: response = { - "notifications": list(), + "notifications": [], "current_version": __version__, "tasks_succeeded": 0, "tasks_retried": 0, @@ -73,32 +70,15 @@ def _celery_stats() -> dict: def _current_notifications() -> dict: - """returns the newest 5 announcement issues""" - try: - notifications = cache.get_or_set( - 'gitlab_notification_issues', - _fetch_notification_issues_from_gitlab, - NOTIFICATION_CACHE_TIME - ) - except requests.HTTPError: - logger.warning('Error while getting gitlab notifications', exc_info=True) - top_notifications = [] - else: - if notifications: - top_notifications = notifications[:5] - else: - top_notifications = [] + """returns announcements from AllianceAuth and third party applications""" + + application_notifications = ApplicationAnnouncement.object.sync_and_return() response = { - 'notifications': top_notifications, + 'notifications': application_notifications, } return response - -def _fetch_notification_issues_from_gitlab() -> list: - return _fetch_list_from_gitlab(GITLAB_AUTH_ANNOUNCEMENT_ISSUES_URL, max_pages=10) - - def _current_version_summary() -> dict: """returns the current version info""" try: @@ -144,8 +124,8 @@ def _latests_versions(tags: list) -> tuple: Non-compliant tags will be ignored """ - versions = list() - betas = list() + versions = [] + betas = [] for tag in tags: try: version = Pep440Version(tag.get('name')) @@ -167,7 +147,7 @@ def _latests_versions(tags: list) -> tuple: def _fetch_list_from_gitlab(url: str, max_pages: int = MAX_PAGES) -> list: """returns a list from the GitLab API. Supports paging""" - result = list() + result = [] for page in range(1, max_pages + 1): try: diff --git a/allianceauth/admin_status/tests/__init__.py b/allianceauth/admin_status/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/allianceauth/admin_status/tests/test_hooks.py b/allianceauth/admin_status/tests/test_hooks.py new file mode 100644 index 00000000..5a1ab8fd --- /dev/null +++ b/allianceauth/admin_status/tests/test_hooks.py @@ -0,0 +1,194 @@ +import requests_mock + +from allianceauth.admin_status.hooks import Announcement +from allianceauth.services.hooks import AppAnnouncementHook +from allianceauth.utils.testing import NoSocketsTestCase + + +class TestHooks(NoSocketsTestCase): + + @requests_mock.mock() + def test_fetch_gitlab(self, requests_mocker): + # given + announcement_hook = AppAnnouncementHook("test GitLab app", "r0kym/allianceauth-example-plugin", + AppAnnouncementHook.Service.GITLAB) + requests_mocker.get( + "https://gitlab.com/api/v4/projects/r0kym%2Fallianceauth-example-plugin/issues?labels=announcement&state=opened", + json=[ + { + "id": 166279127, + "iid": 1, + "project_id": 67653102, + "title": "Test GitLab issue", + "description": "Test issue", + "state": "opened", + "created_at": "2025-04-20T21:26:57.914Z", + "updated_at": "2025-04-21T11:04:30.501Z", + "closed_at": None, + "closed_by": None, + "labels": [ + "announcement" + ], + "milestone": None, + "assignees": [], + "author": { + "id": 14491514, + "username": "r0kym", + "public_email": "", + "name": "T'rahk Rokym", + "state": "active", + "locked": False, + "avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/14491514/avatar.png", + "web_url": "https://gitlab.com/r0kym" + }, + "type": "ISSUE", + "assignee": None, + "user_notes_count": 0, + "merge_requests_count": 0, + "upvotes": 0, + "downvotes": 0, + "due_date": None, + "confidential": False, + "discussion_locked": None, + "issue_type": "issue", + "web_url": "https://gitlab.com/r0kym/allianceauth-example-plugin/-/issues/1", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None + }, + "task_completion_status": { + "count": 0, + "completed_count": 0 + }, + "blocking_issues_count": 0, + "has_tasks": True, + "task_status": "0 of 0 checklist items completed", + "_links": { + "self": "https://gitlab.com/api/v4/projects/67653102/issues/1", + "notes": "https://gitlab.com/api/v4/projects/67653102/issues/1/notes", + "award_emoji": "https://gitlab.com/api/v4/projects/67653102/issues/1/award_emoji", + "project": "https://gitlab.com/api/v4/projects/67653102", + "closed_as_duplicate_of": None + }, + "references": { + "short": "#1", + "relative": "#1", + "full": "r0kym/allianceauth-example-plugin#1" + }, + "severity": "UNKNOWN", + "moved_to_id": None, + "imported": False, + "imported_from": "none", + "service_desk_reply_to": None + } + ] + ) + # when + announcements = announcement_hook.get_announcement_list() + # then + self.assertEqual(len(announcements), 1) + self.assertIn(Announcement( + application_name="test GitLab app", + announcement_url="https://gitlab.com/r0kym/allianceauth-example-plugin/-/issues/1", + announcement_number=1, + announcement_text="Test GitLab issue" + ), announcements) + + @requests_mock.mock() + def test_fetch_github(self, requests_mocker): + # given + announcement_hook = AppAnnouncementHook("test GitHub app", "r0kym/test", AppAnnouncementHook.Service.GITHUB) + requests_mocker.get( + "https://api.github.com/repos/r0kym/test/issues?labels=announcement", + json=[ + { + "url": "https://api.github.com/repos/r0kym/test/issues/1", + "repository_url": "https://api.github.com/repos/r0kym/test", + "labels_url": "https://api.github.com/repos/r0kym/test/issues/1/labels{/name}", + "comments_url": "https://api.github.com/repos/r0kym/test/issues/1/comments", + "events_url": "https://api.github.com/repos/r0kym/test/issues/1/events", + "html_url": "https://github.com/r0kym/test/issues/1", + "id": 3007269496, + "node_id": "I_kwDOOc2YvM6zP0p4", + "number": 1, + "title": "GitHub issue", + "user": { + "login": "r0kym", + "id": 56434393, + "node_id": "MDQ6VXNlcjU2NDM0Mzkz", + "avatar_url": "https://avatars.githubusercontent.com/u/56434393?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/r0kym", + "html_url": "https://github.com/r0kym", + "followers_url": "https://api.github.com/users/r0kym/followers", + "following_url": "https://api.github.com/users/r0kym/following{/other_user}", + "gists_url": "https://api.github.com/users/r0kym/gists{/gist_id}", + "starred_url": "https://api.github.com/users/r0kym/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/r0kym/subscriptions", + "organizations_url": "https://api.github.com/users/r0kym/orgs", + "repos_url": "https://api.github.com/users/r0kym/repos", + "events_url": "https://api.github.com/users/r0kym/events{/privacy}", + "received_events_url": "https://api.github.com/users/r0kym/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": False + }, + "labels": [ + { + "id": 8487814480, + "node_id": "LA_kwDOOc2YvM8AAAAB-enFUA", + "url": "https://api.github.com/repos/r0kym/test/labels/announcement", + "name": "announcement", + "color": "aaaaaa", + "default": False, + "description": None + } + ], + "state": "open", + "locked": False, + "assignee": None, + "assignees": [], + "milestone": None, + "comments": 0, + "created_at": "2025-04-20T22:41:10Z", + "updated_at": "2025-04-21T11:05:08Z", + "closed_at": None, + "author_association": "OWNER", + "active_lock_reason": None, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "body": None, + "closed_by": None, + "reactions": { + "url": "https://api.github.com/repos/r0kym/test/issues/1/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/r0kym/test/issues/1/timeline", + "performed_via_github_app": None, + "state_reason": None + } + ] + ) + # when + announcements = announcement_hook.get_announcement_list() + # then + self.assertEqual(len(announcements), 1) + self.assertIn(Announcement( + application_name="test GitHub app", + announcement_url="https://github.com/r0kym/test/issues/1", + announcement_number=1, + announcement_text="GitHub issue" + ), announcements) diff --git a/allianceauth/admin_status/tests/test_managers.py b/allianceauth/admin_status/tests/test_managers.py new file mode 100644 index 00000000..9735e00d --- /dev/null +++ b/allianceauth/admin_status/tests/test_managers.py @@ -0,0 +1,75 @@ +from unittest.mock import patch + +from allianceauth.admin_status.hooks import Announcement +from allianceauth.admin_status.models import ApplicationAnnouncement +from allianceauth.utils.testing import NoSocketsTestCase + +MODULE_PATH = 'allianceauth.admin_status.managers' + +DEFAULT_ANNOUNCEMENTS = [ + Announcement( + application_name="Test GitHub Application", + announcement_number=1, + announcement_text="GitHub issue", + announcement_url="https://github.com/r0kym/test/issues/1", + ), + Announcement( + application_name="Test Gitlab Application", + announcement_number=1, + announcement_text="GitLab issue", + announcement_url="https://gitlab.com/r0kym/allianceauth-example-plugin/-/issues/1", + ) +] + +class TestSyncManager(NoSocketsTestCase): + + def setUp(self): + ApplicationAnnouncement.object.create( + application_name="Test GitHub Application", + announcement_number=1, + announcement_text="GitHub issue", + announcement_url="https://github.com/r0kym/test/issues/1", + announcement_hash="9dbedb9c47529bb43cfecb704768a35d085b145930e13cced981623e5f162a85", + ) + ApplicationAnnouncement.object.create( + application_name="Test Gitlab Application", + announcement_number=1, + announcement_text="GitLab issue", + announcement_url="https://gitlab.com/r0kym/allianceauth-example-plugin/-/issues/1", + announcement_hash="8955a9c12a1cfa9e1776662bdaf111147b84e35c79f24bfb758e35333a18b1bd", + ) + + @patch(MODULE_PATH + '.get_all_applications_announcements') + def test_announcements_stay_as_is(self, all_announcements_mocker): + # given + announcement_ids = set(ApplicationAnnouncement.object.values_list("id", flat=True)) + all_announcements_mocker.return_value = DEFAULT_ANNOUNCEMENTS + # when + ApplicationAnnouncement.object.sync_and_return() + # then + self.assertEqual(ApplicationAnnouncement.object.count(), 2) + self.assertEqual(set(ApplicationAnnouncement.object.values_list("id", flat=True)), announcement_ids) + + @patch(MODULE_PATH + '.get_all_applications_announcements') + def test_announcement_add(self, all_announcements_mocker): + # given + returned_announcements = DEFAULT_ANNOUNCEMENTS + [Announcement(application_name="Test Application", announcement_number=1, announcement_text="New test announcement", announcement_url="https://example.com")] + all_announcements_mocker.return_value = returned_announcements + # when + ApplicationAnnouncement.object.sync_and_return() + # then + self.assertEqual(ApplicationAnnouncement.object.count(), 3) + self.assertTrue(ApplicationAnnouncement.object.filter(application_name="Test Application", announcement_number=1, announcement_text="New test announcement", announcement_url="https://example.com")) + + @patch(MODULE_PATH + '.get_all_applications_announcements') + def test_announcement_remove(self, all_announcements_mocker): + # given + all_announcements_mocker.return_value = DEFAULT_ANNOUNCEMENTS + ApplicationAnnouncement.object.sync_and_return() + self.assertEqual(ApplicationAnnouncement.object.count(), 2) + all_announcements_mocker.return_value = DEFAULT_ANNOUNCEMENTS[:1] + # when + ApplicationAnnouncement.object.sync_and_return() + # then + self.assertEqual(ApplicationAnnouncement.object.count(), 1) + self.assertTrue(ApplicationAnnouncement.object.filter(application_name="Test GitHub Application").exists()) diff --git a/allianceauth/authentication/tests/test_templatetags.py b/allianceauth/admin_status/tests/test_templatetags.py similarity index 79% rename from allianceauth/authentication/tests/test_templatetags.py rename to allianceauth/admin_status/tests/test_templatetags.py index 450da33e..9f5d6234 100644 --- a/allianceauth/authentication/tests/test_templatetags.py +++ b/allianceauth/admin_status/tests/test_templatetags.py @@ -8,19 +8,61 @@ from packaging.version import Version as Pep440Version from django.core.cache import cache from django.test import TestCase -from allianceauth.templatetags.admin_status import ( - _current_notifications, _current_version_summary, _fetch_list_from_gitlab, - _fetch_notification_issues_from_gitlab, _latests_versions, status_overview, +from allianceauth.admin_status.models import ApplicationAnnouncement +from allianceauth.admin_status.templatetags.admin_status import ( + _current_notifications, + _current_version_summary, + _fetch_list_from_gitlab, + _latests_versions, + status_overview, ) -MODULE_PATH = 'allianceauth.templatetags' +MODULE_PATH = 'allianceauth.admin_status.templatetags' def create_tags_list(tag_names: list): return [{'name': str(tag_name)} for tag_name in tag_names] +def get_app_announcement_as_dict(app_announcement: ApplicationAnnouncement) -> dict: + """Transforms an app announcement object in a dict easy to compare""" + return { + "application_name": app_announcement.application_name, + "announcement_number": app_announcement.announcement_number, + "announcement_text": app_announcement.announcement_text, + "announcement_url": app_announcement.announcement_url, + } + GITHUB_TAGS = create_tags_list(['v2.4.6a1', 'v2.4.5', 'v2.4.0', 'v2.0.0', 'v1.1.1']) +STORED_NOTIFICATIONS = [ + ApplicationAnnouncement( + application_name="Test GitHub Application", + announcement_number=1, + announcement_text="GitHub issue", + announcement_url="https://github.com/r0kym/test/issues/1", + announcement_hash="hash1", + ), + ApplicationAnnouncement( + application_name="Test Gitlab Application", + announcement_number=1, + announcement_text="GitLab issue", + announcement_url="https://gitlab.com/r0kym/allianceauth-example-plugin/-/issues/1", + announcement_hash="hash2", + ), +] +ANNOUNCEMENT_DICT = [ + { + "application_name": "Test GitHub Application", + "announcement_number": 1, + "announcement_text": "GitHub issue", + "announcement_url": "https://github.com/r0kym/test/issues/1", + }, { + "application_name": "Test Gitlab Application", + "announcement_number": 1, + "announcement_text": "GitLab issue", + "announcement_url": "https://gitlab.com/r0kym/allianceauth-example-plugin/-/issues/1", + } +] GITHUB_NOTIFICATION_ISSUES = [ { 'id': 1, @@ -48,6 +90,10 @@ GITHUB_NOTIFICATION_ISSUES = [ }, ] TEST_VERSION = '2.6.5' +GITLAB_AUTH_ANNOUNCEMENT_ISSUES_URL = ( + 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth/issues' + '?labels=announcement&state=opened' +) class TestStatusOverviewTag(TestCase): @@ -103,18 +149,19 @@ class TestNotifications(TestCase): ) requests_mocker.get(url, json=GITHUB_NOTIFICATION_ISSUES) # when - result = _fetch_notification_issues_from_gitlab() + result = _fetch_list_from_gitlab(GITLAB_AUTH_ANNOUNCEMENT_ISSUES_URL, 10) # then self.assertEqual(result, GITHUB_NOTIFICATION_ISSUES) - @patch(MODULE_PATH + '.admin_status.cache') - def test_current_notifications_normal(self, mock_cache): + @patch(MODULE_PATH + '.admin_status.ApplicationAnnouncement') + def test_current_notifications_normal(self, mock_application_announcement): # given - mock_cache.get_or_set.return_value = GITHUB_NOTIFICATION_ISSUES + mock_application_announcement.object.sync_and_return.return_value = STORED_NOTIFICATIONS # when result = _current_notifications() # then - self.assertEqual(result['notifications'], GITHUB_NOTIFICATION_ISSUES[:5]) + for notification in result["notifications"]: + self.assertIn(get_app_announcement_as_dict(notification), ANNOUNCEMENT_DICT) @requests_mock.mock() def test_current_notifications_failed(self, requests_mocker): @@ -127,16 +174,7 @@ class TestNotifications(TestCase): # when result = _current_notifications() # then - self.assertEqual(result['notifications'], list()) - - @patch(MODULE_PATH + '.admin_status.cache') - def test_current_notifications_is_none(self, mock_cache): - # given - mock_cache.get_or_set.return_value = None - # when - result = _current_notifications() - # then - self.assertEqual(result['notifications'], list()) + self.assertEqual(list(result['notifications']), []) class TestCeleryQueueLength(TestCase): diff --git a/allianceauth/analytics/admin.py b/allianceauth/analytics/admin.py index 383bbbe2..a60ea3b8 100644 --- a/allianceauth/analytics/admin.py +++ b/allianceauth/analytics/admin.py @@ -1,15 +1,17 @@ +from solo.admin import SingletonModelAdmin + from django.contrib import admin from .models import AnalyticsIdentifier, AnalyticsTokens @admin.register(AnalyticsIdentifier) -class AnalyticsIdentifierAdmin(admin.ModelAdmin): +class AnalyticsIdentifierAdmin(SingletonModelAdmin): search_fields = ['identifier', ] - list_display = ('identifier',) + list_display = ['identifier', ] @admin.register(AnalyticsTokens) class AnalyticsTokensAdmin(admin.ModelAdmin): search_fields = ['name', ] - list_display = ('name', 'type',) + list_display = ['name', 'type', ] diff --git a/allianceauth/analytics/apps.py b/allianceauth/analytics/apps.py index 3f1c20f8..1a07e15d 100644 --- a/allianceauth/analytics/apps.py +++ b/allianceauth/analytics/apps.py @@ -1,6 +1,8 @@ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class AnalyticsConfig(AppConfig): name = 'allianceauth.analytics' label = 'analytics' + verbose_name = _('Analytics') diff --git a/allianceauth/analytics/migrations/0001_initial.py b/allianceauth/analytics/migrations/0001_initial.py index c5a1f33a..e6385469 100644 --- a/allianceauth/analytics/migrations/0001_initial.py +++ b/allianceauth/analytics/migrations/0001_initial.py @@ -1,8 +1,9 @@ # Generated by Django 3.1.4 on 2020-12-30 13:11 -from django.db import migrations, models import uuid +from django.db import migrations, models + class Migration(migrations.Migration): diff --git a/allianceauth/analytics/migrations/0002_add_AA_Team_Token.py b/allianceauth/analytics/migrations/0002_add_AA_Team_Token.py index 13071b8a..4acb725f 100644 --- a/allianceauth/analytics/migrations/0002_add_AA_Team_Token.py +++ b/allianceauth/analytics/migrations/0002_add_AA_Team_Token.py @@ -21,7 +21,7 @@ def remove_aa_team_token(apps, schema_editor): # Have to define some code to remove this identifier # In case of migration rollback? Tokens = apps.get_model('analytics', 'AnalyticsTokens') - token = Tokens.objects.filter(token="UA-186249766-2").delete() + Tokens.objects.filter(token="UA-186249766-2").delete() class Migration(migrations.Migration): diff --git a/allianceauth/analytics/migrations/0003_Generate_Identifier.py b/allianceauth/analytics/migrations/0003_Generate_Identifier.py index 5c4daba8..08df9ca8 100644 --- a/allianceauth/analytics/migrations/0003_Generate_Identifier.py +++ b/allianceauth/analytics/migrations/0003_Generate_Identifier.py @@ -1,6 +1,5 @@ # Generated by Django 3.1.4 on 2020-12-30 08:53 -from uuid import uuid4 from django.db import migrations diff --git a/allianceauth/analytics/migrations/0008_add_AA_GA-4_Team_Token .py b/allianceauth/analytics/migrations/0008_add_AA_GA-4_Team_Token .py index efc816ac..db7e8afd 100644 --- a/allianceauth/analytics/migrations/0008_add_AA_GA-4_Team_Token .py +++ b/allianceauth/analytics/migrations/0008_add_AA_GA-4_Team_Token .py @@ -1,7 +1,7 @@ # Generated by Django 3.1.4 on 2020-12-30 08:53 -from django.db import migrations from django.core.exceptions import ObjectDoesNotExist +from django.db import migrations def add_aa_team_token(apps, schema_editor): @@ -51,7 +51,7 @@ def remove_aa_team_token(apps, schema_editor): # Have to define some code to remove this identifier # In case of migration rollback? Tokens = apps.get_model('analytics', 'AnalyticsTokens') - token = Tokens.objects.filter(token="G-6LYSMYK8DE").delete() + Tokens.objects.filter(token="G-6LYSMYK8DE").delete() class Migration(migrations.Migration): diff --git a/allianceauth/analytics/migrations/0010_alter_analyticsidentifier_options.py b/allianceauth/analytics/migrations/0010_alter_analyticsidentifier_options.py new file mode 100644 index 00000000..7c1993e9 --- /dev/null +++ b/allianceauth/analytics/migrations/0010_alter_analyticsidentifier_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.16 on 2024-12-11 02:17 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('analytics', '0009_remove_analyticstokens_ignore_paths_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='analyticsidentifier', + options={'verbose_name': 'Analytics Identifier'}, + ), + ] diff --git a/allianceauth/analytics/migrations/0011_v5squash.py b/allianceauth/analytics/migrations/0011_v5squash.py new file mode 100644 index 00000000..e8ac54b5 --- /dev/null +++ b/allianceauth/analytics/migrations/0011_v5squash.py @@ -0,0 +1,56 @@ +# Generated by Django 5.1.6 on 2025-03-04 01:03 + +# This was built by Deleting Every Migration, Creating one from scratch +# And porting in anything necessary + +import uuid + +from django.db import migrations, models + + +def add_aa_team_token(apps, schema_editor): + Tokens = apps.get_model('analytics', 'AnalyticsTokens') + token = Tokens() + + token.type = 'GA-V4' + token.token = 'G-6LYSMYK8DE' + token.secret = 'KLlpjLZ-SRGozS5f5wb_kw' + token.name = 'AA Team Public Google Analytics (V4)' + token.save() + + +class Migration(migrations.Migration): + + replaces = [('analytics', '0001_initial'), ('analytics', '0002_add_AA_Team_Token'), ('analytics', '0003_Generate_Identifier'), ('analytics', '0004_auto_20211015_0502'), ('analytics', '0005_alter_analyticspath_ignore_path'), ('analytics', '0006_more_ignore_paths'), ('analytics', '0007_analyticstokens_secret'), ('analytics', '0008_add_AA_GA-4_Team_Token '), ('analytics', '0009_remove_analyticstokens_ignore_paths_and_more'), ('analytics', '0010_alter_analyticsidentifier_options')] + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='AnalyticsIdentifier', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('identifier', models.UUIDField(default=uuid.uuid4, editable=False)), + ], + options={ + 'verbose_name': 'Analytics Identifier', + }, + ), + migrations.CreateModel( + name='AnalyticsTokens', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=254)), + ('type', models.CharField(choices=[('GA-U', 'Google Analytics Universal'), ('GA-V4', 'Google Analytics V4')], max_length=254)), + ('token', models.CharField(max_length=254)), + ('secret', models.CharField(blank=True, max_length=254)), + ('send_stats', models.BooleanField(default=False)), + ], + ), + migrations.RunPython( + add_aa_team_token + ), + ] diff --git a/allianceauth/analytics/models.py b/allianceauth/analytics/models.py index ddee495a..64bbcc28 100644 --- a/allianceauth/analytics/models.py +++ b/allianceauth/analytics/models.py @@ -1,23 +1,21 @@ -from django.db import models -from django.core.exceptions import ValidationError -from django.utils.translation import gettext_lazy as _ - +from typing import Literal from uuid import uuid4 +from solo.models import SingletonModel -class AnalyticsIdentifier(models.Model): +from django.db import models +from django.utils.translation import gettext_lazy as _ - identifier = models.UUIDField( - default=uuid4, - editable=False) - def save(self, *args, **kwargs): - if not self.pk and AnalyticsIdentifier.objects.exists(): - # Force a single object - raise ValidationError('There is can be only one \ - AnalyticsIdentifier instance') - self.pk = self.id = 1 # If this happens to be deleted and recreated, force it to be 1 - return super().save(*args, **kwargs) +class AnalyticsIdentifier(SingletonModel): + + identifier = models.UUIDField(default=uuid4, editable=False) + + def __str__(self) -> Literal['Analytics Identifier']: + return "Analytics Identifier" + + class Meta: + verbose_name = "Analytics Identifier" class AnalyticsTokens(models.Model): @@ -31,3 +29,6 @@ class AnalyticsTokens(models.Model): token = models.CharField(max_length=254, blank=False) secret = models.CharField(max_length=254, blank=True) send_stats = models.BooleanField(default=False) + + def __str__(self) -> str: + return self.name diff --git a/allianceauth/analytics/tasks.py b/allianceauth/analytics/tasks.py index cc9ef160..2b2646f4 100644 --- a/allianceauth/analytics/tasks.py +++ b/allianceauth/analytics/tasks.py @@ -1,16 +1,16 @@ -import requests import logging -from django.conf import settings -from django.apps import apps + +import requests from celery import shared_task -from .models import AnalyticsTokens, AnalyticsIdentifier -from .utils import ( - install_stat_addons, - install_stat_tokens, - install_stat_users) + +from django.apps import apps +from django.conf import settings from allianceauth import __version__ +from .models import AnalyticsIdentifier, AnalyticsTokens +from .utils import existence_baremetal_or_docker, install_stat_addons, install_stat_tokens, install_stat_users + logger = logging.getLogger(__name__) BASE_URL = "https://www.google-analytics.com" @@ -67,8 +67,8 @@ def analytics_event(namespace: str, value=value).apply_async(priority=9) -@shared_task() -def analytics_daily_stats(): +@shared_task +def analytics_daily_stats() -> None: """Celery Task: Do not call directly Gathers a series of daily statistics @@ -77,6 +77,7 @@ def analytics_daily_stats(): users = install_stat_users() tokens = install_stat_tokens() addons = install_stat_addons() + existence_type = existence_baremetal_or_docker() logger.debug("Running Daily Analytics Upload") analytics_event(namespace='allianceauth.analytics', @@ -84,6 +85,11 @@ def analytics_daily_stats(): label='existence', value=1, event_type='Stats') + analytics_event(namespace='allianceauth.analytics', + task='send_install_stats', + label=existence_type, + value=1, + event_type='Stats') analytics_event(namespace='allianceauth.analytics', task='send_install_stats', label='users', @@ -99,7 +105,6 @@ def analytics_daily_stats(): label='addons', value=addons, event_type='Stats') - for appconfig in apps.get_app_configs(): if appconfig.label in [ "django_celery_beat", @@ -135,7 +140,7 @@ def analytics_daily_stats(): event_type='Stats') -@shared_task() +@shared_task def send_ga_tracking_celery_event( measurement_id: str, secret: str, @@ -165,7 +170,7 @@ def send_ga_tracking_celery_event( } payload = { - 'client_id': AnalyticsIdentifier.objects.get(id=1).identifier.hex, + 'client_id': AnalyticsIdentifier.get_solo().identifier.hex, "user_properties": { "allianceauth_version": { "value": __version__ diff --git a/allianceauth/analytics/tests/test_models.py b/allianceauth/analytics/tests/test_models.py index 452c4eaa..8c06f3fa 100644 --- a/allianceauth/analytics/tests/test_models.py +++ b/allianceauth/analytics/tests/test_models.py @@ -1,10 +1,8 @@ -from allianceauth.analytics.models import AnalyticsIdentifier -from django.core.exceptions import ValidationError +from uuid import uuid4 from django.test.testcases import TestCase -from uuid import UUID, uuid4 - +from allianceauth.analytics.models import AnalyticsIdentifier # Identifiers uuid_1 = "ab33e241fbf042b6aa77c7655a768af7" @@ -14,14 +12,4 @@ uuid_2 = "7aa6bd70701f44729af5e3095ff4b55c" class TestAnalyticsIdentifier(TestCase): def test_identifier_random(self): - self.assertNotEqual(AnalyticsIdentifier.objects.get(), uuid4) - - def test_identifier_singular(self): - AnalyticsIdentifier.objects.all().delete() - AnalyticsIdentifier.objects.create(identifier=uuid_1) - # Yeah i have multiple asserts here, they all do the same thing - with self.assertRaises(ValidationError): - AnalyticsIdentifier.objects.create(identifier=uuid_2) - self.assertEqual(AnalyticsIdentifier.objects.count(), 1) - self.assertEqual(AnalyticsIdentifier.objects.get( - pk=1).identifier, UUID(uuid_1)) + self.assertNotEqual(AnalyticsIdentifier.get_solo(), uuid4) diff --git a/allianceauth/analytics/tests/test_tasks.py b/allianceauth/analytics/tests/test_tasks.py index 0a542e23..08a5676a 100644 --- a/allianceauth/analytics/tests/test_tasks.py +++ b/allianceauth/analytics/tests/test_tasks.py @@ -2,12 +2,9 @@ import requests_mock from django.test.utils import override_settings -from allianceauth.analytics.tasks import ( - analytics_event, - send_ga_tracking_celery_event) +from allianceauth.analytics.tasks import analytics_event, send_ga_tracking_celery_event from allianceauth.utils.testing import NoSocketsTestCase - GOOGLE_ANALYTICS_DEBUG_URL = 'https://www.google-analytics.com/debug/mp/collect' diff --git a/allianceauth/analytics/tests/test_utils.py b/allianceauth/analytics/tests/test_utils.py index b9a22329..838513d8 100644 --- a/allianceauth/analytics/tests/test_utils.py +++ b/allianceauth/analytics/tests/test_utils.py @@ -1,10 +1,9 @@ from django.apps import apps -from allianceauth.authentication.models import User -from esi.models import Token -from allianceauth.analytics.utils import install_stat_users, install_stat_tokens, install_stat_addons - from django.test.testcases import TestCase +from allianceauth.analytics.utils import install_stat_addons, install_stat_users +from allianceauth.authentication.models import User + def create_testdata(): User.objects.all().delete() diff --git a/allianceauth/analytics/utils.py b/allianceauth/analytics/utils.py index e8c57927..b2e3967d 100644 --- a/allianceauth/analytics/utils.py +++ b/allianceauth/analytics/utils.py @@ -1,7 +1,11 @@ +import os + from django.apps import apps -from allianceauth.authentication.models import User + from esi.models import Token +from allianceauth.authentication.models import User + def install_stat_users() -> int: """Count and Return the number of User accounts @@ -34,3 +38,16 @@ def install_stat_addons() -> int: The Number of Installed Apps""" addons = len(list(apps.get_app_configs())) return addons + + +def existence_baremetal_or_docker() -> str: + """Checks the Installation Type of an install + + Returns + ------- + str + existence_baremetal or existence_docker""" + docker_tag = os.getenv('AA_DOCKER_TAG') + if docker_tag: + return "existence_docker" + return "existence_baremetal" diff --git a/allianceauth/apps.py b/allianceauth/apps.py index 098f50ba..1191fed9 100644 --- a/allianceauth/apps.py +++ b/allianceauth/apps.py @@ -1,5 +1,4 @@ from django.apps import AppConfig -from django.core.checks import Warning, Error, register class AllianceAuthConfig(AppConfig): diff --git a/allianceauth/authentication/admin.py b/allianceauth/authentication/admin.py index 6da117e2..9729e200 100644 --- a/allianceauth/authentication/admin.py +++ b/allianceauth/authentication/admin.py @@ -1,43 +1,21 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin -from django.contrib.auth.models import Group -from django.contrib.auth.models import Permission as BasePermission -from django.contrib.auth.models import User as BaseUser +from django.contrib.auth.models import Group, Permission as BasePermission, User as BaseUser from django.db.models import Count, Q from django.db.models.functions import Lower -from django.db.models.signals import ( - m2m_changed, - post_delete, - post_save, - pre_delete, - pre_save -) +from django.db.models.signals import m2m_changed, post_delete, post_save, pre_delete, pre_save from django.dispatch import receiver from django.urls import reverse from django.utils.html import format_html from django.utils.text import slugify -from allianceauth.authentication.models import ( - CharacterOwnership, - OwnershipRecord, - State, - UserProfile, - get_guest_state -) -from allianceauth.eveonline.models import ( - EveAllianceInfo, - EveCharacter, - EveCorporationInfo, - EveFactionInfo -) +from allianceauth.authentication.models import CharacterOwnership, OwnershipRecord, State, UserProfile, get_guest_state +from allianceauth.eveonline.models import EveAllianceInfo, EveCharacter, EveCorporationInfo, EveFactionInfo from allianceauth.eveonline.tasks import update_character from allianceauth.hooks import get_hooks from allianceauth.services.hooks import ServicesHook -from .app_settings import ( - AUTHENTICATION_ADMIN_USERS_MAX_CHARS, - AUTHENTICATION_ADMIN_USERS_MAX_GROUPS -) +from .app_settings import AUTHENTICATION_ADMIN_USERS_MAX_CHARS, AUTHENTICATION_ADMIN_USERS_MAX_GROUPS from .forms import UserChangeForm, UserProfileForm @@ -132,10 +110,7 @@ def user_username(obj): To be used for all user based admin lists """ link = reverse( - 'admin:{}_{}_change'.format( - obj._meta.app_label, - type(obj).__name__.lower() - ), + f'admin:{obj._meta.app_label}_{type(obj).__name__.lower()}_change', args=(obj.pk,) ) user_obj = obj.user if hasattr(obj, 'user') else obj @@ -548,7 +523,7 @@ class BaseOwnershipAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): if obj and obj.pk: return 'owner_hash', 'character' - return tuple() + return () @admin.register(OwnershipRecord) diff --git a/allianceauth/authentication/app_settings.py b/allianceauth/authentication/app_settings.py index 449bef08..e06d1eb8 100644 --- a/allianceauth/authentication/app_settings.py +++ b/allianceauth/authentication/app_settings.py @@ -25,7 +25,7 @@ def _clean_setting( if not required_type: required_type = type(default_value) - if min_value is None and required_type == int: + if min_value is None and required_type is int: min_value = 0 if (hasattr(settings, name) diff --git a/allianceauth/authentication/apps.py b/allianceauth/authentication/apps.py index 30e5a4f2..e53cb659 100644 --- a/allianceauth/authentication/apps.py +++ b/allianceauth/authentication/apps.py @@ -1,10 +1,12 @@ from django.apps import AppConfig from django.core.checks import register, Tags +from django.utils.translation import gettext_lazy as _ class AuthenticationConfig(AppConfig): name = "allianceauth.authentication" label = "authentication" + verbose_name = _("Authentication") def ready(self): from allianceauth.authentication import checks, signals # noqa: F401 diff --git a/allianceauth/authentication/auth_hooks.py b/allianceauth/authentication/auth_hooks.py index b29a3300..34d62fc3 100644 --- a/allianceauth/authentication/auth_hooks.py +++ b/allianceauth/authentication/auth_hooks.py @@ -1,6 +1,7 @@ -from allianceauth.hooks import DashboardItemHook from allianceauth import hooks -from .views import dashboard_characters, dashboard_esi_check, dashboard_groups, dashboard_admin +from allianceauth.hooks import DashboardItemHook + +from .views import dashboard_admin, dashboard_characters, dashboard_esi_check, dashboard_groups class UserCharactersHook(DashboardItemHook): diff --git a/allianceauth/authentication/backends.py b/allianceauth/authentication/backends.py index 260dd293..7c3b00a3 100644 --- a/allianceauth/authentication/backends.py +++ b/allianceauth/authentication/backends.py @@ -1,10 +1,9 @@ import logging from django.contrib.auth.backends import ModelBackend -from django.contrib.auth.models import User, Permission - -from .models import UserProfile, CharacterOwnership, OwnershipRecord +from django.contrib.auth.models import Permission, User +from .models import CharacterOwnership, OwnershipRecord, UserProfile logger = logging.getLogger(__name__) diff --git a/allianceauth/authentication/checks.py b/allianceauth/authentication/checks.py index 1a687b62..88ea1219 100644 --- a/allianceauth/authentication/checks.py +++ b/allianceauth/authentication/checks.py @@ -1,5 +1,5 @@ -from django.core.checks import Error from django.conf import settings +from django.core.checks import Error def check_login_scopes_setting(*args, **kwargs): diff --git a/allianceauth/authentication/core/celery_workers.py b/allianceauth/authentication/core/celery_workers.py index 6da60924..c1e91bfe 100644 --- a/allianceauth/authentication/core/celery_workers.py +++ b/allianceauth/authentication/core/celery_workers.py @@ -2,7 +2,6 @@ import itertools import logging -from typing import Optional from amqp.exceptions import ChannelError from celery import current_app @@ -12,7 +11,7 @@ from django.conf import settings logger = logging.getLogger(__name__) -def active_tasks_count() -> Optional[int]: +def active_tasks_count() -> int | None: """Return count of currently active tasks or None if celery workers are not online. """ @@ -20,7 +19,7 @@ def active_tasks_count() -> Optional[int]: return _tasks_count(inspect.active()) -def _tasks_count(data: dict) -> Optional[int]: +def _tasks_count(data: dict) -> int | None: """Return count of tasks in data from celery inspect API.""" try: tasks = itertools.chain(*data.values()) @@ -29,7 +28,7 @@ def _tasks_count(data: dict) -> Optional[int]: return len(list(tasks)) -def queued_tasks_count() -> Optional[int]: +def queued_tasks_count() -> int | None: """Return count of queued tasks. Return None if there was an error.""" try: with current_app.connection_or_acquire() as conn: diff --git a/allianceauth/authentication/decorators.py b/allianceauth/authentication/decorators.py index d9d93faa..e54f34b0 100644 --- a/allianceauth/authentication/decorators.py +++ b/allianceauth/authentication/decorators.py @@ -1,14 +1,11 @@ -from django.urls import include -from django.contrib.auth.decorators import user_passes_test -from django.core.exceptions import PermissionDenied +from collections.abc import Callable, Iterable from functools import wraps -from typing import Callable, Iterable, Optional -from django.urls import include from django.contrib import messages from django.contrib.auth.decorators import login_required, user_passes_test from django.core.exceptions import PermissionDenied from django.shortcuts import redirect +from django.urls import include from django.utils.translation import gettext_lazy as _ @@ -17,7 +14,7 @@ def user_has_main_character(user): def decorate_url_patterns( - urls, decorator: Callable, excluded_views: Optional[Iterable] = None + urls, decorator: Callable, excluded_views: Iterable | None = None ): """Decorate views given in url patterns except when they are explicitly excluded. diff --git a/allianceauth/authentication/forms.py b/allianceauth/authentication/forms.py index fabff9d9..a4959abd 100644 --- a/allianceauth/authentication/forms.py +++ b/allianceauth/authentication/forms.py @@ -60,7 +60,7 @@ class UserChangeForm(BaseUserChangeForm): { "groups": _( "You are not allowed to add or remove these " - "restricted groups: %s" % restricted_names + "restricted groups: {}".format(restricted_names) ) } ) diff --git a/allianceauth/authentication/hmac_urls.py b/allianceauth/authentication/hmac_urls.py index 61bcd99b..9538582a 100644 --- a/allianceauth/authentication/hmac_urls.py +++ b/allianceauth/authentication/hmac_urls.py @@ -1,5 +1,6 @@ +from django.urls import include, path, re_path + from allianceauth.authentication import views -from django.urls import include, re_path, path urlpatterns = [ path('activate/complete/', views.activation_complete, name='registration_activation_complete'), diff --git a/allianceauth/authentication/management/commands/checkmains.py b/allianceauth/authentication/management/commands/checkmains.py index 5605687b..fad33078 100644 --- a/allianceauth/authentication/management/commands/checkmains.py +++ b/allianceauth/authentication/management/commands/checkmains.py @@ -1,4 +1,5 @@ from django.core.management.base import BaseCommand + from allianceauth.authentication.models import UserProfile @@ -11,8 +12,7 @@ class Command(BaseCommand): if profiles.exists(): for profile in profiles: self.stdout.write(self.style.ERROR( - '{} does not have an ownership. Resetting user {} main character.'.format(profile.main_character, - profile.user))) + f'{profile.main_character} does not have an ownership. Resetting user {profile.user} main character.')) profile.main_character = None profile.save() self.stdout.write(self.style.WARNING(f'Reset {profiles.count()} main characters.')) diff --git a/allianceauth/authentication/managers.py b/allianceauth/authentication/managers.py index 5959db96..3e16b3c2 100644 --- a/allianceauth/authentication/managers.py +++ b/allianceauth/authentication/managers.py @@ -1,7 +1,7 @@ import logging from django.db import transaction -from django.db.models import Manager, QuerySet, Q +from django.db.models import Manager, Q, QuerySet from allianceauth.eveonline.models import EveCharacter diff --git a/allianceauth/authentication/middleware.py b/allianceauth/authentication/middleware.py index ca28d92f..15f0b431 100644 --- a/allianceauth/authentication/middleware.py +++ b/allianceauth/authentication/middleware.py @@ -1,8 +1,8 @@ +import logging + from django.conf import settings from django.utils.deprecation import MiddlewareMixin -import logging - logger = logging.getLogger(__name__) diff --git a/allianceauth/authentication/migrations/0001_initial.py b/allianceauth/authentication/migrations/0001_initial.py index a7d3ff64..1c3a8842 100644 --- a/allianceauth/authentication/migrations/0001_initial.py +++ b/allianceauth/authentication/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 1.10.1 on 2016-09-05 21:38 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/allianceauth/authentication/migrations/0004_create_permissions.py b/allianceauth/authentication/migrations/0004_create_permissions.py index 1f938d21..7b2042f9 100644 --- a/allianceauth/authentication/migrations/0004_create_permissions.py +++ b/allianceauth/authentication/migrations/0004_create_permissions.py @@ -2,6 +2,7 @@ from django.db import migrations + def create_permissions(apps, schema_editor): User = apps.get_model('auth', 'User') ContentType = apps.get_model('contenttypes', 'ContentType') diff --git a/allianceauth/authentication/migrations/0005_delete_perms.py b/allianceauth/authentication/migrations/0005_delete_perms.py index e870b8cd..d61a27af 100644 --- a/allianceauth/authentication/migrations/0005_delete_perms.py +++ b/allianceauth/authentication/migrations/0005_delete_perms.py @@ -2,6 +2,7 @@ from django.db import migrations + def delete_permissions(apps, schema_editor): User = apps.get_model('auth', 'User') ContentType = apps.get_model('contenttypes', 'ContentType') diff --git a/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py b/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py index a88bb301..86d6175c 100644 --- a/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py +++ b/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py @@ -2,6 +2,7 @@ from django.db import migrations + def count_completed_fields(model): return len([True for key, value in model.__dict__.items() if bool(value)]) diff --git a/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py b/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py index d12f2875..e1c28b19 100644 --- a/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py +++ b/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py @@ -1,8 +1,8 @@ # Generated by Django 1.10.1 on 2017-01-07 07:11 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py b/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py index 60fcc189..7949ab59 100644 --- a/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py +++ b/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py @@ -1,6 +1,7 @@ # Generated by Django 1.10.5 on 2017-01-12 00:59 -from django.db import migrations, models +from django.db import migrations + def remove_permissions(apps, schema_editor): ContentType = apps.get_model('contenttypes', 'ContentType') diff --git a/allianceauth/authentication/migrations/0013_service_modules.py b/allianceauth/authentication/migrations/0013_service_modules.py index f046905c..871e070b 100644 --- a/allianceauth/authentication/migrations/0013_service_modules.py +++ b/allianceauth/authentication/migrations/0013_service_modules.py @@ -1,9 +1,9 @@ # Generated by Django 1.10.2 on 2016-12-11 23:14 -from django.db import migrations - import logging +from django.db import migrations + logger = logging.getLogger(__name__) diff --git a/allianceauth/authentication/migrations/0015_user_profiles.py b/allianceauth/authentication/migrations/0015_user_profiles.py index 10ba691c..48ecdefb 100644 --- a/allianceauth/authentication/migrations/0015_user_profiles.py +++ b/allianceauth/authentication/migrations/0015_user_profiles.py @@ -1,11 +1,12 @@ # Generated by Django 1.10.5 on 2017-03-22 23:09 -import allianceauth.authentication.models import django.db.models.deletion from django.conf import settings from django.contrib.auth.hashers import make_password from django.db import migrations, models +import allianceauth.authentication.models + def create_guest_state(apps, schema_editor): State = apps.get_model('authentication', 'State') diff --git a/allianceauth/authentication/migrations/0016_ownershiprecord.py b/allianceauth/authentication/migrations/0016_ownershiprecord.py index b2df6d8d..91887454 100644 --- a/allianceauth/authentication/migrations/0016_ownershiprecord.py +++ b/allianceauth/authentication/migrations/0016_ownershiprecord.py @@ -1,8 +1,8 @@ # Generated by Django 2.0.4 on 2018-04-14 18:28 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion def create_initial_records(apps, schema_editor): diff --git a/allianceauth/authentication/migrations/0025_v5squash.py b/allianceauth/authentication/migrations/0025_v5squash.py new file mode 100644 index 00000000..9d23d874 --- /dev/null +++ b/allianceauth/authentication/migrations/0025_v5squash.py @@ -0,0 +1,124 @@ +# Generated by Django 5.1.6 on 2025-03-04 02:44 + +import django.contrib.auth.models +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + +import allianceauth.authentication.models + + +def create_states(apps, schema_editor) -> None: + State = apps.get_model('authentication', 'State') + + State.objects.update_or_create(name="Guest", defaults={'priority': 0, 'public': True})[0] + State.objects.update_or_create(name="Blue", defaults={'priority': 50, 'public': False})[0] + State.objects.update_or_create(name="Member", defaults={'priority': 100, 'public': False})[0] + + +def create_states_reverse(apps, schema_editor) -> None: + pass + + +class Migration(migrations.Migration): + + replaces = [('authentication', '0001_initial'), ('authentication', '0002_auto_20160907_1914'), ('authentication', '0003_authservicesinfo_state'), ('authentication', '0004_create_permissions'), ('authentication', '0005_delete_perms'), ('authentication', '0006_auto_20160910_0542'), ('authentication', '0007_remove_authservicesinfo_is_blue'), ('authentication', '0008_set_state'), ('authentication', '0009_auto_20161021_0228'), ('authentication', '0010_only_one_authservicesinfo'), ('authentication', '0011_authservicesinfo_user_onetoonefield'), ('authentication', '0012_remove_add_delete_authservicesinfo_permissions'), ('authentication', '0013_service_modules'), ('authentication', '0014_fleetup_permission'), ('authentication', '0015_user_profiles'), ('authentication', '0016_ownershiprecord'), ('authentication', '0017_remove_fleetup_permission'), ('authentication', '0018_state_member_factions'), ('authentication', '0018_alter_state_name_length'), ('authentication', '0019_merge_20211026_0919'), ('authentication', '0020_userprofile_language_userprofile_night_mode'), ('authentication', '0021_alter_userprofile_language'), ('authentication', '0022_userprofile_theme'), ('authentication', '0023_alter_userprofile_language'), ('authentication', '0024_alter_userprofile_language')] + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('esi', '0012_fix_token_type_choices'), + ('eveonline', '0019_v5squash'), + ] + + operations = [ + migrations.CreateModel( + name='CharacterOwnership', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('owner_hash', models.CharField(max_length=28, unique=True)), + ('character', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='character_ownership', to='eveonline.evecharacter')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='character_ownerships', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'default_permissions': ('change', 'delete'), + 'ordering': ['user', 'character__character_name'], + }, + ), + migrations.CreateModel( + name='State', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=32, unique=True)), + ('priority', models.IntegerField(help_text='Users get assigned the state with the highest priority available to them.', unique=True)), + ('public', models.BooleanField(default=False, help_text='Make this state available to any character.')), + ('member_alliances', models.ManyToManyField(blank=True, help_text='Alliances to whose members this state is available.', to='eveonline.eveallianceinfo')), + ('member_characters', models.ManyToManyField(blank=True, help_text='Characters to which this state is available.', to='eveonline.evecharacter')), + ('member_corporations', models.ManyToManyField(blank=True, help_text='Corporations to whose members this state is available.', to='eveonline.evecorporationinfo')), + ('permissions', models.ManyToManyField(blank=True, to='auth.permission')), + ('member_factions', models.ManyToManyField(blank=True, help_text='Factions to whose members this state is available.', to='eveonline.evefactioninfo')), + ], + options={ + 'ordering': ['-priority'], + }, + ), + migrations.CreateModel( + name='UserProfile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('main_character', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='eveonline.evecharacter')), + ('state', models.ForeignKey(default=allianceauth.authentication.models.get_guest_state_pk, on_delete=django.db.models.deletion.SET_DEFAULT, to='authentication.state')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)), + ('night_mode', models.BooleanField(blank=True, null=True, verbose_name='Night Mode')), + ('theme', models.CharField(blank=True, help_text='Bootstrap 5 Themes from https://bootswatch.com/ or Community Apps', max_length=200, null=True, verbose_name='Theme')), + ('language', models.CharField(blank=True, choices=[('en', 'English'), ('cs-cz', 'Czech'), ('de', 'German'), ('es', 'Spanish'), ('it-it', 'Italian'), ('ja', 'Japanese'), ('ko-kr', 'Korean'), ('fr-fr', 'French'), ('ru', 'Russian'), ('nl-nl', 'Dutch'), ('pl-pl', 'Polish'), ('uk', 'Ukrainian'), ('zh-hans', 'Simplified Chinese')], default='', max_length=10, verbose_name='Language')), + ], + options={ + 'default_permissions': ('change',), + }, + ), + migrations.CreateModel( + name='Permission', + fields=[ + ], + options={ + 'proxy': True, + 'verbose_name': 'permission', + 'verbose_name_plural': 'permissions', + }, + bases=('auth.permission',), + managers=[ + ('objects', django.contrib.auth.models.PermissionManager()), + ], + ), + migrations.CreateModel( + name='User', + fields=[ + ], + options={ + 'proxy': True, + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + }, + bases=('auth.user',), + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='OwnershipRecord', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('owner_hash', models.CharField(db_index=True, max_length=28)), + ('created', models.DateTimeField(auto_now=True)), + ('character', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ownership_records', to='eveonline.evecharacter')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ownership_records', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-created'], + }, + ), + migrations.RunPython(create_states, create_states_reverse), + + ] diff --git a/allianceauth/authentication/models.py b/allianceauth/authentication/models.py index 714f1934..29d53264 100644 --- a/allianceauth/authentication/models.py +++ b/allianceauth/authentication/models.py @@ -1,11 +1,12 @@ import logging +from typing import ClassVar -from django.contrib.auth.models import User, Permission +from django.contrib.auth.models import Permission, User from django.db import models, transaction from django.utils.translation import gettext_lazy as _ -from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo, EveAllianceInfo, EveFactionInfo + +from allianceauth.eveonline.models import EveAllianceInfo, EveCharacter, EveCorporationInfo, EveFactionInfo from allianceauth.notifications import notify -from django.conf import settings from .managers import CharacterOwnershipManager, StateManager @@ -15,24 +16,30 @@ logger = logging.getLogger(__name__) class State(models.Model): name = models.CharField(max_length=32, unique=True) permissions = models.ManyToManyField(Permission, blank=True) - priority = models.IntegerField(unique=True, help_text="Users get assigned the state with the highest priority available to them.") + priority = models.IntegerField( + unique=True, help_text="Users get assigned the state with the highest priority available to them." + ) - member_characters = models.ManyToManyField(EveCharacter, blank=True, - help_text="Characters to which this state is available.") - member_corporations = models.ManyToManyField(EveCorporationInfo, blank=True, - help_text="Corporations to whose members this state is available.") - member_alliances = models.ManyToManyField(EveAllianceInfo, blank=True, - help_text="Alliances to whose members this state is available.") - member_factions = models.ManyToManyField(EveFactionInfo, blank=True, - help_text="Factions to whose members this state is available.") + member_characters = models.ManyToManyField( + EveCharacter, blank=True, help_text="Characters to which this state is available." + ) + member_corporations = models.ManyToManyField( + EveCorporationInfo, blank=True, help_text="Corporations to whose members this state is available." + ) + member_alliances = models.ManyToManyField( + EveAllianceInfo, blank=True, help_text="Alliances to whose members this state is available." + ) + member_factions = models.ManyToManyField( + EveFactionInfo, blank=True, help_text="Factions to whose members this state is available." + ) public = models.BooleanField(default=False, help_text="Make this state available to any character.") - objects = StateManager() + objects: ClassVar[StateManager] = StateManager() class Meta: - ordering = ['-priority'] + ordering = ["-priority"] - def __str__(self): + def __str__(self) -> str: return self.name def available_to_character(self, character): @@ -48,11 +55,11 @@ class State(models.Model): super().delete(**kwargs) -def get_guest_state(): +def get_guest_state() -> State: try: - return State.objects.get(name='Guest') + return State.objects.get(name="Guest") except State.DoesNotExist: - return State.objects.create(name='Guest', priority=0, public=True) + return State.objects.create(name="Guest", priority=0, public=True) def get_guest_state_pk(): @@ -60,72 +67,58 @@ def get_guest_state_pk(): class UserProfile(models.Model): - class Meta: - default_permissions = ('change',) - class Language(models.TextChoices): """ Choices for UserProfile.language """ - # Sorted by Language Code alphabetical order + English at top - ENGLISH = 'en', _('English') - CZECH = 'cs-cz', _("Czech") # Not yet at 50% translated - GERMAN = 'de', _('German') - SPANISH = 'es', _('Spanish') - ITALIAN = 'it-it', _('Italian') - JAPANESE = 'ja', _('Japanese') - KOREAN = 'ko-kr', _('Korean') - FRENCH = 'fr-fr', _('French') - RUSSIAN = 'ru', _('Russian') - DUTCH = 'nl-nl', _("Dutch") - POLISH = 'pl-pl', _("Polish") - UKRAINIAN = 'uk', _('Ukrainian') - CHINESE = 'zh-hans', _('Simplified Chinese') - user = models.OneToOneField( - User, - related_name='profile', - on_delete=models.CASCADE) - main_character = models.OneToOneField( - EveCharacter, - blank=True, - null=True, - on_delete=models.SET_NULL) - state = models.ForeignKey( - State, - on_delete=models.SET_DEFAULT, - default=get_guest_state_pk) - language = models.CharField( - _("Language"), max_length=10, - choices=Language.choices, - blank=True, - default='') - night_mode = models.BooleanField( - _("Night Mode"), - blank=True, - null=True) - theme = models.CharField( + # Sorted by Language Code alphabetical order + English at top + ENGLISH = "en", _("English") + CZECH = "cs-cz", _("Czech") # Not yet at 50% translated + GERMAN = "de", _("German") + SPANISH = "es", _("Spanish") + ITALIAN = "it-it", _("Italian") + JAPANESE = "ja", _("Japanese") + KOREAN = "ko-kr", _("Korean") + FRENCH = "fr-fr", _("French") + RUSSIAN = "ru", _("Russian") + DUTCH = "nl-nl", _("Dutch") + POLISH = "pl-pl", _("Polish") + UKRAINIAN = "uk", _("Ukrainian") + CHINESE = "zh-hans", _("Simplified Chinese") + + user = models.OneToOneField(User, related_name="profile", on_delete=models.CASCADE) + main_character = models.OneToOneField(EveCharacter, blank=True, null=True, on_delete=models.SET_NULL) + state = models.ForeignKey(State, on_delete=models.SET_DEFAULT, default=get_guest_state_pk) + language = models.CharField(_("Language"), max_length=10, choices=Language.choices, blank=True, default="") + night_mode = models.BooleanField(_("Night Mode"), blank=True, null=True) + theme = models.CharField( # noqa:DJ001 Null has a specific meaning, never set by user _("Theme"), max_length=200, blank=True, null=True, - help_text="Bootstrap 5 Themes from https://bootswatch.com/ or Community Apps" + help_text="Bootstrap 5 Themes from https://bootswatch.com/ or Community Apps", ) - def assign_state(self, state=None, commit=True): + class Meta: + default_permissions = ("change",) + + def __str__(self) -> str: + return str(self.user) + + def assign_state(self, state=None, commit=True) -> None: if not state: state = State.objects.get_for_user(self.user) if self.state != state: self.state = state if commit: - logger.info(f'Updating {self.user} state to {self.state}') - self.save(update_fields=['state']) + logger.info(f"Updating {self.user} state to {self.state}") + self.save(update_fields=["state"]) notify( self.user, - _('State changed to: %s' % state), - _('Your user\'s state is now: %(state)s') - % ({'state': state}), - 'info' + _(f"State changed to: {state}"), + _("Your user's state is now: %(state)s") % ({"state": state}), + "info", ) from allianceauth.authentication.signals import state_changed @@ -133,35 +126,33 @@ class UserProfile(models.Model): # Clear all attribute caches and reload the model that will get passed to the signals! self.refresh_from_db() - state_changed.send( - sender=self.__class__, user=self.user, state=self.state - ) + state_changed.send(sender=self.__class__, user=self.user, state=self.state) + - def __str__(self): - return str(self.user) class CharacterOwnership(models.Model): + + character = models.OneToOneField(EveCharacter, on_delete=models.CASCADE, related_name='character_ownership') + owner_hash = models.CharField(max_length=28, unique=True) + user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="character_ownerships") + + objects: ClassVar[CharacterOwnershipManager] = CharacterOwnershipManager() + class Meta: default_permissions = ('change', 'delete') ordering = ['user', 'character__character_name'] - character = models.OneToOneField(EveCharacter, on_delete=models.CASCADE, related_name='character_ownership') - owner_hash = models.CharField(max_length=28, unique=True) - user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='character_ownerships') - - objects = CharacterOwnershipManager() - - def __str__(self): + def __str__(self) -> str: return f"{self.user}: {self.character}" class OwnershipRecord(models.Model): - character = models.ForeignKey(EveCharacter, on_delete=models.CASCADE, related_name='ownership_records') + character = models.ForeignKey(EveCharacter, on_delete=models.CASCADE, related_name="ownership_records") owner_hash = models.CharField(max_length=28, db_index=True) - user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='ownership_records') + user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="ownership_records") created = models.DateTimeField(auto_now=True) class Meta: - ordering = ['-created'] + ordering = ["-created"] - def __str__(self): + def __str__(self) -> str: return f"{self.user}: {self.character} on {self.created}" diff --git a/allianceauth/authentication/signals.py b/allianceauth/authentication/signals.py index dfb9ba1b..10c278a0 100644 --- a/allianceauth/authentication/signals.py +++ b/allianceauth/authentication/signals.py @@ -1,19 +1,16 @@ import logging -from .models import ( - CharacterOwnership, - UserProfile, - get_guest_state, - State, - OwnershipRecord) from django.contrib.auth.models import User from django.db.models import Q -from django.db.models.signals import pre_save, post_save, pre_delete, post_delete, m2m_changed -from django.dispatch import receiver, Signal +from django.db.models.signals import m2m_changed, post_delete, post_save, pre_delete, pre_save +from django.dispatch import Signal, receiver + from esi.models import Token from allianceauth.eveonline.models import EveCharacter +from .models import CharacterOwnership, OwnershipRecord, State, UserProfile, get_guest_state + logger = logging.getLogger(__name__) state_changed = Signal() @@ -108,8 +105,7 @@ def record_character_ownership(sender, instance, created, *args, **kwargs): def validate_main_character(sender, instance, *args, **kwargs): try: if instance.user.profile.main_character == instance.character: - logger.info("Ownership of a main character {} has been revoked. Resetting {} main character.".format( - instance.character, instance.user)) + logger.info(f"Ownership of a main character {instance.character} has been revoked. Resetting {instance.user} main character.") # clear main character as user no longer owns them instance.user.profile.main_character = None instance.user.profile.save() diff --git a/allianceauth/authentication/task_statistics/counters.py b/allianceauth/authentication/task_statistics/counters.py index bdb6d034..3d146343 100644 --- a/allianceauth/authentication/task_statistics/counters.py +++ b/allianceauth/authentication/task_statistics/counters.py @@ -1,7 +1,7 @@ """Counters for Task Statistics.""" import datetime as dt -from typing import NamedTuple, Optional +from typing import NamedTuple from .event_series import EventSeries @@ -16,7 +16,7 @@ class _TaskCounts(NamedTuple): retried: int failed: int total: int - earliest_task: Optional[dt.datetime] + earliest_task: dt.datetime | None hours: int diff --git a/allianceauth/authentication/task_statistics/event_series.py b/allianceauth/authentication/task_statistics/event_series.py index 9ac1f15d..b602ef04 100644 --- a/allianceauth/authentication/task_statistics/event_series.py +++ b/allianceauth/authentication/task_statistics/event_series.py @@ -2,7 +2,6 @@ import datetime as dt import logging -from typing import List, Optional from pytz import utc from redis import Redis @@ -17,7 +16,7 @@ class EventSeries: _ROOT_KEY = "ALLIANCEAUTH_EVENT_SERIES" - def __init__(self, key_id: str, redis: Optional[Redis] = None) -> None: + def __init__(self, key_id: str, redis: Redis | None = None) -> None: self._redis = get_redis_client_or_stub() if not redis else redis self._key_id = str(key_id) self.clear() @@ -46,7 +45,7 @@ class EventSeries: my_id = self._redis.incr(self._key_counter) self._redis.zadd(self._key_sorted_set, {my_id: event_time.timestamp()}) - def all(self) -> List[dt.datetime]: + def all(self) -> list[dt.datetime]: """List of all known events.""" return [ event[1] @@ -75,7 +74,7 @@ class EventSeries: maximum = "+inf" if not latest else latest.timestamp() return self._redis.zcount(self._key_sorted_set, min=minimum, max=maximum) - def first_event(self, earliest: dt.datetime = None) -> Optional[dt.datetime]: + def first_event(self, earliest: dt.datetime = None) -> dt.datetime | None: """Date/Time of first event. Returns `None` if series has no events. Args: diff --git a/allianceauth/authentication/task_statistics/signals.py b/allianceauth/authentication/task_statistics/signals.py index e9d7babc..5f12bfac 100644 --- a/allianceauth/authentication/task_statistics/signals.py +++ b/allianceauth/authentication/task_statistics/signals.py @@ -1,7 +1,11 @@ """Signals for Task Statistics.""" from celery.signals import ( - task_failure, task_internal_error, task_retry, task_success, worker_ready, + task_failure, + task_internal_error, + task_retry, + task_success, + worker_ready, ) from django.conf import settings diff --git a/allianceauth/authentication/task_statistics/tests/test_counters.py b/allianceauth/authentication/task_statistics/tests/test_counters.py index 2d2555aa..96494b4c 100644 --- a/allianceauth/authentication/task_statistics/tests/test_counters.py +++ b/allianceauth/authentication/task_statistics/tests/test_counters.py @@ -4,7 +4,10 @@ from django.test import TestCase from django.utils.timezone import now from allianceauth.authentication.task_statistics.counters import ( - dashboard_results, failed_tasks, retried_tasks, succeeded_tasks, + dashboard_results, + failed_tasks, + retried_tasks, + succeeded_tasks, ) diff --git a/allianceauth/authentication/task_statistics/tests/test_helpers.py b/allianceauth/authentication/task_statistics/tests/test_helpers.py index 51dae201..45edffd7 100644 --- a/allianceauth/authentication/task_statistics/tests/test_helpers.py +++ b/allianceauth/authentication/task_statistics/tests/test_helpers.py @@ -4,7 +4,8 @@ from unittest.mock import patch from redis import RedisError from allianceauth.authentication.task_statistics.helpers import ( - _RedisStub, get_redis_client_or_stub, + _RedisStub, + get_redis_client_or_stub, ) MODULE_PATH = "allianceauth.authentication.task_statistics.helpers" diff --git a/allianceauth/authentication/task_statistics/tests/test_signals.py b/allianceauth/authentication/task_statistics/tests/test_signals.py index 1e1634bd..d04f11e2 100644 --- a/allianceauth/authentication/task_statistics/tests/test_signals.py +++ b/allianceauth/authentication/task_statistics/tests/test_signals.py @@ -10,8 +10,8 @@ from allianceauth.authentication.task_statistics.counters import ( succeeded_tasks, ) from allianceauth.authentication.task_statistics.signals import ( - reset_counters, is_enabled, + reset_counters, ) from allianceauth.eveonline.tasks import update_character diff --git a/allianceauth/authentication/tasks.py b/allianceauth/authentication/tasks.py index eaf3c59a..ff5f7e63 100644 --- a/allianceauth/authentication/tasks.py +++ b/allianceauth/authentication/tasks.py @@ -1,9 +1,10 @@ import logging -from esi.errors import TokenExpiredError, TokenInvalidError, IncompleteResponseError -from esi.models import Token from celery import shared_task +from esi.errors import IncompleteResponseError, TokenExpiredError, TokenInvalidError +from esi.models import Token + from allianceauth.authentication.models import CharacterOwnership logger = logging.getLogger(__name__) @@ -22,8 +23,7 @@ def check_character_ownership(owner_hash): continue except (KeyError, IncompleteResponseError): # We can't validate the hash hasn't changed but also can't assume it has. Abort for now. - logger.warning("Failed to validate owner hash of {} due to problems contacting SSO servers.".format( - tokens[0].character_name)) + logger.warning(f"Failed to validate owner hash of {tokens[0].character_name} due to problems contacting SSO servers.") break if not t.character_owner_hash == old_hash: @@ -33,7 +33,7 @@ def check_character_ownership(owner_hash): break if not Token.objects.filter(character_owner_hash=owner_hash).exists(): - logger.info('No tokens found with owner hash %s. Revoking ownership.' % owner_hash) + logger.info(f'No tokens found with owner hash {owner_hash}. Revoking ownership.') CharacterOwnership.objects.filter(owner_hash=owner_hash).delete() diff --git a/allianceauth/authentication/templates/authentication/dashboard_bs3.html b/allianceauth/authentication/templates/authentication/dashboard_bs3.html deleted file mode 100644 index 14bb8cbc..00000000 --- a/allianceauth/authentication/templates/authentication/dashboard_bs3.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends 'allianceauth/base.html' %} - - -{% block page_title %}Dashboard{% endblock page_title %} - -{% block content %} -
-

Dashboard Dummy

-
-{% endblock %} diff --git a/allianceauth/authentication/templates/authentication/tokens.html b/allianceauth/authentication/templates/authentication/tokens.html index 42e3c61b..3fb54b06 100644 --- a/allianceauth/authentication/templates/authentication/tokens.html +++ b/allianceauth/authentication/templates/authentication/tokens.html @@ -1,5 +1,6 @@ {% extends "allianceauth/base-bs5.html" %} +{% load aa_i18n %} {% load i18n %} {% block page_title %} @@ -13,7 +14,7 @@ {% block content %}

- {% translate "This page is a best attempt, but backups or database logs can still contain your tokens. Always revoke tokens on https://community.eveonline.com/support/third-party-applications/ where possible."|urlize %} + {% translate "This page is a best attempt, but backups or database logs can still contain your tokens. Always revoke tokens on https://developers.eveonline.com/authorized-apps where possible."|urlize %}

@@ -30,7 +31,7 @@ @@ -50,20 +51,23 @@ {% block extra_javascript %} {% include "bundles/datatables-js-bs5.html" %} + {% get_datatables_language_static LANGUAGE_CODE as DT_LANG_PATH %} + {% endblock %} diff --git a/allianceauth/groupmanagement/templates/groupmanagement/index.html b/allianceauth/groupmanagement/templates/groupmanagement/index.html index 7cde5bf0..3171b055 100644 --- a/allianceauth/groupmanagement/templates/groupmanagement/index.html +++ b/allianceauth/groupmanagement/templates/groupmanagement/index.html @@ -19,7 +19,7 @@ {% translate "Join Requests" %} {% if acceptrequests %} - {{ acceptrequests|length }} + {{ acceptrequests|length }} {% endif %} @@ -30,7 +30,7 @@ {% translate "Leave Requests" %} {% if leaverequests %} - {{ leaverequests|length }} + {{ leaverequests|length }} {% endif %} diff --git a/allianceauth/groupmanagement/tests/__init__.py b/allianceauth/groupmanagement/tests/__init__.py index 1446ef49..aa4816f5 100644 --- a/allianceauth/groupmanagement/tests/__init__.py +++ b/allianceauth/groupmanagement/tests/__init__.py @@ -3,9 +3,6 @@ from django.urls import reverse def get_admin_change_view_url(obj: object) -> str: return reverse( - 'admin:{}_{}_change'.format( - obj._meta.app_label, - type(obj).__name__.lower() - ), + f'admin:{obj._meta.app_label}_{type(obj).__name__.lower()}_change', args=(obj.pk,) ) diff --git a/allianceauth/groupmanagement/tests/test_admin.py b/allianceauth/groupmanagement/tests/test_admin.py index 3b9605a1..0f7a1ed1 100644 --- a/allianceauth/groupmanagement/tests/test_admin.py +++ b/allianceauth/groupmanagement/tests/test_admin.py @@ -10,7 +10,9 @@ from django.test import Client, RequestFactory, TestCase, override_settings from allianceauth.authentication.models import CharacterOwnership, State from allianceauth.eveonline.models import ( - EveAllianceInfo, EveCharacter, EveCorporationInfo, + EveAllianceInfo, + EveCharacter, + EveCorporationInfo, ) from allianceauth.tests.auth_utils import AuthUtils diff --git a/allianceauth/groupmanagement/tests/test_managers.py b/allianceauth/groupmanagement/tests/test_managers.py index f656d99e..2e7ddcb9 100644 --- a/allianceauth/groupmanagement/tests/test_managers.py +++ b/allianceauth/groupmanagement/tests/test_managers.py @@ -1,14 +1,14 @@ from django.contrib.auth.models import Group, User from django.test import TestCase -from allianceauth.eveonline.models import EveCorporationInfo, EveAllianceInfo +from allianceauth.eveonline.models import EveAllianceInfo, EveCorporationInfo from allianceauth.tests.auth_utils import AuthUtils -from ..models import GroupRequest from ..managers import GroupManager +from ..models import GroupRequest -class MockUserNotAuthenticated(): +class MockUserNotAuthenticated: def __init__(self): self.is_authenticated = False diff --git a/allianceauth/groupmanagement/tests/test_signals.py b/allianceauth/groupmanagement/tests/test_signals.py index efa35dda..f398f288 100644 --- a/allianceauth/groupmanagement/tests/test_signals.py +++ b/allianceauth/groupmanagement/tests/test_signals.py @@ -1,11 +1,10 @@ +from django.contrib.auth.models import Group, User from django.test import TestCase -from django.contrib.auth.models import User, Group -from allianceauth.eveonline.models import EveCorporationInfo from allianceauth.eveonline.autogroups.models import AutogroupsConfig +from allianceauth.eveonline.models import EveCorporationInfo from allianceauth.tests.auth_utils import AuthUtils - from ..models import ReservedGroupName diff --git a/allianceauth/groupmanagement/urls.py b/allianceauth/groupmanagement/urls.py index 5b27821b..a2d78830 100644 --- a/allianceauth/groupmanagement/urls.py +++ b/allianceauth/groupmanagement/urls.py @@ -1,4 +1,5 @@ from django.urls import path + from . import views app_name = "groupmanagement" diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index 1d1bba87..feab4c91 100644 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -21,7 +21,7 @@ logger = logging.getLogger(__name__) @login_required @user_passes_test(GroupManager.can_manage_groups) def group_management(request): - logger.debug("group_management called by user %s" % request.user) + logger.debug(f"group_management called by user {request.user}") acceptrequests = [] leaverequests = [] @@ -40,8 +40,7 @@ def group_management(request): else: acceptrequests.append(grouprequest) - logger.debug("Providing user {} with {} acceptrequests and {} leaverequests.".format( - request.user, len(acceptrequests), len(leaverequests))) + logger.debug(f"Providing user {request.user} with {len(acceptrequests)} acceptrequests and {len(leaverequests)} leaverequests.") show_leave_tab = ( getattr(settings, 'GROUPMANAGEMENT_AUTO_LEAVE', False) @@ -60,7 +59,7 @@ def group_management(request): @login_required @user_passes_test(GroupManager.can_manage_groups) def group_membership(request): - logger.debug("group_membership called by user %s" % request.user) + logger.debug(f"group_membership called by user {request.user}") # Get all open and closed groups if GroupManager.has_management_permission(request.user): # Full access @@ -79,7 +78,7 @@ def group_membership(request): @login_required @user_passes_test(GroupManager.can_manage_groups) def group_membership_audit(request, group_id): - logger.debug("group_management_audit called by user %s" % request.user) + logger.debug(f"group_management_audit called by user {request.user}") group = get_object_or_404(Group, id=group_id) try: # Check its a joinable group i.e. not corp or internal @@ -88,8 +87,8 @@ def group_membership_audit(request, group_id): logger.warning(f"User {request.user} attempted to view the membership of group {group_id} but permission was denied") raise PermissionDenied - except ObjectDoesNotExist: - raise Http404("Group does not exist") + except ObjectDoesNotExist as e: + raise Http404("Group does not exist") from e render_items = {'group': group} entries = RequestLog.objects.filter(group=group).order_by('-date') render_items['entries'] = entries @@ -101,8 +100,8 @@ def group_membership_audit(request, group_id): @user_passes_test(GroupManager.can_manage_groups) def group_membership_list(request, group_id): logger.debug( - "group_membership_list called by user %s " - "for group id %s" % (request.user, group_id) + f"group_membership_list called by user {request.user} " + f"for group id {group_id}" ) group = get_object_or_404(Group, id=group_id) try: @@ -113,16 +112,16 @@ def group_membership_list(request, group_id): or not GroupManager.can_manage_group(request.user, group) ): logger.warning( - "User %s attempted to view the membership of group %s " - "but permission was denied" % (request.user, group_id) + f"User {request.user} attempted to view the membership of group {group_id} " + "but permission was denied" ) raise PermissionDenied - except ObjectDoesNotExist: - raise Http404("Group does not exist") + except ObjectDoesNotExist as e: + raise Http404("Group does not exist") from e group_leaders = group.authgroup.group_leaders.all() - members = list() + members = [] for member in \ group.user_set\ .all()\ @@ -190,20 +189,18 @@ def group_accept_request(request, group_request_id): log = RequestLog(request_type=group_request.leave_request,group=group,request_info=group_request.__str__(),action=1,request_actor=request.user) log.save() group_request.delete() - logger.info("User {} accepted group request from user {} to group {}".format( - request.user, group_request.user, group_request.group.name)) + logger.info(f"User {request.user} accepted group request from user {group_request.user} to group {group_request.group.name}") notify(group_request.user, "Group Application Accepted", level="success", - message="Your application to %s has been accepted." % group_request.group) + message=f"Your application to {group_request.group} has been accepted.") messages.success(request, _('Accepted application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning(f"User {request.user} attempted to accept group join request {group_request_id} but permission was denied") raise p - except: + except Exception: messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user {} attempting to accept grouprequest id {}.".format( - request.user, group_request_id)) + logger.exception(f"Unhandled exception occurred while user {request.user} attempting to accept grouprequest id {group_request_id}.") pass return redirect("groupmanagement:management") @@ -219,22 +216,20 @@ def group_reject_request(request, group_request_id): raise PermissionDenied if group_request: - logger.info("User {} rejected group request from user {} to group {}".format( - request.user, group_request.user, group_request.group.name)) + logger.info(f"User {request.user} rejected group request from user {group_request.user} to group {group_request.group.name}") log = RequestLog(request_type=group_request.leave_request,group=group_request.group,request_info=group_request.__str__(),action=0,request_actor=request.user) log.save() group_request.delete() - notify(group_request.user, "Group Application Rejected", level="danger", message="Your application to %s has been rejected." % group_request.group) + notify(group_request.user, "Group Application Rejected", level="danger", message=f"Your application to {group_request.group} has been rejected.") messages.success(request, _('Rejected application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning(f"User {request.user} attempted to reject group join request {group_request_id} but permission was denied") raise p - except: + except Exception: messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user {} attempting to reject group request id {}".format( - request.user, group_request_id)) + logger.exception(f"Unhandled exception occurred while user {request.user} attempting to reject group request id {group_request_id}") pass return redirect("groupmanagement:management") @@ -256,20 +251,18 @@ def group_leave_accept_request(request, group_request_id): log = RequestLog(request_type=group_request.leave_request,group=group_request.group,request_info=group_request.__str__(),action=1,request_actor=request.user) log.save() group_request.delete() - logger.info("User {} accepted group leave request from user {} to group {}".format( - request.user, group_request.user, group_request.group.name)) + logger.info(f"User {request.user} accepted group leave request from user {group_request.user} to group {group_request.group.name}") notify(group_request.user, "Group Leave Request Accepted", level="success", - message="Your request to leave %s has been accepted." % group_request.group) + message=f"Your request to leave {group_request.group} has been accepted.") messages.success(request, _('Accepted application from %(mainchar)s to leave %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning(f"User {request.user} attempted to accept group leave request {group_request_id} but permission was denied") raise p - except: + except Exception: messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to leave %(group)s.') % { "mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user {} attempting to accept group leave request id {}".format( - request.user, group_request_id)) + logger.exception(f"Unhandled exception occurred while user {request.user} attempting to accept group leave request id {group_request_id}") pass return redirect("groupmanagement:management") @@ -289,19 +282,17 @@ def group_leave_reject_request(request, group_request_id): log = RequestLog(request_type=group_request.leave_request,group=group_request.group,request_info=group_request.__str__(),action=0,request_actor=request.user) log.save() group_request.delete() - logger.info("User {} rejected group leave request from user {} for group {}".format( - request.user, group_request.user, group_request.group.name)) - notify(group_request.user, "Group Leave Request Rejected", level="danger", message="Your request to leave %s has been rejected." % group_request.group) + logger.info(f"User {request.user} rejected group leave request from user {group_request.user} for group {group_request.group.name}") + notify(group_request.user, "Group Leave Request Rejected", level="danger", message=f"Your request to leave {group_request.group} has been rejected.") messages.success(request, _('Rejected application from %(mainchar)s to leave %(group)s.') % { "mainchar": group_request.main_char, "group": group_request.group}) except PermissionDenied as p: logger.warning(f"User {request.user} attempted to reject group leave request {group_request_id} but permission was denied") raise p - except: + except Exception: messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to leave %(group)s.') % { "mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user {} attempting to reject group leave request id {}".format( - request.user, group_request_id)) + logger.exception(f"Unhandled exception occurred while user {request.user} attempting to reject group leave request id {group_request_id}") pass return redirect("groupmanagement:management") @@ -309,7 +300,7 @@ def group_leave_reject_request(request, group_request_id): @login_required def groups_view(request): - logger.debug("groups_view called by user %s" % request.user) + logger.debug(f"groups_view called by user {request.user}") groups_qs = GroupManager.get_joinable_groups_for_user( request.user, include_hidden=False diff --git a/allianceauth/hooks.py b/allianceauth/hooks.py index 0a91942b..7262f53e 100644 --- a/allianceauth/hooks.py +++ b/allianceauth/hooks.py @@ -30,13 +30,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Based on https://github.com/torchbox/wagtail/blob/master/wagtail/wagtailcore/hooks.py """ +import logging from importlib import import_module from django.apps import apps from django.utils.module_loading import module_has_submodule -import logging - logger = logging.getLogger(__name__) _hooks = {} # Dict of Name: Fn's of registered hooks @@ -64,7 +63,7 @@ def register(name, fn=None): """ def _hook_add(func): if name not in _hooks: - logger.debug("Creating new hook %s" % name) + logger.debug(f"Creating new hook {name}") _hooks[name] = [] logger.debug(f'Registering hook {name} for function {fn}') @@ -110,7 +109,7 @@ def register_all_hooks(): if not _all_hooks_registered: logger.debug("Searching for hooks") hooks = list(get_app_submodules('auth_hooks')) - logger.debug("Got %s hooks" % len(hooks)) + logger.debug(f"Got {len(hooks)} hooks") _all_hooks_registered = True @@ -133,6 +132,6 @@ class DashboardItemHook: try: logger.debug(f"Rendering {self.view_function} to dashboard") return self.view_function(request) - except Exception as e: + except Exception: logger.exception(f"Rendering {self.view_function} failed!") return "" diff --git a/allianceauth/hrapplications/admin.py b/allianceauth/hrapplications/admin.py index f1075da7..3381da0f 100644 --- a/allianceauth/hrapplications/admin.py +++ b/allianceauth/hrapplications/admin.py @@ -1,7 +1,13 @@ from django.contrib import admin -from .models import Application, ApplicationChoice, ApplicationComment, ApplicationForm, ApplicationQuestion, \ - ApplicationResponse +from .models import ( + Application, + ApplicationChoice, + ApplicationComment, + ApplicationForm, + ApplicationQuestion, + ApplicationResponse, +) class ChoiceInline(admin.TabularInline): diff --git a/allianceauth/hrapplications/apps.py b/allianceauth/hrapplications/apps.py index d3c61479..80af757e 100644 --- a/allianceauth/hrapplications/apps.py +++ b/allianceauth/hrapplications/apps.py @@ -1,6 +1,8 @@ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class HRApplicationsConfig(AppConfig): name = 'allianceauth.hrapplications' label = 'hrapplications' + verbose_name = _('HR Applications') diff --git a/allianceauth/hrapplications/managers.py b/allianceauth/hrapplications/managers.py index 30ee5e74..3a2abeea 100644 --- a/allianceauth/hrapplications/managers.py +++ b/allianceauth/hrapplications/managers.py @@ -1,11 +1,10 @@ from django.contrib.auth.models import User from django.db import models -from typing import Optional class ApplicationManager(models.Manager): - def pending_requests_count_for_user(self, user: User) -> Optional[int]: + def pending_requests_count_for_user(self, user: User) -> int | None: """Returns the number of pending group requests for the given user""" if user.is_superuser: return self.filter(approved__isnull=True).count() diff --git a/allianceauth/hrapplications/migrations/0001_initial.py b/allianceauth/hrapplications/migrations/0001_initial.py index 466e8b18..7b094c65 100644 --- a/allianceauth/hrapplications/migrations/0001_initial.py +++ b/allianceauth/hrapplications/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 1.10.1 on 2016-09-05 21:39 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/allianceauth/hrapplications/migrations/0002_choices_for_questions.py b/allianceauth/hrapplications/migrations/0002_choices_for_questions.py index 4687a7d6..01815ff7 100644 --- a/allianceauth/hrapplications/migrations/0002_choices_for_questions.py +++ b/allianceauth/hrapplications/migrations/0002_choices_for_questions.py @@ -1,7 +1,7 @@ # Generated by Django 1.11.4 on 2017-08-23 19:46 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/allianceauth/hrapplications/migrations/0005_sorted_questions.py b/allianceauth/hrapplications/migrations/0005_sorted_questions.py index 7e32e458..5eabae54 100644 --- a/allianceauth/hrapplications/migrations/0005_sorted_questions.py +++ b/allianceauth/hrapplications/migrations/0005_sorted_questions.py @@ -1,9 +1,10 @@ # Generated by Django 1.10.5 on 2017-03-27 03:29 -from django.db import migrations import sortedm2m.fields from sortedm2m.operations import AlterSortedManyToManyField +from django.db import migrations + class Migration(migrations.Migration): diff --git a/allianceauth/hrapplications/migrations/0008_v5squash.py b/allianceauth/hrapplications/migrations/0008_v5squash.py new file mode 100644 index 00000000..3a34f407 --- /dev/null +++ b/allianceauth/hrapplications/migrations/0008_v5squash.py @@ -0,0 +1,100 @@ +# Generated by Django 5.1.6 on 2025-03-04 04:31 + +import sortedm2m.fields + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +def create_permissions(apps, schema_editor) -> None: + # Remnant of AAv0 + User = apps.get_model('auth', 'User') + ContentType = apps.get_model('contenttypes', 'ContentType') + Permission = apps.get_model('auth', 'Permission') + ct = ContentType.objects.get_for_model(User) + Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources") + + +def reverse(apps, schema_editor) -> None: + pass + + +class Migration(migrations.Migration): + + replaces = [('hrapplications', '0001_initial'), ('hrapplications', '0002_choices_for_questions'), ('hrapplications', '0003_applicationquestion_multi_select'), ('hrapplications', '0004_make_strings_more_stringy'), ('hrapplications', '0005_sorted_questions'), ('hrapplications', '0006_remove_legacy_models'), ('hrapplications', '0007_auto_20200918_1412')] + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('eveonline', '0019_v5squash'), + ] + + operations = [ + migrations.CreateModel( + name='ApplicationQuestion', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=254, verbose_name='Question')), + ('help_text', models.CharField(blank=True, max_length=254, null=True)), + ('multi_select', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='ApplicationForm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('corp', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='eveonline.evecorporationinfo')), + ('questions', sortedm2m.fields.SortedManyToManyField(help_text=None, to='hrapplications.applicationquestion')), + ], + ), + migrations.CreateModel( + name='ApplicationChoice', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('choice_text', models.CharField(max_length=200, verbose_name='Choice')), + ('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='hrapplications.applicationquestion')), + ], + ), + migrations.CreateModel( + name='Application', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('approved', models.BooleanField(blank=True, default=None, null=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('form', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='applications', to='hrapplications.applicationform')), + ('reviewer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), + ('reviewer_character', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='eveonline.evecharacter')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='applications', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'permissions': (('approve_application', 'Can approve applications'), ('reject_application', 'Can reject applications'), ('view_apis', 'Can view applicant APIs')), + 'unique_together': {('form', 'user')}, + }, + ), + migrations.CreateModel( + name='ApplicationComment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.TextField()), + ('created', models.DateTimeField(auto_now_add=True)), + ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='hrapplications.application')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ApplicationResponse', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('answer', models.TextField()), + ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='responses', to='hrapplications.application')), + ('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='hrapplications.applicationquestion')), + ], + options={ + 'unique_together': {('question', 'application')}, + }, + ), + migrations.RunPython(create_permissions, reverse) + + ] diff --git a/allianceauth/hrapplications/models.py b/allianceauth/hrapplications/models.py index 4767ec7f..edc69dc4 100644 --- a/allianceauth/hrapplications/models.py +++ b/allianceauth/hrapplications/models.py @@ -1,6 +1,8 @@ +from sortedm2m.fields import SortedManyToManyField + +from typing import ClassVar from django.contrib.auth.models import User from django.db import models -from sortedm2m.fields import SortedManyToManyField from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo @@ -9,10 +11,10 @@ from .managers import ApplicationManager class ApplicationQuestion(models.Model): title = models.CharField(max_length=254, verbose_name='Question') - help_text = models.CharField(max_length=254, blank=True, null=True) + help_text = models.CharField(max_length=254, blank=True) multi_select = models.BooleanField(default=False) - def __str__(self): + def __str__(self) -> str: return "Question: " + self.title @@ -20,7 +22,7 @@ class ApplicationChoice(models.Model): question = models.ForeignKey(ApplicationQuestion,on_delete=models.CASCADE,related_name="choices") choice_text = models.CharField(max_length=200, verbose_name='Choice') - def __str__(self): + def __str__(self) -> str: return self.choice_text @@ -28,7 +30,14 @@ class ApplicationForm(models.Model): questions = SortedManyToManyField(ApplicationQuestion) corp = models.OneToOneField(EveCorporationInfo, on_delete=models.CASCADE) - def __str__(self): + class Meta: + permissions = ( + # Intentionally Commented out + # AAv0 has these in the Auth_ Content Type + # ('human_resources', 'human_resources')) + ) + + def __str__(self) -> str: return str(self.corp) @@ -40,17 +49,18 @@ class Application(models.Model): reviewer_character = models.ForeignKey(EveCharacter, on_delete=models.SET_NULL, blank=True, null=True) created = models.DateTimeField(auto_now_add=True) - objects = ApplicationManager() - - def __str__(self): - return str(self.user) + " Application To " + str(self.form) + objects: ClassVar[ApplicationManager] = ApplicationManager() class Meta: permissions = ( - ('approve_application', 'Can approve applications'), ('reject_application', 'Can reject applications'), - ('view_apis', 'Can view applicant APIs'),) + ('approve_application', 'Can approve applications'), + ('reject_application', 'Can reject applications'), + ) unique_together = ('form', 'user') + def __str__(self) -> str: + return str(self.user) + " Application To " + str(self.form) + @property def main_character(self): return self.user.profile.main_character @@ -74,12 +84,12 @@ class ApplicationResponse(models.Model): application = models.ForeignKey(Application, on_delete=models.CASCADE, related_name='responses') answer = models.TextField() - def __str__(self): - return str(self.application) + " Answer To " + str(self.question) - class Meta: unique_together = ('question', 'application') + def __str__(self) -> str: + return str(self.application) + " Answer To " + str(self.question) + class ApplicationComment(models.Model): application = models.ForeignKey(Application, on_delete=models.CASCADE, related_name='comments') @@ -87,5 +97,5 @@ class ApplicationComment(models.Model): text = models.TextField() created = models.DateTimeField(auto_now_add=True) - def __str__(self): + def __str__(self) -> str: return str(self.user) + " comment on " + str(self.application) diff --git a/allianceauth/hrapplications/templates/hrapplications/management.html b/allianceauth/hrapplications/templates/hrapplications/management.html index 370b6300..36bf592e 100644 --- a/allianceauth/hrapplications/templates/hrapplications/management.html +++ b/allianceauth/hrapplications/templates/hrapplications/management.html @@ -43,11 +43,11 @@ - + diff --git a/allianceauth/optimer/templates/optimer/management.html b/allianceauth/optimer/templates/optimer/management.html index 437458ca..5cfeb20d 100644 --- a/allianceauth/optimer/templates/optimer/management.html +++ b/allianceauth/optimer/templates/optimer/management.html @@ -24,8 +24,8 @@ {% block content %}
-
- {% translate "Current Eve Time:" %} +
+ {% translate "Current EVE time:" %}
@@ -127,8 +127,8 @@ }; /** - * Get the current Eve time as a string - * @returns {string} Eve time string + * Get the current EVE time as a string + * @returns {string} EVE time string */ const updateClock = () => { document.getElementById("current-time").innerHTML = getCurrentEveTimeString(); diff --git a/allianceauth/optimer/views.py b/allianceauth/optimer/views.py index 760879e6..1b815e7b 100644 --- a/allianceauth/optimer/views.py +++ b/allianceauth/optimer/views.py @@ -1,10 +1,8 @@ import logging from django.contrib import messages -from django.contrib.auth.decorators import login_required -from django.contrib.auth.decorators import permission_required -from django.shortcuts import get_object_or_404 -from django.shortcuts import render, redirect +from django.contrib.auth.decorators import login_required, permission_required +from django.shortcuts import get_object_or_404, redirect, render from django.template.loader import render_to_string from django.utils import timezone from django.utils.translation import gettext_lazy as _ @@ -29,7 +27,7 @@ def optimer_view(request): :rtype: """ - logger.debug("optimer_view called by user %s" % request.user) + logger.debug(f"optimer_view called by user {request.user}") base_query = OpTimer.objects.select_related('eve_character', 'type') render_items = {'optimer': base_query.all(), 'future_timers': base_query.filter( @@ -52,11 +50,11 @@ def add_optimer_view(request): :rtype: """ - logger.debug("add_optimer_view called by user %s" % request.user) + logger.debug(f"add_optimer_view called by user {request.user}") if request.method == 'POST': form = OpForm(request.POST, data_list=OpTimerType.objects.all()) - logger.debug("Request type POST contains form valid: %s" % form.is_valid()) + logger.debug(f"Request type POST contains form valid: {form.is_valid()}") if form.is_valid(): optimer_type = None @@ -141,7 +139,7 @@ def edit_optimer(request, optimer_id): if request.method == 'POST': form = OpForm(request.POST, data_list=OpTimerType.objects.all()) - logger.debug("Received POST request containing update optimer form, is valid: %s" % form.is_valid()) + logger.debug(f"Received POST request containing update optimer form, is valid: {form.is_valid()}") if form.is_valid(): character = request.user.profile.main_character diff --git a/allianceauth/permissions_tool/apps.py b/allianceauth/permissions_tool/apps.py index 2f5e82cb..4d795aba 100644 --- a/allianceauth/permissions_tool/apps.py +++ b/allianceauth/permissions_tool/apps.py @@ -1,6 +1,8 @@ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class PermissionsToolConfig(AppConfig): name = 'allianceauth.permissions_tool' label = 'permissions_tool' + verbose_name = _('Permissions Audit') diff --git a/allianceauth/permissions_tool/auth_hooks.py b/allianceauth/permissions_tool/auth_hooks.py index f89444d5..4171f14c 100644 --- a/allianceauth/permissions_tool/auth_hooks.py +++ b/allianceauth/permissions_tool/auth_hooks.py @@ -1,9 +1,9 @@ -from allianceauth.menu.hooks import MenuItemHook -from . import urls - from allianceauth import hooks +from allianceauth.menu.hooks import MenuItemHook from allianceauth.services.hooks import UrlHook +from . import urls + class PermissionsTool(MenuItemHook): def __init__(self): diff --git a/allianceauth/permissions_tool/models.py b/allianceauth/permissions_tool/models.py index 3a93f94b..19e576fc 100644 --- a/allianceauth/permissions_tool/models.py +++ b/allianceauth/permissions_tool/models.py @@ -5,8 +5,10 @@ class PermissionsTool(models.Model): """ Dummy model for holding permissions """ + class Meta: managed = False - permissions = ( - ('audit_permissions', 'Can audit permissions'), - ) + permissions = (("audit_permissions", "Can audit permissions"),) + + def __str__(self) -> str: + return f"{self.pk}" diff --git a/allianceauth/permissions_tool/templates/permissions_tool/audit.html b/allianceauth/permissions_tool/templates/permissions_tool/audit.html index 3aa50e63..5055dc03 100644 --- a/allianceauth/permissions_tool/templates/permissions_tool/audit.html +++ b/allianceauth/permissions_tool/templates/permissions_tool/audit.html @@ -1,5 +1,6 @@ {% extends "allianceauth/base-bs5.html" %} +{% load aa_i18n %} {% load i18n %} {% block page_title %} @@ -57,11 +58,14 @@ {% include "bundles/datatables-js-bs5.html" %} {% include "bundles/filterdropdown-js.html" %} + {% get_datatables_language_static LANGUAGE_CODE as DT_LANG_PATH %} + {% include 'bundles/jquery-js.html' %} + {% theme_js %} {% if user.is_authenticated %} @@ -137,6 +154,7 @@ {% block extra_javascript %} {% endblock extra_javascript %} + - {% include 'bundles/refresh-notifications-js.html' %} - {% endif %} - {% include 'bundles/evetime-js.html' %} - - {% block extra_javascript %} - {% endblock extra_javascript %} - - - diff --git a/allianceauth/templates/allianceauth/messages.html b/allianceauth/templates/allianceauth/messages.html deleted file mode 100644 index 8303a33c..00000000 --- a/allianceauth/templates/allianceauth/messages.html +++ /dev/null @@ -1,27 +0,0 @@ -{% load i18n %} - -{% if messages %} - {% for message in messages %} - - {% endfor %} -{% endif %} diff --git a/allianceauth/templates/allianceauth/night-toggle.html b/allianceauth/templates/allianceauth/night-toggle.html deleted file mode 100644 index 8a58c8b0..00000000 --- a/allianceauth/templates/allianceauth/night-toggle.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n %} - -
  • - - - {% translate "Night Mode" %} - -
  • diff --git a/allianceauth/templates/allianceauth/opengraph.html b/allianceauth/templates/allianceauth/opengraph.html new file mode 100644 index 00000000..bc960918 --- /dev/null +++ b/allianceauth/templates/allianceauth/opengraph.html @@ -0,0 +1,8 @@ +{% load static %} + + + + + + + diff --git a/allianceauth/templates/allianceauth/top-menu-rh-default.html b/allianceauth/templates/allianceauth/top-menu-rh-default.html index 9f97443f..161173db 100644 --- a/allianceauth/templates/allianceauth/top-menu-rh-default.html +++ b/allianceauth/templates/allianceauth/top-menu-rh-default.html @@ -2,7 +2,7 @@ {% if user.is_authenticated %} diff --git a/allianceauth/templates/allianceauth/top-menu-user-dropdown.html b/allianceauth/templates/allianceauth/top-menu-user-dropdown.html deleted file mode 100644 index a9478e21..00000000 --- a/allianceauth/templates/allianceauth/top-menu-user-dropdown.html +++ /dev/null @@ -1,72 +0,0 @@ -{% load i18n %} -{% load evelinks %} - - diff --git a/allianceauth/templates/allianceauth/top-menu.html b/allianceauth/templates/allianceauth/top-menu.html deleted file mode 100644 index 60914386..00000000 --- a/allianceauth/templates/allianceauth/top-menu.html +++ /dev/null @@ -1,36 +0,0 @@ -{% load i18n %} -{% load static %} -{% load navactive %} - diff --git a/allianceauth/templates/bundles/auth-base-css.html b/allianceauth/templates/bundles/auth-base-css.html index 0ee2e7ce..ce7b4373 100644 --- a/allianceauth/templates/bundles/auth-base-css.html +++ b/allianceauth/templates/bundles/auth-base-css.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/css/auth-base.css' %} diff --git a/allianceauth/templates/bundles/auth-framework-css.html b/allianceauth/templates/bundles/auth-framework-css.html index 9f1c038a..1722377a 100644 --- a/allianceauth/templates/bundles/auth-framework-css.html +++ b/allianceauth/templates/bundles/auth-framework-css.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/framework/css/auth-framework.css' %} diff --git a/allianceauth/templates/bundles/bootstrap-css-bs5.html b/allianceauth/templates/bundles/bootstrap-css-bs5.html index 308ded67..9d080d76 100644 --- a/allianceauth/templates/bundles/bootstrap-css-bs5.html +++ b/allianceauth/templates/bundles/bootstrap-css-bs5.html @@ -1,4 +1,4 @@ {% load static %} - - - + + + diff --git a/allianceauth/templates/bundles/bootstrap-css.html b/allianceauth/templates/bundles/bootstrap-css.html deleted file mode 100644 index bed760ba..00000000 --- a/allianceauth/templates/bundles/bootstrap-css.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load static %} - -{% if NIGHT_MODE %} - {% if debug %} - - - - {% else %} - - {% endif %} -{% else %} - {% if debug %} - - - - {% else %} - - {% endif %} -{% endif %} - diff --git a/allianceauth/templates/bundles/bootstrap-js-bs5.html b/allianceauth/templates/bundles/bootstrap-js-bs5.html index 6f60d2e3..6fadf342 100644 --- a/allianceauth/templates/bundles/bootstrap-js-bs5.html +++ b/allianceauth/templates/bundles/bootstrap-js-bs5.html @@ -1,4 +1,3 @@ - -{##} - - + + + diff --git a/allianceauth/templates/bundles/bootstrap-js.html b/allianceauth/templates/bundles/bootstrap-js.html deleted file mode 100644 index 6447ab7e..00000000 --- a/allianceauth/templates/bundles/bootstrap-js.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/allianceauth/templates/bundles/checkbox-css.html b/allianceauth/templates/bundles/checkbox-css.html index f400d36c..1f2cc08e 100644 --- a/allianceauth/templates/bundles/checkbox-css.html +++ b/allianceauth/templates/bundles/checkbox-css.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/css/checkbox.css' %} diff --git a/allianceauth/templates/bundles/datatables-css-bs5.html b/allianceauth/templates/bundles/datatables-css-bs5.html index 4f015af9..c7c3768c 100644 --- a/allianceauth/templates/bundles/datatables-css-bs5.html +++ b/allianceauth/templates/bundles/datatables-css-bs5.html @@ -1,3 +1,3 @@ - + diff --git a/allianceauth/templates/bundles/datatables-css.html b/allianceauth/templates/bundles/datatables-css.html deleted file mode 100644 index f43dccc0..00000000 --- a/allianceauth/templates/bundles/datatables-css.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/allianceauth/templates/bundles/datatables-js-bs5.html b/allianceauth/templates/bundles/datatables-js-bs5.html index 83691ab5..e44f62c9 100644 --- a/allianceauth/templates/bundles/datatables-js-bs5.html +++ b/allianceauth/templates/bundles/datatables-js-bs5.html @@ -1,4 +1,4 @@ - - + + diff --git a/allianceauth/templates/bundles/datatables-js.html b/allianceauth/templates/bundles/datatables-js.html deleted file mode 100644 index f6afbf86..00000000 --- a/allianceauth/templates/bundles/datatables-js.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/allianceauth/templates/bundles/evetime-js.html b/allianceauth/templates/bundles/evetime-js.html index 63b712c3..6611516e 100644 --- a/allianceauth/templates/bundles/evetime-js.html +++ b/allianceauth/templates/bundles/evetime-js.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/js/eve-time.js' %} diff --git a/allianceauth/templates/bundles/filterdropdown-js.html b/allianceauth/templates/bundles/filterdropdown-js.html index 677fa536..41a0e3bd 100644 --- a/allianceauth/templates/bundles/filterdropdown-js.html +++ b/allianceauth/templates/bundles/filterdropdown-js.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/js/filterDropDown/filterDropDown.min.js' %} diff --git a/allianceauth/templates/bundles/fontawesome.html b/allianceauth/templates/bundles/fontawesome.html index 75191f62..7a47921c 100644 --- a/allianceauth/templates/bundles/fontawesome.html +++ b/allianceauth/templates/bundles/fontawesome.html @@ -1,3 +1,3 @@ - + diff --git a/allianceauth/templates/bundles/image-auth-logo.html b/allianceauth/templates/bundles/image-auth-logo.html index b797e12d..47281028 100644 --- a/allianceauth/templates/bundles/image-auth-logo.html +++ b/allianceauth/templates/bundles/image-auth-logo.html @@ -1,3 +1,3 @@ {% load static %} -{{ SITE_NAME }} +{{ SITE_NAME }} diff --git a/allianceauth/templates/bundles/jquery-ui-css.html b/allianceauth/templates/bundles/jquery-ui-css.html index 3bf4d1a3..9177c19e 100644 --- a/allianceauth/templates/bundles/jquery-ui-css.html +++ b/allianceauth/templates/bundles/jquery-ui-css.html @@ -1,5 +1,6 @@ -{% load static %} - - + +{% load sri %} + +{% sri_static 'allianceauth/js/jquery-ui/1.13.2/css/jquery-ui.min.css' %} diff --git a/allianceauth/templates/bundles/jquery-ui-js.html b/allianceauth/templates/bundles/jquery-ui-js.html index e9e91eae..7dc99461 100644 --- a/allianceauth/templates/bundles/jquery-ui-js.html +++ b/allianceauth/templates/bundles/jquery-ui-js.html @@ -1,3 +1,3 @@ - + diff --git a/allianceauth/templates/bundles/moment-js.html b/allianceauth/templates/bundles/moment-js.html index a094b4be..c1d55df4 100644 --- a/allianceauth/templates/bundles/moment-js.html +++ b/allianceauth/templates/bundles/moment-js.html @@ -1,7 +1,12 @@ +{% load aa_i18n %} + - + + {% if locale and LANGUAGE_CODE != 'en' %} - - + + {% get_momentjs_language_static LANGUAGE_CODE as MOMENTJS_LANG_PATH %} + + {% endif %} diff --git a/allianceauth/templates/bundles/refresh-notification-icon-js.html b/allianceauth/templates/bundles/refresh-notification-icon-js.html index 88f3d16f..69cc53b8 100644 --- a/allianceauth/templates/bundles/refresh-notification-icon-js.html +++ b/allianceauth/templates/bundles/refresh-notification-icon-js.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/js/refresh-notification-icon.js' %} diff --git a/allianceauth/templates/bundles/refresh-notifications-js.html b/allianceauth/templates/bundles/refresh-notifications-js.html index 27622b3e..50b5e8f4 100644 --- a/allianceauth/templates/bundles/refresh-notifications-js.html +++ b/allianceauth/templates/bundles/refresh-notifications-js.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/js/refresh_notifications.js' %} diff --git a/allianceauth/templates/bundles/timerboard-js.html b/allianceauth/templates/bundles/timerboard-js.html index 8cf6f353..8bad97d9 100644 --- a/allianceauth/templates/bundles/timerboard-js.html +++ b/allianceauth/templates/bundles/timerboard-js.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/js/timerboard.js' %} diff --git a/allianceauth/templates/bundles/timers-js.html b/allianceauth/templates/bundles/timers-js.html index b9690202..a570a10d 100644 --- a/allianceauth/templates/bundles/timers-js.html +++ b/allianceauth/templates/bundles/timers-js.html @@ -1,3 +1,3 @@ -{% load static %} +{% load sri %} - +{% sri_static 'allianceauth/js/timers.js' %} diff --git a/allianceauth/templatetags/aa_i18n.py b/allianceauth/templatetags/aa_i18n.py new file mode 100644 index 00000000..2e6f0476 --- /dev/null +++ b/allianceauth/templatetags/aa_i18n.py @@ -0,0 +1,131 @@ +""" +Template tags for language mapping +""" + +from django.conf import settings +from django.template.defaulttags import register +from django.templatetags.static import static + + +@register.simple_tag +def get_datatable_language_code(language: str) -> str: + """ + Get the correct language code for DataTables + + :param language: Django's language code + :type language: str + :return: Mapped language code + :rtype: str + """ + + mapped_language = ( + settings.LANGUAGE_MAPPING["DataTables"].get(language) + if language != "en" + else "" + ) + + return mapped_language + + +@register.simple_tag +def get_momentjs_language_code(language: str) -> str: + """ + Get the correct language code for Moment.JS + + :param language: Django's language code + :type language: str + :return: Mapped language code + :rtype: str + """ + + mapped_language = ( + settings.LANGUAGE_MAPPING["MomentJS"].get(language) if language != "en" else "" + ) + + return mapped_language + + +@register.simple_tag +def get_datatables_language_static(language: str) -> str: + """ + Get the correct language code URL for DataTables + + :param language: Django's language code + :type language: str + :return: Mapped language code + :rtype: str + """ + + mapped_language = get_datatable_language_code(language) + static_url = ( + static( + path=f"allianceauth/libs/DataTables/Plugins/2.2.1/i18n/{mapped_language}.json" + ) + if mapped_language + else "" + ) + + return static_url + +@register.simple_tag +def get_relative_datatables_language_path(language: str) -> str: + """ + Get the correct language code URL for DataTables (relative path to the static folder) + + :param language: Django's language code + :type language: str + :return: Mapped language code + :rtype: str + """ + + mapped_language = get_datatable_language_code(language) + static_url = ( + f"allianceauth/libs/DataTables/Plugins/2.2.1/i18n/{mapped_language}.json" + if mapped_language + else "" + ) + + return static_url + + +@register.simple_tag +def get_momentjs_language_static(language: str) -> str: + """ + Get the correct language code URL for Moment.JS + + :param language: Django's language code + :type language: str + :return: Mapped language code + :rtype: str + """ + + mapped_language = get_momentjs_language_code(language) + + static_url = ( + static(path=f"allianceauth/libs/moment.js/2.29.4/locale/{mapped_language}.js") + if mapped_language + else "" + ) + + return static_url + +@register.simple_tag +def get_relative_momentjs_language_path(language: str) -> str: + """ + Get the correct language code URL for Moment.JS (relative path to the static folder) + + :param language: Django's language code + :type language: str + :return: Mapped language code path + :rtype: str + """ + + mapped_language = get_momentjs_language_code(language) + + static_url = ( + f"allianceauth/libs/moment.js/2.29.4/locale/{mapped_language}.js" + if mapped_language + else "" + ) + + return static_url diff --git a/allianceauth/tests/auth_utils.py b/allianceauth/tests/auth_utils.py index 7f759b84..42c12ca4 100644 --- a/allianceauth/tests/auth_utils.py +++ b/allianceauth/tests/auth_utils.py @@ -1,31 +1,28 @@ -from typing import List - -from django.contrib.auth.models import User, Group, Permission -from django.db.models.signals import m2m_changed, pre_save, post_save +from django.contrib.auth.models import Group, Permission, User +from django.db.models.signals import m2m_changed, post_save, pre_save from django.test import TestCase from esi.models import Token -from allianceauth.authentication.models import ( - UserProfile, State, get_guest_state -) -from allianceauth.eveonline.models import EveCharacter +from allianceauth.authentication.models import State, UserProfile, get_guest_state from allianceauth.authentication.signals import ( + assign_state_on_active_change, + check_state_on_character_update, + reassess_on_profile_save, state_member_alliances_changed, state_member_characters_changed, state_member_corporations_changed, state_saved, - reassess_on_profile_save, - assign_state_on_active_change, - check_state_on_character_update ) +from allianceauth.eveonline.models import EveCharacter from allianceauth.services.signals import ( + disable_services_on_inactive, m2m_changed_group_permissions, - m2m_changed_user_permissions, m2m_changed_state_permissions, - m2m_changed_user_groups, disable_services_on_inactive, + m2m_changed_user_groups, + m2m_changed_user_permissions, process_main_character_change, - process_main_character_update + process_main_character_update, ) @@ -78,6 +75,13 @@ class AuthUtils: except State.DoesNotExist: return cls.create_state('Member', 100, disconnect_signals=True) + @classmethod + def get_blue_state(cls): + try: + return State.objects.get(name='Blue') + except State.DoesNotExist: + return cls.create_state('Blue', 50, disconnect_signals=True) + @classmethod def get_guest_state(cls): cls.disconnect_signals() @@ -262,7 +266,7 @@ class AuthUtils: @classmethod def add_permissions_to_user_by_name( - cls, perms: List[str], user: User, disconnect_signals: bool = True + cls, perms: list[str], user: User, disconnect_signals: bool = True ) -> User: """Add permissions given by name to a user diff --git a/allianceauth/tests/test_auth_utils.py b/allianceauth/tests/test_auth_utils.py index 2fa5215c..4eabfc3c 100644 --- a/allianceauth/tests/test_auth_utils.py +++ b/allianceauth/tests/test_auth_utils.py @@ -1,19 +1,13 @@ -from unittest import mock - -from django.contrib.auth.models import User, Group, Permission +from django.contrib.auth.models import Group, Permission, User from django.test import TestCase -from allianceauth.eveonline.models import ( - EveCorporationInfo, EveAllianceInfo, EveCharacter -) - from .auth_utils import AuthUtils class TestAuthUtils(TestCase): def test_can_create_user(self): - user = AuthUtils.create_user('Bruce Wayne') + AuthUtils.create_user('Bruce Wayne') self.assertTrue(User.objects.filter(username='Bruce Wayne').exists()) def test_can_add_main_character_2(self): diff --git a/allianceauth/tests/test_urls.py b/allianceauth/tests/test_urls.py index 95315b8d..621ce0ed 100644 --- a/allianceauth/tests/test_urls.py +++ b/allianceauth/tests/test_urls.py @@ -1,5 +1,6 @@ from unittest import TestCase -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch + from django.urls import URLPattern from allianceauth.services.hooks import UrlHook diff --git a/allianceauth/theme/bootstrap/auth_hooks.py b/allianceauth/theme/bootstrap/auth_hooks.py index 887a6220..2a20cf2e 100644 --- a/allianceauth/theme/bootstrap/auth_hooks.py +++ b/allianceauth/theme/bootstrap/auth_hooks.py @@ -1,7 +1,6 @@ from allianceauth import hooks from allianceauth.theme.hooks import ThemeHook - CSS_STATICS = [{ "url": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css", "integrity": "sha512-jnSuA4Ss2PkkikSOLtYs8BlYIeeIK1h99ty4YfvRPAlzr377vr3CXDb7sb7eEEBYjDtcYj+AjBH3FLv5uSJuXg==" diff --git a/allianceauth/theme/hooks.py b/allianceauth/theme/hooks.py index 6156e96f..fe818d1a 100644 --- a/allianceauth/theme/hooks.py +++ b/allianceauth/theme/hooks.py @@ -1,6 +1,3 @@ -from typing import List, Optional, Union - - class ThemeHook: """ Theme hook for injecting a Bootstrap 5 Theme and associated JS into alliance auth. @@ -10,13 +7,13 @@ class ThemeHook: def __init__(self, name: str, description: str, - css: List[dict], - js: List[dict], - css_template: Optional[str] = None, - js_template: Optional[str] = None, - js_type: Optional[str] = None, - html_tags: Optional[Union[dict, str]] = None, - header_padding: Optional[str] = "4em" + css: list[dict], + js: list[dict], + css_template: str | None = None, + js_template: str | None = None, + js_type: str | None = None, + html_tags: dict | str | None = None, + header_padding: str | None = "4em" ): """ :param name: Theme python name diff --git a/allianceauth/theme/templates/theme/theme_select.html b/allianceauth/theme/templates/theme/theme_select.html index c83b7726..7e94d1c5 100644 --- a/allianceauth/theme/templates/theme/theme_select.html +++ b/allianceauth/theme/templates/theme/theme_select.html @@ -1,13 +1,21 @@ {% load i18n %} -
    - {% csrf_token %} +{% if themes|length > 1 %} +
  • - - + + + +{% endif %} diff --git a/allianceauth/theme/templatetags/theme_tags.py b/allianceauth/theme/templatetags/theme_tags.py index 68a7ab4e..503482b9 100644 --- a/allianceauth/theme/templatetags/theme_tags.py +++ b/allianceauth/theme/templatetags/theme_tags.py @@ -58,7 +58,7 @@ def theme_html_tags(context): def header_padding_size(context): request = context['request'] theme = get_theme(request) - return getattr(theme, "header_padding") + return theme.header_padding @register.inclusion_tag('theme/theme_imports_js.html', takes_context=True) diff --git a/allianceauth/thirdparty/navhelper/templatetags/navactive.py b/allianceauth/thirdparty/navhelper/templatetags/navactive.py index f9b34610..d54028b4 100644 --- a/allianceauth/thirdparty/navhelper/templatetags/navactive.py +++ b/allianceauth/thirdparty/navhelper/templatetags/navactive.py @@ -21,11 +21,12 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +import re + +from django.conf import settings from django.template import Library from django.urls import resolve from django.urls.exceptions import Resolver404 -from django.conf import settings -import re register = Library() diff --git a/allianceauth/thirdparty/navhelper/tests.py b/allianceauth/thirdparty/navhelper/tests.py index afe9d878..4b580195 100644 --- a/allianceauth/thirdparty/navhelper/tests.py +++ b/allianceauth/thirdparty/navhelper/tests.py @@ -24,7 +24,7 @@ THE SOFTWARE. # -*- coding: utf-8 -*- from django.template import Context, Template -from django.test import TestCase, RequestFactory +from django.test import RequestFactory, TestCase class NavhelperTemplateTagTests(TestCase): diff --git a/allianceauth/thirdparty/telnetlib/LICENSE b/allianceauth/thirdparty/telnetlib/LICENSE new file mode 100644 index 00000000..3e992499 --- /dev/null +++ b/allianceauth/thirdparty/telnetlib/LICENSE @@ -0,0 +1,283 @@ +# +# This license applies to the included telnetlib.py code only +# + +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see https://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations, which became +Zope Corporation. In 2001, the Python Software Foundation (PSF, see +https://www.python.org/psf/) was formed, a non-profit organization +created specifically to own Python-related Intellectual Property. +Zope Corporation was a sponsoring member of the PSF. + +All Python releases are Open Source (see https://opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +Python software and documentation are licensed under the +Python Software Foundation License Version 2. + +Starting with Python 3.8.6, examples, recipes, and other code in +the documentation are dual licensed under the PSF License Version 2 +and the Zero-Clause BSD license. + +Some software incorporated into Python is under different licenses. +The licenses are listed with code falling under that license. + + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative version +prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION +---------------------------------------------------------------------- + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/allianceauth/thirdparty/telnetlib/README b/allianceauth/thirdparty/telnetlib/README new file mode 100644 index 00000000..e720c382 --- /dev/null +++ b/allianceauth/thirdparty/telnetlib/README @@ -0,0 +1,5 @@ + +From https://github.com/python/cpython/blob/v3.12.9/Lib/telnetlib.py +Tag: v3.12.9 + +Licensed as per the included LICENSE file in this directory. diff --git a/allianceauth/thirdparty/telnetlib/telnetlib.py b/allianceauth/thirdparty/telnetlib/telnetlib.py new file mode 100644 index 00000000..7ccc1643 --- /dev/null +++ b/allianceauth/thirdparty/telnetlib/telnetlib.py @@ -0,0 +1,680 @@ +r"""TELNET client class. + +Based on RFC 854: TELNET Protocol Specification, by J. Postel and +J. Reynolds + +Example: + +>>> from telnetlib import Telnet +>>> tn = Telnet('www.python.org', 79) # connect to finger port +>>> tn.write(b'guido\r\n') +>>> print(tn.read_all()) +Login Name TTY Idle When Where +guido Guido van Rossum pts/2 snag.cnri.reston.. + +>>> + +Note that read_all() won't read until eof -- it just reads some data +-- but it guarantees to read at least one byte unless EOF is hit. + +It is possible to pass a Telnet object to a selector in order to wait until +more data is available. Note that in this case, read_eager() may return b'' +even if there was data on the socket, because the protocol negotiation may have +eaten the data. This is why EOFError is needed in some cases to distinguish +between "no data" and "connection closed" (since the socket also appears ready +for reading when it is closed). + +To do: +- option negotiation +- timeout should be intrinsic to the connection object instead of an + option on one of the read calls only + +""" + + +# Imported modules +import sys +import socket +import selectors +from time import monotonic as _time +# import warnings + +# warnings._deprecated(__name__, remove=(3, 13)) + +__all__ = ["Telnet"] + +# Tunable parameters +DEBUGLEVEL = 0 + +# Telnet protocol defaults +TELNET_PORT = 23 + +# Telnet protocol characters (don't change) +IAC = bytes([255]) # "Interpret As Command" +DONT = bytes([254]) +DO = bytes([253]) +WONT = bytes([252]) +WILL = bytes([251]) +theNULL = bytes([0]) + +SE = bytes([240]) # Subnegotiation End +NOP = bytes([241]) # No Operation +DM = bytes([242]) # Data Mark +BRK = bytes([243]) # Break +IP = bytes([244]) # Interrupt process +AO = bytes([245]) # Abort output +AYT = bytes([246]) # Are You There +EC = bytes([247]) # Erase Character +EL = bytes([248]) # Erase Line +GA = bytes([249]) # Go Ahead +SB = bytes([250]) # Subnegotiation Begin + + +# Telnet protocol options code (don't change) +# These ones all come from arpa/telnet.h +BINARY = bytes([0]) # 8-bit data path +ECHO = bytes([1]) # echo +RCP = bytes([2]) # prepare to reconnect +SGA = bytes([3]) # suppress go ahead +NAMS = bytes([4]) # approximate message size +STATUS = bytes([5]) # give status +TM = bytes([6]) # timing mark +RCTE = bytes([7]) # remote controlled transmission and echo +NAOL = bytes([8]) # negotiate about output line width +NAOP = bytes([9]) # negotiate about output page size +NAOCRD = bytes([10]) # negotiate about CR disposition +NAOHTS = bytes([11]) # negotiate about horizontal tabstops +NAOHTD = bytes([12]) # negotiate about horizontal tab disposition +NAOFFD = bytes([13]) # negotiate about formfeed disposition +NAOVTS = bytes([14]) # negotiate about vertical tab stops +NAOVTD = bytes([15]) # negotiate about vertical tab disposition +NAOLFD = bytes([16]) # negotiate about output LF disposition +XASCII = bytes([17]) # extended ascii character set +LOGOUT = bytes([18]) # force logout +BM = bytes([19]) # byte macro +DET = bytes([20]) # data entry terminal +SUPDUP = bytes([21]) # supdup protocol +SUPDUPOUTPUT = bytes([22]) # supdup output +SNDLOC = bytes([23]) # send location +TTYPE = bytes([24]) # terminal type +EOR = bytes([25]) # end or record +TUID = bytes([26]) # TACACS user identification +OUTMRK = bytes([27]) # output marking +TTYLOC = bytes([28]) # terminal location number +VT3270REGIME = bytes([29]) # 3270 regime +X3PAD = bytes([30]) # X.3 PAD +NAWS = bytes([31]) # window size +TSPEED = bytes([32]) # terminal speed +LFLOW = bytes([33]) # remote flow control +LINEMODE = bytes([34]) # Linemode option +XDISPLOC = bytes([35]) # X Display Location +OLD_ENVIRON = bytes([36]) # Old - Environment variables +AUTHENTICATION = bytes([37]) # Authenticate +ENCRYPT = bytes([38]) # Encryption option +NEW_ENVIRON = bytes([39]) # New - Environment variables +# the following ones come from +# http://www.iana.org/assignments/telnet-options +# Unfortunately, that document does not assign identifiers +# to all of them, so we are making them up +TN3270E = bytes([40]) # TN3270E +XAUTH = bytes([41]) # XAUTH +CHARSET = bytes([42]) # CHARSET +RSP = bytes([43]) # Telnet Remote Serial Port +COM_PORT_OPTION = bytes([44]) # Com Port Control Option +SUPPRESS_LOCAL_ECHO = bytes([45]) # Telnet Suppress Local Echo +TLS = bytes([46]) # Telnet Start TLS +KERMIT = bytes([47]) # KERMIT +SEND_URL = bytes([48]) # SEND-URL +FORWARD_X = bytes([49]) # FORWARD_X +PRAGMA_LOGON = bytes([138]) # TELOPT PRAGMA LOGON +SSPI_LOGON = bytes([139]) # TELOPT SSPI LOGON +PRAGMA_HEARTBEAT = bytes([140]) # TELOPT PRAGMA HEARTBEAT +EXOPL = bytes([255]) # Extended-Options-List +NOOPT = bytes([0]) + + +# poll/select have the advantage of not requiring any extra file descriptor, +# contrarily to epoll/kqueue (also, they require a single syscall). +if hasattr(selectors, 'PollSelector'): + _TelnetSelector = selectors.PollSelector +else: + _TelnetSelector = selectors.SelectSelector + + +class Telnet: + + """Telnet interface class. + + An instance of this class represents a connection to a telnet + server. The instance is initially not connected; the open() + method must be used to establish a connection. Alternatively, the + host name and optional port number can be passed to the + constructor, too. + + Don't try to reopen an already connected instance. + + This class has many read_*() methods. Note that some of them + raise EOFError when the end of the connection is read, because + they can return an empty string for other reasons. See the + individual doc strings. + + read_until(expected, [timeout]) + Read until the expected string has been seen, or a timeout is + hit (default is no timeout); may block. + + read_all() + Read all data until EOF; may block. + + read_some() + Read at least one byte or EOF; may block. + + read_very_eager() + Read all data available already queued or on the socket, + without blocking. + + read_eager() + Read either data already queued or some data available on the + socket, without blocking. + + read_lazy() + Read all data in the raw queue (processing it first), without + doing any socket I/O. + + read_very_lazy() + Reads all data in the cooked queue, without doing any socket + I/O. + + read_sb_data() + Reads available data between SB ... SE sequence. Don't block. + + set_option_negotiation_callback(callback) + Each time a telnet option is read on the input flow, this callback + (if set) is called with the following parameters : + callback(telnet socket, command, option) + option will be chr(0) when there is no option. + No other action is done afterwards by telnetlib. + + """ + sock = None # for __del__() + + def __init__(self, host=None, port=0, + timeout=socket._GLOBAL_DEFAULT_TIMEOUT): + """Constructor. + + When called without arguments, create an unconnected instance. + With a hostname argument, it connects the instance; port number + and timeout are optional. + """ + self.debuglevel = DEBUGLEVEL + self.host = host + self.port = port + self.timeout = timeout + self.sock = None + self.rawq = b'' + self.irawq = 0 + self.cookedq = b'' + self.eof = 0 + self.iacseq = b'' # Buffer for IAC sequence. + self.sb = 0 # flag for SB and SE sequence. + self.sbdataq = b'' + self.option_callback = None + if host is not None: + self.open(host, port, timeout) + + def open(self, host, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): + """Connect to a host. + + The optional second argument is the port number, which + defaults to the standard telnet port (23). + + Don't try to reopen an already connected instance. + """ + self.eof = 0 + if not port: + port = TELNET_PORT + self.host = host + self.port = port + self.timeout = timeout + sys.audit("telnetlib.Telnet.open", self, host, port) + self.sock = socket.create_connection((host, port), timeout) + + def __del__(self): + """Destructor -- close the connection.""" + self.close() + + def msg(self, msg, *args): + """Print a debug message, when the debug level is > 0. + + If extra arguments are present, they are substituted in the + message using the standard string formatting operator. + + """ + if self.debuglevel > 0: + print('Telnet(%s,%s):' % (self.host, self.port), end=' ') + if args: + print(msg % args) + else: + print(msg) + + def set_debuglevel(self, debuglevel): + """Set the debug level. + + The higher it is, the more debug output you get (on sys.stdout). + + """ + self.debuglevel = debuglevel + + def close(self): + """Close the connection.""" + sock = self.sock + self.sock = None + self.eof = True + self.iacseq = b'' + self.sb = 0 + if sock: + sock.close() + + def get_socket(self): + """Return the socket object used internally.""" + return self.sock + + def fileno(self): + """Return the fileno() of the socket object used internally.""" + return self.sock.fileno() + + def write(self, buffer): + """Write a string to the socket, doubling any IAC characters. + + Can block if the connection is blocked. May raise + OSError if the connection is closed. + + """ + if IAC in buffer: + buffer = buffer.replace(IAC, IAC+IAC) + sys.audit("telnetlib.Telnet.write", self, buffer) + self.msg("send %r", buffer) + self.sock.sendall(buffer) + + def read_until(self, match, timeout=None): + """Read until a given string is encountered or until timeout. + + When no match is found, return whatever is available instead, + possibly the empty string. Raise EOFError if the connection + is closed and no cooked data is available. + + """ + n = len(match) + self.process_rawq() + i = self.cookedq.find(match) + if i >= 0: + i = i+n + buf = self.cookedq[:i] + self.cookedq = self.cookedq[i:] + return buf + if timeout is not None: + deadline = _time() + timeout + with _TelnetSelector() as selector: + selector.register(self, selectors.EVENT_READ) + while not self.eof: + if selector.select(timeout): + i = max(0, len(self.cookedq)-n) + self.fill_rawq() + self.process_rawq() + i = self.cookedq.find(match, i) + if i >= 0: + i = i+n + buf = self.cookedq[:i] + self.cookedq = self.cookedq[i:] + return buf + if timeout is not None: + timeout = deadline - _time() + if timeout < 0: + break + return self.read_very_lazy() + + def read_all(self): + """Read all data until EOF; block until connection closed.""" + self.process_rawq() + while not self.eof: + self.fill_rawq() + self.process_rawq() + buf = self.cookedq + self.cookedq = b'' + return buf + + def read_some(self): + """Read at least one byte of cooked data unless EOF is hit. + + Return b'' if EOF is hit. Block if no data is immediately + available. + + """ + self.process_rawq() + while not self.cookedq and not self.eof: + self.fill_rawq() + self.process_rawq() + buf = self.cookedq + self.cookedq = b'' + return buf + + def read_very_eager(self): + """Read everything that's possible without blocking in I/O (eager). + + Raise EOFError if connection closed and no cooked data + available. Return b'' if no cooked data available otherwise. + Don't block unless in the midst of an IAC sequence. + + """ + self.process_rawq() + while not self.eof and self.sock_avail(): + self.fill_rawq() + self.process_rawq() + return self.read_very_lazy() + + def read_eager(self): + """Read readily available data. + + Raise EOFError if connection closed and no cooked data + available. Return b'' if no cooked data available otherwise. + Don't block unless in the midst of an IAC sequence. + + """ + self.process_rawq() + while not self.cookedq and not self.eof and self.sock_avail(): + self.fill_rawq() + self.process_rawq() + return self.read_very_lazy() + + def read_lazy(self): + """Process and return data that's already in the queues (lazy). + + Raise EOFError if connection closed and no data available. + Return b'' if no cooked data available otherwise. Don't block + unless in the midst of an IAC sequence. + + """ + self.process_rawq() + return self.read_very_lazy() + + def read_very_lazy(self): + """Return any data available in the cooked queue (very lazy). + + Raise EOFError if connection closed and no data available. + Return b'' if no cooked data available otherwise. Don't block. + + """ + buf = self.cookedq + self.cookedq = b'' + if not buf and self.eof and not self.rawq: + raise EOFError('telnet connection closed') + return buf + + def read_sb_data(self): + """Return any data available in the SB ... SE queue. + + Return b'' if no SB ... SE available. Should only be called + after seeing a SB or SE command. When a new SB command is + found, old unread SB data will be discarded. Don't block. + + """ + buf = self.sbdataq + self.sbdataq = b'' + return buf + + def set_option_negotiation_callback(self, callback): + """Provide a callback function called after each receipt of a telnet option.""" + self.option_callback = callback + + def process_rawq(self): + """Transfer from raw queue to cooked queue. + + Set self.eof when connection is closed. Don't block unless in + the midst of an IAC sequence. + + """ + buf = [b'', b''] + try: + while self.rawq: + c = self.rawq_getchar() + if not self.iacseq: + if c == theNULL: + continue + if c == b"\021": + continue + if c != IAC: + buf[self.sb] = buf[self.sb] + c + continue + else: + self.iacseq += c + elif len(self.iacseq) == 1: + # 'IAC: IAC CMD [OPTION only for WILL/WONT/DO/DONT]' + if c in (DO, DONT, WILL, WONT): + self.iacseq += c + continue + + self.iacseq = b'' + if c == IAC: + buf[self.sb] = buf[self.sb] + c + else: + if c == SB: # SB ... SE start. + self.sb = 1 + self.sbdataq = b'' + elif c == SE: + self.sb = 0 + self.sbdataq = self.sbdataq + buf[1] + buf[1] = b'' + if self.option_callback: + # Callback is supposed to look into + # the sbdataq + self.option_callback(self.sock, c, NOOPT) + else: + # We can't offer automatic processing of + # suboptions. Alas, we should not get any + # unless we did a WILL/DO before. + self.msg('IAC %d not recognized' % ord(c)) + elif len(self.iacseq) == 2: + cmd = self.iacseq[1:2] + self.iacseq = b'' + opt = c + if cmd in (DO, DONT): + self.msg('IAC %s %d', + cmd == DO and 'DO' or 'DONT', ord(opt)) + if self.option_callback: + self.option_callback(self.sock, cmd, opt) + else: + self.sock.sendall(IAC + WONT + opt) + elif cmd in (WILL, WONT): + self.msg('IAC %s %d', + cmd == WILL and 'WILL' or 'WONT', ord(opt)) + if self.option_callback: + self.option_callback(self.sock, cmd, opt) + else: + self.sock.sendall(IAC + DONT + opt) + except EOFError: # raised by self.rawq_getchar() + self.iacseq = b'' # Reset on EOF + self.sb = 0 + self.cookedq = self.cookedq + buf[0] + self.sbdataq = self.sbdataq + buf[1] + + def rawq_getchar(self): + """Get next char from raw queue. + + Block if no data is immediately available. Raise EOFError + when connection is closed. + + """ + if not self.rawq: + self.fill_rawq() + if self.eof: + raise EOFError + c = self.rawq[self.irawq:self.irawq+1] + self.irawq = self.irawq + 1 + if self.irawq >= len(self.rawq): + self.rawq = b'' + self.irawq = 0 + return c + + def fill_rawq(self): + """Fill raw queue from exactly one recv() system call. + + Block if no data is immediately available. Set self.eof when + connection is closed. + + """ + if self.irawq >= len(self.rawq): + self.rawq = b'' + self.irawq = 0 + # The buffer size should be fairly small so as to avoid quadratic + # behavior in process_rawq() above + buf = self.sock.recv(50) + self.msg("recv %r", buf) + self.eof = (not buf) + self.rawq = self.rawq + buf + + def sock_avail(self): + """Test whether data is available on the socket.""" + with _TelnetSelector() as selector: + selector.register(self, selectors.EVENT_READ) + return bool(selector.select(0)) + + def interact(self): + """Interaction function, emulates a very dumb telnet client.""" + if sys.platform == "win32": + self.mt_interact() + return + with _TelnetSelector() as selector: + selector.register(self, selectors.EVENT_READ) + selector.register(sys.stdin, selectors.EVENT_READ) + + while True: + for key, events in selector.select(): + if key.fileobj is self: + try: + text = self.read_eager() + except EOFError: + print('*** Connection closed by remote host ***') + return + if text: + sys.stdout.write(text.decode('ascii')) + sys.stdout.flush() + elif key.fileobj is sys.stdin: + line = sys.stdin.readline().encode('ascii') + if not line: + return + self.write(line) + + def mt_interact(self): + """Multithreaded version of interact().""" + import _thread + _thread.start_new_thread(self.listener, ()) + while 1: + line = sys.stdin.readline() + if not line: + break + self.write(line.encode('ascii')) + + def listener(self): + """Helper for mt_interact() -- this executes in the other thread.""" + while 1: + try: + data = self.read_eager() + except EOFError: + print('*** Connection closed by remote host ***') + return + if data: + sys.stdout.write(data.decode('ascii')) + else: + sys.stdout.flush() + + def expect(self, list, timeout=None): + """Read until one from a list of a regular expressions matches. + + The first argument is a list of regular expressions, either + compiled (re.Pattern instances) or uncompiled (strings). + The optional second argument is a timeout, in seconds; default + is no timeout. + + Return a tuple of three items: the index in the list of the + first regular expression that matches; the re.Match object + returned; and the text read up till and including the match. + + If EOF is read and no text was read, raise EOFError. + Otherwise, when nothing matches, return (-1, None, text) where + text is the text received so far (may be the empty string if a + timeout happened). + + If a regular expression ends with a greedy match (e.g. '.*') + or if more than one expression can match the same input, the + results are undeterministic, and may depend on the I/O timing. + + """ + re = None + list = list[:] + indices = range(len(list)) + for i in indices: + if not hasattr(list[i], "search"): + if not re: import re + list[i] = re.compile(list[i]) + if timeout is not None: + deadline = _time() + timeout + with _TelnetSelector() as selector: + selector.register(self, selectors.EVENT_READ) + while not self.eof: + self.process_rawq() + for i in indices: + m = list[i].search(self.cookedq) + if m: + e = m.end() + text = self.cookedq[:e] + self.cookedq = self.cookedq[e:] + return (i, m, text) + if timeout is not None: + ready = selector.select(timeout) + timeout = deadline - _time() + if not ready: + if timeout < 0: + break + else: + continue + self.fill_rawq() + text = self.read_very_lazy() + if not text and self.eof: + raise EOFError + return (-1, None, text) + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() + + +def test(): + """Test program for telnetlib. + + Usage: python telnetlib.py [-d] ... [host [port]] + + Default host is localhost; default port is 23. + + """ + debuglevel = 0 + while sys.argv[1:] and sys.argv[1] == '-d': + debuglevel = debuglevel+1 + del sys.argv[1] + host = 'localhost' + if sys.argv[1:]: + host = sys.argv[1] + port = 0 + if sys.argv[2:]: + portstr = sys.argv[2] + try: + port = int(portstr) + except ValueError: + port = socket.getservbyname(portstr, 'tcp') + with Telnet() as tn: + tn.set_debuglevel(debuglevel) + tn.open(host, port, timeout=0.5) + tn.interact() + +if __name__ == '__main__': + test() diff --git a/allianceauth/timerboard/apps.py b/allianceauth/timerboard/apps.py index ef872491..26759601 100644 --- a/allianceauth/timerboard/apps.py +++ b/allianceauth/timerboard/apps.py @@ -1,6 +1,8 @@ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class TimerBoardConfig(AppConfig): name = 'allianceauth.timerboard' label = 'timerboard' + verbose_name = _('Structure Timers') diff --git a/allianceauth/timerboard/auth_hooks.py b/allianceauth/timerboard/auth_hooks.py index 68bb2a6f..2fa01acb 100644 --- a/allianceauth/timerboard/auth_hooks.py +++ b/allianceauth/timerboard/auth_hooks.py @@ -1,8 +1,8 @@ +from allianceauth import hooks from allianceauth.menu.hooks import MenuItemHook from allianceauth.services.hooks import UrlHook - -from allianceauth import hooks from allianceauth.timerboard.views import dashboard_timers + from . import urls diff --git a/allianceauth/timerboard/form.py b/allianceauth/timerboard/form.py index 52aab92d..1d14319c 100644 --- a/allianceauth/timerboard/form.py +++ b/allianceauth/timerboard/form.py @@ -23,7 +23,7 @@ class TimerForm(forms.ModelForm): # for appropriate fields current_time = timezone.now() td = kwargs['instance'].eve_time - current_time - initial = kwargs.pop('initial', dict()) + initial = kwargs.pop('initial', {}) if 'days_left' not in initial: initial.update({'days_left': td.days}) if 'hours_left' not in initial: @@ -66,7 +66,7 @@ class TimerForm(forms.ModelForm): future_time = datetime.timedelta(days=days_left, hours=hours_left, minutes=minutes_left) current_time = timezone.now() eve_time = current_time + future_time - logger.debug(f"Determined timer eve time is {eve_time} - current time {current_time}, adding {future_time}") + logger.debug(f"Determined timer EVE time is {eve_time} - current time {current_time}, adding {future_time}") elif absolute_time: # Use absolute time eve_time = absolute_time diff --git a/allianceauth/timerboard/migrations/0001_initial.py b/allianceauth/timerboard/migrations/0001_initial.py index 6f8d5e1c..6f434eb3 100644 --- a/allianceauth/timerboard/migrations/0001_initial.py +++ b/allianceauth/timerboard/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 1.10.1 on 2016-09-05 21:40 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/allianceauth/timerboard/migrations/0003_on_delete.py b/allianceauth/timerboard/migrations/0003_on_delete.py index 1a3013b0..765afc34 100644 --- a/allianceauth/timerboard/migrations/0003_on_delete.py +++ b/allianceauth/timerboard/migrations/0003_on_delete.py @@ -1,8 +1,8 @@ # Generated by Django 1.11.5 on 2017-09-28 02:16 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/allianceauth/timerboard/migrations/0007_alter_timer_structure.py b/allianceauth/timerboard/migrations/0007_alter_timer_structure.py new file mode 100644 index 00000000..26513513 --- /dev/null +++ b/allianceauth/timerboard/migrations/0007_alter_timer_structure.py @@ -0,0 +1,45 @@ +# Generated by Django 4.2.17 on 2025-01-06 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("timerboard", "0006_alter_timer_objective_alter_timer_structure_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="timer", + name="structure", + field=models.CharField( + choices=[ + ("POCO", "POCO"), + ("Orbital Skyhook", "Orbital Skyhook"), + ("I-HUB", "Sovereignty Hub"), + ("TCU", "TCU"), + ("POS[S]", "POS [S]"), + ("POS[M]", "POS [M]"), + ("POS[L]", "POS [L]"), + ("Astrahus", "Astrahus"), + ("Fortizar", "Fortizar"), + ("Keepstar", "Keepstar"), + ("Raitaru", "Raitaru"), + ("Azbel", "Azbel"), + ("Sotiyo", "Sotiyo"), + ("Athanor", "Athanor"), + ("Tatara", "Tatara"), + ("Pharolux Cyno Beacon", "Cyno Beacon"), + ("Tenebrex Cyno Jammer", "Cyno Jammer"), + ("Ansiblex Jump Gate", "Ansiblex Jump Gate"), + ("Mercenary Den", "Mercenary Den"), + ("Moon Mining Cycle", "Moon Mining Cycle"), + ("Metenox Moon Drill", "Metenox Moon Drill"), + ("Other", "Other"), + ], + default="Other", + max_length=254, + ), + ), + ] diff --git a/allianceauth/timerboard/migrations/0008_alter_timer_timer_type.py b/allianceauth/timerboard/migrations/0008_alter_timer_timer_type.py new file mode 100644 index 00000000..a7838056 --- /dev/null +++ b/allianceauth/timerboard/migrations/0008_alter_timer_timer_type.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.16 on 2025-03-26 20:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('timerboard', '0007_alter_timer_structure'), + ] + + operations = [ + migrations.AlterField( + model_name='timer', + name='timer_type', + field=models.CharField(choices=[('UNSPECIFIED', 'Not Specified'), ('SHIELD', 'Shield'), ('ARMOR', 'Armor'), ('HULL', 'Hull'), ('FINAL', 'Final'), ('ANCHORING', 'Anchoring'), ('UNANCHORING', 'Unanchoring'), ('ABANDONED', 'Abandoned'), ('THEFT', 'Theft')], default='UNSPECIFIED', max_length=254), + ), + ] diff --git a/allianceauth/timerboard/migrations/0008_v5squash.py b/allianceauth/timerboard/migrations/0008_v5squash.py new file mode 100644 index 00000000..d696443f --- /dev/null +++ b/allianceauth/timerboard/migrations/0008_v5squash.py @@ -0,0 +1,55 @@ +# Generated by Django 5.1.6 on 2025-03-04 01:27 + +from django.conf import settings +from django.db import migrations, models + + +def create_permissions(apps, schema_editor) -> None: + # Remnant of AAv0 + User = apps.get_model('auth', 'User') + ContentType = apps.get_model('contenttypes', 'ContentType') + Permission = apps.get_model('auth', 'Permission') + ct = ContentType.objects.get_for_model(User) + Permission.objects.get_or_create(codename="timer_management", content_type=ct, name="timer_management") + Permission.objects.get_or_create(codename="timer_view", content_type=ct, name="timer_view") + + +def reverse(apps, schema_editor) -> None: + pass + + +class Migration(migrations.Migration): + + replaces = [('timerboard', '0001_initial'), ('timerboard', '0002_make_strings_more_stringy'), ('timerboard', '0003_on_delete'), ('timerboard', '0004_timer_type'), ('timerboard', '0005_alter_timer_planet_moon'), ('timerboard', '0006_alter_timer_objective_alter_timer_structure_and_more'), ('timerboard', '0007_alter_timer_structure')] + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('eveonline', '0019_v5squash'), + ] + + operations = [ + migrations.CreateModel( + name='Timer', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('details', models.CharField(default='', max_length=254)), + ('system', models.CharField(default='', max_length=254)), + ('planet_moon', models.CharField(blank=True, default='', max_length=254)), + ('structure', models.CharField(choices=[('POCO', 'POCO'), ('Orbital Skyhook', 'Orbital Skyhook'), ('I-HUB', 'Sovereignty Hub'), ('TCU', 'TCU'), ('POS[S]', 'POS [S]'), ('POS[M]', 'POS [M]'), ('POS[L]', 'POS [L]'), ('Astrahus', 'Astrahus'), ('Fortizar', 'Fortizar'), ('Keepstar', 'Keepstar'), ('Raitaru', 'Raitaru'), ('Azbel', 'Azbel'), ('Sotiyo', 'Sotiyo'), ('Athanor', 'Athanor'), ('Tatara', 'Tatara'), ('Pharolux Cyno Beacon', 'Cyno Beacon'), ('Tenebrex Cyno Jammer', 'Cyno Jammer'), ('Ansiblex Jump Gate', 'Ansiblex Jump Gate'), ('Mercenary Den', 'Mercenary Den'), ('Moon Mining Cycle', 'Moon Mining Cycle'), ('Metenox Moon Drill', 'Metenox Moon Drill'), ('Other', 'Other')], default='Other', max_length=254)), + ('objective', models.CharField(choices=[('Friendly', 'Friendly'), ('Hostile', 'Hostile'), ('Neutral', 'Neutral')], default='Neutral', max_length=254)), + ('eve_time', models.DateTimeField()), + ('important', models.BooleanField(default=False)), + ('corp_timer', models.BooleanField(default=False)), + ('eve_character', models.ForeignKey(null=True, on_delete=models.deletion.SET_NULL, to='eveonline.evecharacter')), + ('eve_corp', models.ForeignKey(on_delete=models.deletion.CASCADE, to='eveonline.evecorporationinfo')), + ('user', models.ForeignKey(null=True, on_delete=models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), + ('timer_type', models.CharField(choices=[('UNSPECIFIED', 'Not Specified'), ('SHIELD', 'Shield'), ('ARMOR', 'Armor'), ('HULL', 'Hull'), ('FINAL', 'Final'), ('ANCHORING', 'Anchoring'), ('UNANCHORING', 'Unanchoring'), ('ABANDONED', 'Abandoned')], default='UNSPECIFIED', max_length=254)), + ], + options={ + 'ordering': ['eve_time'], + }, + ), + migrations.RunPython(create_permissions, reverse) + ] diff --git a/allianceauth/timerboard/models.py b/allianceauth/timerboard/models.py index d4127c9b..c1703bdd 100644 --- a/allianceauth/timerboard/models.py +++ b/allianceauth/timerboard/models.py @@ -1,9 +1,8 @@ from django.contrib.auth.models import User from django.db import models -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ -from allianceauth.eveonline.models import EveCharacter -from allianceauth.eveonline.models import EveCorporationInfo +from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo class Timer(models.Model): @@ -23,7 +22,7 @@ class Timer(models.Model): POCO = "POCO", _("POCO") ORBITALSKYHOOK = "Orbital Skyhook", _("Orbital Skyhook") - IHUB = "I-HUB", _("I-HUB") + IHUB = "I-HUB", _("Sovereignty Hub") TCU = "TCU", _("TCU") # Pending Remval POSS = "POS[S]", _("POS [S]") POSM = "POS[M]", _("POS [M]") @@ -36,9 +35,10 @@ class Timer(models.Model): SOTIYO = "Sotiyo", _("Sotiyo") ATHANOR = "Athanor", _("Athanor") TATARA = "Tatara", _("Tatara") - PHAROLUX = "Pharolux Cyno Beacon", _("Pharolux Cyno Beacon") - TENEBREX = "Tenebrex Cyno Jammer", _("Tenebrex Cyno Jammer") + PHAROLUX = "Pharolux Cyno Beacon", _("Cyno Beacon") + TENEBREX = "Tenebrex Cyno Jammer", _("Cyno Jammer") ANSIBLEX = "Ansiblex Jump Gate", _("Ansiblex Jump Gate") + MERCDEN = "Mercenary Den", _("Mercenary Den") MOONPOP = "Moon Mining Cycle", _("Moon Mining Cycle") METENOX = "Metenox Moon Drill", _("Metenox Moon Drill") OTHER = "Other", _("Other") @@ -56,6 +56,7 @@ class Timer(models.Model): ANCHORING = "ANCHORING", _("Anchoring") UNANCHORING = "UNANCHORING", _("Unanchoring") ABANDONED = "ABANDONED", _("Abandoned") + THEFT = "THEFT", _("Theft") details = models.CharField(max_length=254, default="") system = models.CharField(max_length=254, default="") @@ -70,8 +71,14 @@ class Timer(models.Model): corp_timer = models.BooleanField(default=False) user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL) - def __str__(self) -> str: - return str(self.system) + ' ' + str(self.details) - class Meta: ordering = ['eve_time'] + # Intentionally Commented out + # AAv0 has these in the Auth_ Content Type + # permissions = ( + # ('timer_view', 'Can view Timerboard Timers'), + # ('timer_management', 'Can Manage Timerboard timers')) + # default_permissions = () + + def __str__(self) -> str: + return f"{self.system} {self.details}" diff --git a/allianceauth/timerboard/templates/timerboard/dashboard.timers.html b/allianceauth/timerboard/templates/timerboard/dashboard.timers.html index f22bc26e..53f288c6 100644 --- a/allianceauth/timerboard/templates/timerboard/dashboard.timers.html +++ b/allianceauth/timerboard/templates/timerboard/dashboard.timers.html @@ -15,7 +15,7 @@
    - + @@ -30,17 +30,17 @@
    {% for s in t.scopes.all %} - {{ s.name }} + {{ s.name }} {% endfor %} {{ personal_app.form.corp.corporation_name }} {% if personal_app.approved == None %} -
    {% translate "Pending" %}
    +
    {% translate "Pending" %}
    {% elif personal_app.approved == True %} -
    {% translate "Approved" %}
    +
    {% translate "Approved" %}
    {% else %} -
    {% translate "Rejected" %}
    +
    {% translate "Rejected" %}
    {% endif %}
    @@ -133,14 +133,14 @@ {% if app.approved == None %} {% if app.reviewer_str %} -
    {% translate "Reviewer:" %} {{ app.reviewer_str }}
    +
    {% translate "Reviewer:" %} {{ app.reviewer_str }}
    {% else %} -
    {% translate "Pending" %}
    +
    {% translate "Pending" %}
    {% endif %} {% elif app.approved == True %} -
    {% translate "Approved" %}
    +
    {% translate "Approved" %}
    {% else %} -
    {% translate "Rejected" %}
    +
    {% translate "Rejected" %}
    {% endif %}
    @@ -177,14 +177,14 @@ {% if app.approved == None %} {% if app.reviewer_str %} -
    {% translate "Reviewer:" %} {{ app.reviewer_str }}
    +
    {% translate "Reviewer:" %} {{ app.reviewer_str }}
    {% else %} -
    {% translate "Pending" %}
    +
    {% translate "Pending" %}
    {% endif %} {% elif app.approved == True %} -
    {% translate "Approved" %}
    +
    {% translate "Approved" %}
    {% else %} -
    {% translate "Rejected" %}
    +
    {% translate "Rejected" %}
    {% endif %}
    diff --git a/allianceauth/hrapplications/templates/hrapplications/searchview.html b/allianceauth/hrapplications/templates/hrapplications/searchview.html index c667e95c..bb446f22 100644 --- a/allianceauth/hrapplications/templates/hrapplications/searchview.html +++ b/allianceauth/hrapplications/templates/hrapplications/searchview.html @@ -43,11 +43,11 @@ {{ app.form.corp }} {% if app.approved == None %} -
    {% translate "Pending" %}
    +
    {% translate "Pending" %}
    {% elif app.approved == True %} -
    {% translate "Approved" %}
    +
    {% translate "Approved" %}
    {% else %} -
    {% translate "Rejected" %}
    +
    {% translate "Rejected" %}
    {% endif %}
    diff --git a/allianceauth/hrapplications/templates/hrapplications/view.html b/allianceauth/hrapplications/templates/hrapplications/view.html index 4b01a27f..d88009b4 100644 --- a/allianceauth/hrapplications/templates/hrapplications/view.html +++ b/allianceauth/hrapplications/templates/hrapplications/view.html @@ -31,7 +31,7 @@
    -
    +
    {% translate "Applicant" %}
    @@ -50,7 +50,7 @@
    -
    +
    {% translate "Characters" %}
    diff --git a/allianceauth/hrapplications/tests.py b/allianceauth/hrapplications/tests.py index 7dab4cd1..b9b8ff1e 100644 --- a/allianceauth/hrapplications/tests.py +++ b/allianceauth/hrapplications/tests.py @@ -4,7 +4,7 @@ from django.test import TestCase from allianceauth.eveonline.models import EveCorporationInfo from allianceauth.tests.auth_utils import AuthUtils -from .models import Application, ApplicationForm, ApplicationQuestion, ApplicationChoice +from .models import Application, ApplicationChoice, ApplicationForm, ApplicationQuestion class TestApplicationManagersPendingRequestsCountForUser(TestCase): diff --git a/allianceauth/hrapplications/views.py b/allianceauth/hrapplications/views.py index 789428e2..395aac17 100644 --- a/allianceauth/hrapplications/views.py +++ b/allianceauth/hrapplications/views.py @@ -1,18 +1,13 @@ import logging -from django.contrib.auth.decorators import login_required -from django.contrib.auth.decorators import permission_required -from django.contrib.auth.decorators import user_passes_test -from django.shortcuts import render, get_object_or_404, redirect, Http404 +from django.contrib.auth.decorators import login_required, permission_required, user_passes_test from django.db.models import Q -from .models import Application -from .models import ApplicationComment -from .models import ApplicationForm -from .models import ApplicationResponse +from django.shortcuts import Http404, get_object_or_404, redirect, render + from allianceauth.notifications import notify -from .forms import HRApplicationCommentForm -from .forms import HRApplicationSearchForm +from .forms import HRApplicationCommentForm, HRApplicationSearchForm +from .models import Application, ApplicationComment, ApplicationForm, ApplicationResponse logger = logging.getLogger(__name__) @@ -23,7 +18,7 @@ def create_application_test(user): @login_required def hr_application_management_view(request): - logger.debug("hr_application_management_view called by user %s" % request.user) + logger.debug(f"hr_application_management_view called by user {request.user}") corp_applications = [] finished_corp_applications = [] main_char = request.user.profile.main_character @@ -38,8 +33,7 @@ def hr_application_management_view(request): corp_applications = base_app_query.filter(form=app_form).filter(approved=None).order_by('-created') finished_corp_applications = base_app_query.filter(form=app_form).filter( approved__in=[True, False]).order_by('-created') - logger.debug("Retrieved {} personal, {} corp applications for {}".format( - len(request.user.applications.all()), len(corp_applications), request.user)) + logger.debug(f"Retrieved {len(request.user.applications.all())} personal, {len(corp_applications)} corp applications for {request.user}") context = { 'personal_apps': request.user.applications.all(), 'applications': corp_applications, @@ -117,12 +111,12 @@ def hr_application_view(request, app_id): logger.debug(f"hr_application_view called by user {request.user} for app id {app_id}") try: app = Application.objects.prefetch_related('responses', 'comments', 'comments__user').get(pk=app_id) - except Application.DoesNotExist: - raise Http404 + except Application.DoesNotExist as e: + raise Http404 from e if request.method == 'POST': if request.user.has_perm('hrapplications.add_applicationcomment'): form = HRApplicationCommentForm(request.POST) - logger.debug("Request type POST contains form valid: %s" % form.is_valid()) + logger.debug(f"Request type POST contains form valid: {form.is_valid()}") if form.is_valid(): comment = ApplicationComment() comment.application = app @@ -132,7 +126,7 @@ def hr_application_view(request, app_id): logger.info(f"Saved comment by user {request.user} to {app}") return redirect('hrapplications:view', app_id) else: - logger.warning("User %s does not have permission to add ApplicationComments" % request.user) + logger.warning(f"User {request.user} does not have permission to add ApplicationComments") return redirect('hrapplications:view', app_id) else: logger.debug("Returning blank HRApplication comment form.") @@ -155,7 +149,7 @@ def hr_application_remove(request, app_id): app = get_object_or_404(Application, pk=app_id) logger.info(f"User {request.user} deleting {app}") app.delete() - notify(app.user, "Application Deleted", message="Your application to %s was deleted." % app.form.corp) + notify(app.user, "Application Deleted", message=f"Your application to {app.form.corp} was deleted.") return redirect('hrapplications:index') @@ -169,7 +163,7 @@ def hr_application_approve(request, app_id): logger.info(f"User {request.user} approving {app}") app.approved = True app.save() - notify(app.user, "Application Accepted", message="Your application to %s has been approved." % app.form.corp, level="success") + notify(app.user, "Application Accepted", message=f"Your application to {app.form.corp} has been approved.", level="success") else: logger.warning(f"User {request.user} not authorized to approve {app}") return redirect('hrapplications:index') @@ -185,7 +179,7 @@ def hr_application_reject(request, app_id): logger.info(f"User {request.user} rejecting {app}") app.approved = False app.save() - notify(app.user, "Application Rejected", message="Your application to %s has been rejected." % app.form.corp, level="danger") + notify(app.user, "Application Rejected", message=f"Your application to {app.form.corp} has been rejected.", level="danger") else: logger.warning(f"User {request.user} not authorized to reject {app}") return redirect('hrapplications:index') @@ -194,10 +188,10 @@ def hr_application_reject(request, app_id): @login_required @permission_required('auth.human_resources') def hr_application_search(request): - logger.debug("hr_application_search called by user %s" % request.user) + logger.debug(f"hr_application_search called by user {request.user}") if request.method == 'POST': form = HRApplicationSearchForm(request.POST) - logger.debug("Request type POST contains form valid: %s" % form.is_valid()) + logger.debug(f"Request type POST contains form valid: {form.is_valid()}") if form.is_valid(): searchstring = form.cleaned_data['search_string'].lower() applications = set() @@ -209,7 +203,7 @@ def hr_application_search(request): form__corp__corporation_id=request.user.profile.main_character.corporation_id) except AttributeError: logger.warning( - "User %s missing main character model: unable to filter applications to search" % request.user) + f"User {request.user} missing main character model: unable to filter applications to search") applications = app_list.filter( Q(user__profile__main_character__character_name__icontains=searchstring) | @@ -225,12 +219,12 @@ def hr_application_search(request): return render(request, 'hrapplications/searchview.html', context=context) else: - logger.debug("Form invalid - returning for user %s to retry." % request.user) + logger.debug(f"Form invalid - returning for user {request.user} to retry.") context = {'applications': None, 'search_form': form} return render(request, 'hrapplications/searchview.html', context=context) else: - logger.debug("Returning empty search form for user %s" % request.user) + logger.debug(f"Returning empty search form for user {request.user}") return redirect("hrapplications:view") diff --git a/allianceauth/locale/cs_CZ/LC_MESSAGES/django.mo b/allianceauth/locale/cs_CZ/LC_MESSAGES/django.mo index 001428d6..f9eed530 100644 Binary files a/allianceauth/locale/cs_CZ/LC_MESSAGES/django.mo and b/allianceauth/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/cs_CZ/LC_MESSAGES/django.po b/allianceauth/locale/cs_CZ/LC_MESSAGES/django.po index 77e1d9f3..d7d0b100 100644 --- a/allianceauth/locale/cs_CZ/LC_MESSAGES/django.po +++ b/allianceauth/locale/cs_CZ/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-13 19:57+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: Tomas Skarecky , 2024\n" "Language-Team: Czech (Czech Republic) (https://app.transifex.com/alliance-auth/teams/107430/cs_CZ/)\n" @@ -21,14 +21,22 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universal" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -53,91 +61,91 @@ msgstr "" "Nemáte oprávnění k přidávání a odebírání těchto skupin s omezeným " "přístupem:%s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Angličtina" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Němčina" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Španělština" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Italština" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Japonština" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Korejština" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Francouzština" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Ruština" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Ukrajinština" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Jazyk" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Noční režim" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Motiv" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Status změněn na: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "Váš uživatelský status je nyní: %(state)s" @@ -172,9 +180,9 @@ msgstr "Změnit postavu" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Jméno" @@ -184,7 +192,7 @@ msgid "Corp" msgstr "Korporace" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Aliance" @@ -197,47 +205,45 @@ msgstr "Členství" msgid "State:" msgstr "Stav:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Správa Tokenů" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." -msgstr "" -"Tato stránka je nejlepší snahou, ale zálohy nebo databázové záznamy stále " -"mohou obsahovat vaše tokeny. Pokud je to možné, vždy je odebírejte na adrese" -" https://community.eveonline.com/support/third-party-applications/ " - -#: allianceauth/authentication/templates/authentication/tokens.html:22 -msgid "Scopes" +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" #: allianceauth/authentication/templates/authentication/tokens.html:23 +msgid "Scopes" +msgstr "" + +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Akce" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -327,7 +333,7 @@ msgstr "Emailová adresa potvrzena. Přihlaste se prosím." msgid "Registration of new accounts is not allowed at this time." msgstr "Momentálně není povolena registrace nových účtů." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Statistiky korporace" @@ -348,39 +354,39 @@ msgstr "Přidat korporaci" msgid "Search all corporations..." msgstr "Vyhledat všechny korporace" -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Hlavní postavy" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Členové" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Poslední aktualizace:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Aktualizovat" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Hlavní postava" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Registrované postavy" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -389,16 +395,16 @@ msgstr "Registrované postavy" msgid "Corporation" msgstr "Korporace" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -407,21 +413,21 @@ msgstr "" msgid "Main Character" msgstr "Hlavní postava" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Hlavní korporace" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Hlavní aliance" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Výslekdy vyhledávání" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -433,6 +439,30 @@ msgstr "Vybraná korporace již má statistický modul" msgid "Failed to gather corporation statistics with selected token." msgstr "Nepodařilo se získat statistiky korporace pomocí vybraného tokenu." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -446,6 +476,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -531,8 +570,9 @@ msgid "Delete fat" msgstr "Smazat Fatlink" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Uživatel" @@ -540,7 +580,7 @@ msgstr "Uživatel" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Systém" @@ -554,10 +594,12 @@ msgstr "Loď" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Čas EVE" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -618,7 +660,7 @@ msgstr "Flotila" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Tvůrce" @@ -725,19 +767,23 @@ msgid "" "character needs to be online." msgstr "" +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 -#: allianceauth/templates/allianceauth/side-menu.html:15 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "" @@ -841,84 +887,84 @@ msgstr "" msgid "Date when this entry was created" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "" @@ -932,7 +978,7 @@ msgid "Join/Leave Requests" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "" @@ -942,7 +988,7 @@ msgstr "" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "" @@ -955,7 +1001,7 @@ msgid "Hidden" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "" @@ -979,49 +1025,49 @@ msgstr "" msgid "No groups to list." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "" @@ -1150,6 +1196,10 @@ msgstr "" msgid "Applied to leave group %(group)s." msgstr "" +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "" @@ -1221,7 +1271,7 @@ msgstr "" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "" @@ -1229,7 +1279,7 @@ msgstr "" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "" @@ -1344,7 +1394,7 @@ msgstr "" msgid "children" msgstr "" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "" @@ -1356,11 +1406,15 @@ msgstr "" msgid "visible" msgstr "" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "" @@ -1372,47 +1426,47 @@ msgstr "" msgid "type" msgstr "" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1421,44 +1475,63 @@ msgid "Add folder" msgstr "" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "" @@ -1515,7 +1588,7 @@ msgstr "" msgid "Deleted all read notifications." msgstr "" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "" @@ -1544,7 +1617,7 @@ msgid "Fleet Commander" msgstr "" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "" @@ -1589,13 +1662,8 @@ msgstr "" msgid "Form Up System" msgstr "" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "" @@ -1608,8 +1676,8 @@ msgid "Fleet Operation Management" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 @@ -1617,7 +1685,7 @@ msgid "Next Fleet Operations" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "" @@ -1626,7 +1694,7 @@ msgid "Past Fleet Operations" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "" @@ -1654,50 +1722,51 @@ msgstr "" msgid "Saved changes to operation timer for %(opname)s." msgstr "" -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "" @@ -1710,7 +1779,7 @@ msgstr "" msgid "Successfully set your {self.service_name} password" msgstr "" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "" @@ -1774,6 +1843,10 @@ msgstr "" msgid "Password must be at least 8 characters long." msgstr "" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "" @@ -1822,6 +1895,10 @@ msgid "" "again." msgstr "" +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "" @@ -1853,6 +1930,14 @@ msgstr "" msgid "Invalid payload. Please contact support if this problem persists." msgstr "" +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "" @@ -1876,6 +1961,52 @@ msgstr "" msgid "Deactivated IPSuite4 account." msgstr "" +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 +msgid "Mumble" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 +msgid "Mumble History" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 +msgid "Server Connection History" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +msgid "Displayed Name" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 +msgid "Release" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +msgid "Version" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +msgid "Last Connect" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 +msgid "Last Disconnect" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 +msgid "Server Connection Breakdown" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 +msgid "Number" +msgstr "" + #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28 #: allianceauth/services/templates/services/service_password.html:26 msgid "Set Password" @@ -1885,6 +2016,14 @@ msgstr "" msgid "Connect" msgstr "" +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52 +msgid "Mumble Connection History" +msgstr "" + +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "" @@ -1936,6 +2075,10 @@ msgstr "" msgid "Set jabber password." msgstr "" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "" @@ -1959,6 +2102,10 @@ msgstr "" msgid "Set forum password." msgstr "" +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "" @@ -1982,6 +2129,10 @@ msgstr "" msgid "Set SMF password." msgstr "" +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2031,6 +2182,10 @@ msgstr "" msgid "Reset TeamSpeak3 permission key." msgstr "" +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "" @@ -2140,7 +2295,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "" @@ -2175,7 +2330,7 @@ msgid "SRP Fleet Create" msgstr "" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2198,73 +2353,73 @@ msgstr "" msgid "Give this link to the line members." msgstr "" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "" @@ -2448,52 +2603,48 @@ msgstr "" msgid "Alliance Auth Notifications" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2501,11 +2652,11 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "" @@ -2530,13 +2681,20 @@ msgstr "" msgid "Toggle navigation" msgstr "" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "" @@ -2553,7 +2711,7 @@ msgid "Timer Type" msgstr "" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "" @@ -2587,159 +2745,145 @@ msgstr "" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" +msgid "Sovereignty Hub" msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" +msgid "Cyno Beacon" msgstr "" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" +msgid "Cyno Jammer" msgstr "" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 -msgid "Moon Mining Cycle" +msgid "Mercenary Den" msgstr "" #: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 -msgid "Metenox Moon Drill" +msgid "Moon Mining Cycle" msgstr "" #: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +msgid "Metenox Moon Drill" +msgstr "" + +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "" @@ -2747,12 +2891,6 @@ msgstr "" msgid "Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "" @@ -2773,7 +2911,7 @@ msgid "Create Timer" msgstr "" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "" @@ -2783,36 +2921,28 @@ msgstr "" msgid "Update Structure Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "" -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "" diff --git a/allianceauth/locale/de/LC_MESSAGES/django.mo b/allianceauth/locale/de/LC_MESSAGES/django.mo index e61c2ae6..d703463e 100644 Binary files a/allianceauth/locale/de/LC_MESSAGES/django.mo and b/allianceauth/locale/de/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/de/LC_MESSAGES/django.po b/allianceauth/locale/de/LC_MESSAGES/django.po index 72b8b12d..837f03be 100644 --- a/allianceauth/locale/de/LC_MESSAGES/django.po +++ b/allianceauth/locale/de/LC_MESSAGES/django.po @@ -6,16 +6,16 @@ # Translators: # Erik Kalkoken , 2023 # Joel Falknau , 2023 -# Peter Pfeufer, 2024 +# Peter Pfeufer, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" -"Last-Translator: Peter Pfeufer, 2024\n" +"Last-Translator: Peter Pfeufer, 2025\n" "Language-Team: German (https://app.transifex.com/alliance-auth/teams/107430/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,14 +23,22 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "Analyse" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universal" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "Authentifizierung" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -61,91 +69,91 @@ msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "" "Du kannst diese eingeschränkten Gruppen nicht hinzufügen oder entfernen: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Englisch" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "Tschechisch" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Deutsch" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Spanisch" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Italienisch" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Japanisch" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Koreanisch" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Französisch" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Russisch" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "Niederländisch" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "Polnisch" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Ukrainisch" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "Vereinfachtes Chinesisch" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Sprache" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Nachtmodus" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Theme" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Status geändert zu %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "Dein Nutzerstatus ist nun %(state)s" @@ -180,9 +188,9 @@ msgstr "Hauptcharakter ändern" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Name" @@ -192,7 +200,7 @@ msgid "Corp" msgstr "Corp" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Allianz" @@ -205,48 +213,49 @@ msgstr "Mitgliedschaft" msgid "State:" msgstr "Status:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Token-Verwaltung" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"Diese Seite ist der beste Versuch, aber Sicherungen oder Datenbankprotokolle" -" können weiterhin Deine Token enthalten. Widerrufe die Token nach " -"Möglichkeit immer auf https://community.eveonline.com/support/third-party-" -"applications/." +"Diese Seite ist ein bestmöglicher Versuch, aber Backups oder " +"Datenbankprotokolle können immer noch Deine Token enthalten. Widerrufe Deine" +" Token nach Möglichkeit immer unter " +"https://developers.eveonline.com/authorized-apps." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "Geltungsbereiche" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Aktionen" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -341,7 +350,7 @@ msgstr "Deine E-Mail Adresse wurde bestätigt. Bitte einloggen zum Fortfahren." msgid "Registration of new accounts is not allowed at this time." msgstr "Registrierung von neuen Konten ist zur Zeit nicht erlaubt." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Corp Statistiken" @@ -362,39 +371,39 @@ msgstr "Corporation hinzufügen" msgid "Search all corporations..." msgstr "Alle Corps durchsuchen" -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Hauptcharaktere" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Mitglieder" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Nicht registriert" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Letzte Aktualisierung:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Jetzt aktualisieren" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Hautpcharakter" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Registrierte Charaktere" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -403,16 +412,16 @@ msgstr "Registrierte Charaktere" msgid "Corporation" msgstr "Corporation" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Killboard" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -421,21 +430,21 @@ msgstr "Killboard" msgid "Main Character" msgstr "Hauptcharakter" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Haupt Corporation" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Haupt Allianz" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Suchergebnisse" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -447,6 +456,30 @@ msgstr "Ausgewählte Corp hat bereits ein Statistik Modul." msgid "Failed to gather corporation statistics with selected token." msgstr "Fehler beim Sammeln von Corpstatistiken mit ausgewählten Token." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "Crontab" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "Minuten-Offset" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "Stunden-Offset" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "Tag des Monats-Offset" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "Monat des Jahres-Offsets" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "Tag der Woche-Offset" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -460,6 +493,15 @@ msgstr "Dein eigenes CSS" msgid "This CSS will be added to the site after the default CSS." msgstr "Dieses CSS wird der Site nach dem Standard-CSS hinzugefügt." +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "EVE Online" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "EVE Online Autogrouppen" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -545,9 +587,9 @@ msgid "Delete fat" msgstr "FAT löschen" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Benutzername" @@ -555,7 +597,7 @@ msgstr "Benutzername" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "System" @@ -569,10 +611,12 @@ msgstr "Schiff" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Eve Zeit" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "EVE Zeit" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -629,7 +673,7 @@ msgstr "Flotte" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Ersteller" @@ -738,18 +782,23 @@ msgstr "" "Die Flottenteilnahme für {character.character_name} kann nicht registriert " "werden. Der Charakter muss hierzu online sein." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "Framework" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Gruppenverwaltung" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Gruppen" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Nutzer" @@ -878,84 +927,84 @@ msgstr "Erstellt" msgid "Date when this entry was created" msgstr "Datum der Erstellung dieses Eintrags" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Protokoll" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Zurück" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Datum/Uhrzeit" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Antragsteller" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Typ" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Aktion" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Ausführender" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Entfernt" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Alle angezeigten Zeiten sind EVE/UTC" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "Keine Einträge für diese Gruppe gefunden." -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Gruppenmitglieder" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Organisation" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Gruppenleiter" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(unbekannt)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Aus Gruppe entfernen" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Keine Gruppenmitglieder vorhanden." @@ -969,7 +1018,7 @@ msgid "Join/Leave Requests" msgstr "Beitritts-/Austrittsanfragen" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Beschreibung" @@ -979,7 +1028,7 @@ msgstr "Beschreibung" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Status" @@ -992,7 +1041,7 @@ msgid "Hidden" msgstr "Verborgen" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Öffnen" @@ -1016,49 +1065,49 @@ msgstr "Direktlink kopieren" msgid "No groups to list." msgstr "Keine Gruppen vorhanden." -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Verfügbare Gruppen" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "Verantwortliche" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Gruppe" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Verlassen" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "Beantragt" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Beitreten" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Anfrage" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "Keine Gruppen verfügbar" @@ -1191,6 +1240,10 @@ msgstr "Du hast bereits eine ausstehendes Austrittsanfrage für diese Gruppe." msgid "Applied to leave group %(group)s." msgstr "Austrittsanfrage für Gruppe %(group)s gesendet." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "Bewerbungen" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Bewerbungen" @@ -1262,7 +1315,7 @@ msgstr "Benutzername" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Akzeptiert" @@ -1270,7 +1323,7 @@ msgstr "Akzeptiert" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Abgelehnt" @@ -1385,7 +1438,7 @@ msgstr "%s Menüeintrag ändern" msgid "children" msgstr "untergeordnet" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "Text" @@ -1397,11 +1450,15 @@ msgstr "benutzerdefiniert" msgid "visible" msgstr "sichtbar" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "Menü" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "Anwendung" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "Ordner" @@ -1413,27 +1470,27 @@ msgstr "Link" msgid "type" msgstr "Typ" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "Menütext" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "Reihenfolge" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "Reihenfolge des Menüs. Niedrigste zuerst" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "Ordner, in dem sich dieses Element befindet (optional)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "ist ausgeblendet" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" @@ -1441,11 +1498,11 @@ msgstr "" "Blende dieses Menüelement aus. Wenn es sich bei diesem Element um einen " "Ordner handelt, werden auch alle darin enthaltenen Elemente ausgeblendet" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "Icon Klassen" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" @@ -1453,11 +1510,11 @@ msgstr "" "Font Awesome-Klassen zur Anzeige als Symbol im Menü, z. B. fa-solid " "fa-house" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "URL" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "Externe URL, auf die dieses Menüelement verweist" @@ -1466,44 +1523,63 @@ msgid "Add folder" msgstr "Ordner hinzufügen" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Benachrichtigungen" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "Super User" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "Alliance Auth Dokumentation" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "Alliance Auth Discord" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "Alliance Auth Git" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Admin" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "Ausloggen" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "Einloggen" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "Gefahr" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "Warnung" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "Information" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "Erfolg" @@ -1560,7 +1636,7 @@ msgstr "Alle Benachrichtigungen als gelesen markieren." msgid "Deleted all read notifications." msgstr "Alle gelesenen Benachrichtigungen gelöscht." -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Flottenoperationen" @@ -1589,7 +1665,7 @@ msgid "Fleet Commander" msgstr "Flottenkommandant" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Zusätzliche Informationen" @@ -1634,13 +1710,8 @@ msgstr "Operation" msgid "Form Up System" msgstr "Startsystem" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "EVE Zeit" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Ortszeit" @@ -1653,16 +1724,16 @@ msgid "Fleet Operation Management" msgstr "Flottenoperationen Verwaltung" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Aktuelle Eve Zeit" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "Aktuelle EVE Zeit" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Anstehende Flotten" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "Keine anstehenden Timer." @@ -1671,7 +1742,7 @@ msgid "Past Fleet Operations" msgstr "Vergangene Flotten" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "Keine vergangenen Timer." @@ -1699,50 +1770,51 @@ msgstr "Operation timer für %(opname)s entfernt." msgid "Saved changes to operation timer for %(opname)s." msgstr "Änderungen für Operation timer %(opname)s gespeichert." -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Berechtigungsprüfung" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Benutzer / Character" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Berechtigungsübersicht" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Zeige nur angewendete Berechtigungen" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Zeige alles" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Zeige alle Berechtigungen" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Zeige angewendete" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "Anwendung" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Model" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Code Name" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "Status" @@ -1755,7 +1827,7 @@ msgstr "Dieses Dienstkonto existiert bereits" msgid "Successfully set your {self.service_name} password" msgstr "Dein {self.service_name} Passwort wurde erfolgreich gesetzt" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Dienste" @@ -1819,6 +1891,10 @@ msgstr "Passwort" msgid "Password must be at least 8 characters long." msgstr "Das Passwort muss mindestens 8 Zeichen lang sein" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "Discord Service" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Discord Konto deaktiviert" @@ -1871,6 +1947,10 @@ msgstr "" "Es gab einen Fehler während der Aktivierung Deines Discord Kontos. Bitte " "versuche es noch einmal." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "Discourse Service" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "Discourse" @@ -1907,6 +1987,14 @@ msgstr "" "Ungültige Nutzdaten. Bitte wenden Dich an den Support, wenn das Problem " "weiterhin besteht." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "Beispiel Service" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "IPS4 Service" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "IP4Suite Konto aktiviert." @@ -1930,45 +2018,49 @@ msgstr "Setze IPSuite4 Passwort." msgid "Deactivated IPSuite4 account." msgstr "IP4Suite Konto deaktiviert." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "Mumble Service" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "Mumble" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "Mumbleverbindungen" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "Verlauf der Serververbindungen" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "Angezeigter Name" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "Release" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "Version" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "Zuletzt verbunden" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "Zuletzt getrennt" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "Serververbindungen" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "Nummer" @@ -1985,6 +2077,10 @@ msgstr "Verbinden" msgid "Mumble Connection History" msgstr "Verlauf der Mumbleverbindungen" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "Openfire Service" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -2036,6 +2132,10 @@ msgstr "Jabber-Übertragung an %s gesendet" msgid "Set jabber password." msgstr "Setze Jabber Passwort." +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "phpBB3 Service" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Forum Konto aktiviert." @@ -2059,6 +2159,10 @@ msgstr "Forum Passwort zurücksetzen." msgid "Set forum password." msgstr "Setze Forum Passwort." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "SMF Service" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "SMF Konto aktiviert." @@ -2082,6 +2186,10 @@ msgstr "SMF Passwort zurücksetzen." msgid "Set SMF password." msgstr "Setze SMF Passwort." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "TeamSpeak 3 Service" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2132,6 +2240,10 @@ msgstr "TeamSpeak3 Konto deaktiviert." msgid "Reset TeamSpeak3 permission key." msgstr "TeamSpeak3 Berechtigungsschlüssel zurücksetzen." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "Xenforo Service" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "XenForo Konto aktiviert." @@ -2245,7 +2357,7 @@ msgstr "" "Einige Dienste bieten unterschiedliche Optionen. Bewege den Mauszeiger über " "die Schaltflächen, um mehr zu sehen." -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Schiffserstattung" @@ -2280,7 +2392,7 @@ msgid "SRP Fleet Create" msgstr "Erstelle SRP-Flotte" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2303,75 +2415,75 @@ msgstr "SRP Flotte erstellen" msgid "Give this link to the line members." msgstr "Gib diesen Link an die Flottenmitglieder." -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "SRP Flotte Daten" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "Flotten ansehen" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Als unvollständig markieren" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Als vollständig markieren" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Verluste insgesamt:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "ISK-Kosten insgesamt:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Bist Du sicher das Du SRP Anfragen löschen willst?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Name des Piloten" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Killboard Link" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Schiffstyp" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Summe Killboard Verluste" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "SRP ISK-Kosten" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "Klicke auf den Wert um diesen zu bearbeiten, Enter zum Speichern und um zum " "nächsten Wert zu springen, ESC zum Beenden." -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Veröffentlichungszeit" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Link" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "Keine SRP Anfragen für diese Flotte." @@ -2560,52 +2672,48 @@ msgstr "Der Server hat einen ESI-Fehlerantwortcode erhalten" msgid "Alliance Auth Notifications" msgstr "Alliance Auth Benachrichtigungen" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Geschlossen" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "Derzeit liegen keine Benachrichtigungen vor" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Unterstützt durch GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Support Discord" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Software Version" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Aktuell" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Aktuellste stabile Version" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Update verfügbar" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Aktuellste Testversion" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Testversion verfügbar" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "Task-Warteschlange" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2615,11 +2723,11 @@ msgstr "" "\n" "Status von %(total)s verarbeiten Aufgaben • in den letzten %(latest)s" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "laufend" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "eingereiht" @@ -2644,13 +2752,20 @@ msgstr "Ausloggen" msgid "Toggle navigation" msgstr "Navigation umschalten" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "Theme auswählen" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Strukturen Timer" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Details" @@ -2667,7 +2782,7 @@ msgid "Timer Type" msgstr "Timer Typ" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Ziel" @@ -2701,159 +2816,145 @@ msgstr "Auf Corp beschränkt" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Freundlich" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Feindlich" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Neutral" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "POCO" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "Orbital Skyhook" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "Souveränitätszentrum" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS [S]" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS [M]" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS [L]" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Azbel" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "Pharolux Cyno Beacon" +msgid "Cyno Beacon" +msgstr "Cyno Beacon" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "Tenebrex Cyno Jammer" +msgid "Cyno Jammer" +msgstr "Cyno Jammer" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Ansiblex Jump Gate" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "Söldnerbau" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Moon Mining Cycle" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "Metenox Moon Drill" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Anderes" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Keine Angabe" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Schild" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Panzerung" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Hülle" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Final" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Ankernd" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Entankernd" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "Aufgegeben" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "Diebstahl" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "Anstehende Timer" @@ -2861,12 +2962,6 @@ msgstr "Anstehende Timer" msgid "Timer" msgstr "Timer" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Strukturen Timer" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "Strukturen-Timerdetails" @@ -2887,7 +2982,7 @@ msgid "Create Timer" msgstr "Timer erstellen" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Strukturen Timer erstellen" @@ -2897,36 +2992,28 @@ msgstr "Strukturen Timer erstellen" msgid "Update Structure Timer" msgstr "Strukturen Timer aktualisieren" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Struktur" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Cyno Beacon" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Cyno Jammer" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Strukturen Timer Verwaltung" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "Corporation Timer" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Vergangene Timer" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Neuen Timer hinzugefügt in %(system)s um %(time)s." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Änderungen am Timer gespeichert" diff --git a/allianceauth/locale/en/LC_MESSAGES/django.po b/allianceauth/locale/en/LC_MESSAGES/django.po index 0a06e636..26eba8d8 100644 --- a/allianceauth/locale/en/LC_MESSAGES/django.po +++ b/allianceauth/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-07-03 09:07+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,14 +18,22 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -48,91 +56,91 @@ msgstr "" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:104 msgid "English" msgstr "" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "German" msgstr "" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:107 msgid "Spanish" msgstr "" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "Italian" msgstr "" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Japanese" msgstr "" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Korean" msgstr "" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "French" msgstr "" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Russian" msgstr "" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Ukrainian" msgstr "" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "" @@ -167,9 +175,9 @@ msgstr "" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "" @@ -179,7 +187,7 @@ msgid "Corp" msgstr "" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "" @@ -192,43 +200,45 @@ msgstr "" msgid "State:" msgstr "" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " -"your tokens. Always revoke tokens on https://community.eveonline.com/support/" -"third-party-applications/ where possible." -msgstr "" - -#: allianceauth/authentication/templates/authentication/tokens.html:22 -msgid "Scopes" +"your tokens. Always revoke tokens on https://developers.eveonline.com/" +"authorized-apps where possible." msgstr "" #: allianceauth/authentication/templates/authentication/tokens.html:23 +msgid "Scopes" +msgstr "" + +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -313,7 +323,7 @@ msgstr "" msgid "Registration of new accounts is not allowed at this time." msgstr "" -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "" @@ -334,39 +344,39 @@ msgstr "" msgid "Search all corporations..." msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -375,16 +385,16 @@ msgstr "" msgid "Corporation" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -393,21 +403,21 @@ msgstr "" msgid "Main Character" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "" @@ -419,6 +429,30 @@ msgstr "" msgid "Failed to gather corporation statistics with selected token." msgstr "" +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -432,6 +466,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -517,9 +560,9 @@ msgid "Delete fat" msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "" @@ -527,7 +570,7 @@ msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "" @@ -541,9 +584,11 @@ msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 @@ -601,7 +646,7 @@ msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "" @@ -708,18 +753,23 @@ msgid "" "character needs to be online." msgstr "" +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "" @@ -822,84 +872,84 @@ msgstr "" msgid "Date when this entry was created" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "" @@ -913,7 +963,7 @@ msgid "Join/Leave Requests" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "" @@ -923,7 +973,7 @@ msgstr "" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "" @@ -936,7 +986,7 @@ msgid "Hidden" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "" @@ -960,49 +1010,49 @@ msgstr "" msgid "No groups to list." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "" @@ -1131,6 +1181,10 @@ msgstr "" msgid "Applied to leave group %(group)s." msgstr "" +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "" @@ -1202,7 +1256,7 @@ msgstr "" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "" @@ -1210,7 +1264,7 @@ msgstr "" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "" @@ -1325,7 +1379,7 @@ msgstr "" msgid "children" msgstr "" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "" @@ -1337,11 +1391,15 @@ msgstr "" msgid "visible" msgstr "" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "" @@ -1353,47 +1411,47 @@ msgstr "" msgid "type" msgstr "" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1402,44 +1460,63 @@ msgid "Add folder" msgstr "" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "" @@ -1496,7 +1573,7 @@ msgstr "" msgid "Deleted all read notifications." msgstr "" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "" @@ -1525,7 +1602,7 @@ msgid "Fleet Commander" msgstr "" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "" @@ -1570,13 +1647,8 @@ msgstr "" msgid "Form Up System" msgstr "" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "" @@ -1589,8 +1661,8 @@ msgid "Fleet Operation Management" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 @@ -1598,7 +1670,7 @@ msgid "Next Fleet Operations" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "" @@ -1607,7 +1679,7 @@ msgid "Past Fleet Operations" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "" @@ -1635,50 +1707,51 @@ msgstr "" msgid "Saved changes to operation timer for %(opname)s." msgstr "" -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "" @@ -1691,7 +1764,7 @@ msgstr "" msgid "Successfully set your {self.service_name} password" msgstr "" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "" @@ -1755,6 +1828,10 @@ msgstr "" msgid "Password must be at least 8 characters long." msgstr "" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "" @@ -1803,6 +1880,10 @@ msgid "" "again." msgstr "" +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "" @@ -1833,6 +1914,14 @@ msgstr "" msgid "Invalid payload. Please contact support if this problem persists." msgstr "" +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "" @@ -1856,45 +1945,49 @@ msgstr "" msgid "Deactivated IPSuite4 account." msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1911,6 +2004,10 @@ msgstr "" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "" @@ -1962,6 +2059,10 @@ msgstr "" msgid "Set jabber password." msgstr "" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "" @@ -1985,6 +2086,10 @@ msgstr "" msgid "Set forum password." msgstr "" +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "" @@ -2008,6 +2113,10 @@ msgstr "" msgid "Set SMF password." msgstr "" +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2057,6 +2166,10 @@ msgstr "" msgid "Reset TeamSpeak3 permission key." msgstr "" +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "" @@ -2166,7 +2279,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "" @@ -2200,7 +2313,7 @@ msgid "SRP Fleet Create" msgstr "" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2223,73 +2336,73 @@ msgstr "" msgid "Give this link to the line members." msgstr "" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "" @@ -2473,52 +2586,48 @@ msgstr "" msgid "Alliance Auth Notifications" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2527,11 +2636,11 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "" @@ -2556,13 +2665,20 @@ msgstr "" msgid "Toggle navigation" msgstr "" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "" @@ -2579,7 +2695,7 @@ msgid "Timer Type" msgstr "" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "" @@ -2613,159 +2729,145 @@ msgstr "" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" +msgid "Sovereignty Hub" msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" +msgid "Cyno Beacon" msgstr "" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" +msgid "Cyno Jammer" msgstr "" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 -msgid "Moon Mining Cycle" +msgid "Mercenary Den" msgstr "" #: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 -msgid "Metenox Moon Drill" +msgid "Moon Mining Cycle" msgstr "" #: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +msgid "Metenox Moon Drill" +msgstr "" + +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "" @@ -2773,12 +2875,6 @@ msgstr "" msgid "Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "" @@ -2799,7 +2895,7 @@ msgid "Create Timer" msgstr "" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "" @@ -2809,36 +2905,28 @@ msgstr "" msgid "Update Structure Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "" -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "" diff --git a/allianceauth/locale/es/LC_MESSAGES/django.mo b/allianceauth/locale/es/LC_MESSAGES/django.mo index 50867563..84973f53 100644 Binary files a/allianceauth/locale/es/LC_MESSAGES/django.mo and b/allianceauth/locale/es/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/es/LC_MESSAGES/django.po b/allianceauth/locale/es/LC_MESSAGES/django.po index 8862a413..da0e5db3 100644 --- a/allianceauth/locale/es/LC_MESSAGES/django.po +++ b/allianceauth/locale/es/LC_MESSAGES/django.po @@ -8,16 +8,16 @@ # Fegpawn Kaundur, 2023 # frank1210 , 2023 # Joel Falknau , 2023 -# trenus, 2023 +# trenus, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" -"Last-Translator: trenus, 2023\n" +"Last-Translator: trenus, 2025\n" "Language-Team: Spanish (https://app.transifex.com/alliance-auth/teams/107430/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,14 +25,22 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universal" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -57,91 +65,91 @@ msgstr "E-mail" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "No puedes añadir o eliminar estos grupos restringidos: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Inglés" -#: allianceauth/authentication/models.py:72 -msgid "Czech" -msgstr "" - #: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +msgid "Czech" +msgstr "Checo" + +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Alemán" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Español" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Italiano" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Japonés" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Coreano" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Francés" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Ruso" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 -msgid "Dutch" -msgstr "" - #: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 -msgid "Polish" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:114 +msgid "Dutch" +msgstr "Holandés" #: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 -msgid "Ukrainian" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:115 +msgid "Polish" +msgstr "Polaco" #: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 -msgid "Simplified Chinese" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:117 +msgid "Ukrainian" +msgstr "Ucraniano" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 +msgid "Simplified Chinese" +msgstr "Chino Simplificado" + +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Idioma" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Modo Nocturno" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" -msgstr "" +msgstr "Tema" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Estado cambiado a: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "El estado de su usuario es ahora: %(state)s" @@ -176,9 +184,9 @@ msgstr "Cambiar Personaje Principal" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Nombre" @@ -188,57 +196,58 @@ msgid "Corp" msgstr "Corporación" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Allianza" #: allianceauth/authentication/templates/authentication/dashboard_groups.html:5 msgid "Membership" -msgstr "" +msgstr "Membresía" #: allianceauth/authentication/templates/authentication/dashboard_groups.html:10 msgid "State:" -msgstr "" +msgstr "Estado:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" -msgstr "" +msgstr "Gestión de Tokens" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." -msgstr "" - -#: allianceauth/authentication/templates/authentication/tokens.html:22 -msgid "Scopes" +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" #: allianceauth/authentication/templates/authentication/tokens.html:23 +msgid "Scopes" +msgstr "" + +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Acciones" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -332,7 +341,7 @@ msgstr "" msgid "Registration of new accounts is not allowed at this time." msgstr "En este momento no se permite el registro de nuevas cuentas." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Informacion de los Miembros" @@ -347,45 +356,45 @@ msgstr "Corporaciones" #: allianceauth/corputils/templates/corputils/base.html:35 msgid "Add corporation" -msgstr "" +msgstr "Añadir corporación" #: allianceauth/corputils/templates/corputils/base.html:51 msgid "Search all corporations..." msgstr "Buscar todas las corporaciones..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Principales" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Miembros" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Sin registro" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Ultima Actualizacion:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" -msgstr "" - -#: allianceauth/corputils/templates/corputils/corpstats.html:100 -msgid "Main character" -msgstr "" +msgstr "Actualizar Ahora" #: allianceauth/corputils/templates/corputils/corpstats.html:101 +msgid "Main character" +msgstr "Personaje principal" + +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Registrar personajes" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -394,16 +403,16 @@ msgstr "Registrar personajes" msgid "Corporation" msgstr "Corporacion" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Killboard" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -412,21 +421,21 @@ msgstr "Killboard" msgid "Main Character" msgstr "Personaje Principal" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Corporacion Principal" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Alianza Principal" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Resultados de la busqueda" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -439,6 +448,30 @@ msgid "Failed to gather corporation statistics with selected token." msgstr "" "Se fallo en obtener las estadisticas corporativas con el token seleccionado" +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -452,6 +485,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -530,16 +572,16 @@ msgstr "Editar Fatlink" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:21 msgid "Are you sure?" -msgstr "" +msgstr "¿Estás seguro?" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:22 msgid "Delete fat" msgstr "Borrar fatlink" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Usuario" @@ -547,7 +589,7 @@ msgstr "Usuario" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Sistema" @@ -561,10 +603,12 @@ msgstr "Nave" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Hora Eve" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -623,7 +667,7 @@ msgstr "Flota" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Creador" @@ -673,7 +717,7 @@ msgstr "Promedio de participacion" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:6 msgid "Fatlink Statistics" -msgstr "" +msgstr "Estadísticas Fatlink" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:32 msgid "Ticker" @@ -732,18 +776,23 @@ msgstr "" "No se puede registrar la participación en la flota para " "{character.character_name}. El personaje debe estar en línea." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Manejo de Grupo" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Grupos" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Usuarios" @@ -871,84 +920,84 @@ msgstr "creado en" msgid "Date when this entry was created" msgstr "Fecha de creación de esta entrada" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Log de Auditoria" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Volver" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Fecha/Hora" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Solicitante" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Tipo" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Accion" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Actor" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Eliminado" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Todas las horas indicadas son EVE/UTC." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "No se encontraron entradas para este grupo." -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Miembros del Grupo" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Organización" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Líder de grupo" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(desconocido)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Remover del grupo" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "no hay miembros para listar." @@ -962,7 +1011,7 @@ msgid "Join/Leave Requests" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Descripcion" @@ -972,7 +1021,7 @@ msgstr "Descripcion" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Estado" @@ -985,7 +1034,7 @@ msgid "Hidden" msgstr "Escondido" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Abierto" @@ -1009,49 +1058,49 @@ msgstr "Copiar enlace directo" msgid "No groups to list." msgstr "No hay grupos para listar" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Grupos Disponibles" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Grupo" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Dejar" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "Pendiente" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Unirse" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Solicitar" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "No hay grupos disponibles" @@ -1185,6 +1234,10 @@ msgstr "Ya tiene una solicitud de baja pendiente para ese grupo." msgid "Applied to leave group %(group)s." msgstr "Solicitaste dejar el grupo %(group)s." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Solicitudes" @@ -1256,7 +1309,7 @@ msgstr "Usuario" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Aprovado" @@ -1264,7 +1317,7 @@ msgstr "Aprovado" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Rechazado" @@ -1379,7 +1432,7 @@ msgstr "" msgid "children" msgstr "" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "" @@ -1391,11 +1444,15 @@ msgstr "" msgid "visible" msgstr "" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "" @@ -1407,47 +1464,47 @@ msgstr "" msgid "type" msgstr "" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1456,44 +1513,63 @@ msgid "Add folder" msgstr "" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Notificaciones" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Administrador" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "peligro" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "advertencia" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "info" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "éxito" @@ -1550,7 +1626,7 @@ msgstr "Se marcaron todas las notificaciones como leidas." msgid "Deleted all read notifications." msgstr "Se borraron todas las notificaciones leidas." -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Operaciones de Flota" @@ -1579,7 +1655,7 @@ msgid "Fleet Commander" msgstr "Comandante" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Informacion Adicional" @@ -1624,13 +1700,8 @@ msgstr "" msgid "Form Up System" msgstr "Sistema de encuentro" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Tiempo Local" @@ -1643,16 +1714,16 @@ msgid "Fleet Operation Management" msgstr "Manejo de Operaciones de Flota" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Tipo en EVE actual:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Próximas operaciones de flota" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "No hay proximos timers." @@ -1661,7 +1732,7 @@ msgid "Past Fleet Operations" msgstr "Operaciones de flota pasadas" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "No hay timers pasados" @@ -1689,50 +1760,51 @@ msgstr "Se removio la operacion para %(opname)s." msgid "Saved changes to operation timer for %(opname)s." msgstr "Se guardaron los cambios para la operacion %(opname)s" -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Auditar Permisos" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Usuario / Personaje" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Vista de Permisos" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Mostrando solo permisos aplicados" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Mostrar todos" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Mostrando todos los permisos" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Mostrar solo aplicados" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "App" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Modelo" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Nombre codigo" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "Estados" @@ -1745,7 +1817,7 @@ msgstr "Esa cuenta de servicio ya existe" msgid "Successfully set your {self.service_name} password" msgstr "Ha establecido correctamente su contraseña {self.service_name}." -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Servicios" @@ -1809,6 +1881,10 @@ msgstr "Contraseña" msgid "Password must be at least 8 characters long." msgstr "La contraseña tiene que tener 8 caracteres de largo minimo" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Cuenta de Discord desactivada" @@ -1861,6 +1937,10 @@ msgstr "" "Se ha producido un error al intentar activar tu cuenta de Discord. Inténtalo" " de nuevo." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "" @@ -1896,6 +1976,14 @@ msgstr "" "Contenido no válido. Póngase en contacto con el servicio de asistencia si " "este problema persiste." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "Cuenta IPSuite4 activada." @@ -1919,47 +2007,51 @@ msgstr "Establecer contraseña de IPSuite4." msgid "Deactivated IPSuite4 account." msgstr "Cuenta IPSuite4 desactivada." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" -msgstr "" +msgstr "Mumble" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" -msgstr "" +msgstr "Historial de Mumble" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" -msgstr "" - -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 -msgid "Displayed Name" -msgstr "" +msgstr "Historial de Conexiones al Servidor" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +msgid "Displayed Name" +msgstr "Nombre Visualizado" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 -msgid "Version" -msgstr "" - #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 -msgid "Last Connect" -msgstr "" +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +msgid "Version" +msgstr "Versión" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +msgid "Last Connect" +msgstr "Última Conexión" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" -msgstr "" +msgstr "Última Desconexión" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" -msgstr "" +msgstr "Desglose de la Conexión al Servidor" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" -msgstr "" +msgstr "Número" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28 #: allianceauth/services/templates/services/service_password.html:26 @@ -1968,10 +2060,14 @@ msgstr "Cambiar Contraseña" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:46 msgid "Connect" -msgstr "" +msgstr "Conectar" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52 msgid "Mumble Connection History" +msgstr "Historia de Conexión Mumble" + +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" msgstr "" #: allianceauth/services/modules/openfire/auth_hooks.py:27 @@ -2025,6 +2121,10 @@ msgstr "" msgid "Set jabber password." msgstr "Establecer contraseña jabber." +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Cuenta del foro activada." @@ -2048,6 +2148,10 @@ msgstr "Restablecer contraseña del foro." msgid "Set forum password." msgstr "Establecer contraseña del foro." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "Cuenta SMF activada." @@ -2071,6 +2175,10 @@ msgstr "Restablecer contraseña de SMF." msgid "Set SMF password." msgstr "Establecer contraseña de SMF." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2120,6 +2228,10 @@ msgstr "Cuenta de TeamSpeak3 desactivada." msgid "Reset TeamSpeak3 permission key." msgstr "Restablecer la clave de permiso de TeamSpeak3." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "Cuenta de XenForo activada." @@ -2195,7 +2307,7 @@ msgstr "Cambiar contraseña en %(service_name)s" #: allianceauth/services/templates/services/service_status.html:5 msgid "Enabled" -msgstr "" +msgstr "Habilitado" #: allianceauth/services/templates/services/service_status.html:7 #: allianceauth/srp/templates/srp/management.html:78 @@ -2231,7 +2343,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Reemplazo de Nave" @@ -2267,7 +2379,7 @@ msgid "SRP Fleet Create" msgstr "Crear SRP" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2280,85 +2392,85 @@ msgstr "Crear SRP" #: allianceauth/srp/templates/srp/add.html:26 msgid "SRP fleet details" -msgstr "" +msgstr "Detalles de la flota SRP" #: allianceauth/srp/templates/srp/add.html:40 msgid "Create SRP fleet" -msgstr "" +msgstr "Crear flota SRP" #: allianceauth/srp/templates/srp/add.html:46 msgid "Give this link to the line members." msgstr "" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "Informacion de SRP de la flota" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" -msgstr "" +msgstr "Ver Flotas" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Marcar como Incompleto" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Marcar como Completo" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Perdidas Totales:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "Costo Total:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Estas seguro que quiere borrar las solicitudes de SRP" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Nombre del Piloto" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Enlace de la Muerte" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Tipo" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Monto de la perdida en ZKB" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "Costo del SRP" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "Haz clic en el valor para editar. Presiona Enter para guardar y continuar, o" " ESC para cancelar" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Tiempo" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Enlace" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "No hay solicitudes de SRP para esta flota." @@ -2416,11 +2528,11 @@ msgstr "Crear solicitud de SRP" #: allianceauth/srp/templates/srp/request.html:22 msgid "Your SRP request" -msgstr "" +msgstr "Tu solicitud SRP" #: allianceauth/srp/templates/srp/request.html:35 msgid "Create SRP request" -msgstr "" +msgstr "Crear solicitud SRP" #: allianceauth/srp/templates/srp/update.html:7 #: allianceauth/srp/templates/srp/update.html:16 @@ -2437,7 +2549,7 @@ msgstr "No existe el SRP para esa flota" #: allianceauth/srp/templates/srp/update.html:40 msgid "Update AAR link" -msgstr "" +msgstr "Actualizar enlace AAR" #: allianceauth/srp/views.py:85 #, python-format @@ -2543,52 +2655,48 @@ msgstr "" msgid "Alliance Auth Notifications" msgstr "Notificaciones de Alliance Auth" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Cerrado" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" -msgstr "" +msgstr "No hay notificaciones en este momento" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Desarrollado por GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Soporte Discord" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Versión del Software" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Actual" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Último Estable" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Actualizacion Disponible" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Último Pre-Lanzamiento" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Pre-Lanzamiento disponible" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "Cola de Tareas" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2596,13 +2704,13 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" -msgstr "" +msgstr "ejecutando" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" -msgstr "" +msgstr "en cola" #: allianceauth/templates/allianceauth/top-menu-admin.html:19 msgid "AA Documentation" @@ -2625,13 +2733,20 @@ msgstr "Salir" msgid "Toggle navigation" msgstr "Navegacion" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" -msgstr "" +msgstr "Seleccionar tema" + +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Timers Estructuras" #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Detalles" @@ -2648,7 +2763,7 @@ msgid "Timer Type" msgstr "Tipo de temporizador" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Objetivo" @@ -2658,7 +2773,7 @@ msgstr "" #: allianceauth/timerboard/form.py:43 msgid "Date and Time" -msgstr "" +msgstr "Fecha y hora" #: allianceauth/timerboard/form.py:44 msgid "Days Remaining" @@ -2682,159 +2797,145 @@ msgstr "Restringido a Corp" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Amigable" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Hostil" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Neutral" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" +msgid "Sovereignty Hub" msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" -msgstr "" +msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" -msgstr "" +msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" -msgstr "" +msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" -msgstr "" +msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" -msgstr "" +msgstr "Azbel" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" -msgstr "" +msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" -msgstr "" +msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" -msgstr "" +msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" +msgid "Cyno Beacon" msgstr "" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" +msgid "Cyno Jammer" msgstr "" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 -msgid "Moon Mining Cycle" +msgid "Mercenary Den" msgstr "" #: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 -msgid "Metenox Moon Drill" +msgid "Moon Mining Cycle" msgstr "" #: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +msgid "Metenox Moon Drill" +msgstr "" + +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Otro" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Sin especificación" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Escudo" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Armadura" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Tipo" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Final" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Anclando" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Desanclando" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" +msgstr "Abandonado" + +#: allianceauth/timerboard/models.py:60 +msgid "Theft" msgstr "" #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "" @@ -2842,12 +2943,6 @@ msgstr "" msgid "Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Timers Estructuras" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "" @@ -2868,7 +2963,7 @@ msgid "Create Timer" msgstr "Crear Timer" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Crear timer de Estructura" @@ -2878,52 +2973,46 @@ msgstr "Crear timer de Estructura" msgid "Update Structure Timer" msgstr "Actualizar Timer de Estructura" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Estructura" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Manejo de Timers Estructurales" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Timers Pasados" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Se agrego un nuevo timer en %(system)s a las %(time)s." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Se guardaron los cambios en el timer." #: allianceauth/views.py:55 msgid "Bad Request" -msgstr "" +msgstr "Mala solicitud" #: allianceauth/views.py:57 allianceauth/views.py:87 msgid "" "Auth encountered an error processing your request, please try again. If the " "error persists, please contact the administrators." msgstr "" +"Auth ha encontrado un error al procesar su solicitud, por favor inténtelo de" +" nuevo. Si el error persiste, póngase en contacto con los administradores." #: allianceauth/views.py:65 msgid "Permission Denied" -msgstr "" +msgstr "Permiso Denegado" #: allianceauth/views.py:67 msgid "" @@ -2933,14 +3022,16 @@ msgstr "" #: allianceauth/views.py:75 msgid "Page Not Found" -msgstr "" +msgstr "Página No Encontrada" #: allianceauth/views.py:77 msgid "" "Page does not exist. If you believe this is in error please contact the " "administrators. " msgstr "" +"La página no existe. Si cree que se trata de un error, póngase en contacto " +"con los administradores. " #: allianceauth/views.py:85 msgid "Internal Server Error" -msgstr "" +msgstr "Error Interno del Servidor" diff --git a/allianceauth/locale/fr_FR/LC_MESSAGES/django.mo b/allianceauth/locale/fr_FR/LC_MESSAGES/django.mo index f1769757..cba74958 100644 Binary files a/allianceauth/locale/fr_FR/LC_MESSAGES/django.mo and b/allianceauth/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/fr_FR/LC_MESSAGES/django.po b/allianceauth/locale/fr_FR/LC_MESSAGES/django.po index 0d1f7fd0..cd9a1327 100644 --- a/allianceauth/locale/fr_FR/LC_MESSAGES/django.po +++ b/allianceauth/locale/fr_FR/LC_MESSAGES/django.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: T'rahk Rokym, 2024\n" "Language-Team: French (France) (https://app.transifex.com/alliance-auth/teams/107430/fr_FR/)\n" @@ -30,14 +30,22 @@ msgstr "" "Language: fr_FR\n" "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytique Universelle" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -70,91 +78,91 @@ msgstr "" "Vous n'avez pas l’autorisation d'ajouter ou d'enlever ces groupes " "restreints: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Anglais" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Allemand" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Espagnol" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Italien" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Japonais" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Coréen" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Français" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Russe" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "Polonais" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Ukrainien" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Langue" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Mode Nuit" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Thème" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "État changé à: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "L'état de votre personnage est maintenant: %(state)s" @@ -189,9 +197,9 @@ msgstr "Changer de Personnage Principal" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Nom" @@ -201,7 +209,7 @@ msgid "Corp" msgstr "Corpo" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Alliance" @@ -214,48 +222,45 @@ msgstr "Appartenance" msgid "State:" msgstr "État:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Gestion des jetons" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"Cette page est une meilleure tentative, mais les sauvegardes ou les journaux" -" de base de données peuvent encore contenir vos jetons. Dans la mesure du " -"possible, révoquez toujours les jetons sur " -"https://community.eveonline.com/support/third-party-applications/." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "Portée" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Actions" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -349,7 +354,7 @@ msgstr "" msgid "Registration of new accounts is not allowed at this time." msgstr "La création de nouveaux comptes n'est pas actuellement permise." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Statistiques de la Corpo" @@ -370,39 +375,39 @@ msgstr "Ajouter une corporation" msgid "Search all corporations..." msgstr "Rechercher toutes les corporations..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Personnage Principaux" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Membres" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Pas inscrit" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Dernière mise à jour:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Mettre à jour maintenant" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Personnage principal" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Personnages inscrits" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -411,16 +416,16 @@ msgstr "Personnages inscrits" msgid "Corporation" msgstr "Corporation" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Tableau de chasse" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -429,21 +434,21 @@ msgstr "Tableau de chasse" msgid "Main Character" msgstr "Personnage Principal" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Corpo Principale" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Alliance Principale" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Résultats de recherche" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -456,6 +461,30 @@ msgid "Failed to gather corporation statistics with selected token." msgstr "" "Impossible d'obtenir les statistiques de la corpo avec le code choisi." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -469,6 +498,15 @@ msgstr "Votre CSS personnalisé" msgid "This CSS will be added to the site after the default CSS." msgstr "Ce CSS être ajouté sur le site après le CSS par défaut" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -554,9 +592,9 @@ msgid "Delete fat" msgstr "supprimer lien FAT" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Utilisateur" @@ -564,7 +602,7 @@ msgstr "Utilisateur" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Système" @@ -578,10 +616,12 @@ msgstr "Vaisseau" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Heure d'EVE" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -640,7 +680,7 @@ msgstr "Flotte" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Créateur" @@ -749,18 +789,23 @@ msgstr "" "Impossible d'enregistrer la participation pour {character.character_name}. " "Le personnage doit être en ligne." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Gestion de groupe" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Groupes" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Utilisateurs" @@ -889,84 +934,84 @@ msgstr "créé à" msgid "Date when this entry was created" msgstr "Date de création de cette entrée" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Journal d'audit" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Retour" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Date/Heure" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Demandeur" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Type" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Action" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Acteur" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Supprimé" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Toutes les heures affichées sont EVE/UTC." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "Aucune entrée trouvée pour ce groupe." -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Membres du groupe" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Organisation" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Chef de groupe" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(inconnu)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Retirer du groupe" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Aucun membre à afficher" @@ -980,7 +1025,7 @@ msgid "Join/Leave Requests" msgstr "Demandes d'adhésion/de départ" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Description" @@ -990,7 +1035,7 @@ msgstr "Description" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Statut" @@ -1003,7 +1048,7 @@ msgid "Hidden" msgstr "Caché" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Ouvert" @@ -1027,49 +1072,49 @@ msgstr "Copier le lien d'invitation directe" msgid "No groups to list." msgstr "Aucun groupe à afficher" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Groupes disponibles" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "Dirigeants" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Groupe" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Quitter" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "En attente." -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Rejoindre" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Demander" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "Aucun groupe disponible" @@ -1202,6 +1247,10 @@ msgstr "Vous avec déjà une demande de quitter ce groupe en attente." msgid "Applied to leave group %(group)s." msgstr "Appliqué pour quitter le groupe %(group)s." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Applications" @@ -1273,7 +1322,7 @@ msgstr "Nom d'utilisateur" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Approuvé" @@ -1281,7 +1330,7 @@ msgstr "Approuvé" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Rejeté" @@ -1396,7 +1445,7 @@ msgstr "Changer %s élément de menu" msgid "children" msgstr "enfant" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "texte" @@ -1408,11 +1457,15 @@ msgstr "défini par l'utilisateur" msgid "visible" msgstr "visible" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "application" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "dossier" @@ -1424,27 +1477,27 @@ msgstr "lien" msgid "type" msgstr "type" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "Texte à afficher sur le menu" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "ordre" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "Ordre du menu. Plus petit en premier" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "Dossier dans lequel se trouve cet article (facultatif)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "est caché" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" @@ -1452,11 +1505,11 @@ msgstr "" "Cacher cette élément de menu.Si cet élément est un dossier, tous les " "éléments qui se trouvent sous ce dossier seront également cachés" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "classes d'icônes" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" @@ -1464,11 +1517,11 @@ msgstr "" "Classes Font Awesome à afficher comme icône dans le menu, exemple fa-" "solid fa-house" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "url" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "URL externe vers lequel cette élément du menu renvoi" @@ -1477,44 +1530,63 @@ msgid "Add folder" msgstr "Ajouter un dossier" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Alertes" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "Super Utilisateur" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Administrateur" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "Se Déconnecter" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "Se Connecter" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "danger" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "attention" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "information" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "succès" @@ -1571,7 +1643,7 @@ msgstr "Toutes les notifications ont été marquées comme lues." msgid "Deleted all read notifications." msgstr "Supprimer toutes les notifications lues" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Opérations de flotte" @@ -1600,7 +1672,7 @@ msgid "Fleet Commander" msgstr "Commandant de flotte" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Information additionnelle" @@ -1645,13 +1717,8 @@ msgstr "Opération" msgid "Form Up System" msgstr "Système de départ" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "Temps EVE" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Heure Locale" @@ -1664,16 +1731,16 @@ msgid "Fleet Operation Management" msgstr "Gestion des opérations de flotte" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Heure d'Eve actuelle:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Prochaines opérations de la flotte" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "Aucun minuteur à venir." @@ -1682,7 +1749,7 @@ msgid "Past Fleet Operations" msgstr "Opérations passées de la flotte" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "Aucun minuteur précédent." @@ -1710,50 +1777,51 @@ msgstr "Minuteur d'opération supprimé pour %(opname)s." msgid "Saved changes to operation timer for %(opname)s." 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:10 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Audit des Permissions" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Utilisateur / Personnage" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Liste Des Permissions" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Montre seulement les permissions appliquées" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Afficher Tout" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Montre toutes les permissions" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Montrer appliqué" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "Application" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Modèle" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Nom De Code" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "États" @@ -1766,7 +1834,7 @@ msgstr "Ce compte de service existe déjà." msgid "Successfully set your {self.service_name} password" msgstr "Mot de passe {self.service_name} créé avec succès." -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Services" @@ -1830,6 +1898,10 @@ msgstr "Mot de passe" msgid "Password must be at least 8 characters long." msgstr "Votre mot de passe doit contenir au moins 8 caractères." +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Compte Discord Désactivé" @@ -1882,6 +1954,10 @@ msgstr "" "Une erreur est survenue durant une tentative d'activation de votre compte " "Discord. Veuillez réessayer plus tard." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "Discours" @@ -1917,6 +1993,14 @@ msgid "Invalid payload. Please contact support if this problem persists." msgstr "" "Charge invalide. Veuillez contacter le support si ce problème persiste." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "Compte IPSuite4 activé." @@ -1940,45 +2024,49 @@ msgstr "Définir le mot de passe IPSuite4." msgid "Deactivated IPSuite4 account." msgstr "Compte IPSuite4 désactivé." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1995,6 +2083,10 @@ msgstr "Connecter" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -2046,6 +2138,10 @@ msgstr "Envoi d'une diffusion Jabber à %s" msgid "Set jabber password." msgstr "Définir le mot de passe Jabber." +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Compte de forum activé." @@ -2069,6 +2165,10 @@ msgstr "Réinitialiser le mot de passe du forum." msgid "Set forum password." msgstr "Définir le mot de passe du forum." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "Compte SMF activé" @@ -2092,6 +2192,10 @@ msgstr "Réinitialiser le mot de passe SMF." msgid "Set SMF password." msgstr "Définir le mot de passe SMF." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2141,6 +2245,10 @@ msgstr "Compte TeamSpeak3 désactivé" msgid "Reset TeamSpeak3 permission key." msgstr "Réinitialisez la clé d'autorisation TeamSpeak3." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "Compte XenForo activé" @@ -2254,7 +2362,7 @@ msgstr "" "Certains services donne différentes options. Survoler les boutons pour en " "savoir plus." -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Remplacement de vaisseau" @@ -2289,7 +2397,7 @@ msgid "SRP Fleet Create" msgstr "SRP de flotte crée" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2312,75 +2420,75 @@ msgstr "Créer une flotte SRP" msgid "Give this link to the line members." msgstr "Donnez ce lien aux membres de la flotte." -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "Données de flotte SRP" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "Voir la flotte" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Marquer incomplet" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Marquer Complet" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Pertes totales:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "Coût en ISK total:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Êtes-vous sûr de vouloir supprimer la requête de SRP ?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Nom du pilote" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Lien sur zKillboard" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Type de vaisseau" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Valeur des pertes zKillboard" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "Coût en ISK SRP" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "Cliquez sur la valeur pour modifier, Entrée pour enregistrer & Échap pour " "annuler" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Heure de publication" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Lien" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "Aucune requête d'SRP pour cette flotte" @@ -2568,52 +2676,48 @@ msgstr "Votre serveur a reçu une erreur ESI avec pour code" msgid "Alliance Auth Notifications" msgstr "Alertes Alliance Auth" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Fermé" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "Aucune notification pour le moment" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Propulsé par Gitlab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Support Discord" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Version du logiciel" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Actuelle" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Dernière version stable" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Mise à jour disponible" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Dernière Pre-Release" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Pre-Release disponible" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "File d'attente des tâches" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2623,11 +2727,11 @@ msgstr "" "\n" " Status de %(total)s tâches traitées • %(latest)s restantes" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "en cours d'exécution" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "en attente" @@ -2652,13 +2756,20 @@ msgstr "Déconnexion" msgid "Toggle navigation" msgstr "Activer navigation" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "Sélectionner un thème" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Minuteur de structure" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Details" @@ -2675,7 +2786,7 @@ msgid "Timer Type" msgstr "Type de timer" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Objectif" @@ -2709,159 +2820,145 @@ msgstr "Limité à la Corporation" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Amical" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Hostile" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Neutre" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "POCO" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS [S]" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS [M]" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS [L]" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Azbel" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "Balise Cyno" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "Brouilleur de Cyno" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Porte de saut Ansiblex" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Cycle d’extraction de lune" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Autre" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Non Spécifié" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Bouclier" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Armure" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Coque" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Final" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Ancrage" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Désancrage" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "Prochaines Échéances" @@ -2869,12 +2966,6 @@ msgstr "Prochaines Échéances" msgid "Timer" msgstr "Échéances" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Minuteur de structure" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "Détails d'une échéance de structure" @@ -2895,7 +2986,7 @@ msgid "Create Timer" msgstr "Créer un minuteur" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Créer un minuteur de structure" @@ -2905,36 +2996,28 @@ msgstr "Créer un minuteur de structure" msgid "Update Structure Timer" msgstr "Mettre à jour le minuteur de structure" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Structure" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Balise Cyno" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Brouilleur de Cyno" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Gestion des minuteurs de structure" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "Échéances de corporation" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Minuteurs précédents" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Nouveau minuteur ajouté dans %(system)s à %(time)s" -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Changements du minuteur sauvegardés." diff --git a/allianceauth/locale/it_IT/LC_MESSAGES/django.mo b/allianceauth/locale/it_IT/LC_MESSAGES/django.mo index 31c9a969..603b1733 100644 Binary files a/allianceauth/locale/it_IT/LC_MESSAGES/django.mo and b/allianceauth/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/it_IT/LC_MESSAGES/django.po b/allianceauth/locale/it_IT/LC_MESSAGES/django.po index 20f9df11..09777907 100644 --- a/allianceauth/locale/it_IT/LC_MESSAGES/django.po +++ b/allianceauth/locale/it_IT/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: Tuz, 2024\n" "Language-Team: Italian (Italy) (https://app.transifex.com/alliance-auth/teams/107430/it_IT/)\n" @@ -23,14 +23,22 @@ msgstr "" "Language: it_IT\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universal" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -61,91 +69,91 @@ msgstr "Indirizzo di posta elettronica" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "Non ti è consentito aggiungere o rimuovere questi gruppi ristretti:%s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Inglese" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Tedesco" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Spagnolo" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Italiano" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Giapponese" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Coreano" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Francese" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Russo" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Ucraino" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Lingua" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Modalità scura" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Tema" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Stato modificato a: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "Il tuo stato utente è ora: %(state)s" @@ -180,9 +188,9 @@ msgstr "Cambia personaggio principale" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Nome" @@ -192,7 +200,7 @@ msgid "Corp" msgstr "Corp" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Alleanza" @@ -205,47 +213,45 @@ msgstr "Appartenenza" msgid "State:" msgstr "Stato:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Gestione dei Token" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"Questa pagina è il tentativo migliore, ma i backup o i registri del database" -" possono ancora contenere i token. Se possibile, revocare sempre i token su " -"https://community.eveonline.com/support/third-party-applications/." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "Ambiti" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Azioni" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -340,7 +346,7 @@ msgstr "" msgid "Registration of new accounts is not allowed at this time." msgstr "Al momento non è possibile registrare nuovi account." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Statistiche della corporazione" @@ -361,39 +367,39 @@ msgstr "Aggiungi Corporazione" msgid "Search all corporations..." msgstr "Cerca tutte le corporazioni..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Personaggi principali" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Membri" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Non registrati" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Ultimo aggiornamento:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Aggiorna ora" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Carattere principale" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Personaggi registrati" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -402,16 +408,16 @@ msgstr "Personaggi registrati" msgid "Corporation" msgstr "Corporazione" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Killboard" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -420,21 +426,21 @@ msgstr "Killboard" msgid "Main Character" msgstr "Personaggio principale" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Corporazione principale" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Alleanza principale" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Cerca Risultati" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -448,6 +454,30 @@ msgstr "" "Impossibile raccogliere le statistiche sulla corporazione con il token " "selezionato." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -461,6 +491,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -547,9 +586,9 @@ msgid "Delete fat" msgstr "Elimina fat" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Utente" @@ -557,7 +596,7 @@ msgstr "Utente" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Sistema" @@ -571,10 +610,12 @@ msgstr "Nave" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Ora Eve" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -633,7 +674,7 @@ msgstr "Flotta" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Autore" @@ -742,18 +783,23 @@ msgstr "" "Impossibile registrare la partecipazione alla flotta per " "{character.character_name}. Il personaggio deve essere online." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Gestione gruppi" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Gruppi" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Utenti" @@ -882,84 +928,84 @@ msgstr "creato il" msgid "Date when this entry was created" msgstr "Data in cui è stata creata questa voce." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Registro di controllo" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Indietro" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Data/Ora" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Richiedente" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Tipo" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Azione" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Attore" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Rimosso" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Tutti gli orari visualizzati sono riferiti a EVE/UTC" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "Nessuna voce trovata per questo gruppo." -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Membri del gruppo" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Organizzazione" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Responsabile del gruppo" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(sconosciuto)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Rimuovi dal gruppo" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Nessun membro del gruppo da elencare." @@ -973,7 +1019,7 @@ msgid "Join/Leave Requests" msgstr "Richieste +/-" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Descrizione" @@ -983,7 +1029,7 @@ msgstr "Descrizione" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Stato" @@ -996,7 +1042,7 @@ msgid "Hidden" msgstr "Nascosto" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Aperto" @@ -1020,49 +1066,49 @@ msgstr "Copia link di accesso diretto" msgid "No groups to list." msgstr "Nessun gruppo da elencare." -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Gruppi disponibili" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "I leader" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Gruppo" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Abbandona" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "In attesa" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Unisciti" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Richiedi" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "Nessun gruppo disponibile." @@ -1200,6 +1246,10 @@ msgstr "Hai già una richiesta di congedo in sospeso per quel gruppo." msgid "Applied to leave group %(group)s." msgstr "Hai fatto domanda di congedo per %(group)s." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Domande" @@ -1271,7 +1321,7 @@ msgstr "Nome utente" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Approvato" @@ -1279,7 +1329,7 @@ msgstr "Approvato" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Rifiutato" @@ -1394,7 +1444,7 @@ msgstr "Modifica %s voce di menu" msgid "children" msgstr "bambini" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "testo" @@ -1406,11 +1456,15 @@ msgstr "definito dall'utente" msgid "visible" msgstr "visibile" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "app" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "cartella" @@ -1422,27 +1476,27 @@ msgstr "link" msgid "type" msgstr "tipo" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "Testo da mostrare sul menu" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "ordine" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "Ordine del menu. Prima il più basso" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "Cartella in cui si trova questo oggetto (facoltativo)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "è nascosto" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" @@ -1450,21 +1504,21 @@ msgstr "" "Nascondi e se questa voce è una cartella, tutte le voci sotto di essa " "saranno nascoste." -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "classi di icone" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "url" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1473,44 +1527,63 @@ msgid "Add folder" msgstr "Aggiungi cartella" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Notifiche" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "Super User" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Amministratore" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "Sign Out" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "Sign In" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "pericolo" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "attenzione" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "informazioni" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "successo" @@ -1567,7 +1640,7 @@ msgstr "Contrassegna tutte le notifiche come lette." msgid "Deleted all read notifications." msgstr "Elimina tutte le notifiche lette." -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Operazioni di flotta" @@ -1596,7 +1669,7 @@ msgid "Fleet Commander" msgstr "Comandante della flotta" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Informazioni aggiuntive" @@ -1641,13 +1714,8 @@ msgstr "" msgid "Form Up System" msgstr "Sistema di partenza" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Ora locale" @@ -1660,16 +1728,16 @@ msgid "Fleet Operation Management" msgstr "Gestione delle operazioni di flotta" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Ora EVE attuale:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Prossime operazioni di flotta" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "Nessun timer prossimo." @@ -1678,7 +1746,7 @@ msgid "Past Fleet Operations" msgstr "Operazioni di flotta passate" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "Nessun timer passato." @@ -1706,50 +1774,51 @@ msgstr "Rimosso il timer per l'operazione %(opname)s." msgid "Saved changes to operation timer for %(opname)s." msgstr "Salvati i cambiamenti per l'operazione %(opname)s." -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Verifica dei permessi" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Utente / Personaggio" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Panoramica dei permessi" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Mostrando solo i permessi applicati" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Mostra tutto" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Mostrando tutti i permessi" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Mostra applicati" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "App" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Modello" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Nome del codice" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "Stati" @@ -1762,7 +1831,7 @@ msgstr "Un account per questo servizio già esiste" msgid "Successfully set your {self.service_name} password" msgstr "La password del {self.service_name} è stata impostata con sucesso" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Servizi" @@ -1826,6 +1895,10 @@ msgstr "Password" msgid "Password must be at least 8 characters long." msgstr "La password deve contenere almeno 8 caratteri." +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Account discord disabilitato" @@ -1879,6 +1952,10 @@ msgstr "" "Si è verificato un errore durante l'attivazione del tuo account discord. Per" " favore ritenta." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "Discorso" @@ -1912,6 +1989,14 @@ msgstr "" msgid "Invalid payload. Please contact support if this problem persists." msgstr "Payload non valido. Contatta l'assistenza se il problema persiste." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "Attiva account IPSuite4." @@ -1936,45 +2021,49 @@ msgstr "Imposta password IPSuite4." msgid "Deactivated IPSuite4 account." msgstr "Disattiva account IPSuite4." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1991,6 +2080,10 @@ msgstr "Connect" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -2042,6 +2135,10 @@ msgstr "Trasmissione Jabber inviata a %s" msgid "Set jabber password." msgstr "Imposta password jabber." +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Account forum attivato." @@ -2066,6 +2163,10 @@ msgstr "Reimposta password forum." msgid "Set forum password." msgstr "Imposta password forum." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "Attivato account SMF." @@ -2089,6 +2190,10 @@ msgstr "Reimposta password SMF." msgid "Set SMF password." msgstr "Imposta password SMF." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2139,6 +2244,10 @@ msgstr "Disattivato account TeamSpeak3." msgid "Reset TeamSpeak3 permission key." msgstr "Reimposta la chiave di autorizzazione TeamSpeak3." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "Attivato account XenForo." @@ -2251,7 +2360,7 @@ msgstr "" "Alcuni servizi offrono diverse opzioni. Passate il mouse sopra per vederne " "di più." -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Sostituzione della nave" @@ -2288,7 +2397,7 @@ msgid "SRP Fleet Create" msgstr "Crea SRP della flotta" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2311,75 +2420,75 @@ msgstr "Crea SRP della flotta" msgid "Give this link to the line members." msgstr "Fornite il link ai membri." -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "Dati del SRP della flotta" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "Visualizza Flotte" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Contrassegna incompleto" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Contrassegna completo" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Perdite totali:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "Costo totale in ISK:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Sei sicuro di voler eliminare la richiesta di SRP?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Nome del pilota" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Link killboard" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Tipologia nave" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Valore delle perdite Killboard" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "Costo in ISK del SRP" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "Fai clic sul valore per modificare, Invio per salvare e proseguire, ESC per " "annullare" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Ora di pubblicazione" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Link" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "Nessuna richiesta di SRP per questa flotta." @@ -2567,52 +2676,48 @@ msgstr "Il server ha ricevuto un codice di risposta di errore ESI pari a " msgid "Alliance Auth Notifications" msgstr "Notifiche Auth Alleanza" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Chiuso" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "Nessuna notifica al momento" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Powered by GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Discord di supporto" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Versione del software" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Attuale" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Ultima versione stabile" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Aggiornamento disponibile" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Ultima versione preliminare" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Versione preliminare disponibile" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "Coda delle attività" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2620,11 +2725,11 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "in esecuzione" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "in coda" @@ -2649,13 +2754,20 @@ msgstr "Disconnettersi" msgid "Toggle navigation" msgstr "Attiva/disattiva navigazione" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "Seleziona Tema" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Timer delle strutture" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Dettagli" @@ -2672,7 +2784,7 @@ msgid "Timer Type" msgstr "Tipologia di timer" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Obiettivo" @@ -2706,159 +2818,145 @@ msgstr "Limitato alla corporazione" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Amichevole" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Ostile" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Neutrale" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "POCO" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS [S]" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS [M]" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS [L]" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Azbel" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "Cyno Beacon" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "Cyno Jammer" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Ansiblex Jump Gate" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Moon Mining Cycle" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Altro" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Non specificato" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Scudo" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Armatura" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Struttura" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Ultimo" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "In ancoraggio" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "In disancoraggio" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "Prossimi Timer" @@ -2866,12 +2964,6 @@ msgstr "Prossimi Timer" msgid "Timer" msgstr "Timer" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Timer delle strutture" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "Dettagli del timer della struttura" @@ -2892,7 +2984,7 @@ msgid "Create Timer" msgstr "Crea timer" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Crea timer struttura" @@ -2902,36 +2994,28 @@ msgstr "Crea timer struttura" msgid "Update Structure Timer" msgstr "Aggiorna timer struttura" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Struttura" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Cyno Beacon" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Cyno Jammer" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Gestione timer strutture" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Timer passati" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Aggiunto un nuovo timer in %(system)salle %(time)s." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Salvati i cambiamenti al timer." diff --git a/allianceauth/locale/ja/LC_MESSAGES/django.mo b/allianceauth/locale/ja/LC_MESSAGES/django.mo index 9e57f056..0143421a 100644 Binary files a/allianceauth/locale/ja/LC_MESSAGES/django.mo and b/allianceauth/locale/ja/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/ja/LC_MESSAGES/django.po b/allianceauth/locale/ja/LC_MESSAGES/django.po index 715af6ab..8df07dd2 100644 --- a/allianceauth/locale/ja/LC_MESSAGES/django.po +++ b/allianceauth/locale/ja/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: kotaneko, 2024\n" "Language-Team: Japanese (https://app.transifex.com/alliance-auth/teams/107430/ja/)\n" @@ -23,14 +23,22 @@ msgstr "" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google ユニバーサル アナリティクス" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google アナリティクス 4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -56,91 +64,91 @@ msgstr "メールアドレス" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "これらの制限付きグループを追加または削除することはできません。%s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "英語" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "ドイツ語" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "スペイン語" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "イタリア語" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "日本語" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "韓国語" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "フランス語" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "ロシア語" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "ウクライナ語" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "言語" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "ナイトモード" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "テーマ" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "分類が%sに変更されました。" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "あなたの分類は%(state)sになりました。" @@ -175,9 +183,9 @@ msgstr "メンキャラクターを変更" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "名前" @@ -187,7 +195,7 @@ msgid "Corp" msgstr "コーポ" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "アライアンス" @@ -200,47 +208,45 @@ msgstr "メンバーシップ" msgid "State:" msgstr "状態:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "トークン管理" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"このページは最善の方法ですが、バックアップまたはデータベースログには引き続きトークンが含まれている可能性があります。可能な限り、必ず " -"https://community.eveonline.com/support/third-party-applications/ " -"でトークンを取り消してください。" -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "スコープ" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "アクション" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -325,7 +331,7 @@ msgstr "メールアドレスを確認しました。続行するにはログイ msgid "Registration of new accounts is not allowed at this time." msgstr "新規アカウントの登録は、現時点ではできません。" -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "コーポレーション統計" @@ -346,39 +352,39 @@ msgstr "コーポレーションを追加" msgid "Search all corporations..." msgstr "すべてのコーポレーションを検索する..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "メイン" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "メンバー" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "未登録" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "最終更新:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "今すぐアップデート" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "メインキャラクター" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "登録済みのキャラクター" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -387,16 +393,16 @@ msgstr "登録済みのキャラクター" msgid "Corporation" msgstr "コーポレーション" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "キルボード" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -405,21 +411,21 @@ msgstr "キルボード" msgid "Main Character" msgstr "メインキャラクター" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "メインコーポレーション" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "メインアライアンス" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "検索結果" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -431,6 +437,30 @@ msgstr "選択されたCorpはすでにStatistics Moduleを導入済みです。 msgid "Failed to gather corporation statistics with selected token." msgstr "選択されたTokenではCorporation Statisticsを取得できませんでした。" +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -444,6 +474,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -529,9 +568,9 @@ msgid "Delete fat" msgstr "Fat-Linkを削除" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "ユーザ" @@ -539,7 +578,7 @@ msgstr "ユーザ" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "星系" @@ -553,10 +592,12 @@ msgstr "艦船" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "EVE内時間" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -611,7 +652,7 @@ msgstr "フリート" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "作成者" @@ -718,18 +759,23 @@ msgid "" "character needs to be online." msgstr "{character.character_name} のフリート参加を登録できません。キャラクターがオンラインである必要があります。" +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "グループ管理" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "グループ" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "ユーザ" @@ -842,84 +888,84 @@ msgstr "作成日時" msgid "Date when this entry was created" msgstr "このエントリが作成された日付" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "監査ログ" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "戻る" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "日付/時間" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "依頼者" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "タイプ" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "アクション" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "アクター" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "削除されました" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "表示される時間はすべて EVEゲーム内時間/世界標準時 です。" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "この Group での entry が見つかりませんでした。" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "グループメンバー" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "組織" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "グループリーダー" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(unknown)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Group から削除" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Groupメンバーはリストにいません。" @@ -933,7 +979,7 @@ msgid "Join/Leave Requests" msgstr "参加/脱退リクエスト" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "説明" @@ -943,7 +989,7 @@ msgstr "説明" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "ステータス" @@ -956,7 +1002,7 @@ msgid "Hidden" msgstr "閉じる" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "開く" @@ -980,49 +1026,49 @@ msgstr "直接参加リンクをコピー" msgid "No groups to list." msgstr "一覧表示するグループはありません。" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "参加可能Group" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "リーダー" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "グループ" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "脱退" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "処理中" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "参加" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "申請" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "参加可能なGroupがありません。" @@ -1151,6 +1197,10 @@ msgstr "すでに脱退申請を送信済みです。" msgid "Applied to leave group %(group)s." msgstr "%(group)sからの脱退申請を送信しました。" +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "申請" @@ -1222,7 +1272,7 @@ msgstr "ユーザー名" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "承認" @@ -1230,7 +1280,7 @@ msgstr "承認" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "拒否" @@ -1345,7 +1395,7 @@ msgstr "変更 %s メニューアイテム" msgid "children" msgstr "子供" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "テキスト" @@ -1357,11 +1407,15 @@ msgstr "ユーザー定義" msgid "visible" msgstr "表示可能" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "app" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "フォルダー" @@ -1373,47 +1427,47 @@ msgstr "リンク" msgid "type" msgstr "タイプ" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "メニューに表示するテキスト" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "オーダー" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "メニューの順序。低い順" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "このアイテムが入っているフォルダ (オプション)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "非表示です" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "このメニュー項目を非表示にします。この項目がフォルダの場合、その下にあるすべての項目も非表示になります" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "アイコンクラス" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "メニューにアイコンとして表示するFont Awesome クラス、例えば fa-solid fa-house" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "URL" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "このメニュー項目のリンク先となる外部 URL" @@ -1422,44 +1476,63 @@ msgid "Add folder" msgstr "フォルダーを追加" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "通知" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "スーパーユーザ" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "管理者" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "サインアウト" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "サインイン" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "危険" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "警告" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "情報" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "成功" @@ -1516,7 +1589,7 @@ msgstr "確認済みのすべての通知を選択" msgid "Deleted all read notifications." msgstr "確認済みのすべての通知を削除" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "フリートオペレーション" @@ -1545,7 +1618,7 @@ msgid "Fleet Commander" msgstr "フリートコマンダー" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "追加情報" @@ -1590,13 +1663,8 @@ msgstr "オペレーション" msgid "Form Up System" msgstr "フォームアップ星系" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "EVE内時間" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "ローカルタイム" @@ -1609,16 +1677,16 @@ msgid "Fleet Operation Management" msgstr "フリートオペレーション管理" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "現在のゲーム内時間:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "次のフリートオペレーション" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "今後予定されているタイマーはありません。" @@ -1627,7 +1695,7 @@ msgid "Past Fleet Operations" msgstr "過去のフリートオペレーション" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "過去のタイマーはありません。" @@ -1655,50 +1723,51 @@ msgstr "%(opname)sのTimerが削除されました。" msgid "Saved changes to operation timer for %(opname)s." msgstr "%(opname)sのTimerの変更が保存されました。" -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "権限を確認" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "ユーザー/キャラクター" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "権限一覧" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "申請済みの権限のみを表示" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "すべて表示" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "すべての権限を表示する" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "申請済みを表示" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "App" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "モデル" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "コードネーム" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "States" @@ -1711,7 +1780,7 @@ msgstr "そのアカウントは既に存在してます。" msgid "Successfully set your {self.service_name} password" msgstr "{self.service_name} のパスワードが正常に設定されました" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "サービス" @@ -1775,6 +1844,10 @@ msgstr "パスワード" msgid "Password must be at least 8 characters long." msgstr "Passwordは8 文字以上必要です。" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Discordのアカウントを無効化" @@ -1824,6 +1897,10 @@ msgid "" "again." msgstr "Discord Accountの有効化中にエラーが発生しました。再度実行してください。" +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "談話" @@ -1855,6 +1932,14 @@ msgstr "SSO Payload、もしくはSignatureを認証できませんでした。 msgid "Invalid payload. Please contact support if this problem persists." msgstr "SSO Payloadが無効です。問題が解決しない場合、サポートへ連絡してください。" +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "IPSuite4 アカウントをアクティブ化しました。" @@ -1878,45 +1963,49 @@ msgstr "IPSuite4 のパスワードを設定します。" msgid "Deactivated IPSuite4 account." msgstr "IPSuite4 アカウントを非アクティブ化しました。" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1933,6 +2022,10 @@ msgstr "接続" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -1984,6 +2077,10 @@ msgstr "Jabberブロードキャストを %sに送信しました。" msgid "Set jabber password." msgstr "Jabber のパスワードを設定します。" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "フォーラムアカウントをアクティブ化しました。" @@ -2007,6 +2104,10 @@ msgstr "フォーラムのパスワードをリセットします。" msgid "Set forum password." msgstr "フォーラムのパスワードを設定します。" +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "SMF アカウントをアクティブ化しました。" @@ -2030,6 +2131,10 @@ msgstr "SMF のパスワードをリセットします。" msgid "Set SMF password." msgstr "SMF のパスワードを設定します。" +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2079,6 +2184,10 @@ msgstr "TeamSpeak3 accoutの無効化" msgid "Reset TeamSpeak3 permission key." msgstr "TeamSpeak3 の権限キーをリセットします。" +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "XenForo のアカウントをアクティブ化しました。" @@ -2188,7 +2297,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "一部のサービスは異なるオプションを提供します。ボタンにカーソルを合わせると詳細が表示されます。" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Ship Replacement Program" @@ -2223,7 +2332,7 @@ msgid "SRP Fleet Create" msgstr "SRP フリート作成" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2246,76 +2355,76 @@ msgstr "SRPフリートを作成" msgid "Give this link to the line members." msgstr "このリンクをラインメンバーに渡してください。" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "SRP フリートデータ" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "フリートを見る" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Mark 未完了" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Mark 完了" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "損失の合計:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "ISK 費用の合計:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "SRP申請を削除しますか?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "パイロット名" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "キルボードリンク" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "艦船の種類" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "キルボードにおける損失量" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "SRP ISK 費用" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "値を変更するためにクリックして入力してください。\n" "Enter:値を適用、次を選択\n" "ESC:キャンセル" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "投稿時間" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "リンク" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "このフリートにはSRPリクエストはありません。" @@ -2500,52 +2609,48 @@ msgstr "サーバーが ESI エラー応答コードを受信しました " msgid "Alliance Auth Notifications" msgstr "アライアンスAuth 通知" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "クローズド" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "現時点では通知はありません" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Powered by GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "サポートディスコード" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "ソフトウェアバージョン" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "現在" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "最新安定版" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "アップデート可能" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "最新のプレリリース" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "プレリリース利用可能" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "タスク待ち" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2556,11 +2661,11 @@ msgstr "" " ステータス %(total)s 処理済みタスク • 残り %(latest)s\n" " " -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "実行中" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "実行待ち" @@ -2585,13 +2690,20 @@ msgstr "ログアウト" msgid "Toggle navigation" msgstr "ナビゲーションを切り替え" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "テーマを選択" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "ストラクチャタイマー" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "詳細" @@ -2608,7 +2720,7 @@ msgid "Timer Type" msgstr "タイマータイプ" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "目標" @@ -2642,159 +2754,145 @@ msgstr "コーポレーション制限付き" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "味方" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "敵性" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "中立" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "POCO" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS [S]" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS [M]" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS [L]" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Azbel" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "Cyno Beacon" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "Cyno Jammer" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Ansiblex Jump Gate" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Moon Mining Cycle" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "その他" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "指定なし" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "シールド" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "アーマー" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "ハル" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "最終" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Anchoring" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Unanchoring" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "今後予定されているタイマー" @@ -2802,12 +2900,6 @@ msgstr "今後予定されているタイマー" msgid "Timer" msgstr "タイマー" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "ストラクチャタイマー" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "ストラクチャータイマーの詳細" @@ -2828,7 +2920,7 @@ msgid "Create Timer" msgstr "タイマーを作成" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "ストラクチャタイマーの作成" @@ -2838,36 +2930,28 @@ msgstr "ストラクチャタイマーの作成" msgid "Update Structure Timer" msgstr "ストラクチャタイマーを更新" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "ストラクチャ" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Cyno Beacon" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Cyno Jammer" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "ストラクチャタイマー管理" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "コーポレーションタイマー" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "過去のタイマー" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "%(system)sのタイマーを%(time)sに追加しました。" -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "タイマーの変更を保存しました。" diff --git a/allianceauth/locale/ko_KR/LC_MESSAGES/django.mo b/allianceauth/locale/ko_KR/LC_MESSAGES/django.mo index 5d76fe32..2087ff53 100644 Binary files a/allianceauth/locale/ko_KR/LC_MESSAGES/django.mo and b/allianceauth/locale/ko_KR/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/ko_KR/LC_MESSAGES/django.po b/allianceauth/locale/ko_KR/LC_MESSAGES/django.po index 272fc7f5..5aa60570 100644 --- a/allianceauth/locale/ko_KR/LC_MESSAGES/django.po +++ b/allianceauth/locale/ko_KR/LC_MESSAGES/django.po @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: Woojin Kang, 2024\n" "Language-Team: Korean (Korea) (https://app.transifex.com/alliance-auth/teams/107430/ko_KR/)\n" @@ -28,14 +28,22 @@ msgstr "" "Language: ko_KR\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google 애널리틱스 유니버설" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google 애널리틱스 V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -62,91 +70,91 @@ msgstr "이메일" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "해당 제한된 그룹을 추가하거나 제거할 수 있는 권한이 존재하지 않습니다: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "영어" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "독일어" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "스페인어" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "이탈리아어" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "일본어" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "한국어" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "프랑스어" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "러시아어" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "우크라이나어" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "언어" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "야간 모드" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "테마" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "상태가 %s로 변경됐습니다." -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "사용자의 상태는 %(state)s입니다." @@ -181,9 +189,9 @@ msgstr "주 캐릭터 변경" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "이름" @@ -193,7 +201,7 @@ msgid "Corp" msgstr "코퍼레이션" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "얼라이언스" @@ -206,47 +214,45 @@ msgstr "멤버쉽" msgid "State:" msgstr "상태:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "토큰 관리" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"해당 페이지가 최선의 선택이지만, 백업이나 데이터베이스 기록은 당신의 토큰을 여전히 포함하고 있을 수 있습니다. 항상 가능한 한 " -"https://community.eveonline.com/support/third-party-applications/ 에서 토큰을 " -"제거하십시요." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "범위" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "활동" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -331,7 +337,7 @@ msgstr "이메일 주소가 확인되었습니다. 로그인 해주세요." msgid "Registration of new accounts is not allowed at this time." msgstr "현재 새로운 계정 등록은 받지않습니다." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "코퍼레이션 상태" @@ -352,39 +358,39 @@ msgstr "코퍼레이션 추가" msgid "Search all corporations..." msgstr "모든 코퍼레이션 검색" -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "메인" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "멤버" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "미등록" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "마지막 업데이트:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "지금 업데이트" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "메인 캐릭터" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "등록된 캐릭터" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -393,16 +399,16 @@ msgstr "등록된 캐릭터" msgid "Corporation" msgstr "코퍼레이션" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "전적" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -411,21 +417,21 @@ msgstr "전적" msgid "Main Character" msgstr "주 캐릭터" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "주 코퍼레이션" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "주 얼라이언스" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "검색결과" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -437,6 +443,30 @@ msgstr "선택한 코퍼레이션은 이미 통계 모듈을 갖고 있습니다 msgid "Failed to gather corporation statistics with selected token." msgstr "선택한 토큰으로 코퍼레이션 통계 수집에 실패했습니다." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -450,6 +480,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -535,9 +574,9 @@ msgid "Delete fat" msgstr "함대 활동 추적(FAT) 링크 삭제" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "사용자" @@ -545,7 +584,7 @@ msgstr "사용자" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "시스템" @@ -559,10 +598,12 @@ msgstr "함선" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "이브 표준시간" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -617,7 +658,7 @@ msgstr "함대" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "생성자" @@ -726,18 +767,23 @@ msgstr "" "{character.character_name}의 함대 참여를 등록할 수 없습니다. 등록되기 위해서는 해당 캐릭터가 온라인 상태여야 " "합니다." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "그룹 관리" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "그룹" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "사용자" @@ -851,84 +897,84 @@ msgstr "생성일:" msgid "Date when this entry was created" msgstr "이 항목이 생성된 날짜" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "감사 기록" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "뒤로" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "날짜/시간" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "요청인" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "타입" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "활동" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "활동한 사람" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "제거됨" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "표시되는 모든 시간은 EVE/UTC입니다." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "이 그룹에는 항목 없음" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "그룹 멤버" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "조직" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "그룹 리더" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(알 수 없음)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "그룹에서 제거" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "목록에 그룹 멤버 없음" @@ -942,7 +988,7 @@ msgid "Join/Leave Requests" msgstr "가입/탈퇴 요청" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "설명" @@ -952,7 +998,7 @@ msgstr "설명" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "상태" @@ -965,7 +1011,7 @@ msgid "Hidden" msgstr "숨김" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "열기" @@ -989,49 +1035,49 @@ msgstr "참여 링크 복사" msgid "No groups to list." msgstr "목록에 그룹 없음" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "사용 가능한 그룹" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "리더" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "그룹" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "떠나기" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "보류 중" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "참여" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "요청" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "사용 가능한 그룹 없음." @@ -1160,6 +1206,10 @@ msgstr "해당 그룹의 탈퇴 신청이 접수된 상태입니다." msgid "Applied to leave group %(group)s." msgstr "%(group)s그룹의 탈퇴가 신청됨." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "지원" @@ -1231,7 +1281,7 @@ msgstr "사용자명" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "승인" @@ -1239,7 +1289,7 @@ msgstr "승인" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "거절" @@ -1354,7 +1404,7 @@ msgstr "%s 메뉴 아이템 변경" msgid "children" msgstr "아이들" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "텍스트" @@ -1366,11 +1416,15 @@ msgstr "확인된 유저" msgid "visible" msgstr "보임" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "앱" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "폴더" @@ -1382,47 +1436,47 @@ msgstr "링크" msgid "type" msgstr "타입" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "메뉴에 띄울 텍스트" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "순서" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "메뉴 순서. 가장 낮은 순으로" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "해당 아이템이 포함되어 있는 폴더 (optional)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "숨겨짐" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "해당 메뉴 아이템을 숨기십시오. 해당 아이템이 폴더라면 폴더 내부의 모든 아이템들 또한 숨겨져있어야 합니다." -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "아이콘 등급" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "메뉴의 아이콘으로 보이기 위한 Font Awesome 등급, 예) fa-solid fa-house" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "url" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "해당 메뉴 아이템들의 외부 URL이 링크된 주소:" @@ -1431,44 +1485,63 @@ msgid "Add folder" msgstr "폴더 추가" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "알림" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "Super User" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "어드민" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "탈퇴" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "가입" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "위험" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "경고" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "정보" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "성공" @@ -1525,7 +1598,7 @@ msgstr "모든 알림을 읽음 처리했습니다." msgid "Deleted all read notifications." msgstr "모든 읽은 알림을 삭제했습니다." -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "함대 오퍼레이션" @@ -1554,7 +1627,7 @@ msgid "Fleet Commander" msgstr "함대 커맨더" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "추가 기재 사항" @@ -1599,13 +1672,8 @@ msgstr "오퍼레이션" msgid "Form Up System" msgstr "폼업 성계" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "인게임 시간" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "현지 시간" @@ -1618,16 +1686,16 @@ msgid "Fleet Operation Management" msgstr "함대 오퍼레이션 관리" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "현재 이브 시간:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "다음 함대 옵" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "예정된 옵 타이머가 없습니다." @@ -1636,7 +1704,7 @@ msgid "Past Fleet Operations" msgstr "이전 함대 오퍼레이션" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "최근 지나간 옵 타이머가 없습니다." @@ -1664,50 +1732,51 @@ msgstr "%(opname)s 의 오퍼레이션 타이머를 제거했습니다." msgid "Saved changes to operation timer for %(opname)s." msgstr "%(opname)s 의 오퍼레이션 타이머 수정사항을 저장했습니다." -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "승인 점검" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "유저 / 캐릭터" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "승인 개요" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "승인 신청만 보기" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "모두 보기" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "모든 승인 보기" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "신청 보기" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "앱" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "모델" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "코드명" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "상태" @@ -1720,7 +1789,7 @@ msgstr "해당 서비스 계정이 이미 존재함" msgid "Successfully set your {self.service_name} password" msgstr "{self.service_name} 비밀번호 설정 완료" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "서드파티" @@ -1784,6 +1853,10 @@ msgstr "비밀번호" msgid "Password must be at least 8 characters long." msgstr "비밀번호는 8글자 이상이어야 합니다." +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Discord 계정 비활성화" @@ -1832,6 +1905,10 @@ msgid "" "again." msgstr "Discord 계정 연동 중 오류가 발생했습니다. 다시 시도해 주세요." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "담화" @@ -1863,6 +1940,14 @@ msgstr "SSO 페이로드 혹은 시그니쳐가 없습니다. 이 문제가 지 msgid "Invalid payload. Please contact support if this problem persists." msgstr "페이로드가 유효하지 않습니다. 이문제가 지속된다면 IT 지원을 요청하세요." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "IPSuite4 계정 활성화 완료" @@ -1886,45 +1971,49 @@ msgstr "IPSuite4 비밀번호 설정" msgid "Deactivated IPSuite4 account." msgstr "IPSuite4 계정 비활성화 완료" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1941,6 +2030,10 @@ msgstr "연결" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "재버" @@ -1992,6 +2085,10 @@ msgstr "%s 로 Jabber 방송을 보내십시오." msgid "Set jabber password." msgstr "재버 비밀번호 설정" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "포럼 계정 활성화 완료" @@ -2015,6 +2112,10 @@ msgstr "포럼 비밀번호 재설정" msgid "Set forum password." msgstr "포럼 비밀번호 설정" +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "SMF 계정 활성화 완료" @@ -2038,6 +2139,10 @@ msgstr "SMF 비밀번호 재설정" msgid "Set SMF password." msgstr "SMF 비밀번호 설정" +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2087,6 +2192,10 @@ msgstr "팀스피크3 계정 비활성화 완료" msgid "Reset TeamSpeak3 permission key." msgstr "팀스피크3 인증키 재설정" +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "XenForo 계정 활성화 완료" @@ -2196,7 +2305,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "몇몇 서비스는 다른 옵션을 제공합니다. 더 자세한 정보를 보기 위해서는 버튼 위에 마우스를 올려놓으세요." -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "SRP" @@ -2231,7 +2340,7 @@ msgid "SRP Fleet Create" msgstr "SRP 보상 함대 생성" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2254,73 +2363,73 @@ msgstr "SRP 함대 생성" msgid "Give this link to the line members." msgstr "라인 멤버에게 해당 링크 주기." -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "SRP 보상 함대 데이터" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "함대 보기" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "표시 미완료" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "표시 완료" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "전체 손실:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "전체 ISK 비용:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "SRP 보상 요청을 삭제하시겠습니까?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "파일럿 이름" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "킬보드 링크" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "함선 종류" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "킬보드상 손실 금액" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "SRP 보상 비용" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "금액을 수정하려면 클릭, 저장을 하고 다음으로 가려면 엔터, 취소를 하려면 ESC를 누르세요. " -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "작성 시간" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "링크" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "이 함대에는 SRP 보상 요청이 없습니다." @@ -2505,52 +2614,48 @@ msgstr "당신의 서버에 ESI 에러가 발생하였습니다. 응답코드 :" msgid "Alliance Auth Notifications" msgstr "얼라이언스 Auth 알림" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "닫혔음" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "이번에는 알림을 울리지 않기" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "GitLab 제공" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Support Discord" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "소프트웨어 버전" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "현재" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "최신 안정화 버전" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "업데이트 가능" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "최신 사전 출시 버전" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "사전 출시 사용 가능" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "작업 대기열" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2560,11 +2665,11 @@ msgstr "" "\n" " %(total)s 의 진행된 작업 상태 • 잔여 %(latest)s" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "진행중" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "대기중" @@ -2589,13 +2694,20 @@ msgstr "로그아웃" msgid "Toggle navigation" msgstr "네비게이션 전환" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "테마 선택" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "구조물 타이머" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "설명" @@ -2612,7 +2724,7 @@ msgid "Timer Type" msgstr "타이머 종류" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "목표 대상" @@ -2646,159 +2758,145 @@ msgstr "코퍼레이션 제한" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "우호" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "적대" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "중립" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "포코(POCO)" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS [S]" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS [M]" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS [L]" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "아스트라허스(Astrahus)" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "포르티자(Fortizar)" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "킵스타(Keepstar)" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "라이타루(Raitaru)" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "아즈벨(Azbel)" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "소티요(Sotiyo)" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "아타노르(Athanor)" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "타타라(Tatara)" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "사이노 비컨(Cyno Beacon)" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "사이노 재머(Cyno Jammer)" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "엔서블렉스 점프 게이트(Ansiblex Jump Gate)" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "문 마이닝 주기" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "기타" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "명시되지 않음" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "실드" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "장갑" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "선체" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "최종" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "고정" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "미고정" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "예정 타이머" @@ -2806,12 +2904,6 @@ msgstr "예정 타이머" msgid "Timer" msgstr "타이머" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "구조물 타이머" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "스트럭쳐 타이머 정보" @@ -2832,7 +2924,7 @@ msgid "Create Timer" msgstr "타이머 생성" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "구조물 타이머 생성" @@ -2842,36 +2934,28 @@ msgstr "구조물 타이머 생성" msgid "Update Structure Timer" msgstr "구조물 타이머 수정" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "구조물" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "사이노 비컨(Cyno Beacon)" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "사이노 재머(Cyno Jammer)" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "구조물 타이머 관리" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "코퍼레이션 타이머" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "이전 타이머" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "%(time)s 에 있을 %(system)s 타이머를 추가했습니다." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "타이머 변경사항이 저장되었습니다." diff --git a/allianceauth/locale/nl_NL/LC_MESSAGES/django.mo b/allianceauth/locale/nl_NL/LC_MESSAGES/django.mo index f2b70d5c..464c4510 100644 Binary files a/allianceauth/locale/nl_NL/LC_MESSAGES/django.mo and b/allianceauth/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/nl_NL/LC_MESSAGES/django.po b/allianceauth/locale/nl_NL/LC_MESSAGES/django.po index fbc57aa7..9b84fd7e 100644 --- a/allianceauth/locale/nl_NL/LC_MESSAGES/django.po +++ b/allianceauth/locale/nl_NL/LC_MESSAGES/django.po @@ -6,15 +6,16 @@ # Translators: # John Vaille, 2024 # Agent Fuse, 2024 +# Machiel Broekman, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-13 19:57+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" -"Last-Translator: Agent Fuse, 2024\n" +"Last-Translator: Machiel Broekman, 2025\n" "Language-Team: Dutch (Netherlands) (https://app.transifex.com/alliance-auth/teams/107430/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,14 +23,22 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universeel" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -61,91 +70,91 @@ msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "" "Je bent niet gemachtigd om de volgende beperkte groepen te verwijderen: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Engels" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Duits" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Spaans" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Italiaans" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Japans" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Koreaans" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Frans" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Russisch" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 -msgid "Dutch" -msgstr "" - #: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 -msgid "Polish" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:114 +msgid "Dutch" +msgstr "Nederlands" #: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/project_template/project_name/settings/base.py:115 +msgid "Polish" +msgstr "Pools" + +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Oekraïens" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" -msgstr "" +msgstr "Eenvoudig Chinees" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Taal" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Nachtstand" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Thema" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "State gewijzigd naar: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "De gebruikers staat is nu: %(state)s" @@ -180,9 +189,9 @@ msgstr "Verander Main" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Naam" @@ -192,7 +201,7 @@ msgid "Corp" msgstr "Corp" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Alliantie" @@ -205,48 +214,48 @@ msgstr "Lidmaatschap" msgid "State:" msgstr "Status:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Tokenbeheer" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"Deze pagina is een beste poging, maar back-ups of database-logs kunnen nog " -"steeds uw tokens bevatten. Herroep altijd tokens op " -"https://community.eveonline.com/support/third-party-applications/ indien " -"mogelijk." +"Deze pagina is een beste poging, maar back-ups of databaselogboeken kunnen " +"nog steeds uw tokens bevatten. Trek tokens waar mogelijk altijd in op " +"https://developers.eveonline.com/authorized-apps." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "Scopes" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Acties" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -338,7 +347,7 @@ msgstr "Uw e-mailadres is bevestigd. Gelieve in te loggen om verder te gaan." msgid "Registration of new accounts is not allowed at this time." msgstr "Registratie van nieuwe accounts in momenteel niet toegestaan." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Bedrijfsstatistieken" @@ -359,39 +368,39 @@ msgstr "Voeg bedrijf toe" msgid "Search all corporations..." msgstr "Zoek in alle bedrijven..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Mains" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Leden" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Ongeregistreerde" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Laatste update:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Update nu" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Hoofd Character" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Geregistreerde karakters" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -400,16 +409,16 @@ msgstr "Geregistreerde karakters" msgid "Corporation" msgstr "Corporation" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Killboard" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -418,21 +427,21 @@ msgstr "Killboard" msgid "Main Character" msgstr "Hoofd Character" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Hoofd Corp" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Hoofd Alliance" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Zoekresultaten" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -446,6 +455,30 @@ msgstr "" "Het is niet gelukt om bedrijfsstatistieken te verzamelen met het " "geselecteerde token." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "Minuut Offset" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "Uur offset" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "Dag van de maand offset" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "Maand van het jaar offset" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "Dag van de week offset" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -459,6 +492,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -544,8 +586,9 @@ msgid "Delete fat" msgstr "Verwijder fat" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Gebruiker" @@ -553,7 +596,7 @@ msgstr "Gebruiker" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Systeem" @@ -567,10 +610,12 @@ msgstr "Schip" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Eve Tijd" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -627,7 +672,7 @@ msgstr "Fleet" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Maker" @@ -736,19 +781,23 @@ msgstr "" "Kan vloot registratie niet voltooien voor {character.character_name]. Het " "personage moet online zijn." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Groep Management" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 -#: allianceauth/templates/allianceauth/side-menu.html:15 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Groepen" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Gebruikers" @@ -852,84 +901,84 @@ msgstr "aangemaakt op" msgid "Date when this entry was created" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Audit log" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Terug" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Datum/Tijd" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Aanvrager" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Type" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Actie" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Acteur" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Verwijderd" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Groep Leden" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Organisatie" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Groep leider" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(onbekend)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Verwijder van groep" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "" @@ -943,7 +992,7 @@ msgid "Join/Leave Requests" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Beschrijving" @@ -953,7 +1002,7 @@ msgstr "Beschrijving" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Status" @@ -966,7 +1015,7 @@ msgid "Hidden" msgstr "verborgen" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Open" @@ -990,49 +1039,49 @@ msgstr "" msgid "No groups to list." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "Leiders" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Groep" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Verlaat" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "In behandeling" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Toetreden" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Aanvraag" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "" @@ -1161,6 +1210,10 @@ msgstr "" msgid "Applied to leave group %(group)s." msgstr "" +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Applicaties" @@ -1232,7 +1285,7 @@ msgstr "Gebruikersnaam" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Aanvaard" @@ -1240,7 +1293,7 @@ msgstr "Aanvaard" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Afgewezen" @@ -1355,7 +1408,7 @@ msgstr "" msgid "children" msgstr "Kinderen" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "Tekst" @@ -1367,11 +1420,15 @@ msgstr "" msgid "visible" msgstr "Zichtbaar" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "folder" @@ -1383,47 +1440,47 @@ msgstr "link" msgid "type" msgstr "type" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1432,44 +1489,63 @@ msgid "Add folder" msgstr "" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Notificatie" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Administrator" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "Gevaar" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "Waarschuwing" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "Informatie" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "Success" @@ -1526,7 +1602,7 @@ msgstr "" msgid "Deleted all read notifications." msgstr "" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "" @@ -1555,7 +1631,7 @@ msgid "Fleet Commander" msgstr "" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "" @@ -1600,13 +1676,8 @@ msgstr "" msgid "Form Up System" msgstr "" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "" @@ -1619,8 +1690,8 @@ msgid "Fleet Operation Management" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 @@ -1628,7 +1699,7 @@ msgid "Next Fleet Operations" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "" @@ -1637,7 +1708,7 @@ msgid "Past Fleet Operations" msgstr "" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "" @@ -1665,50 +1736,51 @@ msgstr "" msgid "Saved changes to operation timer for %(opname)s." msgstr "" -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "App" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Model" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "" @@ -1721,7 +1793,7 @@ msgstr "" msgid "Successfully set your {self.service_name} password" msgstr "" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "" @@ -1785,6 +1857,10 @@ msgstr "Wachtwoord" msgid "Password must be at least 8 characters long." msgstr "" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "" @@ -1833,6 +1909,10 @@ msgid "" "again." msgstr "" +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "" @@ -1864,6 +1944,14 @@ msgstr "" msgid "Invalid payload. Please contact support if this problem persists." msgstr "" +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "" @@ -1887,6 +1975,52 @@ msgstr "" msgid "Deactivated IPSuite4 account." msgstr "" +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 +msgid "Mumble" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 +msgid "Mumble History" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 +msgid "Server Connection History" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +msgid "Displayed Name" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 +msgid "Release" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +msgid "Version" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +msgid "Last Connect" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 +msgid "Last Disconnect" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 +msgid "Server Connection Breakdown" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 +msgid "Number" +msgstr "" + #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28 #: allianceauth/services/templates/services/service_password.html:26 msgid "Set Password" @@ -1896,6 +2030,14 @@ msgstr "" msgid "Connect" msgstr "" +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52 +msgid "Mumble Connection History" +msgstr "" + +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -1947,6 +2089,10 @@ msgstr "" msgid "Set jabber password." msgstr "" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "" @@ -1970,6 +2116,10 @@ msgstr "" msgid "Set forum password." msgstr "" +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "" @@ -1993,6 +2143,10 @@ msgstr "" msgid "Set SMF password." msgstr "" +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2042,6 +2196,10 @@ msgstr "" msgid "Reset TeamSpeak3 permission key." msgstr "" +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "" @@ -2151,7 +2309,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "" @@ -2186,7 +2344,7 @@ msgid "SRP Fleet Create" msgstr "" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2209,73 +2367,73 @@ msgstr "" msgid "Give this link to the line members." msgstr "" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Link" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "" @@ -2459,52 +2617,48 @@ msgstr "" msgid "Alliance Auth Notifications" msgstr "Alliantie Authenticatie Notificaties" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Gesloten" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Software Versie" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Huidige" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Update Beschikbaar" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2512,11 +2666,11 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "" @@ -2541,13 +2695,20 @@ msgstr "Uitloggen" msgid "Toggle navigation" msgstr "" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "Selecteer Thema" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Details" @@ -2564,7 +2725,7 @@ msgid "Timer Type" msgstr "Timer Type" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Doel" @@ -2598,159 +2759,145 @@ msgstr "" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Vriendelijk" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Vijandig" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Neutraal" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" +msgid "Sovereignty Hub" msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "Cyno Beacon" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "Cyno Jammer" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Ansiblex Jump Gate" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Maan mijn Cyclus" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Andere" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Niet gespecifieerd" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Schild" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Pantser" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Romp" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Laatste" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Ankeren" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "ontankeren" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "" @@ -2758,12 +2905,6 @@ msgstr "" msgid "Timer" msgstr "Timer" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "" @@ -2784,7 +2925,7 @@ msgid "Create Timer" msgstr "" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "" @@ -2794,36 +2935,28 @@ msgstr "" msgid "Update Structure Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Constructie" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Cyno Beacon" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Cyno Jammer" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "Corporatie Timers" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Verlopen Timers." -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "" -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "" diff --git a/allianceauth/locale/pl_PL/LC_MESSAGES/django.mo b/allianceauth/locale/pl_PL/LC_MESSAGES/django.mo index 64a3fecb..4a9482c8 100644 Binary files a/allianceauth/locale/pl_PL/LC_MESSAGES/django.mo and b/allianceauth/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/pl_PL/LC_MESSAGES/django.po b/allianceauth/locale/pl_PL/LC_MESSAGES/django.po index f2b005a5..397f4a8d 100644 --- a/allianceauth/locale/pl_PL/LC_MESSAGES/django.po +++ b/allianceauth/locale/pl_PL/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: MisBimbrownik, 2024\n" "Language-Team: Polish (Poland) (https://app.transifex.com/alliance-auth/teams/107430/pl_PL/)\n" @@ -21,14 +21,22 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universal" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics wersja 4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -62,91 +70,91 @@ msgstr "" "Nie masz wystarczających uprawnień aby dodać lub usunąć zastrzeżone grupy: " "%s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Angielski" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Niemiecki" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Hiszpański" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Włoski" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Japoński" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Koreański" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Francuski" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Rosyjski" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Ukraiński" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Język" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Tryb nocny" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Styl" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Stan został zmieniony na: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "Stan twojego użytkownika to: %(state)s" @@ -181,9 +189,9 @@ msgstr "Zmień główną postać" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Nazwa" @@ -193,7 +201,7 @@ msgid "Corp" msgstr "Korporacja" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Sojusz" @@ -206,48 +214,45 @@ msgstr "Członkowstwo" msgid "State:" msgstr "Stan:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Zarządzanie Tokenem" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"Niniejsza strona jest zrobiona najlepiej, jak się dało, co m.in. oznacza, że" -" kopie zapasowe oraz logi baz danych mogą zawierać twój Token. Pamiętaj, " -"żeby go pilnować przy użyciu https://community.eveonline.com/support/third-" -"party-applications/ i usuwać, gdy dłużej nie są potrzebne." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "Zakres" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Akcje" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -343,7 +348,7 @@ msgstr "" msgid "Registration of new accounts is not allowed at this time." msgstr "Rejestracja nowych kont użytkowników nie jest obecnie możliwa." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Statystyki Korporacji" @@ -364,39 +369,39 @@ msgstr "Dodaj Korporację" msgid "Search all corporations..." msgstr "Wyszukaj we wszystkich Korporacjach..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Główne postacie" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Członkowie" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Niezarejestrowani" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Ostatnia aktualizacja:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Uaktualnij teraz" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Główna postać" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Zapisane postacie" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -405,16 +410,16 @@ msgstr "Zapisane postacie" msgid "Corporation" msgstr "Korporacja" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Killboard" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -423,21 +428,21 @@ msgstr "Killboard" msgid "Main Character" msgstr "Główna Postać" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Główna Korporacja" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Główny Sojusz" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Wyniki wyszukiwania" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -449,6 +454,30 @@ msgstr "Wybrana Korporacja ma już włączony moduł statystyk." msgid "Failed to gather corporation statistics with selected token." msgstr "Nie udało się pobrać statystyk korporacji używając wybranego Tokenu." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -462,6 +491,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -547,9 +585,9 @@ msgid "Delete fat" msgstr "Usuń FAT" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Użytkownik" @@ -557,7 +595,7 @@ msgstr "Użytkownik" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "System" @@ -571,10 +609,12 @@ msgstr "Okręt" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Czas EVE" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -635,7 +675,7 @@ msgstr "Flota" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Założyciel" @@ -744,18 +784,23 @@ msgstr "" "Nie można zapisać udziału we flocie dla {character.character_name}. Postać " "nie jest online." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Zarządzanie Grupami" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Grupy" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Użytkownicy" @@ -880,84 +925,84 @@ msgstr "utworzona" msgid "Date when this entry was created" msgstr "Data, kiedy niniejszy wpis został dodany." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Log" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Cofnij" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Data/Czas" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Wnioskujący" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Typ" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Akcja" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Aktor" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Usunięty" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Wszystkie wyświetlane czasy są dla strefy Eve/UTC." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "Nie znaleziono wpisów dla tej grupy." -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Członkowie Grupy" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Organizacja" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Opiekun Grupy" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(nieznany)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Usuń z grupy" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Brak użytkowników przypisanych do grupy." @@ -971,7 +1016,7 @@ msgid "Join/Leave Requests" msgstr "Zgłoszenia Dołącz/Opuść " #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Opis" @@ -981,7 +1026,7 @@ msgstr "Opis" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Status" @@ -994,7 +1039,7 @@ msgid "Hidden" msgstr "Ukryte" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Otwarta" @@ -1018,49 +1063,49 @@ msgstr "Skopiuj bezpośredni link pozwalający na dołączenie" msgid "No groups to list." msgstr "Brak grup do wyświetlenia." -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Dostępne Grupy" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "Opiekunowie" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Grupa" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Opuść" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "Oczekiwanie" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Dołącz" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Poproś o dostęp" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "Brak dostępnych grup." @@ -1193,6 +1238,10 @@ msgstr "Złożyłeś już podanie o opuszczenie tej Grupy." msgid "Applied to leave group %(group)s." msgstr "Złożyłeś podanie o opuszczenie grupy %(group)s." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Podania" @@ -1264,7 +1313,7 @@ msgstr "Nazwa Użytkownika" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Zaakceptowano" @@ -1272,7 +1321,7 @@ msgstr "Zaakceptowano" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Odrzucono" @@ -1387,7 +1436,7 @@ msgstr "Modyfikuj %s w menu" msgid "children" msgstr "dziecko" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "tekst" @@ -1399,11 +1448,15 @@ msgstr "zdefiniowane przez użytkownika" msgid "visible" msgstr "widoczne" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "aplikacja" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "folder" @@ -1415,27 +1468,27 @@ msgstr "link" msgid "type" msgstr "typ" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "Wyświetl w menu" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "kolejność" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "Kolejność elementów menu. Najniższy pierwszy." -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "Folder, w którym znajduje się element (opcjonalne)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "Ukryty" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" @@ -1443,11 +1496,11 @@ msgstr "" "Ukryj ten element menu. Jeżeli jest to folder, wszystkie zawarte w nim " "elementy również zostaną ukryte" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "Typy ikon" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" @@ -1455,11 +1508,11 @@ msgstr "" "Obiekty klasy Font Awesome, np. fa-solid fa-house, " "będzą widoczne jako ikony w menu." -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "adres" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "Zewnętrzny adres, na który ten odnośnik będzie wskazywał" @@ -1468,44 +1521,63 @@ msgid "Add folder" msgstr "Dodaj folder" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Powiadomienia" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "Super-Użytkownik" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Administrator" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "Wyloguj" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "Zaloguj" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "niebezpieczeństwo" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "ostrzeżenie" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "informacja" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "sukces" @@ -1562,7 +1634,7 @@ msgstr "Oznaczono wszystkie powiadomienia jako przeczytane." msgid "Deleted all read notifications." msgstr "Usunięto wszystkie przeczytane powiadomienia." -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Operacje Floty" @@ -1591,7 +1663,7 @@ msgid "Fleet Commander" msgstr "Dowódca Floty" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Dodatkowe informacje" @@ -1636,13 +1708,8 @@ msgstr "Operacja" msgid "Form Up System" msgstr "Miejsce zbiórki" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "Czas EVE" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Czas lokalny" @@ -1655,16 +1722,16 @@ msgid "Fleet Operation Management" msgstr "Zarządzanie operacją floty" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Obecny czas EVE:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Nadchodzące operacje floty" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "Brak zaplanowanych operacji." @@ -1673,7 +1740,7 @@ msgid "Past Fleet Operations" msgstr "Zakończone operacje floty" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "Brak zakończonych operacji." @@ -1701,50 +1768,51 @@ msgstr "Usunięto czas operacji dla %(opname)s." msgid "Saved changes to operation timer for %(opname)s." msgstr "Zapisano zmiany czasu operacji dla %(opname)s." -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Weryfikacja uprawnień" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Użytkownik / Postać" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Przegląd uprawnień" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Widoczne są jedynie zastosowane pozwolenia" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Wyświetl wszystkie" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Wyświetlono wszystkie pozwolenia" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Wyświetl zastosowane" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "Aplikacja" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Model" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Kryptonim" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "Stan" @@ -1757,7 +1825,7 @@ msgstr "Istnieje już takie konto serwisowe" msgid "Successfully set your {self.service_name} password" msgstr "Pomyślnie zmieniono hasło {self.service_name}" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Usługi" @@ -1821,6 +1889,10 @@ msgstr "Hasło" msgid "Password must be at least 8 characters long." msgstr "Hasło musi zawierać przynajmniej 8 znaków." +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Konto Discorda wyłączone" @@ -1872,6 +1944,10 @@ msgid "" msgstr "" "Wystąpił problem w trakcie aktywacji konta Discorda. Spróbuj ponownie." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "Dyskusja" @@ -1906,6 +1982,14 @@ msgid "Invalid payload. Please contact support if this problem persists." msgstr "" "Niewłaściwe dane. Skontaktuj się z pomocą, o ile ten problem nie ustąpi." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "Włączono konto IPSuite4." @@ -1929,45 +2013,49 @@ msgstr "Ustaw hasło IPSuite4." msgid "Deactivated IPSuite4 account." msgstr "Wyłączono konto IPSuite4." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1984,6 +2072,10 @@ msgstr "Połącz" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -2035,6 +2127,10 @@ msgstr "Wysłano powiadomienie Jabberem do %s" msgid "Set jabber password." msgstr "Ustaw hasło Jabbera" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Włączono konto Forum." @@ -2058,6 +2154,10 @@ msgstr "Zresetuj hasło Forum." msgid "Set forum password." msgstr "Ustaw hasło Forum." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "Włączono konto SMF." @@ -2081,6 +2181,10 @@ msgstr "Zresetuj hasło SMF." msgid "Set SMF password." msgstr "Ustaw hasło SMF." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2130,6 +2234,10 @@ msgstr "Wyłączono konto TeamSpeak3." msgid "Reset TeamSpeak3 permission key." msgstr "Zresetuj klucz dostępu TeamSpeak3." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "Włączono konto XenForo." @@ -2242,7 +2350,7 @@ msgstr "" "Niektóre z usług oferują różne opcje. Najedź myszą na opcję, aby zobaczyć " "więcej szczegółów." -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Zwrot kosztów (SRP)" @@ -2277,7 +2385,7 @@ msgid "SRP Fleet Create" msgstr "Utwórz Flotę z SRP " #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2300,75 +2408,75 @@ msgstr "Utwórz Flotę z SRP" msgid "Give this link to the line members." msgstr "Przekaż ten odnośnik do szeregowych członków." -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "Dane Floty z SRP" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "Przegląd Flot" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Oznacz jako Nieukończoną" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Oznacz jako Ukończoną" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Całkowite straty:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "Całkowity koszt w ISK:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Czy jesteś pewien, że chcesz usunąć zgłoszenie o SRP?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Nazwa Postaci" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Adres Kilboard" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Typ okrętu" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Wysokość straty z Killboard" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "Koszt ISK do SRP" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "Kliknij na wartość aby ją edytować. Wciśnij Enter aby zapisać wartość i " "przejść do kolejnego pola. Wciśnij Esc aby zakończyć edycję." -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Czas zgłoszenia" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Odnośnik" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "Brak możliwości zgłaszania SRP dla tej Floty." @@ -2557,52 +2665,48 @@ msgstr "Twój Serwer otrzymał błąd ESI o kodzie" msgid "Alliance Auth Notifications" msgstr "Powiadomienia z Autoryzacji Sojuszu (AA)" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Zakończone" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "Brak nowych powiadomień" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Utworzone przy użyciu GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Potrzebujesz pomocy? Użyj Discord" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Wersja oprogramowania" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Aktualne" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Ostatnia stabilna" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Aktualizacja jest dostępna" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Ostatnie przed-produkcyjna" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Przed-produkcyjna jest dostępna" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "Kolejka Zadań" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2612,11 +2716,11 @@ msgstr "" "\n" "Status %(total)s przeprocesowanych Zadań • ostatnie %(latest)s" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "w trakcie" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "oczekujące" @@ -2641,13 +2745,20 @@ msgstr "Wyloguj" msgid "Toggle navigation" msgstr "Przełącz nawigację" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "Wybierz styl" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Zdarzenia powiązane ze Strukturami" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Szczegóły" @@ -2664,7 +2775,7 @@ msgid "Timer Type" msgstr "Typ Licznika" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Cel" @@ -2698,159 +2809,145 @@ msgstr "Wewnętrzny dla Korporacji" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Przyjaciel" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Wróg" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Neutralny" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "POCO" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS (Mały)" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS (Średni)" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS (Duży)" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Astrahus" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Fortizar" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Keepstar" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Raitaru" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Azbel" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Sotiyo" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Athanor" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Tatara" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "Cyno Beacon" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "Cyno Jammer" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Ansiblex Jump Gate" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Cykl Koparki Księżycowej" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 +#: allianceauth/timerboard/models.py:44 msgid "Metenox Moon Drill" msgstr "" -#: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Inny" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Nie określono" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Pole siłowe" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Armor" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Struktura" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Ostateczny" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Kotwiczenie" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Usunięcie kotwiczenia" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "Nadczodzące zdarzenia" @@ -2858,12 +2955,6 @@ msgstr "Nadczodzące zdarzenia" msgid "Timer" msgstr "Zdarzenie" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Zdarzenia powiązane ze Strukturami" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "Szczegóły czasowe Zdarzenia" @@ -2884,7 +2975,7 @@ msgid "Create Timer" msgstr "Utwórz Zdarzenie" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Utwórz Zdarzenie powiązane z Obiektami" @@ -2894,36 +2985,28 @@ msgstr "Utwórz Zdarzenie powiązane z Obiektami" msgid "Update Structure Timer" msgstr "Zaktualizuj Zdarzenie powiązane z Obiektami" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Obiekt" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Cyno Beacon" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Cyno Jammer" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Zarządzanie Zdarzeniami Obiektu" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "Zdarzenia Korporacji" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Zakończone Zdarzenia" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Dodano nowe Zdarzenie w %(system)s o czasie %(time)s." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Zapisano zmiany dla Zdarzenia." diff --git a/allianceauth/locale/ru/LC_MESSAGES/django.mo b/allianceauth/locale/ru/LC_MESSAGES/django.mo index 0ebb9519..fefd3f06 100644 Binary files a/allianceauth/locale/ru/LC_MESSAGES/django.mo and b/allianceauth/locale/ru/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/ru/LC_MESSAGES/django.po b/allianceauth/locale/ru/LC_MESSAGES/django.po index 9a34102e..6f011f21 100644 --- a/allianceauth/locale/ru/LC_MESSAGES/django.po +++ b/allianceauth/locale/ru/LC_MESSAGES/django.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" "Last-Translator: Joel Falknau , 2024\n" "Language-Team: Russian (https://app.transifex.com/alliance-auth/teams/107430/ru/)\n" @@ -26,14 +26,22 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Google Analytics Universal" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -57,91 +65,91 @@ msgstr "Email" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "Вам не разрешено добавлять или удалять эти ограниченные группы: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Английский" -#: allianceauth/authentication/models.py:72 +#: allianceauth/authentication/models.py:73 msgid "Czech" msgstr "" -#: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Немецкий" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Испанский" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Итальянский" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Японский" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Корейский" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Французский" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Русский" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 +#: allianceauth/authentication/models.py:81 +#: allianceauth/project_template/project_name/settings/base.py:114 msgid "Dutch" msgstr "" -#: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 +#: allianceauth/authentication/models.py:82 +#: allianceauth/project_template/project_name/settings/base.py:115 msgid "Polish" msgstr "" -#: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Украинский" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" msgstr "" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Язык" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Ночной режим" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Статус изменен: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "Статус пилота: %(state)s" @@ -176,9 +184,9 @@ msgstr "Сменить основного персонажа" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Имя" @@ -188,7 +196,7 @@ msgid "Corp" msgstr "Корпорация" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Альянс" @@ -201,44 +209,45 @@ msgstr "" msgid "State:" msgstr "" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Управление токенами" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." -msgstr "" - -#: allianceauth/authentication/templates/authentication/tokens.html:22 -msgid "Scopes" +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" #: allianceauth/authentication/templates/authentication/tokens.html:23 +msgid "Scopes" +msgstr "" + +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Действия" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -327,7 +336,7 @@ msgstr "Подтвердите Ваш email адрес. Зайти для под msgid "Registration of new accounts is not allowed at this time." msgstr "Регистрация новых аккаунтов в настоящее время невозможна." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Статистика корпорации" @@ -348,39 +357,39 @@ msgstr "Добавить корпорацию" msgid "Search all corporations..." msgstr "Поиск по всем корпорациям" -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Основы" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Участники" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Не зарегистрированы" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Последнее обновление: " -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Обновить сейчас" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Основной персонаж" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Зарегистрированные персонажи" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -389,16 +398,16 @@ msgstr "Зарегистрированные персонажи" msgid "Corporation" msgstr "Корпорация" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Killboard" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -407,21 +416,21 @@ msgstr "Killboard" msgid "Main Character" msgstr "Основной персонаж" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Основная корпорация" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Основной Альянс" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Результаты поиска" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -433,6 +442,30 @@ msgstr "Выбранная корпорация уже в модуле стат msgid "Failed to gather corporation statistics with selected token." msgstr "Невозможно получить статистику корпорации по данному токену." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -446,6 +479,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -531,9 +573,9 @@ msgid "Delete fat" msgstr "Удалить ФлАк" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Пользователь" @@ -541,7 +583,7 @@ msgstr "Пользователь" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Система" @@ -555,10 +597,12 @@ msgstr "Корабль" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "ET" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -619,7 +663,7 @@ msgstr "Флот" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Создатель" @@ -728,18 +772,23 @@ msgstr "" "Не могу зарегистрировать ФлАк для {character.character_name}. Персонаж " "должен быть онлайн." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Управление Группой" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Группы" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Пользователи" @@ -869,84 +918,84 @@ msgstr "создано когда" msgid "Date when this entry was created" msgstr "Дата, когда данное содержимое было создано" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Записи безопасности" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Назад" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Дата / Время" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Запрос от" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Тип" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Действие" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Исполнитель" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Удалено" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Все значения времени отображаются в EVE/ET/UTC." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "Нет вхождений в эту группу" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Групповые Участники" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Корпорация" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Лидер группы" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(неизвестно)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Исключить из группы" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Нет участников в группе" @@ -960,7 +1009,7 @@ msgid "Join/Leave Requests" msgstr "" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Описание" @@ -970,7 +1019,7 @@ msgstr "Описание" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Статус" @@ -983,7 +1032,7 @@ msgid "Hidden" msgstr "Скрытые" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Открыть" @@ -1007,49 +1056,49 @@ msgstr "Скопировать ссылку подключения" msgid "No groups to list." msgstr "Нет групп в списке" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Доступные группы" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "Лидеры" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Группа" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Покинуть" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "Ожидание" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Присоединиться" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Запрос" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "Нет доступных групп." @@ -1182,6 +1231,10 @@ msgstr "Ваш запрос находится на рассмотрении" msgid "Applied to leave group %(group)s." msgstr "Запрос на выход из группы %(group)s." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Запросы" @@ -1253,7 +1306,7 @@ msgstr "Пользователь" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Проверено" @@ -1261,7 +1314,7 @@ msgstr "Проверено" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Отменено " @@ -1376,7 +1429,7 @@ msgstr "" msgid "children" msgstr "" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "текст" @@ -1388,11 +1441,15 @@ msgstr "" msgid "visible" msgstr "" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "папка" @@ -1404,47 +1461,47 @@ msgstr "ссылка" msgid "type" msgstr "тип" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "Текст, отображаемый в меню" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "порядок" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1453,44 +1510,63 @@ msgid "Add folder" msgstr "" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Уведомления" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Администратор" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "опасн" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "упрежд" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "инфо" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "успех" @@ -1547,7 +1623,7 @@ msgstr "Пометить все уведомления как прочитанн msgid "Deleted all read notifications." msgstr "Удалить все прочитанные уведомления" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Флотовые операции" @@ -1576,7 +1652,7 @@ msgid "Fleet Commander" msgstr "ФлитКом" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Дополнительная информация" @@ -1621,13 +1697,8 @@ msgstr "" msgid "Form Up System" msgstr "Система сбора" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "EVE Время" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Локальное время" @@ -1640,16 +1711,16 @@ msgid "Fleet Operation Management" msgstr "Управление флотовыми операциями" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Текущий EVE Time:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Грядущие Флотовые операции" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "Нет предстоящих таймеров" @@ -1658,7 +1729,7 @@ msgid "Past Fleet Operations" msgstr "Прошлые Флотовые операции" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "Таймера отсутствуют. " @@ -1686,50 +1757,51 @@ msgstr "Таймер для %(opname)s удалено. " msgid "Saved changes to operation timer for %(opname)s." msgstr "Таймер для %(opname)sобновлен." -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Права Доступа" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Пользователь / Персонаж" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Просмотр Прав доступа" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Показать только одобренные права доступа" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Показать все" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Показать все права доступа" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Показать одобренные" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "Запрос" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Модель" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Кодовое имя" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "Статусы" @@ -1742,7 +1814,7 @@ msgstr "Этот сервис уже активирован" msgid "Successfully set your {self.service_name} password" msgstr "Успешно установлен пароль для вашего {self.service_name}" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Подключение сервисов" @@ -1806,6 +1878,10 @@ msgstr "Пароль" msgid "Password must be at least 8 characters long." msgstr "Пароль должен быть не менее 8 символов." +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Discord персонаж отключен" @@ -1860,6 +1936,10 @@ msgstr "" "Во время активации Discord аккаунта возникла ошибка. Попробуйте чуточку " "позднее. " +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "" @@ -1897,6 +1977,14 @@ msgstr "" "Недопустимая \"полезная нагрузка\". Пожалуйста свяжитесь с поддержкой, если " "данная проблема будет продолжаться." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "Активирован аккаунт IPSuite4." @@ -1920,45 +2008,49 @@ msgstr "Установить пароль IPSuite4." msgid "Deactivated IPSuite4 account." msgstr "Деактивированный аккаунт IPSuite4." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1975,6 +2067,10 @@ msgstr "Подключить" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -2026,6 +2122,10 @@ msgstr "" msgid "Set jabber password." msgstr "Установить jabber пароль." +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Допустить на Форум." @@ -2049,6 +2149,10 @@ msgstr "Сбросить пароль на Форум." msgid "Set forum password." msgstr "Установить пароль на Форум." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "Активированный аккаунт SMF." @@ -2072,6 +2176,10 @@ msgstr "Сбросить пароль SMF." msgid "Set SMF password." msgstr "Установить пароль SMF." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2121,6 +2229,10 @@ msgstr "Отключить TeamSpeak3 аккаунт." msgid "Reset TeamSpeak3 permission key." msgstr "Сбросить TeamSpeak3 ключ доступа." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "Активированный аккаунт XenForo." @@ -2230,7 +2342,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Компенсация корабля" @@ -2266,7 +2378,7 @@ msgid "SRP Fleet Create" msgstr "SRP Флот Создан" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2289,73 +2401,73 @@ msgstr "" msgid "Give this link to the line members." msgstr "" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "SRP данные флота" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Пометить незаконченным" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Пометить законченным" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Суммарные потери:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "Оценочная стоимость, ISK:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Вы уверенны что хотите удалить запрос на SRP?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Имя Пилота" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Killboard ссылка" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Тип корабля" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Потерь по Killboard на данный момент" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "SRP ISK Стоимость" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "Нажмите на значение для редактирования и ESC для отмены" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Опубликованно" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "ссылка" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "SRP запросы отсутствуют" @@ -2543,52 +2655,48 @@ msgstr "" msgid "Alliance Auth Notifications" msgstr "Уведомления об Альянсовых авторизациях" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Закрыт" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "При поддержке GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Поддержка Discord" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Версия приложения" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Текущий" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Стабильная Версия" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Доступно обновление" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Предрелизная Версия" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Предрелизная Версия" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "Список задач" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2596,11 +2704,11 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "" @@ -2625,13 +2733,20 @@ msgstr "Выход" msgid "Toggle navigation" msgstr "Проложить маршрут" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Структурные таймера" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Детали" @@ -2648,7 +2763,7 @@ msgid "Timer Type" msgstr "Тип таймера" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Задача" @@ -2682,159 +2797,145 @@ msgstr "Корпорация зарегистрированна" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Дружественный" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Вражеский" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Нейтрал" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" +msgid "Sovereignty Hub" msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" +msgid "Cyno Beacon" msgstr "" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" +msgid "Cyno Jammer" msgstr "" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 -msgid "Moon Mining Cycle" +msgid "Mercenary Den" msgstr "" #: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 -msgid "Metenox Moon Drill" +msgid "Moon Mining Cycle" msgstr "" #: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +msgid "Metenox Moon Drill" +msgstr "" + +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Прочие" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Не указано" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Щит" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Броня" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Структура" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Финальный" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Постановка на якорь" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Снятие с якоря" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "" @@ -2842,12 +2943,6 @@ msgstr "" msgid "Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Структурные таймера" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "" @@ -2868,7 +2963,7 @@ msgid "Create Timer" msgstr "Создать таймер" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Создать Структурный Таймер" @@ -2878,36 +2973,28 @@ msgstr "Создать Структурный Таймер" msgid "Update Structure Timer" msgstr "Обновить Структурный Таймер" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Структура" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Управление Структурными Таймерами" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Прошлые таймера" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Добавлен таймер в %(system)s на %(time)s." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Изменения таймера сохранены." diff --git a/allianceauth/locale/uk/LC_MESSAGES/django.mo b/allianceauth/locale/uk/LC_MESSAGES/django.mo index 4ed7e90f..b4f7fc34 100644 Binary files a/allianceauth/locale/uk/LC_MESSAGES/django.mo and b/allianceauth/locale/uk/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/uk/LC_MESSAGES/django.po b/allianceauth/locale/uk/LC_MESSAGES/django.po index c2d5c65c..a6a94b55 100644 --- a/allianceauth/locale/uk/LC_MESSAGES/django.po +++ b/allianceauth/locale/uk/LC_MESSAGES/django.po @@ -7,15 +7,16 @@ # Kristof Swensen, 2023 # Денис Ивченко, 2024 # Andrii Yukhymchak, 2024 +# Bandera Primary, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" -"Last-Translator: Andrii Yukhymchak, 2024\n" +"Last-Translator: Bandera Primary, 2025\n" "Language-Team: Ukrainian (https://app.transifex.com/alliance-auth/teams/107430/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,14 +24,22 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "Універсальна Google Аналітика" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "Google Analytics V4" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -60,91 +69,91 @@ msgstr "Електронна пошта" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "Вам заборонено додавати або видаляти ці обмежені групи: %s" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "Англійська" -#: allianceauth/authentication/models.py:72 -msgid "Czech" -msgstr "" - #: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +msgid "Czech" +msgstr "Чеська" + +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "Німецька" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "Іспанська" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "Італійська" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "Японська" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "Корейська" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "Французька" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "Російська" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 -msgid "Dutch" -msgstr "" - #: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 -msgid "Polish" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:114 +msgid "Dutch" +msgstr "Нідерландська" #: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 +#: allianceauth/project_template/project_name/settings/base.py:115 +msgid "Polish" +msgstr "Польська" + +#: allianceauth/authentication/models.py:83 +#: allianceauth/project_template/project_name/settings/base.py:117 msgid "Ukrainian" msgstr "Українська" -#: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 msgid "Simplified Chinese" -msgstr "" +msgstr "Cпрощена китайська" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "Мова" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "Нічний режим" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "Тема" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "Стан змінено на: %s" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "Стан вашого користувача зараз: %(state)s" @@ -179,9 +188,9 @@ msgstr "Змінити основного персонажа" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "Ім'я" @@ -191,7 +200,7 @@ msgid "Corp" msgstr "Корпорація" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "Альянс" @@ -204,48 +213,48 @@ msgstr "Членство" msgid "State:" msgstr "Стан:" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "Керування токенами" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" -"Ця сторінка є найкращою спробою, але резервні копії або журнали баз даних " -"все ще можуть містити ваші токени. Завжди відкликайте токени на " -"https://community.eveonline.com/support/third-party-applications/, коли це " -"можливо." +"Тут ви може видалити токени, але резервні копії або логи бази даних все ще " +"можуть містити їх. Завжди анульовуйте токени на " +"https://developers.eveonline.com/authorized-apps, коли є можливість." -#: allianceauth/authentication/templates/authentication/tokens.html:22 +#: allianceauth/authentication/templates/authentication/tokens.html:23 msgid "Scopes" msgstr "Сфери" -#: allianceauth/authentication/templates/authentication/tokens.html:23 +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "Дії" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -343,7 +352,7 @@ msgstr "" msgid "Registration of new accounts is not allowed at this time." msgstr "Реєстрація нових облікових записів наразі не дозволена." -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "Статистика корпорації" @@ -364,39 +373,39 @@ msgstr "Додати корпорацію" msgid "Search all corporations..." msgstr "Шукати всі корпорації..." -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "Основні" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "Учасники" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "Незареєстровані" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "Останнє оновлення:" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" msgstr "Оновити зараз" -#: allianceauth/corputils/templates/corputils/corpstats.html:100 +#: allianceauth/corputils/templates/corputils/corpstats.html:101 msgid "Main character" msgstr "Основний персонаж" -#: allianceauth/corputils/templates/corputils/corpstats.html:101 +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "Зареєстровані персонажі" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -405,16 +414,16 @@ msgstr "Зареєстровані персонажі" msgid "Corporation" msgstr "Корпорація" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "Кіллборд" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -423,21 +432,21 @@ msgstr "Кіллборд" msgid "Main Character" msgstr "Основний персонаж" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "Основна корпорація" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "Основний альянс" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "Результати пошуку" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "zKillboard" @@ -449,19 +458,52 @@ msgstr "Вибрана корпорація вже має модуль стат msgid "Failed to gather corporation statistics with selected token." msgstr "Не вдалося зібрати статистику корпорації з обраним токеном." +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "Зміщення хвилини" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "Зміщення години" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "Зміщення дня місяця" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "Зміщення місяця року" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "Зміщення дня тижня" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" -msgstr "" +msgstr "Користувацький CSS" #: allianceauth/custom_css/models.py:25 msgid "Your custom CSS" -msgstr "" +msgstr "Ваш користувацький CSS" #: allianceauth/custom_css/models.py:26 msgid "This CSS will be added to the site after the default CSS." +msgstr "Цей CSS буде додано до сайту після базового CSS." + +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" msgstr "" +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -547,9 +589,9 @@ msgid "Delete fat" msgstr "Видалити Fat" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "Користувач" @@ -557,7 +599,7 @@ msgstr "Користувач" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "Система" @@ -571,10 +613,12 @@ msgstr "Корабель" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "Ігровий час" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 @@ -635,7 +679,7 @@ msgstr "Флот" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "Створювач" @@ -744,18 +788,23 @@ msgstr "" "Не вдалося зареєструвати участь в флоті для {character.character_name}. " "Персонаж повинен бути в мережі." +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "Керування групами" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "Групи" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "Користувачі" @@ -883,84 +932,84 @@ msgstr "створено о" msgid "Date when this entry was created" msgstr "Дата створення цього запису" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "Журнал аудиту" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "Назад" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "Дата/Час" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "Запитувач" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "Тип" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "Дія" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "Діяч" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "Вилучено" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "Усі відображені часи - EVE/UTC." -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "Для цієї групи не знайдено жодного запису." -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "Учасники групи" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "Організація" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "Лідер групи" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "(невідомо)" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "Видалити з групи" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "Немає учасників групи для переліку." @@ -974,7 +1023,7 @@ msgid "Join/Leave Requests" msgstr "Запити на Додавання/Видалення" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "Опис" @@ -984,7 +1033,7 @@ msgstr "Опис" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "Статус" @@ -997,7 +1046,7 @@ msgid "Hidden" msgstr "Прихована" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "Відкрита" @@ -1021,49 +1070,49 @@ msgstr "Скопіювати посилання на пряме приєднан msgid "No groups to list." msgstr "Немає груп для переліку." -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "Доступні групи" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "Лідери" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "Група" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "Покинути" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "Очікує" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "Приєднатися" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "Запит" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "Груп немає." @@ -1196,6 +1245,10 @@ msgstr "Ви вже подали запит на вихід з цієї груп msgid "Applied to leave group %(group)s." msgstr "Подано заявку на вихід з групи %(group)s." +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "Заявки" @@ -1267,7 +1320,7 @@ msgstr "Ім'я користувача" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "Затверджено" @@ -1275,7 +1328,7 @@ msgstr "Затверджено" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "Відхилено" @@ -1390,7 +1443,7 @@ msgstr "Змінити пункт меню %s" msgid "children" msgstr "під-елементи" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "текст" @@ -1402,11 +1455,15 @@ msgstr "визначено користувачем" msgid "visible" msgstr "видимий" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "сервіс" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "тека" @@ -1418,27 +1475,27 @@ msgstr "посилання" msgid "type" msgstr "тип" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "Текст для відображення в меню" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "порядок" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "Порядок меню. Найнижчий перший" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "Папка, в якій знаходиться цей елемент (опціонально)" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "приховано" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" @@ -1446,11 +1503,11 @@ msgstr "" "Приховати цей пункт меню. Якщо цей пункт є папкою, всі елементи під ним теж " "будуть приховані" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "класи іконок" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" @@ -1458,11 +1515,11 @@ msgstr "" "Класи Font Awesome для відображення як піктограми в меню, напр. fa-" "solid fa-house" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "URL" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "Зовнішня URL, на яку будуть посилатися елементи меню" @@ -1471,44 +1528,63 @@ msgid "Add folder" msgstr "Додати теку" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "Повідомлення" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "Супер користувач" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "Адміністратор" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" msgstr "Вийти" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" msgstr "Увійти" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "небезпека" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "попередження" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "інформація" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "успіх" @@ -1565,7 +1641,7 @@ msgstr "Всі повідомлення позначено як прочитан msgid "Deleted all read notifications." msgstr "Всі прочитані повідомлення видалено." -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "Флотові операції" @@ -1594,7 +1670,7 @@ msgid "Fleet Commander" msgstr "Командир флоту" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "Додаткова інформація" @@ -1639,13 +1715,8 @@ msgstr "Операція" msgid "Form Up System" msgstr "Система збору флоту" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "Час за EVE" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "Місцевий час" @@ -1658,16 +1729,16 @@ msgid "Fleet Operation Management" msgstr "Управління флотовими операціями" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "Поточний час Eve:" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "Наступні флотові операції" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "Немає наступних таймерів." @@ -1676,7 +1747,7 @@ msgid "Past Fleet Operations" msgstr "Завершені флотові операції" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "Немає минулих таймерів." @@ -1704,50 +1775,51 @@ msgstr "Видалено таймер операції для %(opname)s." msgid "Saved changes to operation timer for %(opname)s." msgstr "Зміни до таймера операції %(opname)s збережено." -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "Аудит дозволів" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "Користувач / Персонаж" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "Огляд дозволів" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "Показуємо тільки застосовані дозволи" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "Показати все" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "Показуються всі дозволи" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "Показати застосовані" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "Додаток" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "Модель" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "Кодова назва" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "Стани" @@ -1760,7 +1832,7 @@ msgstr "Такий сервісний обліковий запис вже іс msgid "Successfully set your {self.service_name} password" msgstr "Пароль для {self.service_name} успішно встановлено" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "Сервіси" @@ -1824,6 +1896,10 @@ msgstr "Пароль" msgid "Password must be at least 8 characters long." msgstr "Пароль повинен містити принаймні 8 символів." +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "Обліковий запис Discord вимкнено" @@ -1876,6 +1952,10 @@ msgstr "" "Сталася помилка під час спроби активації вашого облікового запису Discord. " "Будь ласка, спробуйте знову." +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "Discourse" @@ -1911,6 +1991,14 @@ msgstr "" "Неправильний пакет даних. Будь ласка, зверніться в підтримку, якщо ця " "проблема повторюється." +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "Активовано обліковий запис IPSuite4." @@ -1934,47 +2022,51 @@ msgstr "Встановити пароль IPSuite4." msgid "Deactivated IPSuite4 account." msgstr "Деактивовано обліковий запис IPSuite4." -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" -msgstr "" +msgstr "Mumble" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" -msgstr "" +msgstr "Історія Mumble" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" -msgstr "" - -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 -msgid "Displayed Name" -msgstr "" +msgstr "Історія підключень до сервера" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 -msgid "Release" -msgstr "" +msgid "Displayed Name" +msgstr "Відображене ім'я" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 -msgid "Version" -msgstr "" +msgid "Release" +msgstr "Реліз" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 -msgid "Last Connect" -msgstr "" +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +msgid "Version" +msgstr "Версія" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +msgid "Last Connect" +msgstr "Останнє підключення" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" -msgstr "" +msgstr "Останнє відключення" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" -msgstr "" +msgstr "Розбір підключення до сервера" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" -msgstr "" +msgstr "Кількість" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28 #: allianceauth/services/templates/services/service_password.html:26 @@ -1987,6 +2079,10 @@ msgstr "Підєднатись" #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52 msgid "Mumble Connection History" +msgstr "Історія підключень до Mumble" + +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" msgstr "" #: allianceauth/services/modules/openfire/auth_hooks.py:27 @@ -2040,6 +2136,10 @@ msgstr "Відправлено трансляцію Jabber на %s" msgid "Set jabber password." msgstr "Встановити пароль Jabber." +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "Активований обліковий запис форуму." @@ -2063,6 +2163,10 @@ msgstr "Скинути пароль форуму." msgid "Set forum password." msgstr "Встановити пароль форуму." +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "Активований обліковий запис SMF." @@ -2086,6 +2190,10 @@ msgstr "Скинути пароль SMF." msgid "Set SMF password." msgstr "Встановити пароль SMF." +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2135,6 +2243,10 @@ msgstr "Деактивовано обліковий запис TeamSpeak3." msgid "Reset TeamSpeak3 permission key." msgstr "Скинути ключ дозволів TeamSpeak3." +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "Активовано обліковий запис XenForo." @@ -2247,7 +2359,7 @@ msgstr "" "Деякі сервіси надають різні варіанти. Наведіть курсор на кнопки, щоб " "побачити більше." -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "Компенсації" @@ -2285,7 +2397,7 @@ msgid "SRP Fleet Create" msgstr "Створення SRP-флоту" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 @@ -2308,75 +2420,75 @@ msgstr "Створити флот з компенсаціями" msgid "Give this link to the line members." msgstr "Дайте це посилання учасникам флоту" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "Дані SRP-флоту" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" msgstr "Показати флоти" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "Позначити неповним" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "Позначити виконаним" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "Загальні збитки:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "Загальна вартість ISK:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "Ви впевнені, що хочете видалити запити SRP?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "Ім'я пілота" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "Посилання на Killboard" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "Тип корабля" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "Сума втрат на Killboard" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "Вартість SRP в ISK" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "" "Клацніть на значення, щоб відредагувати. Enter - зберегти і перейти до " "наступного, ESC - скасувати" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "Час публікації" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "Посилання" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "Немає запитів SRP для цього флоту." @@ -2564,52 +2676,48 @@ msgstr "Ваш сервер отримав код відповіді на пом msgid "Alliance Auth Notifications" msgstr "Сповіщення Alliance Auth" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "Закрито" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "На даний момент сповіщень немає" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "Powered by GitLab" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "Discord підтримки" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "Версія програмного забезпечення" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "Поточна" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "Остання стабільна" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "Є доступне оновлення" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "Останній передрелізний випуск" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "Доступний Попередній Реліз" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "Черга Завдань" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2620,11 +2728,11 @@ msgstr "" " Статус %(total)s оброблених завдань • останні %(latest)s\n" " " -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "в праці" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "у черзі" @@ -2649,13 +2757,20 @@ msgstr "Вихід" msgid "Toggle navigation" msgstr "Перемикання навігації" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "Виберіть тему" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "Таймери структур" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "Деталі" @@ -2672,7 +2787,7 @@ msgid "Timer Type" msgstr "Тип таймера" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "Мета" @@ -2706,159 +2821,145 @@ msgstr "Обмежено для корпорації" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "Дружній" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "Ворожий" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "Нейтральний" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "POCO" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" -msgstr "" +msgstr "Орбітальний скайхук" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" -msgstr "I-HUB" +msgid "Sovereignty Hub" +msgstr "Суверенітетний хаб" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "TCU" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "POS [S]" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "POS [M]" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "POS [L]" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "Астрахус" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "Фортізар" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "Кіпстар" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "Райтару" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "Азбел" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "Сотійо" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "Атанор" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "Татара" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" -msgstr "" +msgid "Cyno Beacon" +msgstr "Циномаяк" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" -msgstr "" +msgid "Cyno Jammer" +msgstr "Циноглушник" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "Мост Ансіблекс" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 +msgid "Mercenary Den" +msgstr "Кубло найманців" + +#: allianceauth/timerboard/models.py:43 msgid "Moon Mining Cycle" msgstr "Цикл видобутку супутника" -#: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 -msgid "Metenox Moon Drill" -msgstr "" - #: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +msgid "Metenox Moon Drill" +msgstr "Бур Метенокс" + +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "Інше" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "Не визначено" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "Щит" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "Броня" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "Корпус" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "Фінальна" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "Постановка на якір" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "Зняття з якорю" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" +msgstr "Покинуто" + +#: allianceauth/timerboard/models.py:60 +msgid "Theft" msgstr "" #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "Майбутні таймери" @@ -2866,12 +2967,6 @@ msgstr "Майбутні таймери" msgid "Timer" msgstr "Таймер" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "Таймери структур" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "Деталі Таймерів структур" @@ -2892,7 +2987,7 @@ msgid "Create Timer" msgstr "Створити таймер" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "Створити таймер структури" @@ -2902,36 +2997,28 @@ msgstr "Створити таймер структури" msgid "Update Structure Timer" msgstr "Оновити таймер структури" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "Структура" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "Циномаяк" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "Циноглушник" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "Керування таймерами структур" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "Корпораційні таймери" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "Минулі таймери" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "Додано новий таймер в %(system)s о %(time)s." -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "Збережено зміни в таймері." diff --git a/allianceauth/locale/zh_Hans/LC_MESSAGES/django.mo b/allianceauth/locale/zh_Hans/LC_MESSAGES/django.mo index 671097b6..4639d67b 100644 Binary files a/allianceauth/locale/zh_Hans/LC_MESSAGES/django.mo and b/allianceauth/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/allianceauth/locale/zh_Hans/LC_MESSAGES/django.po b/allianceauth/locale/zh_Hans/LC_MESSAGES/django.po index 79786d16..0622ecae 100644 --- a/allianceauth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/allianceauth/locale/zh_Hans/LC_MESSAGES/django.po @@ -8,15 +8,16 @@ # 85b931f94c2441449e78b527e0a313ae_baf2e99 <639a60f913241ffb1c9bd90bc93a541f_869335>, 2023 # Aaron BuBu <351793078@qq.com>, 2023 # Joel Falknau , 2023 +# Aika Yu, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 12:59+1000\n" +"POT-Creation-Date: 2025-06-19 20:23+1000\n" "PO-Revision-Date: 2023-11-08 13:50+0000\n" -"Last-Translator: Joel Falknau , 2023\n" +"Last-Translator: Aika Yu, 2025\n" "Language-Team: Chinese Simplified (https://app.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,14 +25,22 @@ msgstr "" "Language: zh-Hans\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: allianceauth/analytics/models.py:26 +#: allianceauth/analytics/apps.py:8 +msgid "Analytics" +msgstr "" + +#: allianceauth/analytics/models.py:22 msgid "Google Analytics Universal" msgstr "" -#: allianceauth/analytics/models.py:27 +#: allianceauth/analytics/models.py:23 msgid "Google Analytics V4" msgstr "" +#: allianceauth/authentication/apps.py:9 +msgid "Authentication" +msgstr "" + #: allianceauth/authentication/constants.py:6 msgid "" "This software has exceeded the error limit for ESI. If you are a user, " @@ -54,91 +63,91 @@ msgstr "电子邮箱" msgid "You are not allowed to add or remove these restricted groups: %s" msgstr "" -#: allianceauth/authentication/models.py:71 -#: allianceauth/project_template/project_name/settings/base.py:99 +#: allianceauth/authentication/models.py:72 +#: allianceauth/project_template/project_name/settings/base.py:106 msgid "English" msgstr "英语" -#: allianceauth/authentication/models.py:72 -msgid "Czech" -msgstr "" - #: allianceauth/authentication/models.py:73 -#: allianceauth/project_template/project_name/settings/base.py:101 +msgid "Czech" +msgstr "捷克语" + +#: allianceauth/authentication/models.py:74 +#: allianceauth/project_template/project_name/settings/base.py:108 msgid "German" msgstr "德语" -#: allianceauth/authentication/models.py:74 -#: allianceauth/project_template/project_name/settings/base.py:102 +#: allianceauth/authentication/models.py:75 +#: allianceauth/project_template/project_name/settings/base.py:109 msgid "Spanish" msgstr "西班牙语" -#: allianceauth/authentication/models.py:75 -#: allianceauth/project_template/project_name/settings/base.py:103 +#: allianceauth/authentication/models.py:76 +#: allianceauth/project_template/project_name/settings/base.py:110 msgid "Italian" msgstr "意大利语" -#: allianceauth/authentication/models.py:76 -#: allianceauth/project_template/project_name/settings/base.py:104 +#: allianceauth/authentication/models.py:77 +#: allianceauth/project_template/project_name/settings/base.py:111 msgid "Japanese" msgstr "日语" -#: allianceauth/authentication/models.py:77 -#: allianceauth/project_template/project_name/settings/base.py:105 +#: allianceauth/authentication/models.py:78 +#: allianceauth/project_template/project_name/settings/base.py:112 msgid "Korean" msgstr "韩语" -#: allianceauth/authentication/models.py:78 -#: allianceauth/project_template/project_name/settings/base.py:106 +#: allianceauth/authentication/models.py:79 +#: allianceauth/project_template/project_name/settings/base.py:113 msgid "French" msgstr "法语" -#: allianceauth/authentication/models.py:79 -#: allianceauth/project_template/project_name/settings/base.py:109 +#: allianceauth/authentication/models.py:80 +#: allianceauth/project_template/project_name/settings/base.py:116 msgid "Russian" msgstr "俄语" -#: allianceauth/authentication/models.py:80 -#: allianceauth/project_template/project_name/settings/base.py:107 -msgid "Dutch" -msgstr "" - #: allianceauth/authentication/models.py:81 -#: allianceauth/project_template/project_name/settings/base.py:108 -msgid "Polish" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:114 +msgid "Dutch" +msgstr "荷兰语" #: allianceauth/authentication/models.py:82 -#: allianceauth/project_template/project_name/settings/base.py:110 -msgid "Ukrainian" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:115 +msgid "Polish" +msgstr "波兰语" #: allianceauth/authentication/models.py:83 -#: allianceauth/project_template/project_name/settings/base.py:111 -msgid "Simplified Chinese" -msgstr "" +#: allianceauth/project_template/project_name/settings/base.py:117 +msgid "Ukrainian" +msgstr "乌克兰语" -#: allianceauth/authentication/models.py:99 -#: allianceauth/menu/templates/menu/menu-user.html:42 +#: allianceauth/authentication/models.py:84 +#: allianceauth/project_template/project_name/settings/base.py:118 +msgid "Simplified Chinese" +msgstr "简体中文" + +#: allianceauth/authentication/models.py:100 +#: allianceauth/menu/templates/menu/menu-user.html:67 msgid "Language" msgstr "语言" -#: allianceauth/authentication/models.py:104 +#: allianceauth/authentication/models.py:105 #: allianceauth/templates/allianceauth/night-toggle.html:6 msgid "Night Mode" msgstr "夜间模式" -#: allianceauth/authentication/models.py:108 -#: allianceauth/menu/templates/menu/menu-user.html:46 +#: allianceauth/authentication/models.py:109 +#: allianceauth/theme/templates/theme/theme_select.html:4 msgid "Theme" msgstr "" -#: allianceauth/authentication/models.py:125 +#: allianceauth/authentication/models.py:126 #, python-format msgid "State changed to: %s" msgstr "" -#: allianceauth/authentication/models.py:126 +#: allianceauth/authentication/models.py:127 #, python-format msgid "Your user's state is now: %(state)s" msgstr "" @@ -173,9 +182,9 @@ msgstr "修改主要角色" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:22 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 #: allianceauth/hrapplications/templates/hrapplications/view.html:61 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 msgid "Name" msgstr "角色名" @@ -185,7 +194,7 @@ msgid "Corp" msgstr "所在公司" #: allianceauth/authentication/templates/authentication/dashboard_characters.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/corpstats.html:126 #: allianceauth/hrapplications/templates/hrapplications/view.html:63 msgid "Alliance" msgstr "所在联盟" @@ -198,44 +207,45 @@ msgstr "" msgid "State:" msgstr "" -#: allianceauth/authentication/templates/authentication/tokens.html:6 -#: allianceauth/authentication/templates/authentication/tokens.html:10 +#: allianceauth/authentication/templates/authentication/tokens.html:7 +#: allianceauth/authentication/templates/authentication/tokens.html:11 +#: allianceauth/menu/templates/menu/menu-user.html:133 +#: allianceauth/menu/templates/menu/menu-user.html:136 #: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62 msgid "Token Management" msgstr "" -#: allianceauth/authentication/templates/authentication/tokens.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:17 msgid "" "This page is a best attempt, but backups or database logs can still contain " "your tokens. Always revoke tokens on " -"https://community.eveonline.com/support/third-party-applications/ where " -"possible." -msgstr "" - -#: allianceauth/authentication/templates/authentication/tokens.html:22 -msgid "Scopes" +"https://developers.eveonline.com/authorized-apps where possible." msgstr "" #: allianceauth/authentication/templates/authentication/tokens.html:23 +msgid "Scopes" +msgstr "" + +#: allianceauth/authentication/templates/authentication/tokens.html:24 #: allianceauth/hrapplications/templates/hrapplications/management.html:37 #: allianceauth/hrapplications/templates/hrapplications/management.html:124 #: allianceauth/hrapplications/templates/hrapplications/management.html:168 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:35 #: allianceauth/hrapplications/templates/hrapplications/view.html:94 -#: allianceauth/srp/templates/srp/data.html:82 +#: allianceauth/srp/templates/srp/data.html:83 #: allianceauth/srp/templates/srp/management.html:53 msgid "Actions" msgstr "操作" -#: allianceauth/authentication/templates/authentication/tokens.html:24 -#: allianceauth/corputils/templates/corputils/corpstats.html:123 -#: allianceauth/corputils/templates/corputils/corpstats.html:163 -#: allianceauth/corputils/templates/corputils/corpstats.html:210 -#: allianceauth/corputils/templates/corputils/search.html:16 +#: allianceauth/authentication/templates/authentication/tokens.html:25 +#: allianceauth/corputils/templates/corputils/corpstats.html:124 +#: allianceauth/corputils/templates/corputils/corpstats.html:164 +#: allianceauth/corputils/templates/corputils/corpstats.html:211 +#: allianceauth/corputils/templates/corputils/search.html:17 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:36 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:55 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:118 msgid "Character" @@ -284,7 +294,7 @@ msgstr "不能修改主角色为%(char)s:这个角色被另一个账户所拥 #: allianceauth/authentication/views.py:165 #, python-format msgid "Changed main character to %s" -msgstr "" +msgstr "修改主角色为%s" #: allianceauth/authentication/views.py:179 #, python-format @@ -320,7 +330,7 @@ msgstr "已确认您的电邮地址。请登录以继续" msgid "Registration of new accounts is not allowed at this time." msgstr "" -#: allianceauth/corputils/auth_hooks.py:12 +#: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12 msgid "Corporation Stats" msgstr "军团统计" @@ -341,39 +351,39 @@ msgstr "" msgid "Search all corporations..." msgstr "搜索所有公司" -#: allianceauth/corputils/templates/corputils/corpstats.html:45 +#: allianceauth/corputils/templates/corputils/corpstats.html:46 msgid "Mains" msgstr "主要信息" -#: allianceauth/corputils/templates/corputils/corpstats.html:59 +#: allianceauth/corputils/templates/corputils/corpstats.html:60 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:34 msgid "Members" msgstr "成员" -#: allianceauth/corputils/templates/corputils/corpstats.html:73 +#: allianceauth/corputils/templates/corputils/corpstats.html:74 msgid "Unregistered" msgstr "未注册成员" -#: allianceauth/corputils/templates/corputils/corpstats.html:79 +#: allianceauth/corputils/templates/corputils/corpstats.html:80 msgid "Last update:" msgstr "最后一次更新" -#: allianceauth/corputils/templates/corputils/corpstats.html:85 +#: allianceauth/corputils/templates/corputils/corpstats.html:86 msgid "Update Now" -msgstr "" - -#: allianceauth/corputils/templates/corputils/corpstats.html:100 -msgid "Main character" -msgstr "" +msgstr "立刻更新" #: allianceauth/corputils/templates/corputils/corpstats.html:101 +msgid "Main character" +msgstr "主要角色" + +#: allianceauth/corputils/templates/corputils/corpstats.html:102 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29 msgid "Registered characters" msgstr "注册过的角色" -#: allianceauth/corputils/templates/corputils/corpstats.html:124 -#: allianceauth/corputils/templates/corputils/search.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:125 +#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 #: allianceauth/hrapplications/templates/hrapplications/management.html:35 #: allianceauth/hrapplications/templates/hrapplications/management.html:122 #: allianceauth/hrapplications/templates/hrapplications/management.html:166 @@ -382,16 +392,16 @@ msgstr "注册过的角色" msgid "Corporation" msgstr "公司" -#: allianceauth/corputils/templates/corputils/corpstats.html:141 -#: allianceauth/corputils/templates/corputils/corpstats.html:177 -#: allianceauth/corputils/templates/corputils/corpstats.html:190 -#: allianceauth/corputils/templates/corputils/corpstats.html:222 -#: allianceauth/corputils/templates/corputils/search.html:30 +#: allianceauth/corputils/templates/corputils/corpstats.html:142 +#: allianceauth/corputils/templates/corputils/corpstats.html:178 +#: allianceauth/corputils/templates/corputils/corpstats.html:191 +#: allianceauth/corputils/templates/corputils/corpstats.html:223 +#: allianceauth/corputils/templates/corputils/search.html:31 msgid "Killboard" msgstr "KB板" -#: allianceauth/corputils/templates/corputils/corpstats.html:165 -#: allianceauth/corputils/templates/corputils/search.html:19 +#: allianceauth/corputils/templates/corputils/corpstats.html:166 +#: allianceauth/corputils/templates/corputils/search.html:20 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:32 #: allianceauth/hrapplications/templates/hrapplications/management.html:121 #: allianceauth/hrapplications/templates/hrapplications/management.html:165 @@ -400,21 +410,21 @@ msgstr "KB板" msgid "Main Character" msgstr "主要角色" -#: allianceauth/corputils/templates/corputils/corpstats.html:166 -#: allianceauth/corputils/templates/corputils/search.html:20 +#: allianceauth/corputils/templates/corputils/corpstats.html:167 +#: allianceauth/corputils/templates/corputils/search.html:21 msgid "Main Corporation" msgstr "主要公司" -#: allianceauth/corputils/templates/corputils/corpstats.html:167 -#: allianceauth/corputils/templates/corputils/search.html:21 +#: allianceauth/corputils/templates/corputils/corpstats.html:168 +#: allianceauth/corputils/templates/corputils/search.html:22 msgid "Main Alliance" msgstr "主要联盟" -#: allianceauth/corputils/templates/corputils/search.html:8 +#: allianceauth/corputils/templates/corputils/search.html:9 msgid "Search Results" msgstr "搜索结果" -#: allianceauth/corputils/templates/corputils/search.html:18 +#: allianceauth/corputils/templates/corputils/search.html:19 msgid "zKillboard" msgstr "kb网" @@ -426,6 +436,30 @@ msgstr "选定的军团已经有了一个统计模块" msgid "Failed to gather corporation statistics with selected token." msgstr "未能使用指定的令牌收集军团信息" +#: allianceauth/crontab/apps.py:16 +msgid "Crontab" +msgstr "" + +#: allianceauth/crontab/models.py:13 +msgid "Minute Offset" +msgstr "" + +#: allianceauth/crontab/models.py:14 +msgid "Hour Offset" +msgstr "" + +#: allianceauth/crontab/models.py:15 +msgid "Day of Month Offset" +msgstr "" + +#: allianceauth/crontab/models.py:16 +msgid "Month of Year Offset" +msgstr "" + +#: allianceauth/crontab/models.py:17 +msgid "Day of Week Offset" +msgstr "" + #: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36 #: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47 msgid "Custom CSS" @@ -439,6 +473,15 @@ msgstr "" msgid "This CSS will be added to the site after the default CSS." msgstr "" +#: allianceauth/eveonline/apps.py:8 +msgid "EVE Online" +msgstr "" + +#: allianceauth/eveonline/autogroups/apps.py:8 +msgid "EVE Online Autogroups" +msgstr "" + +#: allianceauth/fleetactivitytracking/apps.py:8 #: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 @@ -517,16 +560,16 @@ msgstr "编辑一个PAP" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:21 msgid "Are you sure?" -msgstr "" +msgstr "是否确认?" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:22 msgid "Delete fat" msgstr "删除舰队活动历史" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 #: allianceauth/hrapplications/templates/hrapplications/view.html:41 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 msgid "User" msgstr "用户" @@ -534,7 +577,7 @@ msgstr "用户" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42 #: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17 -#: allianceauth/timerboard/templates/timerboard/timertable.html:9 +#: allianceauth/timerboard/templates/timerboard/timertable.html:10 msgid "System" msgstr "星系" @@ -548,15 +591,17 @@ msgstr "舰船" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 +#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 #: allianceauth/templates/allianceauth/top-menu.html:23 -#: allianceauth/timerboard/templates/timerboard/timertable.html:11 -msgid "Eve Time" -msgstr "EVE时间" +#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 +#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +msgid "EVE time" +msgstr "" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52 msgid "Docked in" -msgstr "" +msgstr "停靠在" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:6 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:6 @@ -606,7 +651,7 @@ msgstr "舰队" #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:74 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:90 -#: allianceauth/timerboard/templates/timerboard/timertable.html:13 +#: allianceauth/timerboard/templates/timerboard/timertable.html:14 msgid "Creator" msgstr "创建者" @@ -692,11 +737,11 @@ msgstr "记录中找不到已创建的PAP链接" #: allianceauth/fleetactivitytracking/views.py:218 msgid "Character does not exist" -msgstr "" +msgstr "角色不存在" #: allianceauth/fleetactivitytracking/views.py:221 msgid "User does not exist" -msgstr "" +msgstr "用户不存在" #: allianceauth/fleetactivitytracking/views.py:299 msgid "Fleet participation registered." @@ -713,18 +758,23 @@ msgid "" "character needs to be online." msgstr "" +#: allianceauth/framework/apps.py:16 +msgid "Framework" +msgstr "" + +#: allianceauth/groupmanagement/apps.py:8 #: allianceauth/groupmanagement/auth_hooks.py:18 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:17 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 msgid "Group Management" msgstr "用户组管理" #: allianceauth/groupmanagement/auth_hooks.py:51 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 msgid "Groups" msgstr "群组" #: allianceauth/groupmanagement/forms.py:18 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:33 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34 msgid "Users" msgstr "用户" @@ -828,84 +878,84 @@ msgstr "" msgid "Date when this entry was created" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:8 -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:12 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:9 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:13 msgid "Audit Log" msgstr "审计日志" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:17 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:18 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:21 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:18 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:19 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:22 #: allianceauth/timerboard/templates/timerboard/index_button.html:4 msgid "Back" msgstr "返回" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:27 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 msgid "Date/Time" msgstr "日期/时间" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:28 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:29 msgid "Requestor" msgstr "申请人" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 #: allianceauth/optimer/templates/optimer/dashboard.ops.html:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16 msgid "Type" msgstr "类型" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 #: allianceauth/notifications/templates/notifications/list_partial.html:8 #: allianceauth/optimer/templates/optimer/fleetoptable.html:20 -#: allianceauth/timerboard/templates/timerboard/timertable.html:16 +#: allianceauth/timerboard/templates/timerboard/timertable.html:17 msgid "Action" msgstr "操作" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:33 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:34 msgid "Actor" msgstr "操作者" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:48 msgid "Removed" msgstr "已移除" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:60 msgid "All times displayed are EVE/UTC." msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66 +#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:67 msgid "No entries found for this group." msgstr "这一用户组下面没有任何条目呀" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:9 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:13 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:10 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:14 msgid "Group Members" msgstr "群组成员" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:29 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:56 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:119 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33 msgid "Organization" msgstr "组织" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:49 -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:75 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76 msgid "Group leader" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:60 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:85 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:148 #: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18 msgid "(unknown)" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:65 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66 msgid "Remove from group" msgstr "从用户组中移除" -#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:80 +#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:81 msgid "No group members to list." msgstr "用户组里没人呀,你叫我怎么列" @@ -916,10 +966,10 @@ msgstr "用户组成员" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:13 msgid "Join/Leave Requests" -msgstr "" +msgstr "加入/退出申请" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:32 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33 #: allianceauth/optimer/templates/optimer/fleetoptable.html:10 msgid "Description" msgstr "描述" @@ -929,7 +979,7 @@ msgstr "描述" #: allianceauth/hrapplications/templates/hrapplications/management.html:123 #: allianceauth/hrapplications/templates/hrapplications/management.html:167 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:34 -#: allianceauth/srp/templates/srp/data.html:80 +#: allianceauth/srp/templates/srp/data.html:81 msgid "Status" msgstr "状态" @@ -942,7 +992,7 @@ msgid "Hidden" msgstr "已隐藏" #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 -#: allianceauth/templates/allianceauth/admin-status/overview.html:16 +#: allianceauth/templates/allianceauth/admin-status/overview.html:15 msgid "Open" msgstr "公开" @@ -966,49 +1016,49 @@ msgstr "" msgid "No groups to list." msgstr "无可用组" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:7 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:11 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:8 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:12 msgid "Available Groups" msgstr "可用组" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:34 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35 msgid "Leaders" msgstr "" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:36 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:57 #: allianceauth/groupmanagement/templates/groupmanagement/index.html:120 -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30 #: allianceauth/services/modules/openfire/forms.py:6 msgid "Group" msgstr "用户组" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:69 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:70 msgid "Leave" msgstr "离开" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73 -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89 #: allianceauth/hrapplications/templates/hrapplications/management.html:46 #: allianceauth/hrapplications/templates/hrapplications/management.html:95 #: allianceauth/hrapplications/templates/hrapplications/management.html:138 #: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/view.html:25 -#: allianceauth/srp/templates/srp/data.html:116 +#: allianceauth/srp/templates/srp/data.html:120 #: allianceauth/srp/templates/srp/management.html:87 msgid "Pending" msgstr "待定" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:79 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80 msgid "Join" msgstr "加入" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:83 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:84 msgid "Request" msgstr "申请" -#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:98 +#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99 msgid "No groups available." msgstr "没有可用用户组" @@ -1137,6 +1187,10 @@ msgstr "你已经有了该组的未决离开请求" msgid "Applied to leave group %(group)s." msgstr "已经离开群组%(group)s" +#: allianceauth/hrapplications/apps.py:8 +msgid "HR Applications" +msgstr "" + #: allianceauth/hrapplications/auth_hooks.py:15 msgid "Applications" msgstr "申请" @@ -1208,7 +1262,7 @@ msgstr "用户名" #: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/view.html:21 -#: allianceauth/srp/templates/srp/data.html:108 +#: allianceauth/srp/templates/srp/data.html:112 msgid "Approved" msgstr "通过" @@ -1216,7 +1270,7 @@ msgstr "通过" #: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 -#: allianceauth/srp/templates/srp/data.html:112 +#: allianceauth/srp/templates/srp/data.html:116 msgid "Rejected" msgstr "拒绝" @@ -1331,7 +1385,7 @@ msgstr "" msgid "children" msgstr "" -#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 +#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22 msgid "text" msgstr "" @@ -1343,11 +1397,15 @@ msgstr "" msgid "visible" msgstr "" +#: allianceauth/menu/apps.py:16 +msgid "Menu" +msgstr "" + #: allianceauth/menu/constants.py:16 msgid "app" msgstr "" -#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 +#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38 msgid "folder" msgstr "" @@ -1359,47 +1417,47 @@ msgstr "" msgid "type" msgstr "" -#: allianceauth/menu/models.py:22 +#: allianceauth/menu/models.py:23 msgid "Text to show on menu" msgstr "" -#: allianceauth/menu/models.py:27 +#: allianceauth/menu/models.py:28 msgid "order" msgstr "" -#: allianceauth/menu/models.py:28 +#: allianceauth/menu/models.py:29 msgid "Order of the menu. Lowest First" msgstr "" -#: allianceauth/menu/models.py:38 +#: allianceauth/menu/models.py:39 msgid "Folder this item is in (optional)" msgstr "" -#: allianceauth/menu/models.py:42 +#: allianceauth/menu/models.py:43 msgid "is hidden" msgstr "" -#: allianceauth/menu/models.py:44 +#: allianceauth/menu/models.py:45 msgid "" "Hide this menu item.If this item is a folder all items under it will be " "hidden too" msgstr "" -#: allianceauth/menu/models.py:59 +#: allianceauth/menu/models.py:60 msgid "icon classes" msgstr "" -#: allianceauth/menu/models.py:61 +#: allianceauth/menu/models.py:62 msgid "" "Font Awesome classes to show as icon on menu, e.g. fa-solid fa-" "house" msgstr "" -#: allianceauth/menu/models.py:67 +#: allianceauth/menu/models.py:68 msgid "url" msgstr "" -#: allianceauth/menu/models.py:68 +#: allianceauth/menu/models.py:69 msgid "External URL this menu items will link to" msgstr "" @@ -1408,44 +1466,63 @@ msgid "Add folder" msgstr "" #: allianceauth/menu/templates/menu/menu-notification-block.html:12 +#: allianceauth/notifications/apps.py:8 #: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6 msgid "Notifications" msgstr "通知" -#: allianceauth/menu/templates/menu/menu-user.html:56 +#: allianceauth/menu/templates/menu/menu-user.html:77 msgid "Super User" msgstr "" -#: allianceauth/menu/templates/menu/menu-user.html:70 +#: allianceauth/menu/templates/menu/menu-user.html:83 +#: allianceauth/menu/templates/menu/menu-user.html:86 +msgid "Alliance Auth Documentation" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:94 +#: allianceauth/menu/templates/menu/menu-user.html:97 +msgid "Alliance Auth Discord" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:105 +#: allianceauth/menu/templates/menu/menu-user.html:108 +msgid "Alliance Auth Git" +msgstr "" + +#: allianceauth/menu/templates/menu/menu-user.html:118 +#: allianceauth/menu/templates/menu/menu-user.html:121 #: allianceauth/templates/allianceauth/top-menu-admin.html:9 msgid "Admin" msgstr "管理员" -#: allianceauth/menu/templates/menu/menu-user.html:82 +#: allianceauth/menu/templates/menu/menu-user.html:144 +#: allianceauth/menu/templates/menu/menu-user.html:147 msgid "Sign Out" -msgstr "" +msgstr "登出" -#: allianceauth/menu/templates/menu/menu-user.html:86 +#: allianceauth/menu/templates/menu/menu-user.html:155 +#: allianceauth/menu/templates/menu/menu-user.html:158 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:17 #: allianceauth/templates/allianceauth/top-menu-rh-default.html:18 msgid "Sign In" -msgstr "" +msgstr "登入" -#: allianceauth/notifications/models.py:21 +#: allianceauth/notifications/models.py:22 msgid "danger" msgstr "危险" -#: allianceauth/notifications/models.py:22 +#: allianceauth/notifications/models.py:23 msgid "warning" msgstr "警告" -#: allianceauth/notifications/models.py:23 +#: allianceauth/notifications/models.py:24 msgid "info" msgstr "" -#: allianceauth/notifications/models.py:24 +#: allianceauth/notifications/models.py:25 msgid "success" msgstr "" @@ -1475,7 +1552,7 @@ msgstr "标题" #: allianceauth/notifications/templates/notifications/list_partial.html:28 msgid "No notifications." -msgstr "" +msgstr "暂无通知" #: allianceauth/notifications/templates/notifications/view.html:5 #: allianceauth/notifications/templates/notifications/view.html:9 @@ -1502,7 +1579,7 @@ msgstr "让所有通知都变成已读" msgid "Deleted all read notifications." msgstr "删除所有已读通知" -#: allianceauth/optimer/auth_hooks.py:12 +#: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12 msgid "Fleet Operations" msgstr "起队搞事" @@ -1531,7 +1608,7 @@ msgid "Fleet Commander" msgstr "FC" #: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14 -#: allianceauth/srp/templates/srp/data.html:71 +#: allianceauth/srp/templates/srp/data.html:72 msgid "Additional Info" msgstr "其他信息" @@ -1565,7 +1642,7 @@ msgstr "" #: allianceauth/optimer/templates/optimer/dashboard.ops.html:7 msgid "Upcoming Fleets" -msgstr "" +msgstr "接下来的队" #: allianceauth/optimer/templates/optimer/dashboard.ops.html:14 msgid "Operation" @@ -1576,13 +1653,8 @@ msgstr "" msgid "Form Up System" msgstr "集结点" -#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17 -#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18 -msgid "EVE Time" -msgstr "" - #: allianceauth/optimer/templates/optimer/fleetoptable.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:12 +#: allianceauth/timerboard/templates/timerboard/timertable.html:13 msgid "Local Time" msgstr "本地时间" @@ -1595,16 +1667,16 @@ msgid "Fleet Operation Management" msgstr "管理搞事队" #: allianceauth/optimer/templates/optimer/management.html:28 -#: allianceauth/timerboard/templates/timerboard/view.html:31 -msgid "Current Eve Time:" -msgstr "当前EVE游戏内时间" +#: allianceauth/timerboard/templates/timerboard/view.html:32 +msgid "Current EVE time:" +msgstr "" #: allianceauth/optimer/templates/optimer/management.html:36 msgid "Next Fleet Operations" msgstr "下一个舰队任务" #: allianceauth/optimer/templates/optimer/management.html:44 -#: allianceauth/timerboard/templates/timerboard/view.html:62 +#: allianceauth/timerboard/templates/timerboard/view.html:63 msgid "No upcoming timers." msgstr "没有快到的时间节点,歇一会吧" @@ -1613,7 +1685,7 @@ msgid "Past Fleet Operations" msgstr "过去的舰队任务" #: allianceauth/optimer/templates/optimer/management.html:60 -#: allianceauth/timerboard/templates/timerboard/view.html:80 +#: allianceauth/timerboard/templates/timerboard/view.html:81 msgid "No past timers." msgstr "没有已经结束的时间节点啦" @@ -1641,50 +1713,51 @@ msgstr "移除了%(opname)s的搞事时间节点,咕咕咕?" msgid "Saved changes to operation timer for %(opname)s." msgstr "对搞事时间节点%(opname)s的修改保存了,朝令夕改你是不是合格FC啊?" -#: 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:16 -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:10 +#: allianceauth/permissions_tool/apps.py:8 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:11 msgid "Permissions Audit" msgstr "放行记录审计" -#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:32 msgid "User / Character" msgstr "用户/角色" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:6 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:7 msgid "Permissions Overview" msgstr "放行许可概览" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:17 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 msgid "Showing only applied permissions" msgstr "只显示已经接受的放行许可" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:18 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:19 msgid "Show All" msgstr "全部显示" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:20 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 msgid "Showing all permissions" msgstr "正在显示全部放行许可" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:21 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:22 msgid "Show Applied" msgstr "显示已经接受的" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:29 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 msgid "App" msgstr "申请" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:30 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 msgid "Model" msgstr "类型" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:31 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:32 msgid "Code Name" msgstr "操作类型" -#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:35 +#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:36 msgid "States" msgstr "声望" @@ -1697,7 +1770,7 @@ msgstr "该服务账户仍然存在" msgid "Successfully set your {self.service_name} password" msgstr "" -#: allianceauth/services/auth_hooks.py:12 +#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12 msgid "Services" msgstr "服务" @@ -1761,6 +1834,10 @@ msgstr "密码" msgid "Password must be at least 8 characters long." msgstr "密码至少要有8个字符啊,你也太不注重安全啦" +#: allianceauth/services/modules/discord/apps.py:8 +msgid "Discord Service" +msgstr "" + #: allianceauth/services/modules/discord/models.py:187 msgid "Discord Account Disabled" msgstr "" @@ -1774,17 +1851,17 @@ msgstr "" #: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:26 #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:22 msgid "Activate" -msgstr "" +msgstr "激活" #: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:32 #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:34 msgid "Reset Password" -msgstr "" +msgstr "重置密码" #: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:38 #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:40 msgid "Deactivate" -msgstr "" +msgstr "停用" #: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:45 msgid "Link Discord Server" @@ -1801,7 +1878,7 @@ msgstr "在处理你的Discord账户时出错。" #: allianceauth/services/modules/discord/views.py:102 msgid "Your Discord account has been successfully activated." -msgstr "" +msgstr "你的discord账户已成功停用" #: allianceauth/services/modules/discord/views.py:108 msgid "" @@ -1809,6 +1886,10 @@ msgid "" "again." msgstr "" +#: allianceauth/services/modules/discourse/apps.py:8 +msgid "Discourse Service" +msgstr "" + #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 msgid "Discourse" msgstr "" @@ -1840,6 +1921,14 @@ msgstr "没有在Seat上检测到SSO。如果该问题依然存在,请联系 msgid "Invalid payload. Please contact support if this problem persists." msgstr "无效的SSO验证。如果该问题依然存在请联系技术支持。" +#: allianceauth/services/modules/example/apps.py:8 +msgid "Example Service" +msgstr "" + +#: allianceauth/services/modules/ips4/apps.py:8 +msgid "IPS4 Service" +msgstr "" + #: allianceauth/services/modules/ips4/views.py:31 msgid "Activated IPSuite4 account." msgstr "完成激活IPSuite4账户" @@ -1863,45 +1952,49 @@ msgstr "修改IPSuite4密码" msgid "Deactivated IPSuite4 account." msgstr "停用IPSuite4账户" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6 +#: allianceauth/services/modules/mumble/apps.py:8 +msgid "Mumble Service" +msgstr "" + +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 msgid "Mumble" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11 msgid "Mumble History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23 msgid "Server Connection History" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 msgid "Displayed Name" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 msgid "Release" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 msgid "Version" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 msgid "Last Connect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36 msgid "Last Disconnect" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47 -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60 msgid "Server Connection Breakdown" msgstr "" -#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68 +#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69 msgid "Number" msgstr "" @@ -1918,6 +2011,10 @@ msgstr "" msgid "Mumble Connection History" msgstr "" +#: allianceauth/services/modules/openfire/apps.py:8 +msgid "Openfire Service" +msgstr "" + #: allianceauth/services/modules/openfire/auth_hooks.py:27 msgid "Jabber" msgstr "Jabber" @@ -1969,6 +2066,10 @@ msgstr "" msgid "Set jabber password." msgstr "修改jabber密码" +#: allianceauth/services/modules/phpbb3/apps.py:8 +msgid "phpBB3 Service" +msgstr "" + #: allianceauth/services/modules/phpbb3/views.py:34 msgid "Activated forum account." msgstr "成功激活论坛账户" @@ -1992,6 +2093,10 @@ msgstr "重置论坛密码" msgid "Set forum password." msgstr "修改论坛密码" +#: allianceauth/services/modules/smf/apps.py:8 +msgid "SMF Service" +msgstr "" + #: allianceauth/services/modules/smf/views.py:52 msgid "Activated SMF account." msgstr "成功激活SMF论坛账户" @@ -2015,6 +2120,10 @@ msgstr "重置SMF密码" msgid "Set SMF password." msgstr "修改SMF论坛密码" +#: allianceauth/services/modules/teamspeak3/apps.py:8 +msgid "TeamSpeak 3 Service" +msgstr "" + #: allianceauth/services/modules/teamspeak3/forms.py:14 #, python-format msgid "Unable to locate user %s on server" @@ -2064,6 +2173,10 @@ msgstr "停用TeamSpeak3账户" msgid "Reset TeamSpeak3 permission key." msgstr "重置TeamSpeak3授权秘钥" +#: allianceauth/services/modules/xenforo/apps.py:8 +msgid "Xenforo Service" +msgstr "" + #: allianceauth/services/modules/xenforo/views.py:30 msgid "Activated XenForo account." msgstr "成功激活XenForo账户" @@ -2173,7 +2286,7 @@ msgid "" "Some services provide different options. Hover over the buttons to see more." msgstr "" -#: allianceauth/srp/auth_hooks.py:14 +#: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14 msgid "Ship Replacement" msgstr "补损" @@ -2208,12 +2321,12 @@ msgid "SRP Fleet Create" msgstr "补损舰队创建" #: allianceauth/srp/templates/srp/add.html:11 -#: allianceauth/srp/templates/srp/data.html:11 +#: allianceauth/srp/templates/srp/data.html:12 #: allianceauth/srp/templates/srp/management.html:11 #: allianceauth/srp/templates/srp/request.html:11 #: allianceauth/srp/templates/srp/update.html:11 msgid "Ship Replacement Program" -msgstr "" +msgstr "补损" #: allianceauth/srp/templates/srp/add.html:20 msgid "Create SRP Fleet" @@ -2231,73 +2344,73 @@ msgstr "" msgid "Give this link to the line members." msgstr "" -#: allianceauth/srp/templates/srp/data.html:7 -#: allianceauth/srp/templates/srp/data.html:38 +#: allianceauth/srp/templates/srp/data.html:8 +#: allianceauth/srp/templates/srp/data.html:39 msgid "SRP Fleet Data" msgstr "舰队补损信息" -#: allianceauth/srp/templates/srp/data.html:16 +#: allianceauth/srp/templates/srp/data.html:17 msgid "View Fleets" -msgstr "" +msgstr "查看舰队" -#: allianceauth/srp/templates/srp/data.html:25 +#: allianceauth/srp/templates/srp/data.html:26 msgid "Mark Incomplete" msgstr "标记为未完成" -#: allianceauth/srp/templates/srp/data.html:29 +#: allianceauth/srp/templates/srp/data.html:30 msgid "Mark Completed" msgstr "标记为已完成" -#: allianceauth/srp/templates/srp/data.html:47 -#: allianceauth/srp/templates/srp/data.html:138 +#: allianceauth/srp/templates/srp/data.html:48 +#: allianceauth/srp/templates/srp/data.html:142 msgid "Total Losses:" msgstr "损失总额:" -#: allianceauth/srp/templates/srp/data.html:48 -#: allianceauth/srp/templates/srp/data.html:139 +#: allianceauth/srp/templates/srp/data.html:49 +#: allianceauth/srp/templates/srp/data.html:143 #: allianceauth/srp/templates/srp/management.html:36 msgid "Total ISK Cost:" msgstr "ISK花费总额:" -#: allianceauth/srp/templates/srp/data.html:59 -#: allianceauth/srp/templates/srp/data.html:150 +#: allianceauth/srp/templates/srp/data.html:60 +#: allianceauth/srp/templates/srp/data.html:154 msgid "Are you sure you want to delete SRP requests?" msgstr "老哥,你确定要删了补损请求么?" -#: allianceauth/srp/templates/srp/data.html:69 +#: allianceauth/srp/templates/srp/data.html:70 msgid "Pilot Name" msgstr "玩家ID" -#: allianceauth/srp/templates/srp/data.html:70 +#: allianceauth/srp/templates/srp/data.html:71 msgid "Killboard Link" msgstr "KB网链接" -#: allianceauth/srp/templates/srp/data.html:72 +#: allianceauth/srp/templates/srp/data.html:73 msgid "Ship Type" msgstr "船型" -#: allianceauth/srp/templates/srp/data.html:73 +#: allianceauth/srp/templates/srp/data.html:74 msgid "Killboard Loss Amt" msgstr "KB网总损失" -#: allianceauth/srp/templates/srp/data.html:75 +#: allianceauth/srp/templates/srp/data.html:76 msgid "SRP ISK Cost" msgstr "补损ISK花费" -#: allianceauth/srp/templates/srp/data.html:76 +#: allianceauth/srp/templates/srp/data.html:77 msgid "Click value to edit Enter to save & next ESC to cancel" msgstr "点击数值就可以编辑啦,按回车确认,按ESC取消" -#: allianceauth/srp/templates/srp/data.html:79 +#: allianceauth/srp/templates/srp/data.html:80 msgid "Post Time" msgstr "发布时间" -#: allianceauth/srp/templates/srp/data.html:98 +#: allianceauth/srp/templates/srp/data.html:102 #: allianceauth/srp/templates/srp/management.html:70 msgid "Link" msgstr "链接" -#: allianceauth/srp/templates/srp/data.html:159 +#: allianceauth/srp/templates/srp/data.html:163 msgid "No SRP requests for this fleet." msgstr "这次起队没有补损请求!大捷" @@ -2355,11 +2468,11 @@ msgstr "创建补损请求" #: allianceauth/srp/templates/srp/request.html:22 msgid "Your SRP request" -msgstr "" +msgstr "你的补损请求" #: allianceauth/srp/templates/srp/request.html:35 msgid "Create SRP request" -msgstr "" +msgstr "创建补损请求" #: allianceauth/srp/templates/srp/update.html:7 #: allianceauth/srp/templates/srp/update.html:16 @@ -2368,7 +2481,7 @@ msgstr "上传战报链接" #: allianceauth/srp/templates/srp/update.html:22 msgid "After Action Report" -msgstr "" +msgstr "战报" #: allianceauth/srp/templates/srp/update.html:31 msgid "SRP Fleet Does Not Exist" @@ -2376,7 +2489,7 @@ msgstr "补损舰队不存在啊,老哥你在好好看看?" #: allianceauth/srp/templates/srp/update.html:40 msgid "Update AAR link" -msgstr "" +msgstr "更新战报链接" #: allianceauth/srp/views.py:85 #, python-format @@ -2481,52 +2594,48 @@ msgstr "" msgid "Alliance Auth Notifications" msgstr "系统通知" -#: allianceauth/templates/allianceauth/admin-status/overview.html:18 -msgid "Closed" -msgstr "已关闭" - -#: allianceauth/templates/allianceauth/admin-status/overview.html:24 +#: allianceauth/templates/allianceauth/admin-status/overview.html:20 msgid "No notifications at this time" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:33 +#: allianceauth/templates/allianceauth/admin-status/overview.html:29 msgid "Powered by GitLab" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:39 +#: allianceauth/templates/allianceauth/admin-status/overview.html:35 msgid "Support Discord" msgstr "" +#: allianceauth/templates/allianceauth/admin-status/overview.html:49 #: allianceauth/templates/allianceauth/admin-status/overview.html:53 -#: allianceauth/templates/allianceauth/admin-status/overview.html:57 msgid "Software Version" msgstr "软件版本" -#: allianceauth/templates/allianceauth/admin-status/overview.html:60 +#: allianceauth/templates/allianceauth/admin-status/overview.html:56 msgid "Current" msgstr "当前版本" -#: allianceauth/templates/allianceauth/admin-status/overview.html:67 +#: allianceauth/templates/allianceauth/admin-status/overview.html:63 msgid "Latest Stable" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:72 +#: allianceauth/templates/allianceauth/admin-status/overview.html:68 msgid "Update available" msgstr "有更新!" -#: allianceauth/templates/allianceauth/admin-status/overview.html:80 +#: allianceauth/templates/allianceauth/admin-status/overview.html:76 msgid "Latest Pre-Release" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:85 +#: allianceauth/templates/allianceauth/admin-status/overview.html:81 msgid "Pre-Release available" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:95 +#: allianceauth/templates/allianceauth/admin-status/overview.html:91 msgid "Task Queue" msgstr "任务队列" -#: allianceauth/templates/allianceauth/admin-status/overview.html:100 +#: allianceauth/templates/allianceauth/admin-status/overview.html:96 #, python-format msgid "" "\n" @@ -2534,11 +2643,11 @@ msgid "" " " msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:116 +#: allianceauth/templates/allianceauth/admin-status/overview.html:112 msgid "running" msgstr "" -#: allianceauth/templates/allianceauth/admin-status/overview.html:117 +#: allianceauth/templates/allianceauth/admin-status/overview.html:113 msgid "queued" msgstr "" @@ -2563,13 +2672,20 @@ msgstr "登出" msgid "Toggle navigation" msgstr "打开导航栏" -#: allianceauth/theme/templates/theme/theme_select.html:7 +#: allianceauth/theme/templates/theme/theme_select.html:11 msgid "Select Theme" msgstr "" +#: allianceauth/timerboard/apps.py:8 +#: allianceauth/timerboard/templates/timerboard/form.html:10 +#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 +#: allianceauth/timerboard/templates/timerboard/view.html:14 +msgid "Structure Timers" +msgstr "建筑时间表" + #: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 -#: allianceauth/timerboard/templates/timerboard/timertable.html:7 +#: allianceauth/timerboard/templates/timerboard/timertable.html:8 msgid "Details" msgstr "详细信息" @@ -2586,7 +2702,7 @@ msgid "Timer Type" msgstr "" #: allianceauth/timerboard/form.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:8 +#: allianceauth/timerboard/templates/timerboard/timertable.html:9 msgid "Objective" msgstr "声望" @@ -2620,159 +2736,145 @@ msgstr "受限制的公司" #: allianceauth/timerboard/models.py:15 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39 -#: allianceauth/timerboard/templates/timerboard/timertable.html:36 msgid "Friendly" msgstr "蓝加" #: allianceauth/timerboard/models.py:16 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:34 msgid "Hostile" msgstr "红减" #: allianceauth/timerboard/models.py:17 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:38 msgid "Neutral" msgstr "白名" #: allianceauth/timerboard/models.py:24 -#: allianceauth/timerboard/templates/timerboard/timertable.html:48 msgid "POCO" msgstr "" #: allianceauth/timerboard/models.py:25 -#: allianceauth/timerboard/templates/timerboard/timertable.html:50 msgid "Orbital Skyhook" msgstr "" #: allianceauth/timerboard/models.py:26 -#: allianceauth/timerboard/templates/timerboard/timertable.html:52 -msgid "I-HUB" +msgid "Sovereignty Hub" msgstr "" #: allianceauth/timerboard/models.py:27 -#: allianceauth/timerboard/templates/timerboard/timertable.html:55 msgid "TCU" msgstr "" #: allianceauth/timerboard/models.py:28 -#: allianceauth/timerboard/templates/timerboard/timertable.html:57 msgid "POS [S]" msgstr "" #: allianceauth/timerboard/models.py:29 -#: allianceauth/timerboard/templates/timerboard/timertable.html:59 msgid "POS [M]" msgstr "" #: allianceauth/timerboard/models.py:30 -#: allianceauth/timerboard/templates/timerboard/timertable.html:61 msgid "POS [L]" msgstr "" #: allianceauth/timerboard/models.py:31 -#: allianceauth/timerboard/templates/timerboard/timertable.html:63 msgid "Astrahus" msgstr "" #: allianceauth/timerboard/models.py:32 -#: allianceauth/timerboard/templates/timerboard/timertable.html:65 msgid "Fortizar" msgstr "" #: allianceauth/timerboard/models.py:33 -#: allianceauth/timerboard/templates/timerboard/timertable.html:67 msgid "Keepstar" msgstr "" #: allianceauth/timerboard/models.py:34 -#: allianceauth/timerboard/templates/timerboard/timertable.html:69 msgid "Raitaru" msgstr "" #: allianceauth/timerboard/models.py:35 -#: allianceauth/timerboard/templates/timerboard/timertable.html:71 msgid "Azbel" msgstr "" #: allianceauth/timerboard/models.py:36 -#: allianceauth/timerboard/templates/timerboard/timertable.html:73 msgid "Sotiyo" msgstr "" #: allianceauth/timerboard/models.py:37 -#: allianceauth/timerboard/templates/timerboard/timertable.html:75 msgid "Athanor" msgstr "" #: allianceauth/timerboard/models.py:38 -#: allianceauth/timerboard/templates/timerboard/timertable.html:77 msgid "Tatara" msgstr "" #: allianceauth/timerboard/models.py:39 -msgid "Pharolux Cyno Beacon" +msgid "Cyno Beacon" msgstr "" #: allianceauth/timerboard/models.py:40 -msgid "Tenebrex Cyno Jammer" +msgid "Cyno Jammer" msgstr "" #: allianceauth/timerboard/models.py:41 -#: allianceauth/timerboard/templates/timerboard/timertable.html:83 msgid "Ansiblex Jump Gate" msgstr "" #: allianceauth/timerboard/models.py:42 -#: allianceauth/timerboard/templates/timerboard/timertable.html:85 -msgid "Moon Mining Cycle" +msgid "Mercenary Den" msgstr "" #: allianceauth/timerboard/models.py:43 -#: allianceauth/timerboard/templates/timerboard/timertable.html:87 -msgid "Metenox Moon Drill" +msgid "Moon Mining Cycle" msgstr "" #: allianceauth/timerboard/models.py:44 -#: allianceauth/timerboard/templates/timerboard/timertable.html:89 +msgid "Metenox Moon Drill" +msgstr "" + +#: allianceauth/timerboard/models.py:45 msgid "Other" msgstr "其他" -#: allianceauth/timerboard/models.py:51 +#: allianceauth/timerboard/models.py:52 msgid "Not Specified" msgstr "" -#: allianceauth/timerboard/models.py:52 +#: allianceauth/timerboard/models.py:53 msgid "Shield" msgstr "护盾" -#: allianceauth/timerboard/models.py:53 +#: allianceauth/timerboard/models.py:54 msgid "Armor" msgstr "装甲" -#: allianceauth/timerboard/models.py:54 +#: allianceauth/timerboard/models.py:55 msgid "Hull" msgstr "结构" -#: allianceauth/timerboard/models.py:55 +#: allianceauth/timerboard/models.py:56 msgid "Final" msgstr "" -#: allianceauth/timerboard/models.py:56 +#: allianceauth/timerboard/models.py:57 msgid "Anchoring" msgstr "铆钉" -#: allianceauth/timerboard/models.py:57 +#: allianceauth/timerboard/models.py:58 msgid "Unanchoring" msgstr "解锚" -#: allianceauth/timerboard/models.py:58 +#: allianceauth/timerboard/models.py:59 msgid "Abandoned" msgstr "" +#: allianceauth/timerboard/models.py:60 +msgid "Theft" +msgstr "" + #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 -#: allianceauth/timerboard/templates/timerboard/view.html:53 +#: allianceauth/timerboard/templates/timerboard/view.html:54 msgid "Upcoming Timers" msgstr "" @@ -2780,12 +2882,6 @@ msgstr "" msgid "Timer" msgstr "" -#: allianceauth/timerboard/templates/timerboard/form.html:10 -#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10 -#: allianceauth/timerboard/templates/timerboard/view.html:13 -msgid "Structure Timers" -msgstr "建筑时间表" - #: allianceauth/timerboard/templates/timerboard/form.html:25 msgid "Structure Timer Details" msgstr "" @@ -2806,7 +2902,7 @@ msgid "Create Timer" msgstr "创建时间计划表" #: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9 -#: allianceauth/timerboard/templates/timerboard/view.html:21 +#: allianceauth/timerboard/templates/timerboard/view.html:22 msgid "Create Structure Timer" msgstr "创建建筑时间表" @@ -2816,36 +2912,28 @@ msgstr "创建建筑时间表" msgid "Update Structure Timer" msgstr "更新建筑时间表" -#: allianceauth/timerboard/templates/timerboard/timertable.html:10 +#: allianceauth/timerboard/templates/timerboard/timertable.html:11 msgid "Structure" msgstr "建筑" -#: allianceauth/timerboard/templates/timerboard/timertable.html:79 -msgid "Cyno Beacon" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/timertable.html:81 -msgid "Cyno Jammer" -msgstr "" - -#: allianceauth/timerboard/templates/timerboard/view.html:9 +#: allianceauth/timerboard/templates/timerboard/view.html:10 msgid "Structure Timer Management" msgstr "管理建筑时间表" -#: allianceauth/timerboard/templates/timerboard/view.html:40 +#: allianceauth/timerboard/templates/timerboard/view.html:41 msgid "Corporation Timers" msgstr "" -#: allianceauth/timerboard/templates/timerboard/view.html:71 +#: allianceauth/timerboard/templates/timerboard/view.html:72 msgid "Past Timers" msgstr "已经过去的时间节点" -#: allianceauth/timerboard/views.py:85 +#: allianceauth/timerboard/views.py:175 #, python-format msgid "Added new timer in %(system)s at %(time)s." msgstr "已经把%(system)s星系里%(time)s的时间节点设置好了!CTA!F2A!守tmd" -#: allianceauth/timerboard/views.py:95 +#: allianceauth/timerboard/views.py:186 msgid "Saved changes to the timer." msgstr "保存至新的计划表" diff --git a/allianceauth/menu/admin.py b/allianceauth/menu/admin.py index 49f590be..381fb206 100644 --- a/allianceauth/menu/admin.py +++ b/allianceauth/menu/admin.py @@ -1,6 +1,5 @@ """Admin site for menu app.""" -from typing import Optional from django.contrib import admin from django.http import HttpRequest, HttpResponse @@ -35,12 +34,12 @@ class MenuItemAdmin(admin.ModelAdmin): ] ordering = ["parent", "order", "text"] - def get_form(self, request: HttpRequest, obj: Optional[MenuItem] = None, **kwargs): + def get_form(self, request: HttpRequest, obj: MenuItem | None = None, **kwargs): kwargs["form"] = self._choose_form(request, obj) return super().get_form(request, obj, **kwargs) @classmethod - def _choose_form(cls, request: HttpRequest, obj: Optional[MenuItem]): + def _choose_form(cls, request: HttpRequest, obj: MenuItem | None): """Return the form for the current menu item type.""" if obj: # change if obj.hook_hash: @@ -104,7 +103,7 @@ class MenuItemAdmin(admin.ModelAdmin): @staticmethod def _type_from_request( request: HttpRequest, default=None - ) -> Optional[MenuItemType]: + ) -> MenuItemType | None: try: return MenuItemType(request.GET.get("type")) except ValueError: diff --git a/allianceauth/menu/apps.py b/allianceauth/menu/apps.py index 9e13c6b8..e500004d 100644 --- a/allianceauth/menu/apps.py +++ b/allianceauth/menu/apps.py @@ -1,6 +1,7 @@ import logging from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ logger = logging.getLogger(__name__) @@ -12,6 +13,7 @@ logger = logging.getLogger(__name__) class MenuConfig(AppConfig): name = "allianceauth.menu" label = "menu" + verbose_name = _("Menu") def ready(self): from allianceauth.menu.core import smart_sync diff --git a/allianceauth/menu/core/menu_item_hooks.py b/allianceauth/menu/core/menu_item_hooks.py index 4307b3a1..c0d26e5b 100644 --- a/allianceauth/menu/core/menu_item_hooks.py +++ b/allianceauth/menu/core/menu_item_hooks.py @@ -1,7 +1,7 @@ """Logic for handling MenuItemHook objects.""" import hashlib -from typing import List, NamedTuple, Optional +from typing import NamedTuple from allianceauth.menu.hooks import MenuItemHook @@ -14,8 +14,8 @@ class MenuItemHookCustom(MenuItemHook): text: str, classes: str, url_name: str, - order: Optional[int] = None, - navactive: Optional[List[str]] = None, + order: int | None = None, + navactive: list[str] | None = None, ): super().__init__(text, classes, url_name, order, navactive) self.url = "" diff --git a/allianceauth/menu/hooks.py b/allianceauth/menu/hooks.py index d751c8e5..8a1fe5d9 100644 --- a/allianceauth/menu/hooks.py +++ b/allianceauth/menu/hooks.py @@ -1,6 +1,5 @@ """Menu item hooks.""" -from typing import List, Optional from django.template.loader import render_to_string @@ -33,8 +32,8 @@ class MenuItemHook: text: str, classes: str, url_name: str, - order: Optional[int] = None, - navactive: Optional[List[str]] = None, + order: int | None = None, + navactive: list[str] | None = None, ): self.text = text self.classes = classes diff --git a/allianceauth/menu/migrations/0001_initial.py b/allianceauth/menu/migrations/0001_initial.py index 1594566b..bf25eebb 100644 --- a/allianceauth/menu/migrations/0001_initial.py +++ b/allianceauth/menu/migrations/0001_initial.py @@ -1,7 +1,7 @@ # Generated by Django 4.2.9 on 2024-02-15 00:01 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/allianceauth/menu/migrations/0002_alter_menuitem_hook_hash.py b/allianceauth/menu/migrations/0002_alter_menuitem_hook_hash.py new file mode 100644 index 00000000..a565c24a --- /dev/null +++ b/allianceauth/menu/migrations/0002_alter_menuitem_hook_hash.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.6 on 2025-03-05 00:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('menu', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='menuitem', + name='hook_hash', + field=models.CharField(default=None, editable=False, help_text='hash of a menu item hook. Must be nullable for unique comparison.', max_length=64, null=True, unique=True), + ), + ] diff --git a/allianceauth/menu/models.py b/allianceauth/menu/models.py index b2984842..9432c526 100644 --- a/allianceauth/menu/models.py +++ b/allianceauth/menu/models.py @@ -1,3 +1,4 @@ +from typing import ClassVar from django.db import models from django.utils.translation import gettext_lazy as _ @@ -40,16 +41,18 @@ class MenuItem(models.Model): is_hidden = models.BooleanField( default=False, verbose_name=_("is hidden"), - help_text=_( - "Hide this menu item." - "If this item is a folder all items under it will be hidden too" - ), + help_text=_("Hide this menu item." "If this item is a folder all items under it will be hidden too"), ) # app related properties - hook_hash = models.CharField( - max_length=64, default=None, null=True, unique=True, editable=False - ) # hash of a menu item hook. Must be nullable for unique comparison. + hook_hash = models.CharField( # noqa: DJ001 + max_length=64, + default=None, + null=True, + unique=True, + editable=False, + help_text="hash of a menu item hook. Must be nullable for unique comparison.", + ) # user defined properties classes = models.CharField( @@ -57,10 +60,7 @@ class MenuItem(models.Model): default="", blank=True, verbose_name=_("icon classes"), - help_text=_( - "Font Awesome classes to show as icon on menu, " - "e.g. fa-solid fa-house" - ), + help_text=_("Font Awesome classes to show as icon on menu, " "e.g. fa-solid fa-house"), ) url = models.TextField( default="", @@ -68,12 +68,12 @@ class MenuItem(models.Model): help_text=_("External URL this menu items will link to"), ) - objects = MenuItemManager() + objects: ClassVar[MenuItemManager] = MenuItemManager() def __str__(self) -> str: return self.text - def save(self, *args, **kwargs): + def save(self, *args, **kwargs) -> None: if not self.hook_hash: self.hook_hash = None # empty strings can create problems return super().save(*args, **kwargs) @@ -119,14 +119,12 @@ class MenuItem(models.Model): if self.is_app_item: raise ValueError("The related hook objects should be used for app items.") - hook_obj = MenuItemHookCustom( - text=self.text, classes=self.classes, url_name="", order=self.order - ) + hook_obj = MenuItemHookCustom(text=self.text, classes=self.classes, url_name="", order=self.order) hook_obj.navactive = [] if self.is_folder and not self.classes: hook_obj.classes = DEFAULT_FOLDER_ICON_CLASSES hook_obj.url = self.url hook_obj.is_folder = self.is_folder - hook_obj.html_id = f"id-folder-{self.id}" if self.is_folder else "" + hook_obj.html_id = f"id-folder-{self.pk}" if self.is_folder else "" return hook_obj diff --git a/allianceauth/menu/templates/menu/menu-item-bs5.html b/allianceauth/menu/templates/menu/menu-item-bs5.html index 80d48384..e0e7dbda 100644 --- a/allianceauth/menu/templates/menu/menu-item-bs5.html +++ b/allianceauth/menu/templates/menu/menu-item-bs5.html @@ -11,8 +11,8 @@ data-bs-target="#{{ item.html_id }}" aria-expanded="false" aria-controls="" - {% endif %}> - + {% endif %} + > {% if item.count >= 1 %} - + {{ item.count }} {% elif item.url %} @@ -36,7 +36,7 @@ {% if item.is_folder %} +
    {% translate "Operation" %} {% translate "Type" %} {% translate "Form Up System" %}{% translate "EVE Time" %}{% translate "EVE time" %}
    {% translate "Timer" %} {% translate "Type" %} {% translate "System" %}{% translate "EVE Time" %}{% translate "EVE time" %}
    {% if timer.objective == "Hostile" %} -
    +
    {% translate "Hostile" %}
    {% endif %} {% if timer.objective == "Friendly" %} -
    +
    {% translate "Friendly" %}
    {% endif %} {% if timer.objective == "Neutral" %} -
    +
    {% translate "Neutral" %}
    {% endif %} diff --git a/allianceauth/timerboard/templates/timerboard/timertable.html b/allianceauth/timerboard/templates/timerboard/timertable.html index c1d5c818..9028e1c4 100644 --- a/allianceauth/timerboard/templates/timerboard/timertable.html +++ b/allianceauth/timerboard/templates/timerboard/timertable.html @@ -2,113 +2,84 @@ {% load i18n %}
    - - - - - - - - - - - {% if perms.auth.timer_management %} - - {% endif %} - - - {% for timer in timers %} - - - - - - - - - - - - - - - +
    {% translate "Details" %}{% translate "Objective" %}{% translate "System" %}{% translate "Structure" %}{% translate "Eve Time" %}{% translate "Local Time" %}{% translate "Creator" %}{% translate "Action" %}
    - {{ timer.details }} - - {% if timer.timer_type != 'UNSPECIFIED' %} -
    - ({{ timer.get_timer_type_display }}) - {% endif %} -
    - {% if timer.objective == "Hostile" %} -
    {% translate "Hostile" %}
    - {% elif timer.objective == "Friendly" %} -
    {% translate "Friendly" %}
    - {% elif timer.objective == "Neutral" %} -
    {% translate "Neutral" %}
    - {% endif %} -
    - {{ timer.system }} {{ timer.planet_moon }} - - {% if timer.structure == "POCO" %} -
    {% translate "POCO" %}
    - {% elif timer.structure == "Orbital Skyhook" %} -
    {% translate "Orbital Skyhook" %}
    - {% elif timer.structure == "I-HUB" %} -
    {% translate "I-HUB" %}
    - {% elif timer.structure == "TCU" %} {% comment %} Pending Removal {% endcomment %} -
    {% translate "TCU" %}
    - {% elif timer.structure == "POS[S]" %} -
    {% translate "POS [S]" %}
    - {% elif timer.structure == "POS[M]" %} -
    {% translate "POS [M]" %}
    - {% elif timer.structure == "POS[L]" %} -
    {% translate "POS [L]" %}
    - {% elif timer.structure == "Citadel[M]" or timer.structure == "Astrahus" %} -
    {% translate "Astrahus" %}
    - {% elif timer.structure == "Citadel[L]" or timer.structure == "Fortizar" %} -
    {% translate "Fortizar" %}
    - {% elif timer.structure == "Citadel[XL]" or timer.structure == "Keepstar" %} -
    {% translate "Keepstar" %}
    - {% elif timer.structure == "Engineering Complex[M]" or timer.structure == "Raitaru" %} -
    {% translate "Raitaru" %}
    - {% elif timer.structure == "Engineering Complex[L]" or timer.structure == "Azbel" %} -
    {% translate "Azbel" %}
    - {% elif timer.structure == "Engineering Complex[XL]" or timer.structure == "Sotiyo" %} -
    {% translate "Sotiyo" %}
    - {% elif timer.structure == "Refinery[M]" or timer.structure == "Athanor" %} -
    {% translate "Athanor" %}
    - {% elif timer.structure == "Refinery[L]" or timer.structure == "Tatara" %} -
    {% translate "Tatara" %}
    - {% elif timer.structure == "Cyno Beacon" or timer.structure == "Pharolux Cyno Beacon" %} -
    {% translate "Cyno Beacon" %}
    - {% elif timer.structure == "Cyno Jammer" or timer.structure == "Tenebrex Cyno Jammer" %} -
    {% translate "Cyno Jammer" %}
    - {% elif timer.structure == "Jump Gate" or timer.structure == "Ansiblex Jump Gate" %} -
    {% translate "Ansiblex Jump Gate" %}
    - {% elif timer.structure == "Moon Mining Cycle" %} -
    {% translate "Moon Mining Cycle" %}
    - {% elif timer.structure == "Metenox Moon Drill" %} -
    {% translate "Metenox Moon Drill" %}
    - {% elif timer.structure == "Other" %} -
    {% translate "Other" %}
    - {% endif %} -
    {{ timer.eve_time | date:"Y-m-d H:i" }} -
    -
    -
    {{ timer.eve_character.character_name }}
    + + + + + + + + + {% if perms.auth.timer_management %} - + {% endif %} - {% endfor %} + + + + {% for timer in timers %} + + + + + + + + + + + + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + {% endfor %} +
    {% translate "Details" %}{% translate "Objective" %}{% translate "System" %}{% translate "Structure" %}{% translate "EVE time" %}{% translate "Local Time" %}{% translate "Creator" %} - - - - - - - {% translate "Action" %}
    + {{ timer.details }} + + {% if timer.timer_type != 'UNSPECIFIED' %} +
    + ({{ timer.get_timer_type_display }}) + {% endif %} +
    + {% comment %} Objective: Hostile (BG: Danger) {% endcomment %} + {% if timer.objective == "Hostile" %} +
    + + {% comment %} Objective: Friendly (BG: Primare) {% endcomment %} + {% elif timer.objective == "Friendly" %} +
    + + {% comment %} Objective: Neutral (BG: Secondary) {% endcomment %} + {% elif timer.objective == "Neutral" %} +
    + {% endif %} + + {{ timer.get_objective_display }} +
    +
    + {{ timer.system }} {{ timer.planet_moon }} + +
    + {{ timer.get_structure_display }} +
    +
    {{ timer.eve_time | date:"Y-m-d H:i" }} +
    +
    +
    {{ timer.eve_character.character_name }} + + + + + + +
    diff --git a/allianceauth/timerboard/templates/timerboard/view.html b/allianceauth/timerboard/templates/timerboard/view.html index 85948f20..9aa742cd 100644 --- a/allianceauth/timerboard/templates/timerboard/view.html +++ b/allianceauth/timerboard/templates/timerboard/view.html @@ -1,5 +1,6 @@ {% extends "allianceauth/base-bs5.html" %} +{% load aa_i18n %} {% load i18n %} {% load evelinks %} @@ -25,10 +26,10 @@ {% endblock header_nav_collapse_right %} {% block content %} -
    +
    -
    - {% translate "Current Eve Time:" %} +
    + {% translate "Current EVE time:" %}
    @@ -42,7 +43,7 @@
    - {% include "timerboard/timertable.html" with timers=corp_timers %} + {% include "timerboard/timertable.html" with id="corp-timers" timers=corp_timers %}
    {% endif %} @@ -56,7 +57,7 @@
    {% if future_timers %} - {% include "timerboard/timertable.html" with timers=future_timers %} + {% include "timerboard/timertable.html" with id="future-timers" timers=future_timers %} {% else %}
    {% translate "No upcoming timers." %} @@ -74,7 +75,7 @@
    {% if past_timers %} - {% include "timerboard/timertable.html" with timers=past_timers %} + {% include "timerboard/timertable.html" with id="past-timers" timers=past_timers %} {% else %}
    {% translate "No past timers." %} @@ -85,9 +86,16 @@
    {% endblock content %} +{% block extra_css %} + {% include "bundles/datatables-css-bs5.html" %} +{% endblock extra_css %} + {% block extra_javascript %} {% include "bundles/moment-js.html" with locale=True %} {% include "bundles/timers-js.html" %} + {% include "bundles/datatables-js-bs5.html" %} + + {% get_datatables_language_static LANGUAGE_CODE as DT_LANG_PATH %} {% endblock extra_javascript %} diff --git a/allianceauth/timerboard/tests.py b/allianceauth/timerboard/tests.py index 26e7ef00..98a54678 100644 --- a/allianceauth/timerboard/tests.py +++ b/allianceauth/timerboard/tests.py @@ -1,25 +1,26 @@ -from django_webtest import WebTest -from django.utils import timezone -from django.urls import reverse -from django.contrib.auth.models import Permission, User -from django.conf import settings - from datetime import timedelta -from allianceauth.tests.auth_utils import AuthUtils -from allianceauth.eveonline.models import EveCorporationInfo +from django_webtest import WebTest + +from django.conf import settings +from django.contrib.auth.models import Permission, User +from django.urls import reverse +from django.utils import timezone + +from allianceauth.eveonline.models import EveCorporationInfo +from allianceauth.tests.auth_utils import AuthUtils -from .models import Timer from .form import TimerForm +from .models import Timer class TimerboardViewsTestCase(WebTest): csrf_checks = False def setUp(self): - corp = EveCorporationInfo.objects.create(corporation_id='2345', corporation_name='test corp', + EveCorporationInfo.objects.create(corporation_id='2345', corporation_name='test corp', corporation_ticker='testc', member_count=24) - other_corp = EveCorporationInfo.objects.create(corporation_id='9345', corporation_name='other test corp', + EveCorporationInfo.objects.create(corporation_id='9345', corporation_name='other test corp', corporation_ticker='testd', member_count=1) self.user = AuthUtils.create_user('test_user') AuthUtils.add_main_character(self.user, 'test character', '1234', '2345', 'test corp', 'testc') diff --git a/allianceauth/timerboard/views.py b/allianceauth/timerboard/views.py index 93c877c8..ee643d20 100644 --- a/allianceauth/timerboard/views.py +++ b/allianceauth/timerboard/views.py @@ -1,12 +1,12 @@ -import datetime import logging from django.contrib import messages from django.contrib.auth.mixins import ( - LoginRequiredMixin, PermissionRequiredMixin, + LoginRequiredMixin, + PermissionRequiredMixin, ) from django.db.models import Q -from django.shortcuts import get_object_or_404, redirect, render +from django.shortcuts import get_object_or_404, render from django.template.loader import render_to_string from django.urls import reverse_lazy from django.utils import timezone @@ -20,8 +20,8 @@ from allianceauth.timerboard.models import Timer logger = logging.getLogger(__name__) -TIMER_VIEW_PERMISSION = 'auth.timer_view' -TIMER_MANAGE_PERMISSION = 'auth.timer_management' +TIMER_VIEW_PERMISSION = "auth.timer_view" +TIMER_MANAGE_PERMISSION = "auth.timer_management" class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View): @@ -29,22 +29,112 @@ class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View): class TimerView(BaseTimerView): - template_name = 'timerboard/view.html' + template_name = "timerboard/view.html" permission_required = TIMER_VIEW_PERMISSION - def get(self, request): + def get(self, request): # noqa: C901 + """ + Renders the timer view + + :param request: + :type request: + :return: + :rtype: + """ + + def get_bg_modifier(structure): + """ + Returns the bootstrap bg modifier for the given structure + + :param structure: + :type structure: + :return: + :rtype: + """ + + if structure in bg_info: + return "info" + elif structure in bg_warning: + return "warning" + elif structure in bg_danger: + return "danger" + elif structure in bg_secondary: + return "secondary" + + return "primary" + logger.debug(f"timer_view called by user {request.user}") char = request.user.profile.main_character + if char: corp = char.corporation else: corp = None - base_query = Timer.objects.select_related('eve_character') + + base_query = Timer.objects.select_related("eve_character") + + timers = [] + corp_timers = [] + future_timers = [] + past_timers = [] + + bg_info = [ + Timer.Structure.POCO.value, # POCO + Timer.Structure.POSS.value, # POS[S] + Timer.Structure.POSM.value, # POS[M] + Timer.Structure.POSL.value, # POS[L] + ] + bg_warning = [ + Timer.Structure.ANSIBLEX.value, # Ansiblex Jump Gate + Timer.Structure.ATHANOR.value, # Athanor + Timer.Structure.AZBEL.value, # Azbel + Timer.Structure.MERCDEN.value, # Mercenary Den + Timer.Structure.METENOX.value, # Metenox Moon Drill + Timer.Structure.ORBITALSKYHOOK.value, # Orbital Skyhook + Timer.Structure.PHAROLUX.value, # Pharolux Cyno Beacon + Timer.Structure.RAITARU.value, # Raitaru + "Station", # Legacy structure, remove in future update + Timer.Structure.TATARA.value, # Tatara + Timer.Structure.TENEBREX.value, # Tenebrex Cyno Jammer + ] + bg_danger = [ + Timer.Structure.ASTRAHUS.value, # Astrahus + Timer.Structure.FORTIZAR.value, # Fortizar + Timer.Structure.IHUB.value, # I-HUB + Timer.Structure.KEEPSTAR.value, # Keepstar + Timer.Structure.SOTIYO.value, # Sotiyo + Timer.Structure.TCU.value, # TCU (Legacy structure, remove in future update) + ] + bg_secondary = [ + Timer.Structure.MOONPOP.value, # Moon Mining Cycle + Timer.Structure.OTHER.value, # Other + ] + + # Timers + for timer in base_query.filter(corp_timer=False): + timer.bg_modifier = get_bg_modifier(timer.structure) + timers.append(timer) + + # Corp Timers + for timer in base_query.filter(corp_timer=True, eve_corp=corp): + timer.bg_modifier = get_bg_modifier(timer.structure) + corp_timers.append(timer) + + # Future Timers + for timer in base_query.filter(corp_timer=False, eve_time__gte=timezone.now()): + timer.bg_modifier = get_bg_modifier(timer.structure) + future_timers.append(timer) + + # Past Timers + for timer in base_query.filter(corp_timer=False, eve_time__lt=timezone.now()): + timer.bg_modifier = get_bg_modifier(timer.structure) + past_timers.append(timer) + render_items = { - 'timers': base_query.filter(corp_timer=False), - 'corp_timers': base_query.filter(corp_timer=True, eve_corp=corp), - 'future_timers': base_query.filter(corp_timer=False, eve_time__gte=timezone.now()), - 'past_timers': base_query.filter(corp_timer=False, eve_time__lt=timezone.now()), + "timers": timers, + "corp_timers": corp_timers, + "future_timers": future_timers, + "past_timers": past_timers, } return render(request, self.template_name, context=render_items) @@ -52,7 +142,7 @@ class TimerView(BaseTimerView): class TimerManagementView(BaseTimerView): permission_required = TIMER_MANAGE_PERMISSION - index_redirect = 'timerboard:view' + index_redirect = "timerboard:view" success_url = reverse_lazy(index_redirect) model = Timer @@ -66,12 +156,12 @@ class AddUpdateMixin: Inject the request user into the kwargs passed to the form """ kwargs = super().get_form_kwargs() - kwargs.update({'user': self.request.user}) + kwargs.update({"user": self.request.user}) return kwargs class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView): - template_name_suffix = '_create_form' + template_name_suffix = "_create_form" form_class = TimerForm def form_valid(self, form): @@ -82,17 +172,18 @@ class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView): ) messages.success( self.request, - _('Added new timer in %(system)s at %(time)s.') % {"system": timer.system, "time": timer.eve_time} + _("Added new timer in %(system)s at %(time)s.") + % {"system": timer.system, "time": timer.eve_time}, ) return result class EditTimerView(TimerManagementView, AddUpdateMixin, UpdateView): - template_name_suffix = '_update_form' + template_name_suffix = "_update_form" form_class = TimerForm def form_valid(self, form): - messages.success(self.request, _('Saved changes to the timer.')) + messages.success(self.request, _("Saved changes to the timer.")) return super().form_valid(form) @@ -107,21 +198,20 @@ def dashboard_timers(request): except (EveCorporationInfo.DoesNotExist, AttributeError): return "" - timers = Timer.objects.select_related( - 'eve_character' - ).filter( + timers = Timer.objects.select_related("eve_character").filter( (Q(corp_timer=True) & Q(eve_corp=corp)) | Q(corp_timer=False), - eve_time__gte=timezone.now() + eve_time__gte=timezone.now(), )[:5] if timers.count(): context = { - 'timers': timers, + "timers": timers, } return render_to_string( - template_name='timerboard/dashboard.timers.html', - context=context, request=request + template_name="timerboard/dashboard.timers.html", + context=context, + request=request, ) else: return "" diff --git a/allianceauth/urls.py b/allianceauth/urls.py index 71a43b26..6d1cc12d 100644 --- a/allianceauth/urls.py +++ b/allianceauth/urls.py @@ -1,12 +1,12 @@ -from typing import List, Iterable, Callable +from collections.abc import Callable, Iterable -from django.urls import include -import esi.urls from django.conf import settings from django.contrib import admin from django.urls import URLPattern, include, path from django.views.generic.base import TemplateView +import esi.urls + import allianceauth.authentication.urls import allianceauth.authentication.views import allianceauth.groupmanagement.urls @@ -14,18 +14,15 @@ import allianceauth.notifications.urls import allianceauth.services.urls from allianceauth import NAME, views from allianceauth.authentication import hmac_urls -from allianceauth.authentication.decorators import ( - decorate_url_patterns, - main_character_required -) +from allianceauth.authentication.decorators import decorate_url_patterns, main_character_required from allianceauth.hooks import get_hooks admin.site.site_header = NAME def urls_from_apps( - apps_hook_functions: Iterable[Callable], public_views_allowed: List[str] -) -> List[URLPattern]: + apps_hook_functions: Iterable[Callable], public_views_allowed: list[str] +) -> list[URLPattern]: """Return urls from apps and add default decorators.""" url_patterns = [] diff --git a/allianceauth/utils/counters.py b/allianceauth/utils/counters.py index 095ea13d..ed28b134 100644 --- a/allianceauth/utils/counters.py +++ b/allianceauth/utils/counters.py @@ -1,6 +1,5 @@ """Counters.""" -from typing import Optional from redis import Redis @@ -22,7 +21,7 @@ class ItemCounter: DEFAULT_CACHE_TIMEOUT = 24 * 3600 def __init__( - self, name: str, minimum: Optional[int] = None, redis: Optional[Redis] = None + self, name: str, minimum: int | None = None, redis: Redis | None = None ) -> None: if not name: raise ValueError("Must define a name") @@ -60,6 +59,6 @@ class ItemCounter: except ValueError: pass - def value(self) -> Optional[int]: + def value(self) -> int | None: """Return current value or None if not yet initialized.""" return cache.get(self._cache_key) diff --git a/allianceauth/utils/testing.py b/allianceauth/utils/testing.py index 43afdf58..5b4bbb13 100644 --- a/allianceauth/utils/testing.py +++ b/allianceauth/utils/testing.py @@ -1,4 +1,5 @@ import socket + from django.test import TestCase diff --git a/allianceauth/utils/tests/test_testing.py b/allianceauth/utils/tests/test_testing.py index ee8ccbbc..2b569aaa 100644 --- a/allianceauth/utils/tests/test_testing.py +++ b/allianceauth/utils/tests/test_testing.py @@ -1,4 +1,5 @@ import requests + from allianceauth.utils.testing import NoSocketsTestCase, SocketAccessError diff --git a/docker/.env.example b/docker/.env.example index 74712116..008f6b8d 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -1,7 +1,7 @@ PROTOCOL=https:// AUTH_SUBDOMAIN=%AUTH_SUBDOMAIN% DOMAIN=%DOMAIN% -AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.4.2 +AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v5.0.0a3 # Nginx Proxy Manager PROXY_HTTP_PORT=80 diff --git a/docker/Dockerfile b/docker/Dockerfile index 462f6a56..03a5093e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,5 @@ -FROM python:3.11-slim -ARG AUTH_VERSION=v4.4.2 +FROM python:3.12-slim +ARG AUTH_VERSION=v5.0.0a3 ARG AUTH_PACKAGE=allianceauth==${AUTH_VERSION} ENV AUTH_USER=allianceauth ENV AUTH_GROUP=allianceauth diff --git a/docker/conf/aa_mariadb.cnf b/docker/conf/aa_mariadb.cnf new file mode 100644 index 00000000..737da0c6 --- /dev/null +++ b/docker/conf/aa_mariadb.cnf @@ -0,0 +1,6 @@ +[mariadb] +# Provided as an Example +# AA Doesnt use Aria or MyISAM, So these are worth Considering + +# aria_pagecache_buffer_size = 16M +# key_buffer_size = 16M diff --git a/docker/conf/celery.py b/docker/conf/celery.py index 5129f00a..abeb29c3 100644 --- a/docker/conf/celery.py +++ b/docker/conf/celery.py @@ -1,11 +1,12 @@ import os + from celery import Celery from celery.app import trace # set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myauth.settings.local') -from django.conf import settings # noqa +from django.conf import settings app = Celery('myauth') @@ -13,6 +14,10 @@ app = Celery('myauth') # Celery startup if it is unavailable. app.conf.broker_connection_retry_on_startup = True +# Set a hard task execution time of 5 minutes before celery will cold restart +app.conf.worker_soft_shutdown_timeout = 300 +app.conf.worker_enable_soft_shutdown_on_idle = True + # Using a string here means the worker don't have to serialize # the configuration object to child processes. app.config_from_object('django.conf:settings') @@ -30,6 +35,13 @@ app.conf.ONCE = { 'settings': {} } +app.conf.task_routes = { + # Some AA Services are sensitive to threaded tasks + # Utilize a single threaded worker to process these tasks + # Discord: Multithreads can cause duplicate role creation. + "discord.*": {"queue": "services"}, +} + # Load task modules from all registered Django app configs. app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) diff --git a/docker/conf/redis_healthcheck.sh b/docker/conf/redis_healthcheck.sh old mode 100644 new mode 100755 diff --git a/docker/conf/urls.py b/docker/conf/urls.py index 58d40642..a098e831 100644 --- a/docker/conf/urls.py +++ b/docker/conf/urls.py @@ -1,6 +1,7 @@ -from allianceauth import urls from django.urls import include, path +from allianceauth import urls + urlpatterns = [ path('', include(urls)), ] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 1c427652..5e580b6a 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - x-allianceauth-base: &allianceauth-base image: ${AA_DOCKER_TAG?err} # build: @@ -30,11 +28,7 @@ x-allianceauth-base: &allianceauth-base x-allianceauth-health-check: &allianceauth-health-checks healthcheck: - test: [ - "CMD", - "/memory_check.sh", - "500000000" - ] + test: ["CMD", "/memory_check.sh", "500000000"] interval: 60s timeout: 10s retries: 3 @@ -44,11 +38,12 @@ x-allianceauth-health-check: &allianceauth-health-checks services: auth_mysql: - image: mariadb:10.11 + image: mariadb:lts 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 + - ./conf/aa_mariadb.cnf:/etc/mysql/conf.d/aa_mariadb.cnf environment: - MYSQL_ROOT_PASSWORD=${AA_DB_ROOT_PASSWORD?err} - MARIADB_MYSQL_LOCALHOST_USER=1 @@ -83,7 +78,7 @@ services: - "redis-data:/data" - ./conf/redis_healthcheck.sh:/usr/local/bin/redis_healthcheck.sh healthcheck: - test: ["CMD", "bash", "/usr/local/bin/redis_healthcheck.sh"] + test: ["CMD", "/usr/local/bin/redis_healthcheck.sh"] logging: driver: "json-file" options: @@ -91,47 +86,29 @@ services: max-file: "5" allianceauth_gunicorn: - ports: - - 8000:8000 container_name: allianceauth_gunicorn <<: [*allianceauth-base] - entrypoint: [ - "gunicorn", - "myauth.wsgi", - "--bind=0.0.0.0:8000", - "--workers=3", - "--timeout=120", - "--max-requests=500", - "--max-requests-jitter=50" - ] + entrypoint: ["gunicorn", "myauth.wsgi", "--bind=0.0.0.0:8000", "--workers=3", "--timeout=120", "--max-requests=500", "--max-requests-jitter=50"] + expose: + - 8000 allianceauth_beat: container_name: allianceauth_worker_beat <<: [*allianceauth-base] - entrypoint: [ - "celery", - "-A", - "myauth", - "beat" - ] + entrypoint: ["celery", "-A", "myauth", "beat"] allianceauth_worker: <<: [*allianceauth-base, *allianceauth-health-checks] - entrypoint: [ - "celery", - "-A", - "myauth", - "worker", - "--pool=threads", - "--concurrency=5", - "-n", - "worker_%n" - ] + entrypoint: ["celery", "-A", "myauth", "worker", "--pool=threads", "--concurrency=5", "-n", "worker_%n"] deploy: replicas: 2 + allianceauth_worker_services: + <<: [*allianceauth-base, *allianceauth-health-checks] + entrypoint: ["celery", "-A", "myauth", "worker", "--pool=threads", "--concurrency=1", "-Q" , "services" , "-n", "worker_services_%n"] + grafana: - image: grafana/grafana-oss:9.5.2 + image: grafana/grafana-oss:latest restart: always depends_on: - auth_mysql @@ -158,13 +135,6 @@ services: - ${PROXY_HTTP_PORT:-80}:80 - ${PROXY_DASH_PORT:-81}:81 - ${PROXY_HTTPS_PORT:-443}:443 - # Uncomment this section to use a dedicated database for Nginx Proxy Manager - # 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 @@ -176,25 +146,6 @@ services: max-size: "10Mb" max-file: "5" - # Uncomment this section to use a dedicated database for Nginx Proxy Manager - # 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 - # logging: - # driver: "json-file" - # options: - # max-size: "1Mb" - # max-file: "5" - volumes: redis-data: static-volume: diff --git a/docker/scripts/download.sh b/docker/scripts/download.sh index 833b254c..f8a4526c 100755 --- a/docker/scripts/download.sh +++ b/docker/scripts/download.sh @@ -1,4 +1,6 @@ #!/bin/bash git clone https://gitlab.com/allianceauth/allianceauth.git aa-git cp -R aa-git/docker ./aa-docker +chmod +x aa-docker/conf/memory_check.sh +chmod +x aa-docker/conf/redis_healthcheck.sh rm -rf aa-git diff --git a/docs/_static/images/promotion/SampleInstallation-Darkly.png b/docs/_static/images/promotion/SampleInstallation-Darkly.png new file mode 100644 index 00000000..4d87a7a4 Binary files /dev/null and b/docs/_static/images/promotion/SampleInstallation-Darkly.png differ diff --git a/docs/_static/images/promotion/SampleInstallation-Flatly.png b/docs/_static/images/promotion/SampleInstallation-Flatly.png new file mode 100644 index 00000000..b581afa3 Binary files /dev/null and b/docs/_static/images/promotion/SampleInstallation-Flatly.png differ diff --git a/docs/conf.py b/docs/conf.py index 78f8c63b..8fca5e2e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,9 +12,11 @@ # import os import sys -import django + import sphinx_rtd_theme # noqa +import django + sys.path.insert(0, os.path.abspath('..')) os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings_all' django.setup() diff --git a/docs/customizing/index.md b/docs/customizing/index.md index 38ccada9..db95dbf4 100644 --- a/docs/customizing/index.md +++ b/docs/customizing/index.md @@ -22,7 +22,7 @@ Within your auth project exists two folders named `static` and `templates`. Thes You can add extra static or templates by putting files in these folders. Note that changes to static require running the `python manage.py collectstatic` command to copy to the web server directory. -It is possible to overload static and templates shipped with Django or Alliance Auth by including a file with the exact path of the one you wish to overload. For instance if you wish to add extra links to the menu bar by editing the template, you would make a copy of the `allianceauth/templates/allianceauth/base-bs5.html` (Bootstrap 5) `allianceauth/templates/allianceauth/base.html` (Legacy BS3) file to `myauth/templates/allianceauth/*.html` and edit it there. Notice the paths are identical after the `templates/` directory - this is critical for it to be recognized. Your custom template would be used instead of the one included with Alliance Auth when Django renders the web page. Similar idea for static: put CSS or images at an identical path after the `static/` directory and they will be copied to the web server directory instead of the ones included. +It is possible to overload static and templates shipped with Django or Alliance Auth by including a file with the exact path of the one you wish to overload. For instance if you wish to add extra links to the menu bar by editing the template, you would make a copy of the `allianceauth/templates/allianceauth/base-bs5.html` file to `myauth/templates/allianceauth/*.html` and edit it there. Notice the paths are identical after the `templates/` directory - this is critical for it to be recognized. Your custom template would be used instead of the one included with Alliance Auth when Django renders the web page. Similar idea for static: put CSS or images at an identical path after the `static/` directory and they will be copied to the web server directory instead of the ones included. ## Custom URLs and Views diff --git a/docs/development/custom/app-announcement-hooks.md b/docs/development/custom/app-announcement-hooks.md new file mode 100644 index 00000000..e4992864 --- /dev/null +++ b/docs/development/custom/app-announcement-hooks.md @@ -0,0 +1,53 @@ +# Announcement Hooks + +This hook allows the issues opened on your application repository to be displayed on the alliance auth front page to +administrators. + +![app_announcement_hook_example](img/app_announcement_hook_example.png) + +To register an AppAnnouncementHook class, you would do the following: + +```python +from allianceauth import hooks +from allianceauth.services.hooks import AppAnnouncementHook + + +@hooks.register('app_announcement_hook') +def announcement_hook(): + return AppAnnouncementHook("Your app name", "USERNAME/REPOSITORY_NAME", AppAnnouncementHook.Service.GITLAB) +``` + +```{eval-rst} +.. autoclass:: allianceauth.services.hooks.AppAnnouncementHook + :members: __init__ + :undoc-members: +``` + +## Parameters + +### app_name + +The name of your application. + +### repository_namespace + +Here you should enter the namespace of your repository. +The structure stays the same for both GitHub and GitLab repositories. \ +A repository with the url `https://gitlab.com/username/appname` will have a namespace of `username/appname`. + +### Service + +This variable is an enumeration of the class `AppAnnouncemementHook.Service` + +It is mandatory to specify this variable so alliance auth contacts the correct API when fetching your repository issues. + +```{eval-rst} +.. autoclass:: allianceauth.services.hooks.AppAnnouncementHook.Service + :members: GITLAB, GITHUB + :undoc-members: +``` + +### label + +The label that will determine if issues should be seen as an announcement. +This value is case-sensitive and the default value is `"announcement"`. diff --git a/docs/development/custom/framework/api.md b/docs/development/custom/framework/api.md index 576a5373..f095447e 100644 --- a/docs/development/custom/framework/api.md +++ b/docs/development/custom/framework/api.md @@ -43,7 +43,7 @@ if the `EveCharacter` has no user. ### get_all_characters_from_user -This is to get all character objects (`EveCharacter`) of a user. +This is to get all character objects (`EveCharacter`) of a user (alphabetically sorted). Given we have a `User` object called `my_user` and we want to get all characters: @@ -51,12 +51,16 @@ Given we have a `User` object called `my_user` and we want to get all characters # Alliance Auth from allianceauth.framework.api.user import get_all_characters_from_user -characters = get_all_characters_from_user(user=my_user) +characters = get_all_characters_from_user(user=my_user, main_first=False) ``` Now, `characters` is a `list` containing all `EveCharacter` objects of the user. If the user is `None`, an empty `list` will be returned. +The second parameter `main_first` is optional and defaults to `False`. +If set to `True`, the function will return the main character as the first +item in the list of characters. + ### get_main_character_from_user This is to get the main character object (`EveCharacter`) of a user. diff --git a/docs/development/custom/img/app_announcement_hook_example.png b/docs/development/custom/img/app_announcement_hook_example.png new file mode 100755 index 00000000..6b9b4944 Binary files /dev/null and b/docs/development/custom/img/app_announcement_hook_example.png differ diff --git a/docs/development/custom/index.md b/docs/development/custom/index.md index 72be4d4d..3ed4008b 100644 --- a/docs/development/custom/index.md +++ b/docs/development/custom/index.md @@ -8,6 +8,7 @@ This section describes how to extend **Alliance Auth** with custom apps, service integrating-services menu-hooks url-hooks +app-announcement-hooks logging custom-themes aa-framework diff --git a/docs/development/dev_setup/aa-dev-setup-wsl-vsc-v2.md b/docs/development/dev_setup/aa-dev-setup-wsl-vsc-v2.md index 64a68a5d..c9538664 100644 --- a/docs/development/dev_setup/aa-dev-setup-wsl-vsc-v2.md +++ b/docs/development/dev_setup/aa-dev-setup-wsl-vsc-v2.md @@ -67,13 +67,13 @@ sudo apt-get install gettext Next, we need to install Python and related development tools. :::{note} -Should your Ubuntu come with a newer version of Python we recommend to still set up your dev environment with the oldest Python 3 version currently supported by AA (e.g., Python 3.8 at this time of writing) to ensure your apps are compatible with all current AA installations +Should your Ubuntu come with a newer version of Python we recommend to still set up your dev environment with the oldest Python 3 version currently supported by AA (e.g., Python 3.10 at this time of writing) to ensure your apps are compatible with all current AA installations You can check out this `page `_ on how to install additional Python versions on Ubuntu. -If you install a different python version from the default, you need to adjust some commands below to install appopriate versions of those packages, for example, using Python 3.8 you might need to run the following after using the setup steps for the repository mentioned in the AskUbuntu post above: +If you install a different python version from the default, you need to adjust some commands below to install appopriate versions of those packages, for example, using Python 3.10 you might need to run the following after using the setup steps for the repository mentioned in the AskUbuntu post above: ```shell -sudo apt-get install python3.8 python3.8-dev python3.8-venv python3-setuptools python3-pip python-pip +sudo apt-get install python3.10 python3.10-dev python3.10-venv python3-setuptools python3-pip python-pip ``` ::: diff --git a/docs/development/tech_docu/celery.md b/docs/development/tech_docu/celery.md index f92a0cb1..d03d7e96 100644 --- a/docs/development/tech_docu/celery.md +++ b/docs/development/tech_docu/celery.md @@ -81,7 +81,7 @@ Example implementation for a celery chain: ```python from allianceauth.services.hooks import get_extension_logger -from celery import shared_task, chain +from celery import shared_task, group logger = get_extension_logger(__name__) @@ -98,18 +98,23 @@ def long_runner(): task_signature = example.si() my_tasks.append(task_signature) - chain(my_tasks).delay() + group(my_tasks).delay() ``` In this example, we first add 10 example tasks that need to run one after the other to a list. This can be done by creating a so-called signature for a task. Those signatures are a kind of wrapper for tasks and can be used in various ways to compose work flow for tasks. The list of task signatures is then converted to a chain and started asynchronously. +:::{note} +In this example we import group to execute all tasks independently. +If you wish to run them in order (and stop if a tasks fail) you can use `celery.chain` instead of `celery.group` + +For more information on signature and work flows see the official documentation on [Canvas](https://docs.celeryproject.org/en/latest/userguide/canvas.html). +::: + :::{hint} In our example we use ``si()``, which is a shortcut for "immutable signatures" and prevents us from having to deal with result sharing between tasks. -For more information on signature and work flows see the official documentation on `Canvas `_. - In this context, please note that Alliance Auth currently only supports chaining because all other variants require a so-called results back, which Alliance Auth does not have. ::: @@ -123,6 +128,7 @@ Example setting: CELERYBEAT_SCHEDULE['structures_update_all_structures'] = { 'task': 'structures.tasks.update_all_structures', 'schedule': crontab(minute='*/30'), + 'apply_offset': True, } ``` @@ -130,6 +136,7 @@ CELERYBEAT_SCHEDULE['structures_update_all_structures'] = { - `'task'`: Name of your task (full path) - `'schedule'`: Schedule definition (see Celery documentation on [Periodic Tasks](https://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html) for details) +- `'apply_offset'`: Boolean, Apply a Delay unique to the install, in order to reduce impact on ESI. See [Apply Offset](#apply-offset) ## How can I use priorities for tasks? @@ -168,6 +175,94 @@ example.apply_async(priority=3) For defining a priority to tasks, you cannot use the convenient shortcut ``delay()``, but instead need to start a task with ``apply_async()``, which also requires you to pass parameters to your task function differently. Please check out the `official docs `_ for details. ::: +## Rate-Limiting and Smoothing of Task Execution + +Large numbers of installs running the same crontab (ie. `0 * * * *`) can all slam an external service at the same time. + +Consider Artificially smoothing out your tasks with a few methods + +### Apply Offset + +`allianceauth.crontab` contains a series of Offsets stored in the DB that are both static for an install, but random across all AA installs. + +This enables us to spread our load on ESI (or other external resources) across a greater window, making it unlikely that two installs will hit ESI at the same time. + +Tasks defined in local.py, can have `'apply_offset': True` added to their Task Definition + +```python +CELERYBEAT_SCHEDULE['taskname'] = { + 'task': 'module.tasks.task', + 'schedule': crontab(minute='*/30'), + 'apply_offset': True, +} +``` + +Tasks added to directly to Django Celery Beat Models (Using a Management Task etc) can pass their Cron Schedule through offset_cron(crontab) + +```{eval-rst} +.. automodule:: allianceauth.crontab.utils + :members: + :undoc-members: +``` + +```python +from django_celery_beat.models import CrontabSchedule, PeriodicTask +from celery.schedules import crontab + +schedule = CrontabSchedule.from_schedule(offset_cron(crontab(minute='0', hour='0'))) + +schedule, created = CrontabSchedule.objects.get_or_create( + minute=schedule.minute, + hour=schedule.hour, + day_of_month=schedule.day_of_month, + month_of_year=schedule.month_of_year, + day_of_week=schedule.day_of_week, + timezone=schedule.timezone, +) + +PeriodicTask.objects.update_or_create( + task='module.tasks.task', + defaults={ + 'crontab': schedule, + 'name': 'task name', + 'enabled': True + } +) +``` + +### Subset Tasks + +Slice your tasks needed up into more manageable chunks and run them more often. 1/10th of your tasks run 10x more often will return the same end result with less peak loads on external services and your task queue. + +### Celery ETA/Countdown + +Scatter your tasks across a larger window using + +This example will queue up tasks across the next 10 minutes, trickling them into your workers (and the external service) + +```python +for corp in EveCorporationInfo.objects.all().values('corporation_id'): + update_corp.apply_async(args=[corp['corporation_id']], priority=TASK_PRIORITY) + update_corp.apply_async( + args=[corp['corporation_id']], + priority=TASK_PRIORITY, + countdown=randint(1, 600)) +``` + +### Celery Rate Limits + +Celery Rate Limits come with a small catch, its _per worker_, you may have to be either very conservative or have these configurable by the end user if they varied their worker count. + + + +This example of 10 Tasks per Minute will result in ~100 tasks per minute at 10 Workers + +```python +@shared_task(rate_limit="10/m") +def update_charactercorporationhistory(character_id: int) -> None: + """Update CharacterCorporationHistory models from ESI""" +``` + ## What special features should I be aware of? Every Alliance Auth installation will come with a couple of special celery related features "out-of-the-box" that you can make use of in your apps. @@ -176,14 +271,14 @@ Every Alliance Auth installation will come with a couple of special celery relat Celery-once is a celery extension "that allows you to prevent multiple execution and queuing of celery tasks". What that means is that you can ensure that only one instance of a celery task runs at any given time. This can be useful, for example, if you do not want multiple instances of your task to talk to the same external service at the same time. -We use a custom backend for celery_once in Alliance Auth defined [here](https://gitlab.com/allianceauth/allianceauth/-/blob/master/allianceauth/services/tasks.py#L14) +We use a custom backend for celery_once in Alliance Auth defined [allianceauth.services.tasks.celery_once](https://gitlab.com/allianceauth/allianceauth/-/blob/master/allianceauth/services/tasks.py#L14) You can import it for use like so: ```python from allianceauth.services.tasks import QueueOnce ``` -An example of Alliance Auth's use within the `@sharedtask` decorator, can be seen [here](https://gitlab.com/allianceauth/allianceauth/-/blob/master/allianceauth/services/modules/discord/tasks.py#L62) in the discord module +An example of Alliance Auth's use within the `@sharedtask` decorator, can be seen in [allianceauth.services.modules.discord.tasks](https://gitlab.com/allianceauth/allianceauth/-/blob/master/allianceauth/services/modules/discord/tasks.py#L62) in the discord module You can use it like so: ```python @@ -192,6 +287,6 @@ You can use it like so: Please see the [official documentation](https://pypi.org/project/celery_once/) of celery-once for details. -### task priorities +### Task Priorities Alliance Auth is using task priorities to enable priority-based scheduling of task execution. Please see [How can I use priorities for tasks?](#how-can-i-use-priorities-for-tasks) for details. diff --git a/docs/features/apps/srp.md b/docs/features/apps/srp.md index e76ebf97..53940410 100644 --- a/docs/features/apps/srp.md +++ b/docs/features/apps/srp.md @@ -40,10 +40,10 @@ To use and administer this feature, users will require some of the following. +----------------------+------------------+------------------------------------------------------------+ | Permission | Admin Site | Auth Site | +======================+==================+============================================================+ -| auth.access_srp | None | Can create an SRP request from a fleet | +| srp.access_srp | None | Can create an SRP request from a fleet | +----------------------+------------------+------------------------------------------------------------+ | auth.srp_management | None | Can Approve and Deny SRP requests, Can create an SRP Fleet | +----------------------+------------------+------------------------------------------------------------+ -| srp.add_srpfleetmain | Can Add Model | Can Create an SRP Fleet | +| srp.add_srpfleetmain | None | Can Create an SRP Fleet | +----------------------+------------------+------------------------------------------------------------+ ``` diff --git a/docs/features/core/analytics.md b/docs/features/core/analytics.md index d610edb6..d04c47a3 100644 --- a/docs/features/core/analytics.md +++ b/docs/features/core/analytics.md @@ -27,6 +27,7 @@ Analytics comes preloaded with our Google Analytics token, and the three types o Our Daily Stats contain the following: - A phone-in task to identify a server's existence +- A phone-in task to identify if a server is Bare-Metal or Dockerized - A task to send the Number of User models - A task to send the Number of Token Models - A task to send the Number of Installed Apps diff --git a/docs/features/services/mumble-docker.md b/docs/features/services/mumble-docker.md index c09bf69e..8a8ec90b 100644 --- a/docs/features/services/mumble-docker.md +++ b/docs/features/services/mumble-docker.md @@ -25,6 +25,15 @@ INSTALLED_APPS += [ MUMBLE_URL = "mumble.example.com" ``` +Add the following lines to your `.env` file + +```bash +# Mumble +MUMBLE_SUPERUSER_PASSWORD = superuser_password +MUMBLE_ICESECRETWRITE = icesecretwrite +MUMBLE_SERVERPASSWORD = serverpassword +``` + Finally, restart your stack and run migrations ```shell diff --git a/docs/features/services/mumble.md b/docs/features/services/mumble.md index f9797abb..9e570ace 100644 --- a/docs/features/services/mumble.md +++ b/docs/features/services/mumble.md @@ -17,14 +17,14 @@ This guide is currently for Ubuntu only. The mumble server package can be retrieved from a repository, which we need to add: ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo apt-add-repository ppa:mumble/release ``` ::: -:::{group-tab} CentOS 7, Stream 8, Stream 9 +:::{group-tab} CentOS Stream 9, 10 sudo yum install epel-release sudo yum update @@ -35,14 +35,14 @@ sudo yum update Now three packages need to be installed: ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo apt-get install software-properties-common mumble-server libqt5sql5-mysql ``` ::: -:::{group-tab} CentOS 7, Stream 8, Stream 9 +:::{group-tab} CentOS Stream 9, 10 sudo yum install mumble-server diff --git a/docs/features/services/openfire-docker.md b/docs/features/services/openfire-docker.md index cc994f26..00e568d8 100644 --- a/docs/features/services/openfire-docker.md +++ b/docs/features/services/openfire-docker.md @@ -25,7 +25,7 @@ BROADCAST_SERVICE_NAME = "broadcast" Add the following lines to your `.env` file -```env +```bash # Openfire OPENFIRE_SECRET_KEY = superuser_password BROADCAST_USER_PASSWORD = icesecretwrite diff --git a/docs/features/services/openfire.md b/docs/features/services/openfire.md index 3897efa0..8ec86923 100644 --- a/docs/features/services/openfire.md +++ b/docs/features/services/openfire.md @@ -24,28 +24,14 @@ BROADCAST_SERVICE_NAME = "broadcast" Openfire require a Java 8 runtime environment. ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo apt-get install openjdk-11-jre ``` ::: -:::{group-tab} CentOS 7 - -```shell -sudo yum install java-11-openjdk java-11-openjdk-devel -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -sudo dnf install java-11-openjdk java-11-openjdk-devel -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell sudo dnf install java-11-openjdk java-11-openjdk-devel @@ -73,18 +59,10 @@ cd ~ Download and install the package, replacing the URL with the latest you got from the Openfire download page earlier ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204 +:::{group-tab} Ubuntu 2204, 2404 ::: -:::{group-tab} CentOS 7 -wget -dpkg -i openfire_4.7.2_all.deb -::: -:::{group-tab} CentOS Stream 8 -wget -yum install -y openfire-4.7.2-1.noarch.rpm -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 wget yum install -y openfire-4.7.2-1.noarch.rpm ::: diff --git a/docs/features/services/teamspeak3-docker.md b/docs/features/services/teamspeak3-docker.md index 909da783..b9a22d68 100644 --- a/docs/features/services/teamspeak3-docker.md +++ b/docs/features/services/teamspeak3-docker.md @@ -34,7 +34,7 @@ CELERYBEAT_SCHEDULE['run_ts3_group_update'] = { - Add the following lines to your `.env` file -```env +```bash # Temspeak TEAMSPEAK3_SERVERQUERY_USER = "serverquery" TEAMSPEAK3_SERVERQUERY_PASSWORD = "" diff --git a/docs/installation-containerized/docker.md b/docs/installation-containerized/docker.md index 63391cc8..2f40390f 100644 --- a/docs/installation-containerized/docker.md +++ b/docs/installation-containerized/docker.md @@ -17,7 +17,7 @@ If at any point `docker compose` does not work, but `docker-compose` does, you h 1. run `bash <(curl -s https://gitlab.com/allianceauth/allianceauth/-/raw/master/docker/scripts/download.sh)`. This will download all the files you need to install Alliance 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 --env-file=.env up -d` (NOTE: if this command hangs, follow the instructions on [How to Setup Entropy](https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged)) 1. run `docker compose exec allianceauth_gunicorn bash` to open up a terminal inside an auth container 1. run `auth migrate` 1. run `auth collectstatic` diff --git a/docs/installation-containerized/v4_docker_migration.md b/docs/installation-containerized/v4_docker_migration.md index 105981ad..68882a48 100644 --- a/docs/installation-containerized/v4_docker_migration.md +++ b/docs/installation-containerized/v4_docker_migration.md @@ -29,7 +29,7 @@ Replace your docker-compose.yml with the contents of to add the MariaDB repository to your host. +:::{group-tab} Ubuntu 2204 +Follow the instructions at to add the MariaDB repository to your host. ```shell sudo apt-get install mariadb-server mariadb-client libmysqlclient-dev ``` ::: -:::{group-tab} CentOS 7 -Follow the instructions at to add the MariaDB repository to your host. +:::{group-tab} Ubuntu 2404 +Follow the instructions at to add the MariaDB repository to your host. ```shell -sudo yum install MariaDB-server MariaDB-client MariaDB-devel MariaDB-shared +sudo apt-get install mariadb-server mariadb-client libmysqlclient-dev ``` ::: -:::{group-tab} CentOS Stream 8 -Follow the instructions at to add the MariaDB repository to your host. - -```shell -sudo dnf install mariadb mariadb-server mariadb-devel -``` - -::: -:::{group-tab} CentOS Stream 9 -Follow the instructions at to add the MariaDB repository to your host. +:::{group-tab} CentOS Stream 9, 10 +Follow the instructions at to add the MariaDB repository to your host. ```shell sudo dnf install mariadb mariadb-server mariadb-devel @@ -164,16 +113,10 @@ sudo dnf install mariadb mariadb-server mariadb-devel :::::{important} ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 If you don't plan on running the database on the same server as auth you still need to install the `libmysqlclient-dev` package ::: -:::{group-tab} CentOS 7 -If you don't plan on running the database on the same server as auth you still need to install the `mariadb-devel` package -::: -:::{group-tab} CentOS Stream 8 -If you don't plan on running the database on the same server as auth you still need to install the `mariadb-devel` package -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 If you don't plan on running the database on the same server as auth you still need to install the `mariadb-devel` package ::: :::: @@ -185,9 +128,10 @@ A few extra utilities are also required for the installation of packages. ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell +sudo apt-get install lsb-release curl gpg curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list @@ -195,32 +139,13 @@ sudo apt-get update sudo apt-get install unzip git redis-server curl libssl-dev libbz2-dev libffi-dev build-essential pkg-config ``` -::: -:::{group-tab} CentOS 7 - ```shell -sudo yum install gcc gcc-c++ unzip git redis curl bzip2-devel openssl-devel libffi-devel wget pkg-config -``` - -```shell -sudo systemctl enable redis.service -sudo systemctl start redis.service +sudo systemctl enable redis-server +sudo systemctl start redis-server ``` ::: -:::{group-tab} CentOS Stream 8 - -```shell -sudo dnf install gcc gcc-c++ unzip git redis curl bzip2-devel openssl-devel libffi-devel wget -``` - -```shell -sudo systemctl enable redis.service -sudo systemctl start redis.service -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell sudo dnf install gcc gcc-c++ unzip git redis curl bzip2-devel openssl-devel libffi-devel wget @@ -282,28 +207,15 @@ mysql_secure_installation For security and permissions, it's highly recommended you create a separate user to install auth under. Do not log in as this account. ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo adduser --disabled-login allianceserver --shell /bin/bash ``` ::: -:::{group-tab} CentOS 7 -```shell -sudo passwd -l allianceserver -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -sudo passwd -l allianceserver -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell sudo passwd -l allianceserver @@ -354,7 +266,7 @@ Your python3.x command/version may vary depending on your installed python versi ::: ```shell -python3.11 -m venv /home/allianceserver/venv/auth/ +python3.12 -m venv /home/allianceserver/venv/auth/ ``` :::{tip} @@ -497,44 +409,14 @@ exit ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo apt-get install supervisor ``` ::: -:::{group-tab} CentOS 7 - -```shell -sudo dnf install supervisor -``` - -```shell -sudo systemctl enable supervisord.service -``` - -```shell -sudo systemctl start supervisord.service -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -sudo dnf install supervisor -``` - -```shell -sudo systemctl enable supervisord.service -``` - -```shell -sudo systemctl start supervisord.service -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell sudo dnf install supervisor @@ -554,28 +436,14 @@ sudo systemctl start supervisord.service Once installed, it needs a configuration file to know which processes to watch. Your Alliance Auth project comes with a ready-to-use template which will ensure the Celery workers, Celery task scheduler and Gunicorn are all running. ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell ln -s /home/allianceserver/myauth/supervisor.conf /etc/supervisor/conf.d/myauth.conf ``` ::: -:::{group-tab} CentOS 7 - -```shell -sudo ln -s /home/allianceserver/myauth/supervisor.conf /etc/supervisord.d/myauth.ini -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -sudo ln -s /home/allianceserver/myauth/supervisor.conf /etc/supervisord.d/myauth.ini -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell sudo ln -s /home/allianceserver/myauth/supervisor.conf /etc/supervisord.d/myauth.ini diff --git a/docs/installation/apache.md b/docs/installation/apache.md index 1065eb50..9f7387b1 100644 --- a/docs/installation/apache.md +++ b/docs/installation/apache.md @@ -10,28 +10,14 @@ If you're using a small VPS to host services with very limited memory, consider ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell apt-get install apache2 ``` ::: -:::{group-tab} CentOS 7 - -```shell -yum install httpd -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -dnf install httpd -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell systemctl enable httpd @@ -41,8 +27,6 @@ systemctl start httpd ::: :::: -CentOS 7, Stream 8, Stream 9 - ## Configuration ### Permissions @@ -50,28 +34,14 @@ CentOS 7, Stream 8, Stream 9 Apache needs to be able to read the folder containing your auth project's static files. ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell chown -R www-data:www-data /var/www/myauth/static ``` ::: -:::{group-tab} CentOS 7 - -```shell -chown -R apache:apache /var/www/myauth/static -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -chown -R apache:apache /var/www/myauth/static -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell chown -R apache:apache /var/www/myauth/static @@ -87,7 +57,7 @@ Apache serves sites through defined virtual hosts. These are located in `/etc/ap A virtual host for auth needs only proxy requests to your WSGI server (Gunicorn if you followed the installation guide) and serve static files. Examples can be found below. Create your config in its own file e.g. `myauth.conf` ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 To proxy and modify headers a few mods need to be enabled. ```shell @@ -98,13 +68,7 @@ a2enmod headers Create a new config file for auth e.g. `/etc/apache2/sites-available/myauth.conf` and fill out the virtual host configuration. To enable your config use `a2ensite myauth.conf` and then reload apache with `service apache2 reload`. ::: -:::{group-tab} CentOS 7 -Place your virtual host configuration in the appropriate section within `/etc/httpd/conf.d/httpd.conf` and restart the httpd service with `systemctl restart httpd`. -::: -:::{group-tab} CentOS Stream 8 -Place your virtual host configuration in the appropriate section within `/etc/httpd/conf.d/httpd.conf` and restart the httpd service with `systemctl restart httpd`. -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 Place your virtual host configuration in the appropriate section within `/etc/httpd/conf.d/httpd.conf` and restart the httpd service with `systemctl restart httpd`. ::: :::: @@ -122,7 +86,7 @@ a2dissite 000-default.conf ## Sample Config File -```ini +```apacheconf ServerName auth.example.com diff --git a/docs/installation/gunicorn.md b/docs/installation/gunicorn.md index ec911f2b..5e37450a 100644 --- a/docs/installation/gunicorn.md +++ b/docs/installation/gunicorn.md @@ -69,7 +69,7 @@ Whatever you decide to use, remember it because we'll need it when configuring y ##### Number of workers -By default, Gunicorn will spawn only one worker. The number you set this to will depend on your own server environment, how many visitors you have etc. Gunicorn suggests `(2 x $num_cores) + 1` for the number of workers. So, for example, if you have 2 cores, you want 2 x 2 + 1 = 5 workers. See [here](https://docs.gunicorn.org/en/stable/design.html#how-many-workers) for the official discussion on this topic. +By default, Gunicorn will spawn only one worker. The number you set this to will depend on your own server environment, how many visitors you have etc. Gunicorn suggests `(2 x $num_cores) + 1` for the number of workers. So, for example, if you have 2 cores, you want 2 x 2 + 1 = 5 workers. See [How Many Workers](https://docs.gunicorn.org/en/stable/design.html#how-many-workers) for the official discussion on this topic. Change it by adding `--workers=5` to the command. diff --git a/docs/installation/nginx.md b/docs/installation/nginx.md index ba6ea3c7..0299c4f1 100644 --- a/docs/installation/nginx.md +++ b/docs/installation/nginx.md @@ -42,28 +42,14 @@ You will need to have [Gunicorn](gunicorn.md) or some other WSGI server setup fo ## Install ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo apt-get install nginx ``` ::: -:::{group-tab} CentOS 7 - -```shell -sudo yum install nginx -``` - -::: -:::{group-tab} CentOS Stream 8 - -```shell -sudo dnf install nginx -``` - -::: -:::{group-tab} CentOS Stream 9 +:::{group-tab} CentOS Stream 9, 10 ```shell sudo dnf install nginx diff --git a/docs/installation/upgrade_python.md b/docs/installation/upgrade_python.md index 4449c574..3bdcd16b 100644 --- a/docs/installation/upgrade_python.md +++ b/docs/installation/upgrade_python.md @@ -14,62 +14,29 @@ To run AA with a newer Python 3 version than your system's default, you need to To install other Python versions than those included with your distribution, you need to add a new installation repository. Then you can install the specific Python 3 to your system. -:::{note} -Ubuntu 2204 ships with Python 3.10 already -::: - -Centos Stream 8/9: -:::{note} -A Python 3.9 Package is available for Stream 8 and 9. You _may_ use this instead of building your own package. But our documentation will assume Python3.11, and you may need to substitute as necessary -sudo dnf install python39 python39-devel -::: - ::::{tabs} -:::{group-tab} Ubuntu 2004, 2204, 2404 +:::{group-tab} Ubuntu 2204, 2404 ```shell sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update -sudo apt-get install python3.11 python3.11-dev python3.11-venv +sudo apt-get install python3.12 python3.12-dev python3.12-venv ``` ::: -:::{group-tab} CentOS 7 +:::{group-tab} Ubuntu 2404 -```bash -cd ~ -sudo yum install gcc openssl-devel bzip2-devel libffi-devel wget -wget https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz -tar xvf Python-3.11.7.tgz -cd Python-3.11.7/ -./configure --enable-optimizations --enable-shared -sudo make altinstall +```shell +sudo apt-get update +sudo apt-get install python3.12 python3.12-dev python3.12-venv ``` ::: -:::{group-tab} CentOS Stream 8 +:::{group-tab} CentOS Stream 9, 10 ```bash -cd ~ -sudo yum install gcc openssl-devel bzip2-devel libffi-devel wget -wget https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz -tar xvf Python-3.11.7.tgz -cd Python-3.11.7/ -./configure --enable-optimizations --enable-shared -sudo make altinstall -``` - -::: -:::{group-tab} CentOS Stream 9 - -```bash -cd ~ -sudo yum install gcc openssl-devel bzip2-devel libffi-devel wget -wget https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz -tar xvf Python-3.11.7.tgz -cd Python-3.11.7/ -./configure --enable-optimizations --enable-shared -sudo make altinstall +sudo dnf update +sudo dnf install python3.12 python3.12-dev python3.12-venv ``` ::: @@ -201,10 +168,10 @@ mv /home/allianceserver/venv/auth /home/allianceserver/venv/auth_old ## Create your new venv -Now let's create our new venv with Python 3.11 and activate it: +Now let's create our new venv with Python 3.12 and activate it: ```shell -python3.11 -m venv /home/allianceserver/venv/auth +python3.12 -m venv /home/allianceserver/venv/auth ``` ```shell diff --git a/docs/maintenance/tuning/index.md b/docs/maintenance/tuning/index.md index 56cef0f7..82ed67f1 100644 --- a/docs/maintenance/tuning/index.md +++ b/docs/maintenance/tuning/index.md @@ -9,7 +9,7 @@ Tuning usually has benefits and costs and should only be performed by experience :::{toctree} :maxdepth: 1 -gunicorn +web celery redis python diff --git a/docs/maintenance/tuning/web.md b/docs/maintenance/tuning/web.md index b4241bbf..026623b9 100644 --- a/docs/maintenance/tuning/web.md +++ b/docs/maintenance/tuning/web.md @@ -6,7 +6,7 @@ The default installation will have 3 workers configured for Gunicorn. This will be fine on most systems, but if your system as more than one core than you might want to increase the number of workers to get better response times. Note that more workers will also need more RAM though. -The number you set this to will depend on your own server environment, how many visitors you have etc. Gunicorn suggests `(2 x $num_cores) + 1` for the number of workers. So for example, if you have 2 cores, you want 2 x 2 + 1 = 5 workers. See [here](https://docs.gunicorn.org/en/stable/design.html#how-many-workers) for the official discussion on this topic. +The number you set this to will depend on your own server environment, how many visitors you have etc. Gunicorn suggests `(2 x $num_cores) + 1` for the number of workers. So for example, if you have 2 cores, you want 2 x 2 + 1 = 5 workers. See [How Many Workers](https://docs.gunicorn.org/en/stable/design.html#how-many-workers) for the official discussion on this topic. ::::{tabs} :::{group-tab} Ubuntu 2204, 2404 @@ -99,7 +99,7 @@ Replace the nginx service in your docker-compose as follows Modify your nginx.conf as follows -```conf +```nginx load_module modules/ngx_http_brotli_static_module.so; load_module modules/ngx_http_brotli_filter_module.so; ... diff --git a/manage.py b/manage.py index 6afed5b2..69124cd4 100644 --- a/manage.py +++ b/manage.py @@ -1,22 +1,20 @@ #!/usr/bin/env python -import os import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "allianceauth.project_template.project_name.settings.base") try: from django.core.management import execute_from_command_line - except ImportError: + except ImportError as err: # The above import may fail for some other reason. Ensure that the # issue is really that Django is missing to avoid masking other # exceptions on Python 2. try: - import django + import django # noqa: F401 except ImportError: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" - ) + ) from err raise execute_from_command_line(sys.argv) diff --git a/pyproject.toml b/pyproject.toml index 35edbe64..d5214b20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] build-backend = "flit_core.buildapi" requires = [ - "flit-core<4,>=3.2", + "flit-core>=3.2,<4", ] [project] @@ -15,22 +15,21 @@ license = { file = "LICENSE" } authors = [ { name = "Alliance Auth", email = "adarnof@gmail.com" }, ] -requires-python = ">=3.8" +requires-python = ">=3.10" classifiers = [ "Environment :: Web Environment", "Framework :: Celery", "Framework :: Django", - "Framework :: Django :: 4.2", + "Framework :: Django :: 5.2", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", ] @@ -41,17 +40,18 @@ dynamic = [ dependencies = [ "bcrypt", "beautifulsoup4", - "celery<6,>=5.2", + "celery>=5.5,<6", "celery-once>=3.0.1", - "django<5,>=4.2", + "django>=5.2,<6", "django-bootstrap-form", "django-bootstrap5>=23.3", - "django-celery-beat>=2.3", - "django-esi>=5", - "django-redis>=5.2", - "django-registration<3.4,>=3.3", + "django-celery-beat>=2.8", + "django-esi>=7.0.0b1", + "django-redis>=5.4", + "django-registration>=5.2,<6", "django-solo", "django-sortedm2m", + "django-sri", "dnspython", "mysqlclient>=2.1", "openfire-restapi", @@ -59,17 +59,17 @@ dependencies = [ "passlib", "pydiscourse", "python-slugify>=1.2", - "redis>=4", + "redis>=5", "requests>=2.9.1", "requests-oauthlib", "semantic-version", - "slixmpp", + "slixmpp<1.9", ] optional-dependencies.docs = [ - "myst-parser", - "sphinx", + "myst-parser>=4", + "sphinx>=8", "sphinx-copybutton", - "sphinx-rtd-theme<3,>=2", + "sphinx-rtd-theme>=3,<4", "sphinx-tabs", "sphinxcontrib-django", ] @@ -101,7 +101,37 @@ sections = [ known_esi = [ "esi", ] -known_django = [ +known_django = [ #Lump relatively "django", + "django_redis", + "django_registration", ] skip_gitignore = true + +[tool.flake8] +exclude = [ + ".git", + "*migrations*", + ".tox", + "dist", + "htmlcov", +] +max-line-length = 119 +select = [ + "C", # pylint convention + "E", # pycodestyle error + "F", # pyflakes (flake8 base) + "W", # pycodestyle Warning + "B", # flake8-bugbear +] +ignore = [ + "E501", # Line too long, WIP across repo. +] +per-file-ignores = [ + "docker/conf/local.py:F405", +] + +[tool.djlint] +max_attribute_length = 119 +max_line_length = 119 +max_blank_lines = 1 diff --git a/runtests.py b/runtests.py index 35d797b7..6e67ae50 100644 --- a/runtests.py +++ b/runtests.py @@ -1,21 +1,23 @@ #!/usr/bin/env python -import os +""" +Django's command-line utility for administrative tasks. +Modified to insert Tests as the first argument +""" import sys -if __name__ == "__main__": + +def main() -> None: + """Run tests""" try: from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise - execute_from_command_line(sys.argv.insert(1, 'test')) + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv.insert(1, "test")) + + +if __name__ == '__main__': + main() diff --git a/tests/celery.py b/tests/celery.py index dfbc2779..ed1c7996 100644 --- a/tests/celery.py +++ b/tests/celery.py @@ -5,7 +5,7 @@ from celery import Celery # set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings') -from django.conf import settings # noqa +from django.conf import settings app = Celery('devauth') diff --git a/tests/settings_all.py b/tests/settings_all.py index 5bddee70..dd3e99ae 100644 --- a/tests/settings_all.py +++ b/tests/settings_all.py @@ -4,12 +4,12 @@ Alliance Auth Test Suite Django settings 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 * # noqa:F403 # Celery configuration CELERY_ALWAYS_EAGER = True # Forces celery to run locally for testing -INSTALLED_APPS += [ +INSTALLED_APPS += [ # noqa:F405 "allianceauth.eveonline.autogroups", "allianceauth.hrapplications", "allianceauth.timerboard", @@ -47,6 +47,7 @@ CACHES = { ESI_SSO_CLIENT_ID = "dummy" ESI_SSO_CLIENT_SECRET = "dummy" ESI_SSO_CALLBACK_URL = f"{SITE_URL}/sso/callback" +ESI_USER_CONTACT_EMAIL = "dummy@example.net" ######################## # XenForo Configuration diff --git a/tests/settings_core.py b/tests/settings_core.py index 6403cfa8..4cf55a45 100644 --- a/tests/settings_core.py +++ b/tests/settings_core.py @@ -4,7 +4,7 @@ Alliance Auth Test Suite Django settings Testing core packages only """ -from allianceauth.project_template.project_name.settings.base import * +from allianceauth.project_template.project_name.settings.base import * # noqa:F403 # Celery configuration CELERY_ALWAYS_EAGER = True # Forces celery to run locally for testing @@ -37,3 +37,4 @@ ALLIANCEAUTH_DASHBOARD_TASK_STATISTICS_DISABLED = True # disable for tests ESI_SSO_CLIENT_ID = "dummy" ESI_SSO_CLIENT_SECRET = "dummy" ESI_SSO_CALLBACK_URL = f"{SITE_URL}/sso/callback" +ESI_USER_CONTACT_EMAIL = "dummy@example.net" diff --git a/tests/urls.py b/tests/urls.py index ba840b33..d271ad7c 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -1,5 +1,7 @@ -import allianceauth.urls from django.urls import path + +import allianceauth.urls + from . import views urlpatterns = allianceauth.urls.urlpatterns diff --git a/tox.ini b/tox.ini index 6c90339e..ffb5638d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,31 +1,33 @@ [tox] -isolated_build = true -skipsdist = true +requires = + tox>=4.2 +env_list = + docs + py{313, 312, 311, 310}-{all, core} +no_package = true usedevelop = true -envlist = py{38,39,310,311,312}-{all,core}, docs [testenv] -setenv = - all: DJANGO_SETTINGS_MODULE = tests.settings_all - core: DJANGO_SETTINGS_MODULE = tests.settings_core -basepython = - py38: python3.8 - py39: python3.9 +base_python = py310: python3.10 py311: python3.11 py312: python3.12 -deps= + py313: python3.13 +deps = coverage -install_command = pip install -e ".[test]" -U {opts} {packages} +set_env = + all: DJANGO_SETTINGS_MODULE = tests.settings_all + core: DJANGO_SETTINGS_MODULE = tests.settings_core commands = all: coverage run runtests.py -v 2 --debug-mode core: coverage run runtests.py allianceauth.authentication.tests.test_app_settings -v 2 --debug-mode all: coverage report -m all: coverage xml +install_command = pip install -e ".[test]" -U {opts} {packages} [testenv:docs] description = invoke sphinx-build to build the HTML docs -basepython = python3.11 -install_command = pip install -e ".[docs]" -U {opts} {packages} +base_python = python3.12 commands = sphinx-build -T -E -b html -d "{toxworkdir}/docs_doctree" -D language=en docs "{toxworkdir}/docs_out" {posargs} +install_command = pip install -e ".[docs]" -U {opts} {packages}