mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-04 06:06:19 +01:00
Compare commits
84 Commits
v4.10.0
...
4ed4c36f04
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ed4c36f04 | ||
|
|
55446639c0 | ||
|
|
c703584110 | ||
|
|
7f22a744c6 | ||
|
|
1e0b64d1e0 | ||
|
|
17b0b802b3 | ||
|
|
1ef7a35d67 | ||
|
|
654ebb031f | ||
|
|
77ce2311c9 | ||
|
|
843c3ccf9a | ||
|
|
c19f7e6e79 | ||
|
|
df6a25067d | ||
|
|
ee132b6e60 | ||
|
|
78988fee04 | ||
|
|
ed3cd08d40 | ||
|
|
543e4169e4 | ||
|
|
d696777ba5 | ||
|
|
5caa9c8012 | ||
|
|
5cff1df48d | ||
|
|
2a3d775a9b | ||
|
|
648733d537 | ||
|
|
70caf7606c | ||
|
|
99c65d2a5d | ||
|
|
55125a8ff3 | ||
|
|
2fd0fcdbcb | ||
|
|
2fe7bcf20e | ||
|
|
0c0f2fd5ba | ||
|
|
b32f4ab243 | ||
|
|
70f314e578 | ||
|
|
bc1b1c3a8f | ||
|
|
453512db64 | ||
|
|
4047159fd1 | ||
|
|
f5ddbb8004 | ||
|
|
c45d5d7325 | ||
|
|
c679ec0646 | ||
|
|
69a51bb08a | ||
|
|
442c893c39 | ||
|
|
33df15f882 | ||
|
|
8c09a8c4e5 | ||
|
|
5d56f0a66c | ||
|
|
0fbdbf3a8d | ||
|
|
5291bf6896 | ||
|
|
bd6c0fede5 | ||
|
|
23fe1703c3 | ||
|
|
9139b0da56 | ||
|
|
80145b313f | ||
|
|
e96bdd12f9 | ||
|
|
513b7b88f4 | ||
|
|
5e3fc5c1cb | ||
|
|
d3069db046 | ||
|
|
24863eaf9e | ||
|
|
d138bd61c5 | ||
|
|
bff20ddd5d | ||
|
|
493e694410 | ||
|
|
8c41d9da58 | ||
|
|
9e0358a3ce | ||
|
|
19bb6856a2 | ||
|
|
9751315b97 | ||
|
|
99df847e1f | ||
|
|
60ba82c653 | ||
|
|
bd7f13358a | ||
|
|
4edd0fab9e | ||
|
|
fced909b4d | ||
|
|
e2b96da460 | ||
|
|
ecd27b823e | ||
|
|
dae4afddb1 | ||
|
|
d507663316 | ||
|
|
67081ab465 | ||
|
|
bce90344f8 | ||
|
|
29c6fa292a | ||
|
|
295361a541 | ||
|
|
92a1bd40a3 | ||
|
|
b8bbd0d1c1 | ||
|
|
b7a6c9379a | ||
|
|
e5f3a67919 | ||
|
|
58cc4b84dd | ||
|
|
331dc7d4d0 | ||
|
|
01991b78c9 | ||
|
|
466113e6cb | ||
|
|
b1f5aad9f9 | ||
|
|
464016ac05 | ||
|
|
cc76f09a6e | ||
|
|
a7f6a74211 | ||
|
|
d67ab108a0 |
@@ -25,7 +25,7 @@ before_script:
|
||||
pre-commit-check:
|
||||
<<: *only-default
|
||||
stage: pre-commit
|
||||
image: python:3.11-bookworm
|
||||
image: python:3.11-trixie
|
||||
# variables:
|
||||
# PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit
|
||||
# cache:
|
||||
@@ -65,7 +65,7 @@ test-3.8-core:
|
||||
|
||||
test-3.9-core:
|
||||
<<: *only-default
|
||||
image: python:3.9-bookworm
|
||||
image: python:3.9-trixie
|
||||
script:
|
||||
- tox -e py39-core
|
||||
artifacts:
|
||||
@@ -77,7 +77,7 @@ test-3.9-core:
|
||||
|
||||
test-3.10-core:
|
||||
<<: *only-default
|
||||
image: python:3.10-bookworm
|
||||
image: python:3.10-trixie
|
||||
script:
|
||||
- tox -e py310-core
|
||||
artifacts:
|
||||
@@ -89,7 +89,7 @@ test-3.10-core:
|
||||
|
||||
test-3.11-core:
|
||||
<<: *only-default
|
||||
image: python:3.11-bookworm
|
||||
image: python:3.11-trixie
|
||||
script:
|
||||
- tox -e py311-core
|
||||
artifacts:
|
||||
@@ -101,7 +101,7 @@ test-3.11-core:
|
||||
|
||||
test-3.12-core:
|
||||
<<: *only-default
|
||||
image: python:3.12-bookworm
|
||||
image: python:3.12-trixie
|
||||
script:
|
||||
- tox -e py312-core
|
||||
artifacts:
|
||||
@@ -111,6 +111,18 @@ test-3.12-core:
|
||||
coverage_format: cobertura
|
||||
path: coverage.xml
|
||||
|
||||
test-3.13-core:
|
||||
<<: *only-default
|
||||
image: python:3.13-trixie
|
||||
script:
|
||||
- tox -e py313-core
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
coverage_report:
|
||||
coverage_format: cobertura
|
||||
path: coverage.xml
|
||||
|
||||
test-3.8-all:
|
||||
<<: *only-default
|
||||
image: python:3.8-bookworm
|
||||
@@ -125,7 +137,7 @@ test-3.8-all:
|
||||
|
||||
test-3.9-all:
|
||||
<<: *only-default
|
||||
image: python:3.9-bookworm
|
||||
image: python:3.9-trixie
|
||||
script:
|
||||
- tox -e py39-all
|
||||
artifacts:
|
||||
@@ -137,7 +149,7 @@ test-3.9-all:
|
||||
|
||||
test-3.10-all:
|
||||
<<: *only-default
|
||||
image: python:3.10-bookworm
|
||||
image: python:3.10-trixie
|
||||
script:
|
||||
- tox -e py310-all
|
||||
artifacts:
|
||||
@@ -149,7 +161,7 @@ test-3.10-all:
|
||||
|
||||
test-3.11-all:
|
||||
<<: *only-default
|
||||
image: python:3.11-bookworm
|
||||
image: python:3.11-trixie
|
||||
script:
|
||||
- tox -e py311-all
|
||||
artifacts:
|
||||
@@ -162,7 +174,7 @@ test-3.11-all:
|
||||
|
||||
test-3.12-all:
|
||||
<<: *only-default
|
||||
image: python:3.12-bookworm
|
||||
image: python:3.12-trixie
|
||||
script:
|
||||
- tox -e py312-all
|
||||
artifacts:
|
||||
@@ -172,9 +184,21 @@ test-3.12-all:
|
||||
coverage_format: cobertura
|
||||
path: coverage.xml
|
||||
|
||||
test-3.13-all:
|
||||
<<: *only-default
|
||||
image: python:3.13-trixie
|
||||
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.11-trixie
|
||||
|
||||
before_script:
|
||||
- python -m pip install --upgrade pip
|
||||
@@ -193,13 +217,13 @@ build-test:
|
||||
|
||||
test-docs:
|
||||
<<: *only-default
|
||||
image: python:3.11-bookworm
|
||||
image: python:3.11-trixie
|
||||
script:
|
||||
- tox -e docs
|
||||
|
||||
deploy_production:
|
||||
stage: deploy
|
||||
image: python:3.11-bookworm
|
||||
image: python:3.11-trixie
|
||||
|
||||
before_script:
|
||||
- python -m pip install --upgrade pip
|
||||
|
||||
@@ -25,19 +25,19 @@ exclude: |
|
||||
repos:
|
||||
# Code Upgrades
|
||||
- repo: https://github.com/asottile/pyupgrade
|
||||
rev: v3.20.0
|
||||
rev: v3.21.2
|
||||
hooks:
|
||||
- id: pyupgrade
|
||||
args: [--py38-plus]
|
||||
- repo: https://github.com/adamchainz/django-upgrade
|
||||
rev: 1.25.0
|
||||
rev: 1.29.1
|
||||
hooks:
|
||||
- id: django-upgrade
|
||||
args: [--target-version=4.2]
|
||||
|
||||
# Formatting
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
# Identify invalid files
|
||||
- id: check-ast
|
||||
@@ -55,8 +55,6 @@ repos:
|
||||
# - id: check-docstring-first
|
||||
- id: debug-statements
|
||||
# - id: requirements-txt-fixer
|
||||
- id: fix-encoding-pragma
|
||||
args: [--remove]
|
||||
- id: fix-byte-order-marker
|
||||
# General quality checks
|
||||
- id: mixed-line-ending
|
||||
@@ -66,11 +64,11 @@ repos:
|
||||
- id: check-executables-have-shebangs
|
||||
- id: end-of-file-fixer
|
||||
- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
|
||||
rev: 3.2.1
|
||||
rev: 3.6.0
|
||||
hooks:
|
||||
- id: editorconfig-checker
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.45.0
|
||||
rev: v0.47.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
language: node
|
||||
@@ -78,7 +76,7 @@ repos:
|
||||
- --disable=MD013
|
||||
# Infrastructure
|
||||
- repo: https://github.com/tox-dev/pyproject-fmt
|
||||
rev: v2.6.0
|
||||
rev: v2.11.1
|
||||
hooks:
|
||||
- id: pyproject-fmt
|
||||
name: pyproject.toml formatter
|
||||
@@ -86,7 +84,7 @@ repos:
|
||||
args:
|
||||
- --indent=4
|
||||
additional_dependencies:
|
||||
- tox==4.24.1 # https://github.com/tox-dev/tox/releases/latest
|
||||
- tox==4.32.0 # https://github.com/tox-dev/tox/releases/latest
|
||||
- repo: https://github.com/abravalheri/validate-pyproject
|
||||
rev: v0.24.1
|
||||
hooks:
|
||||
|
||||
1
CODEOWNERS
Normal file
1
CODEOWNERS
Normal file
@@ -0,0 +1 @@
|
||||
* @allianceauth
|
||||
@@ -63,7 +63,6 @@ Here is an example of the Alliance Auth web site with a mixture of Services, App
|
||||
- [Aaron Kable](https://gitlab.com/aaronkable/)
|
||||
- [Ariel Rin](https://gitlab.com/soratidus999/)
|
||||
- [Col Crunch](https://gitlab.com/colcrunch/)
|
||||
- [Erik Kalkoken](https://gitlab.com/ErikKalkoken/)
|
||||
- [Rounon Dax](https://gitlab.com/ppfeufer)
|
||||
- [snipereagle1](https://gitlab.com/mckernanin)
|
||||
|
||||
@@ -71,6 +70,7 @@ Here is an example of the Alliance Auth web site with a mixture of Services, App
|
||||
|
||||
- [Adarnof](https://gitlab.com/adarnof/)
|
||||
- [Basraah](https://gitlab.com/basraah/)
|
||||
- [Erik Kalkoken](https://gitlab.com/ErikKalkoken/)
|
||||
|
||||
### Beta Testers / Bug Fixers
|
||||
|
||||
|
||||
@@ -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.10.0'
|
||||
__version__ = '4.12.0'
|
||||
__title__ = 'Alliance Auth'
|
||||
__title_useragent__ = 'AllianceAuth'
|
||||
__url__ = 'https://gitlab.com/allianceauth/allianceauth'
|
||||
|
||||
@@ -52,4 +52,10 @@ class UserSettingsMiddleware(MiddlewareMixin):
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
|
||||
# Minimize Menu
|
||||
try:
|
||||
request.session["MINIMIZE_SIDEBAR"] = request.user.profile.minimize_sidebar
|
||||
except Exception as e:
|
||||
pass # We don't care that an anonymous user has no profile (not logged in)
|
||||
|
||||
return response
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 4.2.25 on 2025-10-14 22:02
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("authentication", "0024_alter_userprofile_language"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="userprofile",
|
||||
name="minimize_sidebar",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
help_text="Keep the sidebar menu minimized",
|
||||
verbose_name="Minimize Sidebar Menu",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -97,7 +97,8 @@ class UserProfile(models.Model):
|
||||
on_delete=models.SET_DEFAULT,
|
||||
default=get_guest_state_pk)
|
||||
language = models.CharField(
|
||||
_("Language"), max_length=10,
|
||||
_("Language"),
|
||||
max_length=10,
|
||||
choices=Language.choices,
|
||||
blank=True,
|
||||
default='')
|
||||
@@ -112,6 +113,12 @@ class UserProfile(models.Model):
|
||||
null=True,
|
||||
help_text="Bootstrap 5 Themes from https://bootswatch.com/ or Community Apps"
|
||||
)
|
||||
minimize_sidebar = models.BooleanField(
|
||||
_("Minimize Sidebar Menu"),
|
||||
default=False,
|
||||
help_text=_("Keep the sidebar menu minimized")
|
||||
)
|
||||
|
||||
|
||||
def assign_state(self, state=None, commit=True):
|
||||
if not state:
|
||||
|
||||
@@ -27,7 +27,7 @@ def dashboard_results(hours: int) -> _TaskCounts:
|
||||
my_earliest = events.first_event(earliest=earliest)
|
||||
return [my_earliest] if my_earliest else []
|
||||
|
||||
earliest = dt.datetime.utcnow() - dt.timedelta(hours=hours)
|
||||
earliest = dt.datetime.now(dt.timezone.utc) - dt.timedelta(hours=hours)
|
||||
earliest_events = []
|
||||
succeeded_count = succeeded_tasks.count(earliest=earliest)
|
||||
earliest_events += earliest_if_exists(succeeded_tasks, earliest)
|
||||
|
||||
@@ -42,7 +42,7 @@ class EventSeries:
|
||||
- event_time: timestamp of event. Will use current time if not specified.
|
||||
"""
|
||||
if not event_time:
|
||||
event_time = dt.datetime.utcnow()
|
||||
event_time = dt.datetime.now(dt.timezone.utc)
|
||||
my_id = self._redis.incr(self._key_counter)
|
||||
self._redis.zadd(self._key_sorted_set, {my_id: event_time.timestamp()})
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@ class TestUserSettingsMiddlewareLoginFlow(TestCase):
|
||||
self.request.LANGUAGE_CODE = 'en'
|
||||
self.request.user.profile.language = 'de'
|
||||
self.request.user.profile.night_mode = True
|
||||
self.request.user.profile.minimize_sidebar = False
|
||||
self.request.user.is_anonymous = False
|
||||
self.response = Mock()
|
||||
self.response.content = 'hello world'
|
||||
@@ -173,3 +174,26 @@ class TestUserSettingsMiddlewareLoginFlow(TestCase):
|
||||
self.response
|
||||
)
|
||||
self.assertEqual(self.request.session["NIGHT_MODE"], True)
|
||||
|
||||
def test_middleware_set_mimimize_sidebar(self):
|
||||
"""
|
||||
tests the middleware will always set minimize_sidebar to False (default)
|
||||
"""
|
||||
|
||||
response = self.middleware.process_response(
|
||||
self.request,
|
||||
self.response
|
||||
)
|
||||
self.assertEqual(self.request.session["MINIMIZE_SIDEBAR"], False)
|
||||
|
||||
def test_middleware_minimize_sidebar_when_set(self):
|
||||
"""
|
||||
tests the middleware will set mimimize_sidebar to True from DB
|
||||
"""
|
||||
|
||||
self.request.user.profile.minimize_sidebar = True
|
||||
response = self.middleware.process_response(
|
||||
self.request,
|
||||
self.response
|
||||
)
|
||||
self.assertEqual(self.request.session["MINIMIZE_SIDEBAR"], True)
|
||||
|
||||
@@ -13,6 +13,7 @@ class StartProject(BaseStartProject):
|
||||
parser.add_argument('--celery', help='The path to the celery executable.')
|
||||
parser.add_argument('--gunicorn', help='The path to the gunicorn executable.')
|
||||
parser.add_argument('--memmon', help='The path to the memmon executable.')
|
||||
parser.add_argument('--venv_directory', help='The path to the virtual environment directory.')
|
||||
|
||||
|
||||
def create_project(parser, options, args):
|
||||
@@ -27,7 +28,7 @@ def create_project(parser, options, args):
|
||||
allianceauth_path = os.path.dirname(allianceauth.__file__)
|
||||
template_path = os.path.join(allianceauth_path, 'project_template')
|
||||
|
||||
# Determine locations of commands to render supervisor cond
|
||||
# Determine locations of commands to render supervisor configuration
|
||||
command_options = {
|
||||
'template': template_path,
|
||||
'python': shutil.which('python'),
|
||||
@@ -35,6 +36,7 @@ def create_project(parser, options, args):
|
||||
'celery': shutil.which('celery'),
|
||||
'memmon': shutil.which('memmon'),
|
||||
'extensions': ['py', 'conf', 'json'],
|
||||
'venv_directory': os.getenv('VIRTUAL_ENV'),
|
||||
}
|
||||
|
||||
# Strip 'start' out of the arguments, leaving project name (and optionally destination dir)
|
||||
|
||||
@@ -727,7 +727,8 @@ class TestEveSwaggerProvider(TestCase):
|
||||
my_provider = EveSwaggerProvider()
|
||||
my_client = my_provider.client
|
||||
operation = my_client.Universe.get_universe_factions()
|
||||
self.assertEqual(
|
||||
operation.future.request.headers['User-Agent'],
|
||||
f'AllianceAuth/{aa_version} (dummy@example.net; +{aa_url}) Django-ESI/{esi_version} (+{esi_url})'
|
||||
)
|
||||
expected_variants = {
|
||||
f'AllianceAuth/{aa_version} (dummy@example.net; +{aa_url}) DjangoEsi/{esi_version} (+{esi_url})', # Django-ESI 8.0.0
|
||||
f'AllianceAuth/{aa_version} (dummy@example.net; +{aa_url}) Django-ESI/{esi_version} (+{esi_url})' # Django-ESI 7.x, Py38 Py39
|
||||
}
|
||||
self.assertIn(operation.future.request.headers['User-Agent'], expected_variants)
|
||||
|
||||
@@ -320,8 +320,8 @@ def click_fatlink_view(request, token, fat_hash=None):
|
||||
messages.warning(
|
||||
request,
|
||||
_(
|
||||
f"Cannot register the fleet participation for {character.character_name}. The character needs to be online."
|
||||
),
|
||||
"Cannot register the fleet participation for {character_name}. The character needs to be online."
|
||||
).format(character_name=character.character_name)
|
||||
)
|
||||
|
||||
return redirect('fatlink:view')
|
||||
|
||||
219
allianceauth/framework/datatables.py
Normal file
219
allianceauth/framework/datatables.py
Normal file
@@ -0,0 +1,219 @@
|
||||
from collections import defaultdict
|
||||
import re
|
||||
from typing import List
|
||||
|
||||
from django.db.models import Model, Q
|
||||
from django.http import HttpRequest, JsonResponse
|
||||
from django.template import Context, Template
|
||||
from django.template.loader import render_to_string
|
||||
from django.views import View
|
||||
|
||||
from allianceauth.services.hooks import get_extension_logger
|
||||
|
||||
|
||||
logger = get_extension_logger(__name__)
|
||||
|
||||
|
||||
class nested_param_dict(dict):
|
||||
"""
|
||||
Helper to create infinite depth default dicts for setting from params
|
||||
"""
|
||||
def __setitem__(self, item, value):
|
||||
if "." in item:
|
||||
head, path = item.split(".", 1)
|
||||
try:
|
||||
head = int(head)
|
||||
except ValueError:
|
||||
pass
|
||||
obj = self.setdefault(head, nested_param_dict())
|
||||
obj[path] = value
|
||||
else:
|
||||
super().__setitem__(item, value)
|
||||
|
||||
|
||||
def defaultdict_to_dict(d):
|
||||
"""
|
||||
Helper to convert default dict back to dict
|
||||
"""
|
||||
if isinstance(d, defaultdict):
|
||||
d = {k: defaultdict_to_dict(v) for k, v in d.items()}
|
||||
return d
|
||||
|
||||
|
||||
class DataTablesView(View):
|
||||
|
||||
model: Model = None
|
||||
columns: List[tuple] = []
|
||||
|
||||
def get_model_qs(self, request: HttpRequest, *args, **kwargs):
|
||||
return self.model.objects
|
||||
|
||||
def filter_qs(self, table_conf: dict):
|
||||
# Search
|
||||
filter_qs = Q()
|
||||
for id, c in table_conf["columns"].items():
|
||||
_c = self.columns[int(id)][0]
|
||||
if c.get("searchable", False) and len(_c) > 0:
|
||||
if c.get("columnControl", False):
|
||||
_sv = str(c["columnControl"]["search"]["value"])
|
||||
"""contains, equal, ends, starts, empty"""
|
||||
_logic = str(c["columnControl"]["search"]["logic"])
|
||||
"""text, date, num"""
|
||||
_type = str(c["columnControl"]["search"]["type"])
|
||||
if _type == "text":
|
||||
if _logic == "empty":
|
||||
filter_qs &= Q(**{f'{_c}': ""})
|
||||
elif len(_sv) > 0:
|
||||
if _logic == "contains":
|
||||
filter_qs &= Q(**{f'{_c}__icontains': _sv})
|
||||
elif _logic == "starts":
|
||||
filter_qs &= Q(**{f'{_c}__istartswith': _sv})
|
||||
elif _logic == "ends":
|
||||
filter_qs &= Q(**{f'{_c}__iendswith': _sv})
|
||||
elif _logic == "equal":
|
||||
filter_qs &= Q(**{f'{_c}': _sv})
|
||||
elif _type == "num":
|
||||
if _logic == "empty":
|
||||
filter_qs &= Q(**{f'{_c}__isnull': True})
|
||||
elif len(_sv) > 0:
|
||||
try:
|
||||
if _logic == "greater":
|
||||
filter_qs &= Q(**{f'{_c}__gt': float(_sv)})
|
||||
elif _logic == "less":
|
||||
filter_qs &= Q(**{f'{_c}__lt': float(_sv)})
|
||||
elif _logic == "greaterOrEqual":
|
||||
filter_qs &= Q(**{f'{_c}__gte': float(_sv)})
|
||||
elif _logic == "lessOrEqual":
|
||||
filter_qs &= Q(**{f'{_c}__lte': float(_sv)})
|
||||
elif _logic == "equal":
|
||||
filter_qs &= Q(**{f'{_c}': float(_sv)})
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
_sv = str(c["search"]["value"])
|
||||
if len(_sv) > 0:
|
||||
if c["search"]["regex"]:
|
||||
filter_qs |= Q(**{f'{_c}__iregex': _sv})
|
||||
else:
|
||||
filter_qs |= Q(**{f'{_c}__icontains': _sv})
|
||||
_gsv = str(table_conf["search"]["value"])
|
||||
if len(_gsv) > 0:
|
||||
filter_qs |= Q(**{f'{_c}__icontains': _gsv})
|
||||
return filter_qs
|
||||
|
||||
def except_qs(self, table_conf: dict):
|
||||
# Search
|
||||
except_qs = Q()
|
||||
for id, c in table_conf["columns"].items():
|
||||
_c = self.columns[int(id)][0]
|
||||
if c.get("searchable", False) and len(_c) > 0:
|
||||
if c.get("columnControl", False):
|
||||
_sv = str(c["columnControl"]["search"]["value"])
|
||||
"""notContains, notEqual, notEmpty"""
|
||||
_logic = str(c["columnControl"]["search"]["logic"])
|
||||
"""text, date, num"""
|
||||
_type = str(c["columnControl"]["search"]["type"])
|
||||
if _type == "text":
|
||||
if _logic == "notEmpty":
|
||||
except_qs |= Q(**{f'{_c}': ""})
|
||||
elif len(_sv) > 0:
|
||||
if _logic == "notContains":
|
||||
except_qs |= Q(**{f'{_c}__icontains': _sv})
|
||||
elif _logic == "notEqual":
|
||||
except_qs |= Q(**{f'{_c}': _sv})
|
||||
elif _type == "num":
|
||||
if _logic == "notEmpty":
|
||||
except_qs |= Q(**{f'{_c}__isnull': False})
|
||||
elif len(_sv) > 0:
|
||||
if _logic == "notEqual":
|
||||
try:
|
||||
except_qs |= Q(**{f'{_c}': float(_sv)})
|
||||
except ValueError:
|
||||
pass
|
||||
return except_qs
|
||||
|
||||
def get_table_config(self, get: dict):
|
||||
_cols = nested_param_dict()
|
||||
for c, v in get.items():
|
||||
_keys = [_k for _k in c.replace("]", "").split("[")]
|
||||
_v = v
|
||||
if v in ["true", "false"]:
|
||||
_v = _v == "true"
|
||||
else:
|
||||
try:
|
||||
_v = int(_v)
|
||||
except ValueError:
|
||||
pass # not an integer
|
||||
_cols[".".join(_keys)] = _v
|
||||
return defaultdict_to_dict(_cols)
|
||||
|
||||
def get_order(self, table_conf: dict):
|
||||
order = []
|
||||
for oc, od in table_conf.get("order", {}).items():
|
||||
_c = table_conf["columns"][od["column"]]
|
||||
if _c["orderable"]:
|
||||
if od["dir"] == "desc":
|
||||
order.append("-" + self.columns[int(od["column"])][0])
|
||||
else:
|
||||
order.append(self.columns[int(od["column"])][0])
|
||||
return order
|
||||
|
||||
def render_template(self, request: HttpRequest, template: str, ctx: dict):
|
||||
if "{{" in template:
|
||||
_template = Template(template)
|
||||
return _template.render(Context(ctx))
|
||||
else:
|
||||
return render_to_string(
|
||||
template,
|
||||
ctx,
|
||||
request
|
||||
)
|
||||
|
||||
def get(self, request: HttpRequest, *args, **kwargs):
|
||||
table_conf = self.get_table_config(request.GET)
|
||||
draw = int(table_conf["draw"])
|
||||
start = int(table_conf["start"])
|
||||
length = int(table_conf["length"])
|
||||
if length <= 0:
|
||||
logger.warning(
|
||||
"Using no pagination is not recommended for server side rendered datatables"
|
||||
)
|
||||
limit = start + length
|
||||
|
||||
|
||||
# Build response rows
|
||||
items = []
|
||||
qs = self.get_model_qs(
|
||||
request,
|
||||
*args,
|
||||
**kwargs
|
||||
).filter(
|
||||
self.filter_qs(table_conf)
|
||||
).exclude(
|
||||
self.except_qs(table_conf)
|
||||
).order_by(
|
||||
*self.get_order(table_conf)
|
||||
)
|
||||
|
||||
# Get the count after filtering
|
||||
qs_count = qs.count()
|
||||
|
||||
# build output
|
||||
if length > 0:
|
||||
qs = qs[start:limit]
|
||||
|
||||
for row in qs:
|
||||
ctx = {"row": row}
|
||||
row = []
|
||||
for t in self.columns:
|
||||
row.append(self.render_template(request, t[1], ctx))
|
||||
items.append(row)
|
||||
|
||||
# Build our output dict
|
||||
datatables_data = {}
|
||||
datatables_data['draw'] = draw
|
||||
datatables_data['recordsTotal'] = self.get_model_qs(request, *args, **kwargs).all().count()
|
||||
datatables_data['recordsFiltered'] = qs_count
|
||||
datatables_data['data'] = items
|
||||
|
||||
return JsonResponse(datatables_data)
|
||||
@@ -47,6 +47,12 @@
|
||||
/* Side Navigation
|
||||
------------------------------------------------------------------------------------- */
|
||||
@media all {
|
||||
.sidemenu-total-notifications-badge {
|
||||
position: absolute;
|
||||
left: 28px;
|
||||
font-size: 42.5% !important;
|
||||
}
|
||||
|
||||
#sidebar > div {
|
||||
width: 325px;
|
||||
}
|
||||
@@ -173,3 +179,34 @@
|
||||
border-left-color: var(--bs-warning);
|
||||
}
|
||||
}
|
||||
|
||||
/* DataTables 2
|
||||
------------------------------------------------------------------------------------- */
|
||||
@media all {
|
||||
/* DataTables Processing Indicator
|
||||
--------------------------------------------------------------------------------- */
|
||||
div.dt-processing {
|
||||
padding-top: 0.5rem !important;
|
||||
}
|
||||
|
||||
div.dt-processing > div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
svg.aa-datatables-process-indicator {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
/* DataTables Extension: ColumnControl
|
||||
--------------------------------------------------------------------------------- */
|
||||
table.dataTable span.dtcc div.dtcc-search > div select {
|
||||
background-color: var(--bs-body-bg);
|
||||
color: var(--bs-body-color);
|
||||
padding: 0.375rem;
|
||||
}
|
||||
|
||||
table.dataTable .dt-column-header div.dtcc-search-title {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{% load i18n %}
|
||||
|
||||
<svg class="aa-datatables-process-indicator">
|
||||
<use href="#aa-loading-spinner"></use>
|
||||
</svg>
|
||||
|
||||
<p class="my-1">
|
||||
{% translate "Loading …" %}
|
||||
</p>
|
||||
288
allianceauth/framework/tests/test_datatables.py
Normal file
288
allianceauth/framework/tests/test_datatables.py
Normal file
@@ -0,0 +1,288 @@
|
||||
"""
|
||||
Test sentinel user
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
|
||||
# Django
|
||||
from allianceauth.tests.auth_utils import AuthUtils
|
||||
from django.test import RequestFactory, TestCase
|
||||
from django.http import HttpRequest
|
||||
# Alliance Auth
|
||||
from allianceauth.framework.datatables import DataTablesView
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
class TestView(DataTablesView):
|
||||
model=EveCharacter
|
||||
columns = [
|
||||
("", "{{ row.character_id }}"),
|
||||
("character_name", "{{ row.character_name }}"),
|
||||
("corporation_name", "{{ row.corporation_name }}"),
|
||||
("alliance_name", "{{ row.alliance_name }}"),
|
||||
]
|
||||
|
||||
class TestDataTables(TestCase):
|
||||
def setUp(self):
|
||||
self.get_params = {
|
||||
'draw': '1',
|
||||
'columns[0][data]': '0',
|
||||
'columns[0][name]': '',
|
||||
'columns[0][searchable]': 'false',
|
||||
'columns[0][orderable]': 'false',
|
||||
'columns[0][search][value]': '',
|
||||
'columns[0][search][regex]': 'false',
|
||||
'columns[1][data]': '1',
|
||||
'columns[1][name]': '',
|
||||
'columns[1][searchable]': 'true',
|
||||
'columns[1][orderable]': 'true',
|
||||
'columns[1][search][value]': '',
|
||||
'columns[1][search][regex]': 'false',
|
||||
'columns[2][data]': '2',
|
||||
'columns[2][name]': '',
|
||||
'columns[2][searchable]': 'true',
|
||||
'columns[2][orderable]': 'false',
|
||||
'columns[2][search][value]': '',
|
||||
'columns[2][search][regex]': 'false',
|
||||
'columns[3][data]': '3',
|
||||
'columns[3][name]': '',
|
||||
'columns[3][searchable]': 'true',
|
||||
'columns[3][orderable]': 'true',
|
||||
'columns[3][search][value]': '',
|
||||
'columns[3][search][regex]': 'false',
|
||||
'order[0][column]': '1',
|
||||
'order[0][dir]': 'asc',
|
||||
'start': '0',
|
||||
'length': '10',
|
||||
'search[value]': '',
|
||||
'search[regex]': 'false',
|
||||
'_': '123456789'
|
||||
}
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls) -> None:
|
||||
"""
|
||||
Set up eve models
|
||||
"""
|
||||
|
||||
super().setUpClass()
|
||||
cls.factory = RequestFactory()
|
||||
|
||||
cls.user = AuthUtils.create_user("bruce_wayne")
|
||||
cls.user.is_superuser = True
|
||||
cls.user.save()
|
||||
|
||||
EveCharacter.objects.all().delete()
|
||||
for i in range(1,16):
|
||||
EveCharacter.objects.create(
|
||||
character_id=1000+i,
|
||||
character_name=f"{1000+i} - Test Character - {1000+i}",
|
||||
corporation_id=2000+i,
|
||||
corporation_name=f"{2000+i} - Test Corporation",
|
||||
)
|
||||
|
||||
for i in range(16,21):
|
||||
EveCharacter.objects.create(
|
||||
character_id=1000+i,
|
||||
character_name=f"{1000+i} - Test Character - {1000+i}",
|
||||
corporation_id=2000+i,
|
||||
corporation_name=f"{2000+i} - Test Corporation",
|
||||
alliance_id=3000+i,
|
||||
alliance_name=f"{3000+i} - Test Alliance",
|
||||
)
|
||||
|
||||
|
||||
def test_view_default(self):
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(data[0][0], "1001")
|
||||
self.assertEqual(data[9][0], "1010")
|
||||
|
||||
def test_view_reverse_sort(self):
|
||||
self.get_params["order[0][dir]"] = "desc"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(data[0][0], "1020")
|
||||
self.assertEqual(data[9][0], "1011")
|
||||
|
||||
def test_view_no_sort(self):
|
||||
self.get_params.pop("order[0][column]")
|
||||
self.get_params.pop("order[0][dir]")
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(data[0][0], "1001")
|
||||
self.assertEqual(data[9][0], "1010")
|
||||
|
||||
def test_view_non_sortable_sort(self):
|
||||
self.get_params["order[0][dir]"] = "desc"
|
||||
self.get_params["order[0][column]"] = "0"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(data[0][0], "1001")
|
||||
self.assertEqual(data[9][0], "1010")
|
||||
|
||||
def test_view_20_rows(self):
|
||||
self.get_params["length"] = "20"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(data[0][0], "1001")
|
||||
self.assertEqual(data[19][0], "1020")
|
||||
|
||||
def test_records_filtered(self):
|
||||
self.get_params["length"] = "20"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
content = json.loads(response.get(request).content)
|
||||
self.assertEqual(content["recordsFiltered"], 20)
|
||||
self.assertEqual(content["recordsTotal"], 20)
|
||||
|
||||
def test_view_global_search(self):
|
||||
self.get_params["search[value]"] = "1020"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 1)
|
||||
self.assertEqual(data[0][0], "1020")
|
||||
|
||||
def test_view_col_1_search(self):
|
||||
self.get_params["columns[1][search][value]"] = "1020"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 1)
|
||||
self.assertEqual(data[0][0], "1020")
|
||||
|
||||
def test_view_col_1_search_empty(self):
|
||||
self.get_params["columns[1][search][value]"] = "zzz"
|
||||
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 0)
|
||||
|
||||
def test_view_cc_3_search_empty(self):
|
||||
self.get_params["columns[3][columnControl][search][value]"] = ""
|
||||
self.get_params["columns[3][columnControl][search][logic]"] = "empty"
|
||||
self.get_params["columns[3][columnControl][search][type]"] = "text"
|
||||
self.get_params["length"] = "20"
|
||||
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 15)
|
||||
|
||||
def test_view_cc_3_search_not_empty(self):
|
||||
self.get_params["columns[3][columnControl][search][value]"] = ""
|
||||
self.get_params["columns[3][columnControl][search][logic]"] = "notEmpty"
|
||||
self.get_params["columns[3][columnControl][search][type]"] = "text"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 5)
|
||||
|
||||
def test_view_cc_1_search_ends_with(self):
|
||||
self.get_params["columns[1][columnControl][search][value]"] = "9"
|
||||
self.get_params["columns[1][columnControl][search][logic]"] = "ends"
|
||||
self.get_params["columns[1][columnControl][search][type]"] = "text"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 2)
|
||||
|
||||
def test_view_cc_1_search_starts_with(self):
|
||||
self.get_params["columns[1][columnControl][search][value]"] = "1009"
|
||||
self.get_params["columns[1][columnControl][search][logic]"] = "starts"
|
||||
self.get_params["columns[1][columnControl][search][type]"] = "text"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 1)
|
||||
|
||||
def test_view_cc_1_search_not_contains(self):
|
||||
self.get_params["columns[1][columnControl][search][value]"] = "100"
|
||||
self.get_params["columns[1][columnControl][search][logic]"] = "notContains"
|
||||
self.get_params["columns[1][columnControl][search][type]"] = "text"
|
||||
self.get_params["length"] = "20"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 11)
|
||||
|
||||
def test_view_cc_1_search_contains(self):
|
||||
self.get_params["columns[1][columnControl][search][value]"] = "100"
|
||||
self.get_params["columns[1][columnControl][search][logic]"] = "contains"
|
||||
self.get_params["columns[1][columnControl][search][type]"] = "text"
|
||||
self.get_params["length"] = "20"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 9)
|
||||
|
||||
def test_view_cc_1_search_equal(self):
|
||||
self.get_params["columns[1][columnControl][search][value]"] = "1001 - Test Character - 1001"
|
||||
self.get_params["columns[1][columnControl][search][logic]"] = "equal"
|
||||
self.get_params["columns[1][columnControl][search][type]"] = "text"
|
||||
self.get_params["length"] = "20"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 1)
|
||||
|
||||
def test_view_cc_1_search_not_equal(self):
|
||||
self.get_params["columns[1][columnControl][search][value]"] = "1001 - Test Character - 1001"
|
||||
self.get_params["columns[1][columnControl][search][logic]"] = "notEqual"
|
||||
self.get_params["columns[1][columnControl][search][type]"] = "text"
|
||||
self.get_params["length"] = "20"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 19)
|
||||
|
||||
def test_view_cc_no_pagination(self):
|
||||
self.get_params["length"] = "-1"
|
||||
self.client.force_login(self.user)
|
||||
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||
response = TestView()
|
||||
response.setup(request)
|
||||
data = json.loads(response.get(request).content)["data"]
|
||||
self.assertEqual(len(data), 20)
|
||||
@@ -19,7 +19,7 @@
|
||||
{% translate "Join Requests" %}
|
||||
|
||||
{% if acceptrequests %}
|
||||
<span class="badge text-bg-secondary">{{ acceptrequests|length }}</span>
|
||||
<span id="acceptRequestsCounter" class="badge text-bg-secondary">{{ acceptrequests|length }}</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</li>
|
||||
@@ -30,7 +30,7 @@
|
||||
{% translate "Leave Requests" %}
|
||||
|
||||
{% if leaverequests %}
|
||||
<span class="badge text-bg-secondary">{{ leaverequests|length }}</span>
|
||||
<span id="leaveRequestsCounter" class="badge text-bg-secondary">{{ leaverequests|length }}</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</li>
|
||||
@@ -43,19 +43,19 @@
|
||||
</li>
|
||||
{% endblock header_nav_collapse_left %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="tab-content">
|
||||
<div id="add" class="tab-pane active">
|
||||
{% if acceptrequests %}
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<div>
|
||||
<table id="table-add" class="table table-responsive w-100">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% translate "Character" %}</th>
|
||||
<th>{% translate "Organization" %}</th>
|
||||
<th>{% translate "Group" %}</th>
|
||||
<th></th>
|
||||
<th>{% translate "Corporation" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -89,13 +89,24 @@
|
||||
<td>{{ acceptrequest.group.name }}</td>
|
||||
|
||||
<td class="text-end">
|
||||
<a href="{% url 'groupmanagement:accept_request' acceptrequest.id %}" class="btn btn-success">
|
||||
<div class="spinner-border spinner-border-sm mt-2 btns-join-{{acceptrequest.id}} d-none" role="status">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
<a id="{{acceptrequest.id}}" class="btn btn-success join-accept btns-join-{{acceptrequest.id}}">
|
||||
{% translate "Accept" %}
|
||||
</a>
|
||||
<a href="{% url 'groupmanagement:reject_request' acceptrequest.id %}" class="btn btn-danger">
|
||||
<a id="{{acceptrequest.id}}" class="btn btn-danger join-reject btns-join-{{acceptrequest.id}}">
|
||||
{% translate "Reject" %}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if acceptrequest.main_char %}
|
||||
{{ acceptrequest.main_char.corporation_name }}
|
||||
{% else %}
|
||||
{% translate "(unknown)" %}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -111,14 +122,15 @@
|
||||
{% if not show_leave_tab %}
|
||||
<div id="leave" class="tab-pane">
|
||||
{% if leaverequests %}
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<div>
|
||||
<table id="table-rem" class="table table-responsive w-100">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% translate "Character" %}</th>
|
||||
<th>{% translate "Organization" %}</th>
|
||||
<th>{% translate "Group" %}</th>
|
||||
<th></th>
|
||||
<th>{% translate "Corporation" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -152,14 +164,23 @@
|
||||
<td>{{ leaverequest.group.name }}</td>
|
||||
|
||||
<td class="text-end">
|
||||
<a href="{% url 'groupmanagement:leave_accept_request' leaverequest.id %}" class="btn btn-success">
|
||||
<div class="spinner-border spinner-border-sm mt-2 btns-leave-{{leaverequest.id}} d-none" role="status">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
<a id="{{leaverequest.id}}" class="btn btn-success accept leave-accept btns-leave-{{leaverequest.id}}">
|
||||
{% translate "Accept" %}
|
||||
</a>
|
||||
|
||||
<a href="{% url 'groupmanagement:leave_reject_request' leaverequest.id %}" class="btn btn-danger">
|
||||
<a id="{{leaverequest.id}}" class="btn btn-danger reject leave-reject btns-leave-{{leaverequest.id}}">
|
||||
{% translate "Reject" %}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if leaverequest.main_char %}
|
||||
{{ leaverequest.main_char.corporation_name }}
|
||||
{% else %}
|
||||
{% translate "(unknown)" %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -172,3 +193,189 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock content %}
|
||||
{% block extra_javascript %}
|
||||
{% include 'bundles/datatables-js-bs5.html' %}
|
||||
{% include "bundles/filterdropdown-js.html" %}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
let tableAdd = $("#table-add").DataTable({
|
||||
filterDropDown: {
|
||||
columns: [
|
||||
{
|
||||
idx: 4,
|
||||
},
|
||||
{
|
||||
idx: 2,
|
||||
}
|
||||
],
|
||||
bootstrap: true,
|
||||
bootstrap_version: 5
|
||||
},
|
||||
columnDefs: [
|
||||
{
|
||||
target: 4,
|
||||
visible: false,
|
||||
},
|
||||
],
|
||||
paging: false,
|
||||
responsive: true,
|
||||
pageLength: -1
|
||||
});
|
||||
let tableRem = $("#table-rem").DataTable({
|
||||
filterDropDown: {
|
||||
columns: [
|
||||
{
|
||||
idx: 4,
|
||||
},
|
||||
{
|
||||
idx: 2,
|
||||
}
|
||||
],
|
||||
bootstrap: true,
|
||||
bootstrap_version: 5
|
||||
},
|
||||
columnDefs: [
|
||||
{
|
||||
target: 4,
|
||||
visible: false,
|
||||
},
|
||||
],
|
||||
paging: false,
|
||||
responsive: true,
|
||||
pageLength: -1
|
||||
});
|
||||
|
||||
// URL's for fetch requests
|
||||
let acceptJoinURL = "{% url 'groupmanagement:accept_request' 0 %}";
|
||||
acceptJoinURL = acceptJoinURL.substring(0, acceptJoinURL.length-2);
|
||||
let rejectJoinURL = "{% url 'groupmanagement:reject_request' 0 %}";
|
||||
rejectJoinURL = rejectJoinURL.substring(0, rejectJoinURL.length-2);
|
||||
let acceptLeaveURL = "{% url 'groupmanagement:leave_accept_request' 0 %}";
|
||||
acceptLeaveURL = acceptLeaveURL.substring(0, acceptLeaveURL.length-2);
|
||||
let rejectLeaveURL = "{% url 'groupmanagement:leave_reject_request' 0 %}";
|
||||
rejectLeaveURL = rejectLeaveURL.substring(0, rejectLeaveURL.length-2);
|
||||
|
||||
function removeRow(table, classLookup){
|
||||
let btn = $(classLookup);
|
||||
table.row($(btn[0]).parents('tr')).remove().draw();
|
||||
}
|
||||
|
||||
function toggleButtons(classLookup){
|
||||
let elems = document.querySelectorAll(classLookup);
|
||||
elems.forEach(
|
||||
function(e) {
|
||||
e.classList.toggle('d-none');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function hitAuth(classLookup, table, URL){
|
||||
toggleButtons(classLookup);
|
||||
let output = fetch(URL)
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
toggleButtons(classLookup);
|
||||
return true;
|
||||
}
|
||||
removeRow(table, classLookup)
|
||||
})
|
||||
.catch(error => {
|
||||
toggleButtons(classLookup);
|
||||
return false;
|
||||
});
|
||||
toggleButtons(classLookup);
|
||||
return output;
|
||||
}
|
||||
|
||||
function decreaseCounterElement(elem){
|
||||
count = Number(elem.innerText);
|
||||
count -= 1;
|
||||
if (!count){
|
||||
elem.classList.add("d-none");
|
||||
} else {
|
||||
elem.innerText = count;
|
||||
}
|
||||
}
|
||||
|
||||
function decreaseCounter(id){
|
||||
elem = document.getElementById(id);
|
||||
if (elem){decreaseCounterElement(elem)}
|
||||
}
|
||||
|
||||
function decreaseMenuCounter(){
|
||||
decreaseCounter("globalNotificationCount");
|
||||
let elem = document.querySelector("a[href='{% url "groupmanagement:management" %}']");
|
||||
if (elem) {
|
||||
let badge = elem.parentElement.querySelector("span");
|
||||
if (badge){decreaseCounterElement(badge)}
|
||||
if (elem.parentElement.parentElement.parentElement.tagName === "LI"){
|
||||
let folderBadge = elem.parentElement.parentElement.parentElement.querySelector("span");
|
||||
if (folderBadge){decreaseCounterElement(folderBadge)}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let acceptJoinButtons = document.querySelectorAll(".join-accept");
|
||||
acceptJoinButtons.forEach(function(elem) {
|
||||
elem.addEventListener("click", function(event) {
|
||||
url = `${acceptJoinURL}${event.target.id}/`
|
||||
let elemClass = `.btns-join-${event.target.id}`
|
||||
if (hitAuth(elemClass, tableAdd, url)){
|
||||
decreaseCounter("acceptRequestsCounter")
|
||||
decreaseMenuCounter()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
let rejectJoinButtons = document.querySelectorAll(".join-reject");
|
||||
rejectJoinButtons.forEach(function(elem) {
|
||||
elem.addEventListener("click", function(event) {
|
||||
url = `${rejectJoinURL}${event.target.id}/`
|
||||
let elemClass = `.btns-join-${event.target.id}`
|
||||
if (hitAuth(elemClass, tableAdd, url)){
|
||||
decreaseCounter("acceptRequestsCounter")
|
||||
decreaseMenuCounter()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
let acceptLeaveButtons = document.querySelectorAll(".leave-accept");
|
||||
acceptLeaveButtons.forEach(function(elem) {
|
||||
elem.addEventListener("click", function(event) {
|
||||
url = `${acceptLeaveURL}${event.target.id}/`
|
||||
let elemClass = `.btns-leave-${event.target.id}`
|
||||
if (hitAuth(elemClass, tableRem, url)){
|
||||
decreaseCounter("leaveRequestsCounter")
|
||||
decreaseMenuCounter()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
let rejectLeaveButtons = document.querySelectorAll(".leave-reject");
|
||||
rejectLeaveButtons.forEach(function(elem) {
|
||||
elem.addEventListener("click", function(event) {
|
||||
url = `${rejectLeaveURL}${event.target.id}/`
|
||||
let elemClass = `.btns-leave-${event.target.id}`
|
||||
if (hitAuth(elemClass, tableRem, url)){
|
||||
decreaseCounter("leaveRequestsCounter")
|
||||
decreaseMenuCounter()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Filter Dropdown sets widths so lets remove them when we tab change so they actually show.
|
||||
$('a[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) {
|
||||
let elems = document.querySelectorAll(".form-select");
|
||||
elems.forEach(
|
||||
function(e) {
|
||||
e.style.maxWidth = "";
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{% endblock extra_javascript %}
|
||||
{% block extra_css %}
|
||||
{% include 'bundles/datatables-css-bs5.html' %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
|
||||
"POT-Creation-Date: 2025-09-21 13:44+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Tomas Skarecky <t.skarecky@gmail.com>, 2024\n"
|
||||
"Language-Team: Czech (Czech Republic) (https://app.transifex.com/alliance-auth/teams/107430/cs_CZ/)\n"
|
||||
@@ -62,7 +62,7 @@ msgstr ""
|
||||
"přístupem:%s"
|
||||
|
||||
#: allianceauth/authentication/models.py:72
|
||||
#: allianceauth/project_template/project_name/settings/base.py:106
|
||||
#: allianceauth/project_template/project_name/settings/base.py:104
|
||||
msgid "English"
|
||||
msgstr "Angličtina"
|
||||
|
||||
@@ -71,57 +71,57 @@ msgid "Czech"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:74
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
#: allianceauth/project_template/project_name/settings/base.py:106
|
||||
msgid "German"
|
||||
msgstr "Němčina"
|
||||
|
||||
#: allianceauth/authentication/models.py:75
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
#: allianceauth/project_template/project_name/settings/base.py:107
|
||||
msgid "Spanish"
|
||||
msgstr "Španělština"
|
||||
|
||||
#: allianceauth/authentication/models.py:76
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
msgid "Italian"
|
||||
msgstr "Italština"
|
||||
|
||||
#: allianceauth/authentication/models.py:77
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
msgid "Japanese"
|
||||
msgstr "Japonština"
|
||||
|
||||
#: allianceauth/authentication/models.py:78
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
msgid "Korean"
|
||||
msgstr "Korejština"
|
||||
|
||||
#: allianceauth/authentication/models.py:79
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
msgid "French"
|
||||
msgstr "Francouzština"
|
||||
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
msgid "Russian"
|
||||
msgstr "Ruština"
|
||||
|
||||
#: allianceauth/authentication/models.py:81
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:82
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:83
|
||||
#: allianceauth/project_template/project_name/settings/base.py:117
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukrajinština"
|
||||
|
||||
#: allianceauth/authentication/models.py:84
|
||||
#: allianceauth/project_template/project_name/settings/base.py:118
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
msgid "Simplified Chinese"
|
||||
msgstr ""
|
||||
|
||||
@@ -166,14 +166,12 @@ msgstr "Postavy"
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:11
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:12
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:4
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:6
|
||||
msgid "Add Character"
|
||||
msgstr "Přidat postavu"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:15
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:10
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:12
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:8
|
||||
msgid "Change Main"
|
||||
msgstr "Změnit postavu"
|
||||
|
||||
@@ -230,8 +228,8 @@ msgstr ""
|
||||
#: 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:83
|
||||
#: allianceauth/srp/templates/srp/management.html:53
|
||||
#: allianceauth/srp/templates/srp/data.html:81
|
||||
#: allianceauth/srp/templates/srp/management.html:51
|
||||
msgid "Actions"
|
||||
msgstr "Akce"
|
||||
|
||||
@@ -282,7 +280,7 @@ msgstr "Registrace"
|
||||
msgid "Invalid or expired activation link."
|
||||
msgstr "Nevalidní, nebo expirovaný aktivační odkaz."
|
||||
|
||||
#: allianceauth/authentication/views.py:158
|
||||
#: allianceauth/authentication/views.py:159
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot change main character to %(char)s: character owned by a different "
|
||||
@@ -290,22 +288,22 @@ msgid ""
|
||||
msgstr ""
|
||||
"Není možné změnit hlavní postavu na %(char)s: postava patří pod jiný účet."
|
||||
|
||||
#: allianceauth/authentication/views.py:165
|
||||
#: allianceauth/authentication/views.py:166
|
||||
#, python-format
|
||||
msgid "Changed main character to %s"
|
||||
msgstr "Hlavní postava změněna na %s"
|
||||
|
||||
#: allianceauth/authentication/views.py:179
|
||||
#: allianceauth/authentication/views.py:180
|
||||
#, python-format
|
||||
msgid "Added %(name)s to your account."
|
||||
msgstr "%(name)spřidána k vačenu účtu"
|
||||
|
||||
#: allianceauth/authentication/views.py:181
|
||||
#: allianceauth/authentication/views.py:182
|
||||
#, python-format
|
||||
msgid "Failed to add %(name)s to your account: they already have an account."
|
||||
msgstr "Přidání %(name)sk vašemu účtu se nezdařilo: již mají účet"
|
||||
|
||||
#: allianceauth/authentication/views.py:226
|
||||
#: allianceauth/authentication/views.py:227
|
||||
msgid ""
|
||||
"Unable to authenticate as the selected character. Please log in with the "
|
||||
"main character associated with this account."
|
||||
@@ -313,11 +311,11 @@ msgstr ""
|
||||
"Není možné váš ověřit pomocí vybrané postavu. Prosím přihlaste se pomocí "
|
||||
"hlavní postavy spojené s tímto účtem."
|
||||
|
||||
#: allianceauth/authentication/views.py:293
|
||||
#: allianceauth/authentication/views.py:294
|
||||
msgid "Registration token has expired."
|
||||
msgstr "Registrační token expiroval"
|
||||
|
||||
#: allianceauth/authentication/views.py:354
|
||||
#: allianceauth/authentication/views.py:355
|
||||
msgid ""
|
||||
"Sent confirmation email. Please follow the link to confirm your email "
|
||||
"address."
|
||||
@@ -325,11 +323,11 @@ msgstr ""
|
||||
"Byl vám odeslán potvrzovací email. Otevřete prosím odkaz pro potvrzení "
|
||||
"emailové adresy. "
|
||||
|
||||
#: allianceauth/authentication/views.py:360
|
||||
#: allianceauth/authentication/views.py:361
|
||||
msgid "Confirmed your email address. Please login to continue."
|
||||
msgstr "Emailová adresa potvrzena. Přihlaste se prosím."
|
||||
|
||||
#: allianceauth/authentication/views.py:366
|
||||
#: allianceauth/authentication/views.py:367
|
||||
msgid "Registration of new accounts is not allowed at this time."
|
||||
msgstr "Momentálně není povolena registrace nových účtů."
|
||||
|
||||
@@ -346,11 +344,11 @@ msgstr ""
|
||||
msgid "Corporations"
|
||||
msgstr "Korporace"
|
||||
|
||||
#: allianceauth/corputils/templates/corputils/base.html:35
|
||||
#: allianceauth/corputils/templates/corputils/base.html:31
|
||||
msgid "Add corporation"
|
||||
msgstr "Přidat korporaci"
|
||||
|
||||
#: allianceauth/corputils/templates/corputils/base.html:51
|
||||
#: allianceauth/corputils/templates/corputils/base.html:47
|
||||
msgid "Search all corporations..."
|
||||
msgstr "Vyhledat všechny korporace"
|
||||
|
||||
@@ -498,7 +496,7 @@ msgid "Fleet Activity Tracking"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/fleetactivitytracking/forms.py:6 allianceauth/srp/form.py:8
|
||||
#: allianceauth/srp/templates/srp/management.html:44
|
||||
#: allianceauth/srp/templates/srp/management.html:42
|
||||
msgid "Fleet Name"
|
||||
msgstr "Jméno flotily"
|
||||
|
||||
@@ -988,7 +986,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:81
|
||||
#: allianceauth/srp/templates/srp/data.html:79
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
@@ -1001,7 +999,7 @@ msgid "Hidden"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
@@ -1046,17 +1044,9 @@ msgstr ""
|
||||
msgid "Leave"
|
||||
msgstr ""
|
||||
|
||||
#: 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:120
|
||||
#: allianceauth/srp/templates/srp/management.html:87
|
||||
msgid "Pending"
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88
|
||||
msgid "Request pending"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80
|
||||
@@ -1067,7 +1057,11 @@ msgstr ""
|
||||
msgid "Request"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:93
|
||||
msgid "Retract"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:103
|
||||
msgid "No groups available."
|
||||
msgstr ""
|
||||
|
||||
@@ -1196,6 +1190,19 @@ msgstr ""
|
||||
msgid "Applied to leave group %(group)s."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:438
|
||||
msgid "You cannot retract that request"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:450
|
||||
#, python-format
|
||||
msgid "Retracted application to group %(group)s."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:458
|
||||
msgid "You have no open request for that group."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/hrapplications/apps.py:8
|
||||
msgid "HR Applications"
|
||||
msgstr ""
|
||||
@@ -1266,12 +1273,23 @@ msgstr ""
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: 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:118
|
||||
#: allianceauth/srp/templates/srp/management.html:85
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:48
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:141
|
||||
#: 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:112
|
||||
#: allianceauth/srp/templates/srp/data.html:110
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
|
||||
@@ -1279,7 +1297,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:116
|
||||
#: allianceauth/srp/templates/srp/data.html:114
|
||||
msgid "Rejected"
|
||||
msgstr ""
|
||||
|
||||
@@ -1514,8 +1532,8 @@ msgstr ""
|
||||
|
||||
#: 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
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:13
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:14
|
||||
msgid "Sign In"
|
||||
msgstr ""
|
||||
|
||||
@@ -1543,11 +1561,11 @@ msgstr ""
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:32
|
||||
#: allianceauth/notifications/templates/notifications/list.html:31
|
||||
msgid "Mark all notifications as read"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:38
|
||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||
msgid "Delete all read notifications"
|
||||
msgstr ""
|
||||
|
||||
@@ -1612,12 +1630,12 @@ msgid "Operation Type"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/form.py:17
|
||||
#: allianceauth/srp/templates/srp/management.html:47
|
||||
#: allianceauth/srp/templates/srp/management.html:45
|
||||
msgid "Fleet Commander"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||
#: allianceauth/srp/templates/srp/data.html:72
|
||||
#: allianceauth/srp/templates/srp/data.html:70
|
||||
msgid "Additional Info"
|
||||
msgstr ""
|
||||
|
||||
@@ -1626,7 +1644,7 @@ msgid "(Optional) Describe the operation with a couple of short words."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/add.html:8
|
||||
#: allianceauth/optimer/templates/optimer/management.html:18
|
||||
#: allianceauth/optimer/templates/optimer/management.html:16
|
||||
msgid "Create Operation"
|
||||
msgstr ""
|
||||
|
||||
@@ -1675,26 +1693,26 @@ msgstr ""
|
||||
msgid "Fleet Operation Management"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:28
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:32
|
||||
#: allianceauth/optimer/templates/optimer/management.html:26
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:30
|
||||
msgid "Current EVE time:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:36
|
||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||
msgid "Next Fleet Operations"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:44
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:63
|
||||
#: allianceauth/optimer/templates/optimer/management.html:42
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:61
|
||||
msgid "No upcoming timers."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:52
|
||||
#: allianceauth/optimer/templates/optimer/management.html:50
|
||||
msgid "Past Fleet Operations"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:60
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:81
|
||||
#: allianceauth/optimer/templates/optimer/management.html:58
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:79
|
||||
msgid "No past timers."
|
||||
msgstr ""
|
||||
|
||||
@@ -2262,7 +2280,7 @@ msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/templates/services/service_status.html:7
|
||||
#: allianceauth/srp/templates/srp/management.html:78
|
||||
#: allianceauth/srp/templates/srp/management.html:76
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
|
||||
@@ -2300,12 +2318,12 @@ msgid "Ship Replacement"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:9
|
||||
#: allianceauth/srp/templates/srp/management.html:45
|
||||
#: allianceauth/srp/templates/srp/management.html:43
|
||||
msgid "Fleet Time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:10
|
||||
#: allianceauth/srp/templates/srp/management.html:46
|
||||
#: allianceauth/srp/templates/srp/management.html:44
|
||||
msgid "Fleet Doctrine"
|
||||
msgstr ""
|
||||
|
||||
@@ -2354,7 +2372,7 @@ msgid "Give this link to the line members."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:8
|
||||
#: allianceauth/srp/templates/srp/data.html:39
|
||||
#: allianceauth/srp/templates/srp/data.html:37
|
||||
msgid "SRP Fleet Data"
|
||||
msgstr ""
|
||||
|
||||
@@ -2362,64 +2380,64 @@ msgstr ""
|
||||
msgid "View Fleets"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:26
|
||||
#: allianceauth/srp/templates/srp/data.html:24
|
||||
msgid "Mark Incomplete"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:30
|
||||
#: allianceauth/srp/templates/srp/data.html:28
|
||||
msgid "Mark Completed"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:48
|
||||
#: allianceauth/srp/templates/srp/data.html:142
|
||||
#: allianceauth/srp/templates/srp/data.html:46
|
||||
#: allianceauth/srp/templates/srp/data.html:140
|
||||
msgid "Total Losses:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:49
|
||||
#: allianceauth/srp/templates/srp/data.html:143
|
||||
#: allianceauth/srp/templates/srp/management.html:36
|
||||
#: allianceauth/srp/templates/srp/data.html:47
|
||||
#: allianceauth/srp/templates/srp/data.html:141
|
||||
#: allianceauth/srp/templates/srp/management.html:34
|
||||
msgid "Total ISK Cost:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:60
|
||||
#: allianceauth/srp/templates/srp/data.html:154
|
||||
#: allianceauth/srp/templates/srp/data.html:58
|
||||
#: allianceauth/srp/templates/srp/data.html:152
|
||||
msgid "Are you sure you want to delete SRP requests?"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:70
|
||||
#: allianceauth/srp/templates/srp/data.html:68
|
||||
msgid "Pilot Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:71
|
||||
#: allianceauth/srp/templates/srp/data.html:69
|
||||
msgid "Killboard Link"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:73
|
||||
#: allianceauth/srp/templates/srp/data.html:71
|
||||
msgid "Ship Type"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:74
|
||||
#: allianceauth/srp/templates/srp/data.html:72
|
||||
msgid "Killboard Loss Amt"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:76
|
||||
#: allianceauth/srp/templates/srp/data.html:74
|
||||
msgid "SRP ISK Cost"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:77
|
||||
#: allianceauth/srp/templates/srp/data.html:75
|
||||
msgid "Click value to edit Enter to save & next ESC to cancel"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:80
|
||||
#: allianceauth/srp/templates/srp/data.html:78
|
||||
msgid "Post Time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:102
|
||||
#: allianceauth/srp/templates/srp/management.html:70
|
||||
#: allianceauth/srp/templates/srp/data.html:100
|
||||
#: allianceauth/srp/templates/srp/management.html:68
|
||||
msgid "Link"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:163
|
||||
#: allianceauth/srp/templates/srp/data.html:161
|
||||
msgid "No SRP requests for this fleet."
|
||||
msgstr ""
|
||||
|
||||
@@ -2431,39 +2449,39 @@ msgstr ""
|
||||
msgid "View All"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:27
|
||||
#: allianceauth/srp/templates/srp/management.html:25
|
||||
msgid "Add SRP Fleet"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:48
|
||||
#: allianceauth/srp/templates/srp/management.html:46
|
||||
msgid "Fleet AAR"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:49
|
||||
#: allianceauth/srp/templates/srp/management.html:47
|
||||
msgid "Fleet SRP Code"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:50
|
||||
#: allianceauth/srp/templates/srp/management.html:48
|
||||
msgid "Fleet ISK Cost"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:51
|
||||
#: allianceauth/srp/templates/srp/management.html:49
|
||||
msgid "SRP Status"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:52
|
||||
#: allianceauth/srp/templates/srp/management.html:50
|
||||
msgid "Pending Requests"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:91
|
||||
#: allianceauth/srp/templates/srp/management.html:89
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:108
|
||||
#: allianceauth/srp/templates/srp/management.html:106
|
||||
msgid "Are you sure you want to delete this SRP code and its contents?"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:129
|
||||
#: allianceauth/srp/templates/srp/management.html:127
|
||||
msgid "No SRP fleets created."
|
||||
msgstr ""
|
||||
|
||||
@@ -2599,67 +2617,120 @@ msgstr ""
|
||||
msgid "Your Server received an ESI error response code of "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:8
|
||||
msgid "Alliance Auth Notifications"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:11
|
||||
msgid "second"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
|
||||
msgid "No notifications at this time"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:12
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
|
||||
msgid "Powered by GitLab"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:13
|
||||
msgid "minute"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:35
|
||||
msgid "Support Discord"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:14
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:49
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
|
||||
msgid "Software Version"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
|
||||
msgid "hour"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:56
|
||||
msgid "Current"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:16
|
||||
msgid "hours"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:63
|
||||
msgid "Latest Stable"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:17
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
|
||||
msgid "Update available"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:18
|
||||
msgid "ERROR"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
|
||||
msgid "Latest Pre-Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:81
|
||||
msgid "Pre-Release available"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
|
||||
msgid "Task Queue"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:96
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Status of %(total)s processed tasks • last %(latest)s\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:112
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:19
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:113
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
|
||||
msgid "queued"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:21
|
||||
msgid "succeeded"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:22
|
||||
msgid "retried"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:23
|
||||
msgid "failed"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
|
||||
msgid "Debug mode"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:34
|
||||
msgid ""
|
||||
"Debug mode is currently turned on!<br>Make sure to turn it off as soon as "
|
||||
"you are finished testing."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:46
|
||||
msgid "Alliance Auth Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:58
|
||||
msgid "No notifications at this time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:67
|
||||
msgid "Powered by GitLab"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:73
|
||||
msgid "Support Discord"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:87
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
|
||||
msgid "Software Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:94
|
||||
msgid "Current"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:101
|
||||
msgid "Latest Stable"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:106
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:114
|
||||
msgid "Latest Pre-Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:119
|
||||
msgid "Pre-Release available"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:129
|
||||
msgid "Task Queue"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:134
|
||||
msgid ""
|
||||
"\n"
|
||||
" Status of <span id=\"total-task-count\">?</span> processed tasks • last <span id=\"celery-uptime\">?</span>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
|
||||
msgid "AA Documentation"
|
||||
msgstr ""
|
||||
@@ -2883,7 +2954,7 @@ msgid "Theft"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:54
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:52
|
||||
msgid "Upcoming Timers"
|
||||
msgstr ""
|
||||
|
||||
@@ -2911,7 +2982,7 @@ msgid "Create Timer"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:22
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:20
|
||||
msgid "Create Structure Timer"
|
||||
msgstr ""
|
||||
|
||||
@@ -2929,11 +3000,11 @@ msgstr ""
|
||||
msgid "Structure Timer Management"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:41
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:39
|
||||
msgid "Corporation Timers"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:72
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:70
|
||||
msgid "Past Timers"
|
||||
msgstr ""
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-21 13:44+1000\n"
|
||||
"POT-Creation-Date: 2026-01-21 15:33+1000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -57,7 +57,7 @@ msgid "You are not allowed to add or remove these restricted groups: %s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:72
|
||||
#: allianceauth/project_template/project_name/settings/base.py:104
|
||||
#: allianceauth/project_template/project_name/settings/base.py:105
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
@@ -66,57 +66,57 @@ msgid "Czech"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:74
|
||||
#: allianceauth/project_template/project_name/settings/base.py:106
|
||||
#: allianceauth/project_template/project_name/settings/base.py:107
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:75
|
||||
#: allianceauth/project_template/project_name/settings/base.py:107
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:76
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:77
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:78
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:79
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:81
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:82
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:83
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:84
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
#: allianceauth/project_template/project_name/settings/base.py:117
|
||||
msgid "Simplified Chinese"
|
||||
msgstr ""
|
||||
|
||||
@@ -125,22 +125,30 @@ msgstr ""
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:105
|
||||
#: allianceauth/authentication/models.py:106
|
||||
#: allianceauth/templates/allianceauth/night-toggle.html:6
|
||||
msgid "Night Mode"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:109
|
||||
#: allianceauth/authentication/models.py:110
|
||||
#: allianceauth/theme/templates/theme/theme_select.html:4
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:126
|
||||
#: allianceauth/authentication/models.py:117
|
||||
msgid "Minimize Sidebar Menu"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:119
|
||||
msgid "Keep the sidebar menu minimized"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:133
|
||||
#, python-format
|
||||
msgid "State changed to: %s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:127
|
||||
#: allianceauth/authentication/models.py:134
|
||||
#, python-format
|
||||
msgid "Your user's state is now: %(state)s"
|
||||
msgstr ""
|
||||
@@ -200,8 +208,8 @@ msgstr ""
|
||||
|
||||
#: 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/menu/templates/menu/menu-user.html:158
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:161
|
||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
|
||||
msgid "Token Management"
|
||||
msgstr ""
|
||||
@@ -237,8 +245,8 @@ msgstr ""
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41
|
||||
#: 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
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:54
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:129
|
||||
msgid "Character"
|
||||
msgstr ""
|
||||
|
||||
@@ -375,6 +383,8 @@ msgstr ""
|
||||
#: allianceauth/corputils/templates/corputils/corpstats.html:125
|
||||
#: allianceauth/corputils/templates/corputils/search.html:18
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:58
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:133
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:122
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:166
|
||||
@@ -747,14 +757,18 @@ msgstr ""
|
||||
#: allianceauth/fleetactivitytracking/views.py:323
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Cannot register the fleet participation for {character.character_name}. The "
|
||||
"character needs to be online."
|
||||
"Cannot register the fleet participation for {character_name}. The character "
|
||||
"needs to be online."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/framework/apps.py:16
|
||||
msgid "Framework"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/framework/templates/framework/datatables/process-indicator.html:8
|
||||
msgid "Loading …"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/apps.py:8
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:18
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18
|
||||
@@ -816,8 +830,9 @@ msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/models.py:143
|
||||
msgid ""
|
||||
"Group leaders can process requests for this group. Use the <code>auth."
|
||||
"group_management</code> permission to allow a user to manage all groups.<br>"
|
||||
"Group leaders can process requests for this group. Use the "
|
||||
"<code>auth.group_management</code> permission to allow a user to manage all "
|
||||
"groups.<br>"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/models.py:153
|
||||
@@ -925,8 +940,8 @@ msgid "Group Members"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:56
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:119
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:55
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:130
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33
|
||||
msgid "Organization"
|
||||
msgstr ""
|
||||
@@ -938,7 +953,9 @@ msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:85
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:148
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:106
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:160
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:181
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18
|
||||
msgid "(unknown)"
|
||||
msgstr ""
|
||||
@@ -1018,8 +1035,8 @@ msgid "Leaders"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:57
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:120
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:56
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:131
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30
|
||||
#: allianceauth/services/modules/openfire/forms.py:6
|
||||
msgid "Group"
|
||||
@@ -1068,22 +1085,22 @@ msgstr ""
|
||||
msgid "Group Membership"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:93
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:156
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:96
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:171
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:96
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:160
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:99
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:174
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:104
|
||||
msgid "Reject"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:106
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:117
|
||||
msgid "No group add requests."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:169
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:190
|
||||
msgid "No group leave requests."
|
||||
msgstr ""
|
||||
|
||||
@@ -1486,37 +1503,45 @@ msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:77
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:93
|
||||
msgid "Minimize Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:102
|
||||
msgid "Super User"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:83
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:86
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:108
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:111
|
||||
msgid "Alliance Auth Documentation"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:94
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:97
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:119
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:122
|
||||
msgid "Alliance Auth Discord"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:105
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:108
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:130
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:133
|
||||
msgid "Alliance Auth Git"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:118
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:121
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:143
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:146
|
||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
|
||||
msgid "Admin"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:144
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:147
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:169
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:172
|
||||
msgid "Sign Out"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:155
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:158
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:180
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:183
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:13
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:14
|
||||
msgid "Sign In"
|
||||
@@ -1777,9 +1802,9 @@ msgstr ""
|
||||
msgid "That service account already exists"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/abstract.py:103
|
||||
#: allianceauth/services/abstract.py:105
|
||||
#, python-brace-format
|
||||
msgid "Successfully set your {self.service_name} password"
|
||||
msgid "Successfully set your {service_name} password"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12
|
||||
@@ -2318,11 +2343,11 @@ msgstr ""
|
||||
msgid "Invalid Link. Please use zkillboard.com or kb.evetools.org"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:46
|
||||
#: allianceauth/srp/form.py:49
|
||||
msgid "Invalid Link. Please post a direct link to a killmail."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:53
|
||||
#: allianceauth/srp/form.py:56
|
||||
msgid "After Action Report Link"
|
||||
msgstr ""
|
||||
|
||||
@@ -2596,7 +2621,7 @@ msgstr ""
|
||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/esi_check.html:4
|
||||
#: allianceauth/templates/allianceauth/admin-status/esi_check.html:5
|
||||
msgid "Your Server received an ESI error response code of "
|
||||
msgstr ""
|
||||
|
||||
@@ -3001,36 +3026,36 @@ msgstr ""
|
||||
msgid "Saved changes to the timer."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:55
|
||||
#: allianceauth/views.py:78
|
||||
msgid "Bad Request"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:57 allianceauth/views.py:87
|
||||
#: allianceauth/views.py:80 allianceauth/views.py:110
|
||||
msgid ""
|
||||
"Auth encountered an error processing your request, please try again. If the "
|
||||
"error persists, please contact the administrators."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:65
|
||||
#: allianceauth/views.py:88
|
||||
msgid "Permission Denied"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:67
|
||||
#: allianceauth/views.py:90
|
||||
msgid ""
|
||||
"You do not have permission to access the requested page. If you believe this "
|
||||
"is in error please contact the administrators."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:75
|
||||
#: allianceauth/views.py:98
|
||||
msgid "Page Not Found"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:77
|
||||
#: allianceauth/views.py:100
|
||||
msgid ""
|
||||
"Page does not exist. If you believe this is in error please contact the "
|
||||
"administrators. "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:85
|
||||
#: allianceauth/views.py:108
|
||||
msgid "Internal Server Error"
|
||||
msgstr ""
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
|
||||
"POT-Creation-Date: 2025-09-21 13:44+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Machiel Broekman, 2025\n"
|
||||
"Language-Team: Dutch (Netherlands) (https://app.transifex.com/alliance-auth/teams/107430/nl_NL/)\n"
|
||||
@@ -71,7 +71,7 @@ msgstr ""
|
||||
"Je bent niet gemachtigd om de volgende beperkte groepen te verwijderen: %s"
|
||||
|
||||
#: allianceauth/authentication/models.py:72
|
||||
#: allianceauth/project_template/project_name/settings/base.py:106
|
||||
#: allianceauth/project_template/project_name/settings/base.py:104
|
||||
msgid "English"
|
||||
msgstr "Engels"
|
||||
|
||||
@@ -80,57 +80,57 @@ msgid "Czech"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:74
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
#: allianceauth/project_template/project_name/settings/base.py:106
|
||||
msgid "German"
|
||||
msgstr "Duits"
|
||||
|
||||
#: allianceauth/authentication/models.py:75
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
#: allianceauth/project_template/project_name/settings/base.py:107
|
||||
msgid "Spanish"
|
||||
msgstr "Spaans"
|
||||
|
||||
#: allianceauth/authentication/models.py:76
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
msgid "Italian"
|
||||
msgstr "Italiaans"
|
||||
|
||||
#: allianceauth/authentication/models.py:77
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
msgid "Japanese"
|
||||
msgstr "Japans"
|
||||
|
||||
#: allianceauth/authentication/models.py:78
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
msgid "Korean"
|
||||
msgstr "Koreaans"
|
||||
|
||||
#: allianceauth/authentication/models.py:79
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
msgid "French"
|
||||
msgstr "Frans"
|
||||
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
msgid "Russian"
|
||||
msgstr "Russisch"
|
||||
|
||||
#: allianceauth/authentication/models.py:81
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
msgid "Dutch"
|
||||
msgstr "Nederlands"
|
||||
|
||||
#: allianceauth/authentication/models.py:82
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
msgid "Polish"
|
||||
msgstr "Pools"
|
||||
|
||||
#: allianceauth/authentication/models.py:83
|
||||
#: allianceauth/project_template/project_name/settings/base.py:117
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
msgid "Ukrainian"
|
||||
msgstr "Oekraïens"
|
||||
|
||||
#: allianceauth/authentication/models.py:84
|
||||
#: allianceauth/project_template/project_name/settings/base.py:118
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
msgid "Simplified Chinese"
|
||||
msgstr "Eenvoudig Chinees"
|
||||
|
||||
@@ -175,14 +175,12 @@ msgstr "Karakter"
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:11
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:12
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:4
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:6
|
||||
msgid "Add Character"
|
||||
msgstr "Personages toevoegen"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:15
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:10
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:12
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:8
|
||||
msgid "Change Main"
|
||||
msgstr "Verander Main"
|
||||
|
||||
@@ -242,8 +240,8 @@ msgstr "Scopes"
|
||||
#: 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:83
|
||||
#: allianceauth/srp/templates/srp/management.html:53
|
||||
#: allianceauth/srp/templates/srp/data.html:81
|
||||
#: allianceauth/srp/templates/srp/management.html:51
|
||||
msgid "Actions"
|
||||
msgstr "Acties"
|
||||
|
||||
@@ -294,7 +292,7 @@ msgstr "Registreer"
|
||||
msgid "Invalid or expired activation link."
|
||||
msgstr "Ongeldige of verlopen activeringslink."
|
||||
|
||||
#: allianceauth/authentication/views.py:158
|
||||
#: allianceauth/authentication/views.py:159
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot change main character to %(char)s: character owned by a different "
|
||||
@@ -303,23 +301,23 @@ msgstr ""
|
||||
"Het hoofdkarakter kan niet worden gewijzigd naar %(char)s: Karakter is "
|
||||
"eigendom van een ander account."
|
||||
|
||||
#: allianceauth/authentication/views.py:165
|
||||
#: allianceauth/authentication/views.py:166
|
||||
#, python-format
|
||||
msgid "Changed main character to %s"
|
||||
msgstr "Hoofdkarakter veranderd naar %s"
|
||||
|
||||
#: allianceauth/authentication/views.py:179
|
||||
#: allianceauth/authentication/views.py:180
|
||||
#, python-format
|
||||
msgid "Added %(name)s to your account."
|
||||
msgstr "%(name)s aan uw account toegevoegd."
|
||||
|
||||
#: allianceauth/authentication/views.py:181
|
||||
#: allianceauth/authentication/views.py:182
|
||||
#, python-format
|
||||
msgid "Failed to add %(name)s to your account: they already have an account."
|
||||
msgstr ""
|
||||
"Toevoegen van %(name)s aan uw account is mislukt: ze hebben al een account."
|
||||
|
||||
#: allianceauth/authentication/views.py:226
|
||||
#: allianceauth/authentication/views.py:227
|
||||
msgid ""
|
||||
"Unable to authenticate as the selected character. Please log in with the "
|
||||
"main character associated with this account."
|
||||
@@ -327,11 +325,11 @@ msgstr ""
|
||||
"Niet mogelijk om te authenticeren als de geselecteerde karakter. Log "
|
||||
"alstublieft in met het hoofdkarakter dat aan dit account is gekoppeld."
|
||||
|
||||
#: allianceauth/authentication/views.py:293
|
||||
#: allianceauth/authentication/views.py:294
|
||||
msgid "Registration token has expired."
|
||||
msgstr "Registratietoken is verlopen."
|
||||
|
||||
#: allianceauth/authentication/views.py:354
|
||||
#: allianceauth/authentication/views.py:355
|
||||
msgid ""
|
||||
"Sent confirmation email. Please follow the link to confirm your email "
|
||||
"address."
|
||||
@@ -339,11 +337,11 @@ msgstr ""
|
||||
"E-mail met bevestiging verzonden. Volg de link om uw e-mailadres te "
|
||||
"bevestigen."
|
||||
|
||||
#: allianceauth/authentication/views.py:360
|
||||
#: allianceauth/authentication/views.py:361
|
||||
msgid "Confirmed your email address. Please login to continue."
|
||||
msgstr "Uw e-mailadres is bevestigd. Gelieve in te loggen om verder te gaan."
|
||||
|
||||
#: allianceauth/authentication/views.py:366
|
||||
#: allianceauth/authentication/views.py:367
|
||||
msgid "Registration of new accounts is not allowed at this time."
|
||||
msgstr "Registratie van nieuwe accounts in momenteel niet toegestaan."
|
||||
|
||||
@@ -360,11 +358,11 @@ msgstr "Gegevens van bedrijfsleden"
|
||||
msgid "Corporations"
|
||||
msgstr "Bedrijven"
|
||||
|
||||
#: allianceauth/corputils/templates/corputils/base.html:35
|
||||
#: allianceauth/corputils/templates/corputils/base.html:31
|
||||
msgid "Add corporation"
|
||||
msgstr "Voeg bedrijf toe"
|
||||
|
||||
#: allianceauth/corputils/templates/corputils/base.html:51
|
||||
#: allianceauth/corputils/templates/corputils/base.html:47
|
||||
msgid "Search all corporations..."
|
||||
msgstr "Zoek in alle bedrijven..."
|
||||
|
||||
@@ -514,7 +512,7 @@ msgid "Fleet Activity Tracking"
|
||||
msgstr "Fleetactiviteit Tracking"
|
||||
|
||||
#: allianceauth/fleetactivitytracking/forms.py:6 allianceauth/srp/form.py:8
|
||||
#: allianceauth/srp/templates/srp/management.html:44
|
||||
#: allianceauth/srp/templates/srp/management.html:42
|
||||
msgid "Fleet Name"
|
||||
msgstr "Fleet naam"
|
||||
|
||||
@@ -1002,7 +1000,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:81
|
||||
#: allianceauth/srp/templates/srp/data.html:79
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@@ -1015,7 +1013,7 @@ msgid "Hidden"
|
||||
msgstr "verborgen"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
@@ -1060,18 +1058,10 @@ msgstr "Groep"
|
||||
msgid "Leave"
|
||||
msgstr "Verlaat"
|
||||
|
||||
#: 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:120
|
||||
#: allianceauth/srp/templates/srp/management.html:87
|
||||
msgid "Pending"
|
||||
msgstr "In behandeling"
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88
|
||||
msgid "Request pending"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80
|
||||
msgid "Join"
|
||||
@@ -1081,7 +1071,11 @@ msgstr "Toetreden"
|
||||
msgid "Request"
|
||||
msgstr "Aanvraag"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:93
|
||||
msgid "Retract"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:103
|
||||
msgid "No groups available."
|
||||
msgstr ""
|
||||
|
||||
@@ -1210,6 +1204,19 @@ msgstr ""
|
||||
msgid "Applied to leave group %(group)s."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:438
|
||||
msgid "You cannot retract that request"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:450
|
||||
#, python-format
|
||||
msgid "Retracted application to group %(group)s."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:458
|
||||
msgid "You have no open request for that group."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/hrapplications/apps.py:8
|
||||
msgid "HR Applications"
|
||||
msgstr ""
|
||||
@@ -1280,12 +1287,23 @@ msgstr ""
|
||||
msgid "Username"
|
||||
msgstr "Gebruikersnaam"
|
||||
|
||||
#: 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:118
|
||||
#: allianceauth/srp/templates/srp/management.html:85
|
||||
msgid "Pending"
|
||||
msgstr "In behandeling"
|
||||
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:48
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:141
|
||||
#: 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:112
|
||||
#: allianceauth/srp/templates/srp/data.html:110
|
||||
msgid "Approved"
|
||||
msgstr "Aanvaard"
|
||||
|
||||
@@ -1293,7 +1311,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:116
|
||||
#: allianceauth/srp/templates/srp/data.html:114
|
||||
msgid "Rejected"
|
||||
msgstr "Afgewezen"
|
||||
|
||||
@@ -1528,8 +1546,8 @@ msgstr ""
|
||||
|
||||
#: 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
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:13
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:14
|
||||
msgid "Sign In"
|
||||
msgstr ""
|
||||
|
||||
@@ -1557,11 +1575,11 @@ msgstr "Ongelezen"
|
||||
msgid "Read"
|
||||
msgstr "Gelezen"
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:32
|
||||
#: allianceauth/notifications/templates/notifications/list.html:31
|
||||
msgid "Mark all notifications as read"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:38
|
||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||
msgid "Delete all read notifications"
|
||||
msgstr ""
|
||||
|
||||
@@ -1626,12 +1644,12 @@ msgid "Operation Type"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/form.py:17
|
||||
#: allianceauth/srp/templates/srp/management.html:47
|
||||
#: allianceauth/srp/templates/srp/management.html:45
|
||||
msgid "Fleet Commander"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||
#: allianceauth/srp/templates/srp/data.html:72
|
||||
#: allianceauth/srp/templates/srp/data.html:70
|
||||
msgid "Additional Info"
|
||||
msgstr ""
|
||||
|
||||
@@ -1640,7 +1658,7 @@ msgid "(Optional) Describe the operation with a couple of short words."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/add.html:8
|
||||
#: allianceauth/optimer/templates/optimer/management.html:18
|
||||
#: allianceauth/optimer/templates/optimer/management.html:16
|
||||
msgid "Create Operation"
|
||||
msgstr ""
|
||||
|
||||
@@ -1689,26 +1707,26 @@ msgstr "Vloot Commandant"
|
||||
msgid "Fleet Operation Management"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:28
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:32
|
||||
#: allianceauth/optimer/templates/optimer/management.html:26
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:30
|
||||
msgid "Current EVE time:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:36
|
||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||
msgid "Next Fleet Operations"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:44
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:63
|
||||
#: allianceauth/optimer/templates/optimer/management.html:42
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:61
|
||||
msgid "No upcoming timers."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:52
|
||||
#: allianceauth/optimer/templates/optimer/management.html:50
|
||||
msgid "Past Fleet Operations"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:60
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:81
|
||||
#: allianceauth/optimer/templates/optimer/management.html:58
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:79
|
||||
msgid "No past timers."
|
||||
msgstr ""
|
||||
|
||||
@@ -2276,7 +2294,7 @@ msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/templates/services/service_status.html:7
|
||||
#: allianceauth/srp/templates/srp/management.html:78
|
||||
#: allianceauth/srp/templates/srp/management.html:76
|
||||
msgid "Disabled"
|
||||
msgstr "Uitgeschakeld"
|
||||
|
||||
@@ -2314,12 +2332,12 @@ msgid "Ship Replacement"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:9
|
||||
#: allianceauth/srp/templates/srp/management.html:45
|
||||
#: allianceauth/srp/templates/srp/management.html:43
|
||||
msgid "Fleet Time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:10
|
||||
#: allianceauth/srp/templates/srp/management.html:46
|
||||
#: allianceauth/srp/templates/srp/management.html:44
|
||||
msgid "Fleet Doctrine"
|
||||
msgstr ""
|
||||
|
||||
@@ -2368,7 +2386,7 @@ msgid "Give this link to the line members."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:8
|
||||
#: allianceauth/srp/templates/srp/data.html:39
|
||||
#: allianceauth/srp/templates/srp/data.html:37
|
||||
msgid "SRP Fleet Data"
|
||||
msgstr ""
|
||||
|
||||
@@ -2376,64 +2394,64 @@ msgstr ""
|
||||
msgid "View Fleets"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:26
|
||||
#: allianceauth/srp/templates/srp/data.html:24
|
||||
msgid "Mark Incomplete"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:30
|
||||
#: allianceauth/srp/templates/srp/data.html:28
|
||||
msgid "Mark Completed"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:48
|
||||
#: allianceauth/srp/templates/srp/data.html:142
|
||||
#: allianceauth/srp/templates/srp/data.html:46
|
||||
#: allianceauth/srp/templates/srp/data.html:140
|
||||
msgid "Total Losses:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:49
|
||||
#: allianceauth/srp/templates/srp/data.html:143
|
||||
#: allianceauth/srp/templates/srp/management.html:36
|
||||
#: allianceauth/srp/templates/srp/data.html:47
|
||||
#: allianceauth/srp/templates/srp/data.html:141
|
||||
#: allianceauth/srp/templates/srp/management.html:34
|
||||
msgid "Total ISK Cost:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:60
|
||||
#: allianceauth/srp/templates/srp/data.html:154
|
||||
#: allianceauth/srp/templates/srp/data.html:58
|
||||
#: allianceauth/srp/templates/srp/data.html:152
|
||||
msgid "Are you sure you want to delete SRP requests?"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:70
|
||||
#: allianceauth/srp/templates/srp/data.html:68
|
||||
msgid "Pilot Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:71
|
||||
#: allianceauth/srp/templates/srp/data.html:69
|
||||
msgid "Killboard Link"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:73
|
||||
#: allianceauth/srp/templates/srp/data.html:71
|
||||
msgid "Ship Type"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:74
|
||||
#: allianceauth/srp/templates/srp/data.html:72
|
||||
msgid "Killboard Loss Amt"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:76
|
||||
#: allianceauth/srp/templates/srp/data.html:74
|
||||
msgid "SRP ISK Cost"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:77
|
||||
#: allianceauth/srp/templates/srp/data.html:75
|
||||
msgid "Click value to edit Enter to save & next ESC to cancel"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:80
|
||||
#: allianceauth/srp/templates/srp/data.html:78
|
||||
msgid "Post Time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:102
|
||||
#: allianceauth/srp/templates/srp/management.html:70
|
||||
#: allianceauth/srp/templates/srp/data.html:100
|
||||
#: allianceauth/srp/templates/srp/management.html:68
|
||||
msgid "Link"
|
||||
msgstr "Link"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:163
|
||||
#: allianceauth/srp/templates/srp/data.html:161
|
||||
msgid "No SRP requests for this fleet."
|
||||
msgstr ""
|
||||
|
||||
@@ -2445,39 +2463,39 @@ msgstr ""
|
||||
msgid "View All"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:27
|
||||
#: allianceauth/srp/templates/srp/management.html:25
|
||||
msgid "Add SRP Fleet"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:48
|
||||
#: allianceauth/srp/templates/srp/management.html:46
|
||||
msgid "Fleet AAR"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:49
|
||||
#: allianceauth/srp/templates/srp/management.html:47
|
||||
msgid "Fleet SRP Code"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:50
|
||||
#: allianceauth/srp/templates/srp/management.html:48
|
||||
msgid "Fleet ISK Cost"
|
||||
msgstr "Vloot ISK Kost"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:51
|
||||
#: allianceauth/srp/templates/srp/management.html:49
|
||||
msgid "SRP Status"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:52
|
||||
#: allianceauth/srp/templates/srp/management.html:50
|
||||
msgid "Pending Requests"
|
||||
msgstr "Lopende Aanvragen"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:91
|
||||
#: allianceauth/srp/templates/srp/management.html:89
|
||||
msgid "Completed"
|
||||
msgstr "Voltooid"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:108
|
||||
#: allianceauth/srp/templates/srp/management.html:106
|
||||
msgid "Are you sure you want to delete this SRP code and its contents?"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:129
|
||||
#: allianceauth/srp/templates/srp/management.html:127
|
||||
msgid "No SRP fleets created."
|
||||
msgstr ""
|
||||
|
||||
@@ -2613,67 +2631,120 @@ msgstr ""
|
||||
msgid "Your Server received an ESI error response code of "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:8
|
||||
msgid "Alliance Auth Notifications"
|
||||
msgstr "Alliantie Authenticatie Notificaties"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
|
||||
msgid "No notifications at this time"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:11
|
||||
msgid "second"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
|
||||
msgid "Powered by GitLab"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:12
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:35
|
||||
msgid "Support Discord"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:13
|
||||
msgid "minute"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:49
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
|
||||
msgid "Software Version"
|
||||
msgstr "Software Versie"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:56
|
||||
msgid "Current"
|
||||
msgstr "Huidige"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:63
|
||||
msgid "Latest Stable"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:14
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
|
||||
msgid "Update available"
|
||||
msgstr "Update Beschikbaar"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
|
||||
msgid "Latest Pre-Release"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
|
||||
msgid "hour"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:81
|
||||
msgid "Pre-Release available"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:16
|
||||
msgid "hours"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
|
||||
msgid "Task Queue"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:17
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:96
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Status of %(total)s processed tasks • last %(latest)s\n"
|
||||
" "
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:18
|
||||
msgid "ERROR"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:112
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:19
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:113
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
|
||||
msgid "queued"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:21
|
||||
msgid "succeeded"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:22
|
||||
msgid "retried"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:23
|
||||
msgid "failed"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
|
||||
msgid "Debug mode"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:34
|
||||
msgid ""
|
||||
"Debug mode is currently turned on!<br>Make sure to turn it off as soon as "
|
||||
"you are finished testing."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:46
|
||||
msgid "Alliance Auth Notifications"
|
||||
msgstr "Alliantie Authenticatie Notificaties"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:58
|
||||
msgid "No notifications at this time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:67
|
||||
msgid "Powered by GitLab"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:73
|
||||
msgid "Support Discord"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:87
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
|
||||
msgid "Software Version"
|
||||
msgstr "Software Versie"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:94
|
||||
msgid "Current"
|
||||
msgstr "Huidige"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:101
|
||||
msgid "Latest Stable"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:106
|
||||
msgid "Update available"
|
||||
msgstr "Update Beschikbaar"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:114
|
||||
msgid "Latest Pre-Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:119
|
||||
msgid "Pre-Release available"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:129
|
||||
msgid "Task Queue"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:134
|
||||
msgid ""
|
||||
"\n"
|
||||
" Status of <span id=\"total-task-count\">?</span> processed tasks • last <span id=\"celery-uptime\">?</span>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
|
||||
msgid "AA Documentation"
|
||||
msgstr "AA Documentatie"
|
||||
@@ -2897,7 +2968,7 @@ msgid "Theft"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:54
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:52
|
||||
msgid "Upcoming Timers"
|
||||
msgstr ""
|
||||
|
||||
@@ -2925,7 +2996,7 @@ msgid "Create Timer"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:22
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:20
|
||||
msgid "Create Structure Timer"
|
||||
msgstr ""
|
||||
|
||||
@@ -2943,11 +3014,11 @@ msgstr "Constructie"
|
||||
msgid "Structure Timer Management"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:41
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:39
|
||||
msgid "Corporation Timers"
|
||||
msgstr "Corporatie Timers"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:72
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:70
|
||||
msgid "Past Timers"
|
||||
msgstr "Verlopen Timers."
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -7,17 +7,17 @@
|
||||
# Shen Yang, 2023
|
||||
# 85b931f94c2441449e78b527e0a313ae_baf2e99 <639a60f913241ffb1c9bd90bc93a541f_869335>, 2023
|
||||
# Aaron BuBu <351793078@qq.com>, 2023
|
||||
# Joel Falknau <ozirascal@gmail.com>, 2023
|
||||
# Aika Yu, 2025
|
||||
# Joel Falknau <ozirascal@gmail.com>, 2025
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
|
||||
"POT-Creation-Date: 2026-01-21 15:33+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Aika Yu, 2025\n"
|
||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 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"
|
||||
@@ -64,7 +64,7 @@ msgid "You are not allowed to add or remove these restricted groups: %s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:72
|
||||
#: allianceauth/project_template/project_name/settings/base.py:106
|
||||
#: allianceauth/project_template/project_name/settings/base.py:105
|
||||
msgid "English"
|
||||
msgstr "英语"
|
||||
|
||||
@@ -73,57 +73,57 @@ msgid "Czech"
|
||||
msgstr "捷克语"
|
||||
|
||||
#: allianceauth/authentication/models.py:74
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
#: allianceauth/project_template/project_name/settings/base.py:107
|
||||
msgid "German"
|
||||
msgstr "德语"
|
||||
|
||||
#: allianceauth/authentication/models.py:75
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
msgid "Spanish"
|
||||
msgstr "西班牙语"
|
||||
|
||||
#: allianceauth/authentication/models.py:76
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
#: allianceauth/project_template/project_name/settings/base.py:109
|
||||
msgid "Italian"
|
||||
msgstr "意大利语"
|
||||
|
||||
#: allianceauth/authentication/models.py:77
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
#: allianceauth/project_template/project_name/settings/base.py:110
|
||||
msgid "Japanese"
|
||||
msgstr "日语"
|
||||
|
||||
#: allianceauth/authentication/models.py:78
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
msgid "Korean"
|
||||
msgstr "韩语"
|
||||
|
||||
#: allianceauth/authentication/models.py:79
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
#: allianceauth/project_template/project_name/settings/base.py:112
|
||||
msgid "French"
|
||||
msgstr "法语"
|
||||
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
msgid "Russian"
|
||||
msgstr "俄语"
|
||||
|
||||
#: allianceauth/authentication/models.py:81
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
#: allianceauth/project_template/project_name/settings/base.py:113
|
||||
msgid "Dutch"
|
||||
msgstr "荷兰语"
|
||||
|
||||
#: allianceauth/authentication/models.py:82
|
||||
#: allianceauth/project_template/project_name/settings/base.py:115
|
||||
#: allianceauth/project_template/project_name/settings/base.py:114
|
||||
msgid "Polish"
|
||||
msgstr "波兰语"
|
||||
|
||||
#: allianceauth/authentication/models.py:83
|
||||
#: allianceauth/project_template/project_name/settings/base.py:117
|
||||
#: allianceauth/project_template/project_name/settings/base.py:116
|
||||
msgid "Ukrainian"
|
||||
msgstr "乌克兰语"
|
||||
|
||||
#: allianceauth/authentication/models.py:84
|
||||
#: allianceauth/project_template/project_name/settings/base.py:118
|
||||
#: allianceauth/project_template/project_name/settings/base.py:117
|
||||
msgid "Simplified Chinese"
|
||||
msgstr "简体中文"
|
||||
|
||||
@@ -132,22 +132,30 @@ msgstr "简体中文"
|
||||
msgid "Language"
|
||||
msgstr "语言"
|
||||
|
||||
#: allianceauth/authentication/models.py:105
|
||||
#: allianceauth/authentication/models.py:106
|
||||
#: allianceauth/templates/allianceauth/night-toggle.html:6
|
||||
msgid "Night Mode"
|
||||
msgstr "夜间模式"
|
||||
|
||||
#: allianceauth/authentication/models.py:109
|
||||
#: allianceauth/authentication/models.py:110
|
||||
#: allianceauth/theme/templates/theme/theme_select.html:4
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:126
|
||||
#: allianceauth/authentication/models.py:117
|
||||
msgid "Minimize Sidebar Menu"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:119
|
||||
msgid "Keep the sidebar menu minimized"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:133
|
||||
#, python-format
|
||||
msgid "State changed to: %s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:127
|
||||
#: allianceauth/authentication/models.py:134
|
||||
#, python-format
|
||||
msgid "Your user's state is now: %(state)s"
|
||||
msgstr ""
|
||||
@@ -168,14 +176,12 @@ msgstr "角色"
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:11
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:12
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:4
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:6
|
||||
msgid "Add Character"
|
||||
msgstr "添加角色"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
|
||||
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:15
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:10
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:12
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:8
|
||||
msgid "Change Main"
|
||||
msgstr "修改主要角色"
|
||||
|
||||
@@ -209,8 +215,8 @@ msgstr ""
|
||||
|
||||
#: 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/menu/templates/menu/menu-user.html:158
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:161
|
||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
|
||||
msgid "Token Management"
|
||||
msgstr ""
|
||||
@@ -232,8 +238,8 @@ msgstr ""
|
||||
#: 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:83
|
||||
#: allianceauth/srp/templates/srp/management.html:53
|
||||
#: allianceauth/srp/templates/srp/data.html:81
|
||||
#: allianceauth/srp/templates/srp/management.html:51
|
||||
msgid "Actions"
|
||||
msgstr "操作"
|
||||
|
||||
@@ -246,8 +252,8 @@ msgstr "操作"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:41
|
||||
#: 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
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:54
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:129
|
||||
msgid "Character"
|
||||
msgstr "角色"
|
||||
|
||||
@@ -284,49 +290,49 @@ msgstr "注册"
|
||||
msgid "Invalid or expired activation link."
|
||||
msgstr "激活链接无效或过期"
|
||||
|
||||
#: allianceauth/authentication/views.py:158
|
||||
#: allianceauth/authentication/views.py:159
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot change main character to %(char)s: character owned by a different "
|
||||
"account."
|
||||
msgstr "不能修改主角色为%(char)s:这个角色被另一个账户所拥有"
|
||||
|
||||
#: allianceauth/authentication/views.py:165
|
||||
#: allianceauth/authentication/views.py:166
|
||||
#, python-format
|
||||
msgid "Changed main character to %s"
|
||||
msgstr "修改主角色为%s"
|
||||
|
||||
#: allianceauth/authentication/views.py:179
|
||||
#: allianceauth/authentication/views.py:180
|
||||
#, python-format
|
||||
msgid "Added %(name)s to your account."
|
||||
msgstr "添加%(name)s到您的账户"
|
||||
|
||||
#: allianceauth/authentication/views.py:181
|
||||
#: allianceauth/authentication/views.py:182
|
||||
#, python-format
|
||||
msgid "Failed to add %(name)s to your account: they already have an account."
|
||||
msgstr "添加%(name)s到您的账户失败:他们已经在一个账户中了"
|
||||
|
||||
#: allianceauth/authentication/views.py:226
|
||||
#: allianceauth/authentication/views.py:227
|
||||
msgid ""
|
||||
"Unable to authenticate as the selected character. Please log in with the "
|
||||
"main character associated with this account."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/views.py:293
|
||||
#: allianceauth/authentication/views.py:294
|
||||
msgid "Registration token has expired."
|
||||
msgstr "注册令牌过期。"
|
||||
|
||||
#: allianceauth/authentication/views.py:354
|
||||
#: allianceauth/authentication/views.py:355
|
||||
msgid ""
|
||||
"Sent confirmation email. Please follow the link to confirm your email "
|
||||
"address."
|
||||
msgstr "已经发送了确认邮件。请按照链接确定您的电邮地址"
|
||||
|
||||
#: allianceauth/authentication/views.py:360
|
||||
#: allianceauth/authentication/views.py:361
|
||||
msgid "Confirmed your email address. Please login to continue."
|
||||
msgstr "已确认您的电邮地址。请登录以继续"
|
||||
|
||||
#: allianceauth/authentication/views.py:366
|
||||
#: allianceauth/authentication/views.py:367
|
||||
msgid "Registration of new accounts is not allowed at this time."
|
||||
msgstr ""
|
||||
|
||||
@@ -343,11 +349,11 @@ msgstr "军团成员数据"
|
||||
msgid "Corporations"
|
||||
msgstr "所有公司"
|
||||
|
||||
#: allianceauth/corputils/templates/corputils/base.html:35
|
||||
#: allianceauth/corputils/templates/corputils/base.html:31
|
||||
msgid "Add corporation"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/corputils/templates/corputils/base.html:51
|
||||
#: allianceauth/corputils/templates/corputils/base.html:47
|
||||
msgid "Search all corporations..."
|
||||
msgstr "搜索所有公司"
|
||||
|
||||
@@ -384,6 +390,8 @@ msgstr "注册过的角色"
|
||||
#: allianceauth/corputils/templates/corputils/corpstats.html:125
|
||||
#: allianceauth/corputils/templates/corputils/search.html:18
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:58
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:133
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:122
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:166
|
||||
@@ -495,7 +503,7 @@ msgid "Fleet Activity Tracking"
|
||||
msgstr "舰队活动历史"
|
||||
|
||||
#: allianceauth/fleetactivitytracking/forms.py:6 allianceauth/srp/form.py:8
|
||||
#: allianceauth/srp/templates/srp/management.html:44
|
||||
#: allianceauth/srp/templates/srp/management.html:42
|
||||
msgid "Fleet Name"
|
||||
msgstr "舰队名"
|
||||
|
||||
@@ -754,14 +762,18 @@ msgstr "PAP链接已过期"
|
||||
#: allianceauth/fleetactivitytracking/views.py:323
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Cannot register the fleet participation for {character.character_name}. The "
|
||||
"character needs to be online."
|
||||
"Cannot register the fleet participation for {character_name}. The character "
|
||||
"needs to be online."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/framework/apps.py:16
|
||||
msgid "Framework"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/framework/templates/framework/datatables/process-indicator.html:8
|
||||
msgid "Loading …"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/apps.py:8
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:18
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18
|
||||
@@ -933,8 +945,8 @@ msgid "Group Members"
|
||||
msgstr "群组成员"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:30
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:56
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:119
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:55
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:130
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:33
|
||||
msgid "Organization"
|
||||
msgstr "组织"
|
||||
@@ -946,7 +958,9 @@ msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:85
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:148
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:106
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:160
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:181
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit_row.html:18
|
||||
msgid "(unknown)"
|
||||
msgstr ""
|
||||
@@ -979,7 +993,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:81
|
||||
#: allianceauth/srp/templates/srp/data.html:79
|
||||
msgid "Status"
|
||||
msgstr "状态"
|
||||
|
||||
@@ -992,7 +1006,7 @@ msgid "Hidden"
|
||||
msgstr "已隐藏"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
|
||||
msgid "Open"
|
||||
msgstr "公开"
|
||||
|
||||
@@ -1026,8 +1040,8 @@ msgid "Leaders"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:37
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:57
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:120
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:56
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:131
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:30
|
||||
#: allianceauth/services/modules/openfire/forms.py:6
|
||||
msgid "Group"
|
||||
@@ -1037,18 +1051,10 @@ msgstr "用户组"
|
||||
msgid "Leave"
|
||||
msgstr "离开"
|
||||
|
||||
#: 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:120
|
||||
#: allianceauth/srp/templates/srp/management.html:87
|
||||
msgid "Pending"
|
||||
msgstr "待定"
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88
|
||||
msgid "Request pending"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80
|
||||
msgid "Join"
|
||||
@@ -1058,7 +1064,11 @@ msgstr "加入"
|
||||
msgid "Request"
|
||||
msgstr "申请"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:93
|
||||
msgid "Retract"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:103
|
||||
msgid "No groups available."
|
||||
msgstr "没有可用用户组"
|
||||
|
||||
@@ -1080,22 +1090,22 @@ msgstr "离组的请求"
|
||||
msgid "Group Membership"
|
||||
msgstr "用户组成员"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:93
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:156
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:96
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:171
|
||||
msgid "Accept"
|
||||
msgstr "接受"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:96
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:160
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:99
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:174
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:104
|
||||
msgid "Reject"
|
||||
msgstr "拒绝"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:106
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:117
|
||||
msgid "No group add requests."
|
||||
msgstr "没有加入用户组的请求,小老弟你是不是摇不到人"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:169
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:190
|
||||
msgid "No group leave requests."
|
||||
msgstr "没有离开用户组的请求,小老弟你人缘可以啊?"
|
||||
|
||||
@@ -1187,6 +1197,19 @@ msgstr "你已经有了该组的未决离开请求"
|
||||
msgid "Applied to leave group %(group)s."
|
||||
msgstr "已经离开群组%(group)s"
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:438
|
||||
msgid "You cannot retract that request"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:450
|
||||
#, python-format
|
||||
msgid "Retracted application to group %(group)s."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/views.py:458
|
||||
msgid "You have no open request for that group."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/hrapplications/apps.py:8
|
||||
msgid "HR Applications"
|
||||
msgstr ""
|
||||
@@ -1257,12 +1280,23 @@ msgstr "创建申请"
|
||||
msgid "Username"
|
||||
msgstr "用户名"
|
||||
|
||||
#: 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:118
|
||||
#: allianceauth/srp/templates/srp/management.html:85
|
||||
msgid "Pending"
|
||||
msgstr "待定"
|
||||
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:48
|
||||
#: allianceauth/hrapplications/templates/hrapplications/management.html:141
|
||||
#: 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:112
|
||||
#: allianceauth/srp/templates/srp/data.html:110
|
||||
msgid "Approved"
|
||||
msgstr "通过"
|
||||
|
||||
@@ -1270,7 +1304,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:116
|
||||
#: allianceauth/srp/templates/srp/data.html:114
|
||||
msgid "Rejected"
|
||||
msgstr "拒绝"
|
||||
|
||||
@@ -1474,39 +1508,47 @@ msgid "Notifications"
|
||||
msgstr "通知"
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:77
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:93
|
||||
msgid "Minimize Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:102
|
||||
msgid "Super User"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:83
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:86
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:108
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:111
|
||||
msgid "Alliance Auth Documentation"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:94
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:97
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:119
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:122
|
||||
msgid "Alliance Auth Discord"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:105
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:108
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:130
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:133
|
||||
msgid "Alliance Auth Git"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:118
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:121
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:143
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:146
|
||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
|
||||
msgid "Admin"
|
||||
msgstr "管理员"
|
||||
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:144
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:147
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:169
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:172
|
||||
msgid "Sign Out"
|
||||
msgstr "登出"
|
||||
|
||||
#: 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
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:180
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:183
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:13
|
||||
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:14
|
||||
msgid "Sign In"
|
||||
msgstr "登入"
|
||||
|
||||
@@ -1534,11 +1576,11 @@ msgstr "未读"
|
||||
msgid "Read"
|
||||
msgstr "已读"
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:32
|
||||
#: allianceauth/notifications/templates/notifications/list.html:31
|
||||
msgid "Mark all notifications as read"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:38
|
||||
#: allianceauth/notifications/templates/notifications/list.html:35
|
||||
msgid "Delete all read notifications"
|
||||
msgstr ""
|
||||
|
||||
@@ -1603,12 +1645,12 @@ msgid "Operation Type"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/form.py:17
|
||||
#: allianceauth/srp/templates/srp/management.html:47
|
||||
#: allianceauth/srp/templates/srp/management.html:45
|
||||
msgid "Fleet Commander"
|
||||
msgstr "FC"
|
||||
|
||||
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
|
||||
#: allianceauth/srp/templates/srp/data.html:72
|
||||
#: allianceauth/srp/templates/srp/data.html:70
|
||||
msgid "Additional Info"
|
||||
msgstr "其他信息"
|
||||
|
||||
@@ -1617,7 +1659,7 @@ msgid "(Optional) Describe the operation with a couple of short words."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/add.html:8
|
||||
#: allianceauth/optimer/templates/optimer/management.html:18
|
||||
#: allianceauth/optimer/templates/optimer/management.html:16
|
||||
msgid "Create Operation"
|
||||
msgstr "起一个队"
|
||||
|
||||
@@ -1666,26 +1708,26 @@ msgstr "FC"
|
||||
msgid "Fleet Operation Management"
|
||||
msgstr "管理搞事队"
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:28
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:32
|
||||
#: allianceauth/optimer/templates/optimer/management.html:26
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:30
|
||||
msgid "Current EVE time:"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:36
|
||||
#: allianceauth/optimer/templates/optimer/management.html:34
|
||||
msgid "Next Fleet Operations"
|
||||
msgstr "下一个舰队任务"
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:44
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:63
|
||||
#: allianceauth/optimer/templates/optimer/management.html:42
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:61
|
||||
msgid "No upcoming timers."
|
||||
msgstr "没有快到的时间节点,歇一会吧"
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:52
|
||||
#: allianceauth/optimer/templates/optimer/management.html:50
|
||||
msgid "Past Fleet Operations"
|
||||
msgstr "过去的舰队任务"
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:60
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:81
|
||||
#: allianceauth/optimer/templates/optimer/management.html:58
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:79
|
||||
msgid "No past timers."
|
||||
msgstr "没有已经结束的时间节点啦"
|
||||
|
||||
@@ -1765,9 +1807,9 @@ msgstr "声望"
|
||||
msgid "That service account already exists"
|
||||
msgstr "该服务账户仍然存在"
|
||||
|
||||
#: allianceauth/services/abstract.py:103
|
||||
#: allianceauth/services/abstract.py:105
|
||||
#, python-brace-format
|
||||
msgid "Successfully set your {self.service_name} password"
|
||||
msgid "Successfully set your {service_name} password"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12
|
||||
@@ -2253,7 +2295,7 @@ msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/templates/services/service_status.html:7
|
||||
#: allianceauth/srp/templates/srp/management.html:78
|
||||
#: allianceauth/srp/templates/srp/management.html:76
|
||||
msgid "Disabled"
|
||||
msgstr "失效了"
|
||||
|
||||
@@ -2291,12 +2333,12 @@ msgid "Ship Replacement"
|
||||
msgstr "补损"
|
||||
|
||||
#: allianceauth/srp/form.py:9
|
||||
#: allianceauth/srp/templates/srp/management.html:45
|
||||
#: allianceauth/srp/templates/srp/management.html:43
|
||||
msgid "Fleet Time"
|
||||
msgstr "集结时间"
|
||||
|
||||
#: allianceauth/srp/form.py:10
|
||||
#: allianceauth/srp/templates/srp/management.html:46
|
||||
#: allianceauth/srp/templates/srp/management.html:44
|
||||
msgid "Fleet Doctrine"
|
||||
msgstr "舰队船型"
|
||||
|
||||
@@ -2308,11 +2350,11 @@ msgstr ""
|
||||
msgid "Invalid Link. Please use zkillboard.com or kb.evetools.org"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:46
|
||||
#: allianceauth/srp/form.py:49
|
||||
msgid "Invalid Link. Please post a direct link to a killmail."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/form.py:53
|
||||
#: allianceauth/srp/form.py:56
|
||||
msgid "After Action Report Link"
|
||||
msgstr "战报链接"
|
||||
|
||||
@@ -2345,7 +2387,7 @@ msgid "Give this link to the line members."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:8
|
||||
#: allianceauth/srp/templates/srp/data.html:39
|
||||
#: allianceauth/srp/templates/srp/data.html:37
|
||||
msgid "SRP Fleet Data"
|
||||
msgstr "舰队补损信息"
|
||||
|
||||
@@ -2353,64 +2395,64 @@ msgstr "舰队补损信息"
|
||||
msgid "View Fleets"
|
||||
msgstr "查看舰队"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:26
|
||||
#: allianceauth/srp/templates/srp/data.html:24
|
||||
msgid "Mark Incomplete"
|
||||
msgstr "标记为未完成"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:30
|
||||
#: allianceauth/srp/templates/srp/data.html:28
|
||||
msgid "Mark Completed"
|
||||
msgstr "标记为已完成"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:48
|
||||
#: allianceauth/srp/templates/srp/data.html:142
|
||||
#: allianceauth/srp/templates/srp/data.html:46
|
||||
#: allianceauth/srp/templates/srp/data.html:140
|
||||
msgid "Total Losses:"
|
||||
msgstr "损失总额:"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:49
|
||||
#: allianceauth/srp/templates/srp/data.html:143
|
||||
#: allianceauth/srp/templates/srp/management.html:36
|
||||
#: allianceauth/srp/templates/srp/data.html:47
|
||||
#: allianceauth/srp/templates/srp/data.html:141
|
||||
#: allianceauth/srp/templates/srp/management.html:34
|
||||
msgid "Total ISK Cost:"
|
||||
msgstr "ISK花费总额:"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:60
|
||||
#: allianceauth/srp/templates/srp/data.html:154
|
||||
#: allianceauth/srp/templates/srp/data.html:58
|
||||
#: allianceauth/srp/templates/srp/data.html:152
|
||||
msgid "Are you sure you want to delete SRP requests?"
|
||||
msgstr "老哥,你确定要删了补损请求么?"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:70
|
||||
#: allianceauth/srp/templates/srp/data.html:68
|
||||
msgid "Pilot Name"
|
||||
msgstr "玩家ID"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:71
|
||||
#: allianceauth/srp/templates/srp/data.html:69
|
||||
msgid "Killboard Link"
|
||||
msgstr "KB网链接"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:73
|
||||
#: allianceauth/srp/templates/srp/data.html:71
|
||||
msgid "Ship Type"
|
||||
msgstr "船型"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:74
|
||||
#: allianceauth/srp/templates/srp/data.html:72
|
||||
msgid "Killboard Loss Amt"
|
||||
msgstr "KB网总损失"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:76
|
||||
#: allianceauth/srp/templates/srp/data.html:74
|
||||
msgid "SRP ISK Cost"
|
||||
msgstr "补损ISK花费"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:77
|
||||
#: allianceauth/srp/templates/srp/data.html:75
|
||||
msgid "Click value to edit Enter to save & next ESC to cancel"
|
||||
msgstr "点击数值就可以编辑啦,按回车确认,按ESC取消"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:80
|
||||
#: allianceauth/srp/templates/srp/data.html:78
|
||||
msgid "Post Time"
|
||||
msgstr "发布时间"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:102
|
||||
#: allianceauth/srp/templates/srp/management.html:70
|
||||
#: allianceauth/srp/templates/srp/data.html:100
|
||||
#: allianceauth/srp/templates/srp/management.html:68
|
||||
msgid "Link"
|
||||
msgstr "链接"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:163
|
||||
#: allianceauth/srp/templates/srp/data.html:161
|
||||
msgid "No SRP requests for this fleet."
|
||||
msgstr "这次起队没有补损请求!大捷"
|
||||
|
||||
@@ -2422,39 +2464,39 @@ msgstr "补损管理"
|
||||
msgid "View All"
|
||||
msgstr "查看全部"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:27
|
||||
#: allianceauth/srp/templates/srp/management.html:25
|
||||
msgid "Add SRP Fleet"
|
||||
msgstr "添加补损舰队"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:48
|
||||
#: allianceauth/srp/templates/srp/management.html:46
|
||||
msgid "Fleet AAR"
|
||||
msgstr "舰队战报"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:49
|
||||
#: allianceauth/srp/templates/srp/management.html:47
|
||||
msgid "Fleet SRP Code"
|
||||
msgstr "补损编号"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:50
|
||||
#: allianceauth/srp/templates/srp/management.html:48
|
||||
msgid "Fleet ISK Cost"
|
||||
msgstr "舰队ISK花费"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:51
|
||||
#: allianceauth/srp/templates/srp/management.html:49
|
||||
msgid "SRP Status"
|
||||
msgstr "补损状态"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:52
|
||||
#: allianceauth/srp/templates/srp/management.html:50
|
||||
msgid "Pending Requests"
|
||||
msgstr "待处理请求"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:91
|
||||
#: allianceauth/srp/templates/srp/management.html:89
|
||||
msgid "Completed"
|
||||
msgstr "已完成"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:108
|
||||
#: allianceauth/srp/templates/srp/management.html:106
|
||||
msgid "Are you sure you want to delete this SRP code and its contents?"
|
||||
msgstr "老哥,你确认要把这次补损的编号和内容都删了?"
|
||||
|
||||
#: allianceauth/srp/templates/srp/management.html:129
|
||||
#: allianceauth/srp/templates/srp/management.html:127
|
||||
msgid "No SRP fleets created."
|
||||
msgstr "没有创建任何补损舰队,你快灭灯了吧?"
|
||||
|
||||
@@ -2586,71 +2628,124 @@ msgstr "找不到ID是%(requestid)s的补损申请呀,老哥眼花了?"
|
||||
msgid "Saved changes to SRP fleet %(fleetname)s"
|
||||
msgstr "你做的修改已经保存到%(fleetname)s这个补损舰队啦,尽情白给吧!"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/esi_check.html:4
|
||||
#: allianceauth/templates/allianceauth/admin-status/esi_check.html:5
|
||||
msgid "Your Server received an ESI error response code of "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:8
|
||||
msgid "Alliance Auth Notifications"
|
||||
msgstr "系统通知"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
|
||||
msgid "No notifications at this time"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:11
|
||||
msgid "second"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
|
||||
msgid "Powered by GitLab"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:12
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:35
|
||||
msgid "Support Discord"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:13
|
||||
msgid "minute"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:49
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
|
||||
msgid "Software Version"
|
||||
msgstr "软件版本"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:14
|
||||
msgid "minutes"
|
||||
msgstr "分钟数"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:56
|
||||
msgid "Current"
|
||||
msgstr "当前版本"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:63
|
||||
msgid "Latest Stable"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
|
||||
msgid "hour"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
|
||||
msgid "Update available"
|
||||
msgstr "有更新!"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
|
||||
msgid "Latest Pre-Release"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:16
|
||||
msgid "hours"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:81
|
||||
msgid "Pre-Release available"
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:17
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
|
||||
msgid "Task Queue"
|
||||
msgstr "任务队列"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:96
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Status of %(total)s processed tasks • last %(latest)s\n"
|
||||
" "
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:18
|
||||
msgid "ERROR"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:112
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:19
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:113
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
|
||||
msgid "queued"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:21
|
||||
msgid "succeeded"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:22
|
||||
msgid "retried"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:23
|
||||
msgid "failed"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
|
||||
msgid "Debug mode"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:34
|
||||
msgid ""
|
||||
"Debug mode is currently turned on!<br>Make sure to turn it off as soon as "
|
||||
"you are finished testing."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:46
|
||||
msgid "Alliance Auth Notifications"
|
||||
msgstr "系统通知"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:58
|
||||
msgid "No notifications at this time"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:67
|
||||
msgid "Powered by GitLab"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:73
|
||||
msgid "Support Discord"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:87
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
|
||||
msgid "Software Version"
|
||||
msgstr "软件版本"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:94
|
||||
msgid "Current"
|
||||
msgstr "当前版本"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:101
|
||||
msgid "Latest Stable"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:106
|
||||
msgid "Update available"
|
||||
msgstr "有更新!"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:114
|
||||
msgid "Latest Pre-Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:119
|
||||
msgid "Pre-Release available"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:129
|
||||
msgid "Task Queue"
|
||||
msgstr "任务队列"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:134
|
||||
msgid ""
|
||||
"\n"
|
||||
" Status of <span id=\"total-task-count\">?</span> processed tasks • last <span id=\"celery-uptime\">?</span>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
|
||||
msgid "AA Documentation"
|
||||
msgstr ""
|
||||
@@ -2874,7 +2969,7 @@ msgid "Theft"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:54
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:52
|
||||
msgid "Upcoming Timers"
|
||||
msgstr ""
|
||||
|
||||
@@ -2902,7 +2997,7 @@ msgid "Create Timer"
|
||||
msgstr "创建时间计划表"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:22
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:20
|
||||
msgid "Create Structure Timer"
|
||||
msgstr "创建建筑时间表"
|
||||
|
||||
@@ -2920,11 +3015,11 @@ msgstr "建筑"
|
||||
msgid "Structure Timer Management"
|
||||
msgstr "管理建筑时间表"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:41
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:39
|
||||
msgid "Corporation Timers"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:72
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:70
|
||||
msgid "Past Timers"
|
||||
msgstr "已经过去的时间节点"
|
||||
|
||||
@@ -2937,36 +3032,36 @@ msgstr "已经把%(system)s星系里%(time)s的时间节点设置好了!CTA!
|
||||
msgid "Saved changes to the timer."
|
||||
msgstr "保存至新的计划表"
|
||||
|
||||
#: allianceauth/views.py:55
|
||||
#: allianceauth/views.py:78
|
||||
msgid "Bad Request"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:57 allianceauth/views.py:87
|
||||
#: allianceauth/views.py:80 allianceauth/views.py:110
|
||||
msgid ""
|
||||
"Auth encountered an error processing your request, please try again. If the "
|
||||
"error persists, please contact the administrators."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:65
|
||||
#: allianceauth/views.py:88
|
||||
msgid "Permission Denied"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:67
|
||||
#: allianceauth/views.py:90
|
||||
msgid ""
|
||||
"You do not have permission to access the requested page. If you believe this"
|
||||
" is in error please contact the administrators."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:75
|
||||
#: allianceauth/views.py:98
|
||||
msgid "Page Not Found"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:77
|
||||
#: allianceauth/views.py:100
|
||||
msgid ""
|
||||
"Page does not exist. If you believe this is in error please contact the "
|
||||
"administrators. "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/views.py:85
|
||||
#: allianceauth/views.py:108
|
||||
msgid "Internal Server Error"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import annotations
|
||||
from __future__ import annotations # Still needed for Python 3.8, replaced with better implementations in Py39+
|
||||
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
@@ -72,6 +72,31 @@
|
||||
|
||||
{% theme_select %}
|
||||
|
||||
{% if user.is_authenticated and not request.is_mobile_device %}
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><h6 class="dropdown-header">{% translate "Sidebar" %}</h6></li>
|
||||
|
||||
<li>
|
||||
<form class="dropdown-item" action="{% url 'minimize_sidebar' %}?next={{ request.path|urlencode }}" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="form-check form-switch">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
role="switch"
|
||||
id="toggle-sidebar"
|
||||
onchange="this.form.submit()"
|
||||
{% if request.session.MINIMIZE_SIDEBAR %}checked{% endif %}
|
||||
>
|
||||
<label class="form-check-label" for="toggle-sidebar">
|
||||
{% translate "Minimize Sidebar" %}
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user.is_superuser %}
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><h6 class="dropdown-header">{% translate "Super User" %}</h6></li>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{% load menu_menu_items %}
|
||||
|
||||
<div class="col-auto px-0">
|
||||
<div class="collapse collapse-horizontal" tabindex="-1" id="sidebar">
|
||||
<div class="collapse collapse-horizontal {% if user.is_authenticated and not request.is_mobile_device and not request.session.MINIMIZE_SIDEBAR %}show{% endif %}" tabindex="-1" id="sidebar">
|
||||
<div>
|
||||
<div class="nav-padding navbar-dark text-bg-dark px-0 d-flex flex-column overflow-hidden vh-100 {% if not user.is_authenticated %}position-relative{% endif %}">
|
||||
{% if user.is_authenticated %}
|
||||
|
||||
65
allianceauth/middleware.py
Normal file
65
allianceauth/middleware.py
Normal file
@@ -0,0 +1,65 @@
|
||||
"""
|
||||
Alliance Auth Middleware
|
||||
"""
|
||||
|
||||
from user_agents import parse
|
||||
|
||||
|
||||
class DeviceDetectionMiddleware:
|
||||
"""
|
||||
Middleware to detect the type of device making the request.
|
||||
Sets flags on the request object for easy access in views and templates.
|
||||
|
||||
Flags include:
|
||||
- is_mobile: True if the device is a mobile phone.
|
||||
- is_tablet: True if the device is a tablet.
|
||||
- is_mobile_device: True if the device is either a mobile phone or a tablet.
|
||||
- is_touch_capable: True if the device has touch capabilities.
|
||||
- is_pc: True if the device is a desktop or laptop computer.
|
||||
- is_bot: True if the device is identified as a bot or crawler.
|
||||
"""
|
||||
|
||||
def __init__(self, get_response):
|
||||
"""
|
||||
Initialize the middleware with the get_response callable.
|
||||
|
||||
:param get_response:
|
||||
:type get_response:
|
||||
"""
|
||||
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
"""
|
||||
Process the incoming request to determine if it's from a mobile device.
|
||||
|
||||
This method is called when the middleware is invoked. It inspects the
|
||||
`user-agent` header of the incoming HTTP request to determine the type
|
||||
of client making the request (e.g., mobile, tablet, PC, bot, etc.).
|
||||
Flags are set on the `request` object to indicate the client type.
|
||||
|
||||
:param request: The HTTP request object.
|
||||
:type request: HttpRequest
|
||||
:return: The HTTP response object after processing the request.
|
||||
:rtype: HttpResponse
|
||||
"""
|
||||
|
||||
# Retrieve the user-agent string from the request headers
|
||||
user_agent_string = request.headers.get("user-agent", "")
|
||||
|
||||
# Parse the user-agent string to extract client information
|
||||
user_agent = parse(user_agent_string)
|
||||
|
||||
# Set flags on the request object based on the client type
|
||||
request.is_mobile = user_agent.is_mobile # True if the client is a mobile phone
|
||||
request.is_tablet = user_agent.is_tablet # True if the client is a tablet
|
||||
request.is_mobile_device = user_agent.is_mobile or user_agent.is_tablet # True if mobile phone or tablet
|
||||
request.is_touch_capable = user_agent.is_touch_capable # True if the client supports touch input
|
||||
request.is_pc = user_agent.is_pc # True if the client is a PC
|
||||
request.is_bot = user_agent.is_bot # True if the client is a bot
|
||||
|
||||
# Pass the request to the next middleware or view and get the response
|
||||
response = self.get_response(request)
|
||||
|
||||
# Return the processed response
|
||||
return response
|
||||
@@ -33,7 +33,7 @@
|
||||
{% include "framework/header/nav-collapse-icon.html" with fa_icon="fa-solid fa-check-double" url=nav_item_link title=nav_item_title icon_on_mobile=True %}
|
||||
|
||||
{% translate "Delete all read notifications" as nav_item_title %}
|
||||
{% url "notifications:mark_all_read" as nav_item_link %}
|
||||
{% url "notifications:delete_all_read" as nav_item_link %}
|
||||
{% include "framework/header/nav-collapse-icon.html" with fa_icon="fa-solid fa-trash-can" url=nav_item_link title=nav_item_title icon_on_mobile=True %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@@ -65,83 +65,85 @@
|
||||
{% include 'bundles/timers-js.html' %}
|
||||
|
||||
<script>
|
||||
// Data
|
||||
const timers = [
|
||||
{% for op in optimer %}
|
||||
{
|
||||
'id': {{ op.id }},
|
||||
'start': moment("{{ op.start | date:"c" }}"),
|
||||
'expired': false
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
$(document).ready(() => {
|
||||
// Data
|
||||
const timers = [
|
||||
{% for op in optimer %}
|
||||
{
|
||||
'id': {{ op.id }},
|
||||
'start': moment("{{ op.start | date:"c" }}"),
|
||||
'expired': false
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
|
||||
/**
|
||||
* Update a timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const updateTimer = (timer) => {
|
||||
if (timer.start.isAfter(Date.now())) {
|
||||
const duration = moment.duration(timer.start - moment(), 'milliseconds');
|
||||
/**
|
||||
* Update a timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const updateTimer = (timer) => {
|
||||
if (timer.start.isAfter(Date.now())) {
|
||||
const duration = moment.duration(timer.start - moment(), 'milliseconds');
|
||||
|
||||
document.getElementById("countdown" + timer.id).innerHTML = getDurationString(duration);
|
||||
} else {
|
||||
timer.expired = true;
|
||||
document.getElementById("countdown" + timer.id).innerHTML = getDurationString(duration);
|
||||
} else {
|
||||
timer.expired = true;
|
||||
|
||||
document.getElementById("countdown" + timer.id).innerHTML = "";
|
||||
}
|
||||
};
|
||||
document.getElementById("countdown" + timer.id).innerHTML = "";
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Update all timers
|
||||
*/
|
||||
const updateAllTimers = () => {
|
||||
const l = timers.length;
|
||||
/**
|
||||
* Update all timers
|
||||
*/
|
||||
const updateAllTimers = () => {
|
||||
const l = timers.length;
|
||||
|
||||
for (let i=0; i < l; ++i) {
|
||||
if (timers[i].expired) continue;
|
||||
for (let i=0; i < l; ++i) {
|
||||
if (timers[i].expired) continue;
|
||||
|
||||
updateTimer(timers[i]);
|
||||
}
|
||||
};
|
||||
updateTimer(timers[i]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the local time info for the timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const setLocalTime = (timer) => {
|
||||
document.getElementById("localtime" + timer.id).innerHTML = timer.start.format("ddd @ LT");
|
||||
};
|
||||
/**
|
||||
* Set the local time info for the timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const setLocalTime = (timer) => {
|
||||
document.getElementById("localtime" + timer.id).innerHTML = timer.start.format("ddd @ LT");
|
||||
};
|
||||
|
||||
/**
|
||||
* Set all local time fields
|
||||
*/
|
||||
const setAllLocalTimes = () => {
|
||||
const l = timers.length;
|
||||
/**
|
||||
* Set all local time fields
|
||||
*/
|
||||
const setAllLocalTimes = () => {
|
||||
const l = timers.length;
|
||||
|
||||
for (let i=0; i < l; ++i) {
|
||||
setLocalTime(timers[i]);
|
||||
}
|
||||
};
|
||||
for (let i=0; i < l; ++i) {
|
||||
setLocalTime(timers[i]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the current EVE time as a string
|
||||
* @returns {string} EVE time string
|
||||
*/
|
||||
const updateClock = () => {
|
||||
document.getElementById("current-time").innerHTML = getCurrentEveTimeString();
|
||||
};
|
||||
/**
|
||||
* Get the current EVE time as a string
|
||||
* @returns {string} EVE time string
|
||||
*/
|
||||
const updateClock = () => {
|
||||
document.getElementById("current-time").innerHTML = getCurrentEveTimeString();
|
||||
};
|
||||
|
||||
const timedUpdate = () => {
|
||||
updateClock();
|
||||
updateAllTimers();
|
||||
};
|
||||
const timedUpdate = () => {
|
||||
updateClock();
|
||||
updateAllTimers();
|
||||
};
|
||||
|
||||
// Set initial values
|
||||
setAllLocalTimes();
|
||||
timedUpdate();
|
||||
// Set initial values
|
||||
setAllLocalTimes();
|
||||
timedUpdate();
|
||||
|
||||
// Start timed updates
|
||||
setInterval(timedUpdate, 1000);
|
||||
// Start timed updates
|
||||
setInterval(timedUpdate, 1000);
|
||||
});
|
||||
</script>
|
||||
{% endblock content %}
|
||||
|
||||
@@ -88,6 +88,7 @@ MIDDLEWARE = [
|
||||
"django.middleware.security.SecurityMiddleware",
|
||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||
"allianceauth.authentication.middleware.UserSettingsMiddleware",
|
||||
"allianceauth.middleware.DeviceDetectionMiddleware",
|
||||
"django.middleware.locale.LocaleMiddleware",
|
||||
"django.middleware.common.CommonMiddleware",
|
||||
"django.middleware.csrf.CsrfViewMiddleware",
|
||||
|
||||
@@ -57,10 +57,10 @@ DATABASES['default'] = {
|
||||
# CCP's developer portal
|
||||
# Logging in to auth requires the publicData scope (can be overridden through the
|
||||
# LOGIN_TOKEN_SCOPES setting). Other apps may require more (see their docs).
|
||||
ESI_SSO_CALLBACK_URL = f"{SITE_URL}/sso/callback" # Do NOT change this line!
|
||||
ESI_SSO_CLIENT_ID = ''
|
||||
ESI_SSO_CLIENT_SECRET = ''
|
||||
ESI_SSO_CALLBACK_URL = f"{SITE_URL}/sso/callback"
|
||||
ESI_USER_CONTACT_EMAIL = '' # A server maintainer that CCP can contact in case of issues.
|
||||
ESI_USER_CONTACT_EMAIL = '' # A server maintainer that CCP can contact in case of issues.
|
||||
|
||||
# By default, emails are validated before new users can log in.
|
||||
# It's recommended to use a free service like SparkPost or Elastic Email to send email.
|
||||
|
||||
@@ -1,22 +1,37 @@
|
||||
[supervisord]
|
||||
environment =
|
||||
AA_USER = allianceserver, ; The user under which the processes will run
|
||||
AA_PROJECT_NAME = {{ project_name }}, ; The name of the project
|
||||
AA_PROJECT_DIRECTORY = {{ project_directory }}, ; The directory of the project
|
||||
AA_VENV_DIRECTORY = {{ venv_directory }}, ; The directory of the virtual environment
|
||||
AA_COMMAND_CELERY = {{ celery }}, ; The command to run Celery
|
||||
AA_COMMAND_GUNICORN = {{ gunicorn }}, ; The command to run Gunicorn
|
||||
AA_COMMAND_MEMMON = {{ memmon }} ; The command to run Memmon
|
||||
|
||||
[program:beat]
|
||||
command = {{ celery }} -A {{ project_name }} beat
|
||||
directory = {{ project_directory }}
|
||||
user = allianceserver
|
||||
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log
|
||||
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log
|
||||
command = %(ENV_AA_COMMAND_CELERY)s
|
||||
-A %(ENV_AA_PROJECT_NAME)s beat
|
||||
directory = %(ENV_AA_PROJECT_DIRECTORY)s
|
||||
user = %(ENV_AA_USER)s
|
||||
stdout_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/%(program_name)s.log
|
||||
stderr_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/%(program_name)s.log
|
||||
autostart = true
|
||||
autorestart = true
|
||||
startsecs = 10
|
||||
priority = 998
|
||||
|
||||
[program:worker]
|
||||
command = {{ celery }} -A {{ project_name }} worker --pool=threads --concurrency=5 -n %(program_name)s_%(process_num)02d
|
||||
directory = {{ project_directory }}
|
||||
user = allianceserver
|
||||
command = %(ENV_AA_COMMAND_CELERY)s
|
||||
-A %(ENV_AA_PROJECT_NAME)s worker
|
||||
--pool=threads
|
||||
--concurrency=5
|
||||
-n %(program_name)s_%(process_num)02d
|
||||
directory = %(ENV_AA_PROJECT_DIRECTORY)s
|
||||
user = %(ENV_AA_USER)s
|
||||
numprocs = 1
|
||||
process_name = %(program_name)s_%(process_num)02d
|
||||
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log
|
||||
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log
|
||||
stdout_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/%(program_name)s.log
|
||||
stderr_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/%(program_name)s.log
|
||||
autostart = true
|
||||
autorestart = true
|
||||
startsecs = 10
|
||||
@@ -26,22 +41,26 @@ priority = 998
|
||||
|
||||
{% if gunicorn %}
|
||||
[program:gunicorn]
|
||||
user = allianceserver
|
||||
directory = {{ project_directory }}
|
||||
command = {{ gunicorn }} {{ project_name }}.wsgi --workers=3 --timeout 120
|
||||
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log
|
||||
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log
|
||||
user = %(ENV_AA_USER)s
|
||||
directory = %(ENV_AA_PROJECT_DIRECTORY)s
|
||||
command = %(ENV_AA_COMMAND_GUNICORN)s %(ENV_AA_PROJECT_NAME)s.wsgi
|
||||
--workers=3
|
||||
--timeout 120
|
||||
stdout_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/%(program_name)s.log
|
||||
stderr_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/%(program_name)s.log
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopsignal = INT
|
||||
{% endif %}
|
||||
|
||||
[eventlistener:memmon]
|
||||
command = {{ memmon }} -p worker_00=256MB -p gunicorn=256MB
|
||||
directory = {{ project_directory }}
|
||||
command = %(ENV_AA_COMMAND_MEMMON)s
|
||||
-p worker_00=256MB
|
||||
-p gunicorn=256MB
|
||||
directory = %(ENV_AA_PROJECT_DIRECTORY)s
|
||||
events = TICK_60
|
||||
stdout_logfile = {{ project_directory }}/log/memmon.log
|
||||
stderr_logfile = {{ project_directory }}/log/memmon.log
|
||||
stdout_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/memmon.log
|
||||
stderr_logfile = %(ENV_AA_PROJECT_DIRECTORY)s/log/memmon.log
|
||||
|
||||
[group:{{ project_name }}]
|
||||
programs = beat,worker{% if gunicorn %},gunicorn{% endif %}
|
||||
|
||||
@@ -100,7 +100,10 @@ class BaseSetPasswordServiceAccountView(ServicesCRUDMixin, BaseServiceView, Upda
|
||||
def post(self, request, *args, **kwargs):
|
||||
result = super().post(request, *args, **kwargs)
|
||||
if self.get_form().is_valid():
|
||||
messages.success(request, _(f"Successfully set your {self.service_name} password"))
|
||||
messages.success(
|
||||
request,
|
||||
_("Successfully set your {service_name} password").format(service_name=self.service_name)
|
||||
)
|
||||
return result
|
||||
|
||||
|
||||
|
||||
@@ -100,13 +100,13 @@ def jabber_broadcast_view(request):
|
||||
if main_char is not None:
|
||||
message_to_send = form.cleaned_data['message'] + "\n##### SENT BY: " + "[" + main_char.corporation_ticker + "]" + \
|
||||
main_char.character_name + " TO: " + \
|
||||
form.cleaned_data['group'] + " WHEN: " + datetime.datetime.utcnow().strftime(
|
||||
form.cleaned_data['group'] + " WHEN: " + datetime.datetime.now(datetime.timezone.utc).strftime(
|
||||
"%Y-%m-%d %H:%M:%S") + " #####\n##### Replies are NOT monitored #####\n"
|
||||
group_to_send = form.cleaned_data['group']
|
||||
|
||||
else:
|
||||
message_to_send = form.cleaned_data['message'] + "\n##### SENT BY: " + "No character but can send pings?" + " TO: " + \
|
||||
form.cleaned_data['group'] + " WHEN: " + datetime.datetime.utcnow().strftime(
|
||||
form.cleaned_data['group'] + " WHEN: " + datetime.datetime.now(datetime.timezone.utc).strftime(
|
||||
"%Y-%m-%d %H:%M:%S") + " #####\n##### Replies are NOT monitored #####\n"
|
||||
group_to_send = form.cleaned_data['group']
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import random
|
||||
import string
|
||||
import calendar
|
||||
import re
|
||||
from datetime import datetime
|
||||
import datetime as dt
|
||||
|
||||
from passlib.apps import phpbb3_context
|
||||
from django.db import connections
|
||||
@@ -128,7 +128,7 @@ class Phpbb3Manager:
|
||||
|
||||
@staticmethod
|
||||
def __get_current_utc_date():
|
||||
d = datetime.utcnow()
|
||||
d = dt.datetime.now(dt.timezone.utc)
|
||||
unixtime = calendar.timegm(d.utctimetuple())
|
||||
return unixtime
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import random
|
||||
import string
|
||||
import calendar
|
||||
from datetime import datetime
|
||||
import datetime as dt
|
||||
import hashlib
|
||||
import logging
|
||||
import re
|
||||
@@ -105,7 +105,7 @@ class SmfManager:
|
||||
|
||||
@staticmethod
|
||||
def get_current_utc_date():
|
||||
d = datetime.utcnow()
|
||||
d = dt.datetime.now(dt.timezone.utc)
|
||||
unixtime = calendar.timegm(d.utctimetuple())
|
||||
return unixtime
|
||||
|
||||
|
||||
@@ -111,11 +111,11 @@ class Teamspeak3Manager:
|
||||
outlist = {}
|
||||
|
||||
if type(groups) == list:
|
||||
logger.debug("Recieved multiple groups. Iterating.")
|
||||
logger.debug("Received multiple groups. Iterating.")
|
||||
for group in groups:
|
||||
outlist[group['keys']['name']] = group['keys']['sgid']
|
||||
elif type(groups) == dict:
|
||||
logger.debug("Recieved single group.")
|
||||
logger.debug("Received single group.")
|
||||
outlist[groups['keys']['name']] = groups['keys']['sgid']
|
||||
logger.debug("Returning name/id pairing: %s" % outlist)
|
||||
return outlist
|
||||
|
||||
@@ -34,6 +34,9 @@ class SrpFleetUserRequestForm(forms.Form):
|
||||
_("Invalid Link. Please use zkillboard.com or kb.evetools.org")
|
||||
)
|
||||
|
||||
if re.match(r"^http[s]?:\/\/zkillboard\.com\/", data) and not data.endswith("/"):
|
||||
data += "/"
|
||||
|
||||
# Check if it's an actual kill mail
|
||||
if not any(
|
||||
re.match(regex, data)
|
||||
|
||||
27
allianceauth/srp/tests/test_form.py
Normal file
27
allianceauth/srp/tests/test_form.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from django.test import TestCase
|
||||
|
||||
from allianceauth.srp.form import SrpFleetUserRequestForm
|
||||
|
||||
|
||||
class TestForms(TestCase):
|
||||
|
||||
def test_allow_missing_trailing_slash_zkillboard(self):
|
||||
form = SrpFleetUserRequestForm(
|
||||
data = {
|
||||
"killboard_link": "https://zkillboard.com/kill/130429493",
|
||||
"additional_info": "Details",
|
||||
}
|
||||
)
|
||||
form.cleaned_data = {"killboard_link": "https://zkillboard.com/kill/130429493"}
|
||||
|
||||
self.assertEqual("https://zkillboard.com/kill/130429493/", form.clean_killboard_link())
|
||||
|
||||
def test_not_add_trailling_slash_kb_evetools(self):
|
||||
form = SrpFleetUserRequestForm(
|
||||
data = {
|
||||
"killboard_link": "https://kb.evetools.org/kill/130429493",
|
||||
}
|
||||
)
|
||||
form.cleaned_data = {"killboard_link": "https://kb.evetools.org/kill/130429493"}
|
||||
|
||||
self.assertEqual("https://kb.evetools.org/kill/130429493", form.clean_killboard_link())
|
||||
@@ -0,0 +1,207 @@
|
||||
/* global fetchGet, numberFormatter, taskQueueSettings */
|
||||
|
||||
$(document).ready(() => {
|
||||
'use strict';
|
||||
|
||||
const elements = {
|
||||
total: document.getElementById('total-task-count'),
|
||||
uptime: document.getElementById('celery-uptime'),
|
||||
running: document.getElementById('running-task-count'),
|
||||
queued: document.getElementById('queued-tasks-count'),
|
||||
succeeded: document.getElementById('succeeded-tasks-count'),
|
||||
retried: document.getElementById('retried-tasks-count'),
|
||||
failed: document.getElementById('failed-tasks-count')
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetches the task queue status and updates the UI elements accordingly.
|
||||
* It retrieves the total number of tasks, running tasks, queued tasks,
|
||||
* succeeded tasks, retried tasks, and failed tasks, and updates the
|
||||
* corresponding HTML elements with the fetched data.
|
||||
* It also updates the progress bars for succeeded, retried, and failed tasks.
|
||||
* The function is called immediately and then every 30 seconds to keep the
|
||||
* task queue status up to date.
|
||||
*/
|
||||
const updateTaskCount = () => {
|
||||
fetchGet({url: taskQueueSettings.url})
|
||||
.then((data) => {
|
||||
const elemProgressBar = document.getElementById('celery-tasks-progress-bar');
|
||||
const progressElements = {
|
||||
succeeded: {
|
||||
bar: document.getElementById('celery-progress-bar-succeeded'),
|
||||
text: document.getElementById('celery-progress-bar-succeeded-progress')
|
||||
},
|
||||
retried: {
|
||||
bar: document.getElementById('celery-progress-bar-retried'),
|
||||
text: document.getElementById('celery-progress-bar-retried-progress')
|
||||
},
|
||||
failed: {
|
||||
bar: document.getElementById('celery-progress-bar-failed'),
|
||||
text: document.getElementById('celery-progress-bar-failed-progress')
|
||||
}
|
||||
};
|
||||
|
||||
// Assign progress data from the fetched data to variables
|
||||
const {
|
||||
earliest_task: earliestTask,
|
||||
tasks_total: tasksTotal,
|
||||
tasks_running: tasksRunning,
|
||||
tasks_queued: tasksQueued,
|
||||
tasks_succeeded: tasksSucceeded,
|
||||
tasks_retried: tasksRetried,
|
||||
tasks_failed: tasksFailed
|
||||
} = data;
|
||||
|
||||
/**
|
||||
* Updates the text content of the specified HTML element with the given value.
|
||||
* If the value is null, it sets the text to 'N/A'.
|
||||
* Otherwise, it formats the number using the locale-specific format.
|
||||
*
|
||||
* @param {HTMLElement} element The HTML element to update.
|
||||
* @param {number|null} value The value to set in the element.
|
||||
*/
|
||||
const updateTaskCount = (element, value) => {
|
||||
element.textContent = value === null ? taskQueueSettings.l10n.na : numberFormatter({value: value, locales: taskQueueSettings.l10n.language});
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculates the time since the given timestamp and returns a formatted string.
|
||||
* If the timestamp is null or undefined, it returns 'N/A'.
|
||||
* The returned string is in the format of "X hours, Y minutes" or "X minutes, Y seconds".
|
||||
*
|
||||
* @param {string|null} timestamp The timestamp to calculate the time since.
|
||||
* @returns {string} A formatted string representing the time since the timestamp.
|
||||
*/
|
||||
const timeSince = (timestamp) => {
|
||||
if (!timestamp) {
|
||||
return taskQueueSettings.l10n.na;
|
||||
}
|
||||
|
||||
const diffSecs = Math.floor((Date.now() - new Date(timestamp)) / 1000);
|
||||
|
||||
if (diffSecs >= 3600) {
|
||||
const hours = Math.floor(diffSecs / 3600);
|
||||
const minutes = Math.floor((diffSecs % 3600) / 60);
|
||||
|
||||
if (minutes > 0) {
|
||||
const hourText = hours === 1 ? taskQueueSettings.l10n.hour_singular : taskQueueSettings.l10n.hour_plural;
|
||||
const minuteText = minutes === 1 ? taskQueueSettings.l10n.minute_singular : taskQueueSettings.l10n.minute_plural;
|
||||
|
||||
return `${hours} ${hourText}, ${minutes} ${minuteText}`;
|
||||
}
|
||||
|
||||
const hourText = hours === 1 ? taskQueueSettings.l10n.hour_singular : taskQueueSettings.l10n.hour_plural;
|
||||
|
||||
return `${hours} ${hourText}`;
|
||||
}
|
||||
|
||||
const units = [
|
||||
[
|
||||
60,
|
||||
taskQueueSettings.l10n.minute_singular,
|
||||
taskQueueSettings.l10n.minute_plural
|
||||
],
|
||||
[
|
||||
1,
|
||||
taskQueueSettings.l10n.second_singular,
|
||||
taskQueueSettings.l10n.second_plural
|
||||
]
|
||||
];
|
||||
|
||||
for (const [seconds, singular, plural] of units) {
|
||||
const value = Math.floor(diffSecs / seconds);
|
||||
|
||||
if (value > 0) {
|
||||
return `${value} ${value > 1 ? plural : singular}`;
|
||||
}
|
||||
}
|
||||
|
||||
return `0 ${taskQueueSettings.l10n.second_plural}`;
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates the progress bar element and its text content based on the given value and total.
|
||||
* It calculates the percentage of completion and updates the aria attributes and styles accordingly.
|
||||
*
|
||||
* @param {HTMLElement} element The progress bar element to update.
|
||||
* @param {HTMLElement} textElement The text element to update with the percentage.
|
||||
* @param {number} value The current value to set in the progress bar.
|
||||
* @param {number} total The total value for calculating the percentage.
|
||||
*/
|
||||
const updateProgressBar = (element, textElement, value, total) => {
|
||||
const percentage = total ? (value / total) * 100 : 0;
|
||||
|
||||
element.setAttribute('aria-valuenow', percentage.toString());
|
||||
textElement.textContent = `${numberFormatter({value: percentage.toFixed(0), locales: taskQueueSettings.l10n.language})}%`;
|
||||
element.style.width = `${percentage}%`;
|
||||
};
|
||||
|
||||
// Update task counts
|
||||
[
|
||||
[elements.total, tasksTotal],
|
||||
[elements.running, tasksRunning],
|
||||
[elements.queued, tasksQueued],
|
||||
[elements.succeeded, tasksSucceeded],
|
||||
[elements.retried, tasksRetried],
|
||||
[elements.failed, tasksFailed]
|
||||
].forEach(([element, value]) => {
|
||||
updateTaskCount(element, value);
|
||||
});
|
||||
|
||||
// Update uptime
|
||||
elements.uptime.textContent = timeSince(earliestTask);
|
||||
|
||||
// Update progress bar title
|
||||
const [
|
||||
titleTextSucceeded,
|
||||
titleTextRetried,
|
||||
titleTextFailed
|
||||
] = [
|
||||
[tasksSucceeded, taskQueueSettings.l10n.succeeded],
|
||||
[tasksRetried, taskQueueSettings.l10n.retried],
|
||||
[tasksFailed, taskQueueSettings.l10n.failed]
|
||||
].map(([count, label]) => {
|
||||
return `${numberFormatter({value: count, locales: taskQueueSettings.l10n.language})} ${label}`;
|
||||
});
|
||||
|
||||
// Set the title attribute for the progress bar
|
||||
elemProgressBar.setAttribute(
|
||||
'title',
|
||||
`${titleTextSucceeded}, ${titleTextRetried}, ${titleTextFailed}`
|
||||
);
|
||||
|
||||
// Update progress bars
|
||||
[
|
||||
tasksSucceeded,
|
||||
tasksRetried,
|
||||
tasksFailed
|
||||
].forEach((count, index) => {
|
||||
const type = ['succeeded', 'retried', 'failed'][index];
|
||||
|
||||
updateProgressBar(
|
||||
progressElements[type].bar,
|
||||
progressElements[type].text,
|
||||
count,
|
||||
tasksTotal
|
||||
);
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error fetching task queue:', error);
|
||||
|
||||
// If there is an error fetching the task queue, set all elements to 'ERROR'
|
||||
[
|
||||
elements.running,
|
||||
elements.queued,
|
||||
elements.succeeded,
|
||||
elements.retried,
|
||||
elements.failed
|
||||
].forEach((elem) => {
|
||||
elem.textContent = taskQueueSettings.l10n.error;
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
updateTaskCount();
|
||||
setInterval(updateTaskCount, 30000);
|
||||
});
|
||||
57
allianceauth/static/allianceauth/js/sidebar.js
Normal file
57
allianceauth/static/allianceauth/js/sidebar.js
Normal file
@@ -0,0 +1,57 @@
|
||||
$(document).ready(() => {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Collect all badges in the sidebar menu that are not part of a collapsible submenu, and calculate the total notification count.
|
||||
* Show a total notification badge in the navbar if there are any notifications.
|
||||
*/
|
||||
const totalNotificationsBadge = () => {
|
||||
const badges = [];
|
||||
let notificationCount = 0;
|
||||
|
||||
document.querySelectorAll('#sidebar-menu .badge').forEach(b => {
|
||||
const li = b.closest('li');
|
||||
|
||||
if (!li || !li.querySelector('ul.collapse')) {
|
||||
badges.push(b);
|
||||
notificationCount += parseInt(b.textContent);
|
||||
}
|
||||
});
|
||||
|
||||
if (badges.length > 0 && notificationCount > 0) {
|
||||
const notificationBadge = document.createElement('span');
|
||||
notificationBadge.id = "globalNotificationCount";
|
||||
notificationBadge.classList.add(
|
||||
'badge',
|
||||
'text-bg-danger',
|
||||
'align-self-center',
|
||||
'sidemenu-notification-badge',
|
||||
'sidemenu-total-notifications-badge'
|
||||
);
|
||||
notificationBadge.textContent = String(notificationCount);
|
||||
|
||||
document.querySelector('a.navbar-brand i.fa-solid').prepend(notificationBadge);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Find the active child menu item in the sidebar menu, if any, and ensure its parent submenu is expanded.
|
||||
*/
|
||||
const expandChildMenu = () => {
|
||||
const activeChildMenuItem = document.querySelector('ul#sidebar-menu ul.collapse a.active');
|
||||
|
||||
if (activeChildMenuItem) {
|
||||
const activeChildMenuUl = activeChildMenuItem.closest('ul');
|
||||
activeChildMenuUl.classList.add('show');
|
||||
|
||||
document.querySelectorAll(`[data-bs-target^="#${activeChildMenuUl.id}"]`)
|
||||
.forEach(element => element.setAttribute('aria-expanded', 'true'));
|
||||
}
|
||||
};
|
||||
|
||||
// Execute functions on document ready
|
||||
[
|
||||
totalNotificationsBadge,
|
||||
expandChildMenu
|
||||
].forEach(fn => fn());
|
||||
});
|
||||
5
allianceauth/static/allianceauth/libs/DataTables/2.3.6/css/dataTables.bootstrap5.min.css
vendored
Normal file
5
allianceauth/static/allianceauth/libs/DataTables/2.3.6/css/dataTables.bootstrap5.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
4
allianceauth/static/allianceauth/libs/DataTables/2.3.6/js/dataTables.bootstrap5.min.js
vendored
Normal file
4
allianceauth/static/allianceauth/libs/DataTables/2.3.6/js/dataTables.bootstrap5.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Bootstrap 5 integration
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(n=>{var o,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),a=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),a(t,e),n(e,0,t.document)}:(a(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)})(function(d,t,e){var n=d.fn.dataTable;return d.extend(!0,n.defaults,{renderer:"bootstrap"}),d.extend(!0,n.ext.classes,{container:"dt-container dt-bootstrap5",search:{input:"form-control form-control-sm"},length:{select:"form-select form-select-sm"},processing:{container:"dt-processing card"},layout:{row:"row mt-2 justify-content-between",cell:"d-md-flex justify-content-between align-items-center",tableCell:"col-12",start:"dt-layout-start col-md-auto me-auto",end:"dt-layout-end col-md-auto ms-auto",full:"dt-layout-full col-md"}}),n.ext.renderer.pagingButton.bootstrap=function(t,e,n,o,a){var r=["dt-paging-button","page-item"],o=(o&&r.push("active"),a&&r.push("disabled"),d("<li>").addClass(r.join(" ")));return{display:o,clicker:d("<button>",{class:"page-link",role:"link",type:"button"}).html(n).appendTo(o)}},n.ext.renderer.pagingContainer.bootstrap=function(t,e){return d("<ul/>").addClass("pagination").append(e)},n});
|
||||
4
allianceauth/static/allianceauth/libs/DataTables/2.3.6/js/dataTables.min.js
vendored
Normal file
4
allianceauth/static/allianceauth/libs/DataTables/2.3.6/js/dataTables.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
/*! Bootstrap 5 styling wrapper for ColumnControl
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(e=>{var t,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs5","datatables.net-columncontrol"],function(o){return e(o,window,document)}):"object"==typeof exports?(t=require("jquery"),r=function(o,n){n.fn.dataTable||require("datatables.net-bs5")(o,n),n.fn.dataTable.ColumnControl||require("datatables.net-columncontrol")(o,n)},"undefined"==typeof window?module.exports=function(o,n){return o=o||window,n=n||t(o),r(o,n),e(n,0,o.document)}:(r(window,t),module.exports=e(t,window,window.document))):e(jQuery,window,document)})(function(o,n,e){o=o.fn.dataTable;return o.ColumnControl.content.dropdown.classes.container=["dtcc-dropdown","dropdown-menu","show"],o.ColumnControl.CheckList.classes.input=["dtcc-list-search","form-control","form-control-sm"],o.ColumnControl.SearchInput.classes.input=["form-control","form-control-sm"],o.ColumnControl.SearchInput.classes.select=["form-select","form-select-sm"],o});
|
||||
File diff suppressed because one or more lines are too long
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"emptyTable": "テーブルにデータがありません",
|
||||
"info": " _TOTAL_ 件中 _START_ から _END_ まで表示",
|
||||
"infoEmpty": " 0 件中 0 から 0 まで表示",
|
||||
"infoFiltered": "(全 _MAX_ 件より抽出)",
|
||||
"infoThousands": ",",
|
||||
"lengthMenu": "_MENU_ 件表示",
|
||||
"loadingRecords": "読み込み中...",
|
||||
"processing": "処理中...",
|
||||
"search": "検索:",
|
||||
"zeroRecords": "一致するレコードがありません",
|
||||
"paginate": {
|
||||
"first": "先頭",
|
||||
"last": "最終",
|
||||
"next": "次",
|
||||
"previous": "前"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": 列を昇順に並べ替えるにはアクティブにする",
|
||||
"sortDescending": ": 列を降順に並べ替えるにはアクティブにする"
|
||||
},
|
||||
"thousands": ",",
|
||||
"buttons": {
|
||||
"colvis": "項目の表示\/非表示",
|
||||
"csv": "CSVをダウンロード",
|
||||
"collection": "コレクション"
|
||||
},
|
||||
"searchBuilder": {
|
||||
"add": "条件を追加",
|
||||
"button": {
|
||||
"0": "カスタムサーチ",
|
||||
"_": "カスタムサーチ (%d)"
|
||||
},
|
||||
"clearAll": "すべての条件をクリア",
|
||||
"condition": "条件",
|
||||
"conditions": {
|
||||
"date": {
|
||||
"after": "次の日付以降",
|
||||
"before": "次の日付以前",
|
||||
"between": "次の期間に含まれる",
|
||||
"empty": "空白",
|
||||
"equals": "次の日付と等しい",
|
||||
"not": "次の日付と等しくない",
|
||||
"notBetween": "次の期間に含まれない",
|
||||
"notEmpty": "空白ではない"
|
||||
},
|
||||
"number": {
|
||||
"between": "次の値の間に含まれる",
|
||||
"empty": "空白",
|
||||
"equals": "次の値と等しい",
|
||||
"gt": "次の値よりも大きい",
|
||||
"gte": "次の値以上",
|
||||
"lt": "次の値未満",
|
||||
"lte": "次の値以下",
|
||||
"not": "次の値と等しくない",
|
||||
"notBetween": "次の値の間に含まれない",
|
||||
"notEmpty": "空白ではない"
|
||||
},
|
||||
"string": {
|
||||
"contains": "次の文字を含む",
|
||||
"empty": "空白",
|
||||
"endsWith": "次の文字で終わる",
|
||||
"equals": "次の文字と等しい",
|
||||
"not": "次の文字と等しくない",
|
||||
"notEmpty": "空白ではない",
|
||||
"startsWith": "次の文字から始まる",
|
||||
"notContains": "次の文字を含まない",
|
||||
"notStartsWith": "次の文字で始まらない",
|
||||
"notEndsWith": "次の文字で終わらない"
|
||||
}
|
||||
},
|
||||
"data": "項目",
|
||||
"title": {
|
||||
"0": "カスタムサーチ",
|
||||
"_": "カスタムサーチ (%d)"
|
||||
},
|
||||
"value": "値"
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "キャンセル",
|
||||
"fillHorizontal": "横でセルを書き込む",
|
||||
"fillVertical": "縦でセルを書き込む"
|
||||
}
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
{
|
||||
"emptyTable": "데이터가 없습니다",
|
||||
"info": "_START_ - _END_ \/ _TOTAL_",
|
||||
"infoEmpty": "0 - 0 \/ 0",
|
||||
"infoFiltered": "(총 _MAX_ 개)",
|
||||
"infoThousands": ",",
|
||||
"lengthMenu": "페이지당 줄수 _MENU_",
|
||||
"loadingRecords": "읽는중...",
|
||||
"processing": "처리중...",
|
||||
"search": "검색:",
|
||||
"zeroRecords": "검색 결과가 없습니다",
|
||||
"paginate": {
|
||||
"first": "처음",
|
||||
"last": "마지막",
|
||||
"next": "다음",
|
||||
"previous": "이전"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": 오름차순 정렬",
|
||||
"sortDescending": ": 내림차순 정렬"
|
||||
},
|
||||
"buttons": {
|
||||
"copyKeys": "ctrl키 나 u2318 + C키로 테이블 데이터를 시스텝 복사판에서 복사하고 취소하려면 이 메시지를 클릭하거나 ESC키를 누르면됩니다. to copy the table data to your system clipboard. To cancel, click this message or press escape.",
|
||||
"copySuccess": {
|
||||
"_": "%d행을 복사판에서 복사됨",
|
||||
"1": "1행을 복사판에서 복사됨"
|
||||
},
|
||||
"copyTitle": "복사판에서 복사",
|
||||
"csv": "CSV",
|
||||
"pageLength": {
|
||||
"-1": "모든 행 보기",
|
||||
"_": "%d행 보기"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "인쇄",
|
||||
"collection": "집합 <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "컬럼 보기",
|
||||
"colvisRestore": "보기 복원",
|
||||
"copy": "복사",
|
||||
"excel": "엑셀"
|
||||
},
|
||||
"searchBuilder": {
|
||||
"add": "조건 추가",
|
||||
"button": {
|
||||
"0": "빌더 조회",
|
||||
"_": "빌더 조회(%d)"
|
||||
},
|
||||
"clearAll": "모두 지우기",
|
||||
"condition": "조건",
|
||||
"data": "데이터",
|
||||
"deleteTitle": "필터 규칙을 삭제",
|
||||
"logicAnd": "And",
|
||||
"logicOr": "Or",
|
||||
"title": {
|
||||
"0": "빌더 조회",
|
||||
"_": "빌더 조회(%d)"
|
||||
},
|
||||
"value": "값"
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "취소",
|
||||
"fill": "모든 셀에서 <i>%d<i>을(를) 삽입<\/i><\/i>",
|
||||
"fillHorizontal": "수평 셀에서 값을 삽입",
|
||||
"fillVertical": "수직 설에서 값을 삽입"
|
||||
},
|
||||
"datetime": {
|
||||
"previous": "이전",
|
||||
"next": "다음",
|
||||
"hours": "시",
|
||||
"minutes": "분",
|
||||
"seconds": "초",
|
||||
"unknown": "-",
|
||||
"amPm": [
|
||||
"오전",
|
||||
"오후"
|
||||
],
|
||||
"weekdays": [
|
||||
"일",
|
||||
"월",
|
||||
"화",
|
||||
"수",
|
||||
"목",
|
||||
"금",
|
||||
"토"
|
||||
],
|
||||
"months": [
|
||||
"1월",
|
||||
"2월",
|
||||
"3월",
|
||||
"4월",
|
||||
"5월",
|
||||
"6월",
|
||||
"7월",
|
||||
"8월",
|
||||
"9월",
|
||||
"10월",
|
||||
"11월",
|
||||
"12월"
|
||||
]
|
||||
},
|
||||
"editor": {
|
||||
"close": "닫기",
|
||||
"create": {
|
||||
"button": "추가",
|
||||
"title": "항목 추가",
|
||||
"submit": "완료"
|
||||
},
|
||||
"edit": {
|
||||
"button": "수정",
|
||||
"title": "항목 수정",
|
||||
"submit": "완료"
|
||||
},
|
||||
"remove": {
|
||||
"button": "삭제",
|
||||
"title": "항목 삭제",
|
||||
"submit": "완료"
|
||||
},
|
||||
"error": {
|
||||
"system": "에러가 발생하였습니다 (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">자세한 정보<\/a>)."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,186 +0,0 @@
|
||||
{
|
||||
"lengthMenu": "Показати _MENU_ записів",
|
||||
"infoFiltered": "(відфільтровано з _MAX_ записів)",
|
||||
"search": "Пошук:",
|
||||
"paginate": {
|
||||
"first": "Перша",
|
||||
"previous": "Попередня",
|
||||
"next": "Наступна",
|
||||
"last": "Остання"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": активуйте, щоб сортувати колонку за зростанням",
|
||||
"sortDescending": ": активуйте, щоб сортувати колонку за спаданням"
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Відміна",
|
||||
"fill": "Заповнити всі клітинки з <i>%d<\/i>",
|
||||
"fillHorizontal": "Заповнити клітинки горизонтально",
|
||||
"fillVertical": "Заповнити клітинки вертикально"
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Список <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Видимість колонки",
|
||||
"colvisRestore": "Відновити видимість",
|
||||
"copy": "Копіювати",
|
||||
"copyKeys": "Нажміть ctrl або u2318 + C щоб копіювати інформацію з таблиці до вашого буферу обміну.<br \/><br \/>Щоб відмінити нажміть на це повідомлення або Esc",
|
||||
"copySuccess": {
|
||||
"1": "Скопійовано 1 рядок в буфер обміну",
|
||||
"_": "Скопійовано %d рядків в буфер обміну"
|
||||
},
|
||||
"copyTitle": "Копіювати в буфер обміну",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Показати усі рядки",
|
||||
"_": "Показати %d рядки"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Друкувати"
|
||||
},
|
||||
"emptyTable": "Ця таблиця не містить даних",
|
||||
"info": "Показано від _START_ по _END_ з _TOTAL_ записів",
|
||||
"infoEmpty": "Показано від 0 по 0 з 0 записів",
|
||||
"infoThousands": ",",
|
||||
"loadingRecords": "Завантаження",
|
||||
"processing": "Опрацювання...",
|
||||
"searchBuilder": {
|
||||
"add": "Додати умову",
|
||||
"button": {
|
||||
"0": "Розширений пошук",
|
||||
"_": "Розширений пошук (%d)"
|
||||
},
|
||||
"clearAll": "Очистити все",
|
||||
"condition": "Умова",
|
||||
"conditions": {
|
||||
"date": {
|
||||
"after": "Після",
|
||||
"before": "До",
|
||||
"between": "Між",
|
||||
"empty": "Пусто",
|
||||
"equals": "Дорівнює",
|
||||
"not": "Не",
|
||||
"notBetween": "Не між",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"number": {
|
||||
"between": "Між",
|
||||
"empty": "Пусто",
|
||||
"equals": "Дорівнює",
|
||||
"gt": "Більше ніж",
|
||||
"gte": "Більше або дорівнює",
|
||||
"lt": "Менше ніж",
|
||||
"lte": "Менше або дорівнює",
|
||||
"not": "Не",
|
||||
"notBetween": "Не між",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Містить",
|
||||
"empty": "Пусто",
|
||||
"endsWith": "Закінчується з",
|
||||
"equals": "Дорівнює",
|
||||
"not": "Не",
|
||||
"notEmpty": "Не пусто",
|
||||
"startsWith": "Починається з",
|
||||
"notContains": "Не містить",
|
||||
"notStartsWith": "Не починається з",
|
||||
"notEndsWith": "Не закінчується на"
|
||||
},
|
||||
"array": {
|
||||
"equals": "Дорівнює",
|
||||
"empty": "Пустий",
|
||||
"contains": "Містить",
|
||||
"not": "Не",
|
||||
"notEmpty": "Не пустий",
|
||||
"without": "Без"
|
||||
}
|
||||
},
|
||||
"data": "Дата",
|
||||
"deleteTitle": "Видалити правило фільтрування",
|
||||
"leftTitle": "Відступні критерії",
|
||||
"logicAnd": "I",
|
||||
"logicOr": "Або",
|
||||
"rightTitle": "Відступні критерії",
|
||||
"title": {
|
||||
"0": "Розширений пошук",
|
||||
"_": "Розширений пошук (%d)"
|
||||
},
|
||||
"value": "Значення"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Очистити все",
|
||||
"collapse": {
|
||||
"0": "Пошукові Панелі",
|
||||
"_": "Пошукові Панелі (%d)"
|
||||
},
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Немає Пошукових Панелей",
|
||||
"loadMessage": "Завантаження Пошукових Панелей",
|
||||
"title": "Активній фільтри - %d",
|
||||
"showMessage": "Показати всі",
|
||||
"collapseMessage": "Приховати всі"
|
||||
},
|
||||
"select": {
|
||||
"cells": {
|
||||
"1": "1 клітинку вибрано",
|
||||
"_": "%d клітинок вибрано"
|
||||
},
|
||||
"columns": {
|
||||
"1": "1 колонку вибрано",
|
||||
"_": "%d колонок вибрано"
|
||||
}
|
||||
},
|
||||
"thousands": ",",
|
||||
"zeroRecords": "Не знайдено жодних записів",
|
||||
"editor": {
|
||||
"close": "Закрити",
|
||||
"create": {
|
||||
"button": "Cтворити нову",
|
||||
"title": "Cтворити новий запис",
|
||||
"submit": "Cтворити"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Редагувати",
|
||||
"title": "Редагувати запис",
|
||||
"submit": "Оновити"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Видалити",
|
||||
"title": "Видалити",
|
||||
"submit": "Видалити"
|
||||
}
|
||||
},
|
||||
"datetime": {
|
||||
"minutes": "Хвилина",
|
||||
"months": {
|
||||
"0": "Січень",
|
||||
"1": "Лютий",
|
||||
"10": "Листопад",
|
||||
"11": "Грудень",
|
||||
"2": "Березень",
|
||||
"3": "Квітень",
|
||||
"4": "Травень",
|
||||
"5": "Червень",
|
||||
"6": "Липень",
|
||||
"7": "Серпень",
|
||||
"8": "Вересень",
|
||||
"9": "Жовтень"
|
||||
},
|
||||
"next": "Наступні",
|
||||
"previous": "Попередні",
|
||||
"seconds": "Секунда",
|
||||
"unknown": "-",
|
||||
"weekdays": [
|
||||
"Неділя",
|
||||
"Понеділок",
|
||||
"Вівторок",
|
||||
"Середа",
|
||||
"Четверг",
|
||||
"П'ятниця",
|
||||
"Субота"
|
||||
]
|
||||
},
|
||||
"searchPlaceholder": "Пошук"
|
||||
}
|
||||
@@ -1,21 +1,140 @@
|
||||
{
|
||||
"aria": {
|
||||
"paginate": {
|
||||
"first": "První",
|
||||
"last": "Poslední",
|
||||
"next": "Další",
|
||||
"previous": "Předchozí"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Zrušit",
|
||||
"fill": "Vyplň všechny buňky textem <i>%d<i><\/i><\/i>",
|
||||
"fillHorizontal": "Vyplň všechny buňky horizontálně",
|
||||
"fillVertical": "Vyplň všechny buňky vertikálně",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Kolekce <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Viditelnost sloupců",
|
||||
"colvisRestore": "Resetovat sloupce",
|
||||
"copy": "Kopírovat",
|
||||
"copyKeys": "Zmáčkněte Ctrl nebo u2318 + C pro zkopírování dat. Pro zrušení klikněte na tuto zprávu nebo zmáčkněte Esc.",
|
||||
"copySuccess": {
|
||||
"_": "Zkopírováno %d řádků do schránky",
|
||||
"1": "Zkopírován 1 řádek do schránky"
|
||||
},
|
||||
"copyTitle": "Kopírovat do schránky",
|
||||
"createState": "Vytvořit stav",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Zobrazit %d řádků",
|
||||
"-1": "Zobrazit všechny řádky"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Tisknout",
|
||||
"removeAllStates": "Vymazat všechny stavy",
|
||||
"removeState": "Odstranit",
|
||||
"renameState": "Odstranit",
|
||||
"savedStates": "Uložit stavy",
|
||||
"stateRestore": "Stav %d",
|
||||
"updateState": "Aktualizovat"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "Dopoledne",
|
||||
"1": "Odpoledne"
|
||||
},
|
||||
"hours": "Hodiny",
|
||||
"minutes": "Minuty",
|
||||
"months": {
|
||||
"0": "Leden",
|
||||
"1": "Únor",
|
||||
"10": "Listopad",
|
||||
"11": "Prosinec",
|
||||
"2": "Březen",
|
||||
"3": "Duben",
|
||||
"4": "Květen",
|
||||
"5": "Červen",
|
||||
"6": "Červenec",
|
||||
"7": "Srpen",
|
||||
"8": "Září",
|
||||
"9": "Říjen"
|
||||
},
|
||||
"next": "Další",
|
||||
"previous": "Předchozí",
|
||||
"seconds": "Sekundy",
|
||||
"unknown": "-",
|
||||
"weekdays": {
|
||||
"0": "Ne",
|
||||
"1": "Po",
|
||||
"2": "Út",
|
||||
"3": "St",
|
||||
"4": "Čt",
|
||||
"5": "Pá",
|
||||
"6": "So"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Zavřít",
|
||||
"create": {
|
||||
"button": "Nový",
|
||||
"submit": "Vytvořit",
|
||||
"title": "Nový záznam"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Změnit",
|
||||
"submit": "Aktualizovat",
|
||||
"title": "Změnit záznam"
|
||||
},
|
||||
"error": {
|
||||
"system": "Došlo k systémové chybě (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">Více informací<\/a>)."
|
||||
},
|
||||
"multi": {
|
||||
"info": "Vybrané položky obsahují různé hodnoty pro tento vstup. Chcete-li upravit a nastavit všechny položky tohoto vstupu na stejnou hodnotu, klikněte nebo klepněte sem, jinak si zachovají své individuální hodnoty.",
|
||||
"noMulti": "Toto pole může být upravováno individuálně, ale ne jako součást skupiny.",
|
||||
"restore": "Vrátit změny",
|
||||
"title": "Mnohočetný výběr"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Vymazat",
|
||||
"confirm": {
|
||||
"_": "Opravdu chcete smazat tyto %d řádky?",
|
||||
"1": "Opravdu chcete smazat tento 1 řádek?"
|
||||
},
|
||||
"submit": "Vymazat",
|
||||
"title": "Smazání"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Tabulka neobsahuje žádná data",
|
||||
"info": "Zobrazuji _START_ až _END_ z celkem _TOTAL_ záznamů",
|
||||
"infoEmpty": "Zobrazuji 0 až 0 z 0 záznamů",
|
||||
"infoFiltered": "(filtrováno z celkem _MAX_ záznamů)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": " ",
|
||||
"lengthMenu": "Zobrazit _MENU_ výsledků",
|
||||
"loadingRecords": "Načítám...",
|
||||
"zeroRecords": "Žádné záznamy nebyly nalezeny",
|
||||
"paginate": {
|
||||
"first": "První",
|
||||
"last": "Poslední",
|
||||
"next": "Další",
|
||||
"previous": "Předchozí"
|
||||
},
|
||||
"processing": "Zpracovávání...",
|
||||
"search": "Vyhledávání:",
|
||||
"searchBuilder": {
|
||||
"add": "Přidat podmínku",
|
||||
"button": {
|
||||
"_": "Rozšířený filtr (%d)",
|
||||
"0": "Rozšířený filtr"
|
||||
},
|
||||
"clearAll": "Smazat vše",
|
||||
"condition": "Podmínka",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "obsahuje",
|
||||
"empty": "prázdné",
|
||||
"equals": "rovno",
|
||||
"not": "není",
|
||||
"notEmpty": "není prázdné",
|
||||
"without": "neobsahuje"
|
||||
},
|
||||
"date": {
|
||||
"after": "po",
|
||||
"before": "před",
|
||||
@@ -44,176 +163,57 @@
|
||||
"endsWith": "končí na",
|
||||
"equals": "rovno",
|
||||
"not": "není",
|
||||
"notEmpty": "není prázdné",
|
||||
"startsWith": "začíná na",
|
||||
"notContains": "Podmínka",
|
||||
"notStartsWith": "Nezačíná",
|
||||
"notEndsWith": "Nekončí"
|
||||
},
|
||||
"array": {
|
||||
"equals": "rovno",
|
||||
"empty": "prázdné",
|
||||
"contains": "obsahuje",
|
||||
"not": "není",
|
||||
"notEmpty": "není prázdné",
|
||||
"without": "neobsahuje"
|
||||
"notEndsWith": "Nekončí",
|
||||
"notStartsWith": "Nezačíná",
|
||||
"startsWith": "začíná na"
|
||||
}
|
||||
},
|
||||
"data": "Sloupec",
|
||||
"logicAnd": "A",
|
||||
"logicOr": "NEBO",
|
||||
"title": {
|
||||
"0": "Rozšířený filtr",
|
||||
"_": "Rozšířený filtr (%d)"
|
||||
},
|
||||
"value": "Hodnota",
|
||||
"button": {
|
||||
"0": "Rozšířený filtr",
|
||||
"_": "Rozšířený filtr (%d)"
|
||||
},
|
||||
"deleteTitle": "Smazat filtrovací pravidlo",
|
||||
"leftTitle": "Zrušení odsazení podmínky",
|
||||
"rightTitle": "Odsazení podmínky"
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Zrušit",
|
||||
"fill": "Vyplň všechny buňky textem <i>%d<i><\/i><\/i>",
|
||||
"fillHorizontal": "Vyplň všechny buňky horizontálně",
|
||||
"fillVertical": "Vyplň všechny buňky vertikálně",
|
||||
"info": "Příklad automatického vyplňování"
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Kolekce <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"copy": "Kopírovat",
|
||||
"copyTitle": "Kopírovat do schránky",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Zobrazit všechny řádky",
|
||||
"_": "Zobrazit %d řádků",
|
||||
"1": "Zobraz 1 řádek"
|
||||
"logicAnd": "A",
|
||||
"logicOr": "NEBO",
|
||||
"rightTitle": "Odsazení podmínky",
|
||||
"title": {
|
||||
"_": "Rozšířený filtr (%d)",
|
||||
"0": "Rozšířený filtr"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Tisknout",
|
||||
"colvis": "Viditelnost sloupců",
|
||||
"colvisRestore": "Resetovat sloupce",
|
||||
"copyKeys": "Zmáčkněte ctrl or u2318 + C pro zkopírování dat. Pro zrušení klikněte na tuto zprávu nebo zmáčkněte esc..",
|
||||
"copySuccess": {
|
||||
"1": "Zkopírován 1 řádek do schránky",
|
||||
"_": "Zkopírováno %d řádků do schránky"
|
||||
},
|
||||
"createState": "Vytvořit Stav",
|
||||
"removeAllStates": "Vymazat všechny Stavy",
|
||||
"removeState": "Odstranit",
|
||||
"renameState": "Odstranit",
|
||||
"savedStates": "Uložit Stavy",
|
||||
"stateRestore": "Stav %d",
|
||||
"updateState": "Aktualizovat"
|
||||
"value": "Hodnota"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Smazat vše",
|
||||
"collapse": {
|
||||
"0": "Vyhledávací Panely",
|
||||
"_": "Vyhledávací Panely (%d)"
|
||||
"_": "Vyhledávací panely (%d)",
|
||||
"0": "Vyhledávací panely"
|
||||
},
|
||||
"collapseMessage": "Sbalit vše",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Žádné Vyhledávací Panely",
|
||||
"loadMessage": "Načítám Vyhledávací Panely",
|
||||
"title": "Aktivních filtrů - %d",
|
||||
"showMessage": "Zobrazit Vše",
|
||||
"collapseMessage": "Sbalit Vše"
|
||||
"emptyPanes": "Žádné vyhledávací panely",
|
||||
"loadMessage": "Načítám vyhledávací panely...",
|
||||
"showMessage": "Zobrazit vše",
|
||||
"title": "Aktivních filtrů - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"1": "Vybrán 1 záznam",
|
||||
"_": "Vybráno %d záznamů"
|
||||
"_": "Vybráno %d záznamů",
|
||||
"0": "",
|
||||
"1": "Vybrán 1 záznam"
|
||||
},
|
||||
"columns": {
|
||||
"1": "Vybrán 1 sloupec",
|
||||
"_": "Vybráno %d sloupců"
|
||||
"_": "Vybráno %d sloupců",
|
||||
"0": "",
|
||||
"1": "Vybrán 1 sloupec"
|
||||
},
|
||||
"rows": {
|
||||
"1": "Vybrán 1 řádek",
|
||||
"_": "Vybráno %d řádků"
|
||||
"_": "Vybráno %d řádků",
|
||||
"0": "",
|
||||
"1": "Vybrán 1 řádek"
|
||||
}
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": "Aktivujte pro seřazení vzestupně",
|
||||
"sortDescending": "Aktivujte pro seřazení sestupně"
|
||||
},
|
||||
"lengthMenu": "Zobrazit _MENU_ výsledků",
|
||||
"processing": "Zpracovávání...",
|
||||
"search": "Vyhledávání:",
|
||||
"datetime": {
|
||||
"previous": "Předchozí",
|
||||
"next": "Další",
|
||||
"hours": "Hodiny",
|
||||
"minutes": "Minuty",
|
||||
"seconds": "Vteřiny",
|
||||
"unknown": "-",
|
||||
"amPm": [
|
||||
"Dopoledne",
|
||||
"Odpoledne"
|
||||
],
|
||||
"months": [
|
||||
"Leden",
|
||||
"Únor",
|
||||
"Březen",
|
||||
"Duben",
|
||||
"Květen",
|
||||
"Červen",
|
||||
"Červenec",
|
||||
"Srpen",
|
||||
"Září",
|
||||
"Říjen",
|
||||
"Listopad",
|
||||
"Prosinec"
|
||||
],
|
||||
"weekdays": [
|
||||
"Ne",
|
||||
"Po",
|
||||
"Út",
|
||||
"St",
|
||||
"Čt",
|
||||
"Pá",
|
||||
"So"
|
||||
]
|
||||
},
|
||||
"editor": {
|
||||
"close": "Zavřít",
|
||||
"create": {
|
||||
"button": "Nový",
|
||||
"title": "Nový záznam",
|
||||
"submit": "Vytvořit"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Změnit",
|
||||
"title": "Změnit záznam",
|
||||
"submit": "Aktualizovat"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Vymazat",
|
||||
"title": "Smazání",
|
||||
"submit": "Vymazat",
|
||||
"confirm": {
|
||||
"_": "Opravdu chcete smazat tyto %d řádky?",
|
||||
"1": "Opravdu chcete smazat tento 1 řádek?"
|
||||
}
|
||||
},
|
||||
"multi": {
|
||||
"title": "Mnohočetný výběr",
|
||||
"restore": "Vrátit změny",
|
||||
"noMulti": "Toto pole může být editováno individuálně, ale ne jako soušást skupiny.",
|
||||
"info": "Vybrané položky obsahují různé hodnoty pro tento vstup. Chcete-li upravit a nastavit všechny položky tohoto vstupu na stejnou hodnotu, klikněte nebo klepněte sem, jinak si zachovají své individuální hodnoty."
|
||||
},
|
||||
"error": {
|
||||
"system": "Došlo k systémové chybě (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">Více informací<\/a>)."
|
||||
}
|
||||
},
|
||||
"infoThousands": " ",
|
||||
"decimal": ",",
|
||||
"thousands": " ",
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "Vytvořit",
|
||||
@@ -225,23 +225,24 @@
|
||||
"order": "Řazení",
|
||||
"paging": "Stránkování",
|
||||
"scroller": "Pozice skrolování",
|
||||
"select": "Výběr",
|
||||
"title": "Vytvořit nový Stav",
|
||||
"toggleLabel": "Zahrnout",
|
||||
"search": "Filtrování",
|
||||
"searchBuilder": "Rozšířené filtrování"
|
||||
"searchBuilder": "Rozšířené filtrování",
|
||||
"select": "Výběr",
|
||||
"title": "Vytvořit nový stav",
|
||||
"toggleLabel": "Zahrnout"
|
||||
},
|
||||
"duplicateError": "Stav s tímto názvem ji existuje.",
|
||||
"emptyError": "Název nemůže být prázný.",
|
||||
"duplicateError": "Stav s tímto názvem již existuje.",
|
||||
"emptyError": "Název nemůže být prázdný.",
|
||||
"emptyStates": "Žádné uložené stavy",
|
||||
"removeConfirm": "Opravdu chcete odstranbit %s?",
|
||||
"removeConfirm": "Opravdu chcete odstranit %s?",
|
||||
"removeError": "Chyba při odstraňování stavu.",
|
||||
"removeJoiner": "a",
|
||||
"removeSubmit": "Odstranit",
|
||||
"removeTitle": "Odstranit Stav",
|
||||
"removeTitle": "Odstranit stav",
|
||||
"renameButton": "Vymazat",
|
||||
"renameLabel": "Nové jméno pro %s:",
|
||||
"renameTitle": "Přejmenování Stavu"
|
||||
"renameTitle": "Přejmenování stavu"
|
||||
},
|
||||
"searchPlaceholder": "Příklad zástupného prvku"
|
||||
"thousands": " ",
|
||||
"zeroRecords": "Nebyly nalezeny žádné záznamy"
|
||||
}
|
||||
@@ -1,89 +1,209 @@
|
||||
{
|
||||
"emptyTable": "Keine Daten in der Tabelle vorhanden",
|
||||
"info": "_START_ bis _END_ von _TOTAL_ Einträgen",
|
||||
"infoEmpty": "Keine Daten vorhanden",
|
||||
"infoFiltered": "(gefiltert von _MAX_ Einträgen)",
|
||||
"infoThousands": ".",
|
||||
"loadingRecords": "Wird geladen ..",
|
||||
"processing": "Bitte warten ..",
|
||||
"paginate": {
|
||||
"first": "Erste",
|
||||
"next": "Nächste",
|
||||
"last": "Letzte",
|
||||
"previous": "Vorherige"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
|
||||
"sortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
|
||||
},
|
||||
"select": {
|
||||
"rows": {
|
||||
"_": "%d Zeilen ausgewählt",
|
||||
"1": "1 Zeile ausgewählt"
|
||||
},
|
||||
"cells": {
|
||||
"1": "1 Zelle ausgewählt",
|
||||
"_": "%d Zellen ausgewählt"
|
||||
},
|
||||
"columns": {
|
||||
"1": "1 Spalte ausgewählt",
|
||||
"_": "%d Spalten ausgewählt"
|
||||
"paginate": {
|
||||
"first": "Erste",
|
||||
"last": "Letzte",
|
||||
"next": "Nächste",
|
||||
"previous": "Vorherige"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"print": "Drucken",
|
||||
"copy": "Kopieren",
|
||||
"copyTitle": "In Zwischenablage kopieren",
|
||||
"copySuccess": {
|
||||
"_": "%d Zeilen kopiert",
|
||||
"1": "1 Zeile kopiert"
|
||||
},
|
||||
"collection": "Aktionen <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Spaltensichtbarkeit",
|
||||
"colvisRestore": "Sichtbarkeit wiederherstellen",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Alle Zeilen anzeigen",
|
||||
"1": "Zeige 1 Zeile",
|
||||
"_": "Zeige %d Zeilen"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"createState": "Ansicht erstellen",
|
||||
"removeAllStates": "Alle Ansichten entfernen",
|
||||
"removeState": "Entfernen",
|
||||
"renameState": "Umbenennen",
|
||||
"savedStates": "Gespeicherte Ansicht",
|
||||
"stateRestore": "Ansicht %d",
|
||||
"updateState": "Aktualisieren",
|
||||
"copyKeys": "Taste <i>STRG<\\\/i> oder <i>⌘<\\\/i> + <i>C<\\\/i> drücken um die Tabelle<br \/>in den Zwischenspeicher zu kopieren.<br \/><br \/>Um den Vorgang abzubrechen, Nachricht anklicken oder Escape-Taste drücken.<\/i><\/i><\/i>"
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Abbrechen",
|
||||
"fill": "Alle Zellen mit <i>%d<i> füllen<\/i><\/i>",
|
||||
"fillHorizontal": "Alle horizontalen Zellen füllen",
|
||||
"fillVertical": "Alle vertikalen Zellen füllen",
|
||||
"info": "Automatische Vervollständigung"
|
||||
"info": ""
|
||||
},
|
||||
"decimal": ",",
|
||||
"buttons": {
|
||||
"collection": "Aktionen <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Spaltensichtbarkeit",
|
||||
"colvisRestore": "Sichtbarkeit wiederherstellen",
|
||||
"copy": "Kopieren",
|
||||
"copyKeys": "Taste <i>STRG<\\\/i> oder <i>⌘<\\\/i> + <i>C<\\\/i> drücken um die Tabelle<br \/>in den Zwischenspeicher zu kopieren.<br \/><br \/>Um den Vorgang abzubrechen, Nachricht anklicken oder Escape-Taste drücken.<\/i><\/i><\/i>",
|
||||
"copySuccess": {
|
||||
"_": "%d Zeilen kopiert",
|
||||
"1": "1 Zeile kopiert"
|
||||
},
|
||||
"copyTitle": "In Zwischenablage kopieren",
|
||||
"createState": "Ansicht erstellen",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Zeige %d Zeilen",
|
||||
"-1": "Alle Zeilen anzeigen",
|
||||
"1": "Zeigt 1 Zeile"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Drucken",
|
||||
"removeAllStates": "Alle Ansichten entfernen",
|
||||
"removeState": "Entfernen",
|
||||
"renameState": "Umbenennen",
|
||||
"savedStates": "Gespeicherte Ansicht",
|
||||
"stateRestore": "Ansicht %d",
|
||||
"updateState": "Aktualisieren"
|
||||
},
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Suche löschen"
|
||||
},
|
||||
"colVis": "Sichtbarkeit der Spalte",
|
||||
"colVisDropdown": "Sichtbarkeit der Spalte",
|
||||
"dropdown": "Mehr...",
|
||||
"list": {
|
||||
"all": "Alle auswählen",
|
||||
"empty": "Leer",
|
||||
"none": "Nichts auswählen",
|
||||
"search": "Suche..."
|
||||
},
|
||||
"orderAddAsc": "Aufsteigende Sortierung hinzufügen",
|
||||
"orderAddDesc": "Absteigende Sortierung hinzufügen",
|
||||
"orderAsc": "Aufsteigend sortieren",
|
||||
"orderClear": "Sortierung aufheben",
|
||||
"orderDesc": "Absteigend sortieren",
|
||||
"orderRemove": "Aus Sortierung löschen",
|
||||
"reorder": "Spalten neu sortieren",
|
||||
"reorderLeft": "Spalte nach links verschieben",
|
||||
"reorderRight": "Spalte nach rechts verschieben",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Leer",
|
||||
"equal": "Gleich",
|
||||
"greater": "Nach",
|
||||
"less": "Vor",
|
||||
"notEmpty": "Nicht leer",
|
||||
"notEqual": "Nicht"
|
||||
},
|
||||
"number": {
|
||||
"empty": "Leer",
|
||||
"equal": "Gleich",
|
||||
"greater": "Größer",
|
||||
"greaterOrEqual": "Größer gleich",
|
||||
"less": "Kleiner",
|
||||
"lessOrEqual": "Kleiner gleich",
|
||||
"notEmpty": "Nicht leer",
|
||||
"notEqual": "Nicht"
|
||||
},
|
||||
"text": {
|
||||
"contains": "Enthält",
|
||||
"empty": "Leer",
|
||||
"ends": "Endet auf",
|
||||
"equal": "Gleich",
|
||||
"notContains": "Enthält nicht",
|
||||
"notEmpty": "Nicht leer",
|
||||
"notEqual": "Nicht",
|
||||
"starts": "Startet mit"
|
||||
}
|
||||
},
|
||||
"searchClear": "Suche leeren",
|
||||
"searchDropdown": "Suchen"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "Vormittag",
|
||||
"1": "Nachmittag"
|
||||
},
|
||||
"hours": "Stunden",
|
||||
"minutes": "Minuten",
|
||||
"months": {
|
||||
"0": "Januar",
|
||||
"1": "Februar",
|
||||
"10": "November",
|
||||
"11": "Dezember",
|
||||
"2": "März",
|
||||
"3": "April",
|
||||
"4": "Mai",
|
||||
"5": "Juni",
|
||||
"6": "Juli",
|
||||
"7": "August",
|
||||
"8": "September",
|
||||
"9": "Oktober"
|
||||
},
|
||||
"next": "Nachher",
|
||||
"previous": "Vorher",
|
||||
"seconds": "Sekunden",
|
||||
"unknown": "Unbekannt",
|
||||
"weekdays": {
|
||||
"0": "Sonntag",
|
||||
"1": "Montag",
|
||||
"2": "Dienstag",
|
||||
"3": "Mittwoch",
|
||||
"4": "Donnerstag",
|
||||
"5": "Freitag",
|
||||
"6": "Samstag"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Schließen",
|
||||
"create": {
|
||||
"button": "Neu",
|
||||
"submit": "Erstellen",
|
||||
"title": "Neuen Eintrag erstellen"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Bearbeiten",
|
||||
"submit": "Bearbeiten",
|
||||
"title": "Eintrag bearbeiten"
|
||||
},
|
||||
"error": {
|
||||
"system": "Ein Systemfehler ist aufgetreten"
|
||||
},
|
||||
"multi": {
|
||||
"info": "Die ausgewählten Elemente enthalten mehrere Werte für dieses Feld. Um alle Elemente für dieses Feld zu bearbeiten und auf denselben Wert zu setzen, hier klicken oder tippen, andernfalls behalten diese ihre individuellen Werte bei.",
|
||||
"noMulti": "Dieses Feld kann nur einzeln bearbeitet werden, nicht als Teil einer Mengen-Änderung.",
|
||||
"restore": "Änderungen zurücksetzen",
|
||||
"title": "Mehrere Werte"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Entfernen",
|
||||
"confirm": {
|
||||
"_": "Sollen %d Zeilen gelöscht werden?",
|
||||
"1": "Soll diese Zeile gelöscht werden?"
|
||||
},
|
||||
"submit": "Entfernen",
|
||||
"title": "Entfernen"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Keine Daten in der Tabelle vorhanden",
|
||||
"info": "_START_ bis _END_ von _TOTAL_ Einträgen",
|
||||
"infoEmpty": "Keine Daten vorhanden",
|
||||
"infoFiltered": "(gefiltert von _MAX_ Einträgen)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ".",
|
||||
"lengthLabels": {
|
||||
"-1": "Alle"
|
||||
},
|
||||
"lengthMenu": "_MENU_ Zeilen anzeigen",
|
||||
"loadingRecords": "Wird geladen ..",
|
||||
"orderClear": "Sortierung leeren",
|
||||
"processing": "Bitte warten ..",
|
||||
"search": "Suche:",
|
||||
"searchBuilder": {
|
||||
"add": "Bedingung hinzufügen",
|
||||
"button": {
|
||||
"0": "Such-Baukasten",
|
||||
"_": "Such-Baukasten (%d)"
|
||||
"_": "Such-Baukasten (%d)",
|
||||
"0": "Such-Baukasten"
|
||||
},
|
||||
"clearAll": "Alle entfernen",
|
||||
"condition": "Bedingung",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "enthält",
|
||||
"empty": "ist leer",
|
||||
"equals": "ist gleich",
|
||||
"not": "ist ungleich",
|
||||
"notEmpty": "ist nicht leer",
|
||||
"without": "aber nicht"
|
||||
},
|
||||
"date": {
|
||||
"after": "Nach",
|
||||
"before": "Vor",
|
||||
"between": "Zwischen",
|
||||
"empty": "Leer",
|
||||
"equals": "Gleich",
|
||||
"not": "Nicht",
|
||||
"notBetween": "Nicht zwischen",
|
||||
"notEmpty": "Nicht leer",
|
||||
"equals": "Gleich"
|
||||
"notEmpty": "Nicht leer"
|
||||
},
|
||||
"number": {
|
||||
"between": "Zwischen",
|
||||
@@ -103,114 +223,59 @@
|
||||
"endsWith": "Endet mit",
|
||||
"equals": "Entspricht",
|
||||
"not": "Nicht",
|
||||
"notEmpty": "Nicht leer",
|
||||
"startsWith": "Startet mit",
|
||||
"notContains": "enthält nicht",
|
||||
"notEmpty": "Nicht leer",
|
||||
"notEndsWith": "endet nicht mit",
|
||||
"notStartsWith": "startet nicht mit",
|
||||
"notEndsWith": "endet nicht mit"
|
||||
},
|
||||
"array": {
|
||||
"equals": "ist gleich",
|
||||
"empty": "ist leer",
|
||||
"contains": "enthält",
|
||||
"not": "ist ungleich",
|
||||
"notEmpty": "ist nicht leer",
|
||||
"without": "aber nicht"
|
||||
"startsWith": "Startet mit"
|
||||
}
|
||||
},
|
||||
"data": "Daten",
|
||||
"deleteTitle": "Filterregel entfernen",
|
||||
"leftTitle": "Äußere Kriterien",
|
||||
"rightTitle": "Innere Kriterien",
|
||||
"title": {
|
||||
"0": "Such-Baukasten",
|
||||
"_": "Such-Baukasten (%d)"
|
||||
},
|
||||
"value": "Wert",
|
||||
"clearAll": "Alle entfernen",
|
||||
"logicAnd": "Und",
|
||||
"logicOr": "Oder"
|
||||
"logicOr": "Oder",
|
||||
"rightTitle": "Innere Kriterien",
|
||||
"search": "Suche",
|
||||
"title": {
|
||||
"_": "Such-Baukasten (%d)",
|
||||
"0": "Such-Baukasten"
|
||||
},
|
||||
"value": "Wert"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Leeren",
|
||||
"collapse": {
|
||||
"0": "Suchmasken",
|
||||
"_": "Suchmasken (%d)"
|
||||
"_": "Suchmasken (%d)",
|
||||
"0": "Suchmasken"
|
||||
},
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Keine Suchmasken",
|
||||
"title": "Aktive Filter: %d",
|
||||
"showMessage": "zeige Alle",
|
||||
"collapseMessage": "Alle einklappen",
|
||||
"count": "{total}",
|
||||
"loadMessage": "Lade Suchmasken .."
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "<em>Leer<\/em>",
|
||||
"emptyPanes": "Keine Suchmasken",
|
||||
"loadMessage": "Lade Suchmasken ..",
|
||||
"showMessage": "zeige Alle",
|
||||
"title": "Aktive Filter: %d"
|
||||
},
|
||||
"thousands": ".",
|
||||
"zeroRecords": "Keine passenden Einträge gefunden",
|
||||
"lengthMenu": "_MENU_ Zeilen anzeigen",
|
||||
"datetime": {
|
||||
"previous": "Vorher",
|
||||
"next": "Nachher",
|
||||
"hours": "Stunden",
|
||||
"minutes": "Minuten",
|
||||
"seconds": "Sekunden",
|
||||
"unknown": "Unbekannt",
|
||||
"weekdays": [
|
||||
"Sonntag",
|
||||
"Montag",
|
||||
"Dienstag",
|
||||
"Mittwoch",
|
||||
"Donnerstag",
|
||||
"Freitag",
|
||||
"Samstag"
|
||||
],
|
||||
"months": [
|
||||
"Januar",
|
||||
"Februar",
|
||||
"März",
|
||||
"April",
|
||||
"Mai",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Dezember"
|
||||
]
|
||||
},
|
||||
"editor": {
|
||||
"close": "Schließen",
|
||||
"create": {
|
||||
"button": "Neu",
|
||||
"title": "Neuen Eintrag erstellen",
|
||||
"submit": "Erstellen"
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "%d Zellen ausgewählt",
|
||||
"0": "",
|
||||
"1": "1 Zelle ausgewählt"
|
||||
},
|
||||
"remove": {
|
||||
"confirm": {
|
||||
"_": "Sollen %d Zeilen gelöscht werden?",
|
||||
"1": "Soll diese Zeile gelöscht werden?"
|
||||
},
|
||||
"button": "Entfernen",
|
||||
"title": "Entfernen",
|
||||
"submit": "Entfernen"
|
||||
"columns": {
|
||||
"_": "%d Spalten ausgewählt",
|
||||
"0": "",
|
||||
"1": "1 Spalte ausgewählt"
|
||||
},
|
||||
"error": {
|
||||
"system": "Ein Systemfehler ist aufgetreten"
|
||||
},
|
||||
"multi": {
|
||||
"title": "Mehrere Werte",
|
||||
"restore": "Änderungen zurücksetzen",
|
||||
"noMulti": "Dieses Feld kann nur einzeln bearbeitet werden, nicht als Teil einer Mengen-Änderung.",
|
||||
"info": "Die ausgewählten Elemente enthalten mehrere Werte für dieses Feld. Um alle Elemente für dieses Feld zu bearbeiten und auf denselben Wert zu setzen, hier klicken oder tippen, andernfalls behalten diese ihre individuellen Werte bei."
|
||||
},
|
||||
"edit": {
|
||||
"button": "Bearbeiten",
|
||||
"title": "Eintrag bearbeiten",
|
||||
"submit": "Bearbeiten"
|
||||
"rows": {
|
||||
"_": "%d Zeilen ausgewählt",
|
||||
"0": "",
|
||||
"1": "1 Zeile ausgewählt"
|
||||
}
|
||||
},
|
||||
"searchPlaceholder": "Suchen...",
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "Erstellen",
|
||||
@@ -231,13 +296,15 @@
|
||||
"duplicateError": "Eine Ansicht mit diesem Namen existiert bereits.",
|
||||
"emptyError": "Name darf nicht leer sein.",
|
||||
"emptyStates": "Keine gespeicherten Ansichten",
|
||||
"removeConfirm": "Sicher dass %s entfernt werden soll?",
|
||||
"removeError": "Entfernen der Ansicht fehlgeschlagen.",
|
||||
"removeJoiner": " und ",
|
||||
"removeSubmit": "Entfernen",
|
||||
"removeTitle": "Ansicht entfernen",
|
||||
"renameButton": "Umbenennen",
|
||||
"renameLabel": "Neuer Name für %s:",
|
||||
"renameTitle": "Ansicht umbenennen",
|
||||
"removeConfirm": "Sicher dass %s entfernt werden soll?"
|
||||
}
|
||||
"renameTitle": "Ansicht umbenennen"
|
||||
},
|
||||
"thousands": ".",
|
||||
"zeroRecords": "Keine passenden Einträge gefunden"
|
||||
}
|
||||
@@ -1,159 +1,112 @@
|
||||
{
|
||||
"processing": "Procesando...",
|
||||
"lengthMenu": "Mostrar _MENU_ registros",
|
||||
"zeroRecords": "No se encontraron resultados",
|
||||
"emptyTable": "Ningún dato disponible en esta tabla",
|
||||
"infoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
|
||||
"infoFiltered": "(filtrado de un total de _MAX_ registros)",
|
||||
"search": "Buscar:",
|
||||
"loadingRecords": "Cargando...",
|
||||
"paginate": {
|
||||
"first": "Primero",
|
||||
"last": "Último",
|
||||
"next": "Siguiente",
|
||||
"previous": "Anterior"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": Activar para ordenar la columna de manera ascendente",
|
||||
"sortDescending": ": Activar para ordenar la columna de manera descendente"
|
||||
},
|
||||
"buttons": {
|
||||
"copy": "Copiar",
|
||||
"colvis": "Visibilidad",
|
||||
"collection": "Colección",
|
||||
"colvisRestore": "Restaurar visibilidad",
|
||||
"copyKeys": "Presione ctrl o u2318 + C para copiar los datos de la tabla al portapapeles del sistema. <br \/> <br \/> Para cancelar, haga clic en este mensaje o presione escape.",
|
||||
"copySuccess": {
|
||||
"1": "Copiada 1 fila al portapapeles",
|
||||
"_": "Copiadas %ds fila al portapapeles"
|
||||
},
|
||||
"copyTitle": "Copiar al portapapeles",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Mostrar todas las filas",
|
||||
"_": "Mostrar %d filas"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Imprimir",
|
||||
"renameState": "Cambiar nombre",
|
||||
"updateState": "Actualizar",
|
||||
"createState": "Crear Estado",
|
||||
"removeAllStates": "Remover Estados",
|
||||
"removeState": "Remover",
|
||||
"savedStates": "Estados Guardados",
|
||||
"stateRestore": "Estado %d"
|
||||
"orderable": "Activar para ordenar",
|
||||
"orderableRemove": "Activar para quitar ordenación",
|
||||
"orderableReverse": "Activar para ordenar de forma inversa",
|
||||
"paginate": {
|
||||
"first": "Primero",
|
||||
"last": "Último",
|
||||
"next": "Siguiente",
|
||||
"previous": "Anterior"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Cancelar",
|
||||
"fill": "Rellene todas las celdas con <i>%d<\/i>",
|
||||
"fillHorizontal": "Rellenar celdas horizontalmente",
|
||||
"fillVertical": "Rellenar celdas verticalmente"
|
||||
"fillVertical": "Rellenar celdas verticalmente",
|
||||
"info": ""
|
||||
},
|
||||
"decimal": ",",
|
||||
"searchBuilder": {
|
||||
"add": "Añadir condición",
|
||||
"button": {
|
||||
"0": "Constructor de búsqueda",
|
||||
"_": "Constructor de búsqueda (%d)"
|
||||
"buttons": {
|
||||
"collection": "Colección",
|
||||
"colvis": "Visibilidad",
|
||||
"colvisRestore": "Restaurar visibilidad",
|
||||
"copy": "Copiar",
|
||||
"copyKeys": "Presione ctrl o u2318 + C para copiar los datos de la tabla al portapapeles del sistema. <br \/> <br \/> Para cancelar, haga clic en este mensaje o presione escape.",
|
||||
"copySuccess": {
|
||||
"_": "Copiadas %ds filas al portapapeles",
|
||||
"1": "Copiada 1 fila al portapapeles"
|
||||
},
|
||||
"clearAll": "Borrar todo",
|
||||
"condition": "Condición",
|
||||
"conditions": {
|
||||
"date": {
|
||||
"before": "Antes",
|
||||
"between": "Entre",
|
||||
"copyTitle": "Copiar al portapapeles",
|
||||
"createState": "Crear Estado",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Mostrar %d filas",
|
||||
"-1": "Mostrar todas las filas",
|
||||
"1": "Mostrar 1 fila"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Imprimir",
|
||||
"removeAllStates": "Remover Estados",
|
||||
"removeState": "Remover",
|
||||
"renameState": "Cambiar nombre",
|
||||
"savedStates": "Estados Guardados",
|
||||
"stateRestore": "Estado %d",
|
||||
"updateState": "Actualizar"
|
||||
},
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Borrar búsqueda"
|
||||
},
|
||||
"colVis": "Visibilidad",
|
||||
"colVisDropdown": "Desplegable visibilidad",
|
||||
"dropdown": "Desplegable",
|
||||
"list": {
|
||||
"all": "Añadir",
|
||||
"empty": "Vacío",
|
||||
"none": "Ninguno",
|
||||
"search": "Buscar.."
|
||||
},
|
||||
"orderAddAsc": "Añadir a ordenación ascendente",
|
||||
"orderAddDesc": "Añadir a ordenación descencente",
|
||||
"orderAsc": "Ordenar ascendentemente",
|
||||
"orderClear": "Borrar ordenación",
|
||||
"orderDesc": "Ordenar descendentemente",
|
||||
"orderRemove": "Borrar de ordenación",
|
||||
"reorder": "Reordenar",
|
||||
"reorderLeft": "Mover a la izquierda",
|
||||
"reorderRight": "Mover a la derecha",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Vacío",
|
||||
"equals": "Igual a",
|
||||
"notBetween": "No entre",
|
||||
"not": "Diferente de",
|
||||
"after": "Después",
|
||||
"notEmpty": "No Vacío"
|
||||
"equal": "Igual a",
|
||||
"greater": "Mayor que",
|
||||
"less": "Menor que",
|
||||
"notEmpty": "No vacío",
|
||||
"notEqual": "Diferente de"
|
||||
},
|
||||
"number": {
|
||||
"between": "Entre",
|
||||
"equals": "Igual a",
|
||||
"gt": "Mayor a",
|
||||
"gte": "Mayor o igual a",
|
||||
"lt": "Menor que",
|
||||
"lte": "Menor o igual que",
|
||||
"notBetween": "No entre",
|
||||
"empty": "Vacío",
|
||||
"equal": "Igual a",
|
||||
"greater": "Mayor que",
|
||||
"greaterOrEqual": "Mayor o igual a",
|
||||
"less": "Menor que",
|
||||
"lessOrEqual": "Menor o igual a",
|
||||
"notEmpty": "No vacío",
|
||||
"not": "Diferente de",
|
||||
"empty": "Vacío"
|
||||
"notEqual": "Diferente de"
|
||||
},
|
||||
"string": {
|
||||
"text": {
|
||||
"contains": "Contiene",
|
||||
"empty": "Vacío",
|
||||
"endsWith": "Termina en",
|
||||
"equals": "Igual a",
|
||||
"startsWith": "Empieza con",
|
||||
"not": "Diferente de",
|
||||
"notContains": "No Contiene",
|
||||
"notStartsWith": "No empieza con",
|
||||
"notEndsWith": "No termina con",
|
||||
"notEmpty": "No Vacío"
|
||||
},
|
||||
"array": {
|
||||
"not": "Diferente de",
|
||||
"equals": "Igual",
|
||||
"empty": "Vacío",
|
||||
"contains": "Contiene",
|
||||
"notEmpty": "No Vacío",
|
||||
"without": "Sin"
|
||||
"ends": "Finaliza con",
|
||||
"equal": "Igual a",
|
||||
"notContains": "no contiene",
|
||||
"notEmpty": "No vacío",
|
||||
"notEqual": "Diferente de",
|
||||
"starts": "Empieza con"
|
||||
}
|
||||
},
|
||||
"data": "Data",
|
||||
"deleteTitle": "Eliminar regla de filtrado",
|
||||
"leftTitle": "Criterios anulados",
|
||||
"logicAnd": "Y",
|
||||
"logicOr": "O",
|
||||
"rightTitle": "Criterios de sangría",
|
||||
"title": {
|
||||
"0": "Constructor de búsqueda",
|
||||
"_": "Constructor de búsqueda (%d)"
|
||||
},
|
||||
"value": "Valor"
|
||||
"searchClear": "Borrar búsqueda",
|
||||
"searchDropdown": "Buscar"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Borrar todo",
|
||||
"collapse": {
|
||||
"0": "Paneles de búsqueda",
|
||||
"_": "Paneles de búsqueda (%d)"
|
||||
},
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Sin paneles de búsqueda",
|
||||
"loadMessage": "Cargando paneles de búsqueda",
|
||||
"title": "Filtros Activos - %d",
|
||||
"showMessage": "Mostrar Todo",
|
||||
"collapseMessage": "Colapsar Todo"
|
||||
},
|
||||
"select": {
|
||||
"cells": {
|
||||
"1": "1 celda seleccionada",
|
||||
"_": "%d celdas seleccionadas"
|
||||
},
|
||||
"columns": {
|
||||
"1": "1 columna seleccionada",
|
||||
"_": "%d columnas seleccionadas"
|
||||
},
|
||||
"rows": {
|
||||
"1": "1 fila seleccionada",
|
||||
"_": "%d filas seleccionadas"
|
||||
}
|
||||
},
|
||||
"thousands": ".",
|
||||
"datetime": {
|
||||
"previous": "Anterior",
|
||||
"amPm": {
|
||||
"0": "AM",
|
||||
"1": "PM"
|
||||
},
|
||||
"hours": "Horas",
|
||||
"minutes": "Minutos",
|
||||
"seconds": "Segundos",
|
||||
"unknown": "-",
|
||||
"amPm": [
|
||||
"AM",
|
||||
"PM"
|
||||
],
|
||||
"months": {
|
||||
"0": "Enero",
|
||||
"1": "Febrero",
|
||||
@@ -168,77 +121,193 @@
|
||||
"8": "Septiembre",
|
||||
"9": "Octubre"
|
||||
},
|
||||
"next": "Próximo",
|
||||
"previous": "Anterior",
|
||||
"seconds": "Segundos",
|
||||
"unknown": "-",
|
||||
"weekdays": {
|
||||
"0": "Dom",
|
||||
"1": "Lun",
|
||||
"2": "Mar",
|
||||
"3": "Mié",
|
||||
"4": "Jue",
|
||||
"5": "Vie",
|
||||
"3": "Mié",
|
||||
"6": "Sáb"
|
||||
},
|
||||
"next": "Próximo"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Cerrar",
|
||||
"create": {
|
||||
"button": "Nuevo",
|
||||
"title": "Crear Nuevo Registro",
|
||||
"submit": "Crear"
|
||||
"submit": "Crear",
|
||||
"title": "Crear Nuevo Registro"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Editar",
|
||||
"title": "Editar Registro",
|
||||
"submit": "Actualizar"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Eliminar",
|
||||
"title": "Eliminar Registro",
|
||||
"submit": "Eliminar",
|
||||
"confirm": {
|
||||
"_": "¿Está seguro de que desea eliminar %d filas?",
|
||||
"1": "¿Está seguro de que desea eliminar 1 fila?"
|
||||
}
|
||||
"submit": "Actualizar",
|
||||
"title": "Editar Registro"
|
||||
},
|
||||
"error": {
|
||||
"system": "Ha ocurrido un error en el sistema (<a target=\"\\\" rel=\"\\ nofollow\" href=\"\\\">Más información<\\\/a>).<\/a>"
|
||||
},
|
||||
"multi": {
|
||||
"title": "Múltiples Valores",
|
||||
"restore": "Deshacer Cambios",
|
||||
"info": "Los elementos seleccionados contienen diferentes valores para este registro. Para editar y establecer todos los elementos de este registro con el mismo valor, haga clic o pulse aquí, de lo contrario conservarán sus valores individuales.",
|
||||
"noMulti": "Este registro puede ser editado individualmente, pero no como parte de un grupo.",
|
||||
"info": "Los elementos seleccionados contienen diferentes valores para este registro. Para editar y establecer todos los elementos de este registro con el mismo valor, haga clic o pulse aquí, de lo contrario conservarán sus valores individuales."
|
||||
"restore": "Deshacer Cambios",
|
||||
"title": "Múltiples Valores"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Eliminar",
|
||||
"confirm": {
|
||||
"_": "¿Está seguro de que desea eliminar %d filas?",
|
||||
"1": "¿Está seguro de que desea eliminar 1 fila?"
|
||||
},
|
||||
"submit": "Eliminar",
|
||||
"title": "Eliminar Registro"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Ningún dato disponible en esta tabla",
|
||||
"info": "Mostrando _START_ a _END_ de _TOTAL_ registros",
|
||||
"infoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
|
||||
"infoFiltered": "(filtrado de un total de _MAX_ registros)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ".",
|
||||
"lengthLabels": {
|
||||
"-1": "Todas"
|
||||
},
|
||||
"lengthMenu": "Mostrar _MENU_ registros",
|
||||
"loadingRecords": "Cargando...",
|
||||
"orderClear": "Limpiar ordenación de toda la tabla",
|
||||
"processing": "Procesando...",
|
||||
"search": "Buscar:",
|
||||
"searchBuilder": {
|
||||
"add": "Añadir condición",
|
||||
"button": {
|
||||
"_": "Constructor de búsqueda (%d)",
|
||||
"0": "Constructor de búsqueda"
|
||||
},
|
||||
"clearAll": "Borrar todo",
|
||||
"condition": "Condición",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Contiene",
|
||||
"empty": "Vacío",
|
||||
"equals": "Igual",
|
||||
"not": "Diferente de",
|
||||
"notEmpty": "No Vacío",
|
||||
"without": "Sin"
|
||||
},
|
||||
"date": {
|
||||
"after": "Después",
|
||||
"before": "Antes",
|
||||
"between": "Entre",
|
||||
"empty": "Vacío",
|
||||
"equals": "Igual a",
|
||||
"not": "Diferente de",
|
||||
"notBetween": "No entre",
|
||||
"notEmpty": "No Vacío"
|
||||
},
|
||||
"number": {
|
||||
"between": "Entre",
|
||||
"empty": "Vacío",
|
||||
"equals": "Igual a",
|
||||
"gt": "Mayor a",
|
||||
"gte": "Mayor o igual a",
|
||||
"lt": "Menor que",
|
||||
"lte": "Menor o igual que",
|
||||
"not": "Diferente de",
|
||||
"notBetween": "No entre",
|
||||
"notEmpty": "No vacío"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Contiene",
|
||||
"empty": "Vacío",
|
||||
"endsWith": "Termina en",
|
||||
"equals": "Igual a",
|
||||
"not": "Diferente de",
|
||||
"notContains": "No Contiene",
|
||||
"notEmpty": "No Vacío",
|
||||
"notEndsWith": "No termina con",
|
||||
"notStartsWith": "No empieza con",
|
||||
"startsWith": "Empieza con"
|
||||
}
|
||||
},
|
||||
"data": "Data",
|
||||
"deleteTitle": "Eliminar regla de filtrado",
|
||||
"leftTitle": "Criterios anulados",
|
||||
"logicAnd": "Y",
|
||||
"logicOr": "O",
|
||||
"rightTitle": "Criterios de sangría",
|
||||
"search": "Buscar",
|
||||
"title": {
|
||||
"_": "Constructor de búsqueda (%d)",
|
||||
"0": "Constructor de búsqueda"
|
||||
},
|
||||
"value": "Valor"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Borrar todo",
|
||||
"collapse": {
|
||||
"_": "Paneles de búsqueda (%d)",
|
||||
"0": "Paneles de búsqueda"
|
||||
},
|
||||
"collapseMessage": "Colapsar Todo",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "vacío",
|
||||
"emptyPanes": "Sin paneles de búsqueda",
|
||||
"loadMessage": "Cargando paneles de búsqueda",
|
||||
"showMessage": "Mostrar Todo",
|
||||
"title": "Filtros Activos - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "%d celdas seleccionadas",
|
||||
"0": "",
|
||||
"1": "1 celda seleccionada"
|
||||
},
|
||||
"columns": {
|
||||
"_": "%d columnas seleccionadas",
|
||||
"0": "",
|
||||
"1": "1 columna seleccionada"
|
||||
},
|
||||
"rows": {
|
||||
"_": "%d filas seleccionadas",
|
||||
"0": "",
|
||||
"1": "1 fila seleccionada"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "Crear",
|
||||
"name": "Nombre:",
|
||||
"order": "Clasificación",
|
||||
"paging": "Paginación",
|
||||
"select": "Seleccionar",
|
||||
"columns": {
|
||||
"search": "Búsqueda de Columna",
|
||||
"visible": "Visibilidad de Columna"
|
||||
},
|
||||
"title": "Crear Nuevo Estado",
|
||||
"toggleLabel": "Incluir:",
|
||||
"name": "Nombre:",
|
||||
"order": "Clasificación",
|
||||
"paging": "Paginación",
|
||||
"scroller": "Posición de desplazamiento",
|
||||
"search": "Búsqueda",
|
||||
"searchBuilder": "Búsqueda avanzada"
|
||||
"searchBuilder": "Búsqueda avanzada",
|
||||
"select": "Seleccionar",
|
||||
"title": "Crear Nuevo Estado",
|
||||
"toggleLabel": "Incluir:"
|
||||
},
|
||||
"removeJoiner": "y",
|
||||
"removeSubmit": "Eliminar",
|
||||
"renameButton": "Cambiar Nombre",
|
||||
"duplicateError": "Ya existe un Estado con este nombre.",
|
||||
"emptyStates": "No hay Estados guardados",
|
||||
"removeTitle": "Remover Estado",
|
||||
"renameTitle": "Cambiar Nombre Estado",
|
||||
"emptyError": "El nombre no puede estar vacío.",
|
||||
"emptyStates": "No hay Estados guardados",
|
||||
"removeConfirm": "¿Seguro que quiere eliminar %s?",
|
||||
"removeError": "Error al eliminar el Estado",
|
||||
"renameLabel": "Nuevo nombre para %s:"
|
||||
"removeJoiner": "y",
|
||||
"removeSubmit": "Eliminar",
|
||||
"removeTitle": "Remover Estado",
|
||||
"renameButton": "Cambiar Nombre",
|
||||
"renameLabel": "Nuevo nombre para %s:",
|
||||
"renameTitle": "Cambiar Nombre Estado"
|
||||
},
|
||||
"infoThousands": "."
|
||||
"thousands": ".",
|
||||
"zeroRecords": "No se encontraron resultados"
|
||||
}
|
||||
@@ -1,126 +1,43 @@
|
||||
{
|
||||
"emptyTable": "Aucune donnée disponible dans le tableau",
|
||||
"loadingRecords": "Chargement...",
|
||||
"processing": "Traitement...",
|
||||
"select": {
|
||||
"rows": {
|
||||
"_": "%d lignes sélectionnées",
|
||||
"1": "1 ligne sélectionnée"
|
||||
},
|
||||
"cells": {
|
||||
"1": "1 cellule sélectionnée",
|
||||
"_": "%d cellules sélectionnées"
|
||||
},
|
||||
"columns": {
|
||||
"1": "1 colonne sélectionnée",
|
||||
"_": "%d colonnes sélectionnées"
|
||||
"aria": {
|
||||
"orderable": "Activer pour trier",
|
||||
"orderableRemove": "Activer pour supprimer le tri",
|
||||
"orderableReverse": "Activer pour inverser le tri",
|
||||
"paginate": {
|
||||
"first": "Première",
|
||||
"last": "Dernière",
|
||||
"next": "Suivante",
|
||||
"previous": "Précédente"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Annuler",
|
||||
"fill": "Remplir toutes les cellules avec <i>%d<\/i>",
|
||||
"fillHorizontal": "Remplir les cellules horizontalement",
|
||||
"fillVertical": "Remplir les cellules verticalement"
|
||||
},
|
||||
"searchBuilder": {
|
||||
"conditions": {
|
||||
"date": {
|
||||
"after": "Après le",
|
||||
"before": "Avant le",
|
||||
"between": "Entre",
|
||||
"empty": "Vide",
|
||||
"not": "Différent de",
|
||||
"notBetween": "Pas entre",
|
||||
"notEmpty": "Non vide",
|
||||
"equals": "Égal à"
|
||||
},
|
||||
"number": {
|
||||
"between": "Entre",
|
||||
"empty": "Vide",
|
||||
"gt": "Supérieur à",
|
||||
"gte": "Supérieur ou égal à",
|
||||
"lt": "Inférieur à",
|
||||
"lte": "Inférieur ou égal à",
|
||||
"not": "Différent de",
|
||||
"notBetween": "Pas entre",
|
||||
"notEmpty": "Non vide",
|
||||
"equals": "Égal à"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Contient",
|
||||
"empty": "Vide",
|
||||
"endsWith": "Se termine par",
|
||||
"not": "Différent de",
|
||||
"notEmpty": "Non vide",
|
||||
"startsWith": "Commence par",
|
||||
"equals": "Égal à",
|
||||
"notContains": "Ne contient pas",
|
||||
"notEndsWith": "Ne termine pas par",
|
||||
"notStartsWith": "Ne commence pas par"
|
||||
},
|
||||
"array": {
|
||||
"empty": "Vide",
|
||||
"contains": "Contient",
|
||||
"not": "Différent de",
|
||||
"notEmpty": "Non vide",
|
||||
"without": "Sans",
|
||||
"equals": "Égal à"
|
||||
}
|
||||
},
|
||||
"add": "Ajouter une condition",
|
||||
"button": {
|
||||
"0": "Recherche avancée",
|
||||
"_": "Recherche avancée (%d)"
|
||||
},
|
||||
"clearAll": "Effacer tout",
|
||||
"condition": "Condition",
|
||||
"data": "Donnée",
|
||||
"deleteTitle": "Supprimer la règle de filtrage",
|
||||
"logicAnd": "Et",
|
||||
"logicOr": "Ou",
|
||||
"title": {
|
||||
"0": "Recherche avancée",
|
||||
"_": "Recherche avancée (%d)"
|
||||
},
|
||||
"value": "Valeur",
|
||||
"leftTitle": "Désindenter le critère",
|
||||
"rightTitle": "Indenter le critère"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Effacer tout",
|
||||
"count": "{total}",
|
||||
"title": "Filtres actifs - %d",
|
||||
"collapse": {
|
||||
"0": "Volet de recherche",
|
||||
"_": "Volet de recherche (%d)"
|
||||
},
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Pas de volet de recherche",
|
||||
"loadMessage": "Chargement du volet de recherche...",
|
||||
"collapseMessage": "Réduire tout",
|
||||
"showMessage": "Montrer tout"
|
||||
"fillVertical": "Remplir les cellules verticalement",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Collection",
|
||||
"colvis": "Visibilité colonnes",
|
||||
"colvisRestore": "Rétablir visibilité",
|
||||
"copy": "Copier",
|
||||
"copyKeys": "Appuyez sur ctrl ou u2318 + C pour copier les données du tableau dans votre presse-papier.",
|
||||
"copySuccess": {
|
||||
"1": "1 ligne copiée dans le presse-papier",
|
||||
"_": "%d lignes copiées dans le presse-papier"
|
||||
"_": "%d lignes copiées dans le presse-papier",
|
||||
"1": "1 ligne copiée dans le presse-papier"
|
||||
},
|
||||
"copyTitle": "Copier dans le presse-papier",
|
||||
"createState": "Créer un état",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Afficher toutes les lignes",
|
||||
"_": "Afficher %d lignes",
|
||||
"-1": "Afficher toutes les lignes",
|
||||
"1": "Afficher 1 ligne"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Imprimer",
|
||||
"copyKeys": "Appuyez sur ctrl ou u2318 + C pour copier les données du tableau dans votre presse-papier.",
|
||||
"createState": "Créer un état",
|
||||
"removeAllStates": "Supprimer tous les états",
|
||||
"removeState": "Supprimer",
|
||||
"renameState": "Renommer",
|
||||
@@ -128,118 +45,270 @@
|
||||
"stateRestore": "État %d",
|
||||
"updateState": "Mettre à jour"
|
||||
},
|
||||
"decimal": ",",
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Effacer la recherche"
|
||||
},
|
||||
"colVis": "Visibilité colonnes",
|
||||
"colVisDropdown": "Visibilité colonnes",
|
||||
"dropdown": "Plus...",
|
||||
"list": {
|
||||
"all": "Tout sélectionner",
|
||||
"empty": "Vide",
|
||||
"none": "Désélectionner",
|
||||
"search": "Rechercher..."
|
||||
},
|
||||
"orderAddAsc": "Ajouter tri croissant",
|
||||
"orderAddDesc": "Ajouter tri décroissant",
|
||||
"orderAsc": "Tri croissant",
|
||||
"orderClear": "Effacer le tri",
|
||||
"orderDesc": "Tri décroissant",
|
||||
"orderRemove": "Supprimer du tri",
|
||||
"reorder": "Réorganiser les colonnes",
|
||||
"reorderLeft": "Déplacer la colonne vers la gauche",
|
||||
"reorderRight": "Déplacer la colonne vers la droite",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Vide",
|
||||
"equal": "Égal à",
|
||||
"greater": "Après le",
|
||||
"less": "Avant le",
|
||||
"notEmpty": "Non vide",
|
||||
"notEqual": "Différent de"
|
||||
},
|
||||
"number": {
|
||||
"empty": "Vide",
|
||||
"equal": "Égal à",
|
||||
"greater": "Supérieur à",
|
||||
"greaterOrEqual": "Supérieur ou égal à",
|
||||
"less": "Inférieur à",
|
||||
"lessOrEqual": "Inférieur ou égal à",
|
||||
"notEmpty": "Non vide",
|
||||
"notEqual": "Différent de"
|
||||
},
|
||||
"text": {
|
||||
"contains": "Contient",
|
||||
"empty": "Vide",
|
||||
"ends": "Se termine par",
|
||||
"equal": "Égal à",
|
||||
"notContains": "Ne contient pas",
|
||||
"notEmpty": "Non vide",
|
||||
"notEqual": "Différent de",
|
||||
"starts": "Commence par"
|
||||
}
|
||||
},
|
||||
"searchClear": "Effacer la recherche",
|
||||
"searchDropdown": "Rechercher"
|
||||
},
|
||||
"datetime": {
|
||||
"previous": "Précédent",
|
||||
"next": "Suivant",
|
||||
"amPm": {
|
||||
"0": "am",
|
||||
"1": "pm"
|
||||
},
|
||||
"hours": "Heures",
|
||||
"minutes": "Minutes",
|
||||
"seconds": "Secondes",
|
||||
"unknown": "-",
|
||||
"amPm": [
|
||||
"am",
|
||||
"pm"
|
||||
],
|
||||
"months": {
|
||||
"0": "Janvier",
|
||||
"1": "Février",
|
||||
"10": "Novembre",
|
||||
"11": "Décembre",
|
||||
"2": "Mars",
|
||||
"3": "Avril",
|
||||
"4": "Mai",
|
||||
"5": "Juin",
|
||||
"6": "Juillet",
|
||||
"7": "Août",
|
||||
"8": "Septembre",
|
||||
"9": "Octobre",
|
||||
"10": "Novembre",
|
||||
"1": "Février",
|
||||
"11": "Décembre",
|
||||
"7": "Août"
|
||||
"9": "Octobre"
|
||||
},
|
||||
"weekdays": [
|
||||
"Dim",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mer",
|
||||
"Jeu",
|
||||
"Ven",
|
||||
"Sam"
|
||||
]
|
||||
"next": "Suivant",
|
||||
"previous": "Précédent",
|
||||
"seconds": "Secondes",
|
||||
"unknown": "-",
|
||||
"weekdays": {
|
||||
"0": "Dim",
|
||||
"1": "Lun",
|
||||
"2": "Mar",
|
||||
"3": "Mer",
|
||||
"4": "Jeu",
|
||||
"5": "Ven",
|
||||
"6": "Sam"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Fermer",
|
||||
"create": {
|
||||
"title": "Créer une nouvelle entrée",
|
||||
"button": "Nouveau",
|
||||
"submit": "Créer"
|
||||
"submit": "Créer",
|
||||
"title": "Créer une nouvelle entrée"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Editer",
|
||||
"title": "Editer Entrée",
|
||||
"submit": "Mettre à jour"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Supprimer",
|
||||
"title": "Supprimer",
|
||||
"submit": "Supprimer",
|
||||
"confirm": {
|
||||
"_": "Êtes-vous sûr de vouloir supprimer %d lignes ?",
|
||||
"1": "Êtes-vous sûr de vouloir supprimer 1 ligne ?"
|
||||
}
|
||||
},
|
||||
"multi": {
|
||||
"title": "Valeurs multiples",
|
||||
"info": "Les éléments sélectionnés contiennent différentes valeurs pour cette entrée. Pour modifier et définir tous les éléments de cette entrée à la même valeur, cliquez ou tapez ici, sinon ils conserveront leurs valeurs individuelles.",
|
||||
"restore": "Annuler les modifications",
|
||||
"noMulti": "Ce champ peut être modifié individuellement, mais ne fait pas partie d'un groupe. "
|
||||
"submit": "Mettre à jour",
|
||||
"title": "Editer Entrée"
|
||||
},
|
||||
"error": {
|
||||
"system": "Une erreur système s'est produite (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">Plus d'information<\/a>)."
|
||||
},
|
||||
"multi": {
|
||||
"info": "Les éléments sélectionnés contiennent différentes valeurs pour cette entrée. Pour modifier et définir tous les éléments de cette entrée à la même valeur, cliquez ou tapez ici, sinon ils conserveront leurs valeurs individuelles.",
|
||||
"noMulti": "Ce champ peut être modifié individuellement, mais ne fait pas partie d'un groupe. ",
|
||||
"restore": "Annuler les modifications",
|
||||
"title": "Valeurs multiples"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Supprimer",
|
||||
"confirm": {
|
||||
"_": "Êtes-vous sûr de vouloir supprimer %d lignes ?",
|
||||
"1": "Êtes-vous sûr de vouloir supprimer 1 ligne ?"
|
||||
},
|
||||
"submit": "Supprimer",
|
||||
"title": "Supprimer"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Aucune donnée disponible dans le tableau",
|
||||
"info": "Affichage de _START_ à _END_ sur _TOTAL_ entrées",
|
||||
"infoEmpty": "Affichage de 0 à 0 sur 0 entrées",
|
||||
"infoFiltered": "(filtrées depuis un total de _MAX_ entrées)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": " ",
|
||||
"lengthLabels": {
|
||||
"-1": "Tout"
|
||||
},
|
||||
"lengthMenu": "Afficher _MENU_ entrées",
|
||||
"loadingRecords": "Chargement...",
|
||||
"orderClear": "Effacer le tri",
|
||||
"processing": "Traitement...",
|
||||
"search": "Rechercher :",
|
||||
"searchBuilder": {
|
||||
"add": "Ajouter une condition",
|
||||
"button": {
|
||||
"_": "Recherche avancée (%d)",
|
||||
"0": "Recherche avancée"
|
||||
},
|
||||
"clearAll": "Effacer tout",
|
||||
"condition": "Condition",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Contient",
|
||||
"empty": "Vide",
|
||||
"equals": "Égal à",
|
||||
"not": "Différent de",
|
||||
"notEmpty": "Non vide",
|
||||
"without": "Sans"
|
||||
},
|
||||
"date": {
|
||||
"after": "Après le",
|
||||
"before": "Avant le",
|
||||
"between": "Entre",
|
||||
"empty": "Vide",
|
||||
"equals": "Égal à",
|
||||
"not": "Différent de",
|
||||
"notBetween": "Pas entre",
|
||||
"notEmpty": "Non vide"
|
||||
},
|
||||
"number": {
|
||||
"between": "Entre",
|
||||
"empty": "Vide",
|
||||
"equals": "Égal à",
|
||||
"gt": "Supérieur à",
|
||||
"gte": "Supérieur ou égal à",
|
||||
"lt": "Inférieur à",
|
||||
"lte": "Inférieur ou égal à",
|
||||
"not": "Différent de",
|
||||
"notBetween": "Pas entre",
|
||||
"notEmpty": "Non vide"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Contient",
|
||||
"empty": "Vide",
|
||||
"endsWith": "Se termine par",
|
||||
"equals": "Égal à",
|
||||
"not": "Différent de",
|
||||
"notContains": "Ne contient pas",
|
||||
"notEmpty": "Non vide",
|
||||
"notEndsWith": "Ne termine pas par",
|
||||
"notStartsWith": "Ne commence pas par",
|
||||
"startsWith": "Commence par"
|
||||
}
|
||||
},
|
||||
"data": "Donnée",
|
||||
"deleteTitle": "Supprimer la règle de filtrage",
|
||||
"leftTitle": "Désindenter le critère",
|
||||
"logicAnd": "Et",
|
||||
"logicOr": "Ou",
|
||||
"rightTitle": "Indenter le critère",
|
||||
"search": "Rechercher",
|
||||
"title": {
|
||||
"_": "Recherche avancée (%d)",
|
||||
"0": "Recherche avancée"
|
||||
},
|
||||
"value": "Valeur",
|
||||
"valueJoiner": "et"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Effacer tout",
|
||||
"collapse": {
|
||||
"_": "Volet de recherche (%d)",
|
||||
"0": "Volet de recherche"
|
||||
},
|
||||
"collapseMessage": "Réduire tout",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "<em>vide<\/em>",
|
||||
"emptyPanes": "Pas de volet de recherche",
|
||||
"loadMessage": "Chargement du volet de recherche...",
|
||||
"showMessage": "Montrer tout",
|
||||
"title": "Filtres actifs - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "%d cellules sélectionnées",
|
||||
"0": "",
|
||||
"1": "1 cellule sélectionnée"
|
||||
},
|
||||
"columns": {
|
||||
"_": "%d colonnes sélectionnées",
|
||||
"0": "",
|
||||
"1": "1 colonne sélectionnée"
|
||||
},
|
||||
"rows": {
|
||||
"_": "%d lignes sélectionnées",
|
||||
"0": "",
|
||||
"1": "1 ligne sélectionnée"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
"removeSubmit": "Supprimer",
|
||||
"creationModal": {
|
||||
"button": "Créer",
|
||||
"order": "Tri",
|
||||
"paging": "Pagination",
|
||||
"scroller": "Position du défilement",
|
||||
"search": "Recherche",
|
||||
"select": "Sélection",
|
||||
"columns": {
|
||||
"search": "Recherche par colonne",
|
||||
"visible": "Visibilité des colonnes"
|
||||
},
|
||||
"name": "Nom :",
|
||||
"order": "Tri",
|
||||
"paging": "Pagination",
|
||||
"scroller": "Position du défilement",
|
||||
"search": "Recherche",
|
||||
"searchBuilder": "Recherche avancée",
|
||||
"select": "Sélection",
|
||||
"title": "Créer un nouvel état",
|
||||
"toggleLabel": "Inclus :"
|
||||
},
|
||||
"renameButton": "Renommer",
|
||||
"duplicateError": "Il existe déjà un état avec ce nom.",
|
||||
"emptyError": "Le nom ne peut pas être vide.",
|
||||
"emptyStates": "Aucun état sauvegardé",
|
||||
"removeConfirm": "Voulez vous vraiment supprimer %s ?",
|
||||
"removeError": "Échec de la suppression de l'état.",
|
||||
"removeJoiner": "et",
|
||||
"removeSubmit": "Supprimer",
|
||||
"removeTitle": "Supprimer l'état",
|
||||
"renameButton": "Renommer",
|
||||
"renameLabel": "Nouveau nom pour %s :",
|
||||
"renameTitle": "Renommer l'état"
|
||||
},
|
||||
"info": "Affichage de _START_ à _END_ sur _TOTAL_ entrées",
|
||||
"infoEmpty": "Affichage de 0 à 0 sur 0 entrées",
|
||||
"infoFiltered": "(filtrées depuis un total de _MAX_ entrées)",
|
||||
"lengthMenu": "Afficher _MENU_ entrées",
|
||||
"paginate": {
|
||||
"first": "Première",
|
||||
"last": "Dernière",
|
||||
"next": "Suivante",
|
||||
"previous": "Précédente"
|
||||
},
|
||||
"zeroRecords": "Aucune entrée correspondante trouvée",
|
||||
"aria": {
|
||||
"sortAscending": " : activer pour trier la colonne par ordre croissant",
|
||||
"sortDescending": " : activer pour trier la colonne par ordre décroissant"
|
||||
},
|
||||
"infoThousands": " ",
|
||||
"search": "Rechercher :",
|
||||
"thousands": " "
|
||||
"thousands": " ",
|
||||
"zeroRecords": "Aucune entrée correspondante trouvée"
|
||||
}
|
||||
@@ -1,24 +1,21 @@
|
||||
{
|
||||
"infoFiltered": "(filtrati da _MAX_ elementi totali)",
|
||||
"infoThousands": ".",
|
||||
"loadingRecords": "Caricamento...",
|
||||
"processing": "Elaborazione...",
|
||||
"search": "Cerca:",
|
||||
"paginate": {
|
||||
"first": "Inizio",
|
||||
"previous": "Precedente",
|
||||
"next": "Successivo",
|
||||
"last": "Fine"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": attiva per ordinare la colonna in ordine crescente",
|
||||
"sortDescending": ": attiva per ordinare la colonna in ordine decrescente"
|
||||
"orderable": "Ordinamento",
|
||||
"orderableRemove": "Rimuovi ordinamento",
|
||||
"orderableReverse": "Ordinamento inverso",
|
||||
"paginate": {
|
||||
"first": "Inizio",
|
||||
"last": "Fine",
|
||||
"next": "Successivo",
|
||||
"previous": "Precedente"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Annulla",
|
||||
"fill": "Riempi tutte le celle con <i>%d<\/i>",
|
||||
"fillHorizontal": "Riempi celle orizzontalmente",
|
||||
"fillVertical": "Riempi celle verticalmente"
|
||||
"fillVertical": "Riempi celle verticalmente",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Collezione <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
@@ -27,19 +24,20 @@
|
||||
"copy": "Copia",
|
||||
"copyKeys": "Premi ctrl o u2318 + C per copiare i dati della tabella nella tua clipboard di sistema.<br \/><br \/>Per annullare, clicca questo messaggio o premi ESC.",
|
||||
"copySuccess": {
|
||||
"1": "Copiata 1 riga nella clipboard",
|
||||
"_": "Copiate %d righe nella clipboard"
|
||||
"_": "Copiate %d righe nella clipboard",
|
||||
"1": "Copiata 1 riga nella clipboard"
|
||||
},
|
||||
"copyTitle": "Copia nella Clipboard",
|
||||
"createState": "Crea stato",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Mostra %d righe",
|
||||
"-1": "Mostra tutte le righe",
|
||||
"_": "Mostra %d righe"
|
||||
"1": "Mostra 1 riga"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Stampa",
|
||||
"createState": "Crea stato",
|
||||
"removeAllStates": "Rimuovi tutti gli stati",
|
||||
"removeState": "Rimuovi",
|
||||
"renameState": "Rinomina",
|
||||
@@ -47,138 +45,97 @@
|
||||
"stateRestore": "Ripristina stato",
|
||||
"updateState": "Aggiorna"
|
||||
},
|
||||
"emptyTable": "Nessun dato disponibile nella tabella",
|
||||
"info": "Risultati da _START_ a _END_ di _TOTAL_ elementi",
|
||||
"infoEmpty": "Risultati da 0 a 0 di 0 elementi",
|
||||
"lengthMenu": "Mostra _MENU_ elementi",
|
||||
"searchBuilder": {
|
||||
"add": "Aggiungi Condizione",
|
||||
"button": {
|
||||
"0": "Generatore di Ricerca",
|
||||
"_": "Generatori di Ricerca (%d)"
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Cancella ricerca"
|
||||
},
|
||||
"clearAll": "Pulisci Tutto",
|
||||
"condition": "Condizione",
|
||||
"conditions": {
|
||||
"date": {
|
||||
"after": "Dopo",
|
||||
"before": "Prima",
|
||||
"between": "Tra",
|
||||
"colVis": "Visibilità colonne",
|
||||
"colVisDropdown": "Visibilità colonne",
|
||||
"dropdown": "Altro...",
|
||||
"list": {
|
||||
"all": "Seleziona tutto",
|
||||
"empty": "Vuoto",
|
||||
"none": "Deseleziona tutto",
|
||||
"search": "Cerca..."
|
||||
},
|
||||
"orderAddAsc": "Aggiungi ordinamento crescente",
|
||||
"orderAddDesc": "Aggiungi ordinamento decrescente",
|
||||
"orderAsc": "Ordina in modo crescente",
|
||||
"orderClear": "Cancella ordinamento",
|
||||
"orderDesc": "Ordina in modo decrescente",
|
||||
"orderRemove": "Rimuovi dall'ordinamento",
|
||||
"reorder": "Riordina colonne",
|
||||
"reorderLeft": "Sposta la colonna a sinistra",
|
||||
"reorderRight": "Sposta la colonna a destra",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Vuoto",
|
||||
"equals": "Uguale A",
|
||||
"not": "Non",
|
||||
"notBetween": "Non Tra",
|
||||
"notEmpty": "Non Vuoto"
|
||||
"equal": "Uguale a",
|
||||
"greater": "Dopo il",
|
||||
"less": "Prima del",
|
||||
"notEmpty": "Non vuoto",
|
||||
"notEqual": "Diverso da"
|
||||
},
|
||||
"number": {
|
||||
"between": "Tra",
|
||||
"empty": "Vuoto",
|
||||
"equals": "Uguale A",
|
||||
"gt": "Maggiore Di",
|
||||
"gte": "Maggiore O Uguale A",
|
||||
"lt": "Minore Di",
|
||||
"lte": "Minore O Uguale A",
|
||||
"not": "Non",
|
||||
"notBetween": "Non Tra",
|
||||
"notEmpty": "Non Vuoto"
|
||||
"equal": "Uguale a",
|
||||
"greater": "Maggiore di",
|
||||
"greaterOrEqual": "Maggiore o uguale a",
|
||||
"less": "Minore di",
|
||||
"lessOrEqual": "Minore o uguale a",
|
||||
"notEmpty": "Non vuoto",
|
||||
"notEqual": "Diverso da"
|
||||
},
|
||||
"string": {
|
||||
"text": {
|
||||
"contains": "Contiene",
|
||||
"empty": "Vuoto",
|
||||
"endsWith": "Finisce Con",
|
||||
"equals": "Uguale A",
|
||||
"not": "Non",
|
||||
"notEmpty": "Non Vuoto",
|
||||
"startsWith": "Inizia Con",
|
||||
"notContains": "Non Contiene",
|
||||
"notStartsWith": "Non Inizia Con",
|
||||
"notEndsWith": "Non Finisce Con"
|
||||
},
|
||||
"array": {
|
||||
"equals": "Uguale A",
|
||||
"empty": "Vuoto",
|
||||
"contains": "Contiene",
|
||||
"not": "Non",
|
||||
"notEmpty": "Non Vuoto",
|
||||
"without": "Senza"
|
||||
"ends": "Termina con",
|
||||
"equal": "Uguale a",
|
||||
"notContains": "Non contiene",
|
||||
"notEmpty": "Non vuoto",
|
||||
"notEqual": "Diverso da",
|
||||
"starts": "Inizia con"
|
||||
}
|
||||
},
|
||||
"data": "Dati",
|
||||
"deleteTitle": "Elimina regola filtro",
|
||||
"leftTitle": "Criterio di Riduzione Rientro",
|
||||
"logicAnd": "E",
|
||||
"logicOr": "O",
|
||||
"rightTitle": "Criterio di Aumento Rientro",
|
||||
"title": {
|
||||
"0": "Generatore di Ricerca",
|
||||
"_": "Generatori di Ricerca (%d)"
|
||||
},
|
||||
"value": "Valore"
|
||||
"searchClear": "Cancella ricerca",
|
||||
"searchDropdown": "Cerca"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Pulisci Tutto",
|
||||
"collapse": {
|
||||
"0": "Pannello di Ricerca",
|
||||
"_": "Pannelli di Ricerca (%d)"
|
||||
},
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Nessun Pannello di Ricerca",
|
||||
"loadMessage": "Caricamento Pannello di Ricerca",
|
||||
"title": "Filtri Attivi - %d",
|
||||
"showMessage": "Mostra tutto",
|
||||
"collapseMessage": "Espandi tutto"
|
||||
},
|
||||
"select": {
|
||||
"cells": {
|
||||
"1": "1 cella selezionata",
|
||||
"_": "%d celle selezionate"
|
||||
},
|
||||
"columns": {
|
||||
"1": "1 colonna selezionata",
|
||||
"_": "%d colonne selezionate"
|
||||
},
|
||||
"rows": {
|
||||
"1": "1 riga selezionata",
|
||||
"_": "%d righe selezionate"
|
||||
}
|
||||
},
|
||||
"zeroRecords": "Nessun elemento corrispondente trovato",
|
||||
"datetime": {
|
||||
"amPm": [
|
||||
"am",
|
||||
"pm"
|
||||
],
|
||||
"amPm": {
|
||||
"0": "am",
|
||||
"1": "pm"
|
||||
},
|
||||
"hours": "ore",
|
||||
"minutes": "minuti",
|
||||
"months": {
|
||||
"0": "Gennaio",
|
||||
"1": "Febbraio",
|
||||
"10": "Novembre",
|
||||
"11": "Dicembre",
|
||||
"2": "Marzo",
|
||||
"3": "Aprile",
|
||||
"4": "Maggio",
|
||||
"5": "Giugno",
|
||||
"6": "Luglio",
|
||||
"7": "Agosto",
|
||||
"8": "Settembre",
|
||||
"9": "Ottobre"
|
||||
},
|
||||
"next": "successivo",
|
||||
"previous": "precedente",
|
||||
"seconds": "secondi",
|
||||
"unknown": "sconosciuto",
|
||||
"weekdays": [
|
||||
"Dom",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mer",
|
||||
"Gio",
|
||||
"Ven",
|
||||
"Sab"
|
||||
],
|
||||
"months": [
|
||||
"Gennaio",
|
||||
"Febbraio",
|
||||
"Marzo",
|
||||
"Aprile",
|
||||
"Maggio",
|
||||
"Giugno",
|
||||
"Luglio",
|
||||
"Agosto",
|
||||
"Settembre",
|
||||
"Ottobre",
|
||||
"Novembre",
|
||||
"Dicembre"
|
||||
]
|
||||
"weekdays": {
|
||||
"0": "Dom",
|
||||
"1": "Lun",
|
||||
"2": "Mar",
|
||||
"3": "Mer",
|
||||
"4": "Gio",
|
||||
"5": "Ven",
|
||||
"6": "Sab"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Chiudi",
|
||||
"create": {
|
||||
@@ -210,8 +167,115 @@
|
||||
"title": "Rimuovi"
|
||||
}
|
||||
},
|
||||
"thousands": ".",
|
||||
"decimal": ",",
|
||||
"emptyTable": "Nessun dato disponibile nella tabella",
|
||||
"info": "Risultati da _START_ a _END_ di _TOTAL_ elementi",
|
||||
"infoEmpty": "Risultati da 0 a 0 di 0 elementi",
|
||||
"infoFiltered": "(filtrati da _MAX_ elementi totali)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ".",
|
||||
"lengthMenu": "Mostra _MENU_ elementi",
|
||||
"loadingRecords": "Caricamento...",
|
||||
"processing": "Elaborazione...",
|
||||
"search": "Cerca:",
|
||||
"searchBuilder": {
|
||||
"add": "Aggiungi Condizione",
|
||||
"button": {
|
||||
"_": "Generatori di Ricerca (%d)",
|
||||
"0": "Generatore di Ricerca"
|
||||
},
|
||||
"clearAll": "Pulisci Tutto",
|
||||
"condition": "Condizione",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Contiene",
|
||||
"empty": "Vuoto",
|
||||
"equals": "Uguale A",
|
||||
"not": "Non",
|
||||
"notEmpty": "Non Vuoto",
|
||||
"without": "Senza"
|
||||
},
|
||||
"date": {
|
||||
"after": "Dopo",
|
||||
"before": "Prima",
|
||||
"between": "Tra",
|
||||
"empty": "Vuoto",
|
||||
"equals": "Uguale A",
|
||||
"not": "Non",
|
||||
"notBetween": "Non Tra",
|
||||
"notEmpty": "Non Vuoto"
|
||||
},
|
||||
"number": {
|
||||
"between": "Tra",
|
||||
"empty": "Vuoto",
|
||||
"equals": "Uguale A",
|
||||
"gt": "Maggiore Di",
|
||||
"gte": "Maggiore O Uguale A",
|
||||
"lt": "Minore Di",
|
||||
"lte": "Minore O Uguale A",
|
||||
"not": "Non",
|
||||
"notBetween": "Non Tra",
|
||||
"notEmpty": "Non Vuoto"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Contiene",
|
||||
"empty": "Vuoto",
|
||||
"endsWith": "Finisce Con",
|
||||
"equals": "Uguale A",
|
||||
"not": "Non",
|
||||
"notContains": "Non Contiene",
|
||||
"notEmpty": "Non Vuoto",
|
||||
"notEndsWith": "Non Finisce Con",
|
||||
"notStartsWith": "Non Inizia Con",
|
||||
"startsWith": "Inizia Con"
|
||||
}
|
||||
},
|
||||
"data": "Dati",
|
||||
"deleteTitle": "Elimina regola filtro",
|
||||
"leftTitle": "Criterio di Riduzione Rientro",
|
||||
"logicAnd": "E",
|
||||
"logicOr": "O",
|
||||
"rightTitle": "Criterio di Aumento Rientro",
|
||||
"search": "Cerca",
|
||||
"title": {
|
||||
"_": "Generatori di Ricerca (%d)",
|
||||
"0": "Generatore di Ricerca"
|
||||
},
|
||||
"value": "Valore",
|
||||
"valueJoiner": "e"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Pulisci Tutto",
|
||||
"collapse": {
|
||||
"_": "Pannelli di Ricerca (%d)",
|
||||
"0": "Pannello di Ricerca"
|
||||
},
|
||||
"collapseMessage": "Espandi tutto",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "Vuoto",
|
||||
"emptyPanes": "Nessun Pannello di Ricerca",
|
||||
"loadMessage": "Caricamento Pannello di Ricerca",
|
||||
"showMessage": "Mostra tutto",
|
||||
"title": "Filtri Attivi - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "%d celle selezionate",
|
||||
"0": "",
|
||||
"1": "1 cella selezionata"
|
||||
},
|
||||
"columns": {
|
||||
"_": "%d colonne selezionate",
|
||||
"0": "",
|
||||
"1": "1 colonna selezionata"
|
||||
},
|
||||
"rows": {
|
||||
"_": "%d righe selezionate",
|
||||
"0": "",
|
||||
"1": "1 riga selezionata"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "Crea",
|
||||
@@ -240,5 +304,7 @@
|
||||
"renameButton": "Rinomina",
|
||||
"renameLabel": "Nuovo nome per %s:",
|
||||
"renameTitle": "Rinomina Stato"
|
||||
}
|
||||
},
|
||||
"thousands": ".",
|
||||
"zeroRecords": "Nessun elemento corrispondente trovato"
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
{
|
||||
"aria": {
|
||||
"paginate": {
|
||||
"first": "先頭",
|
||||
"last": "最終",
|
||||
"next": "次",
|
||||
"previous": "前"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "キャンセル",
|
||||
"fill": "すべてのセルを <i>%d<\/i> で埋める",
|
||||
"fillHorizontal": "横方向にセルを埋める",
|
||||
"fillVertical": "縦方向にセルを埋める",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "コレクション <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "カラム表示\/非表示",
|
||||
"colvisRestore": "カラム表示のリセット",
|
||||
"copy": "コピー",
|
||||
"copyKeys": "Ctrl または ⌘ + C でテーブルのデータをクリップボードにコピーできます。<br \/><br \/>キャンセルするには、このメッセージをクリックするか、Esc キーを押してください。",
|
||||
"copySuccess": {
|
||||
"_": "%d 行をクリップボードにコピーしました",
|
||||
"1": "1 行をクリップボードにコピーしました"
|
||||
},
|
||||
"copyTitle": "クリップボードにコピー",
|
||||
"createState": "Stateを作成",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "%d 行を表示",
|
||||
"-1": "すべての行を表示"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "印刷",
|
||||
"removeAllStates": "Stateを全て削除",
|
||||
"removeState": "削除",
|
||||
"renameState": "名前を変更",
|
||||
"savedStates": "State一覧",
|
||||
"stateRestore": "State %d",
|
||||
"updateState": "更新"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "午前",
|
||||
"1": "午後"
|
||||
},
|
||||
"hours": "時",
|
||||
"minutes": "分",
|
||||
"months": {
|
||||
"0": "1月",
|
||||
"1": "2月",
|
||||
"10": "11月",
|
||||
"11": "12月",
|
||||
"2": "3月",
|
||||
"3": "4月",
|
||||
"4": "5月",
|
||||
"5": "6月",
|
||||
"6": "7月",
|
||||
"7": "8月",
|
||||
"8": "9月",
|
||||
"9": "10月"
|
||||
},
|
||||
"next": "次",
|
||||
"previous": "前",
|
||||
"seconds": "秒",
|
||||
"unknown": "-",
|
||||
"weekdays": {
|
||||
"0": "日",
|
||||
"1": "月",
|
||||
"2": "火",
|
||||
"3": "水",
|
||||
"4": "木",
|
||||
"5": "金",
|
||||
"6": "土"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "閉じる",
|
||||
"create": {
|
||||
"button": "新規",
|
||||
"submit": "作成",
|
||||
"title": "新しいエントリーを作成"
|
||||
},
|
||||
"edit": {
|
||||
"button": "編集",
|
||||
"submit": "更新",
|
||||
"title": "エントリーの編集"
|
||||
},
|
||||
"error": {
|
||||
"system": "システムエラーが発生しました (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">詳細<\/a>)。"
|
||||
},
|
||||
"multi": {
|
||||
"info": "選択されたアイテムにはこの入力に対して異なる値が含まれています。同じ値を設定する場合はクリック(またはタップ)してください。それ以外の場合は個別の値が維持されます。",
|
||||
"noMulti": "この入力は個別には編集できますが、グループの一部としては編集できません。",
|
||||
"restore": "元に戻す",
|
||||
"title": "複数の値"
|
||||
},
|
||||
"remove": {
|
||||
"button": "削除",
|
||||
"confirm": {
|
||||
"_": "%d 行を削除しますか?",
|
||||
"1": "1 行を削除しますか?"
|
||||
},
|
||||
"submit": "削除",
|
||||
"title": "削除"
|
||||
}
|
||||
},
|
||||
"emptyTable": "テーブルにデータがありません",
|
||||
"info": " _TOTAL_ 件中 _START_ から _END_ まで表示",
|
||||
"infoEmpty": " 0 件中 0 から 0 まで表示",
|
||||
"infoFiltered": "(全 _MAX_ 件より抽出)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ",",
|
||||
"lengthMenu": "_MENU_ 件表示",
|
||||
"loadingRecords": "読み込み中...",
|
||||
"processing": "処理中...",
|
||||
"search": "検索:",
|
||||
"searchBuilder": {
|
||||
"add": "条件を追加",
|
||||
"button": {
|
||||
"_": "カスタムサーチ (%d)",
|
||||
"0": "カスタムサーチ"
|
||||
},
|
||||
"clearAll": "すべての条件をクリア",
|
||||
"condition": "条件",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "含む",
|
||||
"empty": "空",
|
||||
"equals": "等しい",
|
||||
"not": "等しくない",
|
||||
"notEmpty": "空ではない",
|
||||
"without": "を含まない"
|
||||
},
|
||||
"date": {
|
||||
"after": "指定日以後",
|
||||
"before": "指定日以前",
|
||||
"between": "指定日範囲内",
|
||||
"empty": "空白",
|
||||
"equals": "等しい",
|
||||
"not": "等しくない",
|
||||
"notBetween": "指定日範囲外",
|
||||
"notEmpty": "空白ではない"
|
||||
},
|
||||
"number": {
|
||||
"between": "範囲内",
|
||||
"empty": "空白",
|
||||
"equals": "等しい",
|
||||
"gt": "より大きい",
|
||||
"gte": "以上",
|
||||
"lt": "より小さい",
|
||||
"lte": "以下",
|
||||
"not": "等しくない",
|
||||
"notBetween": "範囲外",
|
||||
"notEmpty": "空白ではない"
|
||||
},
|
||||
"string": {
|
||||
"contains": "含む",
|
||||
"empty": "空白",
|
||||
"endsWith": "次の文字で終わる",
|
||||
"equals": "次の文字と等しい",
|
||||
"not": "次の文字と等しくない",
|
||||
"notContains": "含まない",
|
||||
"notEmpty": "空白ではない",
|
||||
"notEndsWith": "で終わらない",
|
||||
"notStartsWith": "で始まらない",
|
||||
"startsWith": "で始まる"
|
||||
}
|
||||
},
|
||||
"data": "カラム",
|
||||
"deleteTitle": "絞り込みルールを削除",
|
||||
"leftTitle": "インデントを解除",
|
||||
"logicAnd": "And",
|
||||
"logicOr": "Or",
|
||||
"rightTitle": "インデント",
|
||||
"title": {
|
||||
"_": "カスタムサーチ (%d)",
|
||||
"0": "カスタムサーチ"
|
||||
},
|
||||
"value": "Value"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "すべてクリア",
|
||||
"collapse": {
|
||||
"_": "検索ペイン (%d)",
|
||||
"0": "検索ペイン"
|
||||
},
|
||||
"collapseMessage": "すべて折りたたむ",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "検索ペインがありません",
|
||||
"loadMessage": "検索ペインを読み込み中",
|
||||
"showMessage": "すべて表示",
|
||||
"title": "有効なフィルター - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "%d 個のセルが選択されました",
|
||||
"0": "",
|
||||
"1": "1 個のセルが選択されました"
|
||||
},
|
||||
"columns": {
|
||||
"_": "%d 列が選択されました",
|
||||
"0": "",
|
||||
"1": "1 列が選択されました"
|
||||
},
|
||||
"rows": {
|
||||
"_": "%d 行が選択されました",
|
||||
"0": "",
|
||||
"1": "1 行が選択されました"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "作成",
|
||||
"columns": {
|
||||
"search": "列の検索",
|
||||
"visible": "列の表示"
|
||||
},
|
||||
"name": "名前:",
|
||||
"order": "ソート",
|
||||
"paging": "ページング",
|
||||
"scroller": "スクロール位置",
|
||||
"search": "検索",
|
||||
"searchBuilder": "カスタムサーチ",
|
||||
"select": "検索",
|
||||
"title": "新しいStateを作成",
|
||||
"toggleLabel": "含む:"
|
||||
},
|
||||
"duplicateError": "この名前のStateはすでに存在します。",
|
||||
"emptyError": "名前を空にすることはできません。",
|
||||
"emptyStates": "保存されたStateはありません",
|
||||
"removeConfirm": "%s を削除してよろしいですか?",
|
||||
"removeError": "Stateの削除に失敗しました。",
|
||||
"removeJoiner": " と ",
|
||||
"removeSubmit": "削除",
|
||||
"removeTitle": "Stateを削除",
|
||||
"renameButton": "名前を変更",
|
||||
"renameLabel": "%s の新しい名前:",
|
||||
"renameTitle": "名前を変更"
|
||||
},
|
||||
"thousands": ",",
|
||||
"zeroRecords": "一致するレコードがありません"
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
{
|
||||
"aria": {
|
||||
"paginate": {
|
||||
"first": "처음",
|
||||
"last": "마지막",
|
||||
"next": "다음",
|
||||
"previous": "이전"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "취소",
|
||||
"fill": "모든 셀에 <i>%d<i><\/i><\/i> 채우기",
|
||||
"fillHorizontal": "수평으로 셀에 값 채우기",
|
||||
"fillVertical": "수직으로 셀에 값 채우기",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "모음 <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "열 보기",
|
||||
"colvisRestore": "보기 복원",
|
||||
"copy": "복사",
|
||||
"copyKeys": "ctrl키나 u2318 + C키로 테이블 데이터를 시스템 클립보드에서 복사하고 취소하려면 이 메시지를 클릭하거나 ESC키를 누르면됩니다.",
|
||||
"copySuccess": {
|
||||
"_": "%d행을 클립보드에서 복사됨",
|
||||
"1": "1행을 클립보드에서 복사됨"
|
||||
},
|
||||
"copyTitle": "클립보드에서 복사",
|
||||
"createState": "상태 생성",
|
||||
"csv": "CSV",
|
||||
"excel": "엑셀",
|
||||
"pageLength": {
|
||||
"_": "%d행 보기",
|
||||
"-1": "모든 행 보기",
|
||||
"1": "1행 보기"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "인쇄",
|
||||
"removeAllStates": "모든 상태 삭제",
|
||||
"removeState": "삭제",
|
||||
"renameState": "이름 변경",
|
||||
"savedStates": "저장된 상태",
|
||||
"stateRestore": "상태 %d",
|
||||
"updateState": "갱신"
|
||||
},
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "검색 지우기"
|
||||
},
|
||||
"dropdown": "더 보기...",
|
||||
"list": {
|
||||
"all": "전체 선택",
|
||||
"empty": "비어 있음",
|
||||
"none": "선택 해제",
|
||||
"search": "검색..."
|
||||
},
|
||||
"orderAsc": "오름차순 정렬",
|
||||
"orderClear": "정렬 지우기",
|
||||
"orderDesc": "내림차순 정렬",
|
||||
"orderRemove": "정렬 취소",
|
||||
"reorder": "열 이동",
|
||||
"reorderLeft": "왼쪽으로 열 이동",
|
||||
"reorderRight": "오른쪽으로 열 이동",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "비어 있음",
|
||||
"equal": "같음",
|
||||
"greater": "이후",
|
||||
"less": "이전",
|
||||
"notEmpty": "비어 있지 않음",
|
||||
"notEqual": "같지 않음"
|
||||
},
|
||||
"number": {
|
||||
"empty": "비어 있음",
|
||||
"equal": "같음",
|
||||
"greater": "큼",
|
||||
"greaterOrEqual": "크거나 같음",
|
||||
"less": "작음",
|
||||
"lessOrEqual": "작거나 같음",
|
||||
"notEmpty": "비어 있지 않음",
|
||||
"notEqual": "같지 않음"
|
||||
},
|
||||
"text": {
|
||||
"contains": "포함되어 있음",
|
||||
"empty": "비어 있음",
|
||||
"ends": "끝남",
|
||||
"equal": "같음",
|
||||
"notContains": "포함되어 있지 않음",
|
||||
"notEmpty": "비어 있지 않음",
|
||||
"notEqual": "같지 않음",
|
||||
"starts": "시작함"
|
||||
}
|
||||
},
|
||||
"searchClear": "검색 지우기",
|
||||
"searchDropdown": "검색"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "오전",
|
||||
"1": "오후"
|
||||
},
|
||||
"hours": "시",
|
||||
"minutes": "분",
|
||||
"months": {
|
||||
"0": "1월",
|
||||
"1": "2월",
|
||||
"10": "11월",
|
||||
"11": "12월",
|
||||
"2": "3월",
|
||||
"3": "4월",
|
||||
"4": "5월",
|
||||
"5": "6월",
|
||||
"6": "7월",
|
||||
"7": "8월",
|
||||
"8": "9월",
|
||||
"9": "10월"
|
||||
},
|
||||
"next": "다음",
|
||||
"previous": "이전",
|
||||
"seconds": "초",
|
||||
"unknown": "-",
|
||||
"weekdays": {
|
||||
"0": "일",
|
||||
"1": "월",
|
||||
"2": "화",
|
||||
"3": "수",
|
||||
"4": "목",
|
||||
"5": "금",
|
||||
"6": "토"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "닫기",
|
||||
"create": {
|
||||
"button": "추가",
|
||||
"submit": "완료",
|
||||
"title": "항목 추가"
|
||||
},
|
||||
"edit": {
|
||||
"button": "수정",
|
||||
"submit": "완료",
|
||||
"title": "항목 수정"
|
||||
},
|
||||
"error": {
|
||||
"system": "에러가 발생하였습니다 (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">자세한 정보<\/a>)."
|
||||
},
|
||||
"remove": {
|
||||
"button": "삭제",
|
||||
"submit": "완료",
|
||||
"title": "항목 삭제"
|
||||
}
|
||||
},
|
||||
"emptyTable": "데이터가 없습니다",
|
||||
"info": "_START_ - _END_ \/ _TOTAL_",
|
||||
"infoEmpty": "0 - 0 \/ 0",
|
||||
"infoFiltered": "(총 _MAX_ 개)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ",",
|
||||
"lengthLabels": {
|
||||
"-1": "전체"
|
||||
},
|
||||
"lengthMenu": "페이지당 줄수 _MENU_",
|
||||
"loadingRecords": "읽는 중...",
|
||||
"processing": "처리 중...",
|
||||
"search": "검색:",
|
||||
"searchBuilder": {
|
||||
"add": "조건 추가",
|
||||
"button": {
|
||||
"_": "빌더 조회(%d)",
|
||||
"0": "빌더 조회"
|
||||
},
|
||||
"clearAll": "모두 지우기",
|
||||
"condition": "조건",
|
||||
"data": "데이터",
|
||||
"deleteTitle": "필터 규칙을 삭제",
|
||||
"logicAnd": "And",
|
||||
"logicOr": "Or",
|
||||
"title": {
|
||||
"_": "빌더 조회(%d)",
|
||||
"0": "빌더 조회"
|
||||
},
|
||||
"value": "값"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"0": ""
|
||||
},
|
||||
"columns": {
|
||||
"0": ""
|
||||
},
|
||||
"rows": {
|
||||
"0": ""
|
||||
}
|
||||
},
|
||||
"zeroRecords": "검색 결과가 없습니다"
|
||||
}
|
||||
@@ -1,66 +1,203 @@
|
||||
{
|
||||
"lengthMenu": "_MENU_ resultaten weergeven",
|
||||
"zeroRecords": "Geen resultaten gevonden",
|
||||
"infoEmpty": "Geen resultaten om weer te geven",
|
||||
"search": "Zoeken:",
|
||||
"emptyTable": "Geen resultaten aanwezig in de tabel",
|
||||
"infoThousands": ".",
|
||||
"loadingRecords": "Een moment geduld aub - bezig met laden...",
|
||||
"paginate": {
|
||||
"first": "Eerste",
|
||||
"last": "Laatste",
|
||||
"next": "Volgende",
|
||||
"previous": "Vorige"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": activeer om kolom oplopend te sorteren",
|
||||
"sortDescending": ": activeer om kolom aflopend te sorteren"
|
||||
"orderable": "Sorteren inschakelen",
|
||||
"orderableRemove": "Sortering verwijderen",
|
||||
"orderableReverse": "Sortering omkeren",
|
||||
"paginate": {
|
||||
"first": "Eerste",
|
||||
"last": "Laatste",
|
||||
"next": "Volgende",
|
||||
"previous": "Vorige"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Annuleren",
|
||||
"fill": "Vul alle cellen met <i>%d<\/i>",
|
||||
"fillHorizontal": "Vul cellen horizontaal",
|
||||
"fillVertical": "Vul cellen verticaal",
|
||||
"cancel": "Annuleren",
|
||||
"info": "Voorbeeld automatisch aanvullen info"
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Verzameling",
|
||||
"colvis": "Kolom zichtbaarheid",
|
||||
"colvisRestore": "Herstel zichtbaarheid",
|
||||
"copy": "Kopieer",
|
||||
"copyKeys": "Klik ctrl of u2318 + C om de tabeldata to kopiëren naar je klembord. Om te annuleren klik hier of klik op escape.",
|
||||
"copySuccess": {
|
||||
"1": "1 regel naar klembord gekopieerd",
|
||||
"_": "%ds regels naar klembord gekopieerd"
|
||||
"_": "%ds regels naar klembord gekopieerd",
|
||||
"1": "1 regel naar klembord gekopieerd"
|
||||
},
|
||||
"copyTitle": "Kopieer naar klembord",
|
||||
"createState": "Maak staat",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Toon alle regels",
|
||||
"_": "Toon %d regels",
|
||||
"1": "Toon 1 rij"
|
||||
"-1": "Toon alle regels",
|
||||
"1": "Toon 1 regel"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Print",
|
||||
"copyKeys": "Klik ctrl of u2318 + C om de tabeldata to kopiëren naar je klembord. Om te annuleren klik hier of klik op escape.",
|
||||
"collection": "Verzameling",
|
||||
"createState": "Maak staat",
|
||||
"removeAllStates": "Verwijder alle",
|
||||
"removeState": "Verwijder",
|
||||
"renameState": "Hernoem",
|
||||
"savedStates": "Opgeslagen",
|
||||
"updateState": "Bijwerken",
|
||||
"stateRestore": "Preset %d"
|
||||
"stateRestore": "Preset %d",
|
||||
"updateState": "Bijwerken"
|
||||
},
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Reset zoekactie"
|
||||
},
|
||||
"colVis": "Kolom zichtbaarheid",
|
||||
"colVisDropdown": "Kolom zichtbaarheid",
|
||||
"dropdown": "Meer...",
|
||||
"list": {
|
||||
"all": "Selecteer alles",
|
||||
"empty": "Leeg",
|
||||
"none": "Deselecteer",
|
||||
"search": "Zoeken..."
|
||||
},
|
||||
"orderAddAsc": "Sortering toevoegen (oplopend)",
|
||||
"orderAddDesc": "Sortering toevoegen (aflopend)",
|
||||
"orderAsc": "Oplopend sorteren",
|
||||
"orderClear": "Reset sortering",
|
||||
"orderDesc": "Aflopend sorteren",
|
||||
"orderRemove": "Verwijder van sortering",
|
||||
"reorder": "Kolommen herschikken",
|
||||
"reorderLeft": "Verplaats kolom links",
|
||||
"reorderRight": "Verplaatst kolom rechts",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Leeg",
|
||||
"equal": "Gelijk aan",
|
||||
"greater": "Na",
|
||||
"less": "Vóór",
|
||||
"notEmpty": "Niet leeg",
|
||||
"notEqual": "Niet gelijk aan"
|
||||
},
|
||||
"number": {
|
||||
"empty": "Leeg",
|
||||
"equal": "Gelijk aan",
|
||||
"greater": "Meer dan",
|
||||
"greaterOrEqual": "Meer of gelijk",
|
||||
"less": "Minder dan",
|
||||
"lessOrEqual": "Minder of gelijk",
|
||||
"notEmpty": "Niet leeg",
|
||||
"notEqual": "Niet gelijk aan"
|
||||
},
|
||||
"text": {
|
||||
"contains": "Bevat",
|
||||
"empty": "Leeg",
|
||||
"ends": "Eindigt",
|
||||
"equal": "Gelijk aan",
|
||||
"notContains": "Bevat niet",
|
||||
"notEmpty": "Niet leeg",
|
||||
"notEqual": "Niet gelijk aan",
|
||||
"starts": "Begint"
|
||||
}
|
||||
},
|
||||
"searchClear": "Reset zoekactie",
|
||||
"searchDropdown": "Zoeken"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "vm",
|
||||
"1": "nm"
|
||||
},
|
||||
"hours": "Uur",
|
||||
"minutes": "Minuut",
|
||||
"months": {
|
||||
"0": "Januari",
|
||||
"1": "Februari",
|
||||
"10": "November",
|
||||
"11": "December",
|
||||
"2": "Maart",
|
||||
"3": "April",
|
||||
"4": "Mei",
|
||||
"5": "Juni",
|
||||
"6": "Juli",
|
||||
"7": "Augustus",
|
||||
"8": "September",
|
||||
"9": "Oktober"
|
||||
},
|
||||
"next": "Volgende",
|
||||
"previous": "Vorige",
|
||||
"seconds": "Seconde",
|
||||
"unknown": "Onbekend",
|
||||
"weekdays": {
|
||||
"0": "Zo",
|
||||
"1": "Ma",
|
||||
"2": "Di",
|
||||
"3": "Wo",
|
||||
"4": "Do",
|
||||
"5": "Vr",
|
||||
"6": "Za"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Sluiten",
|
||||
"create": {
|
||||
"button": "Nieuw",
|
||||
"submit": "Toevoegen",
|
||||
"title": "Voeg nieuwe gegevens toe"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Wijzigen",
|
||||
"submit": "Wijzigen",
|
||||
"title": "Wijzig gegevens"
|
||||
},
|
||||
"error": {
|
||||
"system": "Er is een fout gebeurd"
|
||||
},
|
||||
"multi": {
|
||||
"info": "De geselecteerde items bevatten verschillende waarden voor deze invoer. Om alle items voor deze invoer op dezelfde waarde te zetten, klik of tik hier, zoniet zullen de individuele waarden behouden blijven.",
|
||||
"noMulti": "Deze invoer kan individueel gewijzigd worden, maar niet als deel van een groep.",
|
||||
"restore": "Wijzigingen ongedaan maken",
|
||||
"title": "Meerdere waarden"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Verwijderen",
|
||||
"confirm": {
|
||||
"_": "Bent u zeker dat u %d rijen wil verwijderen?",
|
||||
"1": "Bent u zeker dat u 1 rij wil verwijderen?"
|
||||
},
|
||||
"submit": "Verwijder",
|
||||
"title": "Verwijder"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Geen resultaten aanwezig in de tabel",
|
||||
"info": "_START_ tot _END_ van _TOTAL_ resultaten",
|
||||
"infoEmpty": "Geen resultaten om weer te geven",
|
||||
"infoFiltered": " (gefilterd uit _MAX_ resultaten)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ".",
|
||||
"lengthLabels": {
|
||||
"-1": "Alle"
|
||||
},
|
||||
"lengthMenu": "_MENU_ resultaten weergeven",
|
||||
"loadingRecords": "Een moment geduld aub - bezig met laden...",
|
||||
"orderClear": "Reset sortering",
|
||||
"processing": "Verwerken...",
|
||||
"decimal": ",",
|
||||
"search": "Zoeken:",
|
||||
"searchBuilder": {
|
||||
"add": "Toevoegen",
|
||||
"button": {
|
||||
"_": "Zoekwizard (%d)",
|
||||
"0": "Zoekwizard"
|
||||
},
|
||||
"clearAll": "Verwijder alles",
|
||||
"condition": "Conditie",
|
||||
"data": "Data",
|
||||
"deleteTitle": "Verwijder",
|
||||
"value": "Waarde",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Bevat",
|
||||
"empty": "Leeg",
|
||||
"equals": "Gelijk aan",
|
||||
"not": "Niet",
|
||||
"notEmpty": "Niet leeg",
|
||||
"without": "Zonder"
|
||||
},
|
||||
"date": {
|
||||
"after": "Na",
|
||||
"before": "Voor",
|
||||
@@ -89,129 +226,57 @@
|
||||
"endsWith": "Eindigt met",
|
||||
"equals": "Gelijk aan",
|
||||
"not": "Niet",
|
||||
"notEmpty": "Niet leeg",
|
||||
"startsWith": "Start met",
|
||||
"notContains": "Zonder",
|
||||
"notEndsWith": "Eindigt niet met",
|
||||
"notStartsWith": "Begint niet met"
|
||||
},
|
||||
"array": {
|
||||
"equals": "Gelijk aan",
|
||||
"empty": "Leeg",
|
||||
"contains": "Bevat",
|
||||
"not": "Niet",
|
||||
"notEmpty": "Niet leeg",
|
||||
"without": "Zonder"
|
||||
"notEndsWith": "Eindigt niet met",
|
||||
"notStartsWith": "Begint niet met",
|
||||
"startsWith": "Start met"
|
||||
}
|
||||
},
|
||||
"data": "Data",
|
||||
"deleteTitle": "Verwijder",
|
||||
"leftTitle": "Afwijkende criteria",
|
||||
"logicAnd": "En",
|
||||
"logicOr": "Of",
|
||||
"button": {
|
||||
"0": "Zoekwizard",
|
||||
"_": "Zoekwizard (%d)"
|
||||
},
|
||||
"leftTitle": "Afwijkende criteria",
|
||||
"rightTitle": "Criteria inspringen",
|
||||
"search": "Zoeken",
|
||||
"title": {
|
||||
"0": "Zoekwizard",
|
||||
"_": "Zoekwizard (%d) "
|
||||
}
|
||||
"_": "Zoekwizard (%d) ",
|
||||
"0": "Zoekwizard"
|
||||
},
|
||||
"value": "Waarde"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Alles leegmaken",
|
||||
"collapse": {
|
||||
"0": "Zoekpanelen",
|
||||
"_": "Zoekpanelen (%d)"
|
||||
"_": "Zoekpanelen (%d)",
|
||||
"0": "Zoekpanelen"
|
||||
},
|
||||
"collapseMessage": "Instorten",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "<em>Leeg<\/em>",
|
||||
"emptyPanes": "Geen zoekpanelen",
|
||||
"loadMessage": "Zoekpanelen laden...",
|
||||
"title": "%d filters actief",
|
||||
"showMessage": "Alles weergeven",
|
||||
"collapseMessage": "Instorten"
|
||||
"title": "%d filters actief"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"1": "1 cel geselecteerd",
|
||||
"_": "%d cellen geselecteerd"
|
||||
"_": "%d cellen geselecteerd",
|
||||
"0": "",
|
||||
"1": "1 cel geselecteerd"
|
||||
},
|
||||
"columns": {
|
||||
"1": "1 kolom geselecteerd",
|
||||
"_": "%d kolommen geselecteerd"
|
||||
"_": "%d kolommen geselecteerd",
|
||||
"0": "",
|
||||
"1": "1 kolom geselecteerd"
|
||||
},
|
||||
"rows": {
|
||||
"1": "1 rij geselecteerd",
|
||||
"_": "%d rijen geselecteerd"
|
||||
}
|
||||
},
|
||||
"thousands": ".",
|
||||
"info": "_START_ tot _END_ van _TOTAL_ resultaten",
|
||||
"infoFiltered": " (gefilterd uit _MAX_ resultaten)",
|
||||
"datetime": {
|
||||
"previous": "Vorige",
|
||||
"next": "Volgende",
|
||||
"hours": "Uur",
|
||||
"minutes": "Minuut",
|
||||
"seconds": "Seconde",
|
||||
"unknown": "Onbekend",
|
||||
"amPm": [
|
||||
"vm",
|
||||
"nm"
|
||||
],
|
||||
"weekdays": [
|
||||
"Zo",
|
||||
"Ma",
|
||||
"Di",
|
||||
"Wo",
|
||||
"Do",
|
||||
"Vr",
|
||||
"Za"
|
||||
],
|
||||
"months": [
|
||||
"Januari",
|
||||
"Februari",
|
||||
"Maart",
|
||||
"April",
|
||||
"Mei",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"Augustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December"
|
||||
]
|
||||
},
|
||||
"editor": {
|
||||
"close": "Sluiten",
|
||||
"create": {
|
||||
"button": "Nieuw",
|
||||
"title": "Voeg nieuwe gegevens toe",
|
||||
"submit": "Toevoegen"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Wijzigen",
|
||||
"title": "Wijzig gegevens",
|
||||
"submit": "Wijzigen"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Verwijderen",
|
||||
"title": "Verwijder",
|
||||
"submit": "Verwijder",
|
||||
"confirm": {
|
||||
"_": "Bent u zeker dat u %d rijen wil verwijderen?",
|
||||
"1": "Bent u zeker dat u 1 rij wil verwijderen?"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"system": "Er is een fout gebeurd"
|
||||
},
|
||||
"multi": {
|
||||
"title": "Meerdere waarden",
|
||||
"info": "De geselecteerde items bevatten verschillende waarden voor deze invoer. Om alle items voor deze invoer op dezelfde waarde te zetten, klik of tik hier, zoniet zullen de individuele waarden behouden blijven.",
|
||||
"restore": "Wijzigingen ongedaan maken",
|
||||
"noMulti": "Deze invoer kan individueel gewijzigd worden, maar niet als deel van een groep."
|
||||
"_": "%d rijen geselecteerd",
|
||||
"0": "",
|
||||
"1": "1 rij geselecteerd"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
@@ -242,5 +307,7 @@
|
||||
"renameButton": "Hernoem",
|
||||
"renameLabel": "Nieuwe naam voor staat",
|
||||
"renameTitle": "Hernoem staat"
|
||||
}
|
||||
},
|
||||
"thousands": ".",
|
||||
"zeroRecords": "Geen resultaten gevonden"
|
||||
}
|
||||
@@ -1,27 +1,21 @@
|
||||
{
|
||||
"processing": "Przetwarzanie...",
|
||||
"search": "Szukaj:",
|
||||
"lengthMenu": "Pokaż _MENU_ pozycji",
|
||||
"info": "Pozycje od _START_ do _END_ z _TOTAL_ łącznie",
|
||||
"infoEmpty": "Pozycji 0 z 0 dostępnych",
|
||||
"infoFiltered": "(filtrowanie spośród _MAX_ dostępnych pozycji)",
|
||||
"loadingRecords": "Wczytywanie...",
|
||||
"zeroRecords": "Nie znaleziono pasujących pozycji",
|
||||
"paginate": {
|
||||
"first": "Pierwsza",
|
||||
"previous": "Poprzednia",
|
||||
"next": "Następna",
|
||||
"last": "Ostatnia"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": aktywuj, by posortować kolumnę rosnąco",
|
||||
"sortDescending": ": aktywuj, by posortować kolumnę malejąco"
|
||||
"orderable": "Aktywuj sortowanie",
|
||||
"orderableRemove": "Aktywuj, aby usunąć sortowanie",
|
||||
"orderableReverse": "Aktywuj, aby odwrócić sortowanie",
|
||||
"paginate": {
|
||||
"first": "Pierwsza",
|
||||
"last": "Ostatnia",
|
||||
"next": "Następna",
|
||||
"previous": "Poprzednia"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Anuluj",
|
||||
"fill": "Wypełnij wszystkie komórki <i>%d<\/i>",
|
||||
"fillHorizontal": "Wypełnij komórki w poziomie",
|
||||
"fillVertical": "Wypełnij komórki w pionie"
|
||||
"fillVertical": "Wypełnij komórki w pionie",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Zbiór <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
@@ -30,19 +24,20 @@
|
||||
"copy": "Kopiuj",
|
||||
"copyKeys": "Naciśnij Ctrl lub u2318 + C, aby skopiować dane tabeli do schowka systemowego. <br \/> <br \/> Aby anulować, kliknij tę wiadomość lub naciśnij Esc.",
|
||||
"copySuccess": {
|
||||
"1": "Skopiowano 1 wiersz do schowka",
|
||||
"_": "Skopiowano %d wierszy do schowka"
|
||||
"_": "Skopiowano %d wierszy do schowka",
|
||||
"1": "Skopiowano 1 wiersz do schowka"
|
||||
},
|
||||
"copyTitle": "Skopiuj do schowka",
|
||||
"createState": "Utwórz stan",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Pokaż %d wierszy",
|
||||
"-1": "Pokaż wszystkie wiersze",
|
||||
"_": "Pokaż %d wierszy"
|
||||
"1": "Pokaż 1 wiersz"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Drukuj",
|
||||
"createState": "Utwórz stan",
|
||||
"removeAllStates": "Usuń wszystkie stany",
|
||||
"removeState": "Usuń",
|
||||
"renameState": "Zmień nazwę",
|
||||
@@ -50,16 +45,150 @@
|
||||
"stateRestore": "Stan %d",
|
||||
"updateState": "Aktualizuj"
|
||||
},
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Wyczyść wyszukiwanie"
|
||||
},
|
||||
"colVis": "Widoczność kolumn",
|
||||
"colVisDropdown": "Widoczność kolumn",
|
||||
"dropdown": "Więcej...",
|
||||
"list": {
|
||||
"all": "Zaznacz wszystko",
|
||||
"empty": "Puste",
|
||||
"none": "Odznacz wszystko",
|
||||
"search": "Szukaj..."
|
||||
},
|
||||
"orderAddAsc": "Dodaj sortowanie rosnąco",
|
||||
"orderAddDesc": "Dodaj sortowanie malejąco",
|
||||
"orderAsc": "Sortowanie rosnące",
|
||||
"orderClear": "Wyczyść sortowanie",
|
||||
"orderDesc": "Sortowanie malejące",
|
||||
"orderRemove": "Usuń z sortowania",
|
||||
"reorder": "Przestaw kolumny",
|
||||
"reorderLeft": "Przesuń kolumnę w lewo",
|
||||
"reorderRight": "Przesuń kolumnę w prawo",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Puste",
|
||||
"equal": "Równe",
|
||||
"greater": "Po",
|
||||
"less": "Przed",
|
||||
"notEmpty": "Niepuste",
|
||||
"notEqual": "Różne od"
|
||||
},
|
||||
"number": {
|
||||
"empty": "Puste",
|
||||
"equal": "Równe",
|
||||
"greater": "Większe niż",
|
||||
"greaterOrEqual": "Większe lub równe",
|
||||
"less": "Mniejsze niż",
|
||||
"lessOrEqual": "Mniejsze lub równe",
|
||||
"notEmpty": "Niepuste",
|
||||
"notEqual": "Różne od"
|
||||
},
|
||||
"text": {
|
||||
"contains": "Zawiera",
|
||||
"empty": "Puste",
|
||||
"ends": "Kończy się na",
|
||||
"equal": "Równe",
|
||||
"notContains": "Nie zawiera",
|
||||
"notEmpty": "Niepuste",
|
||||
"notEqual": "Różne od",
|
||||
"starts": "Zaczyna się od"
|
||||
}
|
||||
},
|
||||
"searchClear": "Wyczyść wyszukiwanie",
|
||||
"searchDropdown": "Wyszukaj"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "am",
|
||||
"1": "pm"
|
||||
},
|
||||
"hours": "Godzina",
|
||||
"minutes": "Minuta",
|
||||
"months": {
|
||||
"0": "Styczeń",
|
||||
"1": "Luty",
|
||||
"10": "Listopad",
|
||||
"11": "Grudzień",
|
||||
"2": "Marzec",
|
||||
"3": "Kwiecień",
|
||||
"4": "Maj",
|
||||
"5": "Czerwiec",
|
||||
"6": "Lipiec",
|
||||
"7": "Sierpień",
|
||||
"8": "Wrzesień",
|
||||
"9": "Październik"
|
||||
},
|
||||
"next": "Następne",
|
||||
"previous": "Poprzednie",
|
||||
"seconds": "Sekunda",
|
||||
"unknown": "nieznana",
|
||||
"weekdays": {
|
||||
"0": "Nd",
|
||||
"1": "Pn",
|
||||
"2": "Wt",
|
||||
"3": "Śr",
|
||||
"4": "Czw",
|
||||
"5": "Pt",
|
||||
"6": "So"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Zamknij",
|
||||
"create": {
|
||||
"button": "Dodaj",
|
||||
"submit": "Dodaj",
|
||||
"title": "Dodawanie nowego wpisu"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Edytuj",
|
||||
"submit": "Aktualizuj",
|
||||
"title": "Aktualizacja wpisu"
|
||||
},
|
||||
"error": {
|
||||
"system": "Nastąpił błąd systemu (<a target=\"\\\" rel=\"\\ nofollow\" href=\"\\\">Więcej informacji<\\\/a>).<\/a>"
|
||||
},
|
||||
"multi": {
|
||||
"info": "Wybrane pole zawiera wiele elementów z różnymi wartościami. Aby zmienić ich wartość kliknij w nie, inaczej zachowane zostaną ich wartości domyślne.",
|
||||
"noMulti": "Ta wartość może być edytowana oddzielnie - niezależnie od grupy.",
|
||||
"restore": "Cofnij zmiany",
|
||||
"title": "Pole z wieloma wartościami"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Usuń",
|
||||
"confirm": {
|
||||
"_": "Czy na pewno chcesz usunąć %d rzędów?",
|
||||
"1": "Czy na pewno chcesz usunąć 1 rząd?"
|
||||
},
|
||||
"submit": "Usuń",
|
||||
"title": "Usuwanie"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Brak danych w tabeli",
|
||||
"info": "Pozycje od _START_ do _END_ z _TOTAL_ łącznie",
|
||||
"infoEmpty": "Pozycji 0 z 0 dostępnych",
|
||||
"infoFiltered": "(filtrowanie spośród _MAX_ dostępnych pozycji)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": " ",
|
||||
"lengthLabels": {
|
||||
"-1": "Wszystko"
|
||||
},
|
||||
"lengthMenu": "Pokaż _MENU_ pozycji",
|
||||
"loadingRecords": "Wczytywanie...",
|
||||
"orderClear": "Wyczyść sortowanie",
|
||||
"processing": "Przetwarzanie...",
|
||||
"search": "Szukaj:",
|
||||
"searchBuilder": {
|
||||
"add": "Dodaj warunek",
|
||||
"clearAll": "Wyczyść wszystko",
|
||||
"condition": "Warunek",
|
||||
"data": "Dane",
|
||||
"button": {
|
||||
"_": "Aktywne zapytania",
|
||||
"0": "Budowanie zapytania"
|
||||
},
|
||||
"clearAll": "Wyczyść wszystko",
|
||||
"condition": "Warunek",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Zawiera",
|
||||
@@ -97,112 +226,57 @@
|
||||
"endsWith": "Kończy się na",
|
||||
"equals": "Równa się",
|
||||
"not": "Nie",
|
||||
"notEmpty": "Nie pusty",
|
||||
"startsWith": "Zaczyna się od",
|
||||
"notContains": "Nie zawiera",
|
||||
"notEmpty": "Nie pusty",
|
||||
"notEndsWith": "Nie kończy się na",
|
||||
"notStartsWith": "Nie zaczyna się od",
|
||||
"notEndsWith": "Nie kończy się na"
|
||||
"startsWith": "Zaczyna się od"
|
||||
}
|
||||
},
|
||||
"data": "Dane",
|
||||
"deleteTitle": "Czyszczenie",
|
||||
"leftTitle": "Lewy",
|
||||
"logicAnd": "I",
|
||||
"logicOr": "Lub",
|
||||
"rightTitle": "Prawy",
|
||||
"search": "Szukaj",
|
||||
"title": {
|
||||
"_": "Aktywne zapytania",
|
||||
"0": "Budowanie zapytania"
|
||||
},
|
||||
"value": "Wartość"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": [
|
||||
"am",
|
||||
"pm"
|
||||
],
|
||||
"hours": "Godzina",
|
||||
"minutes": "Minuta",
|
||||
"next": "Następne",
|
||||
"previous": "Poprzednie",
|
||||
"seconds": "Sekunda",
|
||||
"unknown": "nieznana",
|
||||
"months": {
|
||||
"0": "Styczeń",
|
||||
"1": "Luty",
|
||||
"10": "Listopad",
|
||||
"11": "Grudzień",
|
||||
"2": "Marzec",
|
||||
"3": "Kwiecień",
|
||||
"4": "Maj",
|
||||
"5": "Czerwiec",
|
||||
"6": "Lipiec",
|
||||
"7": "Sierpień",
|
||||
"8": "Wrzesień",
|
||||
"9": "Październik"
|
||||
},
|
||||
"weekdays": [
|
||||
"Nd",
|
||||
"Pn",
|
||||
"Wt",
|
||||
"Śr",
|
||||
"Czw",
|
||||
"Pt",
|
||||
"So"
|
||||
]
|
||||
},
|
||||
"editor": {
|
||||
"close": "Zamknij",
|
||||
"create": {
|
||||
"button": "Dodaj",
|
||||
"submit": "Dodaj",
|
||||
"title": "Dodawanie nowego wpisu"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Edytuj",
|
||||
"submit": "Aktualizuj",
|
||||
"title": "Aktualizacja wpisu"
|
||||
},
|
||||
"error": {
|
||||
"system": "Nastąpił błąd systemu (<a target=\"\\\" rel=\"\\ nofollow\" href=\"\\\">Więcej informacji<\\\/a>).<\/a>"
|
||||
},
|
||||
"multi": {
|
||||
"info": "Wybrane pole zawiera wiele elementów z różnymi wartościami. Aby zmienić ich wartość kliknij w nie, inaczej zachowane zostaną ich wartości domyślne.",
|
||||
"noMulti": "Ta wartość może być edytowana oddzielnie - niezależnie od grupy.",
|
||||
"restore": "Cofnij zmiany",
|
||||
"title": "Pole z wieloma wartościami"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Usuń",
|
||||
"confirm": {
|
||||
"_": "Czy na pewno chcesz usunąć %d rzędów?",
|
||||
"1": "Czy na pewno chcesz usunąć 1 rząd?"
|
||||
},
|
||||
"submit": "Usuń",
|
||||
"title": "Usuwanie"
|
||||
}
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Wyczyść wszystkie",
|
||||
"collapse": {
|
||||
"_": "Aktywne grupowania (%d)",
|
||||
"0": "Grupowanie"
|
||||
},
|
||||
"collapseMessage": "Rozwiń wszystko",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "<em>brak danych<\/em>",
|
||||
"emptyPanes": "Brak paneli wyszukań",
|
||||
"loadMessage": "Ładuję panele wyszukań",
|
||||
"title": "Aktywne filtry",
|
||||
"showMessage": "Pokaż wszystko",
|
||||
"collapseMessage": "Rozwiń wszystko"
|
||||
"title": "Aktywne filtry"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "zaznaczono %d komórek",
|
||||
"0": "",
|
||||
"1": "zaznaczono %d komórkę"
|
||||
},
|
||||
"columns": {
|
||||
"_": "zaznaczono %d kolumn",
|
||||
"0": "",
|
||||
"1": "zaznaczono %d kolumnę"
|
||||
},
|
||||
"rows": {
|
||||
"_": "Zaznaczono %d wierszy",
|
||||
"0": "",
|
||||
"1": "Zaznaczono 1 wiersz"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
@@ -234,7 +308,6 @@
|
||||
"renameLabel": "Nowa nazwa dla %s:",
|
||||
"renameTitle": "Zmień nazwę stanu"
|
||||
},
|
||||
"decimal": ",",
|
||||
"infoThousands": " ",
|
||||
"thousands": " "
|
||||
"thousands": " ",
|
||||
"zeroRecords": "Nie znaleziono pasujących pozycji"
|
||||
}
|
||||
@@ -1,163 +1,53 @@
|
||||
{
|
||||
"processing": "Подождите...",
|
||||
"search": "Поиск:",
|
||||
"lengthMenu": "Показать _MENU_ записей",
|
||||
"info": "Записи с _START_ до _END_ из _TOTAL_ записей",
|
||||
"infoEmpty": "Записи с 0 до 0 из 0 записей",
|
||||
"infoFiltered": "(отфильтровано из _MAX_ записей)",
|
||||
"loadingRecords": "Загрузка записей...",
|
||||
"zeroRecords": "Записи отсутствуют.",
|
||||
"emptyTable": "В таблице отсутствуют данные",
|
||||
"paginate": {
|
||||
"first": "Первая",
|
||||
"previous": "Предыдущая",
|
||||
"next": "Следующая",
|
||||
"last": "Последняя"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": активировать для сортировки столбца по возрастанию",
|
||||
"sortDescending": ": активировать для сортировки столбца по убыванию"
|
||||
},
|
||||
"select": {
|
||||
"rows": {
|
||||
"_": "Выбрано записей: %d",
|
||||
"1": "Выбрана одна запись"
|
||||
},
|
||||
"cells": {
|
||||
"_": "Выбрано %d ячеек",
|
||||
"1": "Выбрана 1 ячейка "
|
||||
},
|
||||
"columns": {
|
||||
"1": "Выбран 1 столбец ",
|
||||
"_": "Выбрано %d столбцов "
|
||||
"paginate": {
|
||||
"first": "Первая",
|
||||
"last": "Последняя",
|
||||
"next": "Следующая",
|
||||
"previous": "Предыдущая"
|
||||
}
|
||||
},
|
||||
"searchBuilder": {
|
||||
"conditions": {
|
||||
"string": {
|
||||
"startsWith": "Начинается с",
|
||||
"contains": "Содержит",
|
||||
"empty": "Пусто",
|
||||
"endsWith": "Заканчивается на",
|
||||
"equals": "Равно",
|
||||
"not": "Не",
|
||||
"notEmpty": "Не пусто",
|
||||
"notContains": "Не содержит",
|
||||
"notStartsWith": "Не начинается на",
|
||||
"notEndsWith": "Не заканчивается на"
|
||||
},
|
||||
"date": {
|
||||
"after": "После",
|
||||
"before": "До",
|
||||
"between": "Между",
|
||||
"empty": "Пусто",
|
||||
"equals": "Равно",
|
||||
"not": "Не",
|
||||
"notBetween": "Не между",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"number": {
|
||||
"empty": "Пусто",
|
||||
"equals": "Равно",
|
||||
"gt": "Больше чем",
|
||||
"gte": "Больше, чем равно",
|
||||
"lt": "Меньше чем",
|
||||
"lte": "Меньше, чем равно",
|
||||
"not": "Не",
|
||||
"notEmpty": "Не пусто",
|
||||
"between": "Между",
|
||||
"notBetween": "Не между ними"
|
||||
},
|
||||
"array": {
|
||||
"equals": "Равно",
|
||||
"empty": "Пусто",
|
||||
"contains": "Содержит",
|
||||
"not": "Не равно",
|
||||
"notEmpty": "Не пусто",
|
||||
"without": "Без"
|
||||
}
|
||||
},
|
||||
"data": "Данные",
|
||||
"deleteTitle": "Удалить условие фильтрации",
|
||||
"logicAnd": "И",
|
||||
"logicOr": "Или",
|
||||
"title": {
|
||||
"0": "Конструктор поиска",
|
||||
"_": "Конструктор поиска (%d)"
|
||||
},
|
||||
"value": "Значение",
|
||||
"add": "Добавить условие",
|
||||
"button": {
|
||||
"0": "Конструктор поиска",
|
||||
"_": "Конструктор поиска (%d)"
|
||||
},
|
||||
"clearAll": "Очистить всё",
|
||||
"condition": "Условие",
|
||||
"leftTitle": "Превосходные критерии",
|
||||
"rightTitle": "Критерии отступа"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Очистить всё",
|
||||
"collapse": {
|
||||
"0": "Панели поиска",
|
||||
"_": "Панели поиска (%d)"
|
||||
},
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Нет панелей поиска",
|
||||
"loadMessage": "Загрузка панелей поиска",
|
||||
"title": "Фильтры активны - %d",
|
||||
"showMessage": "Показать все",
|
||||
"collapseMessage": "Скрыть все"
|
||||
},
|
||||
"buttons": {
|
||||
"pdf": "PDF",
|
||||
"print": "Печать",
|
||||
"collection": "Коллекция <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Видимость столбцов",
|
||||
"colvisRestore": "Восстановить видимость",
|
||||
"copy": "Копировать",
|
||||
"copyTitle": "Скопировать в буфер обмена",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"-1": "Показать все строки",
|
||||
"_": "Показать %d строк",
|
||||
"1": "Показать 1 строку"
|
||||
},
|
||||
"removeState": "Удалить",
|
||||
"renameState": "Переименовать",
|
||||
"copySuccess": {
|
||||
"1": "Строка скопирована в буфер обмена",
|
||||
"_": "Скопировано %d строк в буфер обмена"
|
||||
},
|
||||
"createState": "Создать состояние",
|
||||
"removeAllStates": "Удалить все состояния",
|
||||
"savedStates": "Сохраненные состояния",
|
||||
"stateRestore": "Состояние %d",
|
||||
"updateState": "Обновить",
|
||||
"copyKeys": "Нажмите ctrl или u2318 + C, чтобы скопировать данные таблицы в буфер обмена. Для отмены, щелкните по сообщению или нажмите escape."
|
||||
},
|
||||
"decimal": ".",
|
||||
"infoThousands": ",",
|
||||
"autoFill": {
|
||||
"cancel": "Отменить",
|
||||
"fill": "Заполнить все ячейки <i>%d<i><\/i><\/i>",
|
||||
"fillHorizontal": "Заполнить ячейки по горизонтали",
|
||||
"fillVertical": "Заполнить ячейки по вертикали",
|
||||
"info": "Информация"
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Коллекция <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Видимость столбцов",
|
||||
"colvisRestore": "Восстановить видимость",
|
||||
"copy": "Копировать",
|
||||
"copyKeys": "Нажмите ctrl или u2318 + C, чтобы скопировать данные таблицы в буфер обмена. Для отмены, щелкните по сообщению или нажмите escape.",
|
||||
"copySuccess": {
|
||||
"_": "Скопировано %d строк в буфер обмена",
|
||||
"1": "Строка скопирована в буфер обмена"
|
||||
},
|
||||
"copyTitle": "Скопировать в буфер обмена",
|
||||
"createState": "Создать состояние",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Показать %d строк",
|
||||
"-1": "Показать все строки"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Печать",
|
||||
"removeAllStates": "Удалить все состояния",
|
||||
"removeState": "Удалить",
|
||||
"renameState": "Переименовать",
|
||||
"savedStates": "Сохраненные состояния",
|
||||
"stateRestore": "Состояние %d",
|
||||
"updateState": "Обновить"
|
||||
},
|
||||
"datetime": {
|
||||
"previous": "Предыдущий",
|
||||
"next": "Следующий",
|
||||
"amPm": {
|
||||
"0": "AM",
|
||||
"1": "PM"
|
||||
},
|
||||
"hours": "Часы",
|
||||
"minutes": "Минуты",
|
||||
"seconds": "Секунды",
|
||||
"unknown": "Неизвестный",
|
||||
"amPm": [
|
||||
"AM",
|
||||
"PM"
|
||||
],
|
||||
"months": {
|
||||
"0": "Январь",
|
||||
"1": "Февраль",
|
||||
@@ -172,52 +62,161 @@
|
||||
"8": "Сентябрь",
|
||||
"9": "Октябрь"
|
||||
},
|
||||
"weekdays": [
|
||||
"Вс",
|
||||
"Пн",
|
||||
"Вт",
|
||||
"Ср",
|
||||
"Чт",
|
||||
"Пт",
|
||||
"Сб"
|
||||
]
|
||||
"next": "Следующий",
|
||||
"previous": "Предыдущий",
|
||||
"seconds": "Секунды",
|
||||
"unknown": "Неизвестный",
|
||||
"weekdays": {
|
||||
"0": "Вс",
|
||||
"1": "Пн",
|
||||
"2": "Вт",
|
||||
"3": "Ср",
|
||||
"4": "Чт",
|
||||
"5": "Пт",
|
||||
"6": "Сб"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Закрыть",
|
||||
"create": {
|
||||
"button": "Новый",
|
||||
"title": "Создать новую запись",
|
||||
"submit": "Создать"
|
||||
"submit": "Создать",
|
||||
"title": "Создать новую запись"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Изменить",
|
||||
"title": "Изменить запись",
|
||||
"submit": "Изменить"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Удалить",
|
||||
"title": "Удалить",
|
||||
"submit": "Удалить",
|
||||
"confirm": {
|
||||
"_": "Вы точно хотите удалить %d строк?",
|
||||
"1": "Вы точно хотите удалить 1 строку?"
|
||||
}
|
||||
},
|
||||
"multi": {
|
||||
"restore": "Отменить изменения",
|
||||
"title": "Несколько значений",
|
||||
"info": "Выбранные элементы содержат разные значения для этого входа. Чтобы отредактировать и установить для всех элементов этого ввода одинаковое значение, нажмите или коснитесь здесь, в противном случае они сохранят свои индивидуальные значения.",
|
||||
"noMulti": "Это поле должно редактироваться отдельно, а не как часть группы"
|
||||
"submit": "Изменить",
|
||||
"title": "Изменить запись"
|
||||
},
|
||||
"error": {
|
||||
"system": "Возникла системная ошибка (<a target=\"\\\" rel=\"nofollow\" href=\"\\\">Подробнее<\/a>)."
|
||||
},
|
||||
"multi": {
|
||||
"info": "Выбранные элементы содержат разные значения для этого входа. Чтобы отредактировать и установить для всех элементов этого ввода одинаковое значение, нажмите или коснитесь здесь, в противном случае они сохранят свои индивидуальные значения.",
|
||||
"noMulti": "Это поле должно редактироваться отдельно, а не как часть группы",
|
||||
"restore": "Отменить изменения",
|
||||
"title": "Несколько значений"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Удалить",
|
||||
"confirm": {
|
||||
"_": "Вы точно хотите удалить %d строк?",
|
||||
"1": "Вы точно хотите удалить 1 строку?"
|
||||
},
|
||||
"submit": "Удалить",
|
||||
"title": "Удалить"
|
||||
}
|
||||
},
|
||||
"emptyTable": "В таблице отсутствуют данные",
|
||||
"info": "Записи с _START_ до _END_ из _TOTAL_ записей",
|
||||
"infoEmpty": "Записи с 0 до 0 из 0 записей",
|
||||
"infoFiltered": "(отфильтровано из _MAX_ записей)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ",",
|
||||
"lengthMenu": "Показать _MENU_ записей",
|
||||
"loadingRecords": "Загрузка записей...",
|
||||
"processing": "Подождите...",
|
||||
"search": "Поиск:",
|
||||
"searchBuilder": {
|
||||
"add": "Добавить условие",
|
||||
"button": {
|
||||
"_": "Конструктор поиска (%d)",
|
||||
"0": "Конструктор поиска"
|
||||
},
|
||||
"clearAll": "Очистить всё",
|
||||
"condition": "Условие",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Содержит",
|
||||
"empty": "Пусто",
|
||||
"equals": "Равно",
|
||||
"not": "Не равно",
|
||||
"notEmpty": "Не пусто",
|
||||
"without": "Без"
|
||||
},
|
||||
"date": {
|
||||
"after": "После",
|
||||
"before": "До",
|
||||
"between": "Между",
|
||||
"empty": "Пусто",
|
||||
"equals": "Равно",
|
||||
"not": "Не",
|
||||
"notBetween": "Не между",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"number": {
|
||||
"between": "Между",
|
||||
"empty": "Пусто",
|
||||
"equals": "Равно",
|
||||
"gt": "Больше чем",
|
||||
"gte": "Больше, чем равно",
|
||||
"lt": "Меньше чем",
|
||||
"lte": "Меньше, чем равно",
|
||||
"not": "Не",
|
||||
"notBetween": "Не между ними",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Содержит",
|
||||
"empty": "Пусто",
|
||||
"endsWith": "Заканчивается на",
|
||||
"equals": "Равно",
|
||||
"not": "Не",
|
||||
"notContains": "Не содержит",
|
||||
"notEmpty": "Не пусто",
|
||||
"notEndsWith": "Не заканчивается на",
|
||||
"notStartsWith": "Не начинается на",
|
||||
"startsWith": "Начинается с"
|
||||
}
|
||||
},
|
||||
"data": "Данные",
|
||||
"deleteTitle": "Удалить условие фильтрации",
|
||||
"leftTitle": "Превосходные критерии",
|
||||
"logicAnd": "И",
|
||||
"logicOr": "Или",
|
||||
"rightTitle": "Критерии отступа",
|
||||
"title": {
|
||||
"_": "Конструктор поиска (%d)",
|
||||
"0": "Конструктор поиска"
|
||||
},
|
||||
"value": "Значение"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Очистить всё",
|
||||
"collapse": {
|
||||
"_": "Панели поиска (%d)",
|
||||
"0": "Панели поиска"
|
||||
},
|
||||
"collapseMessage": "Скрыть все",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "Нет панелей поиска",
|
||||
"loadMessage": "Загрузка панелей поиска",
|
||||
"showMessage": "Показать все",
|
||||
"title": "Фильтры активны - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "Выбрано %d ячеек",
|
||||
"0": "",
|
||||
"1": "Выбрана 1 ячейка "
|
||||
},
|
||||
"columns": {
|
||||
"_": "Выбрано %d столбцов ",
|
||||
"0": "",
|
||||
"1": "Выбран 1 столбец "
|
||||
},
|
||||
"rows": {
|
||||
"_": "Выбрано записей: %d",
|
||||
"0": "",
|
||||
"1": "Выбрана одна запись"
|
||||
}
|
||||
},
|
||||
"searchPlaceholder": "Что ищете?",
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "Создать",
|
||||
"search": "Поиск",
|
||||
"columns": {
|
||||
"search": "Поиск по столбцам",
|
||||
"visible": "Видимость столбцов"
|
||||
@@ -226,22 +225,24 @@
|
||||
"order": "Сортировка",
|
||||
"paging": "Страницы",
|
||||
"scroller": "Позиция прокрутки",
|
||||
"search": "Поиск",
|
||||
"searchBuilder": "Редактор поиска",
|
||||
"select": "Выделение",
|
||||
"title": "Создать новое состояние",
|
||||
"toggleLabel": "Включает:"
|
||||
},
|
||||
"removeJoiner": "и",
|
||||
"removeSubmit": "Удалить",
|
||||
"renameButton": "Переименовать",
|
||||
"duplicateError": "Состояние с таким именем уже существует.",
|
||||
"emptyError": "Имя не может быть пустым.",
|
||||
"emptyStates": "Нет сохраненных состояний",
|
||||
"removeConfirm": "Вы уверены, что хотите удалить %s?",
|
||||
"removeError": "Не удалось удалить состояние.",
|
||||
"removeJoiner": "и",
|
||||
"removeSubmit": "Удалить",
|
||||
"removeTitle": "Удалить состояние",
|
||||
"renameButton": "Переименовать",
|
||||
"renameLabel": "Новое имя для %s:",
|
||||
"renameTitle": "Переименовать состояние"
|
||||
},
|
||||
"thousands": " "
|
||||
"thousands": " ",
|
||||
"zeroRecords": "Записи отсутствуют."
|
||||
}
|
||||
@@ -0,0 +1,313 @@
|
||||
{
|
||||
"aria": {
|
||||
"orderable": "Активувати сортування",
|
||||
"orderableRemove": "Вимкнути сортування",
|
||||
"orderableReverse": "Зворотне сортування",
|
||||
"paginate": {
|
||||
"first": "Перша",
|
||||
"last": "Остання",
|
||||
"next": "Наступна",
|
||||
"previous": "Попередня"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "Відміна",
|
||||
"fill": "Заповнити всі клітинки з <i>%d<\/i>",
|
||||
"fillHorizontal": "Заповнити клітинки горизонтально",
|
||||
"fillVertical": "Заповнити клітинки вертикально",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "Список <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||
"colvis": "Видимість колонки",
|
||||
"colvisRestore": "Відновити видимість",
|
||||
"copy": "Копіювати",
|
||||
"copyKeys": "Нажміть ctrl або u2318 + C щоб копіювати інформацію з таблиці до вашого буферу обміну.<br \/><br \/>Щоб відмінити нажміть на це повідомлення або Esc",
|
||||
"copySuccess": {
|
||||
"_": "Скопійовано %d рядків в буфер обміну",
|
||||
"1": "Скопійовано 1 рядок в буфер обміну"
|
||||
},
|
||||
"copyTitle": "Копіювати в буфер обміну",
|
||||
"createState": "Створити стан",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "Показати %d рядків",
|
||||
"-1": "Показати усі рядки",
|
||||
"1": "Показати 1 рядок"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "Друкувати",
|
||||
"removeAllStates": "Видалити всі стани",
|
||||
"removeState": "Видалити",
|
||||
"renameState": "Перейменувати",
|
||||
"savedStates": "Збережені стани",
|
||||
"stateRestore": "Стан %d",
|
||||
"updateState": "Оновити"
|
||||
},
|
||||
"columnControl": {
|
||||
"buttons": {
|
||||
"searchClear": "Очистити пошук"
|
||||
},
|
||||
"colVis": "Видимість колонки",
|
||||
"colVisDropdown": "Видимість випадаючого списку",
|
||||
"dropdown": "Більше...",
|
||||
"list": {
|
||||
"all": "Вибрати все",
|
||||
"empty": "Пусто",
|
||||
"none": "Скасувати вибір усіх",
|
||||
"search": "Пошук..."
|
||||
},
|
||||
"orderAddAsc": "Додати сортування за зростанням",
|
||||
"orderAddDesc": "Додати сортування за спаданням",
|
||||
"orderAsc": "Сортування за зростанням",
|
||||
"orderClear": "Очистити сортування",
|
||||
"orderDesc": "Сортування за спаданням",
|
||||
"orderRemove": "Очистити сортування",
|
||||
"reorder": "Переупорядкувати стовпці",
|
||||
"reorderLeft": "Зсунути стовпець ліворуч",
|
||||
"reorderRight": "Зсунути стовпець праворуч",
|
||||
"search": {
|
||||
"datetime": {
|
||||
"empty": "Пусто",
|
||||
"equal": "Дорівнює",
|
||||
"greater": "Після",
|
||||
"less": "До",
|
||||
"notEmpty": "Не порожньо",
|
||||
"notEqual": "Не дорівнює"
|
||||
},
|
||||
"number": {
|
||||
"empty": "Пусто",
|
||||
"equal": "Дорівнює",
|
||||
"greater": "Більше ніж",
|
||||
"greaterOrEqual": "Більше або дорівнює",
|
||||
"less": "Менше ніж",
|
||||
"lessOrEqual": "Менше або дорівнює",
|
||||
"notEmpty": "Не порожньо",
|
||||
"notEqual": "Не дорівнює"
|
||||
},
|
||||
"text": {
|
||||
"contains": "Містить",
|
||||
"empty": "Пусто",
|
||||
"ends": "Закінчується на",
|
||||
"equal": "Дорівнює",
|
||||
"notContains": "Не містить",
|
||||
"notEmpty": "Не порожній",
|
||||
"notEqual": "Не дорівнює",
|
||||
"starts": "Починається з"
|
||||
}
|
||||
},
|
||||
"searchClear": "Очистити пошук",
|
||||
"searchDropdown": "Пошук"
|
||||
},
|
||||
"datetime": {
|
||||
"amPm": {
|
||||
"0": "am",
|
||||
"1": "pm"
|
||||
},
|
||||
"hours": "Година",
|
||||
"minutes": "Хвилина",
|
||||
"months": {
|
||||
"0": "Січень",
|
||||
"1": "Лютий",
|
||||
"10": "Листопад",
|
||||
"11": "Грудень",
|
||||
"2": "Березень",
|
||||
"3": "Квітень",
|
||||
"4": "Травень",
|
||||
"5": "Червень",
|
||||
"6": "Липень",
|
||||
"7": "Серпень",
|
||||
"8": "Вересень",
|
||||
"9": "Жовтень"
|
||||
},
|
||||
"next": "Наступний",
|
||||
"previous": "Попередній",
|
||||
"seconds": "Секунда",
|
||||
"unknown": "-",
|
||||
"weekdays": {
|
||||
"0": "Нд",
|
||||
"1": "Пн",
|
||||
"2": "Вт",
|
||||
"3": "Ср",
|
||||
"4": "Чт",
|
||||
"5": "Пт",
|
||||
"6": "Сб"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "Закрити",
|
||||
"create": {
|
||||
"button": "Новий",
|
||||
"submit": "Cтворити",
|
||||
"title": "Створити новий запис"
|
||||
},
|
||||
"edit": {
|
||||
"button": "Редагувати",
|
||||
"submit": "Оновити",
|
||||
"title": "Редагувати запис"
|
||||
},
|
||||
"error": {
|
||||
"system": "Сталася системна помилка (<a target=\"\\\" rel=\"\\ nofollow\" href=\"\\\">Додаткова інформація<\\\\\\\/a>).<\\\/a><\/a>"
|
||||
},
|
||||
"multi": {
|
||||
"info": "Вибране поле містить кілька елементів з різними значеннями. Щоб змінити їх значення, клацніть на них; інакше будуть збережені їхні значення за замовчуванням.",
|
||||
"noMulti": "Це значення можна редагувати окремо – незалежно від групи.",
|
||||
"restore": "Скасувати зміни",
|
||||
"title": "Поле з кількома значеннями"
|
||||
},
|
||||
"remove": {
|
||||
"button": "Видалити",
|
||||
"confirm": {
|
||||
"_": "Ви впевнені, що хочете видалити %d рядків?",
|
||||
"1": "Ви впевнені, що хочете видалити 1 рядок?"
|
||||
},
|
||||
"submit": "Видалити",
|
||||
"title": "Видалити"
|
||||
}
|
||||
},
|
||||
"emptyTable": "Ця таблиця не містить даних",
|
||||
"info": "Показано від _START_ по _END_ з _TOTAL_ записів",
|
||||
"infoEmpty": "Показано від 0 по 0 з 0 записів",
|
||||
"infoFiltered": "(відфільтровано з _MAX_ записів)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ",",
|
||||
"lengthLabels": {
|
||||
"-1": "Усі"
|
||||
},
|
||||
"lengthMenu": "Показати _MENU_ записів",
|
||||
"loadingRecords": "Завантаження",
|
||||
"orderClear": "Очистити сортування",
|
||||
"processing": "Опрацювання...",
|
||||
"search": "Пошук:",
|
||||
"searchBuilder": {
|
||||
"add": "Додати умову",
|
||||
"button": {
|
||||
"_": "Розширений пошук (%d)",
|
||||
"0": "Розширений пошук"
|
||||
},
|
||||
"clearAll": "Очистити все",
|
||||
"condition": "Умова",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "Містить",
|
||||
"empty": "Пустий",
|
||||
"equals": "Дорівнює",
|
||||
"not": "Не",
|
||||
"notEmpty": "Не пусто",
|
||||
"without": "Без"
|
||||
},
|
||||
"date": {
|
||||
"after": "Після",
|
||||
"before": "До",
|
||||
"between": "Між",
|
||||
"empty": "Пусто",
|
||||
"equals": "Дорівнює",
|
||||
"not": "Не",
|
||||
"notBetween": "Не між",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"number": {
|
||||
"between": "Між",
|
||||
"empty": "Пусто",
|
||||
"equals": "Дорівнює",
|
||||
"gt": "Більше ніж",
|
||||
"gte": "Більше або дорівнює",
|
||||
"lt": "Менше ніж",
|
||||
"lte": "Менше або дорівнює",
|
||||
"not": "Не",
|
||||
"notBetween": "Не між",
|
||||
"notEmpty": "Не пусто"
|
||||
},
|
||||
"string": {
|
||||
"contains": "Містить",
|
||||
"empty": "Пусто",
|
||||
"endsWith": "Закінчується на",
|
||||
"equals": "Дорівнює",
|
||||
"not": "Не",
|
||||
"notContains": "Не містить",
|
||||
"notEmpty": "Не пусто",
|
||||
"notEndsWith": "Не закінчується на",
|
||||
"notStartsWith": "Не починається з",
|
||||
"startsWith": "Починається з"
|
||||
}
|
||||
},
|
||||
"data": "Дані",
|
||||
"deleteTitle": "Видалити правило фільтрування",
|
||||
"leftTitle": "Зняти відступ критерію",
|
||||
"logicAnd": "ТА",
|
||||
"logicOr": "АБО",
|
||||
"rightTitle": "Зробити відступ критерію",
|
||||
"search": "Пошук",
|
||||
"title": {
|
||||
"_": "Розширений пошук (%d)",
|
||||
"0": "Розширений пошук"
|
||||
},
|
||||
"value": "Значення"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "Очистити все",
|
||||
"collapse": {
|
||||
"_": "Панелі пошуку (%d)",
|
||||
"0": "Панель пошуку"
|
||||
},
|
||||
"collapseMessage": "Приховати всі",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyMessage": "<em>немає даних<\/em>",
|
||||
"emptyPanes": "Немає панелей пошуку",
|
||||
"loadMessage": "Завантаження панелей пошуку",
|
||||
"showMessage": "Показати всі",
|
||||
"title": "Активній фільтри - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "%d клітинок вибрано",
|
||||
"0": "",
|
||||
"1": "1 клітинку вибрано"
|
||||
},
|
||||
"columns": {
|
||||
"_": "%d колонок вибрано",
|
||||
"0": "",
|
||||
"1": "1 колонку вибрано"
|
||||
},
|
||||
"rows": {
|
||||
"_": "Вибрано %d рядків",
|
||||
"0": "",
|
||||
"1": "Вибрано 1 рядок"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
"creationModal": {
|
||||
"button": "Створити",
|
||||
"columns": {
|
||||
"search": "Пошук у стовпці",
|
||||
"visible": "Видимість стовпця"
|
||||
},
|
||||
"name": "Ім'я:",
|
||||
"order": "Сортування",
|
||||
"paging": "Пейджинг",
|
||||
"scroller": "Прокручування",
|
||||
"search": "Пошук",
|
||||
"searchBuilder": "Конструктор запитів",
|
||||
"select": "Вибір",
|
||||
"title": "Створити новий стан",
|
||||
"toggleLabel": "Включає:"
|
||||
},
|
||||
"duplicateError": "Стан з такою назвою вже існує.",
|
||||
"emptyError": "Назва не може бути порожньою.",
|
||||
"emptyStates": "Немає збереженого стану.",
|
||||
"removeConfirm": "Ви впевнені, що хочете видалити %s?",
|
||||
"removeError": "Не вдалося видалити стан.",
|
||||
"removeJoiner": "і",
|
||||
"removeSubmit": "Видалити",
|
||||
"removeTitle": "Видалити стан",
|
||||
"renameButton": "Перейменувати",
|
||||
"renameLabel": "Нова назва для %s:",
|
||||
"renameTitle": "Перейменувати стан"
|
||||
},
|
||||
"thousands": ",",
|
||||
"zeroRecords": "Не знайдено жодних записів"
|
||||
}
|
||||
@@ -1,61 +1,132 @@
|
||||
{
|
||||
"processing": "處理中...",
|
||||
"loadingRecords": "載入中...",
|
||||
"paginate": {
|
||||
"first": "第一頁",
|
||||
"previous": "上一頁",
|
||||
"next": "下一頁",
|
||||
"last": "最後一頁"
|
||||
"aria": {
|
||||
"paginate": {
|
||||
"first": "第一頁",
|
||||
"last": "最後一頁",
|
||||
"next": "下一頁",
|
||||
"previous": "上一頁"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "取消",
|
||||
"info": ""
|
||||
},
|
||||
"buttons": {
|
||||
"collection": "更多",
|
||||
"colvis": "欄位顯示",
|
||||
"colvisRestore": "重置欄位顯示",
|
||||
"copy": "複製",
|
||||
"copySuccess": {
|
||||
"_": "複製了 %d 筆資料",
|
||||
"1": "複製了 1 筆資料"
|
||||
},
|
||||
"copyTitle": "已經複製到剪貼簿",
|
||||
"createState": "建立狀態",
|
||||
"csv": "CSV",
|
||||
"excel": "Excel",
|
||||
"pageLength": {
|
||||
"_": "顯示 %d 筆",
|
||||
"-1": "顯示全部"
|
||||
},
|
||||
"pdf": "PDF",
|
||||
"print": "列印",
|
||||
"removeAllStates": "移除所有狀態",
|
||||
"removeState": "移除",
|
||||
"renameState": "重新命名",
|
||||
"savedStates": "儲存狀態",
|
||||
"stateRestore": "狀態 %d",
|
||||
"updateState": "更新"
|
||||
},
|
||||
"emptyTable": "目前沒有資料",
|
||||
"datetime": {
|
||||
"previous": "上一頁",
|
||||
"next": "下一頁",
|
||||
"amPm": {
|
||||
"0": "上午",
|
||||
"1": "下午"
|
||||
},
|
||||
"hours": "時",
|
||||
"minutes": "分",
|
||||
"months": {
|
||||
"0": "一月",
|
||||
"1": "二月",
|
||||
"10": "十一月",
|
||||
"11": "十二月",
|
||||
"2": "三月",
|
||||
"3": "四月",
|
||||
"4": "五月",
|
||||
"5": "六月",
|
||||
"6": "七月",
|
||||
"7": "八月",
|
||||
"8": "九月",
|
||||
"9": "十月"
|
||||
},
|
||||
"next": "下一頁",
|
||||
"previous": "上一頁",
|
||||
"seconds": "秒",
|
||||
"amPm": [
|
||||
"上午",
|
||||
"下午"
|
||||
],
|
||||
"unknown": "未知",
|
||||
"weekdays": [
|
||||
"週日",
|
||||
"週一",
|
||||
"週二",
|
||||
"週三",
|
||||
"週四",
|
||||
"週五",
|
||||
"週六"
|
||||
],
|
||||
"months": [
|
||||
"一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月"
|
||||
]
|
||||
"weekdays": {
|
||||
"0": "週日",
|
||||
"1": "週一",
|
||||
"2": "週二",
|
||||
"3": "週三",
|
||||
"4": "週四",
|
||||
"5": "週五",
|
||||
"6": "週六"
|
||||
}
|
||||
},
|
||||
"decimal": "",
|
||||
"editor": {
|
||||
"close": "關閉",
|
||||
"create": {
|
||||
"button": "新增",
|
||||
"submit": "送出新增",
|
||||
"title": "新增資料"
|
||||
},
|
||||
"edit": {
|
||||
"button": "修改",
|
||||
"submit": "送出修改",
|
||||
"title": "修改資料"
|
||||
},
|
||||
"error": {
|
||||
"system": "系統發生錯誤(更多資訊)"
|
||||
},
|
||||
"multi": {
|
||||
"info": "您所選擇的多筆資料中,此欄位包含了不同的值。若您想要將它們都改為同一個值,可以在此輸入,要不然它們會保留各自原本的值。",
|
||||
"noMulti": "此輸入欄需單獨輸入,不容許多筆資料一起修改",
|
||||
"restore": "復原",
|
||||
"title": "多重值"
|
||||
},
|
||||
"remove": {
|
||||
"button": "刪除",
|
||||
"confirm": {
|
||||
"_": "您確定要刪除您所選取的 %d 筆資料嗎?",
|
||||
"1": "您確定要刪除您所選取的 1 筆資料嗎?"
|
||||
},
|
||||
"submit": "送出刪除",
|
||||
"title": "刪除資料"
|
||||
}
|
||||
},
|
||||
"emptyTable": "目前沒有資料",
|
||||
"info": "顯示第 _START_ 至 _END_ 筆結果,共 _TOTAL_ 筆",
|
||||
"infoEmpty": "顯示第 0 至 0 筆結果,共 0 筆",
|
||||
"infoFiltered": "(從 _MAX_ 筆結果中篩選)",
|
||||
"infoPostFix": "",
|
||||
"infoThousands": ",",
|
||||
"lengthMenu": "顯示 _MENU_ 筆結果",
|
||||
"loadingRecords": "載入中...",
|
||||
"processing": "處理中...",
|
||||
"search": "搜尋:",
|
||||
"searchBuilder": {
|
||||
"add": "新增條件",
|
||||
"condition": "條件",
|
||||
"button": {
|
||||
"_": "複合查詢 (%d)",
|
||||
"0": "複合查詢"
|
||||
},
|
||||
"clearAll": "清空",
|
||||
"condition": "條件",
|
||||
"conditions": {
|
||||
"array": {
|
||||
"contains": "含有",
|
||||
"equals": "等於",
|
||||
"empty": "空值",
|
||||
"equals": "等於",
|
||||
"not": "不等於",
|
||||
"notEmpty": "非空值",
|
||||
"without": "不含"
|
||||
@@ -88,14 +159,15 @@
|
||||
"endsWith": "字尾為",
|
||||
"equals": "等於",
|
||||
"not": "不為",
|
||||
"notEmpty": "不為空",
|
||||
"startsWith": "字首為",
|
||||
"notContains": "不含",
|
||||
"notEmpty": "不為空",
|
||||
"notEndsWith": "結尾不是",
|
||||
"notStartsWith": "開頭不是",
|
||||
"notEndsWith": "結尾不是"
|
||||
"startsWith": "字首為"
|
||||
}
|
||||
},
|
||||
"data": "欄位",
|
||||
"deleteTitle": "刪除篩選條件",
|
||||
"leftTitle": "群組條件",
|
||||
"logicAnd": "且",
|
||||
"logicOr": "或",
|
||||
@@ -104,85 +176,41 @@
|
||||
"_": "複合查詢 (%d)",
|
||||
"0": "複合查詢"
|
||||
},
|
||||
"value": "內容",
|
||||
"deleteTitle": "刪除篩選條件"
|
||||
},
|
||||
"editor": {
|
||||
"close": "關閉",
|
||||
"create": {
|
||||
"button": "新增",
|
||||
"title": "新增資料",
|
||||
"submit": "送出新增"
|
||||
},
|
||||
"remove": {
|
||||
"button": "刪除",
|
||||
"title": "刪除資料",
|
||||
"submit": "送出刪除",
|
||||
"confirm": {
|
||||
"_": "您確定要刪除您所選取的 %d 筆資料嗎?",
|
||||
"1": "您確定要刪除您所選取的 1 筆資料嗎?"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"system": "系統發生錯誤(更多資訊)"
|
||||
},
|
||||
"edit": {
|
||||
"button": "修改",
|
||||
"title": "修改資料",
|
||||
"submit": "送出修改"
|
||||
},
|
||||
"multi": {
|
||||
"title": "多重值",
|
||||
"info": "您所選擇的多筆資料中,此欄位包含了不同的值。若您想要將它們都改為同一個值,可以在此輸入,要不然它們會保留各自原本的值。",
|
||||
"restore": "復原",
|
||||
"noMulti": "此輸入欄需單獨輸入,不容許多筆資料一起修改"
|
||||
}
|
||||
},
|
||||
"autoFill": {
|
||||
"cancel": "取消"
|
||||
},
|
||||
"buttons": {
|
||||
"copySuccess": {
|
||||
"_": "複製了 %d 筆資料",
|
||||
"1": "複製了 1 筆資料"
|
||||
},
|
||||
"copyTitle": "已經複製到剪貼簿",
|
||||
"excel": "Excel",
|
||||
"pdf": "PDF",
|
||||
"print": "列印",
|
||||
"copy": "複製",
|
||||
"colvis": "欄位顯示",
|
||||
"colvisRestore": "重置欄位顯示",
|
||||
"csv": "CSV",
|
||||
"pageLength": {
|
||||
"-1": "顯示全部",
|
||||
"_": "顯示 %d 筆"
|
||||
},
|
||||
"createState": "建立狀態",
|
||||
"removeAllStates": "移除所有狀態",
|
||||
"removeState": "移除",
|
||||
"renameState": "重新命名",
|
||||
"savedStates": "儲存狀態",
|
||||
"stateRestore": "狀態 %d",
|
||||
"updateState": "更新",
|
||||
"collection": "更多"
|
||||
"value": "內容"
|
||||
},
|
||||
"searchPanes": {
|
||||
"clearMessage": "清空",
|
||||
"collapse": {
|
||||
"_": "搜尋面版 (%d)",
|
||||
"0": "搜尋面版"
|
||||
},
|
||||
"emptyPanes": "沒搜尋面版",
|
||||
"loadMessage": "載入搜尋面版中...",
|
||||
"clearMessage": "清空",
|
||||
"collapseMessage": "摺疊全部",
|
||||
"count": "{total}",
|
||||
"countFiltered": "{shown} ({total})",
|
||||
"emptyPanes": "沒搜尋面版",
|
||||
"loadMessage": "載入搜尋面版中...",
|
||||
"showMessage": "顯示全部",
|
||||
"collapseMessage": "摺疊全部",
|
||||
"title": "篩選條件 - %d"
|
||||
},
|
||||
"searchPlaceholder": "",
|
||||
"select": {
|
||||
"cells": {
|
||||
"_": "選擇了 %d 格資料",
|
||||
"0": "",
|
||||
"1": "選擇了 1 格資料"
|
||||
},
|
||||
"columns": {
|
||||
"_": "選擇了 %d 欄資料",
|
||||
"0": "",
|
||||
"1": "選擇了 1 欄資料"
|
||||
},
|
||||
"rows": {
|
||||
"_": "選擇了 %d 筆資料",
|
||||
"0": "",
|
||||
"1": "選擇了 1 筆資料"
|
||||
}
|
||||
},
|
||||
"stateRestore": {
|
||||
"emptyError": "名稱不能空白。",
|
||||
"creationModal": {
|
||||
"button": "建立",
|
||||
"columns": {
|
||||
@@ -200,6 +228,7 @@
|
||||
"toggleLabel": "包含:"
|
||||
},
|
||||
"duplicateError": "此狀態名稱已經存在。",
|
||||
"emptyError": "名稱不能空白。",
|
||||
"emptyStates": "名稱不可空白。",
|
||||
"removeConfirm": "確定要移除 %s 嗎?",
|
||||
"removeError": "移除狀態失敗。",
|
||||
@@ -210,31 +239,6 @@
|
||||
"renameLabel": "%s 的新名稱:",
|
||||
"renameTitle": "重新命名狀態"
|
||||
},
|
||||
"select": {
|
||||
"columns": {
|
||||
"_": "選擇了 %d 欄資料",
|
||||
"1": "選擇了 1 欄資料"
|
||||
},
|
||||
"rows": {
|
||||
"1": "選擇了 1 筆資料",
|
||||
"_": "選擇了 %d 筆資料"
|
||||
},
|
||||
"cells": {
|
||||
"1": "選擇了 1 格資料",
|
||||
"_": "選擇了 %d 格資料"
|
||||
}
|
||||
},
|
||||
"zeroRecords": "沒有符合的資料",
|
||||
"aria": {
|
||||
"sortAscending": ":升冪排列",
|
||||
"sortDescending": ":降冪排列"
|
||||
},
|
||||
"info": "顯示第 _START_ 至 _END_ 筆結果,共 _TOTAL_ 筆",
|
||||
"infoEmpty": "顯示第 0 至 0 筆結果,共 0 筆",
|
||||
"infoThousands": ",",
|
||||
"lengthMenu": "顯示 _MENU_ 筆結果",
|
||||
"search": "搜尋:",
|
||||
"searchPlaceholder": "請輸入關鍵字",
|
||||
"thousands": ",",
|
||||
"infoFiltered": "(從 _MAX_ 筆結果中篩選)"
|
||||
"zeroRecords": "沒有符合的資料"
|
||||
}
|
||||
@@ -1,29 +1,32 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div id="esi-alert" class="col-12 collapse">
|
||||
<div class="alert alert-warning">
|
||||
<p class="text-center ">{% translate 'Your Server received an ESI error response code of ' %}<b id="esi-code">?</b></p>
|
||||
<hr>
|
||||
<pre id="esi-data" class="text-center text-wrap"></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const elemCard = document.getElementById('esi-alert');
|
||||
const elemMessage = document.getElementById('esi-data');
|
||||
const elemCode = document.getElementById('esi-code');
|
||||
<script>
|
||||
$(document).ready(() => {
|
||||
const elements = {
|
||||
card: document.getElementById('esi-alert'),
|
||||
message: document.getElementById('esi-data'),
|
||||
code: document.getElementById('esi-code')
|
||||
};
|
||||
|
||||
fetchGet({url: '{% url "authentication:esi_check" %}'})
|
||||
.then((data) => {
|
||||
console.log('ESI Check: ', JSON.stringify(data, null, 2));
|
||||
fetchGet({url: '{% url "authentication:esi_check" %}'})
|
||||
.then(({status, data}) => {
|
||||
console.log('ESI Check:', JSON.stringify({status, data}, null, 2));
|
||||
|
||||
if (data.status !== 200) {
|
||||
elemCode.textContent = data.status;
|
||||
elemMessage.textContent = data.data.error;
|
||||
if (status !== 200) {
|
||||
elements.code.textContent = status;
|
||||
elements.message.textContent = data.error;
|
||||
|
||||
new bootstrap.Collapse(elemCard, {toggle: true});
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error fetching ESI check:', error);
|
||||
new bootstrap.Collapse(elements.card, {toggle: true});
|
||||
}
|
||||
})
|
||||
.catch((error) => console.error('Error fetching ESI check:', error));
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
@@ -161,206 +161,24 @@ the escapejs filter without having to redefine them later.
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const elements = {
|
||||
total: document.getElementById('total-task-count'),
|
||||
uptime: document.getElementById('celery-uptime'),
|
||||
running: document.getElementById('running-task-count'),
|
||||
queued: document.getElementById('queued-tasks-count'),
|
||||
succeeded: document.getElementById('succeeded-tasks-count'),
|
||||
retried: document.getElementById('retried-tasks-count'),
|
||||
failed: document.getElementById('failed-tasks-count')
|
||||
const taskQueueSettings = {
|
||||
url: '{% url "authentication:task_counts" %}',
|
||||
l10n: {
|
||||
language: '{{ LANGUAGE_CODE }}',
|
||||
second_singular: '{{ l10nSecondSingular|escapejs }}',
|
||||
second_plural: '{{ l10nSecondPlural|escapejs }}',
|
||||
minute_singular: '{{ l10nMinuteSingular|escapejs }}',
|
||||
minute_plural: '{{ l10nMinutePlural|escapejs }}',
|
||||
hour_singular: '{{ l10nHourSingular|escapejs }}',
|
||||
hour_plural: '{{ l10nHourPlural|escapejs }}',
|
||||
na: '{{ l10nNA|escapejs }}',
|
||||
error: '{{ l10nError|escapejs }}',
|
||||
running: '{{ l10nRunning|escapejs }}',
|
||||
queued: '{{ l10nQueued|escapejs }}',
|
||||
succeeded: '{{ l10nSucceeded|escapejs }}',
|
||||
retried: '{{ l10nRetried|escapejs }}',
|
||||
failed: '{{ l10nFailed|escapejs }}'
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetches the task queue status and updates the UI elements accordingly.
|
||||
* It retrieves the total number of tasks, running tasks, queued tasks,
|
||||
* succeeded tasks, retried tasks, and failed tasks, and updates the
|
||||
* corresponding HTML elements with the fetched data.
|
||||
* It also updates the progress bars for succeeded, retried, and failed tasks.
|
||||
* The function is called immediately and then every 30 seconds to keep the
|
||||
* task queue status up to date.
|
||||
*/
|
||||
const updateTaskCount = () => {
|
||||
fetchGet({url: '{% url "authentication:task_counts" %}'})
|
||||
.then((data) => {
|
||||
const numberL10nFormat = new Intl.NumberFormat('{{ LANGUAGE_CODE }}');
|
||||
const elemProgressBar = document.getElementById('celery-tasks-progress-bar');
|
||||
const progressElements = {
|
||||
succeeded: {
|
||||
bar: document.getElementById('celery-progress-bar-succeeded'),
|
||||
text: document.getElementById('celery-progress-bar-succeeded-progress')
|
||||
},
|
||||
retried: {
|
||||
bar: document.getElementById('celery-progress-bar-retried'),
|
||||
text: document.getElementById('celery-progress-bar-retried-progress')
|
||||
},
|
||||
failed: {
|
||||
bar: document.getElementById('celery-progress-bar-failed'),
|
||||
text: document.getElementById('celery-progress-bar-failed-progress')
|
||||
}
|
||||
};
|
||||
|
||||
// Assign progress data from the fetched data to variables
|
||||
const {
|
||||
earliest_task: earliestTask,
|
||||
tasks_total: tasksTotal,
|
||||
tasks_running: tasksRunning,
|
||||
tasks_queued: tasksQueued,
|
||||
tasks_succeeded: tasksSucceeded,
|
||||
tasks_retried: tasksRetried,
|
||||
tasks_failed: tasksFailed
|
||||
} = data;
|
||||
|
||||
/**
|
||||
* Updates the text content of the specified HTML element with the given value.
|
||||
* If the value is null, it sets the text to 'N/A'.
|
||||
* Otherwise, it formats the number using the locale-specific format.
|
||||
*
|
||||
* @param {HTMLElement} element The HTML element to update.
|
||||
* @param {number|null} value The value to set in the element.
|
||||
*/
|
||||
const updateTaskCount = (element, value) => {
|
||||
element.textContent = value == null ? '{{ l10nNA|escapejs }}' : numberL10nFormat.format(value);
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculates the time since the given timestamp and returns a formatted string.
|
||||
* If the timestamp is null or undefined, it returns 'N/A'.
|
||||
* The returned string is in the format of "X hours, Y minutes" or "X minutes, Y seconds".
|
||||
*
|
||||
* @param {string|null} timestamp The timestamp to calculate the time since.
|
||||
* @returns {string} A formatted string representing the time since the timestamp.
|
||||
*/
|
||||
const timeSince = (timestamp) => {
|
||||
if (!timestamp) {
|
||||
return '{{ l10nNA|escapejs }}';
|
||||
}
|
||||
|
||||
const diffSecs = Math.floor((Date.now() - new Date(timestamp)) / 1000);
|
||||
|
||||
if (diffSecs >= 3600) {
|
||||
const hours = Math.floor(diffSecs / 3600);
|
||||
const minutes = Math.floor((diffSecs % 3600) / 60);
|
||||
|
||||
if (minutes > 0) {
|
||||
const hourText = hours === 1 ? '{{ l10nHourSingular|escapejs }}' : '{{ l10nHourPlural|escapejs }}';
|
||||
const minuteText = minutes === 1 ? '{{ l10nMinuteSingular|escapejs }}' : '{{ l10nMinutePlural|escapejs }}';
|
||||
|
||||
return `${hours} ${hourText}, ${minutes} ${minuteText}`;
|
||||
}
|
||||
|
||||
const hourText = hours === 1 ? '{{ l10nHourSingular|escapejs }}' : '{{ l10nHourPlural|escapejs }}';
|
||||
|
||||
return `${hours} ${hourText}`;
|
||||
}
|
||||
|
||||
const units = [
|
||||
[
|
||||
60,
|
||||
'{{ l10nMinuteSingular|escapejs }}',
|
||||
'{{ l10nMinutePlural|escapejs }}'
|
||||
],
|
||||
[
|
||||
1,
|
||||
'{{ l10nSecondSingular|escapejs }}',
|
||||
'{{ l10nSecondPlural|escapejs }}'
|
||||
]
|
||||
];
|
||||
|
||||
for (const [seconds, singular, plural] of units) {
|
||||
const value = Math.floor(diffSecs / seconds);
|
||||
|
||||
if (value > 0) {
|
||||
return `${value} ${value > 1 ? plural : singular}`;
|
||||
}
|
||||
}
|
||||
|
||||
return '0 {{ l10nSecondPlural|escapejs }}';
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates the progress bar element and its text content based on the given value and total.
|
||||
* It calculates the percentage of completion and updates the aria attributes and styles accordingly.
|
||||
*
|
||||
* @param {HTMLElement} element The progress bar element to update.
|
||||
* @param {HTMLElement} textElement The text element to update with the percentage.
|
||||
* @param {number} value The current value to set in the progress bar.
|
||||
* @param {number} total The total value for calculating the percentage.
|
||||
*/
|
||||
const updateProgressBar = (element, textElement, value, total) => {
|
||||
const percentage = total ? (value / total) * 100 : 0;
|
||||
|
||||
element.setAttribute('aria-valuenow', percentage.toString());
|
||||
textElement.textContent = `${numberL10nFormat.format(percentage.toFixed(0))}%`;
|
||||
element.style.width = `${percentage}%`;
|
||||
};
|
||||
|
||||
// Update task counts
|
||||
[
|
||||
[elements.total, tasksTotal],
|
||||
[elements.running, tasksRunning],
|
||||
[elements.queued, tasksQueued],
|
||||
[elements.succeeded, tasksSucceeded],
|
||||
[elements.retried, tasksRetried],
|
||||
[elements.failed, tasksFailed]
|
||||
].forEach(([element, value]) => {
|
||||
updateTaskCount(element, value);
|
||||
});
|
||||
|
||||
// Update uptime
|
||||
elements.uptime.textContent = timeSince(earliestTask);
|
||||
|
||||
// Update progress bar title
|
||||
const [
|
||||
titleTextSucceeded,
|
||||
titleTextRetried,
|
||||
titleTextFailed
|
||||
] = [
|
||||
[tasksSucceeded, '{{ l10nSucceeded|escapejs }}'],
|
||||
[tasksRetried, '{{ l10nRetried|escapejs }}'],
|
||||
[tasksFailed, '{{ l10nFailed|escapejs }}']
|
||||
].map(([count, label]) => {
|
||||
return `${numberL10nFormat.format(count)} ${label}`;
|
||||
});
|
||||
|
||||
// Set the title attribute for the progress bar
|
||||
elemProgressBar.setAttribute(
|
||||
'title',
|
||||
`${titleTextSucceeded}, ${titleTextRetried}, ${titleTextFailed}`
|
||||
);
|
||||
|
||||
// Update progress bars
|
||||
[
|
||||
tasksSucceeded,
|
||||
tasksRetried,
|
||||
tasksFailed
|
||||
].forEach((count, index) => {
|
||||
const type = ['succeeded', 'retried', 'failed'][index];
|
||||
|
||||
updateProgressBar(
|
||||
progressElements[type].bar,
|
||||
progressElements[type].text,
|
||||
count,
|
||||
tasksTotal
|
||||
);
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error fetching task queue:', error);
|
||||
|
||||
// If there is an error fetching the task queue, set all elements to 'ERROR'
|
||||
[
|
||||
elements.running,
|
||||
elements.queued,
|
||||
elements.succeeded,
|
||||
elements.retried,
|
||||
elements.failed
|
||||
].forEach((elem) => {
|
||||
elem.textContent = '{{ l10nError|escapejs }}';
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
updateTaskCount();
|
||||
setInterval(updateTaskCount, 30000);
|
||||
</script>
|
||||
{% include "bundles/auth-dashboard-task-queue-js.html" %}
|
||||
|
||||
@@ -102,44 +102,7 @@
|
||||
</main>
|
||||
<!-- End Body -->
|
||||
|
||||
<script>
|
||||
(() => {
|
||||
// TODO Move to own JS file
|
||||
const sidebar = document.getElementById('sidebar');
|
||||
const sidebarKey = `sidebar_${sidebar.id}`;
|
||||
|
||||
sidebar.addEventListener('shown.bs.collapse', (event) => {
|
||||
if (event.target.id === sidebar.id) {
|
||||
localStorage.removeItem(sidebarKey);
|
||||
}
|
||||
});
|
||||
|
||||
sidebar.addEventListener('hidden.bs.collapse', (event) => {
|
||||
if (event.target.id === sidebar.id) {
|
||||
localStorage.setItem(sidebarKey, 'closed');
|
||||
}
|
||||
});
|
||||
|
||||
if (localStorage.getItem(sidebarKey) === 'closed') {
|
||||
sidebar.classList.remove('show');
|
||||
} else {
|
||||
sidebar.classList.add('show');
|
||||
}
|
||||
|
||||
const activeChildMenuItem = document.querySelector('#sidebar-menu li ul li a.active');
|
||||
|
||||
if (activeChildMenuItem) {
|
||||
const activeChildMenuUl = activeChildMenuItem.parentElement.parentElement;
|
||||
const elementsToToggle = document.querySelectorAll(`[data-bs-target^="#${activeChildMenuUl.id}"]`);
|
||||
|
||||
activeChildMenuUl.classList.add('show');
|
||||
|
||||
elementsToToggle.forEach((element) => {
|
||||
element.setAttribute('aria-expanded', true);
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{% include "bundles/auth-sidebar-collapse-js.html" %}
|
||||
|
||||
{% theme_js %}
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{% load sri %}
|
||||
|
||||
{% sri_static 'allianceauth/js/dashboard-update-task-queue.js' %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% load sri %}
|
||||
|
||||
{% sri_static 'allianceauth/js/sidebar.js' %}
|
||||
@@ -0,0 +1,5 @@
|
||||
{% load sri %}
|
||||
|
||||
<!-- Start DataTables ColumnControl CSS -->
|
||||
{% sri_static "allianceauth/libs/DataTables/Extensions/ColumnControl/1.2.0/css/columnControl.bootstrap5.min.css" %}
|
||||
<!-- End DataTables ColumnControl CSS -->
|
||||
@@ -0,0 +1,6 @@
|
||||
{% load sri %}
|
||||
|
||||
<!-- Start DataTables ColumnControl JS -->
|
||||
{% sri_static "allianceauth/libs/DataTables/Extensions/ColumnControl/1.2.0/js/dataTables.columnControl.min.js" %}
|
||||
{% sri_static "allianceauth/libs/DataTables/Extensions/ColumnControl/1.2.0/js/columnControl.bootstrap5.min.js" %}
|
||||
<!-- End DataTables ColumnControl JS -->
|
||||
5
allianceauth/templates/bundles/datatables-2-css-bs5.html
Normal file
5
allianceauth/templates/bundles/datatables-2-css-bs5.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{% load sri %}
|
||||
|
||||
<!-- Start DataTables CSS -->
|
||||
{% sri_static "allianceauth/libs/DataTables/2.3.6/css/dataTables.bootstrap5.min.css" %}
|
||||
<!-- End DataTables CSS -->
|
||||
6
allianceauth/templates/bundles/datatables-2-js-bs5.html
Normal file
6
allianceauth/templates/bundles/datatables-2-js-bs5.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{% load sri %}
|
||||
|
||||
<!-- Start DataTables JS -->
|
||||
{% sri_static "allianceauth/libs/DataTables/2.3.6/js/dataTables.min.js" %}
|
||||
{% sri_static "allianceauth/libs/DataTables/2.3.6/js/dataTables.bootstrap5.min.js" %}
|
||||
<!-- End DataTables JS -->
|
||||
11
allianceauth/templates/django_bootstrap5/field_errors.html
Normal file
11
allianceauth/templates/django_bootstrap5/field_errors.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{# Template override to display the errors of django Forms when using `boostrap_form` form the `django-bootstrap5` #}
|
||||
{# library. #}
|
||||
{# See: https://github.com/zostera/django-bootstrap5/pull/767 #}
|
||||
|
||||
{% if field_errors %}
|
||||
<div id="{{ field.auto_id }}_error" class="invalid-feedback">
|
||||
{% for text in field_errors %}
|
||||
<div>{{ text }}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -59,7 +59,7 @@ def get_datatables_language_static(language: str) -> str:
|
||||
mapped_language = get_datatable_language_code(language)
|
||||
static_url = (
|
||||
static(
|
||||
path=f"allianceauth/libs/DataTables/Plugins/2.2.1/i18n/{mapped_language}.json"
|
||||
path=f"allianceauth/libs/DataTables/Plugins/2.3.6/i18n/{mapped_language}.json"
|
||||
)
|
||||
if mapped_language
|
||||
else ""
|
||||
|
||||
@@ -96,86 +96,86 @@
|
||||
{% get_datatables_language_static LANGUAGE_CODE as DT_LANG_PATH %}
|
||||
|
||||
<script>
|
||||
const timers = [
|
||||
{% for timer in timers %}
|
||||
{
|
||||
'id': {{ timer.id }},
|
||||
'targetDate': moment("{{ timer.eve_time | date:"c" }}"),
|
||||
'expired': false
|
||||
},
|
||||
{% endfor %}
|
||||
|
||||
{% for timer in corp_timers %}
|
||||
{
|
||||
'id': {{ timer.id }},
|
||||
'targetDate': moment("{{ timer.eve_time | date:"c" }}"),
|
||||
'expired': false
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
|
||||
/**
|
||||
* Update a timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const updateTimer = (timer) => {
|
||||
if (timer.targetDate.isAfter(Date.now())) {
|
||||
const duration = moment.duration(timer.targetDate - moment(), 'milliseconds');
|
||||
|
||||
document.getElementById("countdown" + timer.id).innerHTML = getDurationString(duration);
|
||||
} else {
|
||||
timer.expired = true;
|
||||
|
||||
document.getElementById("countdown" + timer.id).innerHTML = "";
|
||||
}
|
||||
};
|
||||
|
||||
const updateAllTimers = () => {
|
||||
const l = timers.length;
|
||||
|
||||
for (let i=0; i < l; ++i) {
|
||||
if (timers[i].expired) continue;
|
||||
|
||||
updateTimer(timers[i]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the local time info for the timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const setLocalTime = (timer) => {
|
||||
document.getElementById("localtime" + timer.id).innerHTML = timer.targetDate.format("ddd @ LT");
|
||||
};
|
||||
|
||||
/**
|
||||
* Set all local time fields
|
||||
*/
|
||||
const setAllLocalTimes = () => {
|
||||
const l = timers.length;
|
||||
|
||||
for (let i=0; i < l; ++i) {
|
||||
setLocalTime(timers[i]);
|
||||
}
|
||||
};
|
||||
|
||||
const updateClock = () => {
|
||||
document.getElementById("current-time").innerHTML = getCurrentEveTimeString();
|
||||
};
|
||||
|
||||
const timedUpdate = () => {
|
||||
updateClock();
|
||||
updateAllTimers();
|
||||
}
|
||||
|
||||
// Set initial values
|
||||
setAllLocalTimes();
|
||||
timedUpdate();
|
||||
|
||||
// Start timed updates
|
||||
setInterval(timedUpdate, 1000);
|
||||
|
||||
$(document).ready(() => {
|
||||
const timers = [
|
||||
{% for timer in timers %}
|
||||
{
|
||||
'id': {{ timer.id }},
|
||||
'targetDate': moment("{{ timer.eve_time | date:"c" }}"),
|
||||
'expired': false
|
||||
},
|
||||
{% endfor %}
|
||||
|
||||
{% for timer in corp_timers %}
|
||||
{
|
||||
'id': {{ timer.id }},
|
||||
'targetDate': moment("{{ timer.eve_time | date:"c" }}"),
|
||||
'expired': false
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
|
||||
/**
|
||||
* Update a timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const updateTimer = (timer) => {
|
||||
if (timer.targetDate.isAfter(Date.now())) {
|
||||
const duration = moment.duration(timer.targetDate - moment(), 'milliseconds');
|
||||
|
||||
document.getElementById("countdown" + timer.id).innerHTML = getDurationString(duration);
|
||||
} else {
|
||||
timer.expired = true;
|
||||
|
||||
document.getElementById("countdown" + timer.id).innerHTML = "";
|
||||
}
|
||||
};
|
||||
|
||||
const updateAllTimers = () => {
|
||||
const l = timers.length;
|
||||
|
||||
for (let i=0; i < l; ++i) {
|
||||
if (timers[i].expired) continue;
|
||||
|
||||
updateTimer(timers[i]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the local time info for the timer
|
||||
* @param timer Timer information
|
||||
*/
|
||||
const setLocalTime = (timer) => {
|
||||
document.getElementById("localtime" + timer.id).innerHTML = timer.targetDate.format("ddd @ LT");
|
||||
};
|
||||
|
||||
/**
|
||||
* Set all local time fields
|
||||
*/
|
||||
const setAllLocalTimes = () => {
|
||||
const l = timers.length;
|
||||
|
||||
for (let i=0; i < l; ++i) {
|
||||
setLocalTime(timers[i]);
|
||||
}
|
||||
};
|
||||
|
||||
const updateClock = () => {
|
||||
document.getElementById("current-time").innerHTML = getCurrentEveTimeString();
|
||||
};
|
||||
|
||||
const timedUpdate = () => {
|
||||
updateClock();
|
||||
updateAllTimers();
|
||||
}
|
||||
|
||||
// Set initial values
|
||||
setAllLocalTimes();
|
||||
timedUpdate();
|
||||
|
||||
// Start timed updates
|
||||
setInterval(timedUpdate, 1000);
|
||||
|
||||
const dtOptions = {
|
||||
language: {url: '{{ DT_LANG_PATH }}'},
|
||||
order: [
|
||||
@@ -185,7 +185,10 @@
|
||||
|
||||
{% if perms.auth.timer_management %}
|
||||
dtOptions['columnDefs'] = [
|
||||
{ "orderable": false, "targets": 7 }
|
||||
{
|
||||
"orderable": false,
|
||||
"targets": 7
|
||||
}
|
||||
];
|
||||
{% endif %}
|
||||
|
||||
|
||||
@@ -80,7 +80,10 @@ urlpatterns = [
|
||||
path('night/', views.NightModeRedirectView.as_view(), name='nightmode'),
|
||||
|
||||
# Theme Change
|
||||
path('theme/', views.ThemeRedirectView.as_view(), name='theme')
|
||||
path('theme/', views.ThemeRedirectView.as_view(), name='theme'),
|
||||
|
||||
# Minimize Menu
|
||||
path('minimize-sidebar/', views.MinimizeSidebarRedirectView.as_view(), name='minimize_sidebar')
|
||||
]
|
||||
|
||||
url_hooks = get_hooks("url_hook")
|
||||
|
||||
@@ -48,6 +48,29 @@ class ThemeRedirectView(View):
|
||||
|
||||
return HttpResponseRedirect(request.GET.get("next", "/"))
|
||||
|
||||
class MinimizeSidebarRedirectView(View):
|
||||
SESSION_VAR = "MINIMIZE_SIDEBAR"
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
request.session[self.SESSION_VAR] = not self.minimize_sidebar_state(request)
|
||||
if not request.user.is_anonymous:
|
||||
try:
|
||||
request.user.profile.minimize_sidebar = request.session[self.SESSION_VAR]
|
||||
request.user.profile.save()
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
|
||||
return HttpResponseRedirect(request.GET.get("next", "/"))
|
||||
|
||||
@classmethod
|
||||
def minimize_sidebar_state(cls, request):
|
||||
try:
|
||||
return request.session.get(cls.SESSION_VAR, False)
|
||||
except AttributeError:
|
||||
# Session is middleware
|
||||
# Sometimes request wont have a session attribute
|
||||
return False
|
||||
|
||||
|
||||
# TODO: error views should be renamed to a proper function name when possible
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
PROTOCOL=https://
|
||||
AUTH_SUBDOMAIN=%AUTH_SUBDOMAIN%
|
||||
DOMAIN=%DOMAIN%
|
||||
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.10.0
|
||||
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.12.0
|
||||
|
||||
# Nginx Proxy Manager
|
||||
PROXY_HTTP_PORT=80
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FROM python:3.11-slim
|
||||
ARG AUTH_VERSION=v4.10.0
|
||||
ARG AUTH_VERSION=v4.12.0
|
||||
ARG AUTH_PACKAGE=allianceauth==${AUTH_VERSION}
|
||||
ENV AUTH_USER=allianceauth
|
||||
ENV AUTH_GROUP=allianceauth
|
||||
|
||||
@@ -17,9 +17,7 @@ DATABASES["default"] = {
|
||||
"PASSWORD": os.environ.get("AA_DB_PASSWORD"),
|
||||
"HOST": os.environ.get("AA_DB_HOST"),
|
||||
"PORT": os.environ.get("AA_DB_PORT", "3306"),
|
||||
"OPTIONS": {
|
||||
"charset": os.environ.get("AA_DB_CHARSET", "utf8mb4")
|
||||
}
|
||||
"OPTIONS": {"charset": os.environ.get("AA_DB_CHARSET", "utf8mb4")},
|
||||
}
|
||||
|
||||
# Register an application at https://developers.eveonline.com for Authentication
|
||||
@@ -27,10 +25,9 @@ DATABASES["default"] = {
|
||||
# to https://example.com/sso/callback substituting your domain for example.com
|
||||
# Logging in to auth requires the publicData scope (can be overridden through the
|
||||
# LOGIN_TOKEN_SCOPES setting). Other apps may require more (see their docs).
|
||||
|
||||
ESI_SSO_CALLBACK_URL = f"{SITE_URL}/sso/callback" # Do NOT change this line!
|
||||
ESI_SSO_CLIENT_ID = os.environ.get("ESI_SSO_CLIENT_ID")
|
||||
ESI_SSO_CLIENT_SECRET = os.environ.get("ESI_SSO_CLIENT_SECRET")
|
||||
ESI_SSO_CALLBACK_URL = f"{SITE_URL}/sso/callback"
|
||||
ESI_USER_CONTACT_EMAIL = os.environ.get(
|
||||
"ESI_USER_CONTACT_EMAIL"
|
||||
) # A server maintainer that CCP can contact in case of issues.
|
||||
@@ -70,7 +67,6 @@ INSTALLED_APPS += [
|
||||
# 'allianceauth.permissions_tool',
|
||||
# 'allianceauth.srp',
|
||||
# 'allianceauth.timerboard',
|
||||
|
||||
# https://allianceauth.readthedocs.io/en/latest/features/services/index.html
|
||||
# 'allianceauth.services.modules.discord',
|
||||
# 'allianceauth.services.modules.discourse',
|
||||
|
||||
@@ -13,6 +13,7 @@ The Alliance Auth framework is split into several submodules, each of which is d
|
||||
|
||||
framework/api
|
||||
framework/css
|
||||
framework/datatables
|
||||
framework/js
|
||||
framework/templates
|
||||
framework/svg-sprite
|
||||
|
||||
214
docs/development/custom/framework/datatables.md
Normal file
214
docs/development/custom/framework/datatables.md
Normal file
@@ -0,0 +1,214 @@
|
||||
# DataTables Server Side Rendering
|
||||
|
||||
The `allianceauth.framework.datatables.DataTablesView` module provides a simple class based view to
|
||||
implement simple server side filtering ordering and searching of DataTables.
|
||||
|
||||
This is intended to make the life of our community apps developer a little
|
||||
easier, so they don't have to reinvent the wheel.
|
||||
|
||||
## Usage
|
||||
|
||||
To use this view is as easy as defining your stub templates, and fields and adding the view to the `urls.py`
|
||||
|
||||
Given the `EveCharacter` Model as our model of choice we would define our stubs like so
|
||||
|
||||
## Add our Templates
|
||||
|
||||
### template/appname/stubs/icon.html
|
||||
|
||||
```django
|
||||
{% load evelinks %}
|
||||
{% character_portrait_url row 32 %}
|
||||
```
|
||||
|
||||
### template/appname/stubs/name.html
|
||||
|
||||
```django
|
||||
{{ row.character_name }} <span class="text-small">({{ row.character_ownership.user.username }})</span>
|
||||
```
|
||||
|
||||
### template/appname/stubs/corp.html
|
||||
|
||||
```django
|
||||
{{ row.corporation_name }}
|
||||
```
|
||||
|
||||
### template/appname/list.html
|
||||
|
||||
```django
|
||||
{% extends "allianceauth/base-bs5.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
{% load aa_i18n %}
|
||||
|
||||
{% block page_title %}
|
||||
{% translate "App Name" %}
|
||||
{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
<table class="table table-striped w-100" id="table">
|
||||
<!-- Normal Header Rows -->
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>{% translate "Name" %}</th>
|
||||
<th>{% translate "Corporation" %}</th>
|
||||
<th>{% translate "Alliance" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
{% endblock content %}
|
||||
|
||||
{% block extra_css %}
|
||||
{% include "bundles/datatables-2-css-bs5.html" %}
|
||||
|
||||
{% comment %} If you don't use the ColumnControl Extension, remove the next line {% endcomment %}
|
||||
{% include "bundles/datatables-2-columncontrol-css-bs5.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_javascript %}
|
||||
{% get_datatables_language_static LANGUAGE_CODE as DT_LANG_PATH %}
|
||||
|
||||
{% include "bundles/datatables-2-js-bs5.html" %}
|
||||
|
||||
{% comment %} If you don't use the ColumnControl Extension, remove the next line {% endcomment %}
|
||||
{% include "bundles/datatables-2-columncontrol-js-bs5.html" %}
|
||||
|
||||
<script>
|
||||
$(document).ready(() => {
|
||||
// Assuming you have a table with the ID 'table'
|
||||
// A jQuery HTML Element `$('#table')` can also be passed instead of a selector string
|
||||
const dt = new DataTable('#table', {
|
||||
language: {
|
||||
url: '{{ DT_LANG_PATH }}',
|
||||
// Important: The value for `language.processing` must be passed
|
||||
// as a JS template string, not as a normal string. This is to
|
||||
// allow for Django template rendering inside the processing
|
||||
// indicator.
|
||||
processing: `{% include "framework/datatables/process-indicator.html" %}`
|
||||
},
|
||||
layout: { // See: https://datatables.net/reference/option/layout
|
||||
topStart: 'pageLength',
|
||||
topEnd: 'search',
|
||||
bottomStart: 'info',
|
||||
bottomEnd: 'paging'
|
||||
},
|
||||
ordering: { // See: https://datatables.net/reference/option/ordering
|
||||
handler: true, // Enable ordering by clicking on column headers
|
||||
indicators: false, // Disable ordering indicators on column headers (important when ColumnControl is used)
|
||||
},
|
||||
processing: true, // Show processing indicator when loading data
|
||||
serverSide: true, // Enable server-side processing
|
||||
ajax: '{% url "appname:data_table_view" %}',
|
||||
columnDefs: [
|
||||
{
|
||||
targets: [0],
|
||||
columnControl: [],
|
||||
sortable: false,
|
||||
searchable: false
|
||||
},
|
||||
{
|
||||
targets: [1,2,3],
|
||||
columnControl: [
|
||||
{
|
||||
target: 0,
|
||||
content: []
|
||||
},
|
||||
{
|
||||
target: 1,
|
||||
content: ['search']
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
order: [
|
||||
[1, "asc"]
|
||||
],
|
||||
pageLength: 10, // Override default page length if desired
|
||||
responsive : true
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock extra_javascript %}
|
||||
```
|
||||
|
||||
## Add our Views
|
||||
|
||||
Then we can setup out view in our `appname/views.py` file.
|
||||
|
||||
### Columns definition
|
||||
|
||||
The `columns` must be defined as a 2 part tuple
|
||||
|
||||
- Part 1 is the database field that will be used for filtering and ordering. If this is a foreign key you need to point to a field that is compatible with `__icontains` like `charField` or `textField`. It can be `None`/`False`/`""` if no ordering for filtering is required for this row.
|
||||
- Examples for the EveCharacter Model:
|
||||
- `character_name`
|
||||
- `character_ownership__user__username`
|
||||
- `character_ownership__user__profile__main_character__character_name`
|
||||
- Part 2 is a string that is used to the render the column for each row. This can be a html stub or a string containing django style template language.
|
||||
- Examples for the EveCharacter Model
|
||||
- `{{ row.character_name }}`
|
||||
- `{{ row.character_ownership.user.username }}`
|
||||
- `{{ row.character_ownership.user.profile.main_character.character_name }}`
|
||||
- `appname/stubs/character_img.html`
|
||||
|
||||
### appname/views.py
|
||||
|
||||
```python
|
||||
from django.shortcuts import render
|
||||
# Alliance Auth
|
||||
from allianceauth.framework.datatables import DataTablesView
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
## Datatables server side view
|
||||
class EveCharacterTable(DataTablesView):
|
||||
model = EveCharacter
|
||||
|
||||
# Define the columns as a tuple.
|
||||
# String for field name for filtering and ordering
|
||||
# String for the render template
|
||||
# Templates can be a html file or template language directly in the list below
|
||||
columns = [
|
||||
# ("field_for_queries_or_sort", template: str)
|
||||
("", "appname/stubs/icon.html"),
|
||||
("character_name", "appname/stubs/name.html"),
|
||||
("corporation_name", "appname/stubs/corp.html"),
|
||||
("alliance_name", "{{ row.alliance_name }} {{ row.alliance_id }}"),
|
||||
]
|
||||
|
||||
# if you need to do some prefetch or pre-filtering you can overide this function
|
||||
def get_model_qs(self, request: HttpRequest):
|
||||
qs = self.model.objects
|
||||
|
||||
if not request.user.is_superuser:
|
||||
# eg only show unlinked characters to non-superusers
|
||||
# just an example
|
||||
# filtering here will prevent people searching things that may not be visible to them
|
||||
qs = qs.filter(character_ownership__isnull=True)
|
||||
|
||||
# maybe some character ownership select related for performance?
|
||||
return qs.select_related("character_ownership", "character_ownership__user")
|
||||
|
||||
## Main Page View
|
||||
def show_table(request):
|
||||
return render("appname/list.html")
|
||||
```
|
||||
|
||||
## Add our Urls
|
||||
|
||||
### appname/urls.py
|
||||
|
||||
```python
|
||||
from django.urls import path
|
||||
|
||||
from . import views
|
||||
|
||||
app_name = 'appname'
|
||||
|
||||
urlpatterns = [
|
||||
path("list/", views.EveCharacterTable.as_view(), name='eve_character_table'),
|
||||
path("tables/data_table", views.show_table, name='data_table_view')
|
||||
]
|
||||
```
|
||||
|
||||
and you are done.
|
||||
@@ -28,6 +28,7 @@ The following icons are available in the Alliance Auth SVG sprite:
|
||||
|
||||
- `aa-logo`: The Alliance Auth logo
|
||||
- `aa-loading-spinner`: A loading spinner icon
|
||||
- `aa-mumble-logo`: The Mumble logo
|
||||
|
||||
### Alliance Auth Logo
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ Make the following changes in your auth project's settings file (`local.py`):
|
||||
# Be sure to set the callback URLto https://example.com/discord/callback/
|
||||
# substituting your domain for example.com in Discord's developer portal
|
||||
# (Be sure to add the trailing slash)
|
||||
DISCORD_CALLBACK_URL = f"{SITE_URL}/discord/callback/" # Do NOT change this line!
|
||||
DISCORD_GUILD_ID = ''
|
||||
DISCORD_CALLBACK_URL = f"{SITE_URL}/discord/callback/"
|
||||
DISCORD_APP_ID = ''
|
||||
DISCORD_APP_SECRET = ''
|
||||
DISCORD_BOT_TOKEN = ''
|
||||
|
||||
@@ -15,7 +15,7 @@ license = { file = "LICENSE" }
|
||||
authors = [
|
||||
{ name = "Alliance Auth", email = "adarnof@gmail.com" },
|
||||
]
|
||||
requires-python = ">=3.8"
|
||||
requires-python = ">=3.8,<3.14"
|
||||
classifiers = [
|
||||
"Environment :: Web Environment",
|
||||
"Framework :: Celery",
|
||||
@@ -40,7 +40,7 @@ dynamic = [
|
||||
"version",
|
||||
]
|
||||
dependencies = [
|
||||
"bcrypt",
|
||||
"bcrypt<5",
|
||||
"beautifulsoup4",
|
||||
"celery>=5.2,<6",
|
||||
"celery-once>=3.0.1",
|
||||
@@ -61,11 +61,14 @@ dependencies = [
|
||||
"passlib",
|
||||
"pydiscourse",
|
||||
"python-slugify>=1.2",
|
||||
"pyyaml",
|
||||
"redis>=4",
|
||||
"requests>=2.9.1",
|
||||
"requests-oauthlib",
|
||||
"semantic-version",
|
||||
"slixmpp<1.9",
|
||||
"ua-parser",
|
||||
"user-agents",
|
||||
]
|
||||
optional-dependencies.docs = [
|
||||
"myst-parser",
|
||||
|
||||
3
tox.ini
3
tox.ini
@@ -2,7 +2,7 @@
|
||||
isolated_build = true
|
||||
skipsdist = true
|
||||
usedevelop = true
|
||||
envlist = py{38,39,310,311,312}-{all,core}, docs
|
||||
envlist = py{38,39,310,311,312,313}-{all,core}, docs
|
||||
|
||||
[testenv]
|
||||
setenv =
|
||||
@@ -14,6 +14,7 @@ basepython =
|
||||
py310: python3.10
|
||||
py311: python3.11
|
||||
py312: python3.12
|
||||
py313: python3.13
|
||||
deps=
|
||||
coverage
|
||||
install_command = pip install -e ".[test]" -U {opts} {packages}
|
||||
|
||||
Reference in New Issue
Block a user