Mr Duhaz преди 1 месец
родител
ревизия
f89676609e
променени са 100 файла, в които са добавени 21932 реда и са изтрити 2414 реда
  1. 31 0
      core/.gitignore
  2. 52 0
      static/admin/__init__.py
  3. 94 0
      static/admin/actions.py
  4. 27 0
      static/admin/apps.py
  5. 1359 0
      static/admin/checks.py
  6. 0 20
      static/admin/css/fonts.css
  7. 111 0
      static/admin/decorators.py
  8. 25 0
      static/admin/exceptions.py
  9. 716 0
      static/admin/filters.py
  10. 0 202
      static/admin/fonts/LICENSE.txt
  11. 0 3
      static/admin/fonts/README.txt
  12. BIN
      static/admin/fonts/Roboto-Bold-webfont.woff
  13. BIN
      static/admin/fonts/Roboto-Light-webfont.woff
  14. BIN
      static/admin/fonts/Roboto-Regular-webfont.woff
  15. 31 0
      static/admin/forms.py
  16. 568 0
      static/admin/helpers.py
  17. 0 14
      static/admin/img/calendar-icons.svg
  18. 0 154
      static/admin/js/actions.js
  19. 0 7
      static/admin/js/actions.min.js
  20. 0 38
      static/admin/js/autocomplete.js
  21. 0 43
      static/admin/js/collapse.js
  22. 0 2
      static/admin/js/collapse.min.js
  23. 0 11
      static/admin/js/inlines.min.js
  24. 0 39
      static/admin/js/nav_sidebar.js
  25. 0 1
      static/admin/js/prepopulate.min.js
  26. 0 1
      static/admin/js/vendor/jquery/jquery.min.js
  27. 0 1810
      static/admin/js/vendor/xregexp/xregexp.js
  28. 0 69
      static/admin/js/vendor/xregexp/xregexp.min.js
  29. BIN
      static/admin/locale/af/LC_MESSAGES/django.mo
  30. 774 0
      static/admin/locale/af/LC_MESSAGES/django.po
  31. BIN
      static/admin/locale/af/LC_MESSAGES/djangojs.mo
  32. 324 0
      static/admin/locale/af/LC_MESSAGES/djangojs.po
  33. BIN
      static/admin/locale/am/LC_MESSAGES/django.mo
  34. 636 0
      static/admin/locale/am/LC_MESSAGES/django.po
  35. BIN
      static/admin/locale/ar/LC_MESSAGES/django.mo
  36. 731 0
      static/admin/locale/ar/LC_MESSAGES/django.po
  37. BIN
      static/admin/locale/ar/LC_MESSAGES/djangojs.mo
  38. 278 0
      static/admin/locale/ar/LC_MESSAGES/djangojs.po
  39. BIN
      static/admin/locale/ar_DZ/LC_MESSAGES/django.mo
  40. 738 0
      static/admin/locale/ar_DZ/LC_MESSAGES/django.po
  41. BIN
      static/admin/locale/ar_DZ/LC_MESSAGES/djangojs.mo
  42. 280 0
      static/admin/locale/ar_DZ/LC_MESSAGES/djangojs.po
  43. BIN
      static/admin/locale/ast/LC_MESSAGES/django.mo
  44. 636 0
      static/admin/locale/ast/LC_MESSAGES/django.po
  45. BIN
      static/admin/locale/ast/LC_MESSAGES/djangojs.mo
  46. 211 0
      static/admin/locale/ast/LC_MESSAGES/djangojs.po
  47. BIN
      static/admin/locale/az/LC_MESSAGES/django.mo
  48. 791 0
      static/admin/locale/az/LC_MESSAGES/django.po
  49. BIN
      static/admin/locale/az/LC_MESSAGES/djangojs.mo
  50. 272 0
      static/admin/locale/az/LC_MESSAGES/djangojs.po
  51. BIN
      static/admin/locale/be/LC_MESSAGES/django.mo
  52. 791 0
      static/admin/locale/be/LC_MESSAGES/django.po
  53. BIN
      static/admin/locale/be/LC_MESSAGES/djangojs.mo
  54. 333 0
      static/admin/locale/be/LC_MESSAGES/djangojs.po
  55. BIN
      static/admin/locale/bg/LC_MESSAGES/django.mo
  56. 791 0
      static/admin/locale/bg/LC_MESSAGES/django.po
  57. BIN
      static/admin/locale/bg/LC_MESSAGES/djangojs.mo
  58. 320 0
      static/admin/locale/bg/LC_MESSAGES/djangojs.po
  59. BIN
      static/admin/locale/bn/LC_MESSAGES/django.mo
  60. 713 0
      static/admin/locale/bn/LC_MESSAGES/django.po
  61. BIN
      static/admin/locale/bn/LC_MESSAGES/djangojs.mo
  62. 207 0
      static/admin/locale/bn/LC_MESSAGES/djangojs.po
  63. BIN
      static/admin/locale/br/LC_MESSAGES/django.mo
  64. 671 0
      static/admin/locale/br/LC_MESSAGES/django.po
  65. BIN
      static/admin/locale/br/LC_MESSAGES/djangojs.mo
  66. 217 0
      static/admin/locale/br/LC_MESSAGES/djangojs.po
  67. BIN
      static/admin/locale/bs/LC_MESSAGES/django.mo
  68. 657 0
      static/admin/locale/bs/LC_MESSAGES/django.po
  69. BIN
      static/admin/locale/bs/LC_MESSAGES/djangojs.mo
  70. 211 0
      static/admin/locale/bs/LC_MESSAGES/djangojs.po
  71. BIN
      static/admin/locale/ca/LC_MESSAGES/django.mo
  72. 750 0
      static/admin/locale/ca/LC_MESSAGES/django.po
  73. BIN
      static/admin/locale/ca/LC_MESSAGES/djangojs.mo
  74. 330 0
      static/admin/locale/ca/LC_MESSAGES/djangojs.po
  75. BIN
      static/admin/locale/ckb/LC_MESSAGES/django.mo
  76. 792 0
      static/admin/locale/ckb/LC_MESSAGES/django.po
  77. BIN
      static/admin/locale/ckb/LC_MESSAGES/djangojs.mo
  78. 329 0
      static/admin/locale/ckb/LC_MESSAGES/djangojs.po
  79. BIN
      static/admin/locale/cs/LC_MESSAGES/django.mo
  80. 803 0
      static/admin/locale/cs/LC_MESSAGES/django.po
  81. BIN
      static/admin/locale/cs/LC_MESSAGES/djangojs.mo
  82. 332 0
      static/admin/locale/cs/LC_MESSAGES/djangojs.po
  83. BIN
      static/admin/locale/cy/LC_MESSAGES/django.mo
  84. 675 0
      static/admin/locale/cy/LC_MESSAGES/django.po
  85. BIN
      static/admin/locale/cy/LC_MESSAGES/djangojs.mo
  86. 222 0
      static/admin/locale/cy/LC_MESSAGES/djangojs.po
  87. BIN
      static/admin/locale/da/LC_MESSAGES/django.mo
  88. 788 0
      static/admin/locale/da/LC_MESSAGES/django.po
  89. BIN
      static/admin/locale/da/LC_MESSAGES/djangojs.mo
  90. 329 0
      static/admin/locale/da/LC_MESSAGES/djangojs.po
  91. BIN
      static/admin/locale/de/LC_MESSAGES/django.mo
  92. 791 0
      static/admin/locale/de/LC_MESSAGES/django.po
  93. BIN
      static/admin/locale/de/LC_MESSAGES/djangojs.mo
  94. 331 0
      static/admin/locale/de/LC_MESSAGES/djangojs.po
  95. BIN
      static/admin/locale/dsb/LC_MESSAGES/django.mo
  96. 792 0
      static/admin/locale/dsb/LC_MESSAGES/django.po
  97. BIN
      static/admin/locale/dsb/LC_MESSAGES/djangojs.mo
  98. 335 0
      static/admin/locale/dsb/LC_MESSAGES/djangojs.po
  99. BIN
      static/admin/locale/el/LC_MESSAGES/django.mo
  100. 737 0
      static/admin/locale/el/LC_MESSAGES/django.po

+ 31 - 0
core/.gitignore

@@ -99,3 +99,34 @@ migrations/__pycache__/0024_auto_20240730_2235.cpython-39.pyc
 migrations/__pycache__/0024_auto_20240730_2235.cpython-312.pyc
 migrations/__pycache__/0025_auto_20240730_2241.cpython-39.pyc
 migrations/__pycache__/0025_auto_20240730_2241.cpython-312.pyc
+__pycache__/__init__.cpython-313.pyc
+__pycache__/admin.cpython-313.pyc
+__pycache__/apps.cpython-313.pyc
+__pycache__/models.cpython-313.pyc
+__pycache__/views.cpython-313.pyc
+migrations/__pycache__/__init__.cpython-313.pyc
+migrations/__pycache__/0001_initial.cpython-313.pyc
+migrations/__pycache__/0002_auto_20220422_0914.cpython-313.pyc
+migrations/__pycache__/0003_data.cpython-313.pyc
+migrations/__pycache__/0004_auto_20221121_1234.cpython-313.pyc
+migrations/__pycache__/0005_page_p_menu_stack.cpython-313.pyc
+migrations/__pycache__/0006_speed_dial.cpython-313.pyc
+migrations/__pycache__/0007_auto_20231201_1455.cpython-313.pyc
+migrations/__pycache__/0008_speed_dial_sd_icone.cpython-313.pyc
+migrations/__pycache__/0009_speed_dial_sd_color.cpython-313.pyc
+migrations/__pycache__/0010_auto_20231222_1114.cpython-313.pyc
+migrations/__pycache__/0011_alter_page_p_menu_parent.cpython-313.pyc
+migrations/__pycache__/0012_page_p_menu_est_parent.cpython-313.pyc
+migrations/__pycache__/0013_alter_page_p_menu_parent.cpython-313.pyc
+migrations/__pycache__/0014_fichier.cpython-313.pyc
+migrations/__pycache__/0015_auto_20240119_1346.cpython-313.pyc
+migrations/__pycache__/0016_groupe.cpython-313.pyc
+migrations/__pycache__/0017_groupe_g_description.cpython-313.pyc
+migrations/__pycache__/0018_speed_dial_sd_groupe.cpython-313.pyc
+migrations/__pycache__/0019_alter_speed_dial_sd_groupe.cpython-313.pyc
+migrations/__pycache__/0020_alter_speed_dial_sd_titre.cpython-313.pyc
+migrations/__pycache__/0021_auto_20240423_1338.cpython-313.pyc
+migrations/__pycache__/0022_page_p_proteger.cpython-313.pyc
+migrations/__pycache__/0023_auto_20240730_2056.cpython-313.pyc
+migrations/__pycache__/0024_auto_20240730_2235.cpython-313.pyc
+migrations/__pycache__/0025_auto_20240730_2241.cpython-313.pyc

+ 52 - 0
static/admin/__init__.py

@@ -0,0 +1,52 @@
+from django.contrib.admin.decorators import action, display, register
+from django.contrib.admin.filters import (
+    AllValuesFieldListFilter,
+    BooleanFieldListFilter,
+    ChoicesFieldListFilter,
+    DateFieldListFilter,
+    EmptyFieldListFilter,
+    FieldListFilter,
+    ListFilter,
+    RelatedFieldListFilter,
+    RelatedOnlyFieldListFilter,
+    SimpleListFilter,
+)
+from django.contrib.admin.options import (
+    HORIZONTAL,
+    VERTICAL,
+    ModelAdmin,
+    ShowFacets,
+    StackedInline,
+    TabularInline,
+)
+from django.contrib.admin.sites import AdminSite, site
+from django.utils.module_loading import autodiscover_modules
+
+__all__ = [
+    "action",
+    "display",
+    "register",
+    "ModelAdmin",
+    "HORIZONTAL",
+    "VERTICAL",
+    "StackedInline",
+    "TabularInline",
+    "AdminSite",
+    "site",
+    "ListFilter",
+    "SimpleListFilter",
+    "FieldListFilter",
+    "BooleanFieldListFilter",
+    "RelatedFieldListFilter",
+    "ChoicesFieldListFilter",
+    "DateFieldListFilter",
+    "AllValuesFieldListFilter",
+    "EmptyFieldListFilter",
+    "RelatedOnlyFieldListFilter",
+    "ShowFacets",
+    "autodiscover",
+]
+
+
+def autodiscover():
+    autodiscover_modules("admin", register_to=site)

+ 94 - 0
static/admin/actions.py

@@ -0,0 +1,94 @@
+"""
+Built-in, globally-available admin actions.
+"""
+
+from django.contrib import messages
+from django.contrib.admin import helpers
+from django.contrib.admin.decorators import action
+from django.contrib.admin.utils import model_ngettext
+from django.core.exceptions import PermissionDenied
+from django.template.response import TemplateResponse
+from django.utils.translation import gettext as _
+from django.utils.translation import gettext_lazy
+
+
+@action(
+    permissions=["delete"],
+    description=gettext_lazy("Delete selected %(verbose_name_plural)s"),
+)
+def delete_selected(modeladmin, request, queryset):
+    """
+    Default action which deletes the selected objects.
+
+    This action first displays a confirmation page which shows all the
+    deletable objects, or, if the user has no permission one of the related
+    childs (foreignkeys), a "permission denied" message.
+
+    Next, it deletes all selected objects and redirects back to the change list.
+    """
+    opts = modeladmin.model._meta
+    app_label = opts.app_label
+
+    # Populate deletable_objects, a data structure of all related objects that
+    # will also be deleted.
+    (
+        deletable_objects,
+        model_count,
+        perms_needed,
+        protected,
+    ) = modeladmin.get_deleted_objects(queryset, request)
+
+    # The user has already confirmed the deletion.
+    # Do the deletion and return None to display the change list view again.
+    if request.POST.get("post") and not protected:
+        if perms_needed:
+            raise PermissionDenied
+        n = len(queryset)
+        if n:
+            modeladmin.log_deletions(request, queryset)
+            modeladmin.delete_queryset(request, queryset)
+            modeladmin.message_user(
+                request,
+                _("Successfully deleted %(count)d %(items)s.")
+                % {"count": n, "items": model_ngettext(modeladmin.opts, n)},
+                messages.SUCCESS,
+            )
+        # Return None to display the change list page again.
+        return None
+
+    objects_name = model_ngettext(queryset)
+
+    if perms_needed or protected:
+        title = _("Cannot delete %(name)s") % {"name": objects_name}
+    else:
+        title = _("Are you sure?")
+
+    context = {
+        **modeladmin.admin_site.each_context(request),
+        "title": title,
+        "subtitle": None,
+        "objects_name": str(objects_name),
+        "deletable_objects": [deletable_objects],
+        "model_count": dict(model_count).items(),
+        "queryset": queryset,
+        "perms_lacking": perms_needed,
+        "protected": protected,
+        "opts": opts,
+        "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME,
+        "media": modeladmin.media,
+    }
+
+    request.current_app = modeladmin.admin_site.name
+
+    # Display the confirmation page
+    return TemplateResponse(
+        request,
+        modeladmin.delete_selected_confirmation_template
+        or [
+            "admin/%s/%s/delete_selected_confirmation.html"
+            % (app_label, opts.model_name),
+            "admin/%s/delete_selected_confirmation.html" % app_label,
+            "admin/delete_selected_confirmation.html",
+        ],
+        context,
+    )

+ 27 - 0
static/admin/apps.py

@@ -0,0 +1,27 @@
+from django.apps import AppConfig
+from django.contrib.admin.checks import check_admin_app, check_dependencies
+from django.core import checks
+from django.utils.translation import gettext_lazy as _
+
+
+class SimpleAdminConfig(AppConfig):
+    """Simple AppConfig which does not do automatic discovery."""
+
+    default_auto_field = "django.db.models.AutoField"
+    default_site = "django.contrib.admin.sites.AdminSite"
+    name = "django.contrib.admin"
+    verbose_name = _("Administration")
+
+    def ready(self):
+        checks.register(check_dependencies, checks.Tags.admin)
+        checks.register(check_admin_app, checks.Tags.admin)
+
+
+class AdminConfig(SimpleAdminConfig):
+    """The default AppConfig for admin which does autodiscovery."""
+
+    default = True
+
+    def ready(self):
+        super().ready()
+        self.module.autodiscover()

+ 1359 - 0
static/admin/checks.py

@@ -0,0 +1,1359 @@
+import collections
+from itertools import chain
+
+from django.apps import apps
+from django.conf import settings
+from django.contrib.admin.exceptions import NotRegistered
+from django.contrib.admin.utils import NotRelationField, flatten, get_fields_from_path
+from django.core import checks
+from django.core.exceptions import FieldDoesNotExist
+from django.db import models
+from django.db.models.constants import LOOKUP_SEP
+from django.db.models.expressions import Combinable
+from django.forms.models import BaseModelForm, BaseModelFormSet, _get_foreign_key
+from django.template import engines
+from django.template.backends.django import DjangoTemplates
+from django.utils.module_loading import import_string
+
+
+def _issubclass(cls, classinfo):
+    """
+    issubclass() variant that doesn't raise an exception if cls isn't a
+    class.
+    """
+    try:
+        return issubclass(cls, classinfo)
+    except TypeError:
+        return False
+
+
+def _contains_subclass(class_path, candidate_paths):
+    """
+    Return whether or not a dotted class path (or a subclass of that class) is
+    found in a list of candidate paths.
+    """
+    cls = import_string(class_path)
+    for path in candidate_paths:
+        try:
+            candidate_cls = import_string(path)
+        except ImportError:
+            # ImportErrors are raised elsewhere.
+            continue
+        if _issubclass(candidate_cls, cls):
+            return True
+    return False
+
+
+def check_admin_app(app_configs, **kwargs):
+    from django.contrib.admin.sites import all_sites
+
+    errors = []
+    for site in all_sites:
+        errors.extend(site.check(app_configs))
+    return errors
+
+
+def check_dependencies(**kwargs):
+    """
+    Check that the admin's dependencies are correctly installed.
+    """
+    from django.contrib.admin.sites import all_sites
+
+    if not apps.is_installed("django.contrib.admin"):
+        return []
+    errors = []
+    app_dependencies = (
+        ("django.contrib.contenttypes", 401),
+        ("django.contrib.auth", 405),
+        ("django.contrib.messages", 406),
+    )
+    for app_name, error_code in app_dependencies:
+        if not apps.is_installed(app_name):
+            errors.append(
+                checks.Error(
+                    "'%s' must be in INSTALLED_APPS in order to use the admin "
+                    "application." % app_name,
+                    id="admin.E%d" % error_code,
+                )
+            )
+    for engine in engines.all():
+        if isinstance(engine, DjangoTemplates):
+            django_templates_instance = engine.engine
+            break
+    else:
+        django_templates_instance = None
+    if not django_templates_instance:
+        errors.append(
+            checks.Error(
+                "A 'django.template.backends.django.DjangoTemplates' instance "
+                "must be configured in TEMPLATES in order to use the admin "
+                "application.",
+                id="admin.E403",
+            )
+        )
+    else:
+        if (
+            "django.contrib.auth.context_processors.auth"
+            not in django_templates_instance.context_processors
+            and _contains_subclass(
+                "django.contrib.auth.backends.ModelBackend",
+                settings.AUTHENTICATION_BACKENDS,
+            )
+        ):
+            errors.append(
+                checks.Error(
+                    "'django.contrib.auth.context_processors.auth' must be "
+                    "enabled in DjangoTemplates (TEMPLATES) if using the default "
+                    "auth backend in order to use the admin application.",
+                    id="admin.E402",
+                )
+            )
+        if (
+            "django.contrib.messages.context_processors.messages"
+            not in django_templates_instance.context_processors
+        ):
+            errors.append(
+                checks.Error(
+                    "'django.contrib.messages.context_processors.messages' must "
+                    "be enabled in DjangoTemplates (TEMPLATES) in order to use "
+                    "the admin application.",
+                    id="admin.E404",
+                )
+            )
+        sidebar_enabled = any(site.enable_nav_sidebar for site in all_sites)
+        if (
+            sidebar_enabled
+            and "django.template.context_processors.request"
+            not in django_templates_instance.context_processors
+        ):
+            errors.append(
+                checks.Warning(
+                    "'django.template.context_processors.request' must be enabled "
+                    "in DjangoTemplates (TEMPLATES) in order to use the admin "
+                    "navigation sidebar.",
+                    id="admin.W411",
+                )
+            )
+
+    if not _contains_subclass(
+        "django.contrib.auth.middleware.AuthenticationMiddleware", settings.MIDDLEWARE
+    ):
+        errors.append(
+            checks.Error(
+                "'django.contrib.auth.middleware.AuthenticationMiddleware' must "
+                "be in MIDDLEWARE in order to use the admin application.",
+                id="admin.E408",
+            )
+        )
+    if not _contains_subclass(
+        "django.contrib.messages.middleware.MessageMiddleware", settings.MIDDLEWARE
+    ):
+        errors.append(
+            checks.Error(
+                "'django.contrib.messages.middleware.MessageMiddleware' must "
+                "be in MIDDLEWARE in order to use the admin application.",
+                id="admin.E409",
+            )
+        )
+    if not _contains_subclass(
+        "django.contrib.sessions.middleware.SessionMiddleware", settings.MIDDLEWARE
+    ):
+        errors.append(
+            checks.Error(
+                "'django.contrib.sessions.middleware.SessionMiddleware' must "
+                "be in MIDDLEWARE in order to use the admin application.",
+                hint=(
+                    "Insert "
+                    "'django.contrib.sessions.middleware.SessionMiddleware' "
+                    "before "
+                    "'django.contrib.auth.middleware.AuthenticationMiddleware'."
+                ),
+                id="admin.E410",
+            )
+        )
+    return errors
+
+
+class BaseModelAdminChecks:
+    def check(self, admin_obj, **kwargs):
+        return [
+            *self._check_autocomplete_fields(admin_obj),
+            *self._check_raw_id_fields(admin_obj),
+            *self._check_fields(admin_obj),
+            *self._check_fieldsets(admin_obj),
+            *self._check_exclude(admin_obj),
+            *self._check_form(admin_obj),
+            *self._check_filter_vertical(admin_obj),
+            *self._check_filter_horizontal(admin_obj),
+            *self._check_radio_fields(admin_obj),
+            *self._check_prepopulated_fields(admin_obj),
+            *self._check_view_on_site_url(admin_obj),
+            *self._check_ordering(admin_obj),
+            *self._check_readonly_fields(admin_obj),
+        ]
+
+    def _check_autocomplete_fields(self, obj):
+        """
+        Check that `autocomplete_fields` is a list or tuple of model fields.
+        """
+        if not isinstance(obj.autocomplete_fields, (list, tuple)):
+            return must_be(
+                "a list or tuple",
+                option="autocomplete_fields",
+                obj=obj,
+                id="admin.E036",
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    [
+                        self._check_autocomplete_fields_item(
+                            obj, field_name, "autocomplete_fields[%d]" % index
+                        )
+                        for index, field_name in enumerate(obj.autocomplete_fields)
+                    ]
+                )
+            )
+
+    def _check_autocomplete_fields_item(self, obj, field_name, label):
+        """
+        Check that an item in `autocomplete_fields` is a ForeignKey or a
+        ManyToManyField and that the item has a related ModelAdmin with
+        search_fields defined.
+        """
+        try:
+            field = obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E037"
+            )
+        else:
+            if not field.many_to_many and not isinstance(field, models.ForeignKey):
+                return must_be(
+                    "a foreign key or a many-to-many field",
+                    option=label,
+                    obj=obj,
+                    id="admin.E038",
+                )
+            try:
+                related_admin = obj.admin_site.get_model_admin(field.remote_field.model)
+            except NotRegistered:
+                return [
+                    checks.Error(
+                        'An admin for model "%s" has to be registered '
+                        "to be referenced by %s.autocomplete_fields."
+                        % (
+                            field.remote_field.model.__name__,
+                            type(obj).__name__,
+                        ),
+                        obj=obj.__class__,
+                        id="admin.E039",
+                    )
+                ]
+            else:
+                if not related_admin.search_fields:
+                    return [
+                        checks.Error(
+                            '%s must define "search_fields", because it\'s '
+                            "referenced by %s.autocomplete_fields."
+                            % (
+                                related_admin.__class__.__name__,
+                                type(obj).__name__,
+                            ),
+                            obj=obj.__class__,
+                            id="admin.E040",
+                        )
+                    ]
+            return []
+
+    def _check_raw_id_fields(self, obj):
+        """Check that `raw_id_fields` only contains field names that are listed
+        on the model."""
+
+        if not isinstance(obj.raw_id_fields, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="raw_id_fields", obj=obj, id="admin.E001"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_raw_id_fields_item(
+                        obj, field_name, "raw_id_fields[%d]" % index
+                    )
+                    for index, field_name in enumerate(obj.raw_id_fields)
+                )
+            )
+
+    def _check_raw_id_fields_item(self, obj, field_name, label):
+        """Check an item of `raw_id_fields`, i.e. check that field named
+        `field_name` exists in model `model` and is a ForeignKey or a
+        ManyToManyField."""
+
+        try:
+            field = obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E002"
+            )
+        else:
+            # Using attname is not supported.
+            if field.name != field_name:
+                return refer_to_missing_field(
+                    field=field_name,
+                    option=label,
+                    obj=obj,
+                    id="admin.E002",
+                )
+            if not field.many_to_many and not isinstance(field, models.ForeignKey):
+                return must_be(
+                    "a foreign key or a many-to-many field",
+                    option=label,
+                    obj=obj,
+                    id="admin.E003",
+                )
+            else:
+                return []
+
+    def _check_fields(self, obj):
+        """Check that `fields` only refer to existing fields, doesn't contain
+        duplicates. Check if at most one of `fields` and `fieldsets` is defined.
+        """
+
+        if obj.fields is None:
+            return []
+        elif not isinstance(obj.fields, (list, tuple)):
+            return must_be("a list or tuple", option="fields", obj=obj, id="admin.E004")
+        elif obj.fieldsets:
+            return [
+                checks.Error(
+                    "Both 'fieldsets' and 'fields' are specified.",
+                    obj=obj.__class__,
+                    id="admin.E005",
+                )
+            ]
+        fields = flatten(obj.fields)
+        if len(fields) != len(set(fields)):
+            return [
+                checks.Error(
+                    "The value of 'fields' contains duplicate field(s).",
+                    obj=obj.__class__,
+                    id="admin.E006",
+                )
+            ]
+
+        return list(
+            chain.from_iterable(
+                self._check_field_spec(obj, field_name, "fields")
+                for field_name in obj.fields
+            )
+        )
+
+    def _check_fieldsets(self, obj):
+        """Check that fieldsets is properly formatted and doesn't contain
+        duplicates."""
+
+        if obj.fieldsets is None:
+            return []
+        elif not isinstance(obj.fieldsets, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="fieldsets", obj=obj, id="admin.E007"
+            )
+        else:
+            seen_fields = []
+            return list(
+                chain.from_iterable(
+                    self._check_fieldsets_item(
+                        obj, fieldset, "fieldsets[%d]" % index, seen_fields
+                    )
+                    for index, fieldset in enumerate(obj.fieldsets)
+                )
+            )
+
+    def _check_fieldsets_item(self, obj, fieldset, label, seen_fields):
+        """Check an item of `fieldsets`, i.e. check that this is a pair of a
+        set name and a dictionary containing "fields" key."""
+
+        if not isinstance(fieldset, (list, tuple)):
+            return must_be("a list or tuple", option=label, obj=obj, id="admin.E008")
+        elif len(fieldset) != 2:
+            return must_be("of length 2", option=label, obj=obj, id="admin.E009")
+        elif not isinstance(fieldset[1], dict):
+            return must_be(
+                "a dictionary", option="%s[1]" % label, obj=obj, id="admin.E010"
+            )
+        elif "fields" not in fieldset[1]:
+            return [
+                checks.Error(
+                    "The value of '%s[1]' must contain the key 'fields'." % label,
+                    obj=obj.__class__,
+                    id="admin.E011",
+                )
+            ]
+        elif not isinstance(fieldset[1]["fields"], (list, tuple)):
+            return must_be(
+                "a list or tuple",
+                option="%s[1]['fields']" % label,
+                obj=obj,
+                id="admin.E008",
+            )
+
+        seen_fields.extend(flatten(fieldset[1]["fields"]))
+        if len(seen_fields) != len(set(seen_fields)):
+            return [
+                checks.Error(
+                    "There are duplicate field(s) in '%s[1]'." % label,
+                    obj=obj.__class__,
+                    id="admin.E012",
+                )
+            ]
+        return list(
+            chain.from_iterable(
+                self._check_field_spec(obj, fieldset_fields, '%s[1]["fields"]' % label)
+                for fieldset_fields in fieldset[1]["fields"]
+            )
+        )
+
+    def _check_field_spec(self, obj, fields, label):
+        """`fields` should be an item of `fields` or an item of
+        fieldset[1]['fields'] for any `fieldset` in `fieldsets`. It should be a
+        field name or a tuple of field names."""
+
+        if isinstance(fields, tuple):
+            return list(
+                chain.from_iterable(
+                    self._check_field_spec_item(
+                        obj, field_name, "%s[%d]" % (label, index)
+                    )
+                    for index, field_name in enumerate(fields)
+                )
+            )
+        else:
+            return self._check_field_spec_item(obj, fields, label)
+
+    def _check_field_spec_item(self, obj, field_name, label):
+        if field_name in obj.readonly_fields:
+            # Stuff can be put in fields that isn't actually a model field if
+            # it's in readonly_fields, readonly_fields will handle the
+            # validation of such things.
+            return []
+        else:
+            try:
+                field = obj.model._meta.get_field(field_name)
+            except FieldDoesNotExist:
+                # If we can't find a field on the model that matches, it could
+                # be an extra field on the form.
+                return []
+            else:
+                if (
+                    isinstance(field, models.ManyToManyField)
+                    and not field.remote_field.through._meta.auto_created
+                ):
+                    return [
+                        checks.Error(
+                            "The value of '%s' cannot include the ManyToManyField "
+                            "'%s', because that field manually specifies a "
+                            "relationship model." % (label, field_name),
+                            obj=obj.__class__,
+                            id="admin.E013",
+                        )
+                    ]
+                else:
+                    return []
+
+    def _check_exclude(self, obj):
+        """Check that exclude is a sequence without duplicates."""
+
+        if obj.exclude is None:  # default value is None
+            return []
+        elif not isinstance(obj.exclude, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="exclude", obj=obj, id="admin.E014"
+            )
+        elif len(obj.exclude) > len(set(obj.exclude)):
+            return [
+                checks.Error(
+                    "The value of 'exclude' contains duplicate field(s).",
+                    obj=obj.__class__,
+                    id="admin.E015",
+                )
+            ]
+        else:
+            return []
+
+    def _check_form(self, obj):
+        """Check that form subclasses BaseModelForm."""
+        if not _issubclass(obj.form, BaseModelForm):
+            return must_inherit_from(
+                parent="BaseModelForm", option="form", obj=obj, id="admin.E016"
+            )
+        else:
+            return []
+
+    def _check_filter_vertical(self, obj):
+        """Check that filter_vertical is a sequence of field names."""
+        if not isinstance(obj.filter_vertical, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="filter_vertical", obj=obj, id="admin.E017"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_filter_item(
+                        obj, field_name, "filter_vertical[%d]" % index
+                    )
+                    for index, field_name in enumerate(obj.filter_vertical)
+                )
+            )
+
+    def _check_filter_horizontal(self, obj):
+        """Check that filter_horizontal is a sequence of field names."""
+        if not isinstance(obj.filter_horizontal, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="filter_horizontal", obj=obj, id="admin.E018"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_filter_item(
+                        obj, field_name, "filter_horizontal[%d]" % index
+                    )
+                    for index, field_name in enumerate(obj.filter_horizontal)
+                )
+            )
+
+    def _check_filter_item(self, obj, field_name, label):
+        """Check one item of `filter_vertical` or `filter_horizontal`, i.e.
+        check that given field exists and is a ManyToManyField."""
+
+        try:
+            field = obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E019"
+            )
+        else:
+            if not field.many_to_many or isinstance(field, models.ManyToManyRel):
+                return must_be(
+                    "a many-to-many field", option=label, obj=obj, id="admin.E020"
+                )
+            elif not field.remote_field.through._meta.auto_created:
+                return [
+                    checks.Error(
+                        f"The value of '{label}' cannot include the ManyToManyField "
+                        f"'{field_name}', because that field manually specifies a "
+                        f"relationship model.",
+                        obj=obj.__class__,
+                        id="admin.E013",
+                    )
+                ]
+            else:
+                return []
+
+    def _check_radio_fields(self, obj):
+        """Check that `radio_fields` is a dictionary."""
+        if not isinstance(obj.radio_fields, dict):
+            return must_be(
+                "a dictionary", option="radio_fields", obj=obj, id="admin.E021"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_radio_fields_key(obj, field_name, "radio_fields")
+                    + self._check_radio_fields_value(
+                        obj, val, 'radio_fields["%s"]' % field_name
+                    )
+                    for field_name, val in obj.radio_fields.items()
+                )
+            )
+
+    def _check_radio_fields_key(self, obj, field_name, label):
+        """Check that a key of `radio_fields` dictionary is name of existing
+        field and that the field is a ForeignKey or has `choices` defined."""
+
+        try:
+            field = obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E022"
+            )
+        else:
+            if not (isinstance(field, models.ForeignKey) or field.choices):
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to '%s', which is not an "
+                        "instance of ForeignKey, and does not have a 'choices' "
+                        "definition." % (label, field_name),
+                        obj=obj.__class__,
+                        id="admin.E023",
+                    )
+                ]
+            else:
+                return []
+
+    def _check_radio_fields_value(self, obj, val, label):
+        """Check type of a value of `radio_fields` dictionary."""
+
+        from django.contrib.admin.options import HORIZONTAL, VERTICAL
+
+        if val not in (HORIZONTAL, VERTICAL):
+            return [
+                checks.Error(
+                    "The value of '%s' must be either admin.HORIZONTAL or "
+                    "admin.VERTICAL." % label,
+                    obj=obj.__class__,
+                    id="admin.E024",
+                )
+            ]
+        else:
+            return []
+
+    def _check_view_on_site_url(self, obj):
+        if not callable(obj.view_on_site) and not isinstance(obj.view_on_site, bool):
+            return [
+                checks.Error(
+                    "The value of 'view_on_site' must be a callable or a boolean "
+                    "value.",
+                    obj=obj.__class__,
+                    id="admin.E025",
+                )
+            ]
+        else:
+            return []
+
+    def _check_prepopulated_fields(self, obj):
+        """Check that `prepopulated_fields` is a dictionary containing allowed
+        field types."""
+        if not isinstance(obj.prepopulated_fields, dict):
+            return must_be(
+                "a dictionary", option="prepopulated_fields", obj=obj, id="admin.E026"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_prepopulated_fields_key(
+                        obj, field_name, "prepopulated_fields"
+                    )
+                    + self._check_prepopulated_fields_value(
+                        obj, val, 'prepopulated_fields["%s"]' % field_name
+                    )
+                    for field_name, val in obj.prepopulated_fields.items()
+                )
+            )
+
+    def _check_prepopulated_fields_key(self, obj, field_name, label):
+        """Check a key of `prepopulated_fields` dictionary, i.e. check that it
+        is a name of existing field and the field is one of the allowed types.
+        """
+
+        try:
+            field = obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E027"
+            )
+        else:
+            if isinstance(
+                field, (models.DateTimeField, models.ForeignKey, models.ManyToManyField)
+            ):
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to '%s', which must not be a "
+                        "DateTimeField, a ForeignKey, a OneToOneField, or a "
+                        "ManyToManyField." % (label, field_name),
+                        obj=obj.__class__,
+                        id="admin.E028",
+                    )
+                ]
+            else:
+                return []
+
+    def _check_prepopulated_fields_value(self, obj, val, label):
+        """Check a value of `prepopulated_fields` dictionary, i.e. it's an
+        iterable of existing fields."""
+
+        if not isinstance(val, (list, tuple)):
+            return must_be("a list or tuple", option=label, obj=obj, id="admin.E029")
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_prepopulated_fields_value_item(
+                        obj, subfield_name, "%s[%r]" % (label, index)
+                    )
+                    for index, subfield_name in enumerate(val)
+                )
+            )
+
+    def _check_prepopulated_fields_value_item(self, obj, field_name, label):
+        """For `prepopulated_fields` equal to {"slug": ("title",)},
+        `field_name` is "title"."""
+
+        try:
+            obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E030"
+            )
+        else:
+            return []
+
+    def _check_ordering(self, obj):
+        """Check that ordering refers to existing fields or is random."""
+
+        # ordering = None
+        if obj.ordering is None:  # The default value is None
+            return []
+        elif not isinstance(obj.ordering, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="ordering", obj=obj, id="admin.E031"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_ordering_item(obj, field_name, "ordering[%d]" % index)
+                    for index, field_name in enumerate(obj.ordering)
+                )
+            )
+
+    def _check_ordering_item(self, obj, field_name, label):
+        """Check that `ordering` refers to existing fields."""
+        if isinstance(field_name, (Combinable, models.OrderBy)):
+            if not isinstance(field_name, models.OrderBy):
+                field_name = field_name.asc()
+            if isinstance(field_name.expression, models.F):
+                field_name = field_name.expression.name
+            else:
+                return []
+        if field_name == "?" and len(obj.ordering) != 1:
+            return [
+                checks.Error(
+                    "The value of 'ordering' has the random ordering marker '?', "
+                    "but contains other fields as well.",
+                    hint='Either remove the "?", or remove the other fields.',
+                    obj=obj.__class__,
+                    id="admin.E032",
+                )
+            ]
+        elif field_name == "?":
+            return []
+        elif LOOKUP_SEP in field_name:
+            # Skip ordering in the format field1__field2 (FIXME: checking
+            # this format would be nice, but it's a little fiddly).
+            return []
+        else:
+            field_name = field_name.removeprefix("-")
+            if field_name == "pk":
+                return []
+            try:
+                obj.model._meta.get_field(field_name)
+            except FieldDoesNotExist:
+                return refer_to_missing_field(
+                    field=field_name, option=label, obj=obj, id="admin.E033"
+                )
+            else:
+                return []
+
+    def _check_readonly_fields(self, obj):
+        """Check that readonly_fields refers to proper attribute or field."""
+
+        if obj.readonly_fields == ():
+            return []
+        elif not isinstance(obj.readonly_fields, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="readonly_fields", obj=obj, id="admin.E034"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_readonly_fields_item(
+                        obj, field_name, "readonly_fields[%d]" % index
+                    )
+                    for index, field_name in enumerate(obj.readonly_fields)
+                )
+            )
+
+    def _check_readonly_fields_item(self, obj, field_name, label):
+        if callable(field_name):
+            return []
+        elif hasattr(obj, field_name):
+            return []
+        elif hasattr(obj.model, field_name):
+            return []
+        else:
+            try:
+                obj.model._meta.get_field(field_name)
+            except FieldDoesNotExist:
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to '%s', which is not a callable, "
+                        "an attribute of '%s', or an attribute of '%s'."
+                        % (
+                            label,
+                            field_name,
+                            obj.__class__.__name__,
+                            obj.model._meta.label,
+                        ),
+                        obj=obj.__class__,
+                        id="admin.E035",
+                    )
+                ]
+            else:
+                return []
+
+
+class ModelAdminChecks(BaseModelAdminChecks):
+    def check(self, admin_obj, **kwargs):
+        return [
+            *super().check(admin_obj),
+            *self._check_save_as(admin_obj),
+            *self._check_save_on_top(admin_obj),
+            *self._check_inlines(admin_obj),
+            *self._check_list_display(admin_obj),
+            *self._check_list_display_links(admin_obj),
+            *self._check_list_filter(admin_obj),
+            *self._check_list_select_related(admin_obj),
+            *self._check_list_per_page(admin_obj),
+            *self._check_list_max_show_all(admin_obj),
+            *self._check_list_editable(admin_obj),
+            *self._check_search_fields(admin_obj),
+            *self._check_date_hierarchy(admin_obj),
+            *self._check_actions(admin_obj),
+        ]
+
+    def _check_save_as(self, obj):
+        """Check save_as is a boolean."""
+
+        if not isinstance(obj.save_as, bool):
+            return must_be("a boolean", option="save_as", obj=obj, id="admin.E101")
+        else:
+            return []
+
+    def _check_save_on_top(self, obj):
+        """Check save_on_top is a boolean."""
+
+        if not isinstance(obj.save_on_top, bool):
+            return must_be("a boolean", option="save_on_top", obj=obj, id="admin.E102")
+        else:
+            return []
+
+    def _check_inlines(self, obj):
+        """Check all inline model admin classes."""
+
+        if not isinstance(obj.inlines, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="inlines", obj=obj, id="admin.E103"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_inlines_item(obj, item, "inlines[%d]" % index)
+                    for index, item in enumerate(obj.inlines)
+                )
+            )
+
+    def _check_inlines_item(self, obj, inline, label):
+        """Check one inline model admin."""
+        try:
+            inline_label = inline.__module__ + "." + inline.__name__
+        except AttributeError:
+            return [
+                checks.Error(
+                    "'%s' must inherit from 'InlineModelAdmin'." % obj,
+                    obj=obj.__class__,
+                    id="admin.E104",
+                )
+            ]
+
+        from django.contrib.admin.options import InlineModelAdmin
+
+        if not _issubclass(inline, InlineModelAdmin):
+            return [
+                checks.Error(
+                    "'%s' must inherit from 'InlineModelAdmin'." % inline_label,
+                    obj=obj.__class__,
+                    id="admin.E104",
+                )
+            ]
+        elif not inline.model:
+            return [
+                checks.Error(
+                    "'%s' must have a 'model' attribute." % inline_label,
+                    obj=obj.__class__,
+                    id="admin.E105",
+                )
+            ]
+        elif not _issubclass(inline.model, models.Model):
+            return must_be(
+                "a Model", option="%s.model" % inline_label, obj=obj, id="admin.E106"
+            )
+        else:
+            return inline(obj.model, obj.admin_site).check()
+
+    def _check_list_display(self, obj):
+        """Check that list_display only contains fields or usable attributes."""
+
+        if not isinstance(obj.list_display, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="list_display", obj=obj, id="admin.E107"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_list_display_item(obj, item, "list_display[%d]" % index)
+                    for index, item in enumerate(obj.list_display)
+                )
+            )
+
+    def _check_list_display_item(self, obj, item, label):
+        if callable(item):
+            return []
+        elif hasattr(obj, item):
+            return []
+        try:
+            field = obj.model._meta.get_field(item)
+        except FieldDoesNotExist:
+            try:
+                field = getattr(obj.model, item)
+            except AttributeError:
+                try:
+                    field = get_fields_from_path(obj.model, item)[-1]
+                except (FieldDoesNotExist, NotRelationField):
+                    return [
+                        checks.Error(
+                            f"The value of '{label}' refers to '{item}', which is not "
+                            f"a callable or attribute of '{obj.__class__.__name__}', "
+                            "or an attribute, method, or field on "
+                            f"'{obj.model._meta.label}'.",
+                            obj=obj.__class__,
+                            id="admin.E108",
+                        )
+                    ]
+        if (
+            getattr(field, "is_relation", False)
+            and (field.many_to_many or field.one_to_many)
+        ) or (getattr(field, "rel", None) and field.rel.field.many_to_one):
+            return [
+                checks.Error(
+                    f"The value of '{label}' must not be a many-to-many field or a "
+                    f"reverse foreign key.",
+                    obj=obj.__class__,
+                    id="admin.E109",
+                )
+            ]
+        return []
+
+    def _check_list_display_links(self, obj):
+        """Check that list_display_links is a unique subset of list_display."""
+        from django.contrib.admin.options import ModelAdmin
+
+        if obj.list_display_links is None:
+            return []
+        elif not isinstance(obj.list_display_links, (list, tuple)):
+            return must_be(
+                "a list, a tuple, or None",
+                option="list_display_links",
+                obj=obj,
+                id="admin.E110",
+            )
+        # Check only if ModelAdmin.get_list_display() isn't overridden.
+        elif obj.get_list_display.__func__ is ModelAdmin.get_list_display:
+            return list(
+                chain.from_iterable(
+                    self._check_list_display_links_item(
+                        obj, field_name, "list_display_links[%d]" % index
+                    )
+                    for index, field_name in enumerate(obj.list_display_links)
+                )
+            )
+        return []
+
+    def _check_list_display_links_item(self, obj, field_name, label):
+        if field_name not in obj.list_display:
+            return [
+                checks.Error(
+                    "The value of '%s' refers to '%s', which is not defined in "
+                    "'list_display'." % (label, field_name),
+                    obj=obj.__class__,
+                    id="admin.E111",
+                )
+            ]
+        else:
+            return []
+
+    def _check_list_filter(self, obj):
+        if not isinstance(obj.list_filter, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="list_filter", obj=obj, id="admin.E112"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_list_filter_item(obj, item, "list_filter[%d]" % index)
+                    for index, item in enumerate(obj.list_filter)
+                )
+            )
+
+    def _check_list_filter_item(self, obj, item, label):
+        """
+        Check one item of `list_filter`, i.e. check if it is one of three options:
+        1. 'field' -- a basic field filter, possibly w/ relationships (e.g.
+           'field__rel')
+        2. ('field', SomeFieldListFilter) - a field-based list filter class
+        3. SomeListFilter - a non-field list filter class
+        """
+        from django.contrib.admin import FieldListFilter, ListFilter
+
+        if callable(item) and not isinstance(item, models.Field):
+            # If item is option 3, it should be a ListFilter...
+            if not _issubclass(item, ListFilter):
+                return must_inherit_from(
+                    parent="ListFilter", option=label, obj=obj, id="admin.E113"
+                )
+            # ...  but not a FieldListFilter.
+            elif issubclass(item, FieldListFilter):
+                return [
+                    checks.Error(
+                        "The value of '%s' must not inherit from 'FieldListFilter'."
+                        % label,
+                        obj=obj.__class__,
+                        id="admin.E114",
+                    )
+                ]
+            else:
+                return []
+        elif isinstance(item, (tuple, list)):
+            # item is option #2
+            field, list_filter_class = item
+            if not _issubclass(list_filter_class, FieldListFilter):
+                return must_inherit_from(
+                    parent="FieldListFilter",
+                    option="%s[1]" % label,
+                    obj=obj,
+                    id="admin.E115",
+                )
+            else:
+                return []
+        else:
+            # item is option #1
+            field = item
+
+            # Validate the field string
+            try:
+                get_fields_from_path(obj.model, field)
+            except (NotRelationField, FieldDoesNotExist):
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to '%s', which does not refer to a "
+                        "Field." % (label, field),
+                        obj=obj.__class__,
+                        id="admin.E116",
+                    )
+                ]
+            else:
+                return []
+
+    def _check_list_select_related(self, obj):
+        """Check that list_select_related is a boolean, a list or a tuple."""
+
+        if not isinstance(obj.list_select_related, (bool, list, tuple)):
+            return must_be(
+                "a boolean, tuple or list",
+                option="list_select_related",
+                obj=obj,
+                id="admin.E117",
+            )
+        else:
+            return []
+
+    def _check_list_per_page(self, obj):
+        """Check that list_per_page is an integer."""
+
+        if not isinstance(obj.list_per_page, int):
+            return must_be(
+                "an integer", option="list_per_page", obj=obj, id="admin.E118"
+            )
+        else:
+            return []
+
+    def _check_list_max_show_all(self, obj):
+        """Check that list_max_show_all is an integer."""
+
+        if not isinstance(obj.list_max_show_all, int):
+            return must_be(
+                "an integer", option="list_max_show_all", obj=obj, id="admin.E119"
+            )
+        else:
+            return []
+
+    def _check_list_editable(self, obj):
+        """Check that list_editable is a sequence of editable fields from
+        list_display without first element."""
+
+        if not isinstance(obj.list_editable, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="list_editable", obj=obj, id="admin.E120"
+            )
+        else:
+            return list(
+                chain.from_iterable(
+                    self._check_list_editable_item(
+                        obj, item, "list_editable[%d]" % index
+                    )
+                    for index, item in enumerate(obj.list_editable)
+                )
+            )
+
+    def _check_list_editable_item(self, obj, field_name, label):
+        try:
+            field = obj.model._meta.get_field(field_name)
+        except FieldDoesNotExist:
+            return refer_to_missing_field(
+                field=field_name, option=label, obj=obj, id="admin.E121"
+            )
+        else:
+            if field_name not in obj.list_display:
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to '%s', which is not "
+                        "contained in 'list_display'." % (label, field_name),
+                        obj=obj.__class__,
+                        id="admin.E122",
+                    )
+                ]
+            elif obj.list_display_links and field_name in obj.list_display_links:
+                return [
+                    checks.Error(
+                        "The value of '%s' cannot be in both 'list_editable' and "
+                        "'list_display_links'." % field_name,
+                        obj=obj.__class__,
+                        id="admin.E123",
+                    )
+                ]
+            # If list_display[0] is in list_editable, check that
+            # list_display_links is set. See #22792 and #26229 for use cases.
+            elif (
+                obj.list_display[0] == field_name
+                and not obj.list_display_links
+                and obj.list_display_links is not None
+            ):
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to the first field in 'list_display' "
+                        "('%s'), which cannot be used unless 'list_display_links' is "
+                        "set." % (label, obj.list_display[0]),
+                        obj=obj.__class__,
+                        id="admin.E124",
+                    )
+                ]
+            elif not field.editable or field.primary_key:
+                return [
+                    checks.Error(
+                        "The value of '%s' refers to '%s', which is not editable "
+                        "through the admin." % (label, field_name),
+                        obj=obj.__class__,
+                        id="admin.E125",
+                    )
+                ]
+            else:
+                return []
+
+    def _check_search_fields(self, obj):
+        """Check search_fields is a sequence."""
+
+        if not isinstance(obj.search_fields, (list, tuple)):
+            return must_be(
+                "a list or tuple", option="search_fields", obj=obj, id="admin.E126"
+            )
+        else:
+            return []
+
+    def _check_date_hierarchy(self, obj):
+        """Check that date_hierarchy refers to DateField or DateTimeField."""
+
+        if obj.date_hierarchy is None:
+            return []
+        else:
+            try:
+                field = get_fields_from_path(obj.model, obj.date_hierarchy)[-1]
+            except (NotRelationField, FieldDoesNotExist):
+                return [
+                    checks.Error(
+                        "The value of 'date_hierarchy' refers to '%s', which "
+                        "does not refer to a Field." % obj.date_hierarchy,
+                        obj=obj.__class__,
+                        id="admin.E127",
+                    )
+                ]
+            else:
+                if field.get_internal_type() not in {"DateField", "DateTimeField"}:
+                    return must_be(
+                        "a DateField or DateTimeField",
+                        option="date_hierarchy",
+                        obj=obj,
+                        id="admin.E128",
+                    )
+                else:
+                    return []
+
+    def _check_actions(self, obj):
+        errors = []
+        actions = obj._get_base_actions()
+
+        # Actions with an allowed_permission attribute require the ModelAdmin
+        # to implement a has_<perm>_permission() method for each permission.
+        for func, name, _ in actions:
+            if not hasattr(func, "allowed_permissions"):
+                continue
+            for permission in func.allowed_permissions:
+                method_name = "has_%s_permission" % permission
+                if not hasattr(obj, method_name):
+                    errors.append(
+                        checks.Error(
+                            "%s must define a %s() method for the %s action."
+                            % (
+                                obj.__class__.__name__,
+                                method_name,
+                                func.__name__,
+                            ),
+                            obj=obj.__class__,
+                            id="admin.E129",
+                        )
+                    )
+        # Names need to be unique.
+        names = collections.Counter(name for _, name, _ in actions)
+        for name, count in names.items():
+            if count > 1:
+                errors.append(
+                    checks.Error(
+                        "__name__ attributes of actions defined in %s must be "
+                        "unique. Name %r is not unique."
+                        % (
+                            obj.__class__.__name__,
+                            name,
+                        ),
+                        obj=obj.__class__,
+                        id="admin.E130",
+                    )
+                )
+        return errors
+
+
+class InlineModelAdminChecks(BaseModelAdminChecks):
+    def check(self, inline_obj, **kwargs):
+        parent_model = inline_obj.parent_model
+        return [
+            *super().check(inline_obj),
+            *self._check_relation(inline_obj, parent_model),
+            *self._check_exclude_of_parent_model(inline_obj, parent_model),
+            *self._check_extra(inline_obj),
+            *self._check_max_num(inline_obj),
+            *self._check_min_num(inline_obj),
+            *self._check_formset(inline_obj),
+        ]
+
+    def _check_exclude_of_parent_model(self, obj, parent_model):
+        # Do not perform more specific checks if the base checks result in an
+        # error.
+        errors = super()._check_exclude(obj)
+        if errors:
+            return []
+
+        # Skip if `fk_name` is invalid.
+        if self._check_relation(obj, parent_model):
+            return []
+
+        if obj.exclude is None:
+            return []
+
+        fk = _get_foreign_key(parent_model, obj.model, fk_name=obj.fk_name)
+        if fk.name in obj.exclude:
+            return [
+                checks.Error(
+                    "Cannot exclude the field '%s', because it is the foreign key "
+                    "to the parent model '%s'."
+                    % (
+                        fk.name,
+                        parent_model._meta.label,
+                    ),
+                    obj=obj.__class__,
+                    id="admin.E201",
+                )
+            ]
+        else:
+            return []
+
+    def _check_relation(self, obj, parent_model):
+        try:
+            _get_foreign_key(parent_model, obj.model, fk_name=obj.fk_name)
+        except ValueError as e:
+            return [checks.Error(e.args[0], obj=obj.__class__, id="admin.E202")]
+        else:
+            return []
+
+    def _check_extra(self, obj):
+        """Check that extra is an integer."""
+
+        if not isinstance(obj.extra, int):
+            return must_be("an integer", option="extra", obj=obj, id="admin.E203")
+        else:
+            return []
+
+    def _check_max_num(self, obj):
+        """Check that max_num is an integer."""
+
+        if obj.max_num is None:
+            return []
+        elif not isinstance(obj.max_num, int):
+            return must_be("an integer", option="max_num", obj=obj, id="admin.E204")
+        else:
+            return []
+
+    def _check_min_num(self, obj):
+        """Check that min_num is an integer."""
+
+        if obj.min_num is None:
+            return []
+        elif not isinstance(obj.min_num, int):
+            return must_be("an integer", option="min_num", obj=obj, id="admin.E205")
+        else:
+            return []
+
+    def _check_formset(self, obj):
+        """Check formset is a subclass of BaseModelFormSet."""
+
+        if not _issubclass(obj.formset, BaseModelFormSet):
+            return must_inherit_from(
+                parent="BaseModelFormSet", option="formset", obj=obj, id="admin.E206"
+            )
+        else:
+            return []
+
+
+def must_be(type, option, obj, id):
+    return [
+        checks.Error(
+            "The value of '%s' must be %s." % (option, type),
+            obj=obj.__class__,
+            id=id,
+        ),
+    ]
+
+
+def must_inherit_from(parent, option, obj, id):
+    return [
+        checks.Error(
+            "The value of '%s' must inherit from '%s'." % (option, parent),
+            obj=obj.__class__,
+            id=id,
+        ),
+    ]
+
+
+def refer_to_missing_field(field, option, obj, id):
+    return [
+        checks.Error(
+            "The value of '%s' refers to '%s', which is not a field of '%s'."
+            % (option, field, obj.model._meta.label),
+            obj=obj.__class__,
+            id=id,
+        ),
+    ]

+ 0 - 20
static/admin/css/fonts.css

@@ -1,20 +0,0 @@
-@font-face {
-    font-family: 'Roboto';
-    src: url('../fonts/Roboto-Bold-webfont.woff');
-    font-weight: 700;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'Roboto';
-    src: url('../fonts/Roboto-Regular-webfont.woff');
-    font-weight: 400;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'Roboto';
-    src: url('../fonts/Roboto-Light-webfont.woff');
-    font-weight: 300;
-    font-style: normal;
-}

+ 111 - 0
static/admin/decorators.py

@@ -0,0 +1,111 @@
+def action(function=None, *, permissions=None, description=None):
+    """
+    Conveniently add attributes to an action function::
+
+        @admin.action(
+            permissions=['publish'],
+            description='Mark selected stories as published',
+        )
+        def make_published(self, request, queryset):
+            queryset.update(status='p')
+
+    This is equivalent to setting some attributes (with the original, longer
+    names) on the function directly::
+
+        def make_published(self, request, queryset):
+            queryset.update(status='p')
+        make_published.allowed_permissions = ['publish']
+        make_published.short_description = 'Mark selected stories as published'
+    """
+
+    def decorator(func):
+        if permissions is not None:
+            func.allowed_permissions = permissions
+        if description is not None:
+            func.short_description = description
+        return func
+
+    if function is None:
+        return decorator
+    else:
+        return decorator(function)
+
+
+def display(
+    function=None, *, boolean=None, ordering=None, description=None, empty_value=None
+):
+    """
+    Conveniently add attributes to a display function::
+
+        @admin.display(
+            boolean=True,
+            ordering='-publish_date',
+            description='Is Published?',
+        )
+        def is_published(self, obj):
+            return obj.publish_date is not None
+
+    This is equivalent to setting some attributes (with the original, longer
+    names) on the function directly::
+
+        def is_published(self, obj):
+            return obj.publish_date is not None
+        is_published.boolean = True
+        is_published.admin_order_field = '-publish_date'
+        is_published.short_description = 'Is Published?'
+    """
+
+    def decorator(func):
+        if boolean is not None and empty_value is not None:
+            raise ValueError(
+                "The boolean and empty_value arguments to the @display "
+                "decorator are mutually exclusive."
+            )
+        if boolean is not None:
+            func.boolean = boolean
+        if ordering is not None:
+            func.admin_order_field = ordering
+        if description is not None:
+            func.short_description = description
+        if empty_value is not None:
+            func.empty_value_display = empty_value
+        return func
+
+    if function is None:
+        return decorator
+    else:
+        return decorator(function)
+
+
+def register(*models, site=None):
+    """
+    Register the given model(s) classes and wrapped ModelAdmin class with
+    admin site:
+
+    @register(Author)
+    class AuthorAdmin(admin.ModelAdmin):
+        pass
+
+    The `site` kwarg is an admin site to use instead of the default admin site.
+    """
+    from django.contrib.admin import ModelAdmin
+    from django.contrib.admin.sites import AdminSite
+    from django.contrib.admin.sites import site as default_site
+
+    def _model_admin_wrapper(admin_class):
+        if not models:
+            raise ValueError("At least one model must be passed to register.")
+
+        admin_site = site or default_site
+
+        if not isinstance(admin_site, AdminSite):
+            raise ValueError("site must subclass AdminSite")
+
+        if not issubclass(admin_class, ModelAdmin):
+            raise ValueError("Wrapped class must subclass ModelAdmin.")
+
+        admin_site.register(models, admin_class=admin_class)
+
+        return admin_class
+
+    return _model_admin_wrapper

+ 25 - 0
static/admin/exceptions.py

@@ -0,0 +1,25 @@
+from django.core.exceptions import SuspiciousOperation
+
+
+class DisallowedModelAdminLookup(SuspiciousOperation):
+    """Invalid filter was passed to admin view via URL querystring"""
+
+    pass
+
+
+class DisallowedModelAdminToField(SuspiciousOperation):
+    """Invalid to_field was passed to admin view via URL query string"""
+
+    pass
+
+
+class AlreadyRegistered(Exception):
+    """The model is already registered."""
+
+    pass
+
+
+class NotRegistered(Exception):
+    """The model is not registered."""
+
+    pass

+ 716 - 0
static/admin/filters.py

@@ -0,0 +1,716 @@
+"""
+This encapsulates the logic for displaying filters in the Django admin.
+Filters are specified in models with the "list_filter" option.
+
+Each filter subclass knows how to display a filter for a field that passes a
+certain test -- e.g. being a DateField or ForeignKey.
+"""
+
+import datetime
+
+from django.contrib.admin.exceptions import NotRegistered
+from django.contrib.admin.options import IncorrectLookupParameters
+from django.contrib.admin.utils import (
+    build_q_object_from_lookup_parameters,
+    get_last_value_from_parameters,
+    get_model_from_relation,
+    prepare_lookup_value,
+    reverse_field_path,
+)
+from django.core.exceptions import ImproperlyConfigured, ValidationError
+from django.db import models
+from django.utils import timezone
+from django.utils.translation import gettext_lazy as _
+
+
+class ListFilter:
+    title = None  # Human-readable title to appear in the right sidebar.
+    template = "admin/filter.html"
+
+    def __init__(self, request, params, model, model_admin):
+        self.request = request
+        # This dictionary will eventually contain the request's query string
+        # parameters actually used by this filter.
+        self.used_parameters = {}
+        if self.title is None:
+            raise ImproperlyConfigured(
+                "The list filter '%s' does not specify a 'title'."
+                % self.__class__.__name__
+            )
+
+    def has_output(self):
+        """
+        Return True if some choices would be output for this filter.
+        """
+        raise NotImplementedError(
+            "subclasses of ListFilter must provide a has_output() method"
+        )
+
+    def choices(self, changelist):
+        """
+        Return choices ready to be output in the template.
+
+        `changelist` is the ChangeList to be displayed.
+        """
+        raise NotImplementedError(
+            "subclasses of ListFilter must provide a choices() method"
+        )
+
+    def queryset(self, request, queryset):
+        """
+        Return the filtered queryset.
+        """
+        raise NotImplementedError(
+            "subclasses of ListFilter must provide a queryset() method"
+        )
+
+    def expected_parameters(self):
+        """
+        Return the list of parameter names that are expected from the
+        request's query string and that will be used by this filter.
+        """
+        raise NotImplementedError(
+            "subclasses of ListFilter must provide an expected_parameters() method"
+        )
+
+
+class FacetsMixin:
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        raise NotImplementedError(
+            "subclasses of FacetsMixin must provide a get_facet_counts() method."
+        )
+
+    def get_facet_queryset(self, changelist):
+        filtered_qs = changelist.get_queryset(
+            self.request, exclude_parameters=self.expected_parameters()
+        )
+        return filtered_qs.aggregate(
+            **self.get_facet_counts(changelist.pk_attname, filtered_qs)
+        )
+
+
+class SimpleListFilter(FacetsMixin, ListFilter):
+    # The parameter that should be used in the query string for that filter.
+    parameter_name = None
+
+    def __init__(self, request, params, model, model_admin):
+        super().__init__(request, params, model, model_admin)
+        if self.parameter_name is None:
+            raise ImproperlyConfigured(
+                "The list filter '%s' does not specify a 'parameter_name'."
+                % self.__class__.__name__
+            )
+        if self.parameter_name in params:
+            value = params.pop(self.parameter_name)
+            self.used_parameters[self.parameter_name] = value[-1]
+        lookup_choices = self.lookups(request, model_admin)
+        if lookup_choices is None:
+            lookup_choices = ()
+        self.lookup_choices = list(lookup_choices)
+
+    def has_output(self):
+        return len(self.lookup_choices) > 0
+
+    def value(self):
+        """
+        Return the value (in string format) provided in the request's
+        query string for this filter, if any, or None if the value wasn't
+        provided.
+        """
+        return self.used_parameters.get(self.parameter_name)
+
+    def lookups(self, request, model_admin):
+        """
+        Must be overridden to return a list of tuples (value, verbose value)
+        """
+        raise NotImplementedError(
+            "The SimpleListFilter.lookups() method must be overridden to "
+            "return a list of tuples (value, verbose value)."
+        )
+
+    def expected_parameters(self):
+        return [self.parameter_name]
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        original_value = self.used_parameters.get(self.parameter_name)
+        counts = {}
+        for i, choice in enumerate(self.lookup_choices):
+            self.used_parameters[self.parameter_name] = choice[0]
+            lookup_qs = self.queryset(self.request, filtered_qs)
+            if lookup_qs is not None:
+                counts[f"{i}__c"] = models.Count(
+                    pk_attname,
+                    filter=models.Q(pk__in=lookup_qs),
+                )
+        self.used_parameters[self.parameter_name] = original_value
+        return counts
+
+    def choices(self, changelist):
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        yield {
+            "selected": self.value() is None,
+            "query_string": changelist.get_query_string(remove=[self.parameter_name]),
+            "display": _("All"),
+        }
+        for i, (lookup, title) in enumerate(self.lookup_choices):
+            if add_facets:
+                if (count := facet_counts.get(f"{i}__c", -1)) != -1:
+                    title = f"{title} ({count})"
+                else:
+                    title = f"{title} (-)"
+            yield {
+                "selected": self.value() == str(lookup),
+                "query_string": changelist.get_query_string(
+                    {self.parameter_name: lookup}
+                ),
+                "display": title,
+            }
+
+
+class FieldListFilter(FacetsMixin, ListFilter):
+    _field_list_filters = []
+    _take_priority_index = 0
+    list_separator = ","
+
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        self.field = field
+        self.field_path = field_path
+        self.title = getattr(field, "verbose_name", field_path)
+        super().__init__(request, params, model, model_admin)
+        for p in self.expected_parameters():
+            if p in params:
+                value = params.pop(p)
+                self.used_parameters[p] = prepare_lookup_value(
+                    p, value, self.list_separator
+                )
+
+    def has_output(self):
+        return True
+
+    def queryset(self, request, queryset):
+        try:
+            q_object = build_q_object_from_lookup_parameters(self.used_parameters)
+            return queryset.filter(q_object)
+        except (ValueError, ValidationError) as e:
+            # Fields may raise a ValueError or ValidationError when converting
+            # the parameters to the correct type.
+            raise IncorrectLookupParameters(e)
+
+    @classmethod
+    def register(cls, test, list_filter_class, take_priority=False):
+        if take_priority:
+            # This is to allow overriding the default filters for certain types
+            # of fields with some custom filters. The first found in the list
+            # is used in priority.
+            cls._field_list_filters.insert(
+                cls._take_priority_index, (test, list_filter_class)
+            )
+            cls._take_priority_index += 1
+        else:
+            cls._field_list_filters.append((test, list_filter_class))
+
+    @classmethod
+    def create(cls, field, request, params, model, model_admin, field_path):
+        for test, list_filter_class in cls._field_list_filters:
+            if test(field):
+                return list_filter_class(
+                    field, request, params, model, model_admin, field_path=field_path
+                )
+
+
+class RelatedFieldListFilter(FieldListFilter):
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        other_model = get_model_from_relation(field)
+        self.lookup_kwarg = "%s__%s__exact" % (field_path, field.target_field.name)
+        self.lookup_kwarg_isnull = "%s__isnull" % field_path
+        self.lookup_val = params.get(self.lookup_kwarg)
+        self.lookup_val_isnull = get_last_value_from_parameters(
+            params, self.lookup_kwarg_isnull
+        )
+        super().__init__(field, request, params, model, model_admin, field_path)
+        self.lookup_choices = self.field_choices(field, request, model_admin)
+        if hasattr(field, "verbose_name"):
+            self.lookup_title = field.verbose_name
+        else:
+            self.lookup_title = other_model._meta.verbose_name
+        self.title = self.lookup_title
+        self.empty_value_display = model_admin.get_empty_value_display()
+
+    @property
+    def include_empty_choice(self):
+        """
+        Return True if a "(None)" choice should be included, which filters
+        out everything except empty relationships.
+        """
+        return self.field.null or (self.field.is_relation and self.field.many_to_many)
+
+    def has_output(self):
+        if self.include_empty_choice:
+            extra = 1
+        else:
+            extra = 0
+        return len(self.lookup_choices) + extra > 1
+
+    def expected_parameters(self):
+        return [self.lookup_kwarg, self.lookup_kwarg_isnull]
+
+    def field_admin_ordering(self, field, request, model_admin):
+        """
+        Return the model admin's ordering for related field, if provided.
+        """
+        try:
+            related_admin = model_admin.admin_site.get_model_admin(
+                field.remote_field.model
+            )
+        except NotRegistered:
+            return ()
+        else:
+            return related_admin.get_ordering(request)
+
+    def field_choices(self, field, request, model_admin):
+        ordering = self.field_admin_ordering(field, request, model_admin)
+        return field.get_choices(include_blank=False, ordering=ordering)
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        counts = {
+            f"{pk_val}__c": models.Count(
+                pk_attname, filter=models.Q(**{self.lookup_kwarg: pk_val})
+            )
+            for pk_val, _ in self.lookup_choices
+        }
+        if self.include_empty_choice:
+            counts["__c"] = models.Count(
+                pk_attname, filter=models.Q(**{self.lookup_kwarg_isnull: True})
+            )
+        return counts
+
+    def choices(self, changelist):
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        yield {
+            "selected": self.lookup_val is None and not self.lookup_val_isnull,
+            "query_string": changelist.get_query_string(
+                remove=[self.lookup_kwarg, self.lookup_kwarg_isnull]
+            ),
+            "display": _("All"),
+        }
+        count = None
+        for pk_val, val in self.lookup_choices:
+            if add_facets:
+                count = facet_counts[f"{pk_val}__c"]
+                val = f"{val} ({count})"
+            yield {
+                "selected": self.lookup_val is not None
+                and str(pk_val) in self.lookup_val,
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg: pk_val}, [self.lookup_kwarg_isnull]
+                ),
+                "display": val,
+            }
+        empty_title = self.empty_value_display
+        if self.include_empty_choice:
+            if add_facets:
+                count = facet_counts["__c"]
+                empty_title = f"{empty_title} ({count})"
+            yield {
+                "selected": bool(self.lookup_val_isnull),
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg_isnull: "True"}, [self.lookup_kwarg]
+                ),
+                "display": empty_title,
+            }
+
+
+FieldListFilter.register(lambda f: f.remote_field, RelatedFieldListFilter)
+
+
+class BooleanFieldListFilter(FieldListFilter):
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        self.lookup_kwarg = "%s__exact" % field_path
+        self.lookup_kwarg2 = "%s__isnull" % field_path
+        self.lookup_val = get_last_value_from_parameters(params, self.lookup_kwarg)
+        self.lookup_val2 = get_last_value_from_parameters(params, self.lookup_kwarg2)
+        super().__init__(field, request, params, model, model_admin, field_path)
+        if (
+            self.used_parameters
+            and self.lookup_kwarg in self.used_parameters
+            and self.used_parameters[self.lookup_kwarg] in ("1", "0")
+        ):
+            self.used_parameters[self.lookup_kwarg] = bool(
+                int(self.used_parameters[self.lookup_kwarg])
+            )
+
+    def expected_parameters(self):
+        return [self.lookup_kwarg, self.lookup_kwarg2]
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        return {
+            "true__c": models.Count(
+                pk_attname, filter=models.Q(**{self.field_path: True})
+            ),
+            "false__c": models.Count(
+                pk_attname, filter=models.Q(**{self.field_path: False})
+            ),
+            "null__c": models.Count(
+                pk_attname, filter=models.Q(**{self.lookup_kwarg2: True})
+            ),
+        }
+
+    def choices(self, changelist):
+        field_choices = dict(self.field.flatchoices)
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        for lookup, title, count_field in (
+            (None, _("All"), None),
+            ("1", field_choices.get(True, _("Yes")), "true__c"),
+            ("0", field_choices.get(False, _("No")), "false__c"),
+        ):
+            if add_facets:
+                if count_field is not None:
+                    count = facet_counts[count_field]
+                    title = f"{title} ({count})"
+            yield {
+                "selected": self.lookup_val == lookup and not self.lookup_val2,
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg: lookup}, [self.lookup_kwarg2]
+                ),
+                "display": title,
+            }
+        if self.field.null:
+            display = field_choices.get(None, _("Unknown"))
+            if add_facets:
+                count = facet_counts["null__c"]
+                display = f"{display} ({count})"
+            yield {
+                "selected": self.lookup_val2 == "True",
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg2: "True"}, [self.lookup_kwarg]
+                ),
+                "display": display,
+            }
+
+
+FieldListFilter.register(
+    lambda f: isinstance(f, models.BooleanField), BooleanFieldListFilter
+)
+
+
+class ChoicesFieldListFilter(FieldListFilter):
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        self.lookup_kwarg = "%s__exact" % field_path
+        self.lookup_kwarg_isnull = "%s__isnull" % field_path
+        self.lookup_val = params.get(self.lookup_kwarg)
+        self.lookup_val_isnull = get_last_value_from_parameters(
+            params, self.lookup_kwarg_isnull
+        )
+        super().__init__(field, request, params, model, model_admin, field_path)
+
+    def expected_parameters(self):
+        return [self.lookup_kwarg, self.lookup_kwarg_isnull]
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        return {
+            f"{i}__c": models.Count(
+                pk_attname,
+                filter=models.Q(
+                    (self.lookup_kwarg, value)
+                    if value is not None
+                    else (self.lookup_kwarg_isnull, True)
+                ),
+            )
+            for i, (value, _) in enumerate(self.field.flatchoices)
+        }
+
+    def choices(self, changelist):
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        yield {
+            "selected": self.lookup_val is None,
+            "query_string": changelist.get_query_string(
+                remove=[self.lookup_kwarg, self.lookup_kwarg_isnull]
+            ),
+            "display": _("All"),
+        }
+        none_title = ""
+        for i, (lookup, title) in enumerate(self.field.flatchoices):
+            if add_facets:
+                count = facet_counts[f"{i}__c"]
+                title = f"{title} ({count})"
+            if lookup is None:
+                none_title = title
+                continue
+            yield {
+                "selected": self.lookup_val is not None
+                and str(lookup) in self.lookup_val,
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg: lookup}, [self.lookup_kwarg_isnull]
+                ),
+                "display": title,
+            }
+        if none_title:
+            yield {
+                "selected": bool(self.lookup_val_isnull),
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg_isnull: "True"}, [self.lookup_kwarg]
+                ),
+                "display": none_title,
+            }
+
+
+FieldListFilter.register(lambda f: bool(f.choices), ChoicesFieldListFilter)
+
+
+class DateFieldListFilter(FieldListFilter):
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        self.field_generic = "%s__" % field_path
+        self.date_params = {
+            k: v[-1] for k, v in params.items() if k.startswith(self.field_generic)
+        }
+
+        now = timezone.now()
+        # When time zone support is enabled, convert "now" to the user's time
+        # zone so Django's definition of "Today" matches what the user expects.
+        if timezone.is_aware(now):
+            now = timezone.localtime(now)
+
+        if isinstance(field, models.DateTimeField):
+            today = now.replace(hour=0, minute=0, second=0, microsecond=0)
+        else:  # field is a models.DateField
+            today = now.date()
+        tomorrow = today + datetime.timedelta(days=1)
+        if today.month == 12:
+            next_month = today.replace(year=today.year + 1, month=1, day=1)
+        else:
+            next_month = today.replace(month=today.month + 1, day=1)
+        next_year = today.replace(year=today.year + 1, month=1, day=1)
+
+        self.lookup_kwarg_since = "%s__gte" % field_path
+        self.lookup_kwarg_until = "%s__lt" % field_path
+        self.links = (
+            (_("Any date"), {}),
+            (
+                _("Today"),
+                {
+                    self.lookup_kwarg_since: today,
+                    self.lookup_kwarg_until: tomorrow,
+                },
+            ),
+            (
+                _("Past 7 days"),
+                {
+                    self.lookup_kwarg_since: today - datetime.timedelta(days=7),
+                    self.lookup_kwarg_until: tomorrow,
+                },
+            ),
+            (
+                _("This month"),
+                {
+                    self.lookup_kwarg_since: today.replace(day=1),
+                    self.lookup_kwarg_until: next_month,
+                },
+            ),
+            (
+                _("This year"),
+                {
+                    self.lookup_kwarg_since: today.replace(month=1, day=1),
+                    self.lookup_kwarg_until: next_year,
+                },
+            ),
+        )
+        if field.null:
+            self.lookup_kwarg_isnull = "%s__isnull" % field_path
+            self.links += (
+                (_("No date"), {self.field_generic + "isnull": True}),
+                (_("Has date"), {self.field_generic + "isnull": False}),
+            )
+        super().__init__(field, request, params, model, model_admin, field_path)
+
+    def expected_parameters(self):
+        params = [self.lookup_kwarg_since, self.lookup_kwarg_until]
+        if self.field.null:
+            params.append(self.lookup_kwarg_isnull)
+        return params
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        return {
+            f"{i}__c": models.Count(pk_attname, filter=models.Q(**param_dict))
+            for i, (_, param_dict) in enumerate(self.links)
+        }
+
+    def choices(self, changelist):
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        for i, (title, param_dict) in enumerate(self.links):
+            param_dict_str = {key: str(value) for key, value in param_dict.items()}
+            if add_facets:
+                count = facet_counts[f"{i}__c"]
+                title = f"{title} ({count})"
+            yield {
+                "selected": self.date_params == param_dict_str,
+                "query_string": changelist.get_query_string(
+                    param_dict_str, [self.field_generic]
+                ),
+                "display": title,
+            }
+
+
+FieldListFilter.register(lambda f: isinstance(f, models.DateField), DateFieldListFilter)
+
+
+# This should be registered last, because it's a last resort. For example,
+# if a field is eligible to use the BooleanFieldListFilter, that'd be much
+# more appropriate, and the AllValuesFieldListFilter won't get used for it.
+class AllValuesFieldListFilter(FieldListFilter):
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        self.lookup_kwarg = field_path
+        self.lookup_kwarg_isnull = "%s__isnull" % field_path
+        self.lookup_val = params.get(self.lookup_kwarg)
+        self.lookup_val_isnull = get_last_value_from_parameters(
+            params, self.lookup_kwarg_isnull
+        )
+        self.empty_value_display = model_admin.get_empty_value_display()
+        parent_model, reverse_path = reverse_field_path(model, field_path)
+        # Obey parent ModelAdmin queryset when deciding which options to show
+        if model == parent_model:
+            queryset = model_admin.get_queryset(request)
+        else:
+            queryset = parent_model._default_manager.all()
+        self.lookup_choices = (
+            queryset.distinct().order_by(field.name).values_list(field.name, flat=True)
+        )
+        super().__init__(field, request, params, model, model_admin, field_path)
+
+    def expected_parameters(self):
+        return [self.lookup_kwarg, self.lookup_kwarg_isnull]
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        return {
+            f"{i}__c": models.Count(
+                pk_attname,
+                filter=models.Q(
+                    (self.lookup_kwarg, value)
+                    if value is not None
+                    else (self.lookup_kwarg_isnull, True)
+                ),
+            )
+            for i, value in enumerate(self.lookup_choices)
+        }
+
+    def choices(self, changelist):
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        yield {
+            "selected": self.lookup_val is None and self.lookup_val_isnull is None,
+            "query_string": changelist.get_query_string(
+                remove=[self.lookup_kwarg, self.lookup_kwarg_isnull]
+            ),
+            "display": _("All"),
+        }
+        include_none = False
+        count = None
+        empty_title = self.empty_value_display
+        for i, val in enumerate(self.lookup_choices):
+            if add_facets:
+                count = facet_counts[f"{i}__c"]
+            if val is None:
+                include_none = True
+                empty_title = f"{empty_title} ({count})" if add_facets else empty_title
+                continue
+            val = str(val)
+            yield {
+                "selected": self.lookup_val is not None and val in self.lookup_val,
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg: val}, [self.lookup_kwarg_isnull]
+                ),
+                "display": f"{val} ({count})" if add_facets else val,
+            }
+        if include_none:
+            yield {
+                "selected": bool(self.lookup_val_isnull),
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg_isnull: "True"}, [self.lookup_kwarg]
+                ),
+                "display": empty_title,
+            }
+
+
+FieldListFilter.register(lambda f: True, AllValuesFieldListFilter)
+
+
+class RelatedOnlyFieldListFilter(RelatedFieldListFilter):
+    def field_choices(self, field, request, model_admin):
+        pk_qs = (
+            model_admin.get_queryset(request)
+            .distinct()
+            .values_list("%s__pk" % self.field_path, flat=True)
+        )
+        ordering = self.field_admin_ordering(field, request, model_admin)
+        return field.get_choices(
+            include_blank=False, limit_choices_to={"pk__in": pk_qs}, ordering=ordering
+        )
+
+
+class EmptyFieldListFilter(FieldListFilter):
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        if not field.empty_strings_allowed and not field.null:
+            raise ImproperlyConfigured(
+                "The list filter '%s' cannot be used with field '%s' which "
+                "doesn't allow empty strings and nulls."
+                % (
+                    self.__class__.__name__,
+                    field.name,
+                )
+            )
+        self.lookup_kwarg = "%s__isempty" % field_path
+        self.lookup_val = get_last_value_from_parameters(params, self.lookup_kwarg)
+        super().__init__(field, request, params, model, model_admin, field_path)
+
+    def get_lookup_condition(self):
+        lookup_conditions = []
+        if self.field.empty_strings_allowed:
+            lookup_conditions.append((self.field_path, ""))
+        if self.field.null:
+            lookup_conditions.append((f"{self.field_path}__isnull", True))
+        return models.Q.create(lookup_conditions, connector=models.Q.OR)
+
+    def queryset(self, request, queryset):
+        if self.lookup_kwarg not in self.used_parameters:
+            return queryset
+        if self.lookup_val not in ("0", "1"):
+            raise IncorrectLookupParameters
+
+        lookup_condition = self.get_lookup_condition()
+        if self.lookup_val == "1":
+            return queryset.filter(lookup_condition)
+        return queryset.exclude(lookup_condition)
+
+    def expected_parameters(self):
+        return [self.lookup_kwarg]
+
+    def get_facet_counts(self, pk_attname, filtered_qs):
+        lookup_condition = self.get_lookup_condition()
+        return {
+            "empty__c": models.Count(pk_attname, filter=lookup_condition),
+            "not_empty__c": models.Count(pk_attname, filter=~lookup_condition),
+        }
+
+    def choices(self, changelist):
+        add_facets = changelist.add_facets
+        facet_counts = self.get_facet_queryset(changelist) if add_facets else None
+        for lookup, title, count_field in (
+            (None, _("All"), None),
+            ("1", _("Empty"), "empty__c"),
+            ("0", _("Not empty"), "not_empty__c"),
+        ):
+            if add_facets:
+                if count_field is not None:
+                    count = facet_counts[count_field]
+                    title = f"{title} ({count})"
+            yield {
+                "selected": self.lookup_val == lookup,
+                "query_string": changelist.get_query_string(
+                    {self.lookup_kwarg: lookup}
+                ),
+                "display": title,
+            }

+ 0 - 202
static/admin/fonts/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 3
static/admin/fonts/README.txt

@@ -1,3 +0,0 @@
-Roboto webfont source: https://www.google.com/fonts/specimen/Roboto
-WOFF files extracted using https://github.com/majodev/google-webfonts-helper
-Weights used in this project: Light (300), Regular (400), Bold (700)

BIN
static/admin/fonts/Roboto-Bold-webfont.woff


BIN
static/admin/fonts/Roboto-Light-webfont.woff


BIN
static/admin/fonts/Roboto-Regular-webfont.woff


+ 31 - 0
static/admin/forms.py

@@ -0,0 +1,31 @@
+from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm
+from django.core.exceptions import ValidationError
+from django.utils.translation import gettext_lazy as _
+
+
+class AdminAuthenticationForm(AuthenticationForm):
+    """
+    A custom authentication form used in the admin app.
+    """
+
+    error_messages = {
+        **AuthenticationForm.error_messages,
+        "invalid_login": _(
+            "Please enter the correct %(username)s and password for a staff "
+            "account. Note that both fields may be case-sensitive."
+        ),
+    }
+    required_css_class = "required"
+
+    def confirm_login_allowed(self, user):
+        super().confirm_login_allowed(user)
+        if not user.is_staff:
+            raise ValidationError(
+                self.error_messages["invalid_login"],
+                code="invalid_login",
+                params={"username": self.username_field.verbose_name},
+            )
+
+
+class AdminPasswordChangeForm(PasswordChangeForm):
+    required_css_class = "required"

+ 568 - 0
static/admin/helpers.py

@@ -0,0 +1,568 @@
+import json
+
+from django import forms
+from django.contrib.admin.utils import (
+    display_for_field,
+    flatten_fieldsets,
+    help_text_for_field,
+    label_for_field,
+    lookup_field,
+    quote,
+)
+from django.core.exceptions import ObjectDoesNotExist
+from django.db.models.fields.related import (
+    ForeignObjectRel,
+    ManyToManyRel,
+    OneToOneField,
+)
+from django.forms.utils import flatatt
+from django.template.defaultfilters import capfirst, linebreaksbr
+from django.urls import NoReverseMatch, reverse
+from django.utils.functional import cached_property
+from django.utils.html import conditional_escape, format_html
+from django.utils.safestring import mark_safe
+from django.utils.translation import gettext
+from django.utils.translation import gettext_lazy as _
+
+ACTION_CHECKBOX_NAME = "_selected_action"
+
+
+class ActionForm(forms.Form):
+    action = forms.ChoiceField(label=_("Action:"))
+    select_across = forms.BooleanField(
+        label="",
+        required=False,
+        initial=0,
+        widget=forms.HiddenInput({"class": "select-across"}),
+    )
+
+
+class AdminForm:
+    def __init__(
+        self,
+        form,
+        fieldsets,
+        prepopulated_fields,
+        readonly_fields=None,
+        model_admin=None,
+    ):
+        self.form, self.fieldsets = form, fieldsets
+        self.prepopulated_fields = [
+            {"field": form[field_name], "dependencies": [form[f] for f in dependencies]}
+            for field_name, dependencies in prepopulated_fields.items()
+        ]
+        self.model_admin = model_admin
+        if readonly_fields is None:
+            readonly_fields = ()
+        self.readonly_fields = readonly_fields
+
+    def __repr__(self):
+        return (
+            f"<{self.__class__.__qualname__}: "
+            f"form={self.form.__class__.__qualname__} "
+            f"fieldsets={self.fieldsets!r}>"
+        )
+
+    def __iter__(self):
+        for name, options in self.fieldsets:
+            yield Fieldset(
+                self.form,
+                name,
+                readonly_fields=self.readonly_fields,
+                model_admin=self.model_admin,
+                **options,
+            )
+
+    @property
+    def errors(self):
+        return self.form.errors
+
+    @property
+    def non_field_errors(self):
+        return self.form.non_field_errors
+
+    @property
+    def fields(self):
+        return self.form.fields
+
+    @property
+    def is_bound(self):
+        return self.form.is_bound
+
+    @property
+    def media(self):
+        media = self.form.media
+        for fs in self:
+            media += fs.media
+        return media
+
+
+class Fieldset:
+    def __init__(
+        self,
+        form,
+        name=None,
+        readonly_fields=(),
+        fields=(),
+        classes=(),
+        description=None,
+        model_admin=None,
+    ):
+        self.form = form
+        self.name, self.fields = name, fields
+        self.classes = " ".join(classes)
+        self.description = description
+        self.model_admin = model_admin
+        self.readonly_fields = readonly_fields
+
+    @property
+    def media(self):
+        return forms.Media()
+
+    @cached_property
+    def is_collapsible(self):
+        if any([field in self.fields for field in self.form.errors]):
+            return False
+        return "collapse" in self.classes
+
+    def __iter__(self):
+        for field in self.fields:
+            yield Fieldline(
+                self.form, field, self.readonly_fields, model_admin=self.model_admin
+            )
+
+
+class Fieldline:
+    def __init__(self, form, field, readonly_fields=None, model_admin=None):
+        self.form = form  # A django.forms.Form instance
+        if not hasattr(field, "__iter__") or isinstance(field, str):
+            self.fields = [field]
+        else:
+            self.fields = field
+        self.has_visible_field = not all(
+            field in self.form.fields and self.form.fields[field].widget.is_hidden
+            for field in self.fields
+        )
+        self.model_admin = model_admin
+        if readonly_fields is None:
+            readonly_fields = ()
+        self.readonly_fields = readonly_fields
+
+    def __iter__(self):
+        for i, field in enumerate(self.fields):
+            if field in self.readonly_fields:
+                yield AdminReadonlyField(
+                    self.form, field, is_first=(i == 0), model_admin=self.model_admin
+                )
+            else:
+                yield AdminField(self.form, field, is_first=(i == 0))
+
+    def errors(self):
+        return mark_safe(
+            "\n".join(
+                self.form[f].errors.as_ul()
+                for f in self.fields
+                if f not in self.readonly_fields
+            ).strip("\n")
+        )
+
+
+class AdminField:
+    def __init__(self, form, field, is_first):
+        self.field = form[field]  # A django.forms.BoundField instance
+        self.is_first = is_first  # Whether this field is first on the line
+        self.is_checkbox = isinstance(self.field.field.widget, forms.CheckboxInput)
+        self.is_readonly = False
+
+    def label_tag(self):
+        classes = []
+        contents = conditional_escape(self.field.label)
+        if self.is_checkbox:
+            classes.append("vCheckboxLabel")
+
+        if self.field.field.required:
+            classes.append("required")
+        if not self.is_first:
+            classes.append("inline")
+        attrs = {"class": " ".join(classes)} if classes else {}
+        # checkboxes should not have a label suffix as the checkbox appears
+        # to the left of the label.
+        return self.field.label_tag(
+            contents=mark_safe(contents),
+            attrs=attrs,
+            label_suffix="" if self.is_checkbox else None,
+        )
+
+    def errors(self):
+        return mark_safe(self.field.errors.as_ul())
+
+
+class AdminReadonlyField:
+    def __init__(self, form, field, is_first, model_admin=None):
+        # Make self.field look a little bit like a field. This means that
+        # {{ field.name }} must be a useful class name to identify the field.
+        # For convenience, store other field-related data here too.
+        if callable(field):
+            class_name = field.__name__ if field.__name__ != "<lambda>" else ""
+        else:
+            class_name = field
+
+        if form._meta.labels and class_name in form._meta.labels:
+            label = form._meta.labels[class_name]
+        else:
+            label = label_for_field(field, form._meta.model, model_admin, form=form)
+
+        if form._meta.help_texts and class_name in form._meta.help_texts:
+            help_text = form._meta.help_texts[class_name]
+        else:
+            help_text = help_text_for_field(class_name, form._meta.model)
+
+        if field in form.fields:
+            is_hidden = form.fields[field].widget.is_hidden
+        else:
+            is_hidden = False
+
+        self.field = {
+            "name": class_name,
+            "label": label,
+            "help_text": help_text,
+            "field": field,
+            "is_hidden": is_hidden,
+        }
+        self.form = form
+        self.model_admin = model_admin
+        self.is_first = is_first
+        self.is_checkbox = False
+        self.is_readonly = True
+        self.empty_value_display = model_admin.get_empty_value_display()
+
+    def label_tag(self):
+        attrs = {}
+        if not self.is_first:
+            attrs["class"] = "inline"
+        label = self.field["label"]
+        return format_html(
+            "<label{}>{}{}</label>",
+            flatatt(attrs),
+            capfirst(label),
+            self.form.label_suffix,
+        )
+
+    def get_admin_url(self, remote_field, remote_obj):
+        url_name = "admin:%s_%s_change" % (
+            remote_field.model._meta.app_label,
+            remote_field.model._meta.model_name,
+        )
+        try:
+            url = reverse(
+                url_name,
+                args=[quote(remote_obj.pk)],
+                current_app=self.model_admin.admin_site.name,
+            )
+            return format_html('<a href="{}">{}</a>', url, remote_obj)
+        except NoReverseMatch:
+            return str(remote_obj)
+
+    def contents(self):
+        from django.contrib.admin.templatetags.admin_list import _boolean_icon
+
+        field, obj, model_admin = (
+            self.field["field"],
+            self.form.instance,
+            self.model_admin,
+        )
+        try:
+            f, attr, value = lookup_field(field, obj, model_admin)
+        except (AttributeError, ValueError, ObjectDoesNotExist):
+            result_repr = self.empty_value_display
+        else:
+            if field in self.form.fields:
+                widget = self.form[field].field.widget
+                # This isn't elegant but suffices for contrib.auth's
+                # ReadOnlyPasswordHashWidget.
+                if getattr(widget, "read_only", False):
+                    return widget.render(field, value)
+            if f is None:
+                if getattr(attr, "boolean", False):
+                    result_repr = _boolean_icon(value)
+                else:
+                    if hasattr(value, "__html__"):
+                        result_repr = value
+                    else:
+                        result_repr = linebreaksbr(value)
+            else:
+                if isinstance(f.remote_field, ManyToManyRel) and value is not None:
+                    result_repr = ", ".join(map(str, value.all()))
+                elif (
+                    isinstance(f.remote_field, (ForeignObjectRel, OneToOneField))
+                    and value is not None
+                ):
+                    result_repr = self.get_admin_url(f.remote_field, value)
+                else:
+                    result_repr = display_for_field(value, f, self.empty_value_display)
+                result_repr = linebreaksbr(result_repr)
+        return conditional_escape(result_repr)
+
+
+class InlineAdminFormSet:
+    """
+    A wrapper around an inline formset for use in the admin system.
+    """
+
+    def __init__(
+        self,
+        inline,
+        formset,
+        fieldsets,
+        prepopulated_fields=None,
+        readonly_fields=None,
+        model_admin=None,
+        has_add_permission=True,
+        has_change_permission=True,
+        has_delete_permission=True,
+        has_view_permission=True,
+    ):
+        self.opts = inline
+        self.formset = formset
+        self.fieldsets = fieldsets
+        self.model_admin = model_admin
+        if readonly_fields is None:
+            readonly_fields = ()
+        self.readonly_fields = readonly_fields
+        if prepopulated_fields is None:
+            prepopulated_fields = {}
+        self.prepopulated_fields = prepopulated_fields
+        self.classes = " ".join(inline.classes) if inline.classes else ""
+        self.has_add_permission = has_add_permission
+        self.has_change_permission = has_change_permission
+        self.has_delete_permission = has_delete_permission
+        self.has_view_permission = has_view_permission
+
+    def __iter__(self):
+        if self.has_change_permission:
+            readonly_fields_for_editing = self.readonly_fields
+        else:
+            readonly_fields_for_editing = self.readonly_fields + flatten_fieldsets(
+                self.fieldsets
+            )
+
+        for form, original in zip(
+            self.formset.initial_forms, self.formset.get_queryset()
+        ):
+            view_on_site_url = self.opts.get_view_on_site_url(original)
+            yield InlineAdminForm(
+                self.formset,
+                form,
+                self.fieldsets,
+                self.prepopulated_fields,
+                original,
+                readonly_fields_for_editing,
+                model_admin=self.opts,
+                view_on_site_url=view_on_site_url,
+            )
+        for form in self.formset.extra_forms:
+            yield InlineAdminForm(
+                self.formset,
+                form,
+                self.fieldsets,
+                self.prepopulated_fields,
+                None,
+                self.readonly_fields,
+                model_admin=self.opts,
+            )
+        if self.has_add_permission:
+            yield InlineAdminForm(
+                self.formset,
+                self.formset.empty_form,
+                self.fieldsets,
+                self.prepopulated_fields,
+                None,
+                self.readonly_fields,
+                model_admin=self.opts,
+            )
+
+    def fields(self):
+        fk = getattr(self.formset, "fk", None)
+        empty_form = self.formset.empty_form
+        meta_labels = empty_form._meta.labels or {}
+        meta_help_texts = empty_form._meta.help_texts or {}
+        for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
+            if fk and fk.name == field_name:
+                continue
+            if not self.has_change_permission or field_name in self.readonly_fields:
+                form_field = empty_form.fields.get(field_name)
+                widget_is_hidden = False
+                if form_field is not None:
+                    widget_is_hidden = form_field.widget.is_hidden
+                yield {
+                    "name": field_name,
+                    "label": meta_labels.get(field_name)
+                    or label_for_field(
+                        field_name,
+                        self.opts.model,
+                        self.opts,
+                        form=empty_form,
+                    ),
+                    "widget": {"is_hidden": widget_is_hidden},
+                    "required": False,
+                    "help_text": meta_help_texts.get(field_name)
+                    or help_text_for_field(field_name, self.opts.model),
+                }
+            else:
+                form_field = empty_form.fields[field_name]
+                label = form_field.label
+                if label is None:
+                    label = label_for_field(
+                        field_name, self.opts.model, self.opts, form=empty_form
+                    )
+                yield {
+                    "name": field_name,
+                    "label": label,
+                    "widget": form_field.widget,
+                    "required": form_field.required,
+                    "help_text": form_field.help_text,
+                }
+
+    def inline_formset_data(self):
+        verbose_name = self.opts.verbose_name
+        return json.dumps(
+            {
+                "name": "#%s" % self.formset.prefix,
+                "options": {
+                    "prefix": self.formset.prefix,
+                    "addText": gettext("Add another %(verbose_name)s")
+                    % {
+                        "verbose_name": capfirst(verbose_name),
+                    },
+                    "deleteText": gettext("Remove"),
+                },
+            }
+        )
+
+    @property
+    def forms(self):
+        return self.formset.forms
+
+    @cached_property
+    def is_collapsible(self):
+        if any(self.formset.errors):
+            return False
+        return "collapse" in self.classes
+
+    def non_form_errors(self):
+        return self.formset.non_form_errors()
+
+    @property
+    def is_bound(self):
+        return self.formset.is_bound
+
+    @property
+    def total_form_count(self):
+        return self.formset.total_form_count
+
+    @property
+    def media(self):
+        media = self.opts.media + self.formset.media
+        for fs in self:
+            media += fs.media
+        return media
+
+
+class InlineAdminForm(AdminForm):
+    """
+    A wrapper around an inline form for use in the admin system.
+    """
+
+    def __init__(
+        self,
+        formset,
+        form,
+        fieldsets,
+        prepopulated_fields,
+        original,
+        readonly_fields=None,
+        model_admin=None,
+        view_on_site_url=None,
+    ):
+        self.formset = formset
+        self.model_admin = model_admin
+        self.original = original
+        self.show_url = original and view_on_site_url is not None
+        self.absolute_url = view_on_site_url
+        super().__init__(
+            form, fieldsets, prepopulated_fields, readonly_fields, model_admin
+        )
+
+    def __iter__(self):
+        for name, options in self.fieldsets:
+            yield InlineFieldset(
+                self.formset,
+                self.form,
+                name,
+                self.readonly_fields,
+                model_admin=self.model_admin,
+                **options,
+            )
+
+    def needs_explicit_pk_field(self):
+        return (
+            # Auto fields are editable, so check for auto or non-editable pk.
+            self.form._meta.model._meta.auto_field
+            or not self.form._meta.model._meta.pk.editable
+            # The pk can be editable, but excluded from the inline.
+            or (
+                self.form._meta.exclude
+                and self.form._meta.model._meta.pk.name in self.form._meta.exclude
+            )
+            or
+            # Also search any parents for an auto field. (The pk info is
+            # propagated to child models so that does not need to be checked
+            # in parents.)
+            any(
+                parent._meta.auto_field or not parent._meta.model._meta.pk.editable
+                for parent in self.form._meta.model._meta.all_parents
+            )
+        )
+
+    def pk_field(self):
+        return AdminField(self.form, self.formset._pk_field.name, False)
+
+    def fk_field(self):
+        fk = getattr(self.formset, "fk", None)
+        if fk:
+            return AdminField(self.form, fk.name, False)
+        else:
+            return ""
+
+    def deletion_field(self):
+        from django.forms.formsets import DELETION_FIELD_NAME
+
+        return AdminField(self.form, DELETION_FIELD_NAME, False)
+
+
+class InlineFieldset(Fieldset):
+    def __init__(self, formset, *args, **kwargs):
+        self.formset = formset
+        super().__init__(*args, **kwargs)
+
+    def __iter__(self):
+        fk = getattr(self.formset, "fk", None)
+        for field in self.fields:
+            if not fk or fk.name != field:
+                yield Fieldline(
+                    self.form, field, self.readonly_fields, model_admin=self.model_admin
+                )
+
+
+class AdminErrorList(forms.utils.ErrorList):
+    """Store errors for the form/formsets in an add/change view."""
+
+    def __init__(self, form, inline_formsets):
+        super().__init__()
+
+        if form.is_bound:
+            self.extend(form.errors.values())
+            for inline_formset in inline_formsets:
+                self.extend(inline_formset.non_form_errors())
+                for errors_in_inline_form in inline_formset.errors:
+                    self.extend(errors_in_inline_form.values())

+ 0 - 14
static/admin/img/calendar-icons.svg

@@ -1,14 +0,0 @@
-<svg width="15" height="60" viewBox="0 0 1792 7168" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-  <defs>
-    <g id="previous">
-      <path d="M1037 1395l102-102q19-19 19-45t-19-45l-307-307 307-307q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm627-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
-    </g>
-    <g id="next">
-      <path d="M845 1395l454-454q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l307 307-307 307q-19 19-19 45t19 45l102 102q19 19 45 19t45-19zm819-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
-    </g>
-  </defs>
-  <use xlink:href="#previous" x="0" y="0" fill="#333333" />
-  <use xlink:href="#previous" x="0" y="1792" fill="#000000" />
-  <use xlink:href="#next" x="0" y="3584" fill="#333333" />
-  <use xlink:href="#next" x="0" y="5376" fill="#000000" />
-</svg>

+ 0 - 154
static/admin/js/actions.js

@@ -1,154 +0,0 @@
-/*global gettext, interpolate, ngettext*/
-'use strict';
-{
-    const $ = django.jQuery;
-    let lastChecked;
-
-    $.fn.actions = function(opts) {
-        const options = $.extend({}, $.fn.actions.defaults, opts);
-        const actionCheckboxes = $(this);
-        let list_editable_changed = false;
-        const showQuestion = function() {
-                $(options.acrossClears).hide();
-                $(options.acrossQuestions).show();
-                $(options.allContainer).hide();
-            },
-            showClear = function() {
-                $(options.acrossClears).show();
-                $(options.acrossQuestions).hide();
-                $(options.actionContainer).toggleClass(options.selectedClass);
-                $(options.allContainer).show();
-                $(options.counterContainer).hide();
-            },
-            reset = function() {
-                $(options.acrossClears).hide();
-                $(options.acrossQuestions).hide();
-                $(options.allContainer).hide();
-                $(options.counterContainer).show();
-            },
-            clearAcross = function() {
-                reset();
-                $(options.acrossInput).val(0);
-                $(options.actionContainer).removeClass(options.selectedClass);
-            },
-            checker = function(checked) {
-                if (checked) {
-                    showQuestion();
-                } else {
-                    reset();
-                }
-                $(actionCheckboxes).prop("checked", checked)
-                    .parent().parent().toggleClass(options.selectedClass, checked);
-            },
-            updateCounter = function() {
-                const sel = $(actionCheckboxes).filter(":checked").length;
-                // data-actions-icnt is defined in the generated HTML
-                // and contains the total amount of objects in the queryset
-                const actions_icnt = $('.action-counter').data('actionsIcnt');
-                $(options.counterContainer).html(interpolate(
-                    ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {
-                        sel: sel,
-                        cnt: actions_icnt
-                    }, true));
-                $(options.allToggle).prop("checked", function() {
-                    let value;
-                    if (sel === actionCheckboxes.length) {
-                        value = true;
-                        showQuestion();
-                    } else {
-                        value = false;
-                        clearAcross();
-                    }
-                    return value;
-                });
-            };
-        // Show counter by default
-        $(options.counterContainer).show();
-        // Check state of checkboxes and reinit state if needed
-        $(this).filter(":checked").each(function(i) {
-            $(this).parent().parent().toggleClass(options.selectedClass);
-            updateCounter();
-            if ($(options.acrossInput).val() === 1) {
-                showClear();
-            }
-        });
-        $(options.allToggle).show().on('click', function() {
-            checker($(this).prop("checked"));
-            updateCounter();
-        });
-        $("a", options.acrossQuestions).on('click', function(event) {
-            event.preventDefault();
-            $(options.acrossInput).val(1);
-            showClear();
-        });
-        $("a", options.acrossClears).on('click', function(event) {
-            event.preventDefault();
-            $(options.allToggle).prop("checked", false);
-            clearAcross();
-            checker(0);
-            updateCounter();
-        });
-        lastChecked = null;
-        $(actionCheckboxes).on('click', function(event) {
-            if (!event) { event = window.event; }
-            const target = event.target ? event.target : event.srcElement;
-            if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) {
-                let inrange = false;
-                $(lastChecked).prop("checked", target.checked)
-                    .parent().parent().toggleClass(options.selectedClass, target.checked);
-                $(actionCheckboxes).each(function() {
-                    if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) {
-                        inrange = (inrange) ? false : true;
-                    }
-                    if (inrange) {
-                        $(this).prop("checked", target.checked)
-                            .parent().parent().toggleClass(options.selectedClass, target.checked);
-                    }
-                });
-            }
-            $(target).parent().parent().toggleClass(options.selectedClass, target.checked);
-            lastChecked = target;
-            updateCounter();
-        });
-        $('form#changelist-form table#result_list tr').on('change', 'td:gt(0) :input', function() {
-            list_editable_changed = true;
-        });
-        $('form#changelist-form button[name="index"]').on('click', function(event) {
-            if (list_editable_changed) {
-                return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."));
-            }
-        });
-        $('form#changelist-form input[name="_save"]').on('click', function(event) {
-            let action_changed = false;
-            $('select option:selected', options.actionContainer).each(function() {
-                if ($(this).val()) {
-                    action_changed = true;
-                }
-            });
-            if (action_changed) {
-                if (list_editable_changed) {
-                    return confirm(gettext("You have selected an action, but you haven’t saved your changes to individual fields yet. Please click OK to save. You’ll need to re-run the action."));
-                } else {
-                    return confirm(gettext("You have selected an action, and you haven’t made any changes on individual fields. You’re probably looking for the Go button rather than the Save button."));
-                }
-            }
-        });
-    };
-    /* Setup plugin defaults */
-    $.fn.actions.defaults = {
-        actionContainer: "div.actions",
-        counterContainer: "span.action-counter",
-        allContainer: "div.actions span.all",
-        acrossInput: "div.actions input.select-across",
-        acrossQuestions: "div.actions span.question",
-        acrossClears: "div.actions span.clear",
-        allToggle: "#action-toggle",
-        selectedClass: "selected"
-    };
-    $(document).ready(function() {
-        const $actionsEls = $('tr input.action-select');
-        if ($actionsEls.length > 0) {
-            $actionsEls.actions();
-        }
-    });
-}

+ 0 - 7
static/admin/js/actions.min.js

@@ -1,7 +0,0 @@
-'use strict';{const a=django.jQuery;let e;a.fn.actions=function(g){const b=a.extend({},a.fn.actions.defaults,g),f=a(this);let k=!1;const l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},n=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},
-p=function(){n();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},q=function(c){c?l():n();a(f).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){const c=a(f).filter(":checked").length,d=a(".action-counter").data("actionsIcnt");a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:d},!0));a(b.allToggle).prop("checked",function(){let a;c===f.length?(a=!0,l()):(a=!1,p());return a})};
-a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);h();1===a(b.acrossInput).val()&&m()});a(b.allToggle).show().on("click",function(){q(a(this).prop("checked"));h()});a("a",b.acrossQuestions).on("click",function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("a",b.acrossClears).on("click",function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);p();q(0);h()});e=null;a(f).on("click",function(c){c||(c=window.event);
-const d=c.target?c.target:c.srcElement;if(e&&a.data(e)!==a.data(d)&&!0===c.shiftKey){let c=!1;a(e).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(f).each(function(){if(a.data(this)===a.data(e)||a.data(this)===a.data(d))c=c?!1:!0;c&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);e=d;h()});a("form#changelist-form table#result_list tr").on("change","td:gt(0) :input",
-function(){k=!0});a('form#changelist-form button[name="index"]').on("click",function(a){if(k)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});a('form#changelist-form input[name="_save"]').on("click",function(c){let d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return k?confirm(gettext("You have selected an action, but you haven\u2019t saved your changes to individual fields yet. Please click OK to save. You\u2019ll need to re-run the action.")):
-confirm(gettext("You have selected an action, and you haven\u2019t made any changes on individual fields. You\u2019re probably looking for the Go button rather than the Save button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"};a(document).ready(function(){const g=
-a("tr input.action-select");0<g.length&&g.actions()})};

+ 0 - 38
static/admin/js/autocomplete.js

@@ -1,38 +0,0 @@
-'use strict';
-{
-    const $ = django.jQuery;
-    const init = function($element, options) {
-        const settings = $.extend({
-            ajax: {
-                data: function(params) {
-                    return {
-                        term: params.term,
-                        page: params.page
-                    };
-                }
-            }
-        }, options);
-        $element.select2(settings);
-    };
-
-    $.fn.djangoAdminSelect2 = function(options) {
-        const settings = $.extend({}, options);
-        $.each(this, function(i, element) {
-            const $element = $(element);
-            init($element, settings);
-        });
-        return this;
-    };
-
-    $(function() {
-        // Initialize all autocomplete widgets except the one in the template
-        // form used when a new formset is added.
-        $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2();
-    });
-
-    $(document).on('formset:added', (function() {
-        return function(event, $newFormset) {
-            return $newFormset.find('.admin-autocomplete').djangoAdminSelect2();
-        };
-    })(this));
-}

+ 0 - 43
static/admin/js/collapse.js

@@ -1,43 +0,0 @@
-/*global gettext*/
-'use strict';
-{
-    window.addEventListener('load', function() {
-        // Add anchor tag for Show/Hide link
-        const fieldsets = document.querySelectorAll('fieldset.collapse');
-        for (const [i, elem] of fieldsets.entries()) {
-            // Don't hide if fields in this fieldset have errors
-            if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {
-                elem.classList.add('collapsed');
-                const h2 = elem.querySelector('h2');
-                const link = document.createElement('a');
-                link.id = 'fieldsetcollapser' + i;
-                link.className = 'collapse-toggle';
-                link.href = '#';
-                link.textContent = gettext('Show');
-                h2.appendChild(document.createTextNode(' ('));
-                h2.appendChild(link);
-                h2.appendChild(document.createTextNode(')'));
-            }
-        }
-        // Add toggle to hide/show anchor tag
-        const toggleFunc = function(ev) {
-            if (ev.target.matches('.collapse-toggle')) {
-                ev.preventDefault();
-                ev.stopPropagation();
-                const fieldset = ev.target.closest('fieldset');
-                if (fieldset.classList.contains('collapsed')) {
-                    // Show
-                    ev.target.textContent = gettext('Hide');
-                    fieldset.classList.remove('collapsed');
-                } else {
-                    // Hide
-                    ev.target.textContent = gettext('Show');
-                    fieldset.classList.add('collapsed');
-                }
-            }
-        };
-        document.querySelectorAll('fieldset.module').forEach(function(el) {
-            el.addEventListener('click', toggleFunc);
-        });
-    });
-}

+ 0 - 2
static/admin/js/collapse.min.js

@@ -1,2 +0,0 @@
-'use strict';window.addEventListener("load",function(){var c=document.querySelectorAll("fieldset.collapse");for(const [a,b]of c.entries())if(0===b.querySelectorAll("div.errors, ul.errorlist").length){b.classList.add("collapsed");c=b.querySelector("h2");const d=document.createElement("a");d.id="fieldsetcollapser"+a;d.className="collapse-toggle";d.href="#";d.textContent=gettext("Show");c.appendChild(document.createTextNode(" ("));c.appendChild(d);c.appendChild(document.createTextNode(")"))}const e=
-function(a){if(a.target.matches(".collapse-toggle")){a.preventDefault();a.stopPropagation();const b=a.target.closest("fieldset");b.classList.contains("collapsed")?(a.target.textContent=gettext("Hide"),b.classList.remove("collapsed")):(a.target.textContent=gettext("Show"),b.classList.add("collapsed"))}};document.querySelectorAll("fieldset.module").forEach(function(a){a.addEventListener("click",e)})});

+ 0 - 11
static/admin/js/inlines.min.js

@@ -1,11 +0,0 @@
-'use strict';{const b=django.jQuery;b.fn.formset=function(c){const a=b.extend({},b.fn.formset.defaults,c),e=b(this),l=e.parent(),m=function(a,d,h){const g=new RegExp("("+d+"-(\\d+|__prefix__))");d=d+"-"+h;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(g,d));a.id&&(a.id=a.id.replace(g,d));a.name&&(a.name=a.name.replace(g,d))},f=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off");let n=parseInt(f.val(),10);const h=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),q=
-b("#id_"+a.prefix+"-MIN_NUM_FORMS").prop("autocomplete","off");let k;const t=function(g){g.preventDefault();g=b("#"+a.prefix+"-empty");const d=g.clone(!0);d.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+n);r(d);d.find("*").each(function(){m(this,a.prefix,f.val())});d.insertBefore(b(g));b(f).val(parseInt(f.val(),10)+1);n+=1;""!==h.val()&&0>=h.val()-f.val()&&k.parent().hide();p(d.closest(".inline-group"));a.added&&a.added(d);b(document).trigger("formset:added",[d,a.prefix])},
-r=function(b){b.is("tr")?b.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></div>"):b.is("ul")||b.is("ol")?b.append('<li><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></li>"):b.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></span>");b.find("a."+a.deleteCssClass).on("click",u.bind(this))},u=function(g){g.preventDefault();var d=b(g.target).closest("."+a.formCssClass);g=d.closest(".inline-group");
-var f=d.prev();f.length&&f.hasClass("row-form-errors")&&f.remove();d.remove();--n;a.removed&&a.removed(d);b(document).trigger("formset:removed",[d,a.prefix]);d=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(d.length);(""===h.val()||0<h.val()-d.length)&&k.parent().show();p(g);let c;f=function(){m(this,a.prefix,c)};c=0;for(g=d.length;c<g;c++)m(b(d).get(c),a.prefix,c),b(d.get(c)).find("*").each(f)},p=function(a){""!==q.val()&&0<=q.val()-f.val()?a.find(".inline-deletelink").hide():a.find(".inline-deletelink").show()};
-e.each(function(c){b(this).not("."+a.emptyCssClass).addClass(a.formCssClass)});e.filter("."+a.formCssClass+":not(.has_original):not(."+a.emptyCssClass+")").each(function(){r(b(this))});p(e);k=a.addButton;(function(){if(null===k)if("TR"===e.prop("tagName")){const b=e.eq(-1).children().length;l.append('<tr class="'+a.addCssClass+'"><td colspan="'+b+'"><a href="#">'+a.addText+"</a></tr>");k=l.find("tr:last a")}else e.filter(":last").after('<div class="'+a.addCssClass+'"><a href="#">'+a.addText+"</a></div>"),
-k=e.filter(":last").next().find("a");k.on("click",t)})();c=""===h.val()||0<h.val()-f.val();e.length&&c?k.parent().show():k.parent().hide();return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null,addButton:null};b.fn.tabularFormset=function(c,a){c=b(this);const e=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,
-b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!0)}))},l=function(a){a.find(".prepopulated_field").each(function(){const c=b(this).find("input, select, textarea"),n=c.data("dependency_list")||[],h=[];b.each(n,function(b,c){h.push("#"+a.find(".field-"+c).find("input, select, textarea").attr("id"))});h.length&&c.prepopulate(h,c.attr("maxlength"))})};c.formset({prefix:a.prefix,addText:a.addText,
-formCssClass:"dynamic-"+a.prefix,deleteCssClass:"inline-deletelink",deleteText:a.deleteText,emptyCssClass:"empty-form",added:function(a){l(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());e()},addButton:a.addButton});return c};b.fn.stackedFormset=function(c,a){const e=b(this),l=function(a){b(c).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g,"#"+a))})},m=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,
-b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!0)}))},f=function(a){a.find(".prepopulated_field").each(function(){const c=b(this).find("input, select, textarea"),f=c.data("dependency_list")||[],e=[];b.each(f,function(b,c){e.push("#"+a.find(".form-row .field-"+c).find("input, select, textarea").attr("id"))});e.length&&c.prepopulate(e,c.attr("maxlength"))})};e.formset({prefix:a.prefix,
-addText:a.addText,formCssClass:"dynamic-"+a.prefix,deleteCssClass:"inline-deletelink",deleteText:a.deleteText,emptyCssClass:"empty-form",removed:l,added:function(a){f(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());m();l(a)},addButton:a.addButton});return e};b(document).ready(function(){b(".js-inline-admin-formset").each(function(){var c=b(this).data();const a=c.inlineFormset;switch(c.inlineType){case "stacked":c=a.name+"-group .inline-related";
-b(c).stackedFormset(c,a.options);break;case "tabular":c=a.name+"-group .tabular.inline-related tbody:first > tr.form-row",b(c).tabularFormset(c,a.options)}})})};

+ 0 - 39
static/admin/js/nav_sidebar.js

@@ -1,39 +0,0 @@
-'use strict';
-{
-    const toggleNavSidebar = document.getElementById('toggle-nav-sidebar');
-    if (toggleNavSidebar !== null) {
-        const navLinks = document.querySelectorAll('#nav-sidebar a');
-        function disableNavLinkTabbing() {
-            for (const navLink of navLinks) {
-                navLink.tabIndex = -1;
-            }
-        }
-        function enableNavLinkTabbing() {
-            for (const navLink of navLinks) {
-                navLink.tabIndex = 0;
-            }
-        }
-
-        const main = document.getElementById('main');
-        let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen');
-        if (navSidebarIsOpen === null) {
-            navSidebarIsOpen = 'true';
-        }
-        if (navSidebarIsOpen === 'false') {
-            disableNavLinkTabbing();
-        }
-        main.classList.toggle('shifted', navSidebarIsOpen === 'true');
-
-        toggleNavSidebar.addEventListener('click', function() {
-            if (navSidebarIsOpen === 'true') {
-                navSidebarIsOpen = 'false';
-                disableNavLinkTabbing();
-            } else {
-                navSidebarIsOpen = 'true';
-                enableNavLinkTabbing();
-            }
-            localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen);
-            main.classList.toggle('shifted');
-        });
-    }
-}

+ 0 - 1
static/admin/js/prepopulate.min.js

@@ -1 +0,0 @@
-'use strict';{const b=django.jQuery;b.fn.prepopulate=function(d,f,g){return this.each(function(){const a=b(this),h=function(){if(!a.data("_changed")){var e=[];b.each(d,function(a,c){c=b(c);0<c.val().length&&e.push(c.val())});a.val(URLify(e.join(" "),f,g))}};a.data("_changed",!1);a.on("change",function(){a.data("_changed",!0)});if(!a.val())b(d.join(",")).on("keyup change focus",h)})}};

Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
static/admin/js/vendor/jquery/jquery.min.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1810
static/admin/js/vendor/xregexp/xregexp.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 69
static/admin/js/vendor/xregexp/xregexp.min.js


BIN
static/admin/locale/af/LC_MESSAGES/django.mo


+ 774 - 0
static/admin/locale/af/LC_MESSAGES/django.po

@@ -0,0 +1,774 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Christopher Penkin, 2012
+# Christopher Penkin, 2012
+# F Wolff <friedel@translate.org.za>, 2019-2020,2023
+# Pi Delport <pjdelport@gmail.com>, 2012
+# Pi Delport <pjdelport@gmail.com>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 11:41-0300\n"
+"PO-Revision-Date: 2023-12-04 07:05+0000\n"
+"Last-Translator: F Wolff <friedel@translate.org.za>, 2019-2020,2023\n"
+"Language-Team: Afrikaans (http://app.transifex.com/django/django/language/"
+"af/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: af\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Skrap gekose %(verbose_name_plural)s"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Het %(count)d %(items)s suksesvol geskrap."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Kan %(name)s nie skrap nie"
+
+msgid "Are you sure?"
+msgstr "Is u seker?"
+
+msgid "Administration"
+msgstr "Administrasie"
+
+msgid "All"
+msgstr "Almal"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nee"
+
+msgid "Unknown"
+msgstr "Onbekend"
+
+msgid "Any date"
+msgstr "Enige datum"
+
+msgid "Today"
+msgstr "Vandag"
+
+msgid "Past 7 days"
+msgstr "Vorige 7 dae"
+
+msgid "This month"
+msgstr "Hierdie maand"
+
+msgid "This year"
+msgstr "Hierdie jaar"
+
+msgid "No date"
+msgstr "Geen datum"
+
+msgid "Has date"
+msgstr "Het datum"
+
+msgid "Empty"
+msgstr "Leeg"
+
+msgid "Not empty"
+msgstr "Nie leeg nie"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Gee die korrekte %(username)s en wagwoord vir ’n personeelrekening. Let op "
+"dat altwee velde dalk hooflettersensitief is."
+
+msgid "Action:"
+msgstr "Aksie:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Voeg nog ’n %(verbose_name)s by"
+
+msgid "Remove"
+msgstr "Verwyder"
+
+msgid "Addition"
+msgstr "Byvoeging"
+
+msgid "Change"
+msgstr ""
+
+msgid "Deletion"
+msgstr "Verwydering"
+
+msgid "action time"
+msgstr "aksietyd"
+
+msgid "user"
+msgstr "gebruiker"
+
+msgid "content type"
+msgstr "inhoudtipe"
+
+msgid "object id"
+msgstr "objek-ID"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "objek-repr"
+
+msgid "action flag"
+msgstr "aksievlag"
+
+msgid "change message"
+msgstr "veranderingboodskap"
+
+msgid "log entry"
+msgstr "log-inskrywing"
+
+msgid "log entries"
+msgstr "log-inskrywingings"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Het “%(object)s” bygevoeg."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Het “%(object)s” gewysig — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Het “%(object)s” geskrap."
+
+msgid "LogEntry Object"
+msgstr "LogEntry-objek"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Het {name} “{object}” bygevoeg."
+
+msgid "Added."
+msgstr "Bygevoeg."
+
+msgid "and"
+msgstr "en"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Het {fields} vir {name} “{object}” bygevoeg."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Het {fields} verander."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Het {name} “{object}” geskrap."
+
+msgid "No fields changed."
+msgstr "Geen velde het verander nie."
+
+msgid "None"
+msgstr "Geen"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr "Hou “Control” in (of “Command” op ’n Mac) om meer as een te kies."
+
+msgid "Select this object for an action - {}"
+msgstr "Kies dié objek vir ’n aksie - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "Die {name} “{obj}” is suksesvol bygevoeg."
+
+msgid "You may edit it again below."
+msgstr "Dit kan weer hieronder gewysig word."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"Die {name} “{obj}” is suksesvol bygevoeg. Voeg gerus nog ’n {name} onder by."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"Die {name} “{obj}” is suksesvol gewysig. Redigeer dit gerus weer onder."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr ""
+"Die {name} “{obj}” is suksesvol bygevoeg. Redigeer dit gerus weer onder."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"Die {name} “{obj}” is suksesvol bygevoeg. Voeg gerus nog ’n {name} onder by."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "Die {name} “{obj}” is suksesvol gewysig."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Items moet gekies word om aksies op hulle uit te voer. Geen items is "
+"verander nie."
+
+msgid "No action selected."
+msgstr "Geen aksie gekies nie."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "Die %(name)s “%(obj)s” is suksesvol geskrap."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s met ID “%(key)s” bestaan nie. Is dit dalk geskrap?"
+
+#, python-format
+msgid "Add %s"
+msgstr "Voeg %s by"
+
+#, python-format
+msgid "Change %s"
+msgstr "Wysig %s"
+
+#, python-format
+msgid "View %s"
+msgstr "Beskou %s"
+
+msgid "Database error"
+msgstr "Databasisfout"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s is suksesvol verander."
+msgstr[1] "%(count)s %(name)s is suksesvol verander."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s gekies"
+msgstr[1] "Al %(total_count)s gekies"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 uit %(cnt)s gekies"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Verander geskiedenis: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Om %(class_name)s %(instance)s te skrap sal vereis dat die volgende "
+"beskermde verwante objekte geskrap word: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Django-werfadmin"
+
+msgid "Django administration"
+msgstr "Django-administrasie"
+
+msgid "Site administration"
+msgstr "Werfadministrasie"
+
+msgid "Log in"
+msgstr "Meld aan"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "%(app)s-administrasie"
+
+msgid "Page not found"
+msgstr "Bladsy nie gevind nie"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Jammer! Die aangevraagde bladsy kon nie gevind word nie."
+
+msgid "Home"
+msgstr "Tuis"
+
+msgid "Server error"
+msgstr "Bedienerfout"
+
+msgid "Server error (500)"
+msgstr "Bedienerfout (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Bedienerfout <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"’n Fout het voorgekom Dit is via e-pos aan die werfadministrateurs "
+"gerapporteer en behoort binnekort reggestel te word. Dankie vir u geduld."
+
+msgid "Run the selected action"
+msgstr "Voer die gekose aksie uit"
+
+msgid "Go"
+msgstr "Gaan"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Kliek hier om die objekte oor alle bladsye te kies."
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Kies al %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Verwyder keuses"
+
+msgid "Breadcrumbs"
+msgstr "Broodkrummels"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Modelle in die %(name)s-toepassing"
+
+msgid "Add"
+msgstr "Voeg by"
+
+msgid "View"
+msgstr "Bekyk"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "U het nie regte om enigiets te sien of te redigeer nie."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Gee eerstens ’n gebruikernaam en wagwoord. Daarna kan meer gebruikervelde "
+"geredigeer word."
+
+msgid "Enter a username and password."
+msgstr "Vul ’n gebruikersnaam en wagwoord in."
+
+msgid "Change password"
+msgstr "Verander wagwoord"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Korrigeer asb. die fout hier onder."
+msgstr[1] "Korrigeer asb. die foute hier onder."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Vul ’n nuwe wagwoord vir gebruiker <strong>%(username)s</strong> in."
+
+msgid "Skip to main content"
+msgstr "Gaan direk na hoofinhoud"
+
+msgid "Welcome,"
+msgstr "Welkom,"
+
+msgid "View site"
+msgstr "Besoek werf"
+
+msgid "Documentation"
+msgstr "Dokumentasie"
+
+msgid "Log out"
+msgstr "Meld af"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Voeg %(name)s by"
+
+msgid "History"
+msgstr "Geskiedenis"
+
+msgid "View on site"
+msgstr "Bekyk op werf"
+
+msgid "Filter"
+msgstr "Filtreer"
+
+msgid "Hide counts"
+msgstr "Versteek tellings"
+
+msgid "Show counts"
+msgstr "Wys tellings"
+
+msgid "Clear all filters"
+msgstr "Verwyder alle filters"
+
+msgid "Remove from sorting"
+msgstr "Verwyder uit sortering"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Sorteerprioriteit: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Wissel sortering"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Wissel tema (tans: outomaties)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Wissel tema (tans: lig)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Wissel tema (tans: donker)"
+
+msgid "Delete"
+msgstr "Skrap"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Om die %(object_name)s %(escaped_object)s te skrap sou verwante objekte "
+"skrap, maar jou rekening het nie toestemming om die volgende tipes objekte "
+"te skrap nie:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Om die %(object_name)s “%(escaped_object)s” te skrap vereis dat die volgende "
+"beskermde verwante objekte geskrap word:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Wil u definitief die %(object_name)s “%(escaped_object)s” skrap? Al die "
+"volgende verwante items sal geskrap word:"
+
+msgid "Objects"
+msgstr "Objekte"
+
+msgid "Yes, I’m sure"
+msgstr "Ja, ek is seker"
+
+msgid "No, take me back"
+msgstr "Nee, ek wil teruggaan"
+
+msgid "Delete multiple objects"
+msgstr "Skrap meerdere objekte"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Om die gekose %(objects_name)s te skrap sou verwante objekte skrap, maar u "
+"rekening het nie toestemming om die volgende tipes objekte te skrap nie:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Om die gekose %(objects_name)s te skrap vereis dat die volgende beskermde "
+"verwante objekte geskrap word:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Wil u definitief die gekose %(objects_name)s skrap? Al die volgende objekte "
+"en hul verwante items sal geskrap word:"
+
+msgid "Delete?"
+msgstr "Skrap?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Volgens %(filter_title)s "
+
+msgid "Summary"
+msgstr "Opsomming"
+
+msgid "Recent actions"
+msgstr "Onlangse aksies"
+
+msgid "My actions"
+msgstr "My aksies"
+
+msgid "None available"
+msgstr "Niks beskikbaar nie"
+
+msgid "Added:"
+msgstr "Bygevoeg:"
+
+msgid "Changed:"
+msgstr "Gewysig:"
+
+msgid "Deleted:"
+msgstr "Geskrap:"
+
+msgid "Unknown content"
+msgstr "Onbekende inhoud"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Iets is fout met die databasisinstallasie. Maak seker die gepaste "
+"databasistabelle is geskep en maak seker die databasis is leesbaar deur die "
+"gepaste gebruiker."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"U is aangemeld as %(username)s, maar het nie toegang tot hierdie bladsy nie. "
+"Wil u met ’n ander rekening aanmeld?"
+
+msgid "Forgotten your password or username?"
+msgstr "Wagwoord of gebruikersnaam vergeet?"
+
+msgid "Toggle navigation"
+msgstr ""
+
+msgid "Sidebar"
+msgstr "Kantbalk"
+
+msgid "Start typing to filter…"
+msgstr "Tik om te filtreer..."
+
+msgid "Filter navigation items"
+msgstr ""
+
+msgid "Date/time"
+msgstr "Datum/tyd"
+
+msgid "User"
+msgstr "Gebruiker"
+
+msgid "Action"
+msgstr "Aksie"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "inskrywing"
+msgstr[1] "inskrywings"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Dié objek het nie 'n wysigingsgeskiedenis. Dit is waarskynlik nie deur dié "
+"adminwerf bygevoeg nie."
+
+msgid "Show all"
+msgstr "Wys almal"
+
+msgid "Save"
+msgstr "Stoor"
+
+msgid "Popup closing…"
+msgstr "Opspringer sluit tans…"
+
+msgid "Search"
+msgstr "Soek"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s resultaat"
+msgstr[1] "%(counter)s resultate"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s in totaal"
+
+msgid "Save as new"
+msgstr "Stoor as nuwe"
+
+msgid "Save and add another"
+msgstr "Stoor en voeg ’n ander by"
+
+msgid "Save and continue editing"
+msgstr "Stoor en wysig verder"
+
+msgid "Save and view"
+msgstr "Stoor en bekyk"
+
+msgid "Close"
+msgstr "Sluit"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Wysig gekose %(model)s"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Voeg nog ’n %(model)s by"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Skrap gekose %(model)s"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Wys gekose %(model)s"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr ""
+"Dankie vir die kwaliteittyd wat u met die webwerf deurgebring het vandag."
+
+msgid "Log in again"
+msgstr "Meld weer aan"
+
+msgid "Password change"
+msgstr "Wagwoordverandering"
+
+msgid "Your password was changed."
+msgstr "Die wagwoord is verander."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Gee asb. die ou wagwoord t.w.v. sekuriteit, en gee dan die nuwe wagwoord "
+"twee keer sodat ons kan verifieer dat dit korrek getik is."
+
+msgid "Change my password"
+msgstr "Verander my wagwoord"
+
+msgid "Password reset"
+msgstr "Wagwoordherstel"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Jou wagwoord is gestel. Jy kan nou voortgaan en aanmeld."
+
+msgid "Password reset confirmation"
+msgstr "Bevestig wagwoordherstel"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Tik die nuwe wagwoord twee keer in so ons kan seker wees dat dit korrek "
+"ingetik is."
+
+msgid "New password:"
+msgstr "Nuwe wagwoord:"
+
+msgid "Confirm password:"
+msgstr "Bevestig wagwoord:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Die skakel vir wagwoordherstel was ongeldig, dalk omdat dit reeds gebruik "
+"is. Vra gerus ’n nuwe een aan."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Ons het instruksies gestuur om ’n wagwoord in te stel as ’n rekening bestaan "
+"met die gegewe e-posadres. Dit behoort binnekort afgelewer te word."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"As u geen e-pos ontvang nie, kontroleer dat die e-posadres waarmee "
+"geregistreer is, gegee is, en kontroleer die gemorspos."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"U ontvang hierdie e-pos omdat u ’n wagwoordherstel vir u rekening by "
+"%(site_name)s aangevra het."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Gaan asseblief na die volgende bladsy en kies ’n nuwe wagwoord:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "U gebruikernaam vir ingeval u vergeet het:"
+
+msgid "Thanks for using our site!"
+msgstr "Dankie vir die gebruik van ons webwerf!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Die %(site_name)s span"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Die wagwoord vergeet? Tik u e-posadres hieronder en ons sal instruksies vir "
+"die instel van ’n nuwe wagwoord stuur."
+
+msgid "Email address:"
+msgstr "E-posadres:"
+
+msgid "Reset my password"
+msgstr "Herstel my wagwoord"
+
+msgid "Select all objects on this page for an action"
+msgstr "Kies alle objekte op dié bladsy vir ’n aksie"
+
+msgid "All dates"
+msgstr "Alle datums"
+
+#, python-format
+msgid "Select %s"
+msgstr "Kies %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Kies %s om te verander"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Kies %s om te bekyk"
+
+msgid "Date:"
+msgstr "Datum:"
+
+msgid "Time:"
+msgstr "Tyd:"
+
+msgid "Lookup"
+msgstr "Soek"
+
+msgid "Currently:"
+msgstr "Tans:"
+
+msgid "Change:"
+msgstr "Wysig:"

BIN
static/admin/locale/af/LC_MESSAGES/djangojs.mo


+ 324 - 0
static/admin/locale/af/LC_MESSAGES/djangojs.po

@@ -0,0 +1,324 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# F Wolff <friedel@translate.org.za>, 2019,2023
+# Pi Delport <pjdelport@gmail.com>, 2013
+# Pi Delport <pjdelport@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"Last-Translator: F Wolff <friedel@translate.org.za>, 2019,2023\n"
+"Language-Team: Afrikaans (http://app.transifex.com/django/django/language/"
+"af/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: af\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Beskikbare %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Hierdie is die lys beskikbare %s. Kies gerus deur hulle in die boksie "
+"hieronder te merk en dan die “Kies”-knoppie tussen die boksies te klik."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Tik in hierdie blokkie om die lys beskikbare %s te filtreer."
+
+msgid "Filter"
+msgstr "Filteer"
+
+msgid "Choose all"
+msgstr "Kies almal"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Klik om al die %s gelyktydig te kies."
+
+msgid "Choose"
+msgstr "Kies"
+
+msgid "Remove"
+msgstr "Verwyder"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Gekose %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Hierdie is die lys gekose %s. Verwyder gerus deur hulle in die boksie "
+"hieronder te merk en dan die “Verwyder”-knoppie tussen die boksies te klik."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "Tik in hierdie blokkie om die lys gekose %s te filtreer."
+
+msgid "Remove all"
+msgstr "Verwyder almal"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Klik om al die %s gelyktydig te verwyder."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s van %(cnt)s gekies"
+msgstr[1] "%(sel)s van %(cnt)s gekies"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Daar is ongestoorde veranderinge op individuele redigeerbare velde. Deur nou "
+"’n aksie uit te voer, sal ongestoorde veranderinge verlore gaan."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"’n Aksie is gekies, maar die veranderinge aan individuele velde is nog nie "
+"gestoor nie. Klik OK om te stoor. Die aksie sal weer uitgevoer moet word."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"’n Aksie is gekies en geen veranderinge aan individuele velde is gemaak nie. "
+"Dalk op soek na die Gaan-knoppie in plaas van die Stoor-knoppie?"
+
+msgid "Now"
+msgstr "Nou"
+
+msgid "Midnight"
+msgstr "Middernag"
+
+msgid "6 a.m."
+msgstr "06:00"
+
+msgid "Noon"
+msgstr "Middag"
+
+msgid "6 p.m."
+msgstr "18:00"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Let wel: U is %s uur voor die bedienertyd."
+msgstr[1] "Let wel: U is %s ure voor die bedienertyd."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Let wel: U is %s uur agter die bedienertyd."
+msgstr[1] "Let wel: U is %s ure agter die bedienertyd."
+
+msgid "Choose a Time"
+msgstr "Kies ’n tyd"
+
+msgid "Choose a time"
+msgstr "Kies ‘n tyd"
+
+msgid "Cancel"
+msgstr "Kanselleer"
+
+msgid "Today"
+msgstr "Vandag"
+
+msgid "Choose a Date"
+msgstr "Kies ’n datum"
+
+msgid "Yesterday"
+msgstr "Gister"
+
+msgid "Tomorrow"
+msgstr "Môre"
+
+msgid "January"
+msgstr "Januarie"
+
+msgid "February"
+msgstr "Februarie"
+
+msgid "March"
+msgstr "Maart"
+
+msgid "April"
+msgstr "April"
+
+msgid "May"
+msgstr "Mei"
+
+msgid "June"
+msgstr "Junie"
+
+msgid "July"
+msgstr "Julie"
+
+msgid "August"
+msgstr "Augustus"
+
+msgid "September"
+msgstr "September"
+
+msgid "October"
+msgstr "Oktober"
+
+msgid "November"
+msgstr "November"
+
+msgid "December"
+msgstr "Desember"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Jan"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Feb"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Mrt"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Apr"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "Mei"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "Jun"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "Jul"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Aug"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Sep"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Okt"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Nov"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Des"
+
+msgid "Sunday"
+msgstr "Sondag"
+
+msgid "Monday"
+msgstr "Maandag"
+
+msgid "Tuesday"
+msgstr "Dinsdag"
+
+msgid "Wednesday"
+msgstr "Woensdag"
+
+msgid "Thursday"
+msgstr "Donderdag"
+
+msgid "Friday"
+msgstr "Vrydag"
+
+msgid "Saturday"
+msgstr "Saterdag"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "Son"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "Ma"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "Di"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "Wo"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "Do"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "Vr"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "Sa"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "S"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "M"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "D"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "W"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "D"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "V"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "S"
+
+msgid "Show"
+msgstr "Wys"
+
+msgid "Hide"
+msgstr "Versteek"

BIN
static/admin/locale/am/LC_MESSAGES/django.mo


+ 636 - 0
static/admin/locale/am/LC_MESSAGES/django.po

@@ -0,0 +1,636 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-19 16:49+0100\n"
+"PO-Revision-Date: 2017-09-19 17:44+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Amharic (http://www.transifex.com/django/django/language/"
+"am/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: am\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "%(count)d %(items)s በተሳካ ሁኔታ ተወግድዋል:: "
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "%(name)s ማስወገድ አይቻልም"
+
+msgid "Are you sure?"
+msgstr "እርግጠኛ ነህ?"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "የተመረጡትን %(verbose_name_plural)s አስወግድ"
+
+msgid "Administration"
+msgstr ""
+
+msgid "All"
+msgstr "ሁሉም"
+
+msgid "Yes"
+msgstr "አዎ"
+
+msgid "No"
+msgstr "አይደለም"
+
+msgid "Unknown"
+msgstr "ያልታወቀ"
+
+msgid "Any date"
+msgstr "ማንኛውም ቀን"
+
+msgid "Today"
+msgstr "ዛሬ"
+
+msgid "Past 7 days"
+msgstr "ያለፉት 7 ቀናት"
+
+msgid "This month"
+msgstr "በዚህ ወር"
+
+msgid "This year"
+msgstr "በዚህ አመት"
+
+msgid "No date"
+msgstr ""
+
+msgid "Has date"
+msgstr ""
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+
+msgid "Action:"
+msgstr "ተግባር:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "ሌላ %(verbose_name)s ጨምር"
+
+msgid "Remove"
+msgstr "አጥፋ"
+
+msgid "action time"
+msgstr "ተግባሩ የተፈፀመበት ጊዜ"
+
+msgid "user"
+msgstr ""
+
+msgid "content type"
+msgstr ""
+
+msgid "object id"
+msgstr ""
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/3/library/functions.html#repr)
+msgid "object repr"
+msgstr ""
+
+msgid "action flag"
+msgstr ""
+
+msgid "change message"
+msgstr "መልዕክት ለውጥ"
+
+msgid "log entry"
+msgstr ""
+
+msgid "log entries"
+msgstr ""
+
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr "\"%(object)s\" ተጨምሯል::"
+
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "\"%(object)s\" - %(changes)s ተቀይሯል"
+
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr "\"%(object)s.\" ተወግድዋል"
+
+msgid "LogEntry Object"
+msgstr ""
+
+#, python-brace-format
+msgid "Added {name} \"{object}\"."
+msgstr ""
+
+msgid "Added."
+msgstr ""
+
+msgid "and"
+msgstr "እና"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} \"{object}\"."
+msgstr ""
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr ""
+
+#, python-brace-format
+msgid "Deleted {name} \"{object}\"."
+msgstr ""
+
+msgid "No fields changed."
+msgstr "ምንም \"ፊልድ\" አልተቀየረም::"
+
+msgid "None"
+msgstr "ምንም"
+
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was added successfully."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was changed successfully."
+msgstr ""
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+
+msgid "No action selected."
+msgstr "ምንም ተግባር አልተመረጠም::"
+
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" በተሳካ ሁኔታ ተወግድዋል:: "
+
+#, python-format
+msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgstr ""
+
+#, python-format
+msgid "Add %s"
+msgstr "%s ጨምር"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s ቀይር"
+
+msgid "Database error"
+msgstr "የ(ዳታቤዝ) ችግር"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s በተሳካ ሁኔታ ተቀይሯል::"
+msgstr[1] "%(count)s %(name)s በተሳካ ሁኔታ ተቀይረዋል::"
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s ተመርጠዋል"
+msgstr[1] "ሁሉም %(total_count)s ተመርጠዋል"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 of %(cnt)s ተመርጠዋል"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "ታሪኩን ቀይር: %s"
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+
+msgid "Django site admin"
+msgstr "ጃንጎ ድህረ-ገጽ አስተዳዳሪ"
+
+msgid "Django administration"
+msgstr "ጃንጎ አስተዳደር"
+
+msgid "Site administration"
+msgstr "ድህረ-ገጽ አስተዳደር"
+
+msgid "Log in"
+msgstr ""
+
+#, python-format
+msgid "%(app)s administration"
+msgstr ""
+
+msgid "Page not found"
+msgstr "ድህረ-ገጹ የለም"
+
+msgid "We're sorry, but the requested page could not be found."
+msgstr "ይቅርታ! የፈለጉት ድህረ-ገጽ የለም::"
+
+msgid "Home"
+msgstr "ሆም"
+
+msgid "Server error"
+msgstr "የሰርቨር ችግር"
+
+msgid "Server error (500)"
+msgstr "የሰርቨር ችግር (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "የሰርቨር ችግር <em>(500)</em>"
+
+msgid ""
+"There's been an error. It's been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+
+msgid "Run the selected action"
+msgstr "የተመረጡትን ተግባሮች አስጀምር"
+
+msgid "Go"
+msgstr "ስራ"
+
+msgid "Click here to select the objects across all pages"
+msgstr ""
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "ሁሉንም %(total_count)s %(module_name)s ምረጥ"
+
+msgid "Clear selection"
+msgstr "የተመረጡትን ባዶ ኣድርግ"
+
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+
+msgid "Enter a username and password."
+msgstr "መለያስም(ዩዘርኔም) እና የይለፍቃል(ፓስወርድ) ይስገቡ::"
+
+msgid "Change password"
+msgstr "የይለፍቃል(ፓስወርድ) ቅየር"
+
+msgid "Please correct the error below."
+msgstr "ከታች ያሉትን ችግሮች ያስተካክሉ::"
+
+msgid "Please correct the errors below."
+msgstr ""
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "ለ <strong>%(username)s</strong> መለያ አዲስ የይለፍቃል(ፓስወርድ) ያስገቡ::"
+
+msgid "Welcome,"
+msgstr "እንኳን በደህና መጡ,"
+
+msgid "View site"
+msgstr ""
+
+msgid "Documentation"
+msgstr "መረጃ"
+
+msgid "Log out"
+msgstr "ጨርሰህ ውጣ"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s ጨምር"
+
+msgid "History"
+msgstr "ታሪክ"
+
+msgid "View on site"
+msgstr "ድህረ-ገጹ ላይ ይመልከቱ"
+
+msgid "Filter"
+msgstr "አጣራ"
+
+msgid "Remove from sorting"
+msgstr ""
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr ""
+
+msgid "Toggle sorting"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+
+msgid "Objects"
+msgstr ""
+
+msgid "Yes, I'm sure"
+msgstr "አዎ,እርግጠኛ ነኝ"
+
+msgid "No, take me back"
+msgstr ""
+
+msgid "Delete multiple objects"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+
+msgid "Change"
+msgstr "ቀይር"
+
+msgid "Delete?"
+msgstr "ላስወግድ?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "በ %(filter_title)s"
+
+msgid "Summary"
+msgstr ""
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr ""
+
+msgid "Add"
+msgstr "ጨምር"
+
+msgid "You don't have permission to edit anything."
+msgstr ""
+
+msgid "Recent actions"
+msgstr ""
+
+msgid "My actions"
+msgstr ""
+
+msgid "None available"
+msgstr "ምንም የለም"
+
+msgid "Unknown content"
+msgstr ""
+
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+msgid "Forgotten your password or username?"
+msgstr "የእርሶን መለያስም (ዩዘርኔም) ወይም የይለፍቃል(ፓስወርድ)ዘነጉት?"
+
+msgid "Date/time"
+msgstr "ቀን/ጊዜ"
+
+msgid "User"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+
+msgid "Show all"
+msgstr "ሁሉንም አሳይ"
+
+msgid "Save"
+msgstr ""
+
+msgid "Popup closing..."
+msgstr ""
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr ""
+
+msgid "Search"
+msgstr "ፈልግ"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] " %(counter)s ውጤት"
+msgstr[1] "%(counter)s ውጤቶች"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "በአጠቃላይ %(full_result_count)s"
+
+msgid "Save as new"
+msgstr ""
+
+msgid "Save and add another"
+msgstr ""
+
+msgid "Save and continue editing"
+msgstr ""
+
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "ዛሬ ድህረ-ገዓችንን ላይ ጥሩ ጊዜ ስላሳለፉ እናመሰግናለን::"
+
+msgid "Log in again"
+msgstr "በድጋሜ ይግቡ"
+
+msgid "Password change"
+msgstr "የይለፍቃል(ፓስወርድ) ቅየራ"
+
+msgid "Your password was changed."
+msgstr "የይለፍቃልዎን(ፓስወርድ) ተቀይሯል::"
+
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+
+msgid "Change my password"
+msgstr "የይለፍቃል(ፓስወርድ) ቀይር"
+
+msgid "Password reset"
+msgstr ""
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr ""
+
+msgid "Password reset confirmation"
+msgstr ""
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+
+msgid "New password:"
+msgstr "አዲስ የይለፍቃል(ፓስወርድ):"
+
+msgid "Confirm password:"
+msgstr "የይለፍቃልዎን(ፓስወርድ) በድጋሜ በማስገባት ያረጋግጡ:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"ኢ-ሜል ካልደረስዎት እባክዎን የተመዘገቡበትን የኢ-ሜል አድራሻ ትክክለኛነት ይረጋግጡእንዲሁም ኢ-ሜል (ስፓም) ማህደር "
+"ውስጥ ይመልከቱ::"
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"ይህ ኢ-ሜል የደረስዎት %(site_name)s ላይ እንደ አዲስ የይለፍቃል(ፓስወርድ) ለ ለመቀየር ስለጠየቁ ነው::"
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "እባክዎን ወደሚከተለው ድህረ-ገዕ በመሄድ አዲስ የይለፍቃል(ፓስወርድ) ያውጡ:"
+
+msgid "Your username, in case you've forgotten:"
+msgstr "ድንገት ከዘነጉት ይኌው የእርሶ መለያስም (ዩዘርኔም):"
+
+msgid "Thanks for using our site!"
+msgstr "ድህረ-ገዓችንን ስለተጠቀሙ እናመሰግናለን!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)s ቡድን"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we'll email "
+"instructions for setting a new one."
+msgstr ""
+"የይለፍቃልዎን(ፓስወርድ)ረሱት? ከታች የኢ-ሜል አድራሻዎን ይስገቡ እና አዲስ ፓስወርድ ለማውጣት የሚያስችል መረጃ "
+"እንልክልዎታለን::"
+
+msgid "Email address:"
+msgstr "ኢ-ሜል አድራሻ:"
+
+msgid "Reset my password"
+msgstr ""
+
+msgid "All dates"
+msgstr "ሁሉም ቀናት"
+
+#, python-format
+msgid "Select %s"
+msgstr "%sን ምረጥ"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "ለመቀየር %sን ምረጥ"
+
+msgid "Date:"
+msgstr "ቀን:"
+
+msgid "Time:"
+msgstr "ጊዜ"
+
+msgid "Lookup"
+msgstr "አፈላልግ"
+
+msgid "Currently:"
+msgstr "በዚህ ጊዜ:"
+
+msgid "Change:"
+msgstr "ቀይር:"

BIN
static/admin/locale/ar/LC_MESSAGES/django.mo


+ 731 - 0
static/admin/locale/ar/LC_MESSAGES/django.po

@@ -0,0 +1,731 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Bashar Al-Abdulhadi, 2015-2016,2018,2020-2021
+# Bashar Al-Abdulhadi, 2014
+# Eyad Toma <d.eyad.t@gmail.com>, 2013
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Muaaz Alsaied, 2020
+# Tony xD <tony23dz@gmail.com>, 2020
+# صفا الفليج <safaalfulaij@hotmail.com>, 2020
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-09-21 10:22+0200\n"
+"PO-Revision-Date: 2021-10-15 21:11+0000\n"
+"Last-Translator: Bashar Al-Abdulhadi\n"
+"Language-Team: Arabic (http://www.transifex.com/django/django/language/ar/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "احذف %(verbose_name_plural)s المحدّدة"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "نجح حذف %(count)d من %(items)s."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "تعذّر حذف %(name)s"
+
+msgid "Are you sure?"
+msgstr "هل أنت متأكد؟"
+
+msgid "Administration"
+msgstr "الإدارة"
+
+msgid "All"
+msgstr "الكل"
+
+msgid "Yes"
+msgstr "نعم"
+
+msgid "No"
+msgstr "لا"
+
+msgid "Unknown"
+msgstr "مجهول"
+
+msgid "Any date"
+msgstr "أي تاريخ"
+
+msgid "Today"
+msgstr "اليوم"
+
+msgid "Past 7 days"
+msgstr "الأيام السبعة الماضية"
+
+msgid "This month"
+msgstr "هذا الشهر"
+
+msgid "This year"
+msgstr "هذه السنة"
+
+msgid "No date"
+msgstr "لا يوجد أي تاريخ"
+
+msgid "Has date"
+msgstr "به تاريخ"
+
+msgid "Empty"
+msgstr "فارغ"
+
+msgid "Not empty"
+msgstr "غير فارغ"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"من فضلك أدخِل قيمة %(username)s الصحيحة وكلمة السر لحساب الطاقم الإداري. "
+"الحقلين حسّاسين لحالة الأحرف."
+
+msgid "Action:"
+msgstr "الإجراء:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "أضِف %(verbose_name)s آخر"
+
+msgid "Remove"
+msgstr "أزِل"
+
+msgid "Addition"
+msgstr "إضافة"
+
+msgid "Change"
+msgstr "تعديل"
+
+msgid "Deletion"
+msgstr "حذف"
+
+msgid "action time"
+msgstr "وقت الإجراء"
+
+msgid "user"
+msgstr "المستخدم"
+
+msgid "content type"
+msgstr "نوع المحتوى"
+
+msgid "object id"
+msgstr "معرّف الكائن"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "التمثيل البصري للكائن"
+
+msgid "action flag"
+msgstr "راية الإجراء"
+
+msgid "change message"
+msgstr "رسالة التغيير"
+
+msgid "log entry"
+msgstr "مدخلة سجلات"
+
+msgid "log entries"
+msgstr "مدخلات السجلات"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "أُضيف ”%(object)s“."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "عُدّل ”%(object)s“ — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "حُذف ”%(object)s“."
+
+msgid "LogEntry Object"
+msgstr "كائن LogEntry"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "أُضيف {name} ‏”{object}“."
+
+msgid "Added."
+msgstr "أُضيف."
+
+msgid "and"
+msgstr "و"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "تغيّرت {fields} ‏{name} ‏”{object}“."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "تغيّرت {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "حُذف {name} ‏”{object}“."
+
+msgid "No fields changed."
+msgstr "لم يتغيّر أي حقل."
+
+msgid "None"
+msgstr "بلا"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"اضغط مفتاح ”Contrl“ (أو ”Command“ على أجهزة ماك) مطوّلًا لتحديد أكثر من عنصر."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "نجحت إضافة {name} ‏”{obj}“."
+
+msgid "You may edit it again below."
+msgstr "يمكنك تعديله ثانيةً أسفله."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr "نجحت إضافة {name} ‏”{obj}“. يمكنك إضافة {name} آخر أسفله."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr "نجح تعديل {name} ‏”{obj}“. يمكنك تعديله ثانيةً أسفله."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr "نجحت إضافة {name} ‏”{obj}“. يمكنك تعديله ثانيةً أسفله."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr "تمت إضافة {name} “{obj}” بنجاح، يمكنك إضافة {name} أخر بالأسفل."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "نجحت إضافة {name} ‏”{obj}“."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr "عليك تحديد العناصر لتطبيق الإجراءات عليها. لم يتغيّر أيّ عنصر."
+
+msgid "No action selected."
+msgstr "لا إجراء محدّد."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "نجح حذف %(name)s ‏”%(obj)s“."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "ما من %(name)s له المعرّف ”%(key)s“. لربّما حُذف أساسًا؟"
+
+#, python-format
+msgid "Add %s"
+msgstr "إضافة %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "تعديل %s"
+
+#, python-format
+msgid "View %s"
+msgstr "عرض %s"
+
+msgid "Database error"
+msgstr "خطـأ في قاعدة البيانات"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "لم يتم تغيير أي شيء"
+msgstr[1] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[2] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[3] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[4] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[5] "تم تغيير %(count)s %(name)s بنجاح."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "لم يتم تحديد أي شيء"
+msgstr[1] "تم تحديد %(total_count)s"
+msgstr[2] "تم تحديد %(total_count)s"
+msgstr[3] "تم تحديد %(total_count)s"
+msgstr[4] "تم تحديد %(total_count)s"
+msgstr[5] "تم تحديد %(total_count)s"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "لا شيء محدد من %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "تاريخ التغيير: %s"
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"حذف %(class_name)s %(instance)s سيتسبب أيضاً بحذف العناصر المرتبطة التالية: "
+"%(related_objects)s"
+
+msgid "Django site admin"
+msgstr "إدارة موقع جانغو"
+
+msgid "Django administration"
+msgstr "إدارة جانغو"
+
+msgid "Site administration"
+msgstr "إدارة الموقع"
+
+msgid "Log in"
+msgstr "ادخل"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "إدارة %(app)s "
+
+msgid "Page not found"
+msgstr "تعذر العثور على الصفحة"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "نحن آسفون، لكننا لم نعثر على الصفحة المطلوبة."
+
+msgid "Home"
+msgstr "الرئيسية"
+
+msgid "Server error"
+msgstr "خطأ في المزود"
+
+msgid "Server error (500)"
+msgstr "خطأ في المزود (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "خطأ في المزود <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"لقد حدث خطأ. تم إبلاغ مسؤولي الموقع عبر البريد الإلكتروني وسيتم إصلاحه "
+"قريبًا. شكرا لصبرك."
+
+msgid "Run the selected action"
+msgstr "نفذ الإجراء المحدّد"
+
+msgid "Go"
+msgstr "نفّذ"
+
+msgid "Click here to select the objects across all pages"
+msgstr "اضغط هنا لتحديد جميع العناصر في جميع الصفحات"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "اختيار %(total_count)s %(module_name)s جميعها"
+
+msgid "Clear selection"
+msgstr "إزالة الاختيار"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "النماذج في تطبيق %(name)s"
+
+msgid "Add"
+msgstr "أضف"
+
+msgid "View"
+msgstr "استعراض"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "ليست لديك الصلاحية لاستعراض أو لتعديل أي شيء."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"أولاً ، أدخل اسم المستخدم وكلمة المرور. بعد ذلك ، ستتمكن من تعديل المزيد من "
+"خيارات المستخدم."
+
+msgid "Enter a username and password."
+msgstr "أدخل اسم مستخدم وكلمة مرور."
+
+msgid "Change password"
+msgstr "غيّر كلمة المرور"
+
+msgid "Please correct the error below."
+msgstr "الرجاء تصحيح الأخطاء أدناه."
+
+msgid "Please correct the errors below."
+msgstr "الرجاء تصحيح الأخطاء أدناه."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "أدخل كلمة مرور جديدة للمستخدم <strong>%(username)s</strong>."
+
+msgid "Welcome,"
+msgstr "أهلا، "
+
+msgid "View site"
+msgstr "عرض الموقع"
+
+msgid "Documentation"
+msgstr "الوثائق"
+
+msgid "Log out"
+msgstr "تسجيل الخروج"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "أضف %(name)s"
+
+msgid "History"
+msgstr "تاريخ"
+
+msgid "View on site"
+msgstr "مشاهدة على الموقع"
+
+msgid "Filter"
+msgstr "مرشّح"
+
+msgid "Clear all filters"
+msgstr "مسح جميع المرشحات"
+
+msgid "Remove from sorting"
+msgstr "إزالة من الترتيب"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "أولوية الترتيب: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "عكس الترتيب"
+
+msgid "Delete"
+msgstr "احذف"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"حذف العنصر %(object_name)s '%(escaped_object)s' سيتسبب بحذف العناصر المرتبطة "
+"به، إلا أنك لا تملك صلاحية حذف العناصر التالية:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"حذف %(object_name)s '%(escaped_object)s' سيتسبب أيضاً بحذف العناصر المرتبطة، "
+"إلا أن حسابك ليس لديه صلاحية حذف أنواع العناصر التالية:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"متأكد أنك تريد حذف العنصر %(object_name)s \"%(escaped_object)s\"؟ سيتم حذف "
+"جميع العناصر التالية المرتبطة به:"
+
+msgid "Objects"
+msgstr "عناصر"
+
+msgid "Yes, I’m sure"
+msgstr "نعم، أنا متأكد"
+
+msgid "No, take me back"
+msgstr "لا, تراجع للخلف"
+
+msgid "Delete multiple objects"
+msgstr "حذف عدّة عناصر"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"حذف عناصر %(objects_name)s المُحدّدة سيتسبب بحذف العناصر المرتبطة، إلا أن "
+"حسابك ليس له صلاحية حذف أنواع العناصر التالية:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"حذف عناصر %(objects_name)s المحدّدة قد يتطلب حذف العناصر المحميّة المرتبطة "
+"التالية:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"أأنت متأكد أنك تريد حذف عناصر %(objects_name)s المحددة؟ جميع العناصر التالية "
+"والعناصر المرتبطة بها سيتم حذفها:"
+
+msgid "Delete?"
+msgstr "احذفه؟"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " حسب %(filter_title)s "
+
+msgid "Summary"
+msgstr "ملخص"
+
+msgid "Recent actions"
+msgstr "آخر الإجراءات"
+
+msgid "My actions"
+msgstr "إجراءاتي"
+
+msgid "None available"
+msgstr "لا يوجد"
+
+msgid "Unknown content"
+msgstr "مُحتوى مجهول"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"هنالك أمر خاطئ في تركيب قاعدة بياناتك، تأكد من أنه تم انشاء جداول قاعدة "
+"البيانات الملائمة، وأن قاعدة البيانات قابلة للقراءة من قبل المستخدم الملائم."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"أنت مسجل الدخول بإسم المستخدم  %(username)s, ولكنك غير مخول للوصول لهذه "
+"الصفحة. هل ترغب بتسجيل الدخول بحساب آخر؟"
+
+msgid "Forgotten your password or username?"
+msgstr "نسيت كلمة المرور أو اسم المستخدم الخاص بك؟"
+
+msgid "Toggle navigation"
+msgstr "تغيير التصفّح"
+
+msgid "Start typing to filter…"
+msgstr "ابدأ الكتابة للتصفية ..."
+
+msgid "Filter navigation items"
+msgstr "تصفية عناصر التصفح"
+
+msgid "Date/time"
+msgstr "التاريخ/الوقت"
+
+msgid "User"
+msgstr "المستخدم"
+
+msgid "Action"
+msgstr "إجراء"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"ليس لهذا العنصر سجلّ تغييرات، على الأغلب أنه لم يُنشأ من خلال نظام إدارة "
+"الموقع."
+
+msgid "Show all"
+msgstr "أظهر الكل"
+
+msgid "Save"
+msgstr "احفظ"
+
+msgid "Popup closing…"
+msgstr "جاري إغلاق النافذة المنبثقة..."
+
+msgid "Search"
+msgstr "ابحث"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "لا نتائج"
+msgstr[1] "نتيجة واحدة"
+msgstr[2] "نتيجتان"
+msgstr[3] "%(counter)s نتائج"
+msgstr[4] "%(counter)s نتيجة"
+msgstr[5] "%(counter)s نتيجة"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "المجموع %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "احفظ كجديد"
+
+msgid "Save and add another"
+msgstr "احفظ وأضف آخر"
+
+msgid "Save and continue editing"
+msgstr "احفظ واستمر بالتعديل"
+
+msgid "Save and view"
+msgstr "احفظ واستعرض"
+
+msgid "Close"
+msgstr "إغلاق"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "تغيير %(model)s المختارة"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "أضف %(model)s آخر"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "حذف %(model)s المختارة"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "شكرا لقضاء بعض الوقت الجيد في الموقع اليوم."
+
+msgid "Log in again"
+msgstr "ادخل مجدداً"
+
+msgid "Password change"
+msgstr "غيّر كلمة مرورك"
+
+msgid "Your password was changed."
+msgstr "تمّ تغيير كلمة مرورك."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"رجاءً أدخل كلمة المرور القديمة، للأمان، ثم أدخل كلمة المرور الجديدة مرتين "
+"لنتأكد بأنك قمت بإدخالها بشكل صحيح."
+
+msgid "Change my password"
+msgstr "غيّر كلمة مروري"
+
+msgid "Password reset"
+msgstr "استعادة كلمة المرور"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "تم تعيين كلمة مرورك. يمكن الاستمرار وتسجيل دخولك الآن."
+
+msgid "Password reset confirmation"
+msgstr "تأكيد استعادة كلمة المرور"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "رجاءً أدخل كلمة مرورك الجديدة مرتين كي تتأكّد من كتابتها بشكل صحيح."
+
+msgid "New password:"
+msgstr "كلمة المرور الجديدة:"
+
+msgid "Confirm password:"
+msgstr "أكّد كلمة المرور:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"رابط استعادة كلمة المرور غير صحيح، ربما لأنه استُخدم من قبل. رجاءً اطلب "
+"استعادة كلمة المرور مرة أخرى."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"تم إرسال بريد إلكتروني بالتعليمات لضبط كلمة المرور الخاصة بك، وذلك في حال "
+"تواجد حساب بنفس البريد الإلكتروني الذي أدخلته. سوف تستقبل البريد الإلكتروني "
+"قريباً"
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"في حال عدم إستقبال البريد الإلكتروني، الرجاء التأكد من إدخال عنوان بريدك "
+"الإلكتروني الخاص بحسابك ومراجعة مجلد الرسائل غير المرغوب بها."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"لقد قمت بتلقى هذه الرسالة لطلبك بإعادة تعين كلمة المرور لحسابك الشخصي على "
+"%(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "رجاءً اذهب إلى الصفحة التالية واختر كلمة مرور جديدة:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "اسم المستخدم الخاص بك، في حال كنت قد نسيته:"
+
+msgid "Thanks for using our site!"
+msgstr "شكراً لاستخدامك موقعنا!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "فريق %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"هل نسيت كلمة المرور؟ أدخل عنوان بريدك الإلكتروني أدناه وسوف نقوم بإرسال "
+"تعليمات للحصول على كلمة مرور جديدة."
+
+msgid "Email address:"
+msgstr "عنوان البريد الإلكتروني:"
+
+msgid "Reset my password"
+msgstr "استعد كلمة مروري"
+
+msgid "All dates"
+msgstr "كافة التواريخ"
+
+#, python-format
+msgid "Select %s"
+msgstr "اختر %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "اختر %s لتغييره"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "اختر %s للاستعراض"
+
+msgid "Date:"
+msgstr "التاريخ:"
+
+msgid "Time:"
+msgstr "الوقت:"
+
+msgid "Lookup"
+msgstr "ابحث"
+
+msgid "Currently:"
+msgstr "حالياً:"
+
+msgid "Change:"
+msgstr "تغيير:"

BIN
static/admin/locale/ar/LC_MESSAGES/djangojs.mo


+ 278 - 0
static/admin/locale/ar/LC_MESSAGES/djangojs.po

@@ -0,0 +1,278 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Bashar Al-Abdulhadi, 2015,2020-2021
+# Bashar Al-Abdulhadi, 2014
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Omar Lajam, 2020
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-15 09:00+0100\n"
+"PO-Revision-Date: 2021-10-15 21:27+0000\n"
+"Last-Translator: Bashar Al-Abdulhadi\n"
+"Language-Team: Arabic (http://www.transifex.com/django/django/language/ar/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "%s المتوفرة"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"هذه قائمة %s المتوفرة. يمكنك اختيار بعضها بانتقائها في الصندوق أدناه ثم "
+"الضغط على سهم الـ\"اختيار\" بين الصندوقين."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "اكتب في هذا الصندوق لتصفية قائمة %s المتوفرة."
+
+msgid "Filter"
+msgstr "تصفية"
+
+msgid "Choose all"
+msgstr "اختر الكل"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "اضغط لاختيار جميع %s جملة واحدة."
+
+msgid "Choose"
+msgstr "اختيار"
+
+msgid "Remove"
+msgstr "احذف"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "%s المُختارة"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"هذه قائمة %s المحددة. يمكنك إزالة بعضها باختيارها في الصندوق أدناه ثم اضغط "
+"على سهم الـ\"إزالة\" بين الصندوقين."
+
+msgid "Remove all"
+msgstr "إزالة الكل"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "اضغط لإزالة جميع %s المحددة جملة واحدة."
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "لا شي محدد"
+msgstr[1] "%(sel)s من %(cnt)s محدد"
+msgstr[2] "%(sel)s من %(cnt)s محدد"
+msgstr[3] "%(sel)s من %(cnt)s محددة"
+msgstr[4] "%(sel)s من %(cnt)s محدد"
+msgstr[5] "%(sel)s من %(cnt)s محدد"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"لديك تعديلات غير محفوظة على بعض الحقول القابلة للتعديل. إن نفذت أي إجراء "
+"فسوف تخسر تعديلاتك."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"لقد حددت إجراءً ، لكنك لم تحفظ تغييراتك في الحقول الفردية حتى الآن. يرجى "
+"النقر فوق موافق للحفظ. ستحتاج إلى إعادة تشغيل الإجراء."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"لقد حددت إجراء ، ولم تقم بإجراء أي تغييرات على الحقول الفردية. من المحتمل "
+"أنك تبحث عن الزر أذهب بدلاً من الزر حفظ."
+
+msgid "Now"
+msgstr "الآن"
+
+msgid "Midnight"
+msgstr "منتصف الليل"
+
+msgid "6 a.m."
+msgstr "6 ص."
+
+msgid "Noon"
+msgstr "الظهر"
+
+msgid "6 p.m."
+msgstr "6 مساءً"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[1] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[2] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[3] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[4] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[5] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[1] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[2] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[3] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[4] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[5] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+
+msgid "Choose a Time"
+msgstr "إختر وقت"
+
+msgid "Choose a time"
+msgstr "اختر وقتاً"
+
+msgid "Cancel"
+msgstr "ألغ"
+
+msgid "Today"
+msgstr "اليوم"
+
+msgid "Choose a Date"
+msgstr "إختر تاريخ "
+
+msgid "Yesterday"
+msgstr "أمس"
+
+msgid "Tomorrow"
+msgstr "غداً"
+
+msgid "January"
+msgstr "يناير"
+
+msgid "February"
+msgstr "فبراير"
+
+msgid "March"
+msgstr "مارس"
+
+msgid "April"
+msgstr "أبريل"
+
+msgid "May"
+msgstr "مايو"
+
+msgid "June"
+msgstr "يونيو"
+
+msgid "July"
+msgstr "يوليو"
+
+msgid "August"
+msgstr "أغسطس"
+
+msgid "September"
+msgstr "سبتمبر"
+
+msgid "October"
+msgstr "أكتوبر"
+
+msgid "November"
+msgstr "نوفمبر"
+
+msgid "December"
+msgstr "ديسمبر"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "يناير"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "فبراير"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "مارس"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "إبريل"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "مايو"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "يونيو"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "يوليو"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "أغسطس"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "سبتمبر"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "أكتوبر"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "نوفمبر"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "ديسمبر"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "أحد"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "إثنين"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "ثلاثاء"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "أربعاء"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "خميس"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "جمعة"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "سبت"
+
+msgid "Show"
+msgstr "أظهر"
+
+msgid "Hide"
+msgstr "اخف"

BIN
static/admin/locale/ar_DZ/LC_MESSAGES/django.mo


+ 738 - 0
static/admin/locale/ar_DZ/LC_MESSAGES/django.po

@@ -0,0 +1,738 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jihad Bahmaid Al-Halki, 2022
+# Riterix <infosrabah@gmail.com>, 2019-2020
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-05-17 05:10-0500\n"
+"PO-Revision-Date: 2022-07-25 07:05+0000\n"
+"Last-Translator: Jihad Bahmaid Al-Halki\n"
+"Language-Team: Arabic (Algeria) (http://www.transifex.com/django/django/"
+"language/ar_DZ/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar_DZ\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "حذف سجلات %(verbose_name_plural)s المحددة"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "تم حذف %(count)d %(items)s بنجاح."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "لا يمكن حذف %(name)s"
+
+msgid "Are you sure?"
+msgstr "هل أنت متأكد؟"
+
+msgid "Administration"
+msgstr "الإدارة"
+
+msgid "All"
+msgstr "الكل"
+
+msgid "Yes"
+msgstr "نعم"
+
+msgid "No"
+msgstr "لا"
+
+msgid "Unknown"
+msgstr "مجهول"
+
+msgid "Any date"
+msgstr "أي تاريخ"
+
+msgid "Today"
+msgstr "اليوم"
+
+msgid "Past 7 days"
+msgstr "الأيام السبعة الماضية"
+
+msgid "This month"
+msgstr "هذا الشهر"
+
+msgid "This year"
+msgstr "هذه السنة"
+
+msgid "No date"
+msgstr "لا يوجد أي تاريخ"
+
+msgid "Has date"
+msgstr "به تاريخ"
+
+msgid "Empty"
+msgstr "فارغة"
+
+msgid "Not empty"
+msgstr "ليست فارغة"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"الرجاء إدخال ال%(username)s و كلمة المرور الصحيحين لحساب الطاقم. الحقلين "
+"حساسين وضعية الاحرف."
+
+msgid "Action:"
+msgstr "إجراء:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "إضافة سجل %(verbose_name)s آخر"
+
+msgid "Remove"
+msgstr "أزل"
+
+msgid "Addition"
+msgstr "إضافة"
+
+msgid "Change"
+msgstr "عدّل"
+
+msgid "Deletion"
+msgstr "حذف"
+
+msgid "action time"
+msgstr "وقت الإجراء"
+
+msgid "user"
+msgstr "المستخدم"
+
+msgid "content type"
+msgstr "نوع المحتوى"
+
+msgid "object id"
+msgstr "معرف العنصر"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "ممثل العنصر"
+
+msgid "action flag"
+msgstr "علامة الإجراء"
+
+msgid "change message"
+msgstr "غيّر الرسالة"
+
+msgid "log entry"
+msgstr "مُدخل السجل"
+
+msgid "log entries"
+msgstr "مُدخلات السجل"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "تم إضافة العناصر \\\"%(object)s\\\"."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "تم تعديل العناصر \\\"%(object)s\\\" - %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "تم حذف العناصر \\\"%(object)s.\\\""
+
+msgid "LogEntry Object"
+msgstr "كائن LogEntry"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "تم إضافة {name} \\\"{object}\\\"."
+
+msgid "Added."
+msgstr "تمت الإضافة."
+
+msgid "and"
+msgstr "و"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "تم تغيير {fields} لـ {name} \\\"{object}\\\"."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "تم تغيير {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "تم حذف {name} \\\"{object}\\\"."
+
+msgid "No fields changed."
+msgstr "لم يتم تغيير أية حقول."
+
+msgid "None"
+msgstr "لاشيء"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"استمر بالضغط على مفتاح \\\"Control\\\", او \\\"Command\\\" على أجهزة الماك, "
+"لإختيار أكثر من أختيار واحد."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "تمت إضافة {name} \\\"{obj}\\\" بنجاح."
+
+msgid "You may edit it again below."
+msgstr "يمكن تعديله مرة أخرى أدناه."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr "تمت إضافة {name} \\\"{obj}\\\" بنجاح. يمكنك إضافة {name} آخر أدناه."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr "تم تغيير {name} \\\"{obj}\\\" بنجاح. يمكنك تعديله مرة أخرى أدناه."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr "تمت إضافة {name} \\\"{obj}\\\" بنجاح. يمكنك تعديله مرة أخرى أدناه."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr "تم تغيير {name} \\\"{obj}\\\" بنجاح. يمكنك إضافة {name} آخر أدناه."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "تم تغيير {name} \\\"{obj}\\\" بنجاح."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr "يجب تحديد العناصر لتطبيق الإجراءات عليها. لم يتم تغيير أية عناصر."
+
+msgid "No action selected."
+msgstr "لم يحدد أي إجراء."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "تم حذف %(name)s \\\"%(obj)s\\\" بنجاح."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s ب ID \\\"%(key)s\\\" غير موجود. ربما تم حذفه؟"
+
+#, python-format
+msgid "Add %s"
+msgstr "أضف %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "عدّل %s"
+
+#, python-format
+msgid "View %s"
+msgstr "عرض %s"
+
+msgid "Database error"
+msgstr "خطـأ في قاعدة البيانات"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[1] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[2] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[3] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[4] "تم تغيير %(count)s %(name)s بنجاح."
+msgstr[5] "تم تغيير %(count)s %(name)s بنجاح."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "تم تحديد %(total_count)s"
+msgstr[1] "تم تحديد %(total_count)s"
+msgstr[2] "تم تحديد %(total_count)s"
+msgstr[3] "تم تحديد %(total_count)s"
+msgstr[4] "تم تحديد %(total_count)s"
+msgstr[5] "تم تحديد %(total_count)s"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "لا شيء محدد من %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "تاريخ التغيير: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"حذف %(class_name)s %(instance)s سيتسبب أيضاً بحذف العناصر المرتبطة التالية: "
+"%(related_objects)s"
+
+msgid "Django site admin"
+msgstr "إدارة موقع جانغو"
+
+msgid "Django administration"
+msgstr "إدارة جانغو"
+
+msgid "Site administration"
+msgstr "إدارة الموقع"
+
+msgid "Log in"
+msgstr "ادخل"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "إدارة %(app)s "
+
+msgid "Page not found"
+msgstr "تعذر العثور على الصفحة"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "نحن آسفون، لكننا لم نعثر على الصفحة المطلوبة.\""
+
+msgid "Home"
+msgstr "الرئيسية"
+
+msgid "Server error"
+msgstr "خطأ في المزود"
+
+msgid "Server error (500)"
+msgstr "خطأ في المزود (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "خطأ في المزود <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"كان هناك خطأ. تم إعلام المسؤولين عن الموقع عبر البريد الإلكتروني وسوف يتم "
+"إصلاح الخطأ قريباً. شكراً على صبركم."
+
+msgid "Run the selected action"
+msgstr "نفذ الإجراء المحدّد"
+
+msgid "Go"
+msgstr "نفّذ"
+
+msgid "Click here to select the objects across all pages"
+msgstr "اضغط هنا لتحديد جميع العناصر في جميع الصفحات"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "اختيار %(total_count)s %(module_name)s جميعها"
+
+msgid "Clear selection"
+msgstr "إزالة الاختيار"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "النماذج في تطبيق %(name)s"
+
+msgid "Add"
+msgstr "أضف"
+
+msgid "View"
+msgstr "عرض"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "ليس لديك الصلاحية لعرض أو تعديل أي شيء."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"أولاً، أدخل اسم مستخدم وكلمة مرور. ومن ثم تستطيع تعديل المزيد من خيارات "
+"المستخدم."
+
+msgid "Enter a username and password."
+msgstr "أدخل اسم مستخدم وكلمة مرور."
+
+msgid "Change password"
+msgstr "غيّر كلمة المرور"
+
+msgid "Please correct the error below."
+msgstr "يرجى تصحيح الخطأ أدناه."
+
+msgid "Please correct the errors below."
+msgstr "الرجاء تصحيح الأخطاء أدناه."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "أدخل كلمة مرور جديدة للمستخدم <strong>%(username)s</strong>."
+
+msgid "Welcome,"
+msgstr "أهلا، "
+
+msgid "View site"
+msgstr "عرض الموقع"
+
+msgid "Documentation"
+msgstr "الوثائق"
+
+msgid "Log out"
+msgstr "اخرج"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "أضف %(name)s"
+
+msgid "History"
+msgstr "تاريخ"
+
+msgid "View on site"
+msgstr "مشاهدة على الموقع"
+
+msgid "Filter"
+msgstr "مرشّح"
+
+msgid "Clear all filters"
+msgstr "مسح جميع المرشحات"
+
+msgid "Remove from sorting"
+msgstr "إزالة من الترتيب"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "أولوية الترتيب: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "عكس الترتيب"
+
+msgid "Delete"
+msgstr "احذف"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"حذف العنصر %(object_name)s '%(escaped_object)s' سيتسبب بحذف العناصر المرتبطة "
+"به، إلا أنك لا تملك صلاحية حذف العناصر التالية:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"حذف %(object_name)s '%(escaped_object)s' سيتسبب أيضاً بحذف العناصر المرتبطة، "
+"إلا أن حسابك ليس لديه صلاحية حذف أنواع العناصر التالية:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"متأكد أنك تريد حذف العنصر %(object_name)s \\\"%(escaped_object)s\\\"؟ سيتم "
+"حذف جميع العناصر التالية المرتبطة به:"
+
+msgid "Objects"
+msgstr "عناصر"
+
+msgid "Yes, I’m sure"
+msgstr "نعم، أنا متأكد"
+
+msgid "No, take me back"
+msgstr "لا, تراجع للخلف"
+
+msgid "Delete multiple objects"
+msgstr "حذف عدّة عناصر"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"حذف عناصر %(objects_name)s المُحدّدة سيتسبب بحذف العناصر المرتبطة، إلا أن "
+"حسابك ليس له صلاحية حذف أنواع العناصر التالية:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"حذف عناصر %(objects_name)s المحدّدة قد يتطلب حذف العناصر المحميّة المرتبطة "
+"التالية:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"أأنت متأكد أنك تريد حذف عناصر %(objects_name)s المحددة؟ جميع العناصر التالية "
+"والعناصر المرتبطة بها سيتم حذفها:"
+
+msgid "Delete?"
+msgstr "احذفه؟"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " حسب %(filter_title)s "
+
+msgid "Summary"
+msgstr "ملخص"
+
+msgid "Recent actions"
+msgstr "آخر الإجراءات"
+
+msgid "My actions"
+msgstr "إجراءاتي"
+
+msgid "None available"
+msgstr "لا يوجد"
+
+msgid "Unknown content"
+msgstr "مُحتوى مجهول"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"هنالك أمر خاطئ في تركيب قاعدة بياناتك، تأكد من أنه تم انشاء جداول قاعدة "
+"البيانات الملائمة، وأن قاعدة البيانات قابلة للقراءة من قبل المستخدم الملائم."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"أنت مسجل الدخول بإسم المستخدم %(username)s, ولكنك غير مخول للوصول لهذه "
+"الصفحة. هل ترغب بتسجيل الدخول بحساب آخر؟"
+
+msgid "Forgotten your password or username?"
+msgstr "نسيت كلمة المرور أو اسم المستخدم الخاص بك؟"
+
+msgid "Toggle navigation"
+msgstr "تغيير التنقل"
+
+msgid "Start typing to filter…"
+msgstr "ابدأ بالكتابة لبدء التصفية(الفلترة)..."
+
+msgid "Filter navigation items"
+msgstr "تصفية عناصر التنقل"
+
+msgid "Date/time"
+msgstr "التاريخ/الوقت"
+
+msgid "User"
+msgstr "المستخدم"
+
+msgid "Action"
+msgstr "إجراء"
+
+msgid "entry"
+msgstr ""
+
+msgid "entries"
+msgstr ""
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"ليس لهذا العنصر سجلّ تغييرات، على الأغلب أنه لم يُنشأ من خلال نظام إدارة "
+"الموقع."
+
+msgid "Show all"
+msgstr "أظهر الكل"
+
+msgid "Save"
+msgstr "احفظ"
+
+msgid "Popup closing…"
+msgstr "إغلاق المنبثقة ..."
+
+msgid "Search"
+msgstr "ابحث"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s نتيجة"
+msgstr[1] "%(counter)s نتيجة"
+msgstr[2] "%(counter)s نتيجة"
+msgstr[3] "%(counter)s نتائج"
+msgstr[4] "%(counter)s نتيجة"
+msgstr[5] "%(counter)s نتيجة"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "المجموع %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "احفظ كجديد"
+
+msgid "Save and add another"
+msgstr "احفظ وأضف آخر"
+
+msgid "Save and continue editing"
+msgstr "احفظ واستمر بالتعديل"
+
+msgid "Save and view"
+msgstr "احفظ ثم اعرض"
+
+msgid "Close"
+msgstr "أغلق"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "تغيير %(model)s المختارة"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "أضف %(model)s آخر"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "حذف %(model)s المختارة"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr ""
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "شكرا لأخذك بعض الوقت في الموقع اليوم."
+
+msgid "Log in again"
+msgstr "ادخل مجدداً"
+
+msgid "Password change"
+msgstr "غيّر كلمة مرورك"
+
+msgid "Your password was changed."
+msgstr "تمّ تغيير كلمة مرورك."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"رجاءً أدخل كلمة مرورك القديمة، للأمان، ثم أدخل كلمة مرور الجديدة مرتين كي "
+"تتأكّد من كتابتها بشكل صحيح."
+
+msgid "Change my password"
+msgstr "غيّر كلمة مروري"
+
+msgid "Password reset"
+msgstr "استعادة كلمة المرور"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "تم تعيين كلمة مرورك. يمكن الاستمرار وتسجيل دخولك الآن."
+
+msgid "Password reset confirmation"
+msgstr "تأكيد استعادة كلمة المرور"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "رجاءً أدخل كلمة مرورك الجديدة مرتين كي تتأكّد من كتابتها بشكل صحيح."
+
+msgid "New password:"
+msgstr "كلمة المرور الجديدة:"
+
+msgid "Confirm password:"
+msgstr "أكّد كلمة المرور:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"رابط استعادة كلمة المرور غير صحيح، ربما لأنه استُخدم من قبل. رجاءً اطلب "
+"استعادة كلمة المرور مرة أخرى."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"تم إرسال بريد إلكتروني بالتعليمات لضبط كلمة المرور الخاصة بك, في حال تواجد "
+"حساب بنفس البريد الإلكتروني الذي ادخلته. سوف تستقبل البريد الإلكتروني قريباً"
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"في حال عدم إستقبال البريد الإلكتروني، الرجاء التأكد من إدخال عنوان بريدك "
+"الإلكتروني بشكل صحيح ومراجعة مجلد الرسائل غير المرغوب فيها."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"لقد قمت بتلقى هذه الرسالة لطلبك بإعادة تعين كلمة المرور لحسابك الشخصي على "
+"%(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "رجاءً اذهب إلى الصفحة التالية واختر كلمة مرور جديدة:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "اسم المستخدم الخاص بك، في حال كنت قد نسيته:"
+
+msgid "Thanks for using our site!"
+msgstr "شكراً لاستخدامك موقعنا!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "فريق %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"هل فقدت كلمة المرور؟ أدخل عنوان بريدك الإلكتروني أدناه وسوف نقوم بإرسال "
+"تعليمات للحصول على كلمة مرور جديدة."
+
+msgid "Email address:"
+msgstr "عنوان البريد الإلكتروني:"
+
+msgid "Reset my password"
+msgstr "استعد كلمة مروري"
+
+msgid "All dates"
+msgstr "كافة التواريخ"
+
+#, python-format
+msgid "Select %s"
+msgstr "اختر %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "اختر %s لتغييره"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "حدد %s للعرض"
+
+msgid "Date:"
+msgstr "التاريخ:"
+
+msgid "Time:"
+msgstr "الوقت:"
+
+msgid "Lookup"
+msgstr "ابحث"
+
+msgid "Currently:"
+msgstr "حالياً:"
+
+msgid "Change:"
+msgstr "تغيير:"

BIN
static/admin/locale/ar_DZ/LC_MESSAGES/djangojs.mo


+ 280 - 0
static/admin/locale/ar_DZ/LC_MESSAGES/djangojs.po

@@ -0,0 +1,280 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jihad Bahmaid Al-Halki, 2022
+# Riterix <infosrabah@gmail.com>, 2019-2020
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-05-17 05:26-0500\n"
+"PO-Revision-Date: 2022-07-25 07:59+0000\n"
+"Last-Translator: Jihad Bahmaid Al-Halki\n"
+"Language-Team: Arabic (Algeria) (http://www.transifex.com/django/django/"
+"language/ar_DZ/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar_DZ\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "%s المتوفرة"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"هذه قائمة %s المتوفرة. يمكنك اختيار بعضها بانتقائها في الصندوق أدناه ثم "
+"الضغط على سهم الـ\\\"اختيار\\\" بين الصندوقين."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "اكتب في هذا الصندوق لتصفية قائمة %s المتوفرة."
+
+msgid "Filter"
+msgstr "انتقاء"
+
+msgid "Choose all"
+msgstr "اختر الكل"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "اضغط لاختيار جميع %s جملة واحدة."
+
+msgid "Choose"
+msgstr "اختيار"
+
+msgid "Remove"
+msgstr "احذف"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "%s المختارة"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"هذه قائمة %s المحددة. يمكنك إزالة بعضها باختيارها في الصندوق أدناه ثم اضغط "
+"على سهم الـ\\\"إزالة\\\" بين الصندوقين."
+
+msgid "Remove all"
+msgstr "إزالة الكل"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "اضغط لإزالة جميع %s المحددة جملة واحدة."
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "لا شي محدد"
+msgstr[1] "%(sel)s من %(cnt)s محدد"
+msgstr[2] "%(sel)s من %(cnt)s محدد"
+msgstr[3] "%(sel)s من %(cnt)s محددة"
+msgstr[4] "%(sel)s من %(cnt)s محدد"
+msgstr[5] "%(sel)s من %(cnt)s محدد"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"لديك تعديلات غير محفوظة على بعض الحقول القابلة للتعديل. إن نفذت أي إجراء "
+"فسوف تخسر تعديلاتك."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"اخترت إجراءً لكن دون أن تحفظ تغييرات التي قمت بها. رجاء اضغط زر الموافقة "
+"لتحفظ تعديلاتك. ستحتاج إلى إعادة تنفيذ الإجراء."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr "اخترت إجراءً دون تغيير أي حقل. لعلك تريد زر التنفيذ بدلاً من زر الحفظ."
+
+msgid "Now"
+msgstr "الآن"
+
+msgid "Midnight"
+msgstr "منتصف الليل"
+
+msgid "6 a.m."
+msgstr "6 ص."
+
+msgid "Noon"
+msgstr "الظهر"
+
+msgid "6 p.m."
+msgstr "6 مساء"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[1] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[2] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[3] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[4] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+msgstr[5] "ملاحظة: أنت متقدم بـ %s ساعة من وقت الخادم."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[1] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[2] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[3] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[4] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+msgstr[5] "ملاحظة: أنت متأخر بـ %s ساعة من وقت الخادم."
+
+msgid "Choose a Time"
+msgstr "إختر وقت "
+
+msgid "Choose a time"
+msgstr "إختر وقت "
+
+msgid "Cancel"
+msgstr "ألغ"
+
+msgid "Today"
+msgstr "اليوم"
+
+msgid "Choose a Date"
+msgstr "إختر تاريخ "
+
+msgid "Yesterday"
+msgstr "أمس"
+
+msgid "Tomorrow"
+msgstr "غداً"
+
+msgid "January"
+msgstr "جانفي"
+
+msgid "February"
+msgstr "فيفري"
+
+msgid "March"
+msgstr "مارس"
+
+msgid "April"
+msgstr "أفريل"
+
+msgid "May"
+msgstr "ماي"
+
+msgid "June"
+msgstr "جوان"
+
+msgid "July"
+msgstr "جويليه"
+
+msgid "August"
+msgstr "أوت"
+
+msgid "September"
+msgstr "سبتمبر"
+
+msgid "October"
+msgstr "أكتوبر"
+
+msgid "November"
+msgstr "نوفمبر"
+
+msgid "December"
+msgstr "ديسمبر"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "يناير"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "فبراير"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "مارس"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "أبريل"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "مايو"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "يونيو"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "يوليو"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "أغسطس"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "سبتمبر"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "أكتوبر"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "نوفمبر"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "ديسمبر"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "ح"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "ن"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "ث"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "ع"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "خ"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "ج"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "س"
+
+msgid ""
+"You have already submitted this form. Are you sure you want to submit it "
+"again?"
+msgstr ""
+
+msgid "Show"
+msgstr "أظهر"
+
+msgid "Hide"
+msgstr "اخف"

BIN
static/admin/locale/ast/LC_MESSAGES/django.mo


+ 636 - 0
static/admin/locale/ast/LC_MESSAGES/django.po

@@ -0,0 +1,636 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Ḷḷumex03 <tornes@opmbx.org>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-19 16:49+0100\n"
+"PO-Revision-Date: 2017-09-23 19:51+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Asturian (http://www.transifex.com/django/django/language/"
+"ast/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ast\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "desanciáu con ésitu %(count)d %(items)s."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Nun pue desaniciase %(name)s"
+
+msgid "Are you sure?"
+msgstr "¿De xuru?"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr ""
+
+msgid "Administration"
+msgstr ""
+
+msgid "All"
+msgstr "Too"
+
+msgid "Yes"
+msgstr "Sí"
+
+msgid "No"
+msgstr "Non"
+
+msgid "Unknown"
+msgstr "Desconocíu"
+
+msgid "Any date"
+msgstr "Cualaquier data"
+
+msgid "Today"
+msgstr "Güei"
+
+msgid "Past 7 days"
+msgstr ""
+
+msgid "This month"
+msgstr "Esti mes"
+
+msgid "This year"
+msgstr "Esi añu"
+
+msgid "No date"
+msgstr ""
+
+msgid "Has date"
+msgstr ""
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+
+msgid "Action:"
+msgstr "Aición:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr ""
+
+msgid "Remove"
+msgstr ""
+
+msgid "action time"
+msgstr ""
+
+msgid "user"
+msgstr ""
+
+msgid "content type"
+msgstr ""
+
+msgid "object id"
+msgstr ""
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/3/library/functions.html#repr)
+msgid "object repr"
+msgstr ""
+
+msgid "action flag"
+msgstr ""
+
+msgid "change message"
+msgstr ""
+
+msgid "log entry"
+msgstr ""
+
+msgid "log entries"
+msgstr ""
+
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr "Amestáu \"%(object)s\"."
+
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+msgid "LogEntry Object"
+msgstr ""
+
+#, python-brace-format
+msgid "Added {name} \"{object}\"."
+msgstr ""
+
+msgid "Added."
+msgstr ""
+
+msgid "and"
+msgstr "y"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} \"{object}\"."
+msgstr ""
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr ""
+
+#, python-brace-format
+msgid "Deleted {name} \"{object}\"."
+msgstr ""
+
+msgid "No fields changed."
+msgstr ""
+
+msgid "None"
+msgstr ""
+
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was added successfully."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was changed successfully."
+msgstr ""
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Los oxetos tienen d'usase pa faer aiciones con ellos. Nun se camudó dengún "
+"oxetu."
+
+msgid "No action selected."
+msgstr "Nun s'esbilló denguna aición."
+
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#, python-format
+msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgstr ""
+
+#, python-format
+msgid "Add %s"
+msgstr "Amestar %s"
+
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+msgid "Database error"
+msgstr ""
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] ""
+msgstr[1] ""
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Esbillaos 0 de %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+
+msgid "Django site admin"
+msgstr ""
+
+msgid "Django administration"
+msgstr ""
+
+msgid "Site administration"
+msgstr ""
+
+msgid "Log in"
+msgstr "Aniciar sesión"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr ""
+
+msgid "Page not found"
+msgstr "Nun s'alcontró la páxina"
+
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Sentímoslo, pero nun s'alcuentra la páxina solicitada."
+
+msgid "Home"
+msgstr ""
+
+msgid "Server error"
+msgstr ""
+
+msgid "Server error (500)"
+msgstr ""
+
+msgid "Server Error <em>(500)</em>"
+msgstr ""
+
+msgid ""
+"There's been an error. It's been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Hebo un erru. Repotóse al sitiu d'alministradores per corréu y debería "
+"d'iguase en pocu tiempu. Gracies pola to paciencia."
+
+msgid "Run the selected action"
+msgstr "Executar l'aición esbillada"
+
+msgid "Go"
+msgstr "Dir"
+
+msgid "Click here to select the objects across all pages"
+msgstr ""
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Esbillar too %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Llimpiar esbilla"
+
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+
+msgid "Enter a username and password."
+msgstr ""
+
+msgid "Change password"
+msgstr ""
+
+msgid "Please correct the error below."
+msgstr ""
+
+msgid "Please correct the errors below."
+msgstr ""
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+
+msgid "Welcome,"
+msgstr "Bienllegáu/ada,"
+
+msgid "View site"
+msgstr ""
+
+msgid "Documentation"
+msgstr "Documentación"
+
+msgid "Log out"
+msgstr ""
+
+#, python-format
+msgid "Add %(name)s"
+msgstr ""
+
+msgid "History"
+msgstr ""
+
+msgid "View on site"
+msgstr ""
+
+msgid "Filter"
+msgstr ""
+
+msgid "Remove from sorting"
+msgstr ""
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr ""
+
+msgid "Toggle sorting"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+
+msgid "Objects"
+msgstr ""
+
+msgid "Yes, I'm sure"
+msgstr ""
+
+msgid "No, take me back"
+msgstr ""
+
+msgid "Delete multiple objects"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+
+msgid "Change"
+msgstr ""
+
+msgid "Delete?"
+msgstr ""
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr ""
+
+msgid "Summary"
+msgstr ""
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr ""
+
+msgid "Add"
+msgstr ""
+
+msgid "You don't have permission to edit anything."
+msgstr ""
+
+msgid "Recent actions"
+msgstr ""
+
+msgid "My actions"
+msgstr ""
+
+msgid "None available"
+msgstr ""
+
+msgid "Unknown content"
+msgstr ""
+
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+msgid "Forgotten your password or username?"
+msgstr ""
+
+msgid "Date/time"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+
+msgid "Show all"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Popup closing..."
+msgstr ""
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr ""
+
+msgid "Search"
+msgstr ""
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr ""
+
+msgid "Save as new"
+msgstr ""
+
+msgid "Save and add another"
+msgstr ""
+
+msgid "Save and continue editing"
+msgstr ""
+
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+
+msgid "Log in again"
+msgstr ""
+
+msgid "Password change"
+msgstr ""
+
+msgid "Your password was changed."
+msgstr ""
+
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+
+msgid "Change my password"
+msgstr ""
+
+msgid "Password reset"
+msgstr ""
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr ""
+
+msgid "Password reset confirmation"
+msgstr ""
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+
+msgid "New password:"
+msgstr ""
+
+msgid "Confirm password:"
+msgstr ""
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+
+msgid "Please go to the following page and choose a new password:"
+msgstr ""
+
+msgid "Your username, in case you've forgotten:"
+msgstr ""
+
+msgid "Thanks for using our site!"
+msgstr ""
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr ""
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we'll email "
+"instructions for setting a new one."
+msgstr ""
+
+msgid "Email address:"
+msgstr ""
+
+msgid "Reset my password"
+msgstr ""
+
+msgid "All dates"
+msgstr ""
+
+#, python-format
+msgid "Select %s"
+msgstr ""
+
+#, python-format
+msgid "Select %s to change"
+msgstr ""
+
+msgid "Date:"
+msgstr "Data:"
+
+msgid "Time:"
+msgstr "Hora:"
+
+msgid "Lookup"
+msgstr ""
+
+msgid "Currently:"
+msgstr "Anguaño:"
+
+msgid "Change:"
+msgstr ""

BIN
static/admin/locale/ast/LC_MESSAGES/djangojs.mo


+ 211 - 0
static/admin/locale/ast/LC_MESSAGES/djangojs.po

@@ -0,0 +1,211 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Ḷḷumex03 <tornes@opmbx.org>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-05-17 23:12+0200\n"
+"PO-Revision-Date: 2017-09-20 02:41+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Asturian (http://www.transifex.com/django/django/language/"
+"ast/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ast\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Disponible %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+
+msgid "Filter"
+msgstr "Filtrar"
+
+msgid "Choose all"
+msgstr "Escoyer too"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Primi pa escoyer too %s d'una vegada"
+
+msgid "Choose"
+msgstr "Escoyer"
+
+msgid "Remove"
+msgstr "Desaniciar"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Escoyíu %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+
+msgid "Remove all"
+msgstr "Desaniciar too"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Primi pa desaniciar tolo escoyío %s d'una vegada"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s de %(cnt)s esbilláu"
+msgstr[1] "%(sel)s de %(cnt)s esbillaos"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+
+msgid ""
+"You have selected an action, but you haven't saved your changes to "
+"individual fields yet. Please click OK to save. You'll need to re-run the "
+"action."
+msgstr ""
+"Esbillesti una aición, pero entá nun guardesti les tos camudancies nos "
+"campos individuales. Por favor, primi Aceutar pa guardar. Necesitarás "
+"executar de nueves la aición"
+
+msgid ""
+"You have selected an action, and you haven't made any changes on individual "
+"fields. You're probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Esbillesti una aición, y nun fixesti camudancia dala nos campos "
+"individuales. Quiciabes teas guetando'l botón Dir en cuantes del botón "
+"Guardar."
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] ""
+msgstr[1] ""
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Now"
+msgstr "Agora"
+
+msgid "Choose a Time"
+msgstr ""
+
+msgid "Choose a time"
+msgstr "Escueyi una hora"
+
+msgid "Midnight"
+msgstr "Media nueche"
+
+msgid "6 a.m."
+msgstr ""
+
+msgid "Noon"
+msgstr "Meudía"
+
+msgid "6 p.m."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Encaboxar"
+
+msgid "Today"
+msgstr "Güei"
+
+msgid "Choose a Date"
+msgstr ""
+
+msgid "Yesterday"
+msgstr "Ayeri"
+
+msgid "Tomorrow"
+msgstr "Mañana"
+
+msgid "January"
+msgstr ""
+
+msgid "February"
+msgstr ""
+
+msgid "March"
+msgstr ""
+
+msgid "April"
+msgstr ""
+
+msgid "May"
+msgstr ""
+
+msgid "June"
+msgstr ""
+
+msgid "July"
+msgstr ""
+
+msgid "August"
+msgstr ""
+
+msgid "September"
+msgstr ""
+
+msgid "October"
+msgstr ""
+
+msgid "November"
+msgstr ""
+
+msgid "December"
+msgstr ""
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr ""
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr ""
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr ""
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr ""
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr ""
+
+msgid "Show"
+msgstr "Amosar"
+
+msgid "Hide"
+msgstr "Anubrir"

BIN
static/admin/locale/az/LC_MESSAGES/django.mo


+ 791 - 0
static/admin/locale/az/LC_MESSAGES/django.po

@@ -0,0 +1,791 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Emin Mastizada <emin@linux.com>, 2018,2020
+# Emin Mastizada <emin@linux.com>, 2016
+# Konul Allahverdiyeva <english.koni@gmail.com>, 2016
+# Nicat Məmmədov <n1c4t97@gmail.com>, 2022
+# Nijat Mammadov, 2024
+# Sevdimali <sevdimaliisayev@mail.ru>, 2024
+# Zulfugar Ismayilzadeh <zulfuqar.ismayilzada@gmail.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-08-07 07:05+0000\n"
+"Last-Translator: Sevdimali <sevdimaliisayev@mail.ru>, 2024\n"
+"Language-Team: Azerbaijani (http://app.transifex.com/django/django/language/"
+"az/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: az\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Seçilmiş \"%(verbose_name_plural)s\"ləri/ları sil"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "%(count)d %(items)s uğurla silindi."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "%(name)s silinə bilməz"
+
+msgid "Are you sure?"
+msgstr "Əminsinizmi?"
+
+msgid "Administration"
+msgstr "Administrasiya"
+
+msgid "All"
+msgstr "Hamısı"
+
+msgid "Yes"
+msgstr "Hə"
+
+msgid "No"
+msgstr "Yox"
+
+msgid "Unknown"
+msgstr "Naməlum"
+
+msgid "Any date"
+msgstr "İstənilən tarix"
+
+msgid "Today"
+msgstr "Bu gün"
+
+msgid "Past 7 days"
+msgstr "Son 7 gündə"
+
+msgid "This month"
+msgstr "Bu ay"
+
+msgid "This year"
+msgstr "Bu il"
+
+msgid "No date"
+msgstr "Tarixi yoxdur"
+
+msgid "Has date"
+msgstr "Tarixi mövcuddur"
+
+msgid "Empty"
+msgstr "Boş"
+
+msgid "Not empty"
+msgstr "Boş deyil"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Lütfən, istifadəçi hesabı üçün doğru %(username)s və şifrə daxil edin. "
+"Nəzərə alın ki, hər iki xana böyük-kiçik hərflərə həssasdırlar."
+
+msgid "Action:"
+msgstr "Əməliyyat:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Daha bir %(verbose_name)s əlavə et"
+
+msgid "Remove"
+msgstr "Yığışdır"
+
+msgid "Addition"
+msgstr "Əlavə"
+
+msgid "Change"
+msgstr "Dəyiş"
+
+msgid "Deletion"
+msgstr "Silmə"
+
+msgid "action time"
+msgstr "əməliyyat vaxtı"
+
+msgid "user"
+msgstr "istifadəçi"
+
+msgid "content type"
+msgstr "məzmun növü"
+
+msgid "object id"
+msgstr "obyekt id"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "obyekt repr"
+
+msgid "action flag"
+msgstr "əməliyyat bayrağı"
+
+msgid "change message"
+msgstr "dəyişmə mesajı"
+
+msgid "log entry"
+msgstr "loq yazısı"
+
+msgid "log entries"
+msgstr "loq yazıları"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "“%(object)s” əlavə edildi."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "“%(object)s” dəyişdirildi — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "“%(object)s” silindi."
+
+msgid "LogEntry Object"
+msgstr "LogEntry obyekti"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "{name} “{object}” əlavə edildi."
+
+msgid "Added."
+msgstr "Əlavə edildi."
+
+msgid "and"
+msgstr "və"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "{name} “{object}” üçün {fields} dəyişdirildi."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "{fields} dəyişdirildi."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "{name} “{object}” silindi."
+
+msgid "No fields changed."
+msgstr "Heç bir sahə dəyişmədi."
+
+msgid "None"
+msgstr "Heç biri"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Birdən çox seçmək üçün “Control” və ya Mac üçün “Command” düyməsini basılı "
+"tutun."
+
+msgid "Select this object for an action - {}"
+msgstr "Əməliyyat üçün bu obyekti seçin - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "{name} “{obj}” uğurla əlavə edildi."
+
+msgid "You may edit it again below."
+msgstr "Bunu aşağıda təkrar redaktə edə bilərsiz."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} “{obj}” uğurla əlavə edildi. Aşağıdan başqa bir {name} əlavə edə "
+"bilərsiz."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"{name} “{obj}” uğurla dəyişdirildi. Təkrar aşağıdan dəyişdirə bilərsiz."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"{name} “{obj}” uğurla dəyişdirildi. Aşağıdan başqa bir {name} əlavə edə "
+"bilərsiz."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name} “{obj}” uğurla dəyişdirildi."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Elementlər üzərində əməliyyat aparmaq üçün, siz onları seçməlisiniz. Heç bir "
+"element dəyişmədi."
+
+msgid "No action selected."
+msgstr "Heç bir əməliyyat seçilmədi."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s “%(obj)s” uğurla silindi."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "“%(key)s” ID nömrəli %(name)s mövcud deyil. Bəlkə silinib?"
+
+#, python-format
+msgid "Add %s"
+msgstr "%s əlavə et"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s dəyiş"
+
+#, python-format
+msgid "View %s"
+msgstr "%s gör"
+
+msgid "Database error"
+msgstr "Verilənlər bazası xətası"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s uğurlu dəyişdirildi."
+msgstr[1] "%(count)s %(name)s uğurla dəyişdirildi."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s seçili"
+msgstr[1] "Bütün %(total_count)s seçildi"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "%(cnt)s-dan/dən 0 seçilib"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Dəyişmə tarixi: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"%(class_name)s %(instance)s silinməsi %(related_objects)s obyektlərinin də "
+"silinməsinə gətirib çıxaracaq"
+
+msgid "Django site admin"
+msgstr "Django sayt administratoru"
+
+msgid "Django administration"
+msgstr "Django administrasiya"
+
+msgid "Site administration"
+msgstr "Sayt administrasiyası"
+
+msgid "Log in"
+msgstr "Daxil ol"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "%(app)s administrasiyası"
+
+msgid "Page not found"
+msgstr "Səhifə tapılmadı"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Üzr istəyirik, amma sorğulanan səhifə tapılmadı."
+
+msgid "Home"
+msgstr "Ev"
+
+msgid "Server error"
+msgstr "Serverdə xəta"
+
+msgid "Server error (500)"
+msgstr "Serverdə xəta (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Serverdə xəta <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Xəta baş verdi. Problem sayt administratorlarına e-poçt vasitəsi ilə  "
+"bildirildi və qısa bir zamanda həll olunacaq. Anlayışınız üçün təşəkkür "
+"edirik."
+
+msgid "Run the selected action"
+msgstr "Seçilən əməliyyatı yerinə yetir"
+
+msgid "Go"
+msgstr "İrəli"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Bütün səhifələr üzrə obyektləri seçmək üçün bura klikləyin"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Hamısını seç (%(total_count)s %(module_name)s) "
+
+msgid "Clear selection"
+msgstr "Seçimi təmizlə"
+
+msgid "Breadcrumbs"
+msgstr "Menyu sətri"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "%(name)s tətbiqetməsindəki modellər"
+
+msgid "Add"
+msgstr "Əlavə et"
+
+msgid "View"
+msgstr "Bax"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Heç nəyə baxmağa və ya dəyişməyə icazəniz yoxdur."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Əvvəlcə istifacəçi adı və şifrəni daxil edin. Daha sonra siz daha çox "
+"istifadəçi seçimlərinə düzəliş edə biləcəksiniz."
+
+msgid "Enter a username and password."
+msgstr "İstifadəçi adını və şifrəni daxil edin."
+
+msgid "Change password"
+msgstr "Şifrəni dəyiş"
+
+msgid "Set password"
+msgstr "Şifrə təyin et"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Lütfən, aşağıdakı xətanı düzəldin."
+msgstr[1] "Lütfən, aşağıdakı xətaları düzəldin."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "<strong>%(username)s</strong> istifadəçisi üçün yeni şifrə daxil edin."
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"Bu əməliyyat bu istifadəçi üçün şifrə əsaslı autentifikasiyanı <strong>aktiv "
+"edəcək</strong>."
+
+msgid "Disable password-based authentication"
+msgstr "Şifrə əsaslı autentifikasiyanı ləğv elə."
+
+msgid "Enable password-based authentication"
+msgstr "Şifrə əsaslı autentifikasiyanı aktivləşdir."
+
+msgid "Skip to main content"
+msgstr "Əsas məzmuna keç"
+
+msgid "Welcome,"
+msgstr "Xoş gördük,"
+
+msgid "View site"
+msgstr "Sayta bax"
+
+msgid "Documentation"
+msgstr "Dokumentasiya"
+
+msgid "Log out"
+msgstr "Çıx"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s əlavə et"
+
+msgid "History"
+msgstr "Tarix"
+
+msgid "View on site"
+msgstr "Saytda bax"
+
+msgid "Filter"
+msgstr "Süzgəc"
+
+msgid "Hide counts"
+msgstr "Sayı gizlət"
+
+msgid "Show counts"
+msgstr "Sayı göstər"
+
+msgid "Clear all filters"
+msgstr "Bütün filterləri təmizlə"
+
+msgid "Remove from sorting"
+msgstr "Sıralamadan çıxar"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Sıralama prioriteti: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Sıralamanı çevir"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Görünüşü dəyiş (halhazırkı: avtomatik)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Görünüşü dəyiş (halhazırkı: aydın)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Görünüşü dəyiş (halhazırkı: qaranlıq)"
+
+msgid "Delete"
+msgstr "Sil"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"%(object_name)s \"%(escaped_object)s\" obyektini sildikdə onun bağlı olduğu "
+"obyektlər də silinməlidir. Ancaq sizin hesabın aşağıdakı tip obyektləri "
+"silməyə səlahiyyəti çatmır:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"%(object_name)s \"%(escaped_object)s\" obyektini silmək üçün aşağıdakı "
+"qorunan obyektlər də silinməlidir:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"%(object_name)s \"%(escaped_object)s\" obyektini silməkdə əminsiniz? Ona "
+"bağlı olan aşağıdakı obyektlər də silinəcək:"
+
+msgid "Objects"
+msgstr "Obyektlər"
+
+msgid "Yes, I’m sure"
+msgstr "Bəli, əminəm"
+
+msgid "No, take me back"
+msgstr "Xeyr, geri qayıt"
+
+msgid "Delete multiple objects"
+msgstr "Bir neçə obyekt sil"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"%(objects_name)s obyektini silmək üçün ona bağlı obyektlər də silinməlidir. "
+"Ancaq sizin hesabınızın aşağıdakı tip obyektləri silmək səlahiyyətinə malik "
+"deyil:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"%(objects_name)s obyektini silmək üçün aşağıdakı qorunan obyektlər də "
+"silinməlidir:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Seçdiyiniz %(objects_name)s obyektini silməkdə əminsiniz? Aşağıdakı bütün "
+"obyektlər və ona bağlı digər obyektlər də silinəcək:"
+
+msgid "Delete?"
+msgstr "Silinsin?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " %(filter_title)s görə "
+
+msgid "Summary"
+msgstr "İcmal"
+
+msgid "Recent actions"
+msgstr "Son əməliyyatlar"
+
+msgid "My actions"
+msgstr "Mənim əməliyyatlarım"
+
+msgid "None available"
+msgstr "Heç nə yoxdur"
+
+msgid "Added:"
+msgstr "Əlavə olunub:"
+
+msgid "Changed:"
+msgstr "Dəyişdirilib:"
+
+msgid "Deleted:"
+msgstr "Silinib:"
+
+msgid "Unknown content"
+msgstr "Naməlum məzmun"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Verilənlər bazanızın quraşdırılması ilə bağlı problem var. Müvafiq "
+"cədvəllərinin yaradıldığından və verilənlər bazasının müvafiq istifadəçi "
+"tərəfindən oxuna biləcəyindən əmin olun."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"%(username)s olaraq daxil olmusunuz, amma bu səhifəyə icazəniz yoxdur. Başqa "
+"bir hesaba daxil olmaq istərdiniz?"
+
+msgid "Forgotten your password or username?"
+msgstr "Şifrə və ya istifadəçi adını unutmusuz?"
+
+msgid "Toggle navigation"
+msgstr "Naviqasiyanı dəyiş"
+
+msgid "Sidebar"
+msgstr "Yan panel"
+
+msgid "Start typing to filter…"
+msgstr "Filterləmək üçün yazın..."
+
+msgid "Filter navigation items"
+msgstr "Naviqasiya elementlərini filterlə"
+
+msgid "Date/time"
+msgstr "Tarix/vaxt"
+
+msgid "User"
+msgstr "İstifadəçi"
+
+msgid "Action"
+msgstr "Əməliyyat"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "daxiletmə"
+msgstr[1] "daxiletmələr"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Bu obyektin dəyişiklik tarixçəsi yoxdur. Yəqin ki, bu admin saytı vasitəsilə "
+"əlavə olunmayıb."
+
+msgid "Show all"
+msgstr "Hamısını göstər"
+
+msgid "Save"
+msgstr "Yadda saxla"
+
+msgid "Popup closing…"
+msgstr "Qəfil pəncərə qapadılır…"
+
+msgid "Search"
+msgstr "Axtar"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s nəticə"
+msgstr[1] "%(counter)s nəticə"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "Hamısı birlikdə %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "Yenisi kimi yadda saxla"
+
+msgid "Save and add another"
+msgstr "Yadda saxla və yenisini əlavə et"
+
+msgid "Save and continue editing"
+msgstr "Yadda saxla və redaktəyə davam et"
+
+msgid "Save and view"
+msgstr "Yadda saxla və bax"
+
+msgid "Close"
+msgstr "Bağla"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Seçilmiş %(model)s dəyişdir"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Başqa %(model)s əlavə et"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Seçilmiş %(model)s sil"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Bax: seçilmiş %(model)s "
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "Bu gün veb saytla keyfiyyətli vaxt keçirdiyiniz üçün təşəkkür edirik."
+
+msgid "Log in again"
+msgstr "Yenidən daxil ol"
+
+msgid "Password change"
+msgstr "Şifrəni dəyişmək"
+
+msgid "Your password was changed."
+msgstr "Sizin şifrəniz dəyişdirildi."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Zəhmət olmasa təhlükəsizlik naminə köhnə şifrənizi daxil edin və sonra yeni "
+"şifrənizi iki dəfə daxil edin ki, düzgün daxil yazdığınızı yoxlaya bilək."
+
+msgid "Change my password"
+msgstr "Şifrəmi dəyiş"
+
+msgid "Password reset"
+msgstr "Şifrənin sıfırlanması"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Yeni şifrə artıq qüvvədədir. Yenidən daxil ola bilərsiniz."
+
+msgid "Password reset confirmation"
+msgstr "Şifrə sıfırlanmasının təsdiqi"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "Yeni şifrəni iki dəfə daxil edin ki, səhv etmədiyinizə əmin olaq."
+
+msgid "New password:"
+msgstr "Yeni şifrə:"
+
+msgid "Confirm password:"
+msgstr "Yeni şifrə (bir daha):"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Şifrənin sıfırlanması üçün olan keçid, yəqin ki, artıq istifadə olunub.  "
+"Şifrəni sıfırlamaq üçün yenə müraciət edin."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Şifrəni təyin etmək üçün lazım olan addımlar sizə göndərildi (əgər bu e-poçt "
+"ünvanı ilə hesab varsa təbii ki). Elektron məktub qısa bir müddət ərzində "
+"sizə çatacaq."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"E-poçt gəlməsə, qeydiyyatdan keçdiyiniz e-poçt ünvanını doğru daxil "
+"etdiyinizə əmin olun və spam qovluğunuzu yoxlayın."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"%(site_name)s saytında şifrəni yeniləmək istədiyinizə görə bu məktubu "
+"göndərdik."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Növbəti səhifəyə keçid alın və yeni şifrəni seçin:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "İstifadəçi adınız, əgər unutmusunuzsa:"
+
+msgid "Thanks for using our site!"
+msgstr "Bizim saytdan istifadə etdiyiniz üçün təşəkkür edirik!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)s komandası"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Şifrəni unutmusuz? Epoçt ünvanınızı daxil edin və biz sizə yeni şifrə təyin "
+"etmək üçün nə etmək lazım olduğunu göndərəcəyik."
+
+msgid "Email address:"
+msgstr "E-poçt:"
+
+msgid "Reset my password"
+msgstr "Şifrəmi sıfırla"
+
+msgid "Select all objects on this page for an action"
+msgstr "Əməliyyat üçün bu səhifədəki bütün obyektləri seçin"
+
+msgid "All dates"
+msgstr "Bütün tarixlərdə"
+
+#, python-format
+msgid "Select %s"
+msgstr "%s seç"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "%s dəyişmək üçün seç"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Görmək üçün %s seçin"
+
+msgid "Date:"
+msgstr "Tarix:"
+
+msgid "Time:"
+msgstr "Vaxt:"
+
+msgid "Lookup"
+msgstr "Sorğu"
+
+msgid "Currently:"
+msgstr "Hazırda:"
+
+msgid "Change:"
+msgstr "Dəyişdir:"

BIN
static/admin/locale/az/LC_MESSAGES/djangojs.mo


+ 272 - 0
static/admin/locale/az/LC_MESSAGES/djangojs.po

@@ -0,0 +1,272 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Ali Ismayilov <ali@ismailov.info>, 2011-2012
+# Emin Mastizada <emin@linux.com>, 2016,2020
+# Emin Mastizada <emin@linux.com>, 2016
+# Nicat Məmmədov <n1c4t97@gmail.com>, 2022
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-05-17 05:26-0500\n"
+"PO-Revision-Date: 2022-07-25 07:59+0000\n"
+"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
+"Language-Team: Azerbaijani (http://www.transifex.com/django/django/language/"
+"az/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: az\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Mümkün %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Bu, mümkün %s siyahısıdır. Onlardan bir neçəsini qarşısındakı xanaya işarə "
+"qoymaq və iki xana arasındakı \"Seç\"i tıqlamaqla seçmək olar."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Bu xanaya yazmaqla mümkün %s siyahısını filtrləyə bilərsiniz."
+
+msgid "Filter"
+msgstr "Süzgəc"
+
+msgid "Choose all"
+msgstr "Hamısını seç"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Bütün %s siyahısını seçmək üçün tıqlayın."
+
+msgid "Choose"
+msgstr "Seç"
+
+msgid "Remove"
+msgstr "Yığışdır"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Seçilmiş %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Bu, seçilmiş %s siyahısıdır. Onlardan bir neçəsini aşağıdakı xanaya işarə "
+"qoymaq və iki xana arasındakı \"Sil\"i tıqlamaqla silmək olar."
+
+msgid "Remove all"
+msgstr "Hamısını sil"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Seçilmiş %s siyahısının hamısını silmək üçün tıqlayın."
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s / %(cnt)s seçilib"
+msgstr[1] "%(sel)s / %(cnt)s seçilib"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Bəzi sahələrdə etdiyiniz dəyişiklikləri hələ yadda saxlamamışıq. Əgər "
+"əməliyyatı işə salsanız, dəyişikliklər əldən gedəcək."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Əməliyyat seçmisiniz, amma fərdi sahələrdəki dəyişiklikləriniz hələ də yadda "
+"saxlanılmayıb. Saxlamaq üçün lütfən Tamam düyməsinə klikləyin. Əməliyyatı "
+"təkrar işlətməli olacaqsınız."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Əməliyyat seçmisiniz və fərdi sahələrdə dəyişiklər etməmisiniz. Böyük "
+"ehtimal Saxla düyməsi yerinə Get düyməsinə ehtiyyacınız var."
+
+msgid "Now"
+msgstr "İndi"
+
+msgid "Midnight"
+msgstr "Gecə yarısı"
+
+msgid "6 a.m."
+msgstr "6 a.m."
+
+msgid "Noon"
+msgstr "Günorta"
+
+msgid "6 p.m."
+msgstr "6 p.m."
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Diqqət: Server vaxtından %s saat irəlidəsiniz."
+msgstr[1] "Diqqət: Server vaxtından %s saat irəlidəsiniz."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Diqqət: Server vaxtından %s saat geridəsiniz."
+msgstr[1] "Diqqət: Server vaxtından %s saat geridəsiniz."
+
+msgid "Choose a Time"
+msgstr "Vaxt Seçin"
+
+msgid "Choose a time"
+msgstr "Vaxtı seçin"
+
+msgid "Cancel"
+msgstr "Ləğv et"
+
+msgid "Today"
+msgstr "Bu gün"
+
+msgid "Choose a Date"
+msgstr "Tarix Seçin"
+
+msgid "Yesterday"
+msgstr "Dünən"
+
+msgid "Tomorrow"
+msgstr "Sabah"
+
+msgid "January"
+msgstr "Yanvar"
+
+msgid "February"
+msgstr "Fevral"
+
+msgid "March"
+msgstr "Mart"
+
+msgid "April"
+msgstr "Aprel"
+
+msgid "May"
+msgstr "May"
+
+msgid "June"
+msgstr "İyun"
+
+msgid "July"
+msgstr "İyul"
+
+msgid "August"
+msgstr "Avqust"
+
+msgid "September"
+msgstr "Sentyabr"
+
+msgid "October"
+msgstr "Oktyabr"
+
+msgid "November"
+msgstr "Noyabr"
+
+msgid "December"
+msgstr "Dekabr"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Yan"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Fev"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Mar"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Apr"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "May"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "İyn"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "İyl"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Avq"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Sen"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Okt"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Noy"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Dek"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "B"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "B"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "Ç"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "Ç"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "C"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "C"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "Ş"
+
+msgid ""
+"You have already submitted this form. Are you sure you want to submit it "
+"again?"
+msgstr ""
+
+msgid "Show"
+msgstr "Göstər"
+
+msgid "Hide"
+msgstr "Gizlət"

BIN
static/admin/locale/be/LC_MESSAGES/django.mo


+ 791 - 0
static/admin/locale/be/LC_MESSAGES/django.po

@@ -0,0 +1,791 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Viktar Palstsiuk <vipals@gmail.com>, 2015
+# znotdead <zhirafchik@gmail.com>, 2016-2017,2019-2021,2023-2024
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-08-07 07:05+0000\n"
+"Last-Translator: znotdead <zhirafchik@gmail.com>, "
+"2016-2017,2019-2021,2023-2024\n"
+"Language-Team: Belarusian (http://app.transifex.com/django/django/language/"
+"be/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: be\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Выдаліць абраныя %(verbose_name_plural)s"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Выдалілі %(count)d %(items)s."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Не ўдаецца выдаліць %(name)s"
+
+msgid "Are you sure?"
+msgstr "Ці ўпэўненыя вы?"
+
+msgid "Administration"
+msgstr "Адміністрацыя"
+
+msgid "All"
+msgstr "Усе"
+
+msgid "Yes"
+msgstr "Так"
+
+msgid "No"
+msgstr "Не"
+
+msgid "Unknown"
+msgstr "Невядома"
+
+msgid "Any date"
+msgstr "Хоць-якая дата"
+
+msgid "Today"
+msgstr "Сёньня"
+
+msgid "Past 7 days"
+msgstr "Апошні тыдзень"
+
+msgid "This month"
+msgstr "Гэты месяц"
+
+msgid "This year"
+msgstr "Гэты год"
+
+msgid "No date"
+msgstr "Няма даты"
+
+msgid "Has date"
+msgstr "Мае дату"
+
+msgid "Empty"
+msgstr "Пусты"
+
+msgid "Not empty"
+msgstr "Не пусты"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Калі ласка, увядзіце правільны %(username)s і пароль для службовага рахунку. "
+"Адзначым, што абодва палі могуць быць адчувальныя да рэгістра."
+
+msgid "Action:"
+msgstr "Дзеяньне:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Дадаць яшчэ %(verbose_name)s"
+
+msgid "Remove"
+msgstr "Прыбраць"
+
+msgid "Addition"
+msgstr "Дапаўненьне"
+
+msgid "Change"
+msgstr "Зьмяніць"
+
+msgid "Deletion"
+msgstr "Выдалленне"
+
+msgid "action time"
+msgstr "час дзеяньня"
+
+msgid "user"
+msgstr "карыстальнік"
+
+msgid "content type"
+msgstr "від змесціва"
+
+msgid "object id"
+msgstr "нумар аб’екта"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "прадстаўленьне аб’екта"
+
+msgid "action flag"
+msgstr "від дзеяньня"
+
+msgid "change message"
+msgstr "паведамленьне пра зьмену"
+
+msgid "log entry"
+msgstr "запіс у справаздачы"
+
+msgid "log entries"
+msgstr "запісы ў справаздачы"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Дадалі “%(object)s”."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Зьмянілі «%(object)s» — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Выдалілі «%(object)s»."
+
+msgid "LogEntry Object"
+msgstr "Запіс у справаздачы"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Дадалі {name} “{object}”."
+
+msgid "Added."
+msgstr "Дадалі."
+
+msgid "and"
+msgstr "і"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Змянілі {fields} для {name} “{object}”."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Зьмянілі {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Выдалілі {name} “{object}”."
+
+msgid "No fields changed."
+msgstr "Палі не зьмяняліся."
+
+msgid "None"
+msgstr "Няма"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Утрымлівайце націснутай кнопку“Control”, або “Command” на Mac, каб вылучыць "
+"больш за адзін."
+
+msgid "Select this object for an action - {}"
+msgstr "Абярыце гэты аб'ект для дзеяньня - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "Пасьпяхова дадалі {name} “{obj}”."
+
+msgid "You may edit it again below."
+msgstr "Вы можаце зноўку правіць гэта ніжэй."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr "Пасьпяхова дадалі {name} \"{obj}\". Ніжэй можна дадаць іншы {name}."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr "Пасьпяхова зьмянілі {name} \"{obj}\". Ніжэй яго можна зноўку правіць."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr "Пасьпяхова зьмянілі {name} \"{obj}\". Ніжэй можна дадаць іншы {name}."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "Пасьпяхова зьмянілі {name} \"{obj}\"."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Каб нешта рабіць, трэба спачатку абраць, з чым гэта рабіць. Нічога не "
+"зьмянілася."
+
+msgid "No action selected."
+msgstr "Не абралі дзеяньняў."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "Пасьпяхова выдалілі %(name)s «%(obj)s»."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s з ID \"%(key)s\" не існуе. Магчыма гэта было выдалена раней?"
+
+#, python-format
+msgid "Add %s"
+msgstr "Дадаць %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Зьмяніць %s"
+
+#, python-format
+msgid "View %s"
+msgstr "Праглядзець %s"
+
+msgid "Database error"
+msgstr "База зьвестак дала хібу"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "Зьмянілі %(count)s %(name)s."
+msgstr[1] "Зьмянілі %(count)s %(name)s."
+msgstr[2] "Зьмянілі %(count)s %(name)s."
+msgstr[3] "Зьмянілі %(count)s %(name)s."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "Абралі %(total_count)s"
+msgstr[1] "Абралі ўсе %(total_count)s"
+msgstr[2] "Абралі ўсе %(total_count)s"
+msgstr[3] "Абралі ўсе %(total_count)s"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Абралі 0 аб’ектаў з %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Гісторыя зьменаў: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Каб выдаліць %(class_name)s %(instance)s, трэба выдаліць і зьвязаныя "
+"абароненыя аб’екты: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Кіраўнічая пляцоўка «Джэнґа»"
+
+msgid "Django administration"
+msgstr "Кіраваць «Джэнґаю»"
+
+msgid "Site administration"
+msgstr "Кіраваць пляцоўкаю"
+
+msgid "Log in"
+msgstr "Увайсьці"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "Адміністрацыя %(app)s"
+
+msgid "Page not found"
+msgstr "Бачыну не знайшлі"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "На жаль, запытаную бачыну немагчыма знайсьці."
+
+msgid "Home"
+msgstr "Пачатак"
+
+msgid "Server error"
+msgstr "Паслужнік даў хібу"
+
+msgid "Server error (500)"
+msgstr "Паслужнік даў хібу (памылка 500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Паслужнік даў хібу <em>(памылка 500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Адбылася памылка. Паведамленне пра памылку было адаслана адміністратарам "
+"сайту па электроннай пошце і яна павінна быць выпраўлена ў бліжэйшы час. "
+"Дзякуй за ваша цярпенне."
+
+msgid "Run the selected action"
+msgstr "Выканаць абранае дзеяньне"
+
+msgid "Go"
+msgstr "Выканаць"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Каб абраць аб’екты на ўсіх бачынах, націсьніце сюды"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Абраць усе %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Не абіраць нічога"
+
+msgid "Breadcrumbs"
+msgstr "Навігацыйны ланцужок"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Мадэлі ў %(name)s праграме"
+
+msgid "Add"
+msgstr "Дадаць"
+
+msgid "View"
+msgstr "Праглядзець"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Вы ня маеце дазволу праглядаць ці нешта зьмяняць."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Спачатку пазначце імя карыстальніка ды пароль. Потым можна будзе наставіць "
+"іншыя можнасьці."
+
+msgid "Enter a username and password."
+msgstr "Пазначце імя карыстальніка ды пароль."
+
+msgid "Change password"
+msgstr "Зьмяніць пароль"
+
+msgid "Set password"
+msgstr "Усталяваць пароль"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Калі ласка, выпраўце памылкy, адзначаную ніжэй."
+msgstr[1] "Калі ласка, выпраўце памылкі, адзначаныя ніжэй."
+msgstr[2] "Калі ласка, выпраўце памылкі, адзначаныя ніжэй."
+msgstr[3] "Калі ласка, выпраўце памылкі, адзначаныя ніжэй."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Пазначце пароль для карыстальніка «<strong>%(username)s</strong>»."
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"Гэта дзеянне <strong>ўключыць</strong> аўтэнтыфікацыю на аснове пароля для "
+"гэтага карыстальніка."
+
+msgid "Disable password-based authentication"
+msgstr "Адключыць аўтэнтыфікацыю на аснове пароля"
+
+msgid "Enable password-based authentication"
+msgstr "Уключыць аўтэнтыфікацыю на аснове пароля"
+
+msgid "Skip to main content"
+msgstr "Перайсці да асноўнага зместу"
+
+msgid "Welcome,"
+msgstr "Вітаем,"
+
+msgid "View site"
+msgstr "Адкрыць сайт"
+
+msgid "Documentation"
+msgstr "Дакумэнтацыя"
+
+msgid "Log out"
+msgstr "Выйсьці"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Дадаць %(name)s"
+
+msgid "History"
+msgstr "Гісторыя"
+
+msgid "View on site"
+msgstr "Зірнуць на пляцоўцы"
+
+msgid "Filter"
+msgstr "Прасеяць"
+
+msgid "Hide counts"
+msgstr "Схаваць падлік"
+
+msgid "Show counts"
+msgstr "Паказаць падлік"
+
+msgid "Clear all filters"
+msgstr "Ачысьціць усе фільтры"
+
+msgid "Remove from sorting"
+msgstr "Прыбраць з упарадкаванага"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Парадак: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Парадкаваць наадварот"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Пераключыць тэму (бягучая тэма: аўтаматычная)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Пераключыць тэму (бягучая тэма: светлая)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Пераключыць тэму (бягучая тэма: цёмная)"
+
+msgid "Delete"
+msgstr "Выдаліць"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Калі выдаліць %(object_name)s «%(escaped_object)s», выдаляцца зьвязаныя "
+"аб’екты, але ваш рахунак ня мае дазволу выдаляць наступныя віды аб’ектаў:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Каб выдаліць %(object_name)s «%(escaped_object)s», трэба выдаліць і "
+"зьвязаныя абароненыя аб’екты:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Ці выдаліць %(object_name)s «%(escaped_object)s»? Усе наступныя зьвязаныя "
+"складнікі выдаляцца:"
+
+msgid "Objects"
+msgstr "Аб'екты"
+
+msgid "Yes, I’m sure"
+msgstr "Так, я ўпэўнены"
+
+msgid "No, take me back"
+msgstr "Не, вярнуцца назад"
+
+msgid "Delete multiple objects"
+msgstr "Выдаліць некалькі аб’ектаў"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Калі выдаліць абранае (%(objects_name)s), выдаляцца зьвязаныя аб’екты, але "
+"ваш рахунак ня мае дазволу выдаляць наступныя віды аб’ектаў:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Каб выдаліць абранае (%(objects_name)s), трэба выдаліць і зьвязаныя "
+"абароненыя аб’екты:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Ці выдаліць абранае (%(objects_name)s)? Усе наступныя аб’екты ды зьвязаныя "
+"зь імі складнікі выдаляцца:"
+
+msgid "Delete?"
+msgstr "Ці выдаліць?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " %(filter_title)s "
+
+msgid "Summary"
+msgstr "Рэзюмэ"
+
+msgid "Recent actions"
+msgstr "Нядаўнія дзеянні"
+
+msgid "My actions"
+msgstr "Мае дзеяньні"
+
+msgid "None available"
+msgstr "Недаступнае"
+
+msgid "Added:"
+msgstr "Дадалі:"
+
+msgid "Changed:"
+msgstr "Зьмянілі:"
+
+msgid "Deleted:"
+msgstr "Выдалены:"
+
+msgid "Unknown content"
+msgstr "Невядомае зьмесьціва"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Нешта ня так з усталяванаю базаю зьвестак. Упэўніцеся, што ў базе стварылі "
+"патрэбныя табліцы, і што базу можа чытаць адпаведны карыстальнік."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Вы апазнаны як %(username)s але не аўтарызаваны для доступу гэтай бачыны. Не "
+"жадаеце лі вы ўвайсці пад іншым карыстальнікам?"
+
+msgid "Forgotten your password or username?"
+msgstr "Забыліся на імя ці пароль?"
+
+msgid "Toggle navigation"
+msgstr "Пераключыць навігацыю"
+
+msgid "Sidebar"
+msgstr "бакавая панэль"
+
+msgid "Start typing to filter…"
+msgstr "Пачніце ўводзіць, каб адфільтраваць..."
+
+msgid "Filter navigation items"
+msgstr "Фільтраваць элементы навігацыі"
+
+msgid "Date/time"
+msgstr "Час, дата"
+
+msgid "User"
+msgstr "Карыстальнік"
+
+msgid "Action"
+msgstr "Дзеяньне"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "запіс"
+msgstr[1] "запісы"
+msgstr[2] "запісы"
+msgstr[3] "запісы"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Аб’ект ня мае гісторыі зьменаў. Мажліва, яго дадавалі не праз кіраўнічую "
+"пляцоўку."
+
+msgid "Show all"
+msgstr "Паказаць усё"
+
+msgid "Save"
+msgstr "Захаваць"
+
+msgid "Popup closing…"
+msgstr "Усплывальнае акно зачыняецца..."
+
+msgid "Search"
+msgstr "Шукаць"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s вынік"
+msgstr[1] "%(counter)s вынікі"
+msgstr[2] "%(counter)s вынікаў"
+msgstr[3] "%(counter)s вынікаў"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "Разам %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "Захаваць як новы"
+
+msgid "Save and add another"
+msgstr "Захаваць і дадаць іншы"
+
+msgid "Save and continue editing"
+msgstr "Захаваць і працягваць правіць"
+
+msgid "Save and view"
+msgstr "Захаваць і праглядзець"
+
+msgid "Close"
+msgstr "Закрыць"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Змяніць абраныя %(model)s"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Дадаць яшчэ %(model)s"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Выдаліць абраныя %(model)s"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Праглядзець абраныя %(model)s"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "Дзякуем за час, які вы сёньня правялі на гэтай пляцоўцы."
+
+msgid "Log in again"
+msgstr "Увайсьці зноўку"
+
+msgid "Password change"
+msgstr "Зьмяніць пароль"
+
+msgid "Your password was changed."
+msgstr "Ваш пароль зьмяніўся."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Дзеля бясьпекі пазначце стары пароль, а потым набярыце новы пароль двойчы — "
+"каб упэўніцца, што набралі без памылак."
+
+msgid "Change my password"
+msgstr "Зьмяніць пароль"
+
+msgid "Password reset"
+msgstr "Узнавіць пароль"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Вам усталявалі пароль.  Можаце вярнуцца ды ўвайсьці зноўку."
+
+msgid "Password reset confirmation"
+msgstr "Пацьвердзіце, што трэба ўзнавіць пароль"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "Набярыце новы пароль двойчы — каб упэўніцца, што набралі без памылак."
+
+msgid "New password:"
+msgstr "Новы пароль:"
+
+msgid "Confirm password:"
+msgstr "Пацьвердзіце пароль:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Спасылка ўзнавіць пароль хібная: мажліва таму, што ёю ўжо скарысталіся.  "
+"Запытайцеся ўзнавіць пароль яшчэ раз."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Мы адаслалі па электроннай пошце інструкцыі па ўстаноўцы пароля. Калі існуе "
+"рахунак з электроннай поштай, што вы ўвялі, то Вы павінны атрымаць іх у "
+"бліжэйшы час."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Калі вы не атрымліваеце электронную пошту, калі ласка, пераканайцеся, што вы "
+"ўвялі адрас з якім вы зарэгістраваліся, а таксама праверце тэчку са спамам."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Вы атрымалі гэты ліст, таму што вы прасілі скінуць пароль для ўліковага "
+"запісу карыстальніка на %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Перайдзіце да наступнае бачыны ды абярыце новы пароль:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Імя карыстальніка, калі раптам вы забыліся:"
+
+msgid "Thanks for using our site!"
+msgstr "Дзякуем, што карыстаецеся нашаю пляцоўкаю!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Каманда «%(site_name)s»"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Забыліся пароль? Калі ласка, увядзіце свой адрас электроннай пошты ніжэй, і "
+"мы вышлем інструкцыі па электроннай пошце для ўстаноўкі новага."
+
+msgid "Email address:"
+msgstr "Адрас электроннай пошты:"
+
+msgid "Reset my password"
+msgstr "Узнавіць пароль"
+
+msgid "Select all objects on this page for an action"
+msgstr "Абяраць усе аб'екты на гэтай старонцы для дзеяньня"
+
+msgid "All dates"
+msgstr "Усе даты"
+
+#, python-format
+msgid "Select %s"
+msgstr "Абраць %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Абярыце %s, каб зьмяніць"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Абярыце %s, каб праглядзець"
+
+msgid "Date:"
+msgstr "Дата:"
+
+msgid "Time:"
+msgstr "Час:"
+
+msgid "Lookup"
+msgstr "Шукаць"
+
+msgid "Currently:"
+msgstr "У цяперашні час:"
+
+msgid "Change:"
+msgstr "Зьмяніць:"

BIN
static/admin/locale/be/LC_MESSAGES/djangojs.mo


+ 333 - 0
static/admin/locale/be/LC_MESSAGES/djangojs.po

@@ -0,0 +1,333 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Viktar Palstsiuk <vipals@gmail.com>, 2015
+# znotdead <zhirafchik@gmail.com>, 2016,2020-2021,2023
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"Last-Translator: znotdead <zhirafchik@gmail.com>, 2016,2020-2021,2023\n"
+"Language-Team: Belarusian (http://app.transifex.com/django/django/language/"
+"be/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: be\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Даступныя %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Сьпіс даступных %s. Каб нешта абраць, пазначце патрэбнае ў полі ніжэй і "
+"пстрыкніце па стрэлцы «Абраць» між двума палямі."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Каб прасеяць даступныя %s, друкуйце ў гэтым полі."
+
+msgid "Filter"
+msgstr "Прасеяць"
+
+msgid "Choose all"
+msgstr "Абраць усе"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Каб абраць усе %s, пстрыкніце тут."
+
+msgid "Choose"
+msgstr "Абраць"
+
+msgid "Remove"
+msgstr "Прыбраць"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Абралі %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Сьпіс абраных %s. Каб нешта прыбраць, пазначце патрэбнае ў полі ніжэй і "
+"пстрыкніце па стрэлцы «Прыбраць» між двума палямі."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "Друкуйце ў гэтым полі, каб прасеяць спіс выбраных %s."
+
+msgid "Remove all"
+msgstr "Прыбраць усё"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Каб прыбраць усе %s, пстрыкніце тут."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s абраная можнасьць нябачна"
+msgstr[1] "%s абраныя можнасьці нябачны"
+msgstr[2] "%s абраныя можнасьці нябачны"
+msgstr[3] "%s абраныя можнасьці нябачны"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "Абралі %(sel)s з %(cnt)s"
+msgstr[1] "Абралі %(sel)s з %(cnt)s"
+msgstr[2] "Абралі %(sel)s з %(cnt)s"
+msgstr[3] "Абралі %(sel)s з %(cnt)s"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"У пэўных палях засталіся незахаваныя зьмены. Калі выканаць дзеяньне, "
+"незахаванае страціцца."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Абралі дзеяньне, але не захавалі зьмены ў пэўных палях. Каб захаваць, "
+"націсьніце «Добра». Дзеяньне потым трэба будзе запусьціць нанова."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Абралі дзеяньне, а ў палях нічога не зьмянялі. Мажліва, вы хацелі націснуць "
+"кнопку «Выканаць», а ня кнопку «Захаваць»."
+
+msgid "Now"
+msgstr "Цяпер"
+
+msgid "Midnight"
+msgstr "Поўнач"
+
+msgid "6 a.m."
+msgstr "6 папоўначы"
+
+msgid "Noon"
+msgstr "Поўдзень"
+
+msgid "6 p.m."
+msgstr "6 папаўдні"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Заўвага: Ваш час спяшаецца на %s г адносна часу на серверы."
+msgstr[1] "Заўвага: Ваш час спяшаецца на %s г адносна часу на серверы."
+msgstr[2] "Заўвага: Ваш час спяшаецца на %s г адносна часу на серверы."
+msgstr[3] "Заўвага: Ваш час спяшаецца на %s г адносна часу на серверы."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Заўвага: Ваш час адстае на %s г ад часу на серверы."
+msgstr[1] "Заўвага: Ваш час адстае на %s г ад часу на серверы."
+msgstr[2] "Заўвага: Ваш час адстае на %s г ад часу на серверы."
+msgstr[3] "Заўвага: Ваш час адстае на %s г ад часу на серверы."
+
+msgid "Choose a Time"
+msgstr "Абярыце час"
+
+msgid "Choose a time"
+msgstr "Абярыце час"
+
+msgid "Cancel"
+msgstr "Скасаваць"
+
+msgid "Today"
+msgstr "Сёньня"
+
+msgid "Choose a Date"
+msgstr "Абярыце дату"
+
+msgid "Yesterday"
+msgstr "Учора"
+
+msgid "Tomorrow"
+msgstr "Заўтра"
+
+msgid "January"
+msgstr "Студзень"
+
+msgid "February"
+msgstr "Люты"
+
+msgid "March"
+msgstr "Сакавік"
+
+msgid "April"
+msgstr "Красавік"
+
+msgid "May"
+msgstr "Травень"
+
+msgid "June"
+msgstr "Чэрвень"
+
+msgid "July"
+msgstr "Ліпень"
+
+msgid "August"
+msgstr "Жнівень"
+
+msgid "September"
+msgstr "Верасень"
+
+msgid "October"
+msgstr "Кастрычнік"
+
+msgid "November"
+msgstr "Лістапад"
+
+msgid "December"
+msgstr "Снежань"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Сту"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Лют"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Сак"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Кра"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "Май"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "Чэр"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "Ліп"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Жні"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Вер"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Кас"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Ліс"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Сне"
+
+msgid "Sunday"
+msgstr "Нядзеля"
+
+msgid "Monday"
+msgstr "Панядзелак"
+
+msgid "Tuesday"
+msgstr "Аўторак"
+
+msgid "Wednesday"
+msgstr "Серада"
+
+msgid "Thursday"
+msgstr "Чацьвер"
+
+msgid "Friday"
+msgstr "Пятніца"
+
+msgid "Saturday"
+msgstr "Субота"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "Нд"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "Пн"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "Аўт"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "Ср"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "Чц"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "Пт"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "Сб"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "Н"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "П"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "А"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "С"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "Ч"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "П"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "С"
+
+msgid "Show"
+msgstr "Паказаць"
+
+msgid "Hide"
+msgstr "Схаваць"

BIN
static/admin/locale/bg/LC_MESSAGES/django.mo


+ 791 - 0
static/admin/locale/bg/LC_MESSAGES/django.po

@@ -0,0 +1,791 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# arneatec <arneatec@gmail.com>, 2022-2024
+# Boris Chervenkov <office@sentido.bg>, 2012
+# Claude Paroz <claude@2xlibre.net>, 2014
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Lyuboslav  Petrov <petrov.lyuboslav@gmail.com>, 2014
+# Todor Lubenov <tlubenov@gmail.com>, 2020
+# Todor Lubenov <tlubenov@gmail.com>, 2014-2015
+# Venelin Stoykov <vkstoykov@gmail.com>, 2015-2017
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-08-07 07:05+0000\n"
+"Last-Translator: arneatec <arneatec@gmail.com>, 2022-2024\n"
+"Language-Team: Bulgarian (http://app.transifex.com/django/django/language/"
+"bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Изтриване на избраните %(verbose_name_plural)s"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Успешно изтрити %(count)d %(items)s ."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Не можете да изтриете %(name)s"
+
+msgid "Are you sure?"
+msgstr "Сигурни ли сте?"
+
+msgid "Administration"
+msgstr "Администрация"
+
+msgid "All"
+msgstr "Всички"
+
+msgid "Yes"
+msgstr "Да"
+
+msgid "No"
+msgstr "Не"
+
+msgid "Unknown"
+msgstr "Неизвестно"
+
+msgid "Any date"
+msgstr "Коя-да-е дата"
+
+msgid "Today"
+msgstr "Днес"
+
+msgid "Past 7 days"
+msgstr "Последните 7 дни"
+
+msgid "This month"
+msgstr "Този месец"
+
+msgid "This year"
+msgstr "Тази година"
+
+msgid "No date"
+msgstr "Няма дата"
+
+msgid "Has date"
+msgstr "Има дата"
+
+msgid "Empty"
+msgstr "Празно"
+
+msgid "Not empty"
+msgstr "Не е празно"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Моля въведете правилния %(username)s и парола за администраторски акаунт. "
+"Моля забележете, че и двете полета могат да са с главни и малки букви."
+
+msgid "Action:"
+msgstr "Действие:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Добави друг %(verbose_name)s"
+
+msgid "Remove"
+msgstr "Премахване"
+
+msgid "Addition"
+msgstr "Добавка"
+
+msgid "Change"
+msgstr "Промени"
+
+msgid "Deletion"
+msgstr "Изтриване"
+
+msgid "action time"
+msgstr "време на действие"
+
+msgid "user"
+msgstr "потребител"
+
+msgid "content type"
+msgstr "тип на съдържанието"
+
+msgid "object id"
+msgstr "id на обекта"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "repr на обекта"
+
+msgid "action flag"
+msgstr "флаг за действие"
+
+msgid "change message"
+msgstr "промени съобщение"
+
+msgid "log entry"
+msgstr "записка в журнала"
+
+msgid "log entries"
+msgstr "записки в журнала"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Добавен “%(object)s”."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Променени “%(object)s” — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Изтрити “%(object)s.”"
+
+msgid "LogEntry Object"
+msgstr "LogEntry обект"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Добавен {name} “{object}”."
+
+msgid "Added."
+msgstr "Добавено."
+
+msgid "and"
+msgstr "и"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Променени {fields} за {name} “{object}”."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Променени {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Изтрит {name} “{object}”."
+
+msgid "No fields changed."
+msgstr "Няма променени полета."
+
+msgid "None"
+msgstr "Празно"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Задръжте “Control”, или “Command” на Mac, за да изберете повече от едно."
+
+msgid "Select this object for an action - {}"
+msgstr "Изберете този обект за действие - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "Обектът {name} “{obj}” бе успешно добавен."
+
+msgid "You may edit it again below."
+msgstr "Можете отново да го промените по-долу."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"Обектът {name} “{obj}” бе успешно добавен. Можете да добавите друг {name} по-"
+"долу."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"Обектът {name} “{obj}” бе успешно променен. Можете да го промените отново по-"
+"долу."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"Обектът {name} “{obj}” бе успешно променен. Можете да добавите друг {name} "
+"по-долу."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "Обектът {name} “{obj}” бе успешно променен."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Елементите трябва да бъдат избрани, за да се извършат действия по тях. Няма "
+"променени елементи."
+
+msgid "No action selected."
+msgstr "Няма избрано действие."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s “%(obj)s” беше успешно изтрит."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s с ID “%(key)s” не съществува. Може би е изтрит?"
+
+#, python-format
+msgid "Add %s"
+msgstr "Добави %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Промени %s"
+
+#, python-format
+msgid "View %s"
+msgstr "Изглед %s"
+
+msgid "Database error"
+msgstr "Грешка в базата данни"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s беше променено успешно."
+msgstr[1] "%(count)s %(name)s бяха успешно променени."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s е избран"
+msgstr[1] "Избрани са всички %(total_count)s"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Избрани са 0 от %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "История на промените: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Изтриването на избраните %(class_name)s %(instance)s ще наложи изтриването "
+"на следните защитени и свързани обекти: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Django административен сайт"
+
+msgid "Django administration"
+msgstr "Django администрация"
+
+msgid "Site administration"
+msgstr "Администрация на сайта"
+
+msgid "Log in"
+msgstr "Вход"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "%(app)s администрация"
+
+msgid "Page not found"
+msgstr "Страница не е намерена"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Съжаляваме, но поисканата страница не може да бъде намерена."
+
+msgid "Home"
+msgstr "Начало"
+
+msgid "Server error"
+msgstr "Сървърна грешка"
+
+msgid "Server error (500)"
+msgstr "Сървърна грешка (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Сървърна грешка <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Получи се грешка. Администраторите на сайта са уведомени за това чрез "
+"електронна поща и грешката трябва да бъде поправена скоро. Благодарим ви за "
+"търпението."
+
+msgid "Run the selected action"
+msgstr "Изпълни избраното действие"
+
+msgid "Go"
+msgstr "Напред"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Щракнете тук, за да изберете обектите във всички страници"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Избери всички %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Изчисти избраното"
+
+msgid "Breadcrumbs"
+msgstr "Трохи"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Модели в приложението %(name)s "
+
+msgid "Add"
+msgstr "Добави"
+
+msgid "View"
+msgstr "Изглед"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Нямате права да разглеждате или редактирате каквото и да е."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Първо въведете потребител и парола. След това ще можете да редактирате "
+"повече детайли. "
+
+msgid "Enter a username and password."
+msgstr "Въведете потребителско име и парола."
+
+msgid "Change password"
+msgstr "Промени парола"
+
+msgid "Set password"
+msgstr "Задайте парола"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Моля, поправете грешката по-долу."
+msgstr[1] "Моля, поправете грешките по-долу."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Въведете нова парола за потребител <strong>%(username)s</strong>."
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"Това действие ще <strong>включи</strong> автентикация чрез парола за този "
+"потребител."
+
+msgid "Disable password-based authentication"
+msgstr "Деактивиране на автентикация чрез парола."
+
+msgid "Enable password-based authentication"
+msgstr "Разрешаване на автентикация чрез парола."
+
+msgid "Skip to main content"
+msgstr "Пропуснете към основното съдържание"
+
+msgid "Welcome,"
+msgstr "Добре дошли,"
+
+msgid "View site"
+msgstr "Виж сайта"
+
+msgid "Documentation"
+msgstr "Документация"
+
+msgid "Log out"
+msgstr "Изход"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Добави %(name)s"
+
+msgid "History"
+msgstr "История"
+
+msgid "View on site"
+msgstr "Разгледай в сайта"
+
+msgid "Filter"
+msgstr "Филтър"
+
+msgid "Hide counts"
+msgstr "Скрий брояча"
+
+msgid "Show counts"
+msgstr "Покажи брояча"
+
+msgid "Clear all filters"
+msgstr "Изчисти всички филтри"
+
+msgid "Remove from sorting"
+msgstr "Премахни от подреждането"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Ред на подреждане: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Превключи подреждането"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Смени темата (настояща тема: автоматична)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Смени темата (настояща тема: светла)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Смени темата (настояща тема: тъмна)"
+
+msgid "Delete"
+msgstr "Изтрий"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Изтриването на %(object_name)s '%(escaped_object)s' би причинило изтриване "
+"на свързани обекти, но вашият потребител няма право да изтрива следните "
+"видове обекти:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Изтриването на %(object_name)s '%(escaped_object)s' изисква изтриването на "
+"следните защитени свързани обекти:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Наистина ли искате да изтриете %(object_name)s \"%(escaped_object)s\"? "
+"Следните свързани елементи също ще бъдат изтрити:"
+
+msgid "Objects"
+msgstr "Обекти"
+
+msgid "Yes, I’m sure"
+msgstr "Да, сигурен съм"
+
+msgid "No, take me back"
+msgstr "Не, върни ме обратно"
+
+msgid "Delete multiple objects"
+msgstr "Изтриване на множество обекти"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Изтриването на избраните %(objects_name)s ще доведе до изтриване на свързани "
+"обекти, но вашият потребител няма право да изтрива следните типове обекти:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Изтриването на избраните %(objects_name)s изисква изтриването на следните "
+"защитени свързани обекти:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Наистина ли искате да изтриете избраните %(objects_name)s? Всички изброени "
+"обекти и свързаните с тях ще бъдат изтрити:"
+
+msgid "Delete?"
+msgstr "Изтриване?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " По %(filter_title)s "
+
+msgid "Summary"
+msgstr "Резюме"
+
+msgid "Recent actions"
+msgstr "Последни действия"
+
+msgid "My actions"
+msgstr "Моите действия"
+
+msgid "None available"
+msgstr "Няма налични"
+
+msgid "Added:"
+msgstr "Добавени:"
+
+msgid "Changed:"
+msgstr "Променени:"
+
+msgid "Deleted:"
+msgstr "Изтрити:"
+
+msgid "Unknown content"
+msgstr "Неизвестно съдържание"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Проблем с вашата база данни. Убедете се, че необходимите таблици в базата са "
+"създадени и че съответния потребител има необходимите права за достъп.  "
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Вие сте се удостоверен като %(username)s, но не сте оторизиран да достъпите "
+"тази страница. Бихте ли желали да влезе с друг профил?"
+
+msgid "Forgotten your password or username?"
+msgstr "Забравена парола или потребителско име?"
+
+msgid "Toggle navigation"
+msgstr "Превключи навигацията"
+
+msgid "Sidebar"
+msgstr "Страничната лента"
+
+msgid "Start typing to filter…"
+msgstr "Започнете да пишете за филтър..."
+
+msgid "Filter navigation items"
+msgstr "Филтриране на навигационните елементи"
+
+msgid "Date/time"
+msgstr "Дата/час"
+
+msgid "User"
+msgstr "Потребител"
+
+msgid "Action"
+msgstr "Действие"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "запис"
+msgstr[1] "записа"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Този обект няма история на промените. Вероятно не е бил добавен чрез този "
+"административен сайт."
+
+msgid "Show all"
+msgstr "Покажи всички"
+
+msgid "Save"
+msgstr "Запис"
+
+msgid "Popup closing…"
+msgstr "Изскачащият прозорец се затваря..."
+
+msgid "Search"
+msgstr "Търсене"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s резултат"
+msgstr[1] "%(counter)s резултати"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s общо"
+
+msgid "Save as new"
+msgstr "Запиши като нов"
+
+msgid "Save and add another"
+msgstr "Запиши и добави нов"
+
+msgid "Save and continue editing"
+msgstr "Запиши и продължи"
+
+msgid "Save and view"
+msgstr "Запиши и прегледай"
+
+msgid "Close"
+msgstr "Затвори"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Променете избрания %(model)s"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Добавяне на друг %(model)s"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Изтриване на избрания %(model)s"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Виж избраните %(model)s"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "Благодарим ви за добре прекараното време с този сайт днес."
+
+msgid "Log in again"
+msgstr "Влез пак"
+
+msgid "Password change"
+msgstr "Промяна на парола"
+
+msgid "Your password was changed."
+msgstr "Паролата ви е променена."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Въведете старата си парола /от съображения за сигурност/. След това въведете "
+"желаната нова парола два пъти, за да сверим дали е написана правилно."
+
+msgid "Change my password"
+msgstr "Промяна на паролата ми"
+
+msgid "Password reset"
+msgstr "Нова парола"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Паролата е променена. Вече можете да се впишете."
+
+msgid "Password reset confirmation"
+msgstr "Потвърждение за смяна на паролата"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Моля, въведете новата парола два пъти, за да се уверим, че сте я написали "
+"правилно."
+
+msgid "New password:"
+msgstr "Нова парола:"
+
+msgid "Confirm password:"
+msgstr "Потвърдете паролата:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Връзката за възстановяване на паролата е невалидна, може би защото вече е "
+"използвана. Моля, поискайте нова промяна на паролата."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"По имейл изпратихме инструкции за смяна на паролата, ако съществува профил с "
+"въведения от вас адрес. Би трябвало скоро да ги получите.   "
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Ако не получите имейл, моля уверете се, че сте попълнили правилно адреса, с "
+"който сте се регистрирали, също проверете спам папката във вашата поща."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Вие получавати този имейл, защото сте поискали да промените паролата за "
+"вашия потребителски акаунт в %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Моля, отидете на следната страница и изберете нова парола:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Вашето потребителско име, в случай че сте го забравили:"
+
+msgid "Thanks for using our site!"
+msgstr "Благодарим, че ползвате сайта ни!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Екипът на %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Забравили сте си паролата? Въведете своя имейл адрес по-долу, и ние ще ви "
+"изпратим инструкции как да я смените с нова."
+
+msgid "Email address:"
+msgstr "Имейл адреси:"
+
+msgid "Reset my password"
+msgstr "Задай новата ми парола"
+
+msgid "Select all objects on this page for an action"
+msgstr "Изберете всички обекти на този страница за действие"
+
+msgid "All dates"
+msgstr "Всички дати"
+
+#, python-format
+msgid "Select %s"
+msgstr "Изберете %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Изберете %s за промяна"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Избери %s за преглед"
+
+msgid "Date:"
+msgstr "Дата:"
+
+msgid "Time:"
+msgstr "Час:"
+
+msgid "Lookup"
+msgstr "Търсене"
+
+msgid "Currently:"
+msgstr "Сега:"
+
+msgid "Change:"
+msgstr "Промяна:"

BIN
static/admin/locale/bg/LC_MESSAGES/djangojs.mo


+ 320 - 0
static/admin/locale/bg/LC_MESSAGES/djangojs.po

@@ -0,0 +1,320 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# arneatec <arneatec@gmail.com>, 2022-2024
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Venelin Stoykov <vkstoykov@gmail.com>, 2015-2016
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-08-07 07:59+0000\n"
+"Last-Translator: arneatec <arneatec@gmail.com>, 2022-2024\n"
+"Language-Team: Bulgarian (http://app.transifex.com/django/django/language/"
+"bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Налични %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Това е списък на наличните %s . Можете да изберете някои, като ги изберете в "
+"полето по-долу и след това кликнете върху стрелката \"Избери\" между двете "
+"полета."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Въведете в това поле, за да филтрирате списъка на наличните %s."
+
+msgid "Filter"
+msgstr "Филтър"
+
+msgid "Choose all"
+msgstr "Избери всички"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Кликнете, за да изберете всички %s наведнъж."
+
+msgid "Choose"
+msgstr "Избери"
+
+msgid "Remove"
+msgstr "Премахни"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Избрахме %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Това е списък на избраните %s. Можете да премахнете някои, като ги изберете "
+"в полето по-долу и след това щракнете върху стрелката \"Премахни\" между "
+"двете полета."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "Въведете в това поле, за да филтрирате списъка на избраните %s."
+
+msgid "Remove all"
+msgstr "Премахване на всички"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Кликнете, за да премахнете всички избрани %s наведнъж."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s избрана опция не е видима"
+msgstr[1] "%s selected options not visible"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s на %(cnt)s е избран"
+msgstr[1] "%(sel)s на %(cnt)s са избрани"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Имате незапазени промени по отделни полета за редактиране. Ако изпълните "
+"действие, незаписаните промени ще бъдат загубени."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Вие сте избрали действие, но не сте записали промените по полета. Моля, "
+"кликнете ОК, за да се запишат. Трябва отново да изпълните действието."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Вие сте избрали действие, но не сте направили промени по полетата. Вероятно "
+"търсите Изпълни бутона, а не бутона Запис."
+
+msgid "Now"
+msgstr "Сега"
+
+msgid "Midnight"
+msgstr "Полунощ"
+
+msgid "6 a.m."
+msgstr "6 сутринта"
+
+msgid "Noon"
+msgstr "По обяд"
+
+msgid "6 p.m."
+msgstr "6 след обяд"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Бележка: Вие сте %s час напред от времето на сървъра."
+msgstr[1] "Бележка: Вие сте с %s часа напред от времето на сървъра"
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Внимание: Вие сте %s час назад от времето на сървъра."
+msgstr[1] "Внимание: Вие сте с %s часа назад от времето на сървъра."
+
+msgid "Choose a Time"
+msgstr "Изберете време"
+
+msgid "Choose a time"
+msgstr "Изберете време"
+
+msgid "Cancel"
+msgstr "Отказ"
+
+msgid "Today"
+msgstr "Днес"
+
+msgid "Choose a Date"
+msgstr "Изберете дата"
+
+msgid "Yesterday"
+msgstr "Вчера"
+
+msgid "Tomorrow"
+msgstr "Утре"
+
+msgid "January"
+msgstr "Януари"
+
+msgid "February"
+msgstr "Февруари"
+
+msgid "March"
+msgstr "Март"
+
+msgid "April"
+msgstr "Април"
+
+msgid "May"
+msgstr "Май"
+
+msgid "June"
+msgstr "Юни"
+
+msgid "July"
+msgstr "Юли"
+
+msgid "August"
+msgstr "Август"
+
+msgid "September"
+msgstr "Септември"
+
+msgid "October"
+msgstr "Октомври"
+
+msgid "November"
+msgstr "Ноември"
+
+msgid "December"
+msgstr "Декември"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "ян."
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "февр."
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "март"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "апр."
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "май"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "юни"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "юли"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "авг."
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "септ."
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "окт."
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "ноем."
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "дек."
+
+msgid "Sunday"
+msgstr "неделя"
+
+msgid "Monday"
+msgstr "понеделник"
+
+msgid "Tuesday"
+msgstr "вторник"
+
+msgid "Wednesday"
+msgstr "сряда"
+
+msgid "Thursday"
+msgstr "четвъртък"
+
+msgid "Friday"
+msgstr "петък"
+
+msgid "Saturday"
+msgstr "събота"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "нед"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "пон"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "вт"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "ср"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "чет"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "пет"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "съб"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "Н"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "П"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "В"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "С"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "Ч"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "П"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "С"

BIN
static/admin/locale/bn/LC_MESSAGES/django.mo


+ 713 - 0
static/admin/locale/bn/LC_MESSAGES/django.po

@@ -0,0 +1,713 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Anubhab Baksi, 2013
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Md Arshad Hussain, 2022
+# Tahmid Rafi <rafi.tahmid@gmail.com>, 2012-2013
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-05-17 05:10-0500\n"
+"PO-Revision-Date: 2022-07-25 07:05+0000\n"
+"Last-Translator: Md Arshad Hussain\n"
+"Language-Team: Bengali (http://www.transifex.com/django/django/language/"
+"bn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "চিহ্নিত অংশটি %(verbose_name_plural)s মুছে ফেলুন"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "%(count)d টি %(items)s সফলভাবে মুছে ফেলা হয়েছে"
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "%(name)s ডিলিট করা সম্ভব নয়"
+
+msgid "Are you sure?"
+msgstr "আপনি কি নিশ্চিত?"
+
+msgid "Administration"
+msgstr "প্রয়োগ"
+
+msgid "All"
+msgstr "সকল"
+
+msgid "Yes"
+msgstr "হ্যাঁ"
+
+msgid "No"
+msgstr "না"
+
+msgid "Unknown"
+msgstr "অজানা"
+
+msgid "Any date"
+msgstr "যে কোন তারিখ"
+
+msgid "Today"
+msgstr "‍আজ"
+
+msgid "Past 7 days"
+msgstr "শেষ ৭ দিন"
+
+msgid "This month"
+msgstr "এ মাসে"
+
+msgid "This year"
+msgstr "এ বছরে"
+
+msgid "No date"
+msgstr "কোন তারিখ নেই"
+
+msgid "Has date"
+msgstr "তারিখ আছে"
+
+msgid "Empty"
+msgstr "খালি"
+
+msgid "Not empty"
+msgstr "খালি নেই"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+
+msgid "Action:"
+msgstr "কাজ:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "আরো একটি %(verbose_name)s যোগ করুন"
+
+msgid "Remove"
+msgstr "মুছে ফেলুন"
+
+msgid "Addition"
+msgstr ""
+
+msgid "Change"
+msgstr "পরিবর্তন"
+
+msgid "Deletion"
+msgstr ""
+
+msgid "action time"
+msgstr "কার্য সময়"
+
+msgid "user"
+msgstr "ব্যবহারকারী"
+
+msgid "content type"
+msgstr ""
+
+msgid "object id"
+msgstr "অবজেক্ট আইডি"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "অবজেক্ট উপস্থাপক"
+
+msgid "action flag"
+msgstr "কার্যচিহ্ন"
+
+msgid "change message"
+msgstr "বার্তা পরিবর্তন করুন"
+
+msgid "log entry"
+msgstr "লগ এন্ট্রি"
+
+msgid "log entries"
+msgstr "লগ এন্ট্রিসমূহ"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "“%(object)s” যোগ করা হয়েছে। "
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "“%(object)s” — %(changes)s পরিবর্তন করা হয়েছে"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "“%(object)s.” মুছে ফেলা হয়েছে"
+
+msgid "LogEntry Object"
+msgstr "লগ-এন্ট্রি দ্রব্য"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr ""
+
+msgid "Added."
+msgstr "যুক্ত করা হয়েছে"
+
+msgid "and"
+msgstr "এবং"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr ""
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr ""
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr ""
+
+msgid "No fields changed."
+msgstr "কোন ফিল্ড পরিবর্তন হয়নি।"
+
+msgid "None"
+msgstr "কিছু না"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr ""
+
+msgid "You may edit it again below."
+msgstr "নিম্নে আপনি আবার তা সম্পাদনা/পরিবর্তন করতে পারেন।"
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} \"{obj}\" সফলভাবে যুক্ত হয়েছে৷ নিম্নে আপনি আরেকটি {name} যুক্ত করতে পারেন।"
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr ""
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr "কাজ করার আগে বস্তুগুলিকে অবশ্যই চিহ্নিত করতে হবে। কোনো বস্তু পরিবর্তিত হয়নি।"
+
+msgid "No action selected."
+msgstr "কোনো কাজ "
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr ""
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr ""
+
+#, python-format
+msgid "Add %s"
+msgstr "%s যোগ করুন"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s পরিবর্তন করুন"
+
+#, python-format
+msgid "View %s"
+msgstr ""
+
+msgid "Database error"
+msgstr "ডাটাবেস সমস্যা"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] ""
+msgstr[1] ""
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "%(cnt)s টি থেকে ০ টি সিলেক্ট করা হয়েছে"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "ইতিহাস পরিবর্তনঃ %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+
+msgid "Django site admin"
+msgstr "জ্যাঙ্গো সাইট প্রশাসক"
+
+msgid "Django administration"
+msgstr "জ্যাঙ্গো প্রশাসন"
+
+msgid "Site administration"
+msgstr "সাইট প্রশাসন"
+
+msgid "Log in"
+msgstr "প্রবেশ করুন"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr ""
+
+msgid "Page not found"
+msgstr "পৃষ্ঠা পাওয়া যায়নি"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "আমরা দুঃখিত, কিন্তু অনুরোধকৃত পাতা খুঁজে পাওয়া যায়নি।"
+
+msgid "Home"
+msgstr "নীড়পাতা"
+
+msgid "Server error"
+msgstr "সার্ভার সমস্যা"
+
+msgid "Server error (500)"
+msgstr "সার্ভার সমস্যা (৫০০)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "সার্ভার সমস্যা <em>(৫০০)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+
+msgid "Run the selected action"
+msgstr "চিহ্নিত কাজটি শুরু করুন"
+
+msgid "Go"
+msgstr "যান"
+
+msgid "Click here to select the objects across all pages"
+msgstr "সকল পৃষ্ঠার দ্রব্য পছন্দ করতে এখানে ক্লিক করুন"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "%(total_count)s টি %(module_name)s এর সবগুলোই সিলেক্ট করুন"
+
+msgid "Clear selection"
+msgstr "চিহ্নিত অংশের চিহ্ন মুছে ফেলুন"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "%(name)s এপ্লিকেশন এর মডেল গুলো"
+
+msgid "Add"
+msgstr "যোগ করুন"
+
+msgid "View"
+msgstr "দেখুন"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "কোন কিছু দেখার বা সম্পাদনা/পরিবর্তন করার আপনার কোন অনুমতি নেই।"
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"প্রথমে, একজন ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন। তাহলে, আপনি ব্যবহারকারীর "
+"অন্যান্য অনেক অপশনগুলো পরিবর্তন করতে সক্ষম হবেন। "
+
+msgid "Enter a username and password."
+msgstr "ইউজার নেইম এবং পাসওয়ার্ড টাইপ করুন।"
+
+msgid "Change password"
+msgstr "পাসওয়ার্ড বদলান"
+
+msgid "Please correct the error below."
+msgstr "দয়া করে নিম্নবর্ণিত ভুলটি সংশোধন করুন।"
+
+msgid "Please correct the errors below."
+msgstr "দয়া করে নিম্নবর্ণিত ভুলগুলো সংশোধন করুন।"
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "<strong>%(username)s</strong> সদস্যের জন্য নতুন পাসওয়ার্ড দিন।"
+
+msgid "Welcome,"
+msgstr "স্বাগতম,"
+
+msgid "View site"
+msgstr ""
+
+msgid "Documentation"
+msgstr "সহায়িকা"
+
+msgid "Log out"
+msgstr "প্রস্থান"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s যোগ করুন"
+
+msgid "History"
+msgstr "ইতিহাস"
+
+msgid "View on site"
+msgstr "সাইটে দেখুন"
+
+msgid "Filter"
+msgstr "ফিল্টার"
+
+msgid "Clear all filters"
+msgstr ""
+
+msgid "Remove from sorting"
+msgstr "ক্রমানুসারে সাজানো থেকে বিরত হোন"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "সাজানোর ক্রম: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "ক্রমানুসারে সাজানো চালু করুন/ বন্ধ করুন"
+
+msgid "Delete"
+msgstr "মুছুন"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"%(object_name)s '%(escaped_object)s' মুছে ফেললে এর সম্পর্কিত অবজেক্টগুলোও মুছে "
+"যাবে, কিন্তু আপনার নিম্নবর্ণিত অবজেক্টগুলো মোছার অধিকার নেইঃ"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"আপনি কি %(object_name)s \"%(escaped_object)s\" মুছে ফেলার ব্যাপারে নিশ্চিত? "
+"নিম্নে বর্ণিত সকল আইটেম মুছে যাবেঃ"
+
+msgid "Objects"
+msgstr ""
+
+msgid "Yes, I’m sure"
+msgstr "হ্যাঁ, আমি নিশ্চিত"
+
+msgid "No, take me back"
+msgstr "না, আমাক পূর্বের জায়গায় ফিরিয়ে নাও"
+
+msgid "Delete multiple objects"
+msgstr "একাধিক জিনিস মুছে ফেলুন"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+
+msgid "Delete?"
+msgstr "মুছে ফেলুন?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " %(filter_title)s অনুযায়ী "
+
+msgid "Summary"
+msgstr "সারসংক্ষেপ"
+
+msgid "Recent actions"
+msgstr ""
+
+msgid "My actions"
+msgstr "আমার করনীয়"
+
+msgid "None available"
+msgstr "কিছুই পাওয়া যায়নি"
+
+msgid "Unknown content"
+msgstr "অজানা বিষয়"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"আপনার ড্যাটাবেস ইন্সটলেশন করার ক্ষেত্রে কিছু সমস্যা রয়েছে। নিশ্চিত করুন যে আপনি "
+"যথাযথ ড্যাটাবেস টেবিলগুলো তৈরী করেছেন এবং নিশ্চিত করুন যে উক্ত ড্যাটাবেসটি অন্যান্য "
+"ব্যবহারকারী দ্বারা ব্যবহারযোগ্য হবে। "
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+msgid "Forgotten your password or username?"
+msgstr "ইউজার নেইম অথবা পাসওয়ার্ড ভুলে গেছেন?"
+
+msgid "Toggle navigation"
+msgstr ""
+
+msgid "Start typing to filter…"
+msgstr ""
+
+msgid "Filter navigation items"
+msgstr ""
+
+msgid "Date/time"
+msgstr "তারিখ/সময়"
+
+msgid "User"
+msgstr "সদস্য"
+
+msgid "Action"
+msgstr "কার্য"
+
+msgid "entry"
+msgstr ""
+
+msgid "entries"
+msgstr ""
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+
+msgid "Show all"
+msgstr "সব দেখান"
+
+msgid "Save"
+msgstr "সংরক্ষণ করুন"
+
+msgid "Popup closing…"
+msgstr ""
+
+msgid "Search"
+msgstr "সার্চ"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "মোট %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "নতুনভাবে সংরক্ষণ করুন"
+
+msgid "Save and add another"
+msgstr "সংরক্ষণ করুন এবং আরেকটি যোগ করুন"
+
+msgid "Save and continue editing"
+msgstr "সংরক্ষণ করুন এবং সম্পাদনা চালিয়ে যান"
+
+msgid "Save and view"
+msgstr "সংরক্ষণ করুন এবং দেখুন"
+
+msgid "Close"
+msgstr "বন্ধ করুন"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "%(model)s নির্বাচিত অংশটি পরিবর্তন করুন"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "আরো একটি%(model)s যুক্ত করুন"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "%(model)s নির্বাচিত অংশটি মুছুন "
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr ""
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "আজকে ওয়েব সাইট আপনার গুনগত সময় দেয়ার জন্য আপনাকে ধন্যবাদ।"
+
+msgid "Log in again"
+msgstr "পুনরায় প্রবেশ করুন"
+
+msgid "Password change"
+msgstr "পাসওয়ার্ড বদলান"
+
+msgid "Your password was changed."
+msgstr "আপনার পাসওয়ার্ড বদলানো হয়েছে।"
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"দয়া করে নিরাপত্তার জন্য আপনার পুরানো পাসওয়ার্ডটি লিখুন, এবং তারপর নতুন পাসওয়ার্ডটি "
+"দুইবার লিখুন যাতে করে আপনি সঠিক পাসওয়ার্ডটি লিখেছেন কি না তা আমরা যাচাই করতে "
+"পারি। "
+
+msgid "Change my password"
+msgstr "আমার পাসওয়ার্ড পরিবর্তন করুন"
+
+msgid "Password reset"
+msgstr "পাসওয়ার্ড রিসেট করুন"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "আপনার পাসওয়ার্ড দেয়া হয়েছে। আপনি এখন প্রবেশ (লগইন) করতে পারেন।"
+
+msgid "Password reset confirmation"
+msgstr "পাসওয়ার্ড রিসেট নিশ্চিত করুন"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"অনুগ্রহ করে আপনার পাসওয়ার্ড দুবার প্রবেশ করান, যাতে আমরা যাচাই করতে পারি আপনি "
+"সঠিকভাবে টাইপ করেছেন।"
+
+msgid "New password:"
+msgstr "নতুন পাসওয়ার্ডঃ"
+
+msgid "Confirm password:"
+msgstr "পাসওয়ার্ড নিশ্চিতকরণঃ"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"পাসওয়ার্ড রিসেট লিঙ্কটি ঠিক নয়, হয়তো এটা ইতোমধ্যে ব্যবহৃত হয়েছে। পাসওয়ার্ড "
+"রিসেটের জন্য অনুগ্রহ করে নতুনভাবে আবেদন করুন।"
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"আপনার পাসওয়ার্ড সংযোজন করার জন্য আমরা আপনাকে নির্দেশাবলী সম্বলিত একটি ই-মেইল "
+"পাঠাবো, যদি আপনার দেয়া ই-মেইলে আইডিটি এখানে বিদ্যমান থাকে। আপনি খুব দ্রুত তা "
+"পেয়ে যাবেন। "
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"আপনি যদি কোন ই-মেইল না পেয়ে থাকে, তবে দয়া করে নিশ্চিত করুন আপনি যে ই-মেইল আইডি "
+"দিয়ে নিবন্ধন করেছিলেন তা এখানে লিখেছেন, এবং আপনার স্পাম ফোল্ডার চেক করুন। "
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"আপনি এই ই-মেইলটি পেয়েছেন কারন আপনি %(site_name)s এ আপনার ইউজার একাউন্টের "
+"পাসওয়ার্ড রিসেট এর জন্য অনুরোধ করেছেন।"
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "অনুগ্রহ করে নিচের পাতাটিতে যান এবং নতুন পাসওয়ার্ড বাছাই করুনঃ"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "আপনার ব্যবহারকারীর নাম, যদি আপনি ভুলে গিয়ে থাকেন:"
+
+msgid "Thanks for using our site!"
+msgstr "আমাদের সাইট ব্যবহারের জন্য ধন্যবাদ!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)s দল"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"আপনার পাসওয়ার্ড ভুলে গিয়েছেন? নিম্নে আপনার ই-মেইল আইডি লিখুন, এবং আমরা আপনাকে "
+"নতুন পাসওয়ার্ড সংযোজন করার জন্য নির্দেশাবলী সম্বলিত ই-মেইল পাঠাবো।"
+
+msgid "Email address:"
+msgstr "ইমেইল ঠিকানা:"
+
+msgid "Reset my password"
+msgstr "আমার পাসওয়ার্ড রিসেট করুন"
+
+msgid "All dates"
+msgstr "সকল তারিখ"
+
+#, python-format
+msgid "Select %s"
+msgstr "%s বাছাই করুন"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "%s পরিবর্তনের জন্য বাছাই করুন"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "দেখার জন্য %s নির্বাচন করুন"
+
+msgid "Date:"
+msgstr "তারিখঃ"
+
+msgid "Time:"
+msgstr "সময়ঃ"
+
+msgid "Lookup"
+msgstr "খুঁজুন"
+
+msgid "Currently:"
+msgstr "বর্তমান অবস্থা:"
+
+msgid "Change:"
+msgstr "পরিবর্তন:"

BIN
static/admin/locale/bn/LC_MESSAGES/djangojs.mo


+ 207 - 0
static/admin/locale/bn/LC_MESSAGES/djangojs.po

@@ -0,0 +1,207 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Tahmid Rafi <rafi.tahmid@gmail.com>, 2013
+# Tahmid Rafi <rafi.tahmid@gmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-05-17 23:12+0200\n"
+"PO-Revision-Date: 2017-09-19 16:41+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Bengali (http://www.transifex.com/django/django/language/"
+"bn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "%s বিদ্যমান"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+
+msgid "Filter"
+msgstr "ফিল্টার"
+
+msgid "Choose all"
+msgstr "সব বাছাই করুন"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "সব %s একবারে বাছাই করার জন্য ক্লিক করুন।"
+
+msgid "Choose"
+msgstr "বাছাই করুন"
+
+msgid "Remove"
+msgstr "মুছে ফেলুন"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "%s বাছাই করা হয়েছে"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+
+msgid "Remove all"
+msgstr "সব মুছে ফেলুন"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr ""
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+
+msgid ""
+"You have selected an action, but you haven't saved your changes to "
+"individual fields yet. Please click OK to save. You'll need to re-run the "
+"action."
+msgstr ""
+
+msgid ""
+"You have selected an action, and you haven't made any changes on individual "
+"fields. You're probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "নোট: আপনি সার্ভার সময়ের চেয়ে %s ঘন্টা সামনে আছেন।"
+msgstr[1] "নোট: আপনি সার্ভার সময়ের চেয়ে %s ঘন্টা সামনে আছেন।"
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "নোট: আপনি সার্ভার সময়ের চেয়ে %s ঘন্টা পেছনে আছেন।"
+msgstr[1] "নোট: আপনি সার্ভার সময়ের চেয়ে %s ঘন্টা পেছনে আছেন।"
+
+msgid "Now"
+msgstr "এখন"
+
+msgid "Choose a Time"
+msgstr ""
+
+msgid "Choose a time"
+msgstr "সময় নির্বাচন করুন"
+
+msgid "Midnight"
+msgstr "মধ্যরাত"
+
+msgid "6 a.m."
+msgstr "৬ পূর্বাহ্ন"
+
+msgid "Noon"
+msgstr "দুপুর"
+
+msgid "6 p.m."
+msgstr ""
+
+msgid "Cancel"
+msgstr "বাতিল"
+
+msgid "Today"
+msgstr "আজ"
+
+msgid "Choose a Date"
+msgstr ""
+
+msgid "Yesterday"
+msgstr "গতকাল"
+
+msgid "Tomorrow"
+msgstr "আগামীকাল"
+
+msgid "January"
+msgstr ""
+
+msgid "February"
+msgstr ""
+
+msgid "March"
+msgstr ""
+
+msgid "April"
+msgstr ""
+
+msgid "May"
+msgstr ""
+
+msgid "June"
+msgstr ""
+
+msgid "July"
+msgstr ""
+
+msgid "August"
+msgstr ""
+
+msgid "September"
+msgstr ""
+
+msgid "October"
+msgstr ""
+
+msgid "November"
+msgstr ""
+
+msgid "December"
+msgstr ""
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr ""
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr ""
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr ""
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr ""
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr ""
+
+msgid "Show"
+msgstr "দেখান"
+
+msgid "Hide"
+msgstr "লুকান"

BIN
static/admin/locale/br/LC_MESSAGES/django.mo


+ 671 - 0
static/admin/locale/br/LC_MESSAGES/django.po

@@ -0,0 +1,671 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Fulup <fulup.jakez@gmail.com>, 2012
+# Irriep Nala Novram <allannkorh@yahoo.fr>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-01-16 20:42+0100\n"
+"PO-Revision-Date: 2019-01-18 00:36+0000\n"
+"Last-Translator: Ramiro Morales\n"
+"Language-Team: Breton (http://www.transifex.com/django/django/language/br/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: br\n"
+"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !"
+"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n"
+"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > "
+"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 "
+"&& n % 1000000 == 0) ? 3 : 4);\n"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr ""
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+msgid "Are you sure?"
+msgstr "Ha sur oc'h?"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Dilemel %(verbose_name_plural)s diuzet"
+
+msgid "Administration"
+msgstr "Melestradurezh"
+
+msgid "All"
+msgstr "An holl"
+
+msgid "Yes"
+msgstr "Ya"
+
+msgid "No"
+msgstr "Ket"
+
+msgid "Unknown"
+msgstr "Dianav"
+
+msgid "Any date"
+msgstr "Forzh pegoulz"
+
+msgid "Today"
+msgstr "Hiziv"
+
+msgid "Past 7 days"
+msgstr "Er 7 devezh diwezhañ"
+
+msgid "This month"
+msgstr "Ar miz-mañ"
+
+msgid "This year"
+msgstr "Ar bloaz-mañ"
+
+msgid "No date"
+msgstr "Deiziad ebet"
+
+msgid "Has date"
+msgstr "D'an deiziad"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+
+msgid "Action:"
+msgstr "Ober:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Ouzhpennañ %(verbose_name)s all"
+
+msgid "Remove"
+msgstr "Lemel kuit"
+
+msgid "Addition"
+msgstr "Sammañ"
+
+msgid "Change"
+msgstr "Cheñch"
+
+msgid "Deletion"
+msgstr "Diverkadur"
+
+msgid "action time"
+msgstr "eur an ober"
+
+msgid "user"
+msgstr "implijer"
+
+msgid "content type"
+msgstr "doare endalc'had"
+
+msgid "object id"
+msgstr "id an objed"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr ""
+
+msgid "action flag"
+msgstr "ober banniel"
+
+msgid "change message"
+msgstr "Kemennadenn cheñchamant"
+
+msgid "log entry"
+msgstr ""
+
+msgid "log entries"
+msgstr ""
+
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr "Ouzhpennet \"%(object)s\"."
+
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "Cheñchet \"%(object)s\" - %(changes)s"
+
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr "Dilamet \"%(object)s.\""
+
+msgid "LogEntry Object"
+msgstr ""
+
+#, python-brace-format
+msgid "Added {name} \"{object}\"."
+msgstr "Ouzhpennet {name} \"{object}\"."
+
+msgid "Added."
+msgstr "Ouzhpennet."
+
+msgid "and"
+msgstr "ha"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} \"{object}\"."
+msgstr "Cheñchet {fields} evit {name} \"{object}\"."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Cheñchet {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} \"{object}\"."
+msgstr "Dilamet {name} \"{object}\"."
+
+msgid "No fields changed."
+msgstr "Maezienn ebet cheñchet."
+
+msgid "None"
+msgstr "Hini ebet"
+
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was added successfully."
+msgstr ""
+
+msgid "You may edit it again below."
+msgstr "Rankout a rit ec'h aozañ adarre dindan."
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was changed successfully."
+msgstr ""
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+
+msgid "No action selected."
+msgstr "Ober ebet diuzet."
+
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#, python-format
+msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgstr ""
+
+#, python-format
+msgid "Add %s"
+msgstr "Ouzhpennañ %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Cheñch %s"
+
+#, python-format
+msgid "View %s"
+msgstr "Gwelet %s"
+
+msgid "Database error"
+msgstr "Fazi diaz-roadennoù"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s  a zo bet cheñchet mat."
+msgstr[1] "%(count)s %(name)s a zo bet cheñchet mat. "
+msgstr[2] "%(count)s %(name)s a zo bet cheñchet mat. "
+msgstr[3] "%(count)s %(name)s a zo bet cheñchet mat."
+msgstr[4] "%(count)s %(name)s a zo bet cheñchet mat."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s diuzet"
+msgstr[1] "%(total_count)s diuzet"
+msgstr[2] "%(total_count)s diuzet"
+msgstr[3] "%(total_count)s diuzet"
+msgstr[4] "Pep %(total_count)s diuzet"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 diwar %(cnt)s diuzet"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Istor ar cheñchadurioù: %s"
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+
+msgid "Django site admin"
+msgstr "Lec'hienn verañ Django"
+
+msgid "Django administration"
+msgstr "Merañ Django"
+
+msgid "Site administration"
+msgstr "Merañ al lec'hienn"
+
+msgid "Log in"
+msgstr "Kevreañ"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr ""
+
+msgid "Page not found"
+msgstr "N'eo ket bet kavet ar bajenn"
+
+msgid "We're sorry, but the requested page could not be found."
+msgstr ""
+
+msgid "Home"
+msgstr "Degemer"
+
+msgid "Server error"
+msgstr "Fazi servijer"
+
+msgid "Server error (500)"
+msgstr "Fazi servijer (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Fazi servijer <em>(500)</em>"
+
+msgid ""
+"There's been an error. It's been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+
+msgid "Run the selected action"
+msgstr ""
+
+msgid "Go"
+msgstr "Mont"
+
+msgid "Click here to select the objects across all pages"
+msgstr ""
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr ""
+
+msgid "Clear selection"
+msgstr "Riñsañ an diuzadenn"
+
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+
+msgid "Enter a username and password."
+msgstr "Merkit un anv implijer hag ur ger-tremen."
+
+msgid "Change password"
+msgstr "Cheñch ger-tremen"
+
+msgid "Please correct the error below."
+msgstr ""
+
+msgid "Please correct the errors below."
+msgstr ""
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+
+msgid "Welcome,"
+msgstr "Degemer mat,"
+
+msgid "View site"
+msgstr ""
+
+msgid "Documentation"
+msgstr "Teulioù"
+
+msgid "Log out"
+msgstr "Digevreañ"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Ouzhpennañ %(name)s"
+
+msgid "History"
+msgstr "Istor"
+
+msgid "View on site"
+msgstr "Gwelet war al lec'hienn"
+
+msgid "Filter"
+msgstr "Sil"
+
+msgid "Remove from sorting"
+msgstr ""
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr ""
+
+msgid "Toggle sorting"
+msgstr "Eilpennañ an diuzadenn"
+
+msgid "Delete"
+msgstr "Diverkañ"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+
+msgid "Objects"
+msgstr ""
+
+msgid "Yes, I'm sure"
+msgstr "Ya, sur on"
+
+msgid "No, take me back"
+msgstr ""
+
+msgid "Delete multiple objects"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+
+msgid "View"
+msgstr ""
+
+msgid "Delete?"
+msgstr "Diverkañ ?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " dre %(filter_title)s "
+
+msgid "Summary"
+msgstr ""
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr ""
+
+msgid "Add"
+msgstr "Ouzhpennañ"
+
+msgid "You don't have permission to view or edit anything."
+msgstr ""
+
+msgid "Recent actions"
+msgstr ""
+
+msgid "My actions"
+msgstr ""
+
+msgid "None available"
+msgstr ""
+
+msgid "Unknown content"
+msgstr "Endalc'had dianav"
+
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+msgid "Forgotten your password or username?"
+msgstr "Disoñjet ho ker-tremen pe hoc'h anv implijer ganeoc'h ?"
+
+msgid "Date/time"
+msgstr "Deiziad/eur"
+
+msgid "User"
+msgstr "Implijer"
+
+msgid "Action"
+msgstr "Ober"
+
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+
+msgid "Show all"
+msgstr "Diskouez pep tra"
+
+msgid "Save"
+msgstr "Enrollañ"
+
+msgid "Popup closing…"
+msgstr ""
+
+msgid "Search"
+msgstr "Klask"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr ""
+
+msgid "Save as new"
+msgstr "Enrollañ evel nevez"
+
+msgid "Save and add another"
+msgstr "Enrollañ hag ouzhpennañ unan all"
+
+msgid "Save and continue editing"
+msgstr "Enrollañ ha derc'hel da gemmañ"
+
+msgid "Save and view"
+msgstr ""
+
+msgid "Close"
+msgstr ""
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr ""
+
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+
+msgid "Log in again"
+msgstr "Kevreañ en-dro"
+
+msgid "Password change"
+msgstr "Cheñch ho ker-tremen"
+
+msgid "Your password was changed."
+msgstr "Cheñchet eo bet ho ker-tremen."
+
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+
+msgid "Change my password"
+msgstr "Cheñch ma ger-tremen"
+
+msgid "Password reset"
+msgstr "Adderaouekaat ar ger-tremen"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr ""
+
+msgid "Password reset confirmation"
+msgstr "Kadarnaat eo bet cheñchet ar ger-tremen"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+
+msgid "New password:"
+msgstr "Ger-tremen nevez :"
+
+msgid "Confirm password:"
+msgstr "Kadarnaat ar ger-tremen :"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+
+msgid "Please go to the following page and choose a new password:"
+msgstr ""
+
+msgid "Your username, in case you've forgotten:"
+msgstr ""
+
+msgid "Thanks for using our site!"
+msgstr "Ho trugarekaat da ober gant hol lec'hienn !"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr ""
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we'll email "
+"instructions for setting a new one."
+msgstr ""
+
+msgid "Email address:"
+msgstr ""
+
+msgid "Reset my password"
+msgstr ""
+
+msgid "All dates"
+msgstr "An holl zeiziadoù"
+
+#, python-format
+msgid "Select %s"
+msgstr "Diuzañ %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr ""
+
+#, python-format
+msgid "Select %s to view"
+msgstr ""
+
+msgid "Date:"
+msgstr "Deiziad :"
+
+msgid "Time:"
+msgstr "Eur :"
+
+msgid "Lookup"
+msgstr "Klask"
+
+msgid "Currently:"
+msgstr ""
+
+msgid "Change:"
+msgstr ""

BIN
static/admin/locale/br/LC_MESSAGES/djangojs.mo


+ 217 - 0
static/admin/locale/br/LC_MESSAGES/djangojs.po

@@ -0,0 +1,217 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Fulup <fulup.jakez@gmail.com>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-05-17 11:50+0200\n"
+"PO-Revision-Date: 2017-09-19 16:41+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Breton (http://www.transifex.com/django/django/language/br/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: br\n"
+"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !"
+"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n"
+"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > "
+"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 "
+"&& n % 1000000 == 0) ? 3 : 4);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Hegerz %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+
+msgid "Filter"
+msgstr "Sil"
+
+msgid "Choose all"
+msgstr "Dibab an holl"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Klikañ evit dibab an holl %s war un dro."
+
+msgid "Choose"
+msgstr "Dibab"
+
+msgid "Remove"
+msgstr "Lemel kuit"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Dibabet %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+
+msgid "Remove all"
+msgstr "Lemel kuit pep tra"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Klikañ evit dilemel an holl %s dibabet war un dro."
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+
+msgid ""
+"You have selected an action, but you haven't saved your changes to "
+"individual fields yet. Please click OK to save. You'll need to re-run the "
+"action."
+msgstr ""
+
+msgid ""
+"You have selected an action, and you haven't made any changes on individual "
+"fields. You're probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+
+msgid "Now"
+msgstr "Bremañ"
+
+msgid "Midnight"
+msgstr "Hanternoz"
+
+msgid "6 a.m."
+msgstr "6e00"
+
+msgid "Noon"
+msgstr "Kreisteiz"
+
+msgid "6 p.m."
+msgstr ""
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+msgid "Choose a Time"
+msgstr ""
+
+msgid "Choose a time"
+msgstr "Dibab un eur"
+
+msgid "Cancel"
+msgstr "Nullañ"
+
+msgid "Today"
+msgstr "Hiziv"
+
+msgid "Choose a Date"
+msgstr ""
+
+msgid "Yesterday"
+msgstr "Dec'h"
+
+msgid "Tomorrow"
+msgstr "Warc'hoazh"
+
+msgid "January"
+msgstr ""
+
+msgid "February"
+msgstr ""
+
+msgid "March"
+msgstr ""
+
+msgid "April"
+msgstr ""
+
+msgid "May"
+msgstr ""
+
+msgid "June"
+msgstr ""
+
+msgid "July"
+msgstr ""
+
+msgid "August"
+msgstr ""
+
+msgid "September"
+msgstr ""
+
+msgid "October"
+msgstr ""
+
+msgid "November"
+msgstr ""
+
+msgid "December"
+msgstr ""
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr ""
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr ""
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr ""
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr ""
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr ""
+
+msgid "Show"
+msgstr "Diskouez"
+
+msgid "Hide"
+msgstr "Kuzhat"

BIN
static/admin/locale/bs/LC_MESSAGES/django.mo


+ 657 - 0
static/admin/locale/bs/LC_MESSAGES/django.po

@@ -0,0 +1,657 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-19 16:49+0100\n"
+"PO-Revision-Date: 2017-09-19 16:41+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Bosnian (http://www.transifex.com/django/django/language/"
+"bs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bs\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Uspješno izbrisano %(count)d %(items)s."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+msgid "Are you sure?"
+msgstr "Da li ste sigurni?"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Izbriši odabrane %(verbose_name_plural)s"
+
+msgid "Administration"
+msgstr ""
+
+msgid "All"
+msgstr "Svi"
+
+msgid "Yes"
+msgstr "Da"
+
+msgid "No"
+msgstr "Ne"
+
+msgid "Unknown"
+msgstr "Nepoznato"
+
+msgid "Any date"
+msgstr "Svi datumi"
+
+msgid "Today"
+msgstr "Danas"
+
+msgid "Past 7 days"
+msgstr "Poslednjih 7 dana"
+
+msgid "This month"
+msgstr "Ovaj mesec"
+
+msgid "This year"
+msgstr "Ova godina"
+
+msgid "No date"
+msgstr ""
+
+msgid "Has date"
+msgstr ""
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+
+msgid "Action:"
+msgstr "Radnja:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Dodaj još jedan %(verbose_name)s"
+
+msgid "Remove"
+msgstr "Obriši"
+
+msgid "action time"
+msgstr "vrijeme radnje"
+
+msgid "user"
+msgstr ""
+
+msgid "content type"
+msgstr ""
+
+msgid "object id"
+msgstr "id objekta"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/3/library/functions.html#repr)
+msgid "object repr"
+msgstr "repr objekta"
+
+msgid "action flag"
+msgstr "oznaka radnje"
+
+msgid "change message"
+msgstr "opis izmjene"
+
+msgid "log entry"
+msgstr "zapis u logovima"
+
+msgid "log entries"
+msgstr "zapisi u logovima"
+
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+msgid "LogEntry Object"
+msgstr ""
+
+#, python-brace-format
+msgid "Added {name} \"{object}\"."
+msgstr ""
+
+msgid "Added."
+msgstr ""
+
+msgid "and"
+msgstr "i"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} \"{object}\"."
+msgstr ""
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr ""
+
+#, python-brace-format
+msgid "Deleted {name} \"{object}\"."
+msgstr ""
+
+msgid "No fields changed."
+msgstr "Nije bilo izmjena polja."
+
+msgid "None"
+msgstr "Nijedan"
+
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was added successfully."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was changed successfully."
+msgstr ""
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Predmeti moraju biti izabrani da bi se mogla obaviti akcija nad njima. "
+"Nijedan predmet nije bio izmjenjen."
+
+msgid "No action selected."
+msgstr "Nijedna akcija nije izabrana."
+
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Objekat „%(obj)s“ klase %(name)s obrisan je uspješno."
+
+#, python-format
+msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgstr ""
+
+#, python-format
+msgid "Add %s"
+msgstr "Dodaj objekat klase %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Izmjeni objekat klase %s"
+
+msgid "Database error"
+msgstr "Greška u bazi podataka"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 od %(cnt)s izabrani"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Historijat izmjena: %s"
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+
+msgid "Django site admin"
+msgstr "Django administracija sajta"
+
+msgid "Django administration"
+msgstr "Django administracija"
+
+msgid "Site administration"
+msgstr "Administracija sistema"
+
+msgid "Log in"
+msgstr "Prijava"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr ""
+
+msgid "Page not found"
+msgstr "Stranica nije pronađena"
+
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Žao nam je, tražena stranica nije pronađena."
+
+msgid "Home"
+msgstr "Početna"
+
+msgid "Server error"
+msgstr "Greška na serveru"
+
+msgid "Server error (500)"
+msgstr "Greška na serveru (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Greška na serveru <em>(500)</em>"
+
+msgid ""
+"There's been an error. It's been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+
+msgid "Run the selected action"
+msgstr "Pokreni odabranu radnju"
+
+msgid "Go"
+msgstr "Počni"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Kliknite ovdje da izaberete objekte preko svih stranica"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Izaberite svih %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Izbrišite izbor"
+
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Prvo unesite korisničko ime i lozinku. Potom ćete moći da mijenjate još "
+"korisničkih podešavanja."
+
+msgid "Enter a username and password."
+msgstr ""
+
+msgid "Change password"
+msgstr "Promjena lozinke"
+
+msgid "Please correct the error below."
+msgstr ""
+
+msgid "Please correct the errors below."
+msgstr ""
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Unesite novu lozinku za korisnika <strong>%(username)s</strong>."
+
+msgid "Welcome,"
+msgstr "Dobrodošli,"
+
+msgid "View site"
+msgstr ""
+
+msgid "Documentation"
+msgstr "Dokumentacija"
+
+msgid "Log out"
+msgstr "Odjava"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Dodaj objekat klase %(name)s"
+
+msgid "History"
+msgstr "Historijat"
+
+msgid "View on site"
+msgstr "Pregled na sajtu"
+
+msgid "Filter"
+msgstr "Filter"
+
+msgid "Remove from sorting"
+msgstr ""
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr ""
+
+msgid "Toggle sorting"
+msgstr ""
+
+msgid "Delete"
+msgstr "Obriši"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Uklanjanje %(object_name)s „%(escaped_object)s“ povlači uklanjanje svih "
+"objekata koji su povezani sa ovim objektom, ali vaš nalog nema dozvole za "
+"brisanje slijedećih tipova objekata:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Da li ste sigurni da želite da obrišete %(object_name)s "
+"„%(escaped_object)s“? Slijedeći objekti koji su u vezi sa ovim objektom će "
+"također biti obrisani:"
+
+msgid "Objects"
+msgstr ""
+
+msgid "Yes, I'm sure"
+msgstr "Da, siguran sam"
+
+msgid "No, take me back"
+msgstr ""
+
+msgid "Delete multiple objects"
+msgstr "Brisanje više objekata"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+
+msgid "Change"
+msgstr "Izmjeni"
+
+msgid "Delete?"
+msgstr "Brisanje?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " %(filter_title)s "
+
+msgid "Summary"
+msgstr ""
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr ""
+
+msgid "Add"
+msgstr "Dodaj"
+
+msgid "You don't have permission to edit anything."
+msgstr "Nemate dozvole da unosite bilo kakve izmjene."
+
+msgid "Recent actions"
+msgstr ""
+
+msgid "My actions"
+msgstr ""
+
+msgid "None available"
+msgstr "Nema podataka"
+
+msgid "Unknown content"
+msgstr "Nepoznat sadržaj"
+
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Nešto nije uredu sa vašom bazom podataka. Provjerite da li postoje "
+"odgovarajuće tabele i da li odgovarajući korisnik ima pristup bazi."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+msgid "Forgotten your password or username?"
+msgstr ""
+
+msgid "Date/time"
+msgstr "Datum/vrijeme"
+
+msgid "User"
+msgstr "Korisnik"
+
+msgid "Action"
+msgstr "Radnja"
+
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Ovaj objekat nema zabilježen historijat izmjena. Vjerovatno nije dodan kroz "
+"ovaj sajt za administraciju."
+
+msgid "Show all"
+msgstr "Prikaži sve"
+
+msgid "Save"
+msgstr "Sačuvaj"
+
+msgid "Popup closing..."
+msgstr ""
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr ""
+
+msgid "Search"
+msgstr "Pretraga"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "ukupno %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "Sačuvaj kao novi"
+
+msgid "Save and add another"
+msgstr "Sačuvaj i dodaj slijedeći"
+
+msgid "Save and continue editing"
+msgstr "Sačuvaj i nastavi sa izmjenama"
+
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Hvala što ste danas proveli vrijeme na ovom sajtu."
+
+msgid "Log in again"
+msgstr "Ponovna prijava"
+
+msgid "Password change"
+msgstr "Izmjena lozinke"
+
+msgid "Your password was changed."
+msgstr "Vaša lozinka je izmjenjena."
+
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Iz bezbjednosnih razloga prvo unesite svoju staru lozinku, a novu zatim "
+"unesite dva puta da bismo mogli da provjerimo da li ste je pravilno unijeli."
+
+msgid "Change my password"
+msgstr "Izmijeni moju lozinku"
+
+msgid "Password reset"
+msgstr "Resetovanje lozinke"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Vaša lozinka je postavljena.  Možete se prijaviti."
+
+msgid "Password reset confirmation"
+msgstr "Potvrda resetovanja lozinke"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Unesite novu lozinku dva puta kako bismo mogli da provjerimo da li ste je "
+"pravilno unijeli."
+
+msgid "New password:"
+msgstr "Nova lozinka:"
+
+msgid "Confirm password:"
+msgstr "Potvrda lozinke:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Link za resetovanje lozinke nije važeći, vjerovatno zato što je već "
+"iskorišćen.  Ponovo zatražite resetovanje lozinke."
+
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Idite na slijedeću stranicu i postavite novu lozinku."
+
+msgid "Your username, in case you've forgotten:"
+msgstr "Ukoliko ste zaboravili, vaše korisničko ime:"
+
+msgid "Thanks for using our site!"
+msgstr "Hvala što koristite naš sajt!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Uredništvo sajta %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we'll email "
+"instructions for setting a new one."
+msgstr ""
+
+msgid "Email address:"
+msgstr ""
+
+msgid "Reset my password"
+msgstr "Resetuj moju lozinku"
+
+msgid "All dates"
+msgstr "Svi datumi"
+
+#, python-format
+msgid "Select %s"
+msgstr "Odaberi objekat klase %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Odaberi objekat klase %s za izmjenu"
+
+msgid "Date:"
+msgstr "Datum:"
+
+msgid "Time:"
+msgstr "Vrijeme:"
+
+msgid "Lookup"
+msgstr "Pretraži"
+
+msgid "Currently:"
+msgstr ""
+
+msgid "Change:"
+msgstr ""

BIN
static/admin/locale/bs/LC_MESSAGES/djangojs.mo


+ 211 - 0
static/admin/locale/bs/LC_MESSAGES/djangojs.po

@@ -0,0 +1,211 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-05-17 23:12+0200\n"
+"PO-Revision-Date: 2017-09-19 16:41+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Bosnian (http://www.transifex.com/django/django/language/"
+"bs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bs\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Dostupno %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+
+msgid "Filter"
+msgstr "Filter"
+
+msgid "Choose all"
+msgstr "Odaberi sve"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr ""
+
+msgid "Choose"
+msgstr ""
+
+msgid "Remove"
+msgstr "Ukloni"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Odabrani %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+
+msgid "Remove all"
+msgstr ""
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr ""
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "Izabran %(sel)s od %(cnt)s"
+msgstr[1] "Izabrano %(sel)s od %(cnt)s"
+msgstr[2] "Izabrano %(sel)s od %(cnt)s"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Imate nespašene izmjene na pojedinim uređenim poljima. Ako pokrenete ovu "
+"akciju, te izmjene će biti izgubljene."
+
+msgid ""
+"You have selected an action, but you haven't saved your changes to "
+"individual fields yet. Please click OK to save. You'll need to re-run the "
+"action."
+msgstr ""
+
+msgid ""
+"You have selected an action, and you haven't made any changes on individual "
+"fields. You're probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+msgid "Now"
+msgstr ""
+
+msgid "Choose a Time"
+msgstr ""
+
+msgid "Choose a time"
+msgstr ""
+
+msgid "Midnight"
+msgstr ""
+
+msgid "6 a.m."
+msgstr ""
+
+msgid "Noon"
+msgstr ""
+
+msgid "6 p.m."
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Today"
+msgstr "Danas"
+
+msgid "Choose a Date"
+msgstr ""
+
+msgid "Yesterday"
+msgstr ""
+
+msgid "Tomorrow"
+msgstr ""
+
+msgid "January"
+msgstr ""
+
+msgid "February"
+msgstr ""
+
+msgid "March"
+msgstr ""
+
+msgid "April"
+msgstr ""
+
+msgid "May"
+msgstr ""
+
+msgid "June"
+msgstr ""
+
+msgid "July"
+msgstr ""
+
+msgid "August"
+msgstr ""
+
+msgid "September"
+msgstr ""
+
+msgid "October"
+msgstr ""
+
+msgid "November"
+msgstr ""
+
+msgid "December"
+msgstr ""
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr ""
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr ""
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr ""
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr ""
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr ""
+
+msgid "Show"
+msgstr ""
+
+msgid "Hide"
+msgstr ""

BIN
static/admin/locale/ca/LC_MESSAGES/django.mo


+ 750 - 0
static/admin/locale/ca/LC_MESSAGES/django.po

@@ -0,0 +1,750 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Antoni Aloy <aaloy@apsl.net>, 2014-2015,2017,2021
+# Carles Barrobés <carles@barrobes.com>, 2011-2012,2014
+# duub qnnp, 2015
+# Emilio Carrion, 2022
+# GerardoGa <ggarciamaristany@gmail.com>, 2018
+# Gil Obradors Via <gil.obradors@gmail.com>, 2019
+# Gil Obradors Via <gil.obradors@gmail.com>, 2019
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Manel Clos <manelclos@gmail.com>, 2020
+# Marc Compte <marc@compte.cat>, 2021
+# Roger Pons <rogerpons@gmail.com>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-05-17 05:10-0500\n"
+"PO-Revision-Date: 2022-07-25 07:05+0000\n"
+"Last-Translator: Emilio Carrion\n"
+"Language-Team: Catalan (http://www.transifex.com/django/django/language/"
+"ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Eliminar els %(verbose_name_plural)s seleccionats"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Eliminat/s %(count)d %(items)s satisfactòriament."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "No es pot esborrar %(name)s"
+
+msgid "Are you sure?"
+msgstr "N'esteu segur?"
+
+msgid "Administration"
+msgstr "Administració"
+
+msgid "All"
+msgstr "Tots"
+
+msgid "Yes"
+msgstr "Sí"
+
+msgid "No"
+msgstr "No"
+
+msgid "Unknown"
+msgstr "Desconegut"
+
+msgid "Any date"
+msgstr "Qualsevol data"
+
+msgid "Today"
+msgstr "Avui"
+
+msgid "Past 7 days"
+msgstr "Últims 7 dies"
+
+msgid "This month"
+msgstr "Aquest mes"
+
+msgid "This year"
+msgstr "Aquest any"
+
+msgid "No date"
+msgstr "Sense data"
+
+msgid "Has date"
+msgstr "Té data"
+
+msgid "Empty"
+msgstr "Buit"
+
+msgid "Not empty"
+msgstr "No buit"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Si us plau, introduïu un %(username)s i contrasenya correctes per un compte "
+"de personal. Observeu que ambdós camps són sensibles a majúscules."
+
+msgid "Action:"
+msgstr "Acció:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Afegir un/a altre/a %(verbose_name)s."
+
+msgid "Remove"
+msgstr "Eliminar"
+
+msgid "Addition"
+msgstr "Afegeix"
+
+msgid "Change"
+msgstr "Modificar"
+
+msgid "Deletion"
+msgstr "Supressió"
+
+msgid "action time"
+msgstr "moment de l'acció"
+
+msgid "user"
+msgstr "usuari"
+
+msgid "content type"
+msgstr "tipus de contingut"
+
+msgid "object id"
+msgstr "id de l'objecte"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "'repr' de l'objecte"
+
+msgid "action flag"
+msgstr "indicador de l'acció"
+
+msgid "change message"
+msgstr "missatge del canvi"
+
+msgid "log entry"
+msgstr "entrada del registre"
+
+msgid "log entries"
+msgstr "entrades del registre"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Afegit \"1%(object)s\"."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Modificat \"%(object)s\" - %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Eliminat \"%(object)s.\""
+
+msgid "LogEntry Object"
+msgstr "Objecte entrada del registre"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Afegit  {name} \"{object}\"."
+
+msgid "Added."
+msgstr "Afegit."
+
+msgid "and"
+msgstr "i"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Canviat {fields} per {name} \"{object}\"."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Canviats {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Eliminat {name} \"{object}\"."
+
+msgid "No fields changed."
+msgstr "Cap camp modificat."
+
+msgid "None"
+msgstr "cap"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Premeu la tecla \"Control\", o \"Command\" en un Mac, per seleccionar més "
+"d'un valor."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "El {name} \"{obj}\" fou afegit amb èxit."
+
+msgid "You may edit it again below."
+msgstr "Podeu editar-lo de nou a sota."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"El {name} \"{obj}\" s'ha afegit amb èxit. Podeu afegir un altre {name} a "
+"sota."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"El {name} \"{obj}\" fou canviat amb èxit. Podeu editar-lo de nou a sota."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr ""
+"El  {name} \"{obj}\" s'ha afegit amb èxit. Podeu editar-lo de nou a sota."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"El {name} \"{obj}\" fou canviat amb èxit. Podeu afegir un altre {name} a "
+"sota."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "El {name} \"{obj}\" fou canviat amb èxit."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Heu de seleccionar els elements per poder realitzar-hi accions. No heu "
+"seleccionat cap element."
+
+msgid "No action selected."
+msgstr "No heu seleccionat cap acció."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "El/la %(name)s \"%(obj)s\" s'ha eliminat amb èxit."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s amb ID \"%(key)s\" no existeix. Potser va ser eliminat?"
+
+#, python-format
+msgid "Add %s"
+msgstr "Afegir %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Modificar %s"
+
+#, python-format
+msgid "View %s"
+msgstr "Visualitza %s"
+
+msgid "Database error"
+msgstr "Error de base de dades"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s s'ha modificat amb èxit."
+msgstr[1] "%(count)s %(name)s s'han modificat amb èxit."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s seleccionat(s)"
+msgstr[1] "Tots %(total_count)s seleccionat(s)"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 de %(cnt)s seleccionats"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Modificar històric: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Esborrar %(class_name)s %(instance)s requeriria esborrar els següents "
+"objectes relacionats protegits: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Lloc administratiu de Django"
+
+msgid "Django administration"
+msgstr "Administració de Django"
+
+msgid "Site administration"
+msgstr "Administració del lloc"
+
+msgid "Log in"
+msgstr "Iniciar sessió"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "Administració de %(app)s"
+
+msgid "Page not found"
+msgstr "No s'ha pogut trobar la pàgina"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Ho sentim, però no s'ha pogut trobar la pàgina sol·licitada"
+
+msgid "Home"
+msgstr "Inici"
+
+msgid "Server error"
+msgstr "Error del servidor"
+
+msgid "Server error (500)"
+msgstr "Error del servidor (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Error del servidor <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"S'ha produït un error. Se n'ha informat els administradors del lloc per "
+"correu electrònic, i hauria d'arreglar-se en breu. Gràcies per la vostra "
+"paciència."
+
+msgid "Run the selected action"
+msgstr "Executar l'acció seleccionada"
+
+msgid "Go"
+msgstr "Anar"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Feu clic aquí per seleccionar els objectes a totes les pàgines"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Seleccioneu tots %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Netejar la selecció"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Models en l'aplicació %(name)s"
+
+msgid "Add"
+msgstr "Afegir"
+
+msgid "View"
+msgstr "Visualitza"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "No teniu permisos per veure o editar"
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Primer, entreu un nom d'usuari i una contrasenya. Després podreu editar més "
+"opcions de l'usuari."
+
+msgid "Enter a username and password."
+msgstr "Introduïu un nom d'usuari i contrasenya."
+
+msgid "Change password"
+msgstr "Canviar contrasenya"
+
+msgid "Please correct the error below."
+msgstr "Si us plau, corregiu l'error de sota."
+
+msgid "Please correct the errors below."
+msgstr "Si us plau, corregiu els errors mostrats a sota."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Introduïu una contrasenya per l'usuari <strong>%(username)s</strong>"
+
+msgid "Welcome,"
+msgstr "Benvingut/da,"
+
+msgid "View site"
+msgstr "Veure lloc"
+
+msgid "Documentation"
+msgstr "Documentació"
+
+msgid "Log out"
+msgstr "Finalitzar sessió"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Afegir %(name)s"
+
+msgid "History"
+msgstr "Històric"
+
+msgid "View on site"
+msgstr "Veure al lloc"
+
+msgid "Filter"
+msgstr "Filtre"
+
+msgid "Clear all filters"
+msgstr "Netejar tots els filtres"
+
+msgid "Remove from sorting"
+msgstr "Treure de la ordenació"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Prioritat d'ordenació: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Commutar ordenació"
+
+msgid "Delete"
+msgstr "Eliminar"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació "
+"d'objectes relacionats, però el vostre compte no te permisos per esborrar "
+"els tipus d'objecte següents:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Esborrar %(object_name)s '%(escaped_object)s' requeriria esborrar els "
+"següents objectes relacionats protegits:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Esteu segurs de voler esborrar els/les %(object_name)s \"%(escaped_object)s"
+"\"? S'esborraran els següents elements relacionats:"
+
+msgid "Objects"
+msgstr "Objectes"
+
+msgid "Yes, I’m sure"
+msgstr "Sí, n'estic segur"
+
+msgid "No, take me back"
+msgstr "No, torna endarrere"
+
+msgid "Delete multiple objects"
+msgstr "Eliminar múltiples objectes"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Esborrar els %(objects_name)s seleccionats faria que s'esborréssin objectes "
+"relacionats, però el vostre compte no té permisos per esborrar els següents "
+"tipus d'objectes:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Esborrar els %(objects_name)s seleccionats requeriria esborrar els següents "
+"objectes relacionats protegits:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"N'esteu segur de voler esborrar els %(objects_name)s seleccionats? "
+"S'esborraran tots els objects següents i els seus elements relacionats:"
+
+msgid "Delete?"
+msgstr "Eliminar?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "Per %(filter_title)s "
+
+msgid "Summary"
+msgstr "Resum"
+
+msgid "Recent actions"
+msgstr "Accions recents"
+
+msgid "My actions"
+msgstr "Les meves accions"
+
+msgid "None available"
+msgstr "Cap disponible"
+
+msgid "Unknown content"
+msgstr "Contingut desconegut"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Hi ha algun problema a la instal·lació de la vostra base de dades. Assegureu-"
+"vos que s'han creat les taules adients, i que la base de dades és llegible "
+"per l'usuari apropiat."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Esteu identificats com a %(username)s, però no esteu autoritzats a accedir a "
+"aquesta pàgina. Voleu identificar-vos amb un compte d'usuari diferent?"
+
+msgid "Forgotten your password or username?"
+msgstr "Heu oblidat la vostra contrasenya o nom d'usuari?"
+
+msgid "Toggle navigation"
+msgstr "Canviar mode de navegació"
+
+msgid "Start typing to filter…"
+msgstr "Comença a teclejar per filtrar ..."
+
+msgid "Filter navigation items"
+msgstr "Filtrar els items de navegació"
+
+msgid "Date/time"
+msgstr "Data/hora"
+
+msgid "User"
+msgstr "Usuari"
+
+msgid "Action"
+msgstr "Acció"
+
+msgid "entry"
+msgstr "entrada"
+
+msgid "entries"
+msgstr "entrades"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Aquest objecte no té historial de canvis. Probablement no es va afegir "
+"utilitzant aquest lloc administratiu."
+
+msgid "Show all"
+msgstr "Mostrar tots"
+
+msgid "Save"
+msgstr "Desar"
+
+msgid "Popup closing…"
+msgstr "Tancant finestra emergent..."
+
+msgid "Search"
+msgstr "Cerca"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s resultat"
+msgstr[1] "%(counter)s resultats"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s en total"
+
+msgid "Save as new"
+msgstr "Desar com a nou"
+
+msgid "Save and add another"
+msgstr "Desar i afegir-ne un de nou"
+
+msgid "Save and continue editing"
+msgstr "Desar i continuar editant"
+
+msgid "Save and view"
+msgstr "Desa i visualitza"
+
+msgid "Close"
+msgstr "Tanca"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Canvieu el %(model)s seleccionat"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Afegeix un altre %(model)s"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Esborra el %(model)s seleccionat"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Vista seleccionada %(model)s"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "Gràcies per dedicar temps de qualitat avui a aquesta web."
+
+msgid "Log in again"
+msgstr "Iniciar sessió de nou"
+
+msgid "Password change"
+msgstr "Canvi de contrasenya"
+
+msgid "Your password was changed."
+msgstr "La seva contrasenya ha estat canviada."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Si us plau, introduïu la vostra contrasenya antiga, per seguretat, i tot "
+"seguit introduïu la vostra contrasenya nova dues vegades per verificar que "
+"l'heu escrita correctament."
+
+msgid "Change my password"
+msgstr "Canviar la meva contrasenya:"
+
+msgid "Password reset"
+msgstr "Restablir contrasenya"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr ""
+"S'ha canviat la vostra contrasenya. Ara podeu continuar i iniciar sessió."
+
+msgid "Password reset confirmation"
+msgstr "Confirmació de restabliment de contrasenya"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Si us plau, introduïu la vostra nova contrasenya dues vegades, per verificar "
+"que l'heu escrita correctament."
+
+msgid "New password:"
+msgstr "Contrasenya nova:"
+
+msgid "Confirm password:"
+msgstr "Confirmar contrasenya:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"L'enllaç de restabliment de contrasenya era invàlid, potser perquè ja s'ha "
+"utilitzat. Si us plau, sol·liciteu un nou reestabliment de contrasenya."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Li hem enviat instruccions per establir la seva contrasenya, donat que hi "
+"hagi un compte associat al correu introduït. L'hauríeu de rebre en breu."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Si no rebeu un correu, assegureu-vos que heu introduït l'adreça amb la que "
+"us vau registrar, i comproveu la vostra carpeta de \"spam\"."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Heu rebut aquest correu perquè vau sol·licitar restablir la contrasenya per "
+"al vostre compte d'usuari a %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Si us plau, aneu a la pàgina següent i escolliu una nova contrasenya:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "El vostre nom d'usuari, en cas que l'hagueu oblidat:"
+
+msgid "Thanks for using our site!"
+msgstr "Gràcies per fer ús del nostre lloc!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "L'equip de %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Heu oblidat la vostra contrasenya? Introduïu la vostra adreça de correu "
+"electrònic a sota, i us enviarem instruccions per canviar-la."
+
+msgid "Email address:"
+msgstr "Adreça de correu electrònic:"
+
+msgid "Reset my password"
+msgstr "Restablir la meva contrasenya"
+
+msgid "All dates"
+msgstr "Totes les dates"
+
+#, python-format
+msgid "Select %s"
+msgstr "Seleccioneu %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Seleccioneu %s per modificar"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Selecciona %s per a veure"
+
+msgid "Date:"
+msgstr "Data:"
+
+msgid "Time:"
+msgstr "Hora:"
+
+msgid "Lookup"
+msgstr "Cercar"
+
+msgid "Currently:"
+msgstr "Actualment:"
+
+msgid "Change:"
+msgstr "Canviar:"

BIN
static/admin/locale/ca/LC_MESSAGES/djangojs.mo


+ 330 - 0
static/admin/locale/ca/LC_MESSAGES/djangojs.po

@@ -0,0 +1,330 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Antoni Aloy <aaloy@apsl.net>, 2017,2021
+# Carles Barrobés <carles@barrobes.com>, 2011-2012,2014
+# Carlton Gibson <carlton.gibson@gmail.com>, 2023
+# Emilio Carrion, 2022
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Roger Pons <rogerpons@gmail.com>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"Last-Translator: Carlton Gibson <carlton.gibson@gmail.com>, 2023\n"
+"Language-Team: Catalan (http://app.transifex.com/django/django/language/"
+"ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "%s Disponibles"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Aquesta és la llista de %s disponibles. En podeu escollir alguns "
+"seleccionant-los a la caixa de sota i fent clic a la fletxa \"Escollir\" "
+"entre les dues caixes."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Escriviu en aquesta caixa per a filtrar la llista de %s disponibles."
+
+msgid "Filter"
+msgstr "Filtre"
+
+msgid "Choose all"
+msgstr "Escollir-los tots"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Feu clic per escollir tots els %s d'un cop."
+
+msgid "Choose"
+msgstr "Escollir"
+
+msgid "Remove"
+msgstr "Eliminar"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Escollit %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Aquesta és la llista de %s escollits. En podeu eliminar alguns seleccionant-"
+"los a la caixa de sota i fent clic a la fletxa \"Eliminar\" entre les dues "
+"caixes."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "Escriviu en aquesta caixa per a filtrar la llista de %s seleccionats."
+
+msgid "Remove all"
+msgstr "Esborrar-los tots"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Feu clic per eliminar tots els %s escollits d'un cop."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s opcion seleccionada no visible"
+msgstr[1] "%s opcions seleccionades no visibles"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s de %(cnt)s seleccionat"
+msgstr[1] "%(sel)s of %(cnt)s seleccionats"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Teniu canvis sense desar a camps editables individuals. Si executeu una "
+"acció, es perdran aquests canvis no desats."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Has seleccionat una acció, però encara no l'has desat els canvis dels camps "
+"individuals. Si us plau clica OK per desar. Necessitaràs tornar a executar "
+"l'acció."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Has seleccionat una acció i no has fet cap canvi als camps individuals. "
+"Probablement estàs cercant el botó Anar enlloc del botó de Desar."
+
+msgid "Now"
+msgstr "Ara"
+
+msgid "Midnight"
+msgstr "Mitjanit"
+
+msgid "6 a.m."
+msgstr "6 a.m."
+
+msgid "Noon"
+msgstr "Migdia"
+
+msgid "6 p.m."
+msgstr "6 p.m."
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Nota: Aneu %s hora avançats respecte la hora del servidor."
+msgstr[1] "Nota: Aneu %s hores avançats respecte la hora del servidor."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Nota: Aneu %s hora endarrerits respecte la hora del servidor."
+msgstr[1] "Nota: Aneu %s hores endarrerits respecte la hora del servidor."
+
+msgid "Choose a Time"
+msgstr "Escolliu una hora"
+
+msgid "Choose a time"
+msgstr "Escolliu una hora"
+
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+msgid "Today"
+msgstr "Avui"
+
+msgid "Choose a Date"
+msgstr "Escolliu una data"
+
+msgid "Yesterday"
+msgstr "Ahir"
+
+msgid "Tomorrow"
+msgstr "Demà"
+
+msgid "January"
+msgstr "Gener"
+
+msgid "February"
+msgstr "Febrer"
+
+msgid "March"
+msgstr "Març"
+
+msgid "April"
+msgstr "Abril"
+
+msgid "May"
+msgstr "Maig"
+
+msgid "June"
+msgstr "Juny"
+
+msgid "July"
+msgstr "Juliol"
+
+msgid "August"
+msgstr "Agost"
+
+msgid "September"
+msgstr "Setembre"
+
+msgid "October"
+msgstr "Octubre"
+
+msgid "November"
+msgstr "Novembre"
+
+msgid "December"
+msgstr "Desembre"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Gen"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Feb"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Mar"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Abr"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "Mai"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "Jun"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "Jul"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Ago"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Sep"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Oct"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Nov"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Des"
+
+msgid "Sunday"
+msgstr "Diumenge"
+
+msgid "Monday"
+msgstr "Dilluns"
+
+msgid "Tuesday"
+msgstr "Dimarts"
+
+msgid "Wednesday"
+msgstr "Dimecres"
+
+msgid "Thursday"
+msgstr "Dijous"
+
+msgid "Friday"
+msgstr "Divendres"
+
+msgid "Saturday"
+msgstr "Dissabte"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "dg."
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "dl."
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "dt."
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "dc."
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "dj."
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "dv."
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "ds."
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "D"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "L"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "M"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "X"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "J"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "V"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "S"
+
+msgid "Show"
+msgstr "Mostrar"
+
+msgid "Hide"
+msgstr "Ocultar"

BIN
static/admin/locale/ckb/LC_MESSAGES/django.mo


+ 792 - 0
static/admin/locale/ckb/LC_MESSAGES/django.po

@@ -0,0 +1,792 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Abdulla Dlshad, 2023
+# Bakhtawar Barzan, 2021
+# Bakhtawar Barzan, 2021
+# Kosar Tofiq Saeed <kosar.belana@gmail.com>, 2020
+# pejar hewrami <gumle@protonmail.com>, 2020
+# Swara <swara09@gmail.com>, 2022,2024
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-08-07 07:05+0000\n"
+"Last-Translator: Swara <swara09@gmail.com>, 2022,2024\n"
+"Language-Team: Central Kurdish (http://app.transifex.com/django/django/"
+"language/ckb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ckb\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "%(verbose_name_plural)sە هەڵبژێردراوەکان بسڕەوە"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "سەرکەوتووانە %(count)d %(items)sی سڕییەوە."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "ناتوانرێت %(name)s بسڕێتەوە"
+
+msgid "Are you sure?"
+msgstr "ئایا تۆ دڵنیایت؟"
+
+msgid "Administration"
+msgstr "بەڕێوەبەرایەتی"
+
+msgid "All"
+msgstr "هەمووی"
+
+msgid "Yes"
+msgstr "بەڵێ"
+
+msgid "No"
+msgstr "نەخێر"
+
+msgid "Unknown"
+msgstr "نەزانراو"
+
+msgid "Any date"
+msgstr "هەر بەروارێک"
+
+msgid "Today"
+msgstr "ئەمڕۆ"
+
+msgid "Past 7 days"
+msgstr "7 ڕۆژی ڕابردوو"
+
+msgid "This month"
+msgstr "ئەم مانگە"
+
+msgid "This year"
+msgstr "ئەمساڵ"
+
+msgid "No date"
+msgstr "بەروار نییە"
+
+msgid "Has date"
+msgstr "بەرواری هەیە"
+
+msgid "Empty"
+msgstr "بەتاڵ"
+
+msgid "Not empty"
+msgstr "بەتاڵ نییە"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"تکایە %(username)s و تێپەڕەوشە دروستەکە بنوسە بۆ هەژمارێکی ستاف. تێبینی بکە "
+"لەوانەیە هەردوو خانەکە دۆخی هەستیار بێت بۆ پیتەکان."
+
+msgid "Action:"
+msgstr "کردار:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "زیادکردنی %(verbose_name)sی تر"
+
+msgid "Remove"
+msgstr "لابردن"
+
+msgid "Addition"
+msgstr "خستنەسەر"
+
+msgid "Change"
+msgstr "گۆڕین"
+
+msgid "Deletion"
+msgstr "سڕینەوە"
+
+msgid "action time"
+msgstr "کاتی کردار"
+
+msgid "user"
+msgstr "بەکارهێنەر"
+
+msgid "content type"
+msgstr "جۆری ناوەڕۆک"
+
+msgid "object id"
+msgstr "ناسنامەی ئۆبجێکت"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "نوێنەرایەتی ئۆبجێکت"
+
+msgid "action flag"
+msgstr "ئاڵای کردار"
+
+msgid "change message"
+msgstr "گۆڕینی پەیام"
+
+msgid "log entry"
+msgstr "ڕاپۆرتی تۆمار"
+
+msgid "log entries"
+msgstr "ڕاپۆرتی تۆمارەکان"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "\"%(object)s\"ی زیادکرد."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "\"%(object)s\"— %(changes)s گۆڕدرا"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "\"%(object)s\" سڕایەوە."
+
+msgid "LogEntry Object"
+msgstr "ئۆبجێکتی ڕاپۆرتی تۆمار"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "{name} \"{object}\" زیادکرا."
+
+msgid "Added."
+msgstr "زیادکرا."
+
+msgid "and"
+msgstr "و"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "{fields} بۆ {name} “{object}” گۆڕدرا."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "{fields} گۆڕدرا."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "{name} “{object}” سڕایەوە."
+
+msgid "No fields changed."
+msgstr "هیچ خانەیەک نەگۆڕاوە."
+
+msgid "None"
+msgstr "هیچ"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"پەنجە داگرە لەسەر “Control”، یاخود “Command” لەسەر ماک، بۆ هەڵبژاردنی "
+"دانەیەک زیاتر."
+
+msgid "Select this object for an action - {}"
+msgstr "ئەم تەنە هەڵبژێرە بۆ کردارێک - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "{name} “{obj}” بەسەرکەوتوویی زیادکرا."
+
+msgid "You may edit it again below."
+msgstr "دەگونجێت تۆ دووبارە لەخوارەوە دەستکاری بکەیت."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} “{obj}” بەسەرکەوتوویی زیادکرا. دەگونجێت تۆ لە خوارەوە {name}یەکی تر "
+"زیادبکەیت."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"{name} “{obj}” بەسەرکەوتوویی گۆڕدرا. دەگونجێت تۆ لە خوارەوە دووبارە دەستکاری "
+"بکەیتەوە."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"{name} “{obj}” بەسەرکەوتوویی گۆڕدرا. دەگونجێت تۆ لە خوارەوە {name}یەکی تر "
+"زیاد بکەیت."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name}ی “{obj}” بەسەرکەوتوویی گۆڕدرا."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"دەبێت بڕگەکان هەڵبژێردرابن تاوەکو کرداریان لەسەر ئەنجام بدەیت. هیچ بڕگەیەک "
+"نەگۆڕدراوە."
+
+msgid "No action selected."
+msgstr "هیچ کردارێک هەڵنەبژێردراوە."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s\"%(obj)s\" بەسەرکەوتوویی سڕدرایەوە."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s بە ناسنامەی \"%(key)s\" بوونی نییە. لەوانەیە سڕدرابێتەوە؟"
+
+#, python-format
+msgid "Add %s"
+msgstr "زیادکردنی %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "گۆڕینی %s"
+
+#, python-format
+msgid "View %s"
+msgstr "بینینی %s"
+
+msgid "Database error"
+msgstr "هەڵەی بنکەدراوە"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s بەسەرکەوتوویی گۆڕدرا."
+msgstr[1] "%(count)s %(name)s بەسەرکەوتوویی گۆڕدران."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s هەڵبژێردراوە"
+msgstr[1] "هەمووی %(total_count)s هەڵبژێردراون"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 لە %(cnt)s هەڵبژێردراوە"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "مێژووی گۆڕین: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(instance)sی %(class_name)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"سڕینەوەی %(instance)sی %(class_name)s پێویستی بە سڕینەوەی ئەم ئۆبجێکتە "
+"پەیوەندیدارە پارێزراوانەیە: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "بەڕێوەبەری پێگەی جەنگۆ"
+
+msgid "Django administration"
+msgstr "بەڕێوەبەرایەتی جەنگۆ"
+
+msgid "Site administration"
+msgstr "بەڕێوەبەرایەتی پێگە"
+
+msgid "Log in"
+msgstr "چوونەژوورەوە"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "بەڕێوەبەرایەتی %(app)s"
+
+msgid "Page not found"
+msgstr "پەڕە نەدۆزرایەوە"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "داوای لێبوردن ئەکەین، بەڵام ناتوانرێت پەڕەی داواکراو بدۆزرێتەوە."
+
+msgid "Home"
+msgstr "ماڵەوە"
+
+msgid "Server error"
+msgstr "هەڵەی ڕاژەکار"
+
+msgid "Server error (500)"
+msgstr "هەڵەی ڕاژەکار (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "هەڵەی ڕاژەکار <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"هەڵەیەک بوونی هەبووە. ڕاپۆرت دراوە بە پێگەی بەڕێوەبەرایەتی لەڕێی ئیمەیڵەوە و "
+"دەبێت بەزوویی  چاکبکرێت. سوپاس بۆ ئارامگرتنت."
+
+msgid "Run the selected action"
+msgstr "کرداری هەڵبژێردراو جێبەجێ بکە"
+
+msgid "Go"
+msgstr "بڕۆ"
+
+msgid "Click here to select the objects across all pages"
+msgstr "کرتە لێرە بکە بۆ هەڵبژاردنی ئۆبجێکتەکان لە تەواوی هەموو پەڕەکان"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "هەموو %(total_count)s %(module_name)s هەڵبژێرە"
+
+msgid "Clear selection"
+msgstr "پاککردنەوەی هەڵبژاردن"
+
+msgid "Breadcrumbs"
+msgstr "وردەنان"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "مۆدێلەکان لە بەرنامەی %(name)s"
+
+msgid "Add"
+msgstr "زیادکردن"
+
+msgid "View"
+msgstr "بینین"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "تۆ ڕێگەپێدراو نیت بۆ بینین یان دەستکاری هیچ شتێک."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"سەرەتا، ناوی بەکارهێنەر و تێپەڕەوشە بنوسە. پاشان دەتوانیت دەستکاری زیاتری "
+"هەڵبژاردنەکانی بەکارهێنەر بکەیت."
+
+msgid "Enter a username and password."
+msgstr "ناوی بەکارهێنەر و تێپەڕەوشە بنوسە"
+
+msgid "Change password"
+msgstr "گۆڕینی تێپەڕەوشە"
+
+msgid "Set password"
+msgstr "دانانی تێپەڕەوشە"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "تکایە ئەم هەڵەیەی خوارەوە ڕاست بکەرەوە."
+msgstr[1] "تکایە هەڵەکانی خوارەوە ڕاست بکەرەوە."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "تێپەڕەوشەی نوێ بۆ بەکارهێنەری <strong>%(username)s</strong> بنوسە"
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"ئەم کردارە <strong>چالاک دەکات</strong> لەسەر بنەمای تێپەڕەوشەی ئەم "
+"بەکارهێنەرە."
+
+msgid "Disable password-based authentication"
+msgstr "ناچالاککردنی ڕەسەنایەتی لەسەر بنەمای تێپەڕەوشە"
+
+msgid "Enable password-based authentication"
+msgstr "چالاککردنی ڕەسەنایەتی لەسەر بنەمای تێپەڕەوشە"
+
+msgid "Skip to main content"
+msgstr "تێیپەڕێنە بۆ ناوەڕۆکی سەرەکی"
+
+msgid "Welcome,"
+msgstr "بەخێربێیت،"
+
+msgid "View site"
+msgstr "بینینی پێگە"
+
+msgid "Documentation"
+msgstr "بەڵگەنامە"
+
+msgid "Log out"
+msgstr "چوونەدەرەوە"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "زیادکردنی %(name)s"
+
+msgid "History"
+msgstr "مێژوو"
+
+msgid "View on site"
+msgstr "بینین لەسەر پێگە"
+
+msgid "Filter"
+msgstr "پاڵاوتن"
+
+msgid "Hide counts"
+msgstr "ژماردن بشارەوە"
+
+msgid "Show counts"
+msgstr "ژماردن پیشانبدە"
+
+msgid "Clear all filters"
+msgstr "پاکردنەوەی هەموو پاڵاوتنەکان"
+
+msgid "Remove from sorting"
+msgstr "لابردن لە ڕیزکردن"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "ڕیزکردنی لە پێشینە: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "ڕیزکردنی پێچەوانە"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "گۆڕینی ڕووکار (ڕووکاری ئێستا: خۆکار)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "گۆڕینی ڕووکار (ڕووکاری ئێستا: ڕووناک)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "گۆڕینی ڕووکار (ڕووکاری ئێستا: تاریک)"
+
+msgid "Delete"
+msgstr "سڕینەوە"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"سڕینەوەی %(object_name)s ‘%(escaped_object)s‘ دەبێتە هۆی سڕینەوەی ئۆبجێکتی "
+"پەیوەندیدار، بەڵام هەژمارەکەت ڕێگەپێدراو نییە بۆ سڕینەوەی ئەم جۆرە "
+"ئۆبجێکتانەی تر:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"سڕینەوەی %(object_name)sی ‘%(escaped_object)s‘ پێویستیی بە سڕینەوەی ئەم "
+"ئۆبجێکتە پەیوەندیدارە پارێزراوانەیە:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"ئایا تۆ دڵنیایت کە دەتەوێت %(object_name)sی \"%(escaped_object)s\" بسڕیتەوە؟ "
+"هەموو ئەم ئۆبجێکتە پەیوەندیدارانەش دەسڕێتەوە:"
+
+msgid "Objects"
+msgstr "ئۆبجێکتەکان"
+
+msgid "Yes, I’m sure"
+msgstr "بەڵێ، من دڵنیام"
+
+msgid "No, take me back"
+msgstr "نەخێر، من بگەڕێنەرەوە دواوە"
+
+msgid "Delete multiple objects"
+msgstr "سڕینەوەی چەندین ئۆبجێکت"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"سڕینەوەی %(objects_name)sی هەڵبژێردراو دەبێتە هۆی سڕینەوەی ئۆبجێکتی "
+"پەیوەندیدار، بەڵام هەژمارەکەت ڕێگەپێدراو نییە بۆ سڕینەوەی ئەم جۆرە "
+"ئۆبجێکتانەی تر:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"سڕینەوەی %(objects_name)sی هەڵبژێردراو پێویستیی بە سڕینەوەی ئەم ئۆبجێکتە "
+"پەیوەندیدارە پارێزراوانەیە:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"ئایا تۆ دڵنیایت دەتەوێت %(objects_name)sی هەڵبژێردراو بسڕیتەوە؟ هەموو ئەم "
+"ئۆبجێکت و بڕگە پەیوەندیدارەکانیان دەسڕێنەوە:"
+
+msgid "Delete?"
+msgstr "سڕینەوە؟"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "بەپێی %(filter_title)s"
+
+msgid "Summary"
+msgstr "پوختە"
+
+msgid "Recent actions"
+msgstr "کردارە نوێیەکان"
+
+msgid "My actions"
+msgstr "کردارەکانم"
+
+msgid "None available"
+msgstr "هیچ شتيک بەردەست نییە"
+
+msgid "Added:"
+msgstr "زیادکرا:"
+
+msgid "Changed:"
+msgstr "گۆڕدرا:"
+
+msgid "Deleted:"
+msgstr "سڕایەوە:"
+
+msgid "Unknown content"
+msgstr "ناوەڕۆکی نەزانراو"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"هەڵەیەک هەیە لە دامەزراندنی بنکەدراوەکەت. دڵنیاببەرەوە لەوەی خشتە گونجاوەکان "
+"دروستکراون، دڵنیاببەرەوە بنکەدراوەکە ئەخوێندرێتەوە لەلایەن بەکارهێنەری "
+"گونجاوەوە."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"تۆ ڕەسەنایەتیت هەیە وەکو %(username)s, بەڵام ڕێگەپێدراو نیت بۆ ئەم لاپەڕەیە. "
+"دەتەوێت بە هەژمارێکی تر بچیتەژوورەوە؟"
+
+msgid "Forgotten your password or username?"
+msgstr "تێپەڕەوشە یان ناوی بەکارهێنەرەکەت بیرچۆتەوە؟"
+
+msgid "Toggle navigation"
+msgstr "کردنەوەو داخستنی ڕێنیشاندەر"
+
+msgid "Sidebar"
+msgstr "شریتی لاتەنیشت"
+
+msgid "Start typing to filter…"
+msgstr "دەست بکە بە نوسین بۆ پاڵاوتن..."
+
+msgid "Filter navigation items"
+msgstr "بڕگەکانی ڕێنیشاندەر بپاڵێوە"
+
+msgid "Date/time"
+msgstr "بەروار/کات"
+
+msgid "User"
+msgstr "بەکارهێنەر"
+
+msgid "Action"
+msgstr "کردار"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "تۆمار"
+msgstr[1] "تۆمارەکان"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"ئەم ئۆبجێکتە مێژووی گۆڕانکاری نییە. ڕەنگە لە ڕێگەی بەڕێەوەبەری ئەم پێگەیەوە "
+"زیادنەکرابێت."
+
+msgid "Show all"
+msgstr "پیشاندانی هەمووی"
+
+msgid "Save"
+msgstr "پاشەکەوتکردن"
+
+msgid "Popup closing…"
+msgstr "پەنجەرەکە دادەخرێت..."
+
+msgid "Search"
+msgstr "گەڕان"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s ئەنجام"
+msgstr[1] "%(counter)s ئەنجام"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)sگشتی"
+
+msgid "Save as new"
+msgstr "پاشەکەوتکردن وەک نوێ"
+
+msgid "Save and add another"
+msgstr "پاشەکەوتی بکەو دانەیەکی تر زیاد بکە"
+
+msgid "Save and continue editing"
+msgstr "پاشەکەوتی بکەو بەردەوامبە لە گۆڕنکاری"
+
+msgid "Save and view"
+msgstr "پاشەکەوتی بکەو پیشانی بدە"
+
+msgid "Close"
+msgstr "داخستن"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "هەڵبژێردراوەکان بگۆڕە %(model)s"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "زیادکردنی %(model)sی تر"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "هەڵبژێردراوەکان بسڕەوە %(model)s"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "سەیری %(model)s هەڵبژێردراوەکان بکە"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "سوپاس بۆ بەسەربردنی هەندێک کاتێکی ئەمڕۆ لەگەڵ ماڵپەڕەکەدا."
+
+msgid "Log in again"
+msgstr "دووبارە چوونەژوورەوە"
+
+msgid "Password change"
+msgstr "گۆڕینی تێپەڕەوشە"
+
+msgid "Your password was changed."
+msgstr "تێپەڕەوشەت گۆڕدرا."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"لەپێناو پاراستندا تکایە تێپەڕەوشە کۆنەکەت بنووسە، پاشان دووجار تێپەڕەوشە "
+"نوێیەکەت بنووسە بۆ ئەوەی بتوانین پشتڕاستی بکەینەوە کە بە دروستی نووسیوتە."
+
+msgid "Change my password"
+msgstr "گۆڕینی تێپەڕەوشەکەم"
+
+msgid "Password reset"
+msgstr "دانانەوەی تێپەڕەوشە"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "تێپەڕەوشەکەت دانرایەوە. لەوانەیە ئێستا بچیتە سەرەوە و بچیتەژوورەوە."
+
+msgid "Password reset confirmation"
+msgstr "دووپاتکردنەوەی دانانەوەی تێپەڕەوشە"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"تکایە دووجار تێپەڕەوشە نوێیەکەت بنوسە، پاشان دەتوانین دڵنیابین کە بە دروستی "
+"نوسراوە."
+
+msgid "New password:"
+msgstr "تێپەڕەوشەی نوێ:"
+
+msgid "Confirm password:"
+msgstr "دووپاتکردنەوەی تێپەڕەوشە:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"بەستەری دانانەوەی تێپەڕەوشە نادروست بوو، لەوانەیە لەبەر ئەوەی پێشتر "
+"بەکارهاتووە. تکایە داوای دانانەوەی تێپەڕەوشەی نوێ بکە."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"ئێمە ڕێنماییەکانمان بۆ دانانی تێپەڕەوشەکەت ئیمەیڵ بۆت ناردووە، ئەگەر "
+"هەژمارێک هەبێت لەگەڵ ئەو ئیمەیڵەی کە نوسیوتە. پێویستە بەم زووانە بەدەستت "
+"بگات."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"ئەگەر تۆ نامەی ئەلیکترۆنیت بەدەست نەگەیشت، ئەوا دڵنیا ببەرەوە کە تۆ ئەو "
+"ناونیشانەت داخڵکردووە کە پێی تۆمار بوویت، وە فۆڵدەری سپامەکەت بپشکنە."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"تۆ ئەم نامە ئەلیکترۆنیەت بەدەست گەیشتووە لەبەرئەوەی داواکاری دوبارە "
+"دانانەوەی تێپەڕە ووشەت کردبوو بۆ هەژماری بەکارهێنەرەکەت لە %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "تکایە بڕۆ بۆ پەڕەی دیاریکراو و تێپەڕەوشەیەکی نوێ هەڵبژێرە:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "ناوی بەکارهێنەری تۆ، لە کاتێکدا بیرت چووبێتەوە:"
+
+msgid "Thanks for using our site!"
+msgstr "سوپاس بۆ بەکارهێنانی پێگەکەمان!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "دەستەی %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"تێپەڕەوشەکەت بیرچووەتەوە؟ ئیمەیڵەکەت لەخوارەوە بنوسە، پاشان ئێمە ئێمەیڵی "
+"ڕێنمایت بۆ دەنێرین بۆ دانانی دانەیەکی نوێ."
+
+msgid "Email address:"
+msgstr "ناونیشانی ئیمەیڵ:"
+
+msgid "Reset my password"
+msgstr "دانانەوەی تێپەڕەوشەکەم"
+
+msgid "Select all objects on this page for an action"
+msgstr "هەموو تەنەکان لەم لاپەڕەیە بۆ کردارێک هەڵبژێرە"
+
+msgid "All dates"
+msgstr "هەموو بەروارەکان"
+
+#, python-format
+msgid "Select %s"
+msgstr "%s هەڵبژێرە"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "%s هەڵبژێرە بۆ گۆڕین"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "%s هەڵبژێرە بۆ بینین"
+
+msgid "Date:"
+msgstr "بەروار:"
+
+msgid "Time:"
+msgstr "کات:"
+
+msgid "Lookup"
+msgstr "گەڕان"
+
+msgid "Currently:"
+msgstr "ئێستاکە:"
+
+msgid "Change:"
+msgstr "گۆڕین:"

BIN
static/admin/locale/ckb/LC_MESSAGES/djangojs.mo


+ 329 - 0
static/admin/locale/ckb/LC_MESSAGES/djangojs.po

@@ -0,0 +1,329 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Bakhtawar Barzan, 2021
+# Bakhtawar Barzan, 2021
+# Mariusz Felisiak <felisiak.mariusz@gmail.com>, 2023
+# Swara <swara09@gmail.com>, 2022-2024
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2024-01-20 07:59+0000\n"
+"Last-Translator: Swara <swara09@gmail.com>, 2022-2024\n"
+"Language-Team: Central Kurdish (http://app.transifex.com/django/django/"
+"language/ckb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ckb\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "%sە بەردەستەکان"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"ئەمە لیستی بەردەستی %s . دەتوانیت هەندێکیان هەڵبژێریت بە هەڵبژاردنییان لەم "
+"بوخچەی خوارەوە و پاشان کرتەکردن لەسەر ئاراستەی \"هەڵبژێرە\" لە نێوان هەردوو "
+"بوخچەکەدا."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "لەم بوخچەدا بنووسە بۆ ئەوەی لیستی بەردەستەکان بپاڵێویت %s."
+
+msgid "Filter"
+msgstr "پاڵاوتن"
+
+msgid "Choose all"
+msgstr "هەمووی هەڵبژێرە"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "کرتە بکە بۆ هەڵبژاردنی هەموو %s بەیەکجار."
+
+msgid "Choose"
+msgstr "‌هەڵبژاردن"
+
+msgid "Remove"
+msgstr "لابردن"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "%s هەڵبژێردراوەکان"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"ئەمە لیستی هەڵبژێردراوی %s. دەتوانیت هەندێکیان لاببەیت بە هەڵبژاردنییان لەم "
+"بوخچەی خوارەوە و پاشان کرتەکردن لەسەر ئاراستەی \"لابردن\" لە نێوان هەردوو "
+"بوخچەکەدا."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "لەم بوخچەدا بنووسە بۆ ئەوەی لیستی هەڵبژێردراوەکان بپاڵێویت %s."
+
+msgid "Remove all"
+msgstr "لابردنی هەمووی"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "کرتە بکە بۆ لابردنی هەموو ئەوانەی هەڵبژێردراون %sبە یەکجار."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%sبژاردەی هەڵبژێردراو نابینرێت"
+msgstr[1] "%s هەڵبژاردە هەڵبژێردراوەکان نابینرێن"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "‫%(sel)s لە %(cnt)s هەڵبژێردراوە"
+msgstr[1] "‫%(sel)s لە %(cnt)s هەڵبژێردراوە"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"گۆڕانکاریی پاشەکەوتنەکراوت هەیە لەسەر خانەی یەکلایەنەی شیاوی دەستکاریی. "
+"ئەگەر کردارێک ئەنجام بدەیت، گۆڕانکارییە پاشەکەوتنەکراوەکانت لەدەست دەچن."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"چالاکییەکی هەڵبژێردراوت هەیە، بەڵام خانە تاکلایەنەکانت تا ئێستا پاشەکەوت "
+"نەکردووە. تکایە کردتە لەسەر باشە بکە بۆ پاشەکەوتکردن. پێویستە دووبارە "
+"چالاکییەکە ئەنجام بدەیتەوە."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"چالاکییەکی هەڵبژێردراوت هەیە، هەروەها هیچ گۆڕانکارییەکت لەسەر خانە "
+"تاکلایەنەکانت نیە. ڕەنگە تۆ بەدوای دوگمەی بڕۆدا بگەڕێیت نەک دوگمەی "
+"پاشەکەوتکردن."
+
+msgid "Now"
+msgstr "ئێستا"
+
+msgid "Midnight"
+msgstr "نیوەشەو"
+
+msgid "6 a.m."
+msgstr "6ی بەیانی"
+
+msgid "Noon"
+msgstr "نیوەڕۆ"
+
+msgid "6 p.m."
+msgstr "6ی ئێوارە."
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "تێبینی: تۆ %s کاتژمێر لەپێش کاتی ڕاژەوەیت."
+msgstr[1] "تێبینی: تۆ %s کاتژمێر لەپێش کاتی ڕاژەوەیت."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "تێبینی: تۆ %s کاتژمێر لەدوای کاتی ڕاژەوەیت."
+msgstr[1] "تێبینی: تۆ %s کاتژمێر لەدوای کاتی ڕاژەوەیت."
+
+msgid "Choose a Time"
+msgstr "کاتێک دیاریبکە"
+
+msgid "Choose a time"
+msgstr "کاتێک دیاریبکە"
+
+msgid "Cancel"
+msgstr "پاشگەزبوونەوە"
+
+msgid "Today"
+msgstr "ئەمڕۆ"
+
+msgid "Choose a Date"
+msgstr "ڕۆژێک دیاریبکە"
+
+msgid "Yesterday"
+msgstr "دوێنێ"
+
+msgid "Tomorrow"
+msgstr "سبەینێ"
+
+msgid "January"
+msgstr "‎ڕێبەندان"
+
+msgid "February"
+msgstr "‎ڕەشەمە"
+
+msgid "March"
+msgstr "نەورۆز"
+
+msgid "April"
+msgstr "‎گوڵان"
+
+msgid "May"
+msgstr "جۆزەردان"
+
+msgid "June"
+msgstr "‎پوشپەڕ"
+
+msgid "July"
+msgstr "گەلاوێژ "
+
+msgid "August"
+msgstr "‎خەرمانان"
+
+msgid "September"
+msgstr "‎ڕەزبەر"
+
+msgid "October"
+msgstr "‎گەڵاڕێزان"
+
+msgid "November"
+msgstr "‎سەرماوەرز"
+
+msgid "December"
+msgstr "‎بەفرانبار"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "‎ڕێبەندان"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "ڕەشەمە"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "نەورۆز"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "گوڵان"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "‎جۆزەردان"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "پوشپەڕ"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "‎گەلاوێژ"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "خەرمانان"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "‎ڕەزبەر"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "‎گەڵاڕێزان"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "‎سەرماوەرز"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "‎بەفرانبار"
+
+msgid "Sunday"
+msgstr "یەکشەممە"
+
+msgid "Monday"
+msgstr "دووشەممە"
+
+msgid "Tuesday"
+msgstr "سێشەممە"
+
+msgid "Wednesday"
+msgstr "چوارشەممە"
+
+msgid "Thursday"
+msgstr "پێنجشەممە"
+
+msgid "Friday"
+msgstr "هەینی"
+
+msgid "Saturday"
+msgstr "شەممە"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "یەک"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "دوو"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "سێ"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "چوار"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "پێنج"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "هەینی"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "شەم"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "ی"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "د"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "س"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "چ"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "پ"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "هە"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "ش"
+
+msgid "Show"
+msgstr "پیشاندان"
+
+msgid "Hide"
+msgstr "شاردنەوە"

BIN
static/admin/locale/cs/LC_MESSAGES/django.mo


+ 803 - 0
static/admin/locale/cs/LC_MESSAGES/django.po

@@ -0,0 +1,803 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Jan Papež <honyczek@centrum.cz>, 2024
+# Jiří Podhorecký <jirka.p@volny.cz>, 2024
+# Jiří Podhorecký <jirka.p@volny.cz>, 2022
+# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011
+# Tomáš Ehrlich <tomas.ehrlich@gmail.com>, 2015
+# Vláďa Macek <macek@sandbox.cz>, 2013-2014
+# Vláďa Macek <macek@sandbox.cz>, 2015-2020,2022
+# yedpodtrzitko <yed@vanyli.net>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-10-07 07:05+0000\n"
+"Last-Translator: Jan Papež <honyczek@centrum.cz>, 2024\n"
+"Language-Team: Czech (http://app.transifex.com/django/django/language/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n "
+"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Odstranit vybrané položky typu %(verbose_name_plural)s"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Úspěšně odstraněno: %(count)d %(items)s."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Nelze smazat %(name)s"
+
+msgid "Are you sure?"
+msgstr "Jste si jisti?"
+
+msgid "Administration"
+msgstr "Správa"
+
+msgid "All"
+msgstr "Vše"
+
+msgid "Yes"
+msgstr "Ano"
+
+msgid "No"
+msgstr "Ne"
+
+msgid "Unknown"
+msgstr "Neznámé"
+
+msgid "Any date"
+msgstr "Libovolné datum"
+
+msgid "Today"
+msgstr "Dnes"
+
+msgid "Past 7 days"
+msgstr "Posledních 7 dní"
+
+msgid "This month"
+msgstr "Tento měsíc"
+
+msgid "This year"
+msgstr "Tento rok"
+
+msgid "No date"
+msgstr "Bez data"
+
+msgid "Has date"
+msgstr "Má datum"
+
+msgid "Empty"
+msgstr "Prázdná hodnota"
+
+msgid "Not empty"
+msgstr "Neprázdná hodnota"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Zadejte správné %(username)s a heslo pro personál. Obě pole mohou rozlišovat "
+"velká a malá písmena."
+
+msgid "Action:"
+msgstr "Operace:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Přidat %(verbose_name)s"
+
+msgid "Remove"
+msgstr "Odebrat"
+
+msgid "Addition"
+msgstr "Přidání"
+
+msgid "Change"
+msgstr "Změnit"
+
+msgid "Deletion"
+msgstr "Odstranění"
+
+msgid "action time"
+msgstr "čas operace"
+
+msgid "user"
+msgstr "uživatel"
+
+msgid "content type"
+msgstr "typ obsahu"
+
+msgid "object id"
+msgstr "id položky"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "reprez. položky"
+
+msgid "action flag"
+msgstr "příznak operace"
+
+msgid "change message"
+msgstr "zpráva o změně"
+
+msgid "log entry"
+msgstr "položka protokolu"
+
+msgid "log entries"
+msgstr "položky protokolu"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Přidán objekt \"%(object)s\"."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Změněn objekt \"%(object)s\" — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Odstraněna položka \"%(object)s\"."
+
+msgid "LogEntry Object"
+msgstr "Objekt záznam v protokolu"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Přidáno: {name} \"{object}\"."
+
+msgid "Added."
+msgstr "Přidáno."
+
+msgid "and"
+msgstr "a"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Změněno: {fields} pro {name} \"{object}\"."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Změněno: {fields}"
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Odstraněno: {name} \"{object}\"."
+
+msgid "No fields changed."
+msgstr "Nebyla změněna žádná pole."
+
+msgid "None"
+msgstr "Žádný"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Výběr více než jedné položky je možný přidržením klávesy \"Control\", na "
+"Macu \"Command\"."
+
+msgid "Select this object for an action - {}"
+msgstr "Vyberte tento objekt pro akci - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "Položka typu {name} \"{obj}\" byla úspěšně přidána."
+
+msgid "You may edit it again below."
+msgstr "Níže můžete údaje znovu upravovat."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"Položka typu {name} \"{obj}\" byla úspěšně přidána. Níže můžete přidat další "
+"položku {name}."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"Položka typu {name} \"{obj}\" byla úspěšně změněna. Níže ji můžete dále "
+"upravovat."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"Položka \"{obj}\" typu {name} byla úspěšně změněna. Níže můžete přidat další "
+"položku {name}."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "Položka \"{obj}\" typu {name} byla úspěšně změněna."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"K provedení hromadných operací je třeba vybrat nějaké položky. Nedošlo k "
+"žádným změnám."
+
+msgid "No action selected."
+msgstr "Nebyla vybrána žádná operace."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně odstraněna."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "Objekt %(name)s s klíčem \"%(key)s\" neexistuje. Možná byl odstraněn."
+
+#, python-format
+msgid "Add %s"
+msgstr "%s: přidat"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s: změnit"
+
+#, python-format
+msgid "View %s"
+msgstr "Zobrazit %s"
+
+msgid "Database error"
+msgstr "Chyba databáze"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "Položka %(name)s byla úspěšně změněna."
+msgstr[1] "%(count)s položky %(name)s byly úspěšně změněny."
+msgstr[2] "%(count)s položek %(name)s bylo úspěšně změněno."
+msgstr[3] "%(count)s položek %(name)s bylo úspěšně změněno."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s položka vybrána."
+msgstr[1] "Všechny %(total_count)s položky vybrány."
+msgstr[2] "Vybráno všech %(total_count)s položek."
+msgstr[3] "Vybráno všech %(total_count)s položek."
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Vybraných je 0 položek z celkem %(cnt)s."
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Historie změn: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s: %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Odstranění položky \"%(instance)s\" typu %(class_name)s by vyžadovalo "
+"odstranění těchto souvisejících chráněných položek: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Správa webu Django"
+
+msgid "Django administration"
+msgstr "Správa systému Django"
+
+msgid "Site administration"
+msgstr "Správa webu"
+
+msgid "Log in"
+msgstr "Přihlášení"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "Správa aplikace %(app)s"
+
+msgid "Page not found"
+msgstr "Stránka nenalezena"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Požadovaná stránka nebyla bohužel nalezena."
+
+msgid "Home"
+msgstr "Domů"
+
+msgid "Server error"
+msgstr "Chyba serveru"
+
+msgid "Server error (500)"
+msgstr "Chyba serveru (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Chyba serveru <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"V systému došlo k chybě. Byla e-mailem nahlášena správcům, kteří by ji měli "
+"v krátké době opravit. Děkujeme za trpělivost."
+
+msgid "Run the selected action"
+msgstr "Provést vybranou operaci"
+
+msgid "Go"
+msgstr "Provést"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Klepnutím zde vyberete položky ze všech stránek."
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Vybrat všechny položky typu %(module_name)s, celkem %(total_count)s."
+
+msgid "Clear selection"
+msgstr "Zrušit výběr"
+
+msgid "Breadcrumbs"
+msgstr "Drobečky"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Modely v aplikaci %(name)s"
+
+msgid "Add"
+msgstr "Přidat"
+
+msgid "View"
+msgstr "Zobrazit"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Nemáte oprávnění k zobrazení ani úpravám."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Nejdříve zadejte uživatelské jméno a heslo. Poté budete moci upravovat více "
+"uživatelských nastavení."
+
+msgid "Enter a username and password."
+msgstr "Zadejte uživatelské jméno a heslo."
+
+msgid "Change password"
+msgstr "Změnit heslo"
+
+msgid "Set password"
+msgstr "Nastavit heslo"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Opravte prosím níže uvedenou chybu."
+msgstr[1] "Opravte prosím níže uvedené chyby."
+msgstr[2] "Opravte prosím níže uvedené chyby."
+msgstr[3] "Opravte prosím níže uvedené chyby."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Zadejte nové heslo pro uživatele <strong>%(username)s</strong>."
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"Tato akce <strong>povolí</strong> pro tohoto uživatele ověřování na základě "
+"hesla."
+
+msgid "Disable password-based authentication"
+msgstr "Zakázat ověřování pomocí hesla"
+
+msgid "Enable password-based authentication"
+msgstr "Povolit ověřování pomocí hesla"
+
+msgid "Skip to main content"
+msgstr "Přeskočit na hlavní obsah"
+
+msgid "Welcome,"
+msgstr "Vítejte, uživateli"
+
+msgid "View site"
+msgstr "Zobrazení webu"
+
+msgid "Documentation"
+msgstr "Dokumentace"
+
+msgid "Log out"
+msgstr "Odhlásit se"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s: přidat"
+
+msgid "History"
+msgstr "Historie"
+
+msgid "View on site"
+msgstr "Zobrazení na webu"
+
+msgid "Filter"
+msgstr "Filtr"
+
+msgid "Hide counts"
+msgstr "Skrýt počty"
+
+msgid "Show counts"
+msgstr "Zobrazit počty"
+
+msgid "Clear all filters"
+msgstr "Zrušit všechny filtry"
+
+msgid "Remove from sorting"
+msgstr "Přestat řadit"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Priorita řazení: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Přehodit řazení"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Přepnout motiv (aktuální motiv: auto)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Přepnout motiv (aktuální motiv: světlý)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Přepnout motiv (aktuální motiv: tmavý)"
+
+msgid "Delete"
+msgstr "Odstranit"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Odstranění položky \"%(escaped_object)s\" typu %(object_name)s by vyústilo v "
+"odstranění souvisejících položek. Nemáte však oprávnění k odstranění položek "
+"následujících typů:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Odstranění položky '%(escaped_object)s' typu %(object_name)s by vyžadovalo "
+"odstranění souvisejících chráněných položek:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Opravdu má být odstraněna položka \"%(escaped_object)s\" typu "
+"%(object_name)s? Následující související položky budou všechny odstraněny:"
+
+msgid "Objects"
+msgstr "Objekty"
+
+msgid "Yes, I’m sure"
+msgstr "Ano, jsem si jist(a)"
+
+msgid "No, take me back"
+msgstr "Ne, beru zpět"
+
+msgid "Delete multiple objects"
+msgstr "Odstranit vybrané položky"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Odstranění položky typu %(objects_name)s by vyústilo v odstranění "
+"souvisejících položek. Nemáte však oprávnění k odstranění položek "
+"následujících typů:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Odstranění vybrané položky typu %(objects_name)s by vyžadovalo odstranění "
+"následujících souvisejících chráněných položek:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Opravdu má být odstraněny vybrané položky typu %(objects_name)s? Všechny "
+"vybrané a s nimi související položky budou odstraněny:"
+
+msgid "Delete?"
+msgstr "Odstranit?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Dle: %(filter_title)s "
+
+msgid "Summary"
+msgstr "Shrnutí"
+
+msgid "Recent actions"
+msgstr "Nedávné akce"
+
+msgid "My actions"
+msgstr "Moje akce"
+
+msgid "None available"
+msgstr "Nic"
+
+msgid "Added:"
+msgstr "Přidáno:"
+
+msgid "Changed:"
+msgstr "Změněno:"
+
+msgid "Deleted:"
+msgstr "Smazáno:"
+
+msgid "Unknown content"
+msgstr "Neznámý obsah"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Potíže s nainstalovanou databází. Ujistěte se, že byly vytvořeny "
+"odpovídající tabulky a že databáze je přístupná pro čtení příslušným "
+"uživatelem."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Jste přihlášeni jako uživatel %(username)s, ale k této stránce nemáte "
+"oprávnění. Chcete se přihlásit k jinému účtu?"
+
+msgid "Forgotten your password or username?"
+msgstr "Zapomněli jste heslo nebo uživatelské jméno?"
+
+msgid "Toggle navigation"
+msgstr "Přehodit navigaci"
+
+msgid "Sidebar"
+msgstr "Boční panel"
+
+msgid "Start typing to filter…"
+msgstr "Filtrovat začnete vepsáním textu..."
+
+msgid "Filter navigation items"
+msgstr "Filtrace položek navigace"
+
+msgid "Date/time"
+msgstr "Datum a čas"
+
+msgid "User"
+msgstr "Uživatel"
+
+msgid "Action"
+msgstr "Operace"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "položka"
+msgstr[1] "položky"
+msgstr[2] "položek"
+msgstr[3] "položek"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Tato položka nemá historii změn. Pravděpodobně nebyla přidána tímto "
+"administračním rozhraním."
+
+msgid "Show all"
+msgstr "Zobrazit vše"
+
+msgid "Save"
+msgstr "Uložit"
+
+msgid "Popup closing…"
+msgstr "Vyskakovací okno se zavírá..."
+
+msgid "Search"
+msgstr "Hledat"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s výsledek"
+msgstr[1] "%(counter)s výsledky"
+msgstr[2] "%(counter)s výsledků"
+msgstr[3] "%(counter)s výsledků"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "Celkem %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "Uložit jako novou položku"
+
+msgid "Save and add another"
+msgstr "Uložit a přidat další položku"
+
+msgid "Save and continue editing"
+msgstr "Uložit a pokračovat v úpravách"
+
+msgid "Save and view"
+msgstr "Uložit a zobrazit"
+
+msgid "Close"
+msgstr "Zavřít"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Změnit vybrané položky typu %(model)s"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Přidat další %(model)s"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Odstranit vybrané položky typu %(model)s"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Zobrazení vybraných %(model)s"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "Děkujeme za dnešní čas strávený s tímto neobyčejným webem."
+
+msgid "Log in again"
+msgstr "Přihlaste se znovu"
+
+msgid "Password change"
+msgstr "Změna hesla"
+
+msgid "Your password was changed."
+msgstr "Vaše heslo bylo změněno."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Zadejte svoje současné heslo a poté dvakrát heslo nové. Omezíme tak možnost "
+"překlepu."
+
+msgid "Change my password"
+msgstr "Změnit heslo"
+
+msgid "Password reset"
+msgstr "Obnovení hesla"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Vaše heslo bylo nastaveno. Nyní se můžete přihlásit."
+
+msgid "Password reset confirmation"
+msgstr "Potvrzení obnovy hesla"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "Zadejte dvakrát nové heslo. Tak ověříme, že bylo zadáno správně."
+
+msgid "New password:"
+msgstr "Nové heslo:"
+
+msgid "Confirm password:"
+msgstr "Potvrdit heslo:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Odkaz pro obnovení hesla byl neplatný, možná již byl použit. Požádejte o "
+"obnovení hesla znovu."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Návod na nastavení hesla byl odeslán na zadanou e-mailovou adresu, pokud "
+"účet s takovou adresou existuje. Měl by za okamžik dorazit."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Pokud e-mail neobdržíte, ujistěte se, že zadaná e-mailová adresa je stejná "
+"jako ta registrovaná u vašeho účtu a zkontrolujte složku nevyžádané pošty, "
+"tzv. spamu."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Tento e-mail vám byl zaslán na základě vyžádání obnovy hesla vašeho "
+"uživatelskému účtu na systému %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Přejděte na následující stránku a zadejte nové heslo:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Pro jistotu vaše uživatelské jméno:"
+
+msgid "Thanks for using our site!"
+msgstr "Děkujeme za používání našeho webu!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Tým aplikace %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Zapomněli jste heslo? Zadejte níže e-mailovou adresu a systém vám odešle "
+"postup k nastavení nového."
+
+msgid "Email address:"
+msgstr "E-mailová adresa:"
+
+msgid "Reset my password"
+msgstr "Obnovit heslo"
+
+msgid "Select all objects on this page for an action"
+msgstr "Vyberte všechny objekty na této stránce pro akci"
+
+msgid "All dates"
+msgstr "Všechna data"
+
+#, python-format
+msgid "Select %s"
+msgstr "%s: vybrat"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Vyberte položku %s ke změně"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Vyberte položku %s k zobrazení"
+
+msgid "Date:"
+msgstr "Datum:"
+
+msgid "Time:"
+msgstr "Čas:"
+
+msgid "Lookup"
+msgstr "Hledat"
+
+msgid "Currently:"
+msgstr "Aktuálně:"
+
+msgid "Change:"
+msgstr "Změna:"

BIN
static/admin/locale/cs/LC_MESSAGES/djangojs.mo


+ 332 - 0
static/admin/locale/cs/LC_MESSAGES/djangojs.po

@@ -0,0 +1,332 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Jan Papež <honyczek@centrum.cz>, 2024
+# Jiří Podhorecký <jirka.p@volny.cz>, 2024
+# Jiří Podhorecký <jirka.p@volny.cz>, 2022
+# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011
+# Vláďa Macek <macek@sandbox.cz>, 2012,2014
+# Vláďa Macek <macek@sandbox.cz>, 2015-2016,2020-2021
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-10-07 07:59+0000\n"
+"Last-Translator: Jan Papež <honyczek@centrum.cz>, 2024\n"
+"Language-Team: Czech (http://app.transifex.com/django/django/language/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n "
+"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Dostupné položky: %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Seznam dostupných položek %s. Jednotlivě je lze vybrat tak, že na ně v "
+"rámečku klepnete a pak klepnete na šipku \"Vybrat\" mezi rámečky."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+"Chcete-li filtrovat ze seznamu dostupných položek %s, začněte psát do tohoto "
+"pole."
+
+msgid "Filter"
+msgstr "Filtr"
+
+msgid "Choose all"
+msgstr "Vybrat vše"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Chcete-li najednou vybrat všechny položky %s, klepněte sem."
+
+msgid "Choose"
+msgstr "Vybrat"
+
+msgid "Remove"
+msgstr "Odebrat"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Vybrané položky %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Seznam vybraných položek %s. Jednotlivě je lze odebrat tak, že na ně v "
+"rámečku klepnete a pak klepnete na šipku \"Odebrat mezi rámečky."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "Zadáním do tohoto pole vyfiltrujete seznam vybraných %s."
+
+msgid "Remove all"
+msgstr "Odebrat vše"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Chcete-li najednou odebrat všechny vybrané položky %s, klepněte sem."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s vybraná volba není viditelná"
+msgstr[1] "%s vybrané volby nejsou viditelné"
+msgstr[2] "%s vybrané volby nejsou viditelné"
+msgstr[3] "%s vybrané volby nejsou viditelné"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "Vybrána je %(sel)s položka z celkem %(cnt)s."
+msgstr[1] "Vybrány jsou %(sel)s položky z celkem %(cnt)s."
+msgstr[2] "Vybraných je %(sel)s položek z celkem %(cnt)s."
+msgstr[3] "Vybraných je %(sel)s položek z celkem %(cnt)s."
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"V jednotlivých polích jsou neuložené změny, které budou ztraceny, pokud "
+"operaci provedete."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Byla vybrána operace, ale dosud nedošlo k uložení změn jednotlivých polí. "
+"Uložíte klepnutím na tlačítko OK. Pak bude třeba operaci spustit znovu."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Byla vybrána operace, ale dosud nedošlo k uložení změn jednotlivých polí. "
+"Patrně využijete tlačítko Provést spíše než tlačítko Uložit."
+
+msgid "Now"
+msgstr "Nyní"
+
+msgid "Midnight"
+msgstr "Půlnoc"
+
+msgid "6 a.m."
+msgstr "6h ráno"
+
+msgid "Noon"
+msgstr "Poledne"
+
+msgid "6 p.m."
+msgstr "6h večer"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Poznámka: Váš čas o %s hodinu předstihuje čas na serveru."
+msgstr[1] "Poznámka: Váš čas o %s hodiny předstihuje čas na serveru."
+msgstr[2] "Poznámka: Váš čas o %s hodiny předstihuje čas na serveru."
+msgstr[3] "Poznámka: Váš čas o %s hodin předstihuje čas na serveru."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Poznámka: Váš čas se o %s hodinu zpožďuje za časem na serveru."
+msgstr[1] "Poznámka: Váš čas se o %s hodiny zpožďuje za časem na serveru."
+msgstr[2] "Poznámka: Váš čas se o %s hodiny zpožďuje za časem na serveru."
+msgstr[3] "Poznámka: Váš čas se o %s hodin zpožďuje za časem na serveru."
+
+msgid "Choose a Time"
+msgstr "Vyberte čas"
+
+msgid "Choose a time"
+msgstr "Vyberte čas"
+
+msgid "Cancel"
+msgstr "Storno"
+
+msgid "Today"
+msgstr "Dnes"
+
+msgid "Choose a Date"
+msgstr "Vyberte datum"
+
+msgid "Yesterday"
+msgstr "Včera"
+
+msgid "Tomorrow"
+msgstr "Zítra"
+
+msgid "January"
+msgstr "leden"
+
+msgid "February"
+msgstr "únor"
+
+msgid "March"
+msgstr "březen"
+
+msgid "April"
+msgstr "duben"
+
+msgid "May"
+msgstr "květen"
+
+msgid "June"
+msgstr "červen"
+
+msgid "July"
+msgstr "červenec"
+
+msgid "August"
+msgstr "srpen"
+
+msgid "September"
+msgstr "září"
+
+msgid "October"
+msgstr "říjen"
+
+msgid "November"
+msgstr "listopad"
+
+msgid "December"
+msgstr "prosinec"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Led"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Úno"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Bře"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Dub"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "Kvě"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "Čvn"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "Čvc"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Srp"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Zář"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Říj"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Lis"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Pro"
+
+msgid "Sunday"
+msgstr "Neděle"
+
+msgid "Monday"
+msgstr "Pondělí"
+
+msgid "Tuesday"
+msgstr "Úterý"
+
+msgid "Wednesday"
+msgstr "Středa"
+
+msgid "Thursday"
+msgstr "Čtvrtek"
+
+msgid "Friday"
+msgstr "Pátek"
+
+msgid "Saturday"
+msgstr "Sobota"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "Ned"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "Pon"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "Úte"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "Stř"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "Čtv"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "Pát"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "Sob"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "N"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "P"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "Ú"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "S"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "Č"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "P"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "S"

BIN
static/admin/locale/cy/LC_MESSAGES/django.mo


+ 675 - 0
static/admin/locale/cy/LC_MESSAGES/django.po

@@ -0,0 +1,675 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2014
+# pjrobertson, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-19 16:49+0100\n"
+"PO-Revision-Date: 2017-09-23 18:54+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Welsh (http://www.transifex.com/django/django/language/cy/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cy\n"
+"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
+"11) ? 2 : 3;\n"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Dilëwyd %(count)d %(items)s yn llwyddiannus."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Ni ellir dileu %(name)s"
+
+msgid "Are you sure?"
+msgstr "Ydych yn sicr?"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Dileu y %(verbose_name_plural)s â ddewiswyd"
+
+msgid "Administration"
+msgstr "Gweinyddu"
+
+msgid "All"
+msgstr "Pob un"
+
+msgid "Yes"
+msgstr "Ie"
+
+msgid "No"
+msgstr "Na"
+
+msgid "Unknown"
+msgstr "Anhysybys"
+
+msgid "Any date"
+msgstr "Unrhyw ddyddiad"
+
+msgid "Today"
+msgstr "Heddiw"
+
+msgid "Past 7 days"
+msgstr "7 diwrnod diwethaf"
+
+msgid "This month"
+msgstr "Mis yma"
+
+msgid "This year"
+msgstr "Eleni"
+
+msgid "No date"
+msgstr ""
+
+msgid "Has date"
+msgstr ""
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Teipiwch yr %(username)s a chyfrinair cywir ar gyfer cyfrif staff.  Noder y "
+"gall y ddau faes fod yn sensitif i lythrennau bach a llythrennau bras."
+
+msgid "Action:"
+msgstr "Gweithred:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Ychwanegu %(verbose_name)s arall"
+
+msgid "Remove"
+msgstr "Gwaredu"
+
+msgid "action time"
+msgstr "amser y weithred"
+
+msgid "user"
+msgstr ""
+
+msgid "content type"
+msgstr ""
+
+msgid "object id"
+msgstr "id gwrthrych"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/3/library/functions.html#repr)
+msgid "object repr"
+msgstr "repr gwrthrych"
+
+msgid "action flag"
+msgstr "fflag gweithred"
+
+msgid "change message"
+msgstr "neges y newid"
+
+msgid "log entry"
+msgstr "cofnod"
+
+msgid "log entries"
+msgstr "cofnodion"
+
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr "Ychwanegwyd \"%(object)s\"."
+
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "Newidwyd \"%(object)s\" - %(changes)s"
+
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr "Dilëwyd  \"%(object)s.\""
+
+msgid "LogEntry Object"
+msgstr "Gwrthrych LogEntry"
+
+#, python-brace-format
+msgid "Added {name} \"{object}\"."
+msgstr ""
+
+msgid "Added."
+msgstr ""
+
+msgid "and"
+msgstr "a"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} \"{object}\"."
+msgstr ""
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr ""
+
+#, python-brace-format
+msgid "Deleted {name} \"{object}\"."
+msgstr ""
+
+msgid "No fields changed."
+msgstr "Ni newidwyd unrhwy feysydd."
+
+msgid "None"
+msgstr "Dim"
+
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was added successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was added successfully."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+msgstr ""
+
+#, python-brace-format
+msgid ""
+"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+
+#, python-brace-format
+msgid "The {name} \"{obj}\" was changed successfully."
+msgstr ""
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Rhaid dewis eitemau er mwyn gweithredu arnynt.  Ni ddewiswyd unrhyw eitemau."
+
+msgid "No action selected."
+msgstr "Ni ddewiswyd gweithred."
+
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Dilëwyd %(name)s \"%(obj)s\" yn llwyddiannus."
+
+#, python-format
+msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgstr ""
+
+#, python-format
+msgid "Add %s"
+msgstr "Ychwanegu %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Newid %s"
+
+msgid "Database error"
+msgstr "Gwall cronfa ddata"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "Newidwyd %(count)s %(name)s yn llwyddiannus"
+msgstr[1] "Newidwyd %(count)s %(name)s yn llwyddiannus"
+msgstr[2] "Newidwyd %(count)s %(name)s yn llwyddiannus"
+msgstr[3] "Newidwyd %(count)s %(name)s yn llwyddiannus"
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "Dewiswyd %(total_count)s"
+msgstr[1] "Dewiswyd %(total_count)s"
+msgstr[2] "Dewiswyd %(total_count)s"
+msgstr[3] "Dewiswyd %(total_count)s"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Dewiswyd 0 o %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Hanes newid: %s"
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Byddai dileu %(class_name)s %(instance)s yn golygu dileu'r gwrthrychau "
+"gwarchodedig canlynol sy'n perthyn: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Adran weinyddol safle Django"
+
+msgid "Django administration"
+msgstr "Gweinyddu Django"
+
+msgid "Site administration"
+msgstr "Gweinyddu'r safle"
+
+msgid "Log in"
+msgstr "Mewngofnodi"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "Gweinyddu %(app)s"
+
+msgid "Page not found"
+msgstr "Ni ddarganfyddwyd y dudalen"
+
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Mae'n ddrwg gennym, ond ni ddarganfuwyd y dudalen"
+
+msgid "Home"
+msgstr "Hafan"
+
+msgid "Server error"
+msgstr "Gwall gweinydd"
+
+msgid "Server error (500)"
+msgstr "Gwall gweinydd (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Gwall Gweinydd <em>(500)</em>"
+
+msgid ""
+"There's been an error. It's been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Mae gwall ac gyrrwyd adroddiad ohono i weinyddwyr y wefan drwy ebost a dylai "
+"gael ei drwsio yn fuan.  Diolch am fod yn amyneddgar."
+
+msgid "Run the selected action"
+msgstr "Rhedeg y weithred a ddewiswyd"
+
+msgid "Go"
+msgstr "Ffwrdd â ni"
+
+msgid "Click here to select the objects across all pages"
+msgstr ""
+"Cliciwch fan hyn i ddewis yr holl wrthrychau ar draws yr holl dudalennau"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Dewis y %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Clirio'r dewis"
+
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Yn gyntaf, rhowch enw defnyddiwr a chyfrinair.  Yna byddwch yn gallu golygu "
+"mwy o ddewisiadau."
+
+msgid "Enter a username and password."
+msgstr "Rhowch enw defnyddiwr a chyfrinair."
+
+msgid "Change password"
+msgstr "Newid cyfrinair"
+
+msgid "Please correct the error below."
+msgstr "Cywirwch y gwall isod."
+
+msgid "Please correct the errors below."
+msgstr "Cywirwch y gwallau isod."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Rhowch gyfrinair newydd i'r defnyddiwr <strong>%(username)s</strong>."
+
+msgid "Welcome,"
+msgstr "Croeso,"
+
+msgid "View site"
+msgstr ""
+
+msgid "Documentation"
+msgstr "Dogfennaeth"
+
+msgid "Log out"
+msgstr "Allgofnodi"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Ychwanegu %(name)s"
+
+msgid "History"
+msgstr "Hanes"
+
+msgid "View on site"
+msgstr "Gweld ar y safle"
+
+msgid "Filter"
+msgstr "Hidl"
+
+msgid "Remove from sorting"
+msgstr "Gwaredu o'r didoli"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Blaenoriaeth didoli: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Toglio didoli"
+
+msgid "Delete"
+msgstr "Dileu"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Byddai dileu %(object_name)s '%(escaped_object)s' yn golygu dileu'r "
+"gwrthrychau sy'n perthyn, ond nid oes ganddoch ganiatâd i ddileu y mathau "
+"canlynol o wrthrychau:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Byddai dileu %(object_name)s '%(escaped_object)s' yn golygu dileu'r "
+"gwrthrychau gwarchodedig canlynol sy'n perthyn:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+
+msgid "Objects"
+msgstr ""
+
+msgid "Yes, I'm sure"
+msgstr "Ydw, rwy'n sicr"
+
+msgid "No, take me back"
+msgstr ""
+
+msgid "Delete multiple objects"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Byddai dileu %(objects_name)s yn golygu dileu'r gwrthrychau gwarchodedig "
+"canlynol sy'n perthyn:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Ydych yn sicr eich bod am ddileu'r %(objects_name)s a ddewiswyd?  Dilëir yr "
+"holl wrthrychau canlynol a'u heitemau perthnasol:"
+
+msgid "Change"
+msgstr "Newid"
+
+msgid "Delete?"
+msgstr "Dileu?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "Wrth %(filter_title)s"
+
+msgid "Summary"
+msgstr ""
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Modelau yn y rhaglen %(name)s "
+
+msgid "Add"
+msgstr "Ychwanegu"
+
+msgid "You don't have permission to edit anything."
+msgstr "Does gennych ddim hawl i olygu unrhywbeth."
+
+msgid "Recent actions"
+msgstr ""
+
+msgid "My actions"
+msgstr ""
+
+msgid "None available"
+msgstr "Dim ar gael"
+
+msgid "Unknown content"
+msgstr "Cynnwys anhysbys"
+
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Mae rhywbeth o'i le ar osodiad y gronfa ddata.  Sicrhewch fod y tablau "
+"cronfa ddata priodol wedi eu creu, a sicrhewch fod y gronfa ddata yn "
+"ddarllenadwy gan y defnyddiwr priodol."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+msgid "Forgotten your password or username?"
+msgstr "Anghofioch eich cyfrinair neu enw defnyddiwr?"
+
+msgid "Date/time"
+msgstr "Dyddiad/amser"
+
+msgid "User"
+msgstr "Defnyddiwr"
+
+msgid "Action"
+msgstr "Gweithred"
+
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Does dim hanes newid gan y gwrthrych yma. Mae'n debyg nad ei ychwanegwyd "
+"drwy'r safle gweinydd yma."
+
+msgid "Show all"
+msgstr "Dangos pob canlyniad"
+
+msgid "Save"
+msgstr "Cadw"
+
+msgid "Popup closing..."
+msgstr ""
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr ""
+
+msgid "Search"
+msgstr "Chwilio"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s canlyniad"
+msgstr[1] "%(counter)s canlyniad"
+msgstr[2] "%(counter)s canlyniad"
+msgstr[3] "%(counter)s canlyniad"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "Cyfanswm o %(full_result_count)s"
+
+msgid "Save as new"
+msgstr "Cadw fel newydd"
+
+msgid "Save and add another"
+msgstr "Cadw ac ychwanegu un arall"
+
+msgid "Save and continue editing"
+msgstr "Cadw a pharhau i olygu"
+
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Diolch am dreulio amser o ansawdd gyda'r safle we yma heddiw."
+
+msgid "Log in again"
+msgstr "Mewngofnodi eto"
+
+msgid "Password change"
+msgstr "Newid cyfrinair"
+
+msgid "Your password was changed."
+msgstr "Newidwyd eich cyfrinair."
+
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Rhowch eich hen gyfrinair, er mwyn diogelwch, ac yna rhowch eich cyfrinair "
+"newydd ddwywaith er mwyn gwirio y'i teipiwyd yn gywir."
+
+msgid "Change my password"
+msgstr "Newid fy nghyfrinair"
+
+msgid "Password reset"
+msgstr "Ailosod cyfrinair"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Mae'ch cyfrinair wedi ei osod. Gallwch fewngofnodi nawr."
+
+msgid "Password reset confirmation"
+msgstr "Cadarnhad ailosod cyfrinair"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Rhowch eich cyfrinair newydd ddwywaith er mwyn gwirio y'i teipiwyd yn gywir."
+
+msgid "New password:"
+msgstr "Cyfrinair newydd:"
+
+msgid "Confirm password:"
+msgstr "Cadarnhewch y cyfrinair:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Roedd y ddolen i ailosod y cyfrinair yn annilys, o bosib oherwydd ei fod "
+"wedi ei ddefnyddio'n barod.  Gofynnwch i ailosod y cyfrinair eto."
+
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Os na dderbyniwch ebost, sicrhewych y rhoddwyd y cyfeiriad sydd wedi ei "
+"gofrestru gyda ni, ac edrychwch yn eich ffolder sbam."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Derbyniwch yr ebost hwn oherwydd i chi ofyn i ailosod y cyfrinair i'ch "
+"cyfrif yn %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Ewch i'r dudalen olynol a dewsiwch gyfrinair newydd:"
+
+msgid "Your username, in case you've forgotten:"
+msgstr "Eich enw defnyddiwr, rhag ofn eich bod wedi anghofio:"
+
+msgid "Thanks for using our site!"
+msgstr "Diolch am ddefnyddio ein safle!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Tîm %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we'll email "
+"instructions for setting a new one."
+msgstr ""
+"Anghofioch eich cyfrinair? Rhowch eich cyfeiriad ebost isod ac fe ebostiwn "
+"gyfarwyddiadau ar osod un newydd."
+
+msgid "Email address:"
+msgstr "Cyfeiriad ebost:"
+
+msgid "Reset my password"
+msgstr "Ailosod fy nghyfrinair"
+
+msgid "All dates"
+msgstr "Holl ddyddiadau"
+
+#, python-format
+msgid "Select %s"
+msgstr "Dewis %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Dewis %s i newid"
+
+msgid "Date:"
+msgstr "Dyddiad:"
+
+msgid "Time:"
+msgstr "Amser:"
+
+msgid "Lookup"
+msgstr "Archwilio"
+
+msgid "Currently:"
+msgstr "Cyfredol:"
+
+msgid "Change:"
+msgstr "Newid:"

BIN
static/admin/locale/cy/LC_MESSAGES/djangojs.mo


+ 222 - 0
static/admin/locale/cy/LC_MESSAGES/djangojs.po

@@ -0,0 +1,222 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-05-17 23:12+0200\n"
+"PO-Revision-Date: 2017-09-23 18:54+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: Welsh (http://www.transifex.com/django/django/language/cy/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cy\n"
+"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
+"11) ? 2 : 3;\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "%s sydd ar gael"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Dyma restr o'r %s sydd ar gael.  Gellir dewis rhai drwyeu dewis yn y blwch "
+"isod ac yna clicio'r saeth \"Dewis\" rhwng y ddau flwch."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Teipiwch yn y blwch i hidlo'r rhestr o %s sydd ar gael."
+
+msgid "Filter"
+msgstr "Hidl"
+
+msgid "Choose all"
+msgstr "Dewis y cyfan"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Cliciwch i ddewis pob %s yr un pryd."
+
+msgid "Choose"
+msgstr "Dewis"
+
+msgid "Remove"
+msgstr "Gwaredu"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Y %s a ddewiswyd"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Dyma restr o'r %s a ddewiswyd. Gellir gwaredu rhai drwy eu dewis yn y blwch "
+"isod ac yna clicio'r saeth \"Gwaredu\" rhwng y ddau flwch."
+
+msgid "Remove all"
+msgstr "Gwaredu'r cyfan"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Cliciwch i waredu pob %s sydd wedi ei ddewis yr un pryd."
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "Dewiswyd %(sel)s o %(cnt)s"
+msgstr[1] "Dewiswyd %(sel)s o %(cnt)s"
+msgstr[2] "Dewiswyd %(sel)s o %(cnt)s"
+msgstr[3] "Dewiswyd %(sel)s o %(cnt)s"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Mae ganddoch newidiadau heb eu cadw mewn meysydd golygadwy.  Os rhedwch y "
+"weithred fe gollwch y newidiadau."
+
+msgid ""
+"You have selected an action, but you haven't saved your changes to "
+"individual fields yet. Please click OK to save. You'll need to re-run the "
+"action."
+msgstr ""
+"Rydych wedi dewis gweithred ond nid ydych wedi newid eich newidiadau i rai "
+"meysydd eto.  Cliciwch 'Iawn' i gadw.  Bydd rhaid i chi ail-redeg y weithred."
+
+msgid ""
+"You have selected an action, and you haven't made any changes on individual "
+"fields. You're probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Rydych wedi dewis gweithred ac nid ydych wedi newid unrhyw faes.  Rydych "
+"siwr o fod yn edrych am y botwm 'Ewch' yn lle'r botwm 'Cadw'."
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Noder: Rydych %s awr o flaen amser y gweinydd."
+msgstr[1] "Noder: Rydych %s awr o flaen amser y gweinydd."
+msgstr[2] "Noder: Rydych %s awr o flaen amser y gweinydd."
+msgstr[3] "Noder: Rydych %s awr o flaen amser y gweinydd."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Noder: Rydych %s awr tu ôl amser y gweinydd."
+msgstr[1] "Noder: Rydych %s awr tu ôl amser y gweinydd."
+msgstr[2] "Noder: Rydych %s awr tu ôl amser y gweinydd."
+msgstr[3] "Noder: Rydych %s awr tu ôl amser y gweinydd."
+
+msgid "Now"
+msgstr "Nawr"
+
+msgid "Choose a Time"
+msgstr ""
+
+msgid "Choose a time"
+msgstr "Dewiswch amser"
+
+msgid "Midnight"
+msgstr "Canol nos"
+
+msgid "6 a.m."
+msgstr "6 y.b."
+
+msgid "Noon"
+msgstr "Canol dydd"
+
+msgid "6 p.m."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Diddymu"
+
+msgid "Today"
+msgstr "Heddiw"
+
+msgid "Choose a Date"
+msgstr ""
+
+msgid "Yesterday"
+msgstr "Ddoe"
+
+msgid "Tomorrow"
+msgstr "Fory"
+
+msgid "January"
+msgstr ""
+
+msgid "February"
+msgstr ""
+
+msgid "March"
+msgstr ""
+
+msgid "April"
+msgstr ""
+
+msgid "May"
+msgstr ""
+
+msgid "June"
+msgstr ""
+
+msgid "July"
+msgstr ""
+
+msgid "August"
+msgstr ""
+
+msgid "September"
+msgstr ""
+
+msgid "October"
+msgstr ""
+
+msgid "November"
+msgstr ""
+
+msgid "December"
+msgstr ""
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr ""
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr ""
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr ""
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr ""
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr ""
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr ""
+
+msgid "Show"
+msgstr "Dangos"
+
+msgid "Hide"
+msgstr "Cuddio"

BIN
static/admin/locale/da/LC_MESSAGES/django.mo


+ 788 - 0
static/admin/locale/da/LC_MESSAGES/django.po

@@ -0,0 +1,788 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Christian Joergensen <christian@gmta.info>, 2012
+# Dimitris Glezos <glezos@transifex.com>, 2012
+# Erik Ramsgaard Wognsen <r4mses@gmail.com>, 2020-2024
+# Erik Ramsgaard Wognsen <r4mses@gmail.com>, 2013,2015-2020
+# Finn Gruwier Larsen, 2011
+# Jannis Leidel <jannis@leidel.info>, 2011
+# valberg <valberg@orn.li>, 2014-2015
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-08-07 07:05+0000\n"
+"Last-Translator: Erik Ramsgaard Wognsen <r4mses@gmail.com>, 2020-2024\n"
+"Language-Team: Danish (http://app.transifex.com/django/django/language/da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Slet valgte %(verbose_name_plural)s"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "%(count)d %(items)s blev slettet."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Kan ikke slette %(name)s "
+
+msgid "Are you sure?"
+msgstr "Er du sikker?"
+
+msgid "Administration"
+msgstr "Administration"
+
+msgid "All"
+msgstr "Alle"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nej"
+
+msgid "Unknown"
+msgstr "Ukendt"
+
+msgid "Any date"
+msgstr "Når som helst"
+
+msgid "Today"
+msgstr "I dag"
+
+msgid "Past 7 days"
+msgstr "De sidste 7 dage"
+
+msgid "This month"
+msgstr "Denne måned"
+
+msgid "This year"
+msgstr "Dette år"
+
+msgid "No date"
+msgstr "Ingen dato"
+
+msgid "Has date"
+msgstr "Har dato"
+
+msgid "Empty"
+msgstr "Tom"
+
+msgid "Not empty"
+msgstr "Ikke tom"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Indtast venligst det korrekte %(username)s og adgangskode for en "
+"personalekonto. Bemærk at begge felter kan være versalfølsomme."
+
+msgid "Action:"
+msgstr "Handling"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Tilføj endnu en %(verbose_name)s"
+
+msgid "Remove"
+msgstr "Fjern"
+
+msgid "Addition"
+msgstr "Tilføjelse"
+
+msgid "Change"
+msgstr "Ret"
+
+msgid "Deletion"
+msgstr "Sletning"
+
+msgid "action time"
+msgstr "handlingstid"
+
+msgid "user"
+msgstr "bruger"
+
+msgid "content type"
+msgstr "indholdstype"
+
+msgid "object id"
+msgstr "objekt-ID"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "objekt repr"
+
+msgid "action flag"
+msgstr "handlingsflag"
+
+msgid "change message"
+msgstr "ændringsmeddelelse"
+
+msgid "log entry"
+msgstr "logmeddelelse"
+
+msgid "log entries"
+msgstr "logmeddelelser"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Tilføjede “%(object)s”."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Ændrede “%(object)s” — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Slettede “%(object)s”."
+
+msgid "LogEntry Object"
+msgstr "LogEntry-objekt"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Tilføjede {name} “{object}”."
+
+msgid "Added."
+msgstr "Tilføjet."
+
+msgid "and"
+msgstr "og"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Ændrede {fields} for {name} “{object}”."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Ændrede {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Slettede {name} “{object}”."
+
+msgid "No fields changed."
+msgstr "Ingen felter ændret."
+
+msgid "None"
+msgstr "Ingen"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr "Hold “Ctrl”, eller “Æbletasten” på Mac, nede for at vælge mere end én."
+
+msgid "Select this object for an action - {}"
+msgstr "Vælg dette objekt for en handling - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "{name} “{obj}” blev tilføjet."
+
+msgid "You may edit it again below."
+msgstr "Du kan redigere den/det igen herunder."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} “{obj}” blev tilføjet. Du kan tilføje endnu en/et {name} herunder."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr "{name} “{obj}” blev ændret. Du kan redigere den/det igen herunder."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"{name} “{obj}” blev ændret. Du kan tilføje endnu en/et {name} herunder."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name} “{obj}” blev ændret."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Der skal være valgt nogle emner for at man kan udføre handlinger på dem. "
+"Ingen emner er blev ændret."
+
+msgid "No action selected."
+msgstr "Ingen handling valgt."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s “%(obj)s” blev slettet."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr ""
+"%(name)s med ID “%(key)s” findes ikke. Måske er objektet blevet slettet?"
+
+#, python-format
+msgid "Add %s"
+msgstr "Tilføj %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "Ret %s"
+
+#, python-format
+msgid "View %s"
+msgstr "Vis %s"
+
+msgid "Database error"
+msgstr "Databasefejl"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s blev ændret."
+msgstr[1] "%(count)s %(name)s blev ændret."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s valgt"
+msgstr[1] "Alle %(total_count)s valgt"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 af %(cnt)s valgt"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Ændringshistorik: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Sletning af %(class_name)s %(instance)s vil kræve sletning af følgende "
+"beskyttede relaterede objekter: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Django website-administration"
+
+msgid "Django administration"
+msgstr "Django administration"
+
+msgid "Site administration"
+msgstr "Website-administration"
+
+msgid "Log in"
+msgstr "Log ind"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "%(app)s administration"
+
+msgid "Page not found"
+msgstr "Siden blev ikke fundet"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Vi beklager, men den ønskede side kunne ikke findes"
+
+msgid "Home"
+msgstr "Hjem"
+
+msgid "Server error"
+msgstr "Serverfejl"
+
+msgid "Server error (500)"
+msgstr "Serverfejl (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Serverfejl <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Der opstod en fejl. Fejlen er rapporteret til website-administratoren via e-"
+"mail, og vil blive rettet hurtigst muligt. Tak for din tålmodighed."
+
+msgid "Run the selected action"
+msgstr "Udfør den valgte handling"
+
+msgid "Go"
+msgstr "Udfør"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Klik her for at vælge objekter på tværs af alle sider"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Vælg alle %(total_count)s  %(module_name)s "
+
+msgid "Clear selection"
+msgstr "Ryd valg"
+
+msgid "Breadcrumbs"
+msgstr "Sti"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Modeller i applikationen %(name)s"
+
+msgid "Add"
+msgstr "Tilføj"
+
+msgid "View"
+msgstr "Vis"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Du har ikke rettigheder til at se eller redigere noget."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Indtast først et brugernavn og en adgangskode. Derefter får du yderligere "
+"redigeringsmuligheder."
+
+msgid "Enter a username and password."
+msgstr "Indtast et brugernavn og en adgangskode."
+
+msgid "Change password"
+msgstr "Skift adgangskode"
+
+msgid "Set password"
+msgstr "Sæt adgangskode"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Ret venligst fejlen herunder."
+msgstr[1] "Ret venligst fejlene herunder."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Indtast en ny adgangskode for brugeren <strong>%(username)s</strong>."
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"Denne handling vil <strong>aktivere</strong> adgangskodebaseret "
+"autentificering for denne bruger."
+
+msgid "Disable password-based authentication"
+msgstr "Deaktivér adgangskodebaseret autentificering."
+
+msgid "Enable password-based authentication"
+msgstr "Aktivér adgangskodebaseret autentificering."
+
+msgid "Skip to main content"
+msgstr "Gå til hovedindhold"
+
+msgid "Welcome,"
+msgstr "Velkommen,"
+
+msgid "View site"
+msgstr "Se side"
+
+msgid "Documentation"
+msgstr "Dokumentation"
+
+msgid "Log out"
+msgstr "Log ud"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "Tilføj %(name)s"
+
+msgid "History"
+msgstr "Historik"
+
+msgid "View on site"
+msgstr "Se på website"
+
+msgid "Filter"
+msgstr "Filtrer"
+
+msgid "Hide counts"
+msgstr "Skjul antal"
+
+msgid "Show counts"
+msgstr "Vis antal"
+
+msgid "Clear all filters"
+msgstr "Nulstil alle filtre"
+
+msgid "Remove from sorting"
+msgstr "Fjern fra sortering"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Sorteringsprioritet: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Skift sortering"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Skift tema (nuværende tema: auto)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Skift tema (nuværende tema: lyst)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Skift tema (nuværende tema: mørkt)"
+
+msgid "Delete"
+msgstr "Slet"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Hvis du sletter %(object_name)s '%(escaped_object)s', vil du også slette  "
+"relaterede objekter, men din konto har ikke rettigheder til at slette "
+"følgende objekttyper:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Sletning af %(object_name)s  ' %(escaped_object)s ' vil kræve sletning af "
+"følgende beskyttede relaterede objekter:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Er du sikker på du vil slette %(object_name)s \"%(escaped_object)s\"? Alle "
+"de følgende relaterede objekter vil blive slettet:"
+
+msgid "Objects"
+msgstr "Objekter"
+
+msgid "Yes, I’m sure"
+msgstr "Ja, jeg er sikker"
+
+msgid "No, take me back"
+msgstr "Nej, tag mig tilbage"
+
+msgid "Delete multiple objects"
+msgstr "Slet flere objekter"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Sletning af de valgte %(objects_name)s  ville resultere i sletning af "
+"relaterede objekter, men din konto har ikke tilladelse til at slette "
+"følgende typer af objekter:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Sletning af de valgte %(objects_name)s  vil kræve sletning af følgende "
+"beskyttede relaterede objekter:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Er du sikker på du vil slette de valgte %(objects_name)s? Alle de følgende "
+"objekter og deres relaterede emner vil blive slettet:"
+
+msgid "Delete?"
+msgstr "Slet?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Efter %(filter_title)s "
+
+msgid "Summary"
+msgstr "Sammendrag"
+
+msgid "Recent actions"
+msgstr "Seneste handlinger"
+
+msgid "My actions"
+msgstr "Mine handlinger"
+
+msgid "None available"
+msgstr "Ingen tilgængelige"
+
+msgid "Added:"
+msgstr "Tilføjede:"
+
+msgid "Changed:"
+msgstr "Ændrede:"
+
+msgid "Deleted:"
+msgstr "Slettede:"
+
+msgid "Unknown content"
+msgstr "Ukendt indhold"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Der er noget galt med databaseinstallationen. Kontroller om "
+"databasetabellerne er blevet oprettet og at databasen er læsbar for den "
+"pågældende bruger."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Du er logget ind som %(username)s, men du har ikke tilladelse til at tilgå "
+"denne site. Vil du logge ind med en anden brugerkonto?"
+
+msgid "Forgotten your password or username?"
+msgstr "Har du glemt din adgangskode eller dit brugernavn?"
+
+msgid "Toggle navigation"
+msgstr "Vis/skjul navigation"
+
+msgid "Sidebar"
+msgstr "Sidebjælke"
+
+msgid "Start typing to filter…"
+msgstr "Skriv for at filtrere…"
+
+msgid "Filter navigation items"
+msgstr "Filtrer navigationsemner"
+
+msgid "Date/time"
+msgstr "Dato/tid"
+
+msgid "User"
+msgstr "Bruger"
+
+msgid "Action"
+msgstr "Funktion"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "post"
+msgstr[1] "poster"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Dette objekt har ingen ændringshistorik. Det blev formentlig ikke tilføjet "
+"via dette administrations-site"
+
+msgid "Show all"
+msgstr "Vis alle"
+
+msgid "Save"
+msgstr "Gem"
+
+msgid "Popup closing…"
+msgstr "Popup lukker…"
+
+msgid "Search"
+msgstr "Søg"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s resultat"
+msgstr[1] "%(counter)s resultater"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s i alt"
+
+msgid "Save as new"
+msgstr "Gem som ny"
+
+msgid "Save and add another"
+msgstr "Gem og tilføj endnu en"
+
+msgid "Save and continue editing"
+msgstr "Gem og fortsæt med at redigere"
+
+msgid "Save and view"
+msgstr "Gem og vis"
+
+msgid "Close"
+msgstr "Luk"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Redigér valgte %(model)s"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Tilføj endnu en %(model)s"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Slet valgte %(model)s"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Vis valgte %(model)s"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr "Tak for den kvalitetstid du brugte på websitet i dag."
+
+msgid "Log in again"
+msgstr "Log ind igen"
+
+msgid "Password change"
+msgstr "Skift adgangskode"
+
+msgid "Your password was changed."
+msgstr "Din adgangskode blev ændret."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Indtast venligst din gamle adgangskode for en sikkerheds skyld og indtast så "
+"din nye adgangskode to gange, så vi kan være sikre på, at den er indtastet "
+"korrekt."
+
+msgid "Change my password"
+msgstr "Skift min adgangskode"
+
+msgid "Password reset"
+msgstr "Nulstil adgangskode"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Din adgangskode er blevet sat. Du kan logge ind med den nu."
+
+msgid "Password reset confirmation"
+msgstr "Bekræftelse for nulstilling af adgangskode"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Indtast venligst din nye adgangskode to gange, så vi kan være sikre på, at "
+"den er indtastet korrekt."
+
+msgid "New password:"
+msgstr "Ny adgangskode:"
+
+msgid "Confirm password:"
+msgstr "Bekræft ny adgangskode:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Linket for nulstilling af adgangskoden er ugyldigt, måske fordi det allerede "
+"har været brugt. Anmod venligst påny om nulstilling af adgangskoden."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Vi har sendt dig en e-mail med instruktioner for at indstille din "
+"adgangskode, hvis en konto med den angivne e-mail-adresse findes. Du burde "
+"modtage den snarest."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Hvis du ikke modtager en e-mail, så tjek venligst, at du har indtastet den e-"
+"mail-adresse, du registrerede dig med, og tjek din spam-mappe."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Du modtager denne e-mail, fordi du har anmodet om en nulstilling af "
+"adgangskoden til din brugerkonto ved %(site_name)s ."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Gå venligst til denne side og vælg en ny adgangskode:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Hvis du skulle have glemt dit brugernavn er det:"
+
+msgid "Thanks for using our site!"
+msgstr "Tak fordi du brugte vores website!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Med venlig hilsen %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Har du glemt din adgangskode? Skriv din e-mail-adresse herunder, så sender "
+"vi dig instruktioner i at vælge en ny adgangskode."
+
+msgid "Email address:"
+msgstr "E-mail-adresse:"
+
+msgid "Reset my password"
+msgstr "Nulstil min adgangskode"
+
+msgid "Select all objects on this page for an action"
+msgstr "Vælg alle objekter på denne side for en handling"
+
+msgid "All dates"
+msgstr "Alle datoer"
+
+#, python-format
+msgid "Select %s"
+msgstr "Vælg %s"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Vælg %s, der skal ændres"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Vælg %s, der skal vises"
+
+msgid "Date:"
+msgstr "Dato:"
+
+msgid "Time:"
+msgstr "Tid:"
+
+msgid "Lookup"
+msgstr "Slå op"
+
+msgid "Currently:"
+msgstr "Nuværende:"
+
+msgid "Change:"
+msgstr "Ændring:"

BIN
static/admin/locale/da/LC_MESSAGES/djangojs.mo


+ 329 - 0
static/admin/locale/da/LC_MESSAGES/djangojs.po

@@ -0,0 +1,329 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Christian Joergensen <christian@gmta.info>, 2012
+# Erik Ramsgaard Wognsen <r4mses@gmail.com>, 2021-2023
+# Erik Ramsgaard Wognsen <r4mses@gmail.com>, 2012,2015-2016,2020
+# Finn Gruwier Larsen, 2011
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Mathias Rav <m@git.strova.dk>, 2017
+# valberg <valberg@orn.li>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"Last-Translator: Erik Ramsgaard Wognsen <r4mses@gmail.com>, 2021-2023\n"
+"Language-Team: Danish (http://app.transifex.com/django/django/language/da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Tilgængelige %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Dette er listen over tilgængelige %s. Du kan vælge dem enkeltvis ved at "
+"markere dem i kassen nedenfor og derefter klikke på \"Vælg\"-pilen mellem de "
+"to kasser."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr "Skriv i dette felt for at filtrere listen af tilgængelige %s."
+
+msgid "Filter"
+msgstr "Filtrér"
+
+msgid "Choose all"
+msgstr "Vælg alle"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Klik for at vælge alle %s med det samme."
+
+msgid "Choose"
+msgstr "Vælg"
+
+msgid "Remove"
+msgstr "Fjern"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Valgte %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Dette er listen over valgte %s. Du kan fjerne dem enkeltvis ved at markere "
+"dem i kassen nedenfor og derefter klikke på \"Fjern\"-pilen mellem de to "
+"kasser."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr "Skriv i dette felt for at filtrere listen af valgte %s."
+
+msgid "Remove all"
+msgstr "Fjern alle"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Klik for at fjerne alle valgte %s med det samme."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s valgt mulighed ikke vist"
+msgstr[1] "%s valgte muligheder ikke vist"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s af %(cnt)s valgt"
+msgstr[1] "%(sel)s af %(cnt)s valgt"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Du har ugemte ændringer af et eller flere redigerbare felter. Hvis du "
+"udfører en handling fra drop-down-menuen, vil du miste disse ændringer."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Du har valgt en handling, men du har ikke gemt dine ændringer til et eller "
+"flere felter. Klik venligst OK for at gemme og vælg dernæst handlingen igen."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Du har valgt en handling, og du har ikke udført nogen ændringer på felter. "
+"Du søger formentlig Udfør-knappen i stedet for Gem-knappen."
+
+msgid "Now"
+msgstr "Nu"
+
+msgid "Midnight"
+msgstr "Midnat"
+
+msgid "6 a.m."
+msgstr "Klokken 6"
+
+msgid "Noon"
+msgstr "Middag"
+
+msgid "6 p.m."
+msgstr "Klokken 18"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Obs: Du er %s time forud i forhold til servertiden."
+msgstr[1] "Obs: Du er %s timer forud i forhold til servertiden."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Obs: Du er %s time bagud i forhold til servertiden."
+msgstr[1] "Obs: Du er %s timer bagud i forhold til servertiden."
+
+msgid "Choose a Time"
+msgstr "Vælg et Tidspunkt"
+
+msgid "Choose a time"
+msgstr "Vælg et tidspunkt"
+
+msgid "Cancel"
+msgstr "Annuller"
+
+msgid "Today"
+msgstr "I dag"
+
+msgid "Choose a Date"
+msgstr "Vælg en Dato"
+
+msgid "Yesterday"
+msgstr "I går"
+
+msgid "Tomorrow"
+msgstr "I morgen"
+
+msgid "January"
+msgstr "Januar"
+
+msgid "February"
+msgstr "Februar"
+
+msgid "March"
+msgstr "Marts"
+
+msgid "April"
+msgstr "April"
+
+msgid "May"
+msgstr "Maj"
+
+msgid "June"
+msgstr "Juni"
+
+msgid "July"
+msgstr "Juli"
+
+msgid "August"
+msgstr "August"
+
+msgid "September"
+msgstr "September"
+
+msgid "October"
+msgstr "Oktober"
+
+msgid "November"
+msgstr "November"
+
+msgid "December"
+msgstr "December"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "jan"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "feb"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "mar"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "apr"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "maj"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "jun"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "jul"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "aug"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "sep"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "okt"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "nov"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "dec"
+
+msgid "Sunday"
+msgstr "søndag"
+
+msgid "Monday"
+msgstr "mandag"
+
+msgid "Tuesday"
+msgstr "tirsdag"
+
+msgid "Wednesday"
+msgstr "onsdag"
+
+msgid "Thursday"
+msgstr "torsdag"
+
+msgid "Friday"
+msgstr "fredag"
+
+msgid "Saturday"
+msgstr "lørdag"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "søn"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "man"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "tir"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "ons"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "tor"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "fre"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "lør"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "S"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "M"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "T"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "O"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "T"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "F"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "L"
+
+msgid "Show"
+msgstr "Vis"
+
+msgid "Hide"
+msgstr "Skjul"

BIN
static/admin/locale/de/LC_MESSAGES/django.mo


+ 791 - 0
static/admin/locale/de/LC_MESSAGES/django.po

@@ -0,0 +1,791 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# André Hagenbruch, 2012
+# Florian Apolloner <florian@apolloner.eu>, 2011
+# Dimitris Glezos <glezos@transifex.com>, 2012
+# Florian Apolloner <florian@apolloner.eu>, 2020-2023
+# jnns, 2013
+# Jannis Leidel <jannis@leidel.info>, 2013-2018,2020
+# jnns, 2016
+# Markus Holtermann <info@markusholtermann.eu>, 2020,2023
+# Markus Holtermann <info@markusholtermann.eu>, 2013,2015
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 11:41-0300\n"
+"PO-Revision-Date: 2023-12-04 07:05+0000\n"
+"Last-Translator: Markus Holtermann <info@markusholtermann.eu>, 2020,2023\n"
+"Language-Team: German (http://app.transifex.com/django/django/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Ausgewählte %(verbose_name_plural)s löschen"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Erfolgreich %(count)d %(items)s gelöscht."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Kann %(name)s nicht löschen"
+
+msgid "Are you sure?"
+msgstr "Sind Sie sicher?"
+
+msgid "Administration"
+msgstr "Administration"
+
+msgid "All"
+msgstr "Alle"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nein"
+
+msgid "Unknown"
+msgstr "Unbekannt"
+
+msgid "Any date"
+msgstr "Alle Daten"
+
+msgid "Today"
+msgstr "Heute"
+
+msgid "Past 7 days"
+msgstr "Letzte 7 Tage"
+
+msgid "This month"
+msgstr "Diesen Monat"
+
+msgid "This year"
+msgstr "Dieses Jahr"
+
+msgid "No date"
+msgstr "Kein Datum"
+
+msgid "Has date"
+msgstr "Besitzt Datum"
+
+msgid "Empty"
+msgstr "Leer"
+
+msgid "Not empty"
+msgstr "Nicht leer"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Bitte %(username)s und Passwort für einen Staff-Account eingeben. Beide "
+"Felder berücksichtigen die Groß-/Kleinschreibung."
+
+msgid "Action:"
+msgstr "Aktion:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "%(verbose_name)s hinzufügen"
+
+msgid "Remove"
+msgstr "Entfernen"
+
+msgid "Addition"
+msgstr "Hinzugefügt"
+
+msgid "Change"
+msgstr "Ändern"
+
+msgid "Deletion"
+msgstr "Gelöscht"
+
+msgid "action time"
+msgstr "Zeitpunkt der Aktion"
+
+msgid "user"
+msgstr "Benutzer"
+
+msgid "content type"
+msgstr "Inhaltstyp"
+
+msgid "object id"
+msgstr "Objekt-ID"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "Objekt Darst."
+
+msgid "action flag"
+msgstr "Aktionskennzeichen"
+
+msgid "change message"
+msgstr "Änderungsmeldung"
+
+msgid "log entry"
+msgstr "Logeintrag"
+
+msgid "log entries"
+msgstr "Logeinträge"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "„%(object)s“ hinzufügt."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "„%(object)s“ geändert – %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "„%(object)s“ gelöscht."
+
+msgid "LogEntry Object"
+msgstr "LogEntry Objekt"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "{name} „{object}“ hinzugefügt."
+
+msgid "Added."
+msgstr "Hinzugefügt."
+
+msgid "and"
+msgstr "und"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "{fields} für {name} „{object}“ geändert."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "{fields} geändert."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "{name} „{object}“ gelöscht."
+
+msgid "No fields changed."
+msgstr "Keine Felder geändert."
+
+msgid "None"
+msgstr "-"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Halten Sie die Strg-Taste (⌘ für Mac) während des Klickens gedrückt, um "
+"mehrere Einträge auszuwählen."
+
+msgid "Select this object for an action - {}"
+msgstr "Dieses Objekt für eine Aktion auswählen - {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "{name} „{obj}“ wurde erfolgreich hinzugefügt."
+
+msgid "You may edit it again below."
+msgstr "Es kann unten erneut geändert werden."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} „{obj}“ wurde erfolgreich hinzugefügt und kann nun unten um ein "
+"Weiteres ergänzt werden."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"{name} „{obj}“ wurde erfolgreich geändert und kann unten erneut geändert "
+"werden."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr ""
+"{name} „{obj}“ wurde erfolgreich hinzugefügt und kann unten geändert werden."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"{name} „{obj}“ wurde erfolgreich geändert und kann nun unten erneut ergänzt "
+"werden."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name} „{obj}“ wurde erfolgreich geändert."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Es müssen Objekte aus der Liste ausgewählt werden, um Aktionen "
+"durchzuführen. Es wurden keine Objekte geändert."
+
+msgid "No action selected."
+msgstr "Keine Aktion ausgewählt."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s „%(obj)s“ wurde erfolgreich gelöscht."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s mit ID „%(key)s“ existiert nicht. Eventuell gelöscht?"
+
+#, python-format
+msgid "Add %s"
+msgstr "%s hinzufügen"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s ändern"
+
+#, python-format
+msgid "View %s"
+msgstr "%s ansehen"
+
+msgid "Database error"
+msgstr "Datenbankfehler"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s wurde erfolgreich geändert."
+msgstr[1] "%(count)s %(name)s wurden erfolgreich geändert."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s ausgewählt"
+msgstr[1] "Alle %(total_count)s ausgewählt"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 von %(cnt)s ausgewählt"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Änderungsgeschichte: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Das Löschen des %(class_name)s-Objekts „%(instance)s“ würde ein Löschen der "
+"folgenden geschützten verwandten Objekte erfordern: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Django-Systemverwaltung"
+
+msgid "Django administration"
+msgstr "Django-Verwaltung"
+
+msgid "Site administration"
+msgstr "Website-Verwaltung"
+
+msgid "Log in"
+msgstr "Anmelden"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "%(app)s-Administration"
+
+msgid "Page not found"
+msgstr "Seite nicht gefunden"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr ""
+"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
+
+msgid "Home"
+msgstr "Start"
+
+msgid "Server error"
+msgstr "Serverfehler"
+
+msgid "Server error (500)"
+msgstr "Serverfehler (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Serverfehler <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Ein Fehler ist aufgetreten und wurde an die Administratoren per E-Mail "
+"gemeldet. Danke für die Geduld, der Fehler sollte in Kürze behoben sein."
+
+msgid "Run the selected action"
+msgstr "Ausgewählte Aktion ausführen"
+
+msgid "Go"
+msgstr "Ausführen"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Hier klicken, um die Objekte aller Seiten auszuwählen"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Alle %(total_count)s %(module_name)s auswählen"
+
+msgid "Clear selection"
+msgstr "Auswahl widerrufen"
+
+msgid "Breadcrumbs"
+msgstr "„Brotkrümel“"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Modelle der %(name)s-Anwendung"
+
+msgid "Add"
+msgstr "Hinzufügen"
+
+msgid "View"
+msgstr "Ansehen"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr ""
+"Das Benutzerkonto besitzt nicht die nötigen Rechte, um etwas anzusehen oder "
+"zu ändern."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Bitte zuerst einen Benutzernamen und ein Passwort eingeben. Danach können "
+"weitere Optionen für den Benutzer geändert werden."
+
+msgid "Enter a username and password."
+msgstr "Bitte einen Benutzernamen und ein Passwort eingeben."
+
+msgid "Change password"
+msgstr "Passwort ändern"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Bitte den unten aufgeführten Fehler korrigieren."
+msgstr[1] "Bitte die unten aufgeführten Fehler korrigieren."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+"Bitte geben Sie ein neues Passwort für den Benutzer <strong>%(username)s</"
+"strong> ein."
+
+msgid "Skip to main content"
+msgstr "Zum Hauptinhalt springen"
+
+msgid "Welcome,"
+msgstr "Willkommen,"
+
+msgid "View site"
+msgstr "Website anzeigen"
+
+msgid "Documentation"
+msgstr "Dokumentation"
+
+msgid "Log out"
+msgstr "Abmelden"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s hinzufügen"
+
+msgid "History"
+msgstr "Geschichte"
+
+msgid "View on site"
+msgstr "Auf der Website anzeigen"
+
+msgid "Filter"
+msgstr "Filter"
+
+msgid "Hide counts"
+msgstr "Anzahl verstecken"
+
+msgid "Show counts"
+msgstr "Anzahl anzeigen"
+
+msgid "Clear all filters"
+msgstr "Alle Filter zurücksetzen"
+
+msgid "Remove from sorting"
+msgstr "Aus der Sortierung entfernen"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Sortierung: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Sortierung ein-/ausschalten"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Design wechseln (aktuelles Design: automatisch)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Design wechseln (aktuelles Design: hell)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Design wechseln (aktuelles Design: dunkel)"
+
+msgid "Delete"
+msgstr "Löschen"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Das Löschen des %(object_name)s „%(escaped_object)s“ hätte das Löschen davon "
+"abhängiger Daten zur Folge, aber Sie haben nicht die nötigen Rechte, um die "
+"folgenden davon abhängigen Daten zu löschen:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Das Löschen von %(object_name)s „%(escaped_object)s“ würde ein Löschen der "
+"folgenden geschützten verwandten Objekte erfordern:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Sind Sie sicher, dass Sie %(object_name)s „%(escaped_object)s“ löschen "
+"wollen? Es werden zusätzlich die folgenden davon abhängigen Daten gelöscht:"
+
+msgid "Objects"
+msgstr "Objekte"
+
+msgid "Yes, I’m sure"
+msgstr "Ja, ich bin sicher"
+
+msgid "No, take me back"
+msgstr "Nein, bitte abbrechen"
+
+msgid "Delete multiple objects"
+msgstr "Mehrere Objekte löschen"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Das Löschen der ausgewählten %(objects_name)s würde im Löschen geschützter "
+"verwandter Objekte resultieren, allerdings besitzt Ihr Benutzerkonto nicht "
+"die nötigen Rechte, um diese zu löschen:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Das Löschen der ausgewählten %(objects_name)s würde ein Löschen der "
+"folgenden geschützten verwandten Objekte erfordern:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Sind Sie sicher, dass Sie die ausgewählten %(objects_name)s löschen wollen? "
+"Alle folgenden Objekte und ihre verwandten Objekte werden gelöscht:"
+
+msgid "Delete?"
+msgstr "Löschen?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Nach %(filter_title)s "
+
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+msgid "Recent actions"
+msgstr "Neueste Aktionen"
+
+msgid "My actions"
+msgstr "Meine Aktionen"
+
+msgid "None available"
+msgstr "Keine vorhanden"
+
+msgid "Added:"
+msgstr "Hinzugefügt:"
+
+msgid "Changed:"
+msgstr "Geändert:"
+
+msgid "Deleted:"
+msgstr "Gelöscht:"
+
+msgid "Unknown content"
+msgstr "Unbekannter Inhalt"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass "
+"die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom "
+"verwendeten Datenbankbenutzer auch lesbar ist."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Sie sind als %(username)s angemeldet, aber nicht autorisiert, auf diese "
+"Seite zuzugreifen. Wollen Sie sich mit einem anderen Account anmelden?"
+
+msgid "Forgotten your password or username?"
+msgstr "Benutzername oder Passwort vergessen?"
+
+msgid "Toggle navigation"
+msgstr "Navigation ein-/ausblenden"
+
+msgid "Sidebar"
+msgstr "Seitenleiste"
+
+msgid "Start typing to filter…"
+msgstr "Eingabe beginnen um zu filtern…"
+
+msgid "Filter navigation items"
+msgstr "Navigationselemente filtern"
+
+msgid "Date/time"
+msgstr "Datum/Zeit"
+
+msgid "User"
+msgstr "Benutzer"
+
+msgid "Action"
+msgstr "Aktion"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "Eintrag"
+msgstr[1] "Einträge"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht "
+"über diese Verwaltungsseiten angelegt."
+
+msgid "Show all"
+msgstr "Zeige alle"
+
+msgid "Save"
+msgstr "Sichern"
+
+msgid "Popup closing…"
+msgstr "Popup wird geschlossen..."
+
+msgid "Search"
+msgstr "Suchen"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s Ergebnis"
+msgstr[1] "%(counter)s Ergebnisse"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s gesamt"
+
+msgid "Save as new"
+msgstr "Als neu sichern"
+
+msgid "Save and add another"
+msgstr "Sichern und neu hinzufügen"
+
+msgid "Save and continue editing"
+msgstr "Sichern und weiter bearbeiten"
+
+msgid "Save and view"
+msgstr "Sichern und ansehen"
+
+msgid "Close"
+msgstr "Schließen"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Ausgewählte %(model)s ändern"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "%(model)s hinzufügen"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Ausgewählte %(model)s löschen"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Ausgewählte %(model)s ansehen"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr ""
+"Vielen Dank, dass Sie heute ein paar nette Minuten auf dieser Webseite "
+"verbracht haben."
+
+msgid "Log in again"
+msgstr "Erneut anmelden"
+
+msgid "Password change"
+msgstr "Passwort ändern"
+
+msgid "Your password was changed."
+msgstr "Ihr Passwort wurde geändert."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Aus Sicherheitsgründen bitte zuerst das alte Passwort und darunter dann "
+"zweimal das neue Passwort eingeben, um sicherzustellen, dass es es korrekt "
+"eingegeben wurde."
+
+msgid "Change my password"
+msgstr "Mein Passwort ändern"
+
+msgid "Password reset"
+msgstr "Passwort zurücksetzen"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Ihr Passwort wurde zurückgesetzt. Sie können sich nun anmelden."
+
+msgid "Password reset confirmation"
+msgstr "Zurücksetzen des Passworts bestätigen"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Bitte geben Sie Ihr neues Passwort zweimal ein, damit wir überprüfen können, "
+"ob es richtig eingetippt wurde."
+
+msgid "New password:"
+msgstr "Neues Passwort:"
+
+msgid "Confirm password:"
+msgstr "Passwort wiederholen:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Der Link zum Zurücksetzen Ihres Passworts ist ungültig, wahrscheinlich weil "
+"er schon einmal benutzt wurde. Bitte setzen Sie Ihr Passwort erneut zurück."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Wir haben eine E-Mail zum Zurücksetzen des Passwortes an die angegebene E-"
+"Mail-Adresse gesendet, sofern ein entsprechendes Konto existiert. Sie sollte "
+"in Kürze ankommen."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Falls die E-Mail nicht angekommen sein sollte, bitte die E-Mail-Adresse auf "
+"Richtigkeit und gegebenenfalls den Spam-Ordner überprüfen."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Diese E-Mail wurde aufgrund einer Anfrage zum Zurücksetzen des Passworts auf "
+"der Website %(site_name)s versendet."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Der Benutzername, falls vergessen:"
+
+msgid "Thanks for using our site!"
+msgstr "Vielen Dank, dass Sie unsere Website benutzen!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Das Team von %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Passwort vergessen? Einfach die E-Mail-Adresse unten eingeben und den "
+"Anweisungen zum Zurücksetzen des Passworts in der E-Mail folgen."
+
+msgid "Email address:"
+msgstr "E-Mail-Adresse:"
+
+msgid "Reset my password"
+msgstr "Mein Passwort zurücksetzen"
+
+msgid "Select all objects on this page for an action"
+msgstr "Alle Objekte auf dieser Seite für eine Aktion auswählen"
+
+msgid "All dates"
+msgstr "Alle Daten"
+
+#, python-format
+msgid "Select %s"
+msgstr "%s auswählen"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "%s zur Änderung auswählen"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "%s zum Ansehen auswählen"
+
+msgid "Date:"
+msgstr "Datum:"
+
+msgid "Time:"
+msgstr "Zeit:"
+
+msgid "Lookup"
+msgstr "Suchen"
+
+msgid "Currently:"
+msgstr "Aktuell:"
+
+msgid "Change:"
+msgstr "Ändern:"

BIN
static/admin/locale/de/LC_MESSAGES/djangojs.mo


+ 331 - 0
static/admin/locale/de/LC_MESSAGES/djangojs.po

@@ -0,0 +1,331 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# André Hagenbruch, 2011-2012
+# Florian Apolloner <florian@apolloner.eu>, 2020-2023
+# Jannis Leidel <jannis@leidel.info>, 2011,2013-2016,2023
+# jnns, 2016
+# Markus Holtermann <info@markusholtermann.eu>, 2020,2023
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"Last-Translator: Markus Holtermann <info@markusholtermann.eu>, 2020,2023\n"
+"Language-Team: German (http://app.transifex.com/django/django/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Verfügbare %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"Dies ist die Liste der verfügbaren %s. Einfach im unten stehenden Feld "
+"markieren und mithilfe des „Auswählen“-Pfeils auswählen."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+"Durch Eingabe in diesem Feld lässt sich die Liste der verfügbaren %s "
+"eingrenzen."
+
+msgid "Filter"
+msgstr "Filter"
+
+msgid "Choose all"
+msgstr "Alle auswählen"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Klicken, um alle %s auf einmal auszuwählen."
+
+msgid "Choose"
+msgstr "Auswählen"
+
+msgid "Remove"
+msgstr "Entfernen"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Ausgewählte %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"Dies ist die Liste der ausgewählten %s. Einfach im unten stehenden Feld "
+"markieren und mithilfe des „Entfernen“-Pfeils wieder entfernen."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr ""
+"In diesem Feld tippen, um die Liste der ausgewählten %s einzuschränken."
+
+msgid "Remove all"
+msgstr "Alle entfernen"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Klicken, um alle ausgewählten %s auf einmal zu entfernen."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s ausgewählte Option nicht sichtbar"
+msgstr[1] "%s ausgewählte Optionen nicht sichtbar"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s von %(cnt)s ausgewählt"
+msgstr[1] "%(sel)s von %(cnt)s ausgewählt"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Sie haben Änderungen an bearbeitbaren Feldern vorgenommen und nicht "
+"gespeichert. Wollen Sie die Aktion trotzdem ausführen und Ihre Änderungen "
+"verwerfen?"
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Sie haben eine Aktion ausgewählt, aber Ihre vorgenommenen Änderungen nicht "
+"gespeichert. Klicken Sie OK, um dennoch zu speichern. Danach müssen Sie die "
+"Aktion erneut ausführen."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Sie haben eine Aktion ausgewählt, aber keine Änderungen an bearbeitbaren "
+"Feldern vorgenommen. Sie wollten wahrscheinlich auf „Ausführen“ und nicht "
+"auf „Speichern“ klicken."
+
+msgid "Now"
+msgstr "Jetzt"
+
+msgid "Midnight"
+msgstr "Mitternacht"
+
+msgid "6 a.m."
+msgstr "6 Uhr"
+
+msgid "Noon"
+msgstr "Mittag"
+
+msgid "6 p.m."
+msgstr "18 Uhr"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Achtung: Sie sind %s Stunde der Serverzeit vorraus."
+msgstr[1] "Achtung: Sie sind %s Stunden der Serverzeit vorraus."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Achtung: Sie sind %s Stunde hinter der Serverzeit."
+msgstr[1] "Achtung: Sie sind %s Stunden hinter der Serverzeit."
+
+msgid "Choose a Time"
+msgstr "Uhrzeit wählen"
+
+msgid "Choose a time"
+msgstr "Uhrzeit"
+
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgid "Today"
+msgstr "Heute"
+
+msgid "Choose a Date"
+msgstr "Datum wählen"
+
+msgid "Yesterday"
+msgstr "Gestern"
+
+msgid "Tomorrow"
+msgstr "Morgen"
+
+msgid "January"
+msgstr "Januar"
+
+msgid "February"
+msgstr "Februar"
+
+msgid "March"
+msgstr "März"
+
+msgid "April"
+msgstr "April"
+
+msgid "May"
+msgstr "Mai"
+
+msgid "June"
+msgstr "Juni"
+
+msgid "July"
+msgstr "Juli"
+
+msgid "August"
+msgstr "August"
+
+msgid "September"
+msgstr "September"
+
+msgid "October"
+msgstr "Oktober"
+
+msgid "November"
+msgstr "November"
+
+msgid "December"
+msgstr "Dezember"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Jan"
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Feb"
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Mrz"
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Apr"
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "Mai"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "Jun"
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "Jul"
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Aug"
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Sep"
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Okt"
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Nov"
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Dez"
+
+msgid "Sunday"
+msgstr "Sonntag"
+
+msgid "Monday"
+msgstr "Montag"
+
+msgid "Tuesday"
+msgstr "Dienstag"
+
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+msgid "Thursday"
+msgstr "Donnerstag"
+
+msgid "Friday"
+msgstr "Freitag"
+
+msgid "Saturday"
+msgstr "Samstag"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "So"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "Mo"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "Di"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "Mi"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "Do"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "Fr"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "Sa"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "So"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "Mo"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "Di"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "Mi"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "Do"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "Fr"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "Sa"
+
+msgid "Show"
+msgstr "Einblenden"
+
+msgid "Hide"
+msgstr "Ausblenden"

BIN
static/admin/locale/dsb/LC_MESSAGES/django.mo


+ 792 - 0
static/admin/locale/dsb/LC_MESSAGES/django.po

@@ -0,0 +1,792 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Michael Wolf <milupo@sorbzilla.de>, 2016-2024
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-05-22 11:46-0300\n"
+"PO-Revision-Date: 2024-10-07 07:05+0000\n"
+"Last-Translator: Michael Wolf <milupo@sorbzilla.de>, 2016-2024\n"
+"Language-Team: Lower Sorbian (http://app.transifex.com/django/django/"
+"language/dsb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: dsb\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Wubrane %(verbose_name_plural)s lašowaś"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "%(count)d %(items)s su se wulašowali."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "%(name)s njedajo se lašowaś"
+
+msgid "Are you sure?"
+msgstr "Sćo se wěsty?"
+
+msgid "Administration"
+msgstr "Administracija"
+
+msgid "All"
+msgstr "Wšykne"
+
+msgid "Yes"
+msgstr "Jo"
+
+msgid "No"
+msgstr "Ně"
+
+msgid "Unknown"
+msgstr "Njeznaty"
+
+msgid "Any date"
+msgstr "Někaki datum"
+
+msgid "Today"
+msgstr "Źinsa"
+
+msgid "Past 7 days"
+msgstr "Zachadne 7 dnjow"
+
+msgid "This month"
+msgstr "Toś ten mjasec"
+
+msgid "This year"
+msgstr "W tom lěśe"
+
+msgid "No date"
+msgstr "Žeden datum"
+
+msgid "Has date"
+msgstr "Ma datum"
+
+msgid "Empty"
+msgstr "Prozny"
+
+msgid "Not empty"
+msgstr "Njeprozny"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Pšosym zapódajśo korektne %(username)s a gronidło za personalne konto. "
+"Źiwajśo na to, až wobej póli móžotej mjazy wjeliko- a małopisanim rozeznawaś."
+
+msgid "Action:"
+msgstr "Akcija:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Dalšne %(verbose_name)s pśidaś"
+
+msgid "Remove"
+msgstr "Wótpóraś"
+
+msgid "Addition"
+msgstr "Pśidanje"
+
+msgid "Change"
+msgstr "Změniś"
+
+msgid "Deletion"
+msgstr "Wulašowanje"
+
+msgid "action time"
+msgstr "akciski cas"
+
+msgid "user"
+msgstr "wužywaŕ"
+
+msgid "content type"
+msgstr "wopśimjeśowy typ"
+
+msgid "object id"
+msgstr "objektowy id"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "objektowa reprezentacija"
+
+msgid "action flag"
+msgstr "akciske markěrowanje"
+
+msgid "change message"
+msgstr "změnowa powěźeńka"
+
+msgid "log entry"
+msgstr "protokolowy zapisk"
+
+msgid "log entries"
+msgstr "protokolowe zapiski"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "„%(object)s“ pśidane."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "„%(object)s“ změnjone - %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "„%(object)s“ wulašowane."
+
+msgid "LogEntry Object"
+msgstr "Objekt LogEntry"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "{name} „{object}“ pśidany."
+
+msgid "Added."
+msgstr "Pśidany."
+
+msgid "and"
+msgstr "a"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "{fields} za {name} „{object}“ změnjone."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "{fields} změnjone."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Deleted {name} „{object}“ wulašowane."
+
+msgid "No fields changed."
+msgstr "Žedne póla změnjone."
+
+msgid "None"
+msgstr "Žeden"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr "´Źaržćo „ctrl“ abo „cmd“ na Mac tłocony, aby wusej jadnogo wubrał."
+
+msgid "Select this object for an action - {}"
+msgstr "Wubjeŕśo toś ten objekt za akciju – {}"
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "{name} „{obj}“ jo se wuspěšnje pśidał."
+
+msgid "You may edit it again below."
+msgstr "Móźośo dołojce znowego wobźěłaś."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} „{obj}“ jo se wuspěšnje pśidał. Móžośo dołojce dalšne {name} pśidaś."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"{name} „{obj}“ jo se wuspěšnje změnił. Móžośo jen dołojce znowego wobźěłowaś."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"{name} „{obj}“ jo se wuspěšnje změnił. Móžośo dołojce dalšne {name} pśidaś."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name} „{obj}“ jo se wuspěšnje změnił."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Zapiski muse se wubraś, aby akcije na nje nałožowało. Zapiski njejsu se "
+"změnili."
+
+msgid "No action selected."
+msgstr "Žedna akcija wubrana."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s „%(obj)s“ jo se wuspěšnje wulašował."
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s z ID „%(key)s“ njeeksistěrujo. Jo se snaź wulašowało?"
+
+#, python-format
+msgid "Add %s"
+msgstr "%s pśidaś"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s změniś"
+
+#, python-format
+msgid "View %s"
+msgstr "%s pokazaś"
+
+msgid "Database error"
+msgstr "Zmólka datoweje banki"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s jo se wuspěšnje změnił."
+msgstr[1] "%(count)s %(name)s stej se wuspěšnje změniłej."
+msgstr[2] "%(count)s %(name)s su se wuspěšnje změnili."
+msgstr[3] "%(count)s %(name)s jo se wuspěšnje změniło."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s wubrany"
+msgstr[1] "Wšykne %(total_count)s wubranej"
+msgstr[2] "Wšykne %(total_count)s wubrane"
+msgstr[3] "Wšykne %(total_count)s wubranych"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 z %(cnt)s wubranych"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Změnowa historija: %s"
+
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Aby se %(class_name)s %(instance)s lašowało, muse se slědujuce šćitane "
+"objekty lašowaś: %(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Administrator sedła Django"
+
+msgid "Django administration"
+msgstr "Administracija Django"
+
+msgid "Site administration"
+msgstr "Sedłowa administracija"
+
+msgid "Log in"
+msgstr "Pśizjawiś"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "Administracija %(app)s"
+
+msgid "Page not found"
+msgstr "Bok njejo se namakał"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Jo nam luto, ale pominany bok njedajo se namakaś."
+
+msgid "Home"
+msgstr "Startowy bok"
+
+msgid "Server error"
+msgstr "Serwerowa zmólka"
+
+msgid "Server error (500)"
+msgstr "Serwerowa zmólka (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Serwerowa zmólka <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Zmólka jo nastała. Jo se sedłowym administratoram pśez e-mail k wěsći dała a "
+"by dejała se skóro wótpóraś. Źěkujom se za wašu sćerpmosć."
+
+msgid "Run the selected action"
+msgstr "Wubranu akciju wuwjasć"
+
+msgid "Go"
+msgstr "Start"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Klikniśo how, aby objekty wšych bokow wubrał"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Wubjeŕśo wšykne %(total_count)s %(module_name)s"
+
+msgid "Clear selection"
+msgstr "Wuběrk lašowaś"
+
+msgid "Breadcrumbs"
+msgstr "Klěbowe srjodki"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Modele w nałoženju %(name)s"
+
+msgid "Add"
+msgstr "Pśidaś"
+
+msgid "View"
+msgstr "Pokazaś"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Njamaśo pšawo něco pokazaś abo wobźěłaś"
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Zapódajśo nejpjerwjej wužywarske mě a gronidło. Pótom móžośo dalšne "
+"wužywarske nastajenja wobźěłowaś."
+
+msgid "Enter a username and password."
+msgstr "Zapódajśo wužywarske mě a gronidło."
+
+msgid "Change password"
+msgstr "Gronidło změniś"
+
+msgid "Set password"
+msgstr "Gronidło póstajiś"
+
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Pšosym korigěrujśo slědujucu zmólku."
+msgstr[1] "Pšosym korigěrujśo slědujucej zmólce."
+msgstr[2] "Pšosym korigěrujśo slědujuce zmólki."
+msgstr[3] "Pšosym korigěrujśo slědujuce zmólki."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Zapódajśo nowe gronidło za wužywarja <strong>%(username)s</strong>."
+
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"Toś ta akcija awtentifikaciju na zakłaźe gronidła za toś togo wužywarja "
+"<strong> zmóžnijo </strong>."
+
+msgid "Disable password-based authentication"
+msgstr "Awtentifikaciju na zakłaźe gronidła znjemóžniś"
+
+msgid "Enable password-based authentication"
+msgstr "Awtentifikaciju na zakłaźe gronidła zmóžniś"
+
+msgid "Skip to main content"
+msgstr "Dalej ku głownemu wopśimjeśeju"
+
+msgid "Welcome,"
+msgstr "Witajśo,"
+
+msgid "View site"
+msgstr "Sedło pokazaś"
+
+msgid "Documentation"
+msgstr "Dokumentacija"
+
+msgid "Log out"
+msgstr "Wótzjawiś"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s pśidaś"
+
+msgid "History"
+msgstr "Historija"
+
+msgid "View on site"
+msgstr "Na sedle pokazaś"
+
+msgid "Filter"
+msgstr "Filtrowaś"
+
+msgid "Hide counts"
+msgstr "Licby schowaś"
+
+msgid "Show counts"
+msgstr "Licby pokazaś"
+
+msgid "Clear all filters"
+msgstr "Wšykne filtry lašowaś"
+
+msgid "Remove from sorting"
+msgstr "Ze sortěrowanja wótpóraś"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Sortěrowański rěd: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Sortěrowanje pśešaltowaś"
+
+msgid "Toggle theme (current theme: auto)"
+msgstr "Drastwu změniś (auto)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "Drastwu změniś (swětły)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "Drastwu změniś (śamny)"
+
+msgid "Delete"
+msgstr "Lašowaś"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Gaž se %(object_name)s '%(escaped_object)s' lašujo, se pśisłušne objekty "
+"wulašuju, ale wašo konto njama pšawo slědujuce typy objektow lašowaś: "
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Aby se %(object_name)s '%(escaped_object)s' lašujo, muse se slědujuce "
+"šćitane pśisłušne objekty lašowaś:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Cośo napšawdu %(object_name)s „%(escaped_object)s“ lašowaś? Wšykne slědujuce "
+"pśisłušne zapiski se wulašuju: "
+
+msgid "Objects"
+msgstr "Objekty"
+
+msgid "Yes, I’m sure"
+msgstr "Jo, som se wěsty"
+
+msgid "No, take me back"
+msgstr "Ně, pšosym slědk"
+
+msgid "Delete multiple objects"
+msgstr "Někotare objekty lašowaś"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Gaž lašujośo wubrany %(objects_name)s, se pśisłušne objekty wulašuju, ale "
+"wašo konto njama pšawo slědujuce typy objektow lašowaś: "
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Aby wubrany %(objects_name)s lašowało, muse se slědujuce šćitane pśisłušne "
+"objekty lašowaś:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Cośo napšawdu wubrany %(objects_name)s lašowaś? Wšykne slědujuce objekty a "
+"jich pśisłušne zapiski se wulašuju:"
+
+msgid "Delete?"
+msgstr "Lašowaś?"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Pó %(filter_title)s "
+
+msgid "Summary"
+msgstr "Zespominanje"
+
+msgid "Recent actions"
+msgstr "Nejnowše akcije"
+
+msgid "My actions"
+msgstr "Móje akcije"
+
+msgid "None available"
+msgstr "Žeden k dispoziciji"
+
+msgid "Added:"
+msgstr "Pśidany:"
+
+msgid "Changed:"
+msgstr "Změnjony:"
+
+msgid "Deleted:"
+msgstr "Wulašowany:"
+
+msgid "Unknown content"
+msgstr "Njeznate wopśimjeśe"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Něco jo z wašeju instalaciju datoweje banki kśiwje šło. Pśeznańśo se, až "
+"wótpowědne tabele datoweje banki su se napórali a pótom, až datowa banka "
+"dajo se wót wótpówědnego wužywarja cytaś."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Sćo ako %(username)s awtentificěrowany, ale njamaśo pśistup na toś ten bok. "
+"Cośo se pla drugego konta pśizjawiś?"
+
+msgid "Forgotten your password or username?"
+msgstr "Sćo swójo gronidło abo wužywarske mě zabył?"
+
+msgid "Toggle navigation"
+msgstr "Nawigaciju pśešaltowaś"
+
+msgid "Sidebar"
+msgstr "Bocnica"
+
+msgid "Start typing to filter…"
+msgstr "Pišćo, aby filtrował …"
+
+msgid "Filter navigation items"
+msgstr "Nawigaciske zapiski filtrowaś"
+
+msgid "Date/time"
+msgstr "Datum/cas"
+
+msgid "User"
+msgstr "Wužywaŕ"
+
+msgid "Action"
+msgstr "Akcija"
+
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "zapisk"
+msgstr[1] "zapiska"
+msgstr[2] "zapiski"
+msgstr[3] "zapiskow"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Toś ten objekt njama změnowu historiju. Jo se nejskerjej pśez toś to "
+"administratorowe sedło pśidał."
+
+msgid "Show all"
+msgstr "Wšykne pokazaś"
+
+msgid "Save"
+msgstr "Składowaś"
+
+msgid "Popup closing…"
+msgstr "Wuskokujuce wokno se zacynja…"
+
+msgid "Search"
+msgstr "Pytaś"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s wuslědk"
+msgstr[1] "%(counter)s wuslědka"
+msgstr[2] "%(counter)s wuslědki"
+msgstr[3] "%(counter)s wuslědkow"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s dogromady"
+
+msgid "Save as new"
+msgstr "Ako nowy składowaś"
+
+msgid "Save and add another"
+msgstr "Składowaś a dalšny pśidaś"
+
+msgid "Save and continue editing"
+msgstr "Składowaś a dalej wobźěłowaś"
+
+msgid "Save and view"
+msgstr "Składowaś a pokazaś"
+
+msgid "Close"
+msgstr "Zacyniś"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Wubrane %(model)s změniś"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Dalšny %(model)s pśidaś"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Wubrane %(model)s lašowaś"
+
+#, python-format
+msgid "View selected %(model)s"
+msgstr "Wubrany %(model)s pokazaś"
+
+msgid "Thanks for spending some quality time with the web site today."
+msgstr ""
+"Wjeliki źěk, až sćo sebje brał źinsa cas za pśeglědowanje kwality websedła."
+
+msgid "Log in again"
+msgstr "Hyšći raz pśizjawiś"
+
+msgid "Password change"
+msgstr "Gronidło změniś"
+
+msgid "Your password was changed."
+msgstr "Wašo gronidło jo se změniło."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Pšosym zapódajśo k swójej wěstośe swójo stare gronidło a pótom swójo nowe "
+"gronidło dwójcy, aby my mógli pśeglědowaś, lěc sćo jo korektnje zapisał."
+
+msgid "Change my password"
+msgstr "Mójo gronidło změniś"
+
+msgid "Password reset"
+msgstr "Gronidło jo se slědk stajiło"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Wašo gronidło jo se póstajiło. Móžośo pókšacowaś a se něnto pśizjawiś."
+
+msgid "Password reset confirmation"
+msgstr "Wobkšuśenje slědkstajenja gronidła"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Pšosym zapódajśo swójo nowe gronidło dwójcy, aby my mógli pśeglědowaś, lěc "
+"sći jo korektnje zapisał."
+
+msgid "New password:"
+msgstr "Nowe gronidło:"
+
+msgid "Confirm password:"
+msgstr "Gronidło wobkšuśiś:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Wótkaz za slědkstajenje gronidła jo njepłaśiwy był, snaź dokulaž jo se južo "
+"wužył. Pšosym pšosćo wó nowe slědkstajenje gronidła."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Smy wam instrukcije za nastajenje wašogo gronidła pśez e-mail pósłali, jolic "
+"konto ze zapódaneju e-mailoweju adresu eksistěrujo. Wy by dejał ju skóro "
+"dostaś."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Jolic mejlku njedostawaśo, pśeznańśo se, až sćo adresu zapódał, z kótarejuž "
+"sćo zregistrěrował, a pśeglědajśo swój spamowy zarědnik."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Dostawaśo toś tu mejlku, dokulaž sćo za swójo wužywarske konto na "
+"%(site_name)s wó slědkstajenje gronidła  pšosył."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr "Pšosym źiśo k slědujucemu bokoju a wubjeŕśo nowe gronidło:"
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Wašo wužywarske mě, jolic sćo jo zabył:"
+
+msgid "Thanks for using our site!"
+msgstr "Wjeliki źěk za wužywanje našogo sedła!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Team %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Sćo swójo gronidło zabył? Zapódajśo dołojce swóju e-mailowu adresu a "
+"pósćelomy wam instrukcije za nastajenje nowego gronidła pśez e-mail."
+
+msgid "Email address:"
+msgstr "E-mailowa adresa:"
+
+msgid "Reset my password"
+msgstr "Mójo gronidło slědk stajiś"
+
+msgid "Select all objects on this page for an action"
+msgstr "Wubjeŕśo wšykne objekty na toś tom boku za akciju"
+
+msgid "All dates"
+msgstr "Wšykne daty"
+
+#, python-format
+msgid "Select %s"
+msgstr "%s wubraś"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "%s wubraś, aby se změniło"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "%s wubraś, kótaryž ma se pokazaś"
+
+msgid "Date:"
+msgstr "Datum:"
+
+msgid "Time:"
+msgstr "Cas:"
+
+msgid "Lookup"
+msgstr "Pytanje"
+
+msgid "Currently:"
+msgstr "Tuchylu:"
+
+msgid "Change:"
+msgstr "Změniś:"

BIN
static/admin/locale/dsb/LC_MESSAGES/djangojs.mo


+ 335 - 0
static/admin/locale/dsb/LC_MESSAGES/djangojs.po

@@ -0,0 +1,335 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Michael Wolf <milupo@sorbzilla.de>, 2016,2020-2023
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-18 15:04-0300\n"
+"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"Last-Translator: Michael Wolf <milupo@sorbzilla.de>, 2016,2020-2023\n"
+"Language-Team: Lower Sorbian (http://app.transifex.com/django/django/"
+"language/dsb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: dsb\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3);\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "K dispoziciji stojece %s"
+
+#, javascript-format
+msgid ""
+"This is the list of available %s. You may choose some by selecting them in "
+"the box below and then clicking the \"Choose\" arrow between the two boxes."
+msgstr ""
+"To jo lisćina k dispoziciji stojecych %s. Klikniśo na šypku „Wubraś“ mjazy "
+"kašćikoma, aby někotare z nich w slědujucem kašćiku wubrał.  "
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+"Zapišćo do toś togo póla, aby zapiski z lisćiny k dispoziciji stojecych %s "
+"wufiltrował. "
+
+msgid "Filter"
+msgstr "Filtrowaś"
+
+msgid "Choose all"
+msgstr "Wšykne wubraś"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Klikniśo, aby wšykne %s naraz wubrał."
+
+msgid "Choose"
+msgstr "Wubraś"
+
+msgid "Remove"
+msgstr "Wótpóraś"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Wubrane %s"
+
+#, javascript-format
+msgid ""
+"This is the list of chosen %s. You may remove some by selecting them in the "
+"box below and then clicking the \"Remove\" arrow between the two boxes."
+msgstr ""
+"To jo lisćina wubranych %s. Klikniśo na šypku „Wótpóraś“ mjazy kašćikoma, "
+"aby někotare z nich w slědujucem kašćiku wótpórał."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of selected %s."
+msgstr ""
+"Zapišćo do toś togo póla, aby zapiski z lisćiny wubranych %s wufiltrował. "
+
+msgid "Remove all"
+msgstr "Wšykne wótpóraś"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Klikniśo, aby wšykne wubrane %s naraz wótpórał."
+
+#, javascript-format
+msgid "%s selected option not visible"
+msgid_plural "%s selected options not visible"
+msgstr[0] "%s wubrane nastajenje njewidobne"
+msgstr[1] "%s wubranej nastajeni njewidobnej"
+msgstr[2] "%s wubrane nastajenja njewidobne"
+msgstr[3] "%s wubranych nastajenjow njewidobne"
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s z %(cnt)s wubrany"
+msgstr[1] "%(sel)s z %(cnt)s wubranej"
+msgstr[2] "%(sel)s z %(cnt)s wubrane"
+msgstr[3] "%(sel)s z %(cnt)s wubranych"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Maśo njeskładowane změny za jadnotliwe wobźěłujobne póla. Jolic akciju "
+"wuwjeźośo, se waše njeskładowane změny zgubiju."
+
+msgid ""
+"You have selected an action, but you haven’t saved your changes to "
+"individual fields yet. Please click OK to save. You’ll need to re-run the "
+"action."
+msgstr ""
+"Sćo akciju wubrał, ale njejsćo hyšći swóje změny za jadnotliwe póla "
+"składował, Pšosym klikniśo na W pórěźe, aby składował. Musyśo akciju znowego "
+"wuwjasć."
+
+msgid ""
+"You have selected an action, and you haven’t made any changes on individual "
+"fields. You’re probably looking for the Go button rather than the Save "
+"button."
+msgstr ""
+"Sćo akciju wubrał, ale njejsćo jadnotliwe póla změnił. Nejskerjej pytaśo "
+"skerjej za tłocaškom Start ako za tłocaškom Składowaś."
+
+msgid "Now"
+msgstr "Něnto"
+
+msgid "Midnight"
+msgstr "Połnoc"
+
+msgid "6 a.m."
+msgstr "6:00 góź. dopołdnja"
+
+msgid "Noon"
+msgstr "Połdnjo"
+
+msgid "6 p.m."
+msgstr "6:00 wótpołdnja"
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Glědajśo: Waš cas jo wó %s góźinu pśéd serwerowym casom."
+msgstr[1] "Glědajśo: Waš cas jo wó %s góźinje pśéd serwerowym casom."
+msgstr[2] "Glědajśo: Waš cas jo wó %s góźiny pśéd serwerowym casom."
+msgstr[3] "Glědajśo: Waš cas jo wó %s góźin pśéd serwerowym casom."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Glědajśo: Waš cas jo wó %s góźinu za serwerowym casom."
+msgstr[1] "Glědajśo: Waš cas jo wó %s góźinje za serwerowym casom."
+msgstr[2] "Glědajśo: Waš cas jo wó %s góźiny za serwerowym casom."
+msgstr[3] "Glědajśo: Waš cas jo wó %s góźin za serwerowym casom."
+
+msgid "Choose a Time"
+msgstr "Wubjeŕśo cas"
+
+msgid "Choose a time"
+msgstr "Wubjeŕśo cas"
+
+msgid "Cancel"
+msgstr "Pśetergnuś"
+
+msgid "Today"
+msgstr "Źinsa"
+
+msgid "Choose a Date"
+msgstr "Wubjeŕśo datum"
+
+msgid "Yesterday"
+msgstr "Cora"
+
+msgid "Tomorrow"
+msgstr "Witśe"
+
+msgid "January"
+msgstr "Januar"
+
+msgid "February"
+msgstr "Februar"
+
+msgid "March"
+msgstr "Měrc"
+
+msgid "April"
+msgstr "Apryl"
+
+msgid "May"
+msgstr "Maj"
+
+msgid "June"
+msgstr "Junij"
+
+msgid "July"
+msgstr "Julij"
+
+msgid "August"
+msgstr "Awgust"
+
+msgid "September"
+msgstr "September"
+
+msgid "October"
+msgstr "Oktober"
+
+msgid "November"
+msgstr "Nowember"
+
+msgid "December"
+msgstr "December"
+
+msgctxt "abbrev. month January"
+msgid "Jan"
+msgstr "Jan."
+
+msgctxt "abbrev. month February"
+msgid "Feb"
+msgstr "Feb."
+
+msgctxt "abbrev. month March"
+msgid "Mar"
+msgstr "Měr."
+
+msgctxt "abbrev. month April"
+msgid "Apr"
+msgstr "Apr."
+
+msgctxt "abbrev. month May"
+msgid "May"
+msgstr "Maj"
+
+msgctxt "abbrev. month June"
+msgid "Jun"
+msgstr "Jun."
+
+msgctxt "abbrev. month July"
+msgid "Jul"
+msgstr "Jul."
+
+msgctxt "abbrev. month August"
+msgid "Aug"
+msgstr "Awg."
+
+msgctxt "abbrev. month September"
+msgid "Sep"
+msgstr "Sep."
+
+msgctxt "abbrev. month October"
+msgid "Oct"
+msgstr "Okt."
+
+msgctxt "abbrev. month November"
+msgid "Nov"
+msgstr "Now."
+
+msgctxt "abbrev. month December"
+msgid "Dec"
+msgstr "Dec."
+
+msgid "Sunday"
+msgstr "Njeźela"
+
+msgid "Monday"
+msgstr "Pónjeźele"
+
+msgid "Tuesday"
+msgstr "Wałtora"
+
+msgid "Wednesday"
+msgstr "Srjoda"
+
+msgid "Thursday"
+msgstr "Stwórtk"
+
+msgid "Friday"
+msgstr "Pětk"
+
+msgid "Saturday"
+msgstr "Sobota"
+
+msgctxt "abbrev. day Sunday"
+msgid "Sun"
+msgstr "Nje"
+
+msgctxt "abbrev. day Monday"
+msgid "Mon"
+msgstr "Pón"
+
+msgctxt "abbrev. day Tuesday"
+msgid "Tue"
+msgstr "Wał"
+
+msgctxt "abbrev. day Wednesday"
+msgid "Wed"
+msgstr "Srj"
+
+msgctxt "abbrev. day Thursday"
+msgid "Thur"
+msgstr "Stw"
+
+msgctxt "abbrev. day Friday"
+msgid "Fri"
+msgstr "Pět"
+
+msgctxt "abbrev. day Saturday"
+msgid "Sat"
+msgstr "Sob"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "Nj"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "Pó"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "Wa"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "Sr"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "St"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "Pě"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "So"
+
+msgid "Show"
+msgstr "Pokazaś"
+
+msgid "Hide"
+msgstr "Schowaś"

BIN
static/admin/locale/el/LC_MESSAGES/django.mo


+ 737 - 0
static/admin/locale/el/LC_MESSAGES/django.po

@@ -0,0 +1,737 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Antonis Christofides <antonis@antonischristofides.com>, 2021
+# Dimitris Glezos <glezos@transifex.com>, 2011
+# Giannis Meletakis <meletakis@gmail.com>, 2015
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Nick Mavrakis <mavrakis.n@gmail.com>, 2016-2018,2021
+# Nick Mavrakis <mavrakis.n@gmail.com>, 2016
+# Pãnoș <panos.laganakos@gmail.com>, 2014
+# Pãnoș <panos.laganakos@gmail.com>, 2014,2016,2019-2020
+# Yorgos Pagles <y.pagles@gmail.com>, 2011-2012
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-15 09:00+0100\n"
+"PO-Revision-Date: 2021-03-30 03:21+0000\n"
+"Last-Translator: Antonis Christofides <antonis@antonischristofides.com>\n"
+"Language-Team: Greek (http://www.transifex.com/django/django/language/el/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "%(verbose_name_plural)s: Διαγραφή επιλεγμένων"
+
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Επιτυχώς διεγράφησαν %(count)d %(items)s."
+
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Αδύνατη η διαγραφή του %(name)s"
+
+msgid "Are you sure?"
+msgstr "Είστε σίγουρος;"
+
+msgid "Administration"
+msgstr "Διαχείριση"
+
+msgid "All"
+msgstr "Όλα"
+
+msgid "Yes"
+msgstr "Ναι"
+
+msgid "No"
+msgstr "Όχι"
+
+msgid "Unknown"
+msgstr "Άγνωστο"
+
+msgid "Any date"
+msgstr "Οποιαδήποτε ημερομηνία"
+
+msgid "Today"
+msgstr "Σήμερα"
+
+msgid "Past 7 days"
+msgstr "Τελευταίες 7 ημέρες"
+
+msgid "This month"
+msgstr "Αυτό το μήνα"
+
+msgid "This year"
+msgstr "Αυτό το χρόνο"
+
+msgid "No date"
+msgstr "Καθόλου ημερομηνία"
+
+msgid "Has date"
+msgstr "Έχει ημερομηνία"
+
+msgid "Empty"
+msgstr "Χωρίς τιμή"
+
+msgid "Not empty"
+msgstr "Με τιμή"
+
+#, python-format
+msgid ""
+"Please enter the correct %(username)s and password for a staff account. Note "
+"that both fields may be case-sensitive."
+msgstr ""
+"Παρακαλώ δώστε το σωστό %(username)s και συνθηματικό για λογαριασμό "
+"προσωπικού. Και στα δύο πεδία μπορεί να έχει σημασία η διάκριση κεφαλαίων/"
+"μικρών."
+
+msgid "Action:"
+msgstr "Ενέργεια:"
+
+#, python-format
+msgid "Add another %(verbose_name)s"
+msgstr "Να προστεθεί %(verbose_name)s"
+
+msgid "Remove"
+msgstr "Αφαίρεση"
+
+msgid "Addition"
+msgstr "Προσθήκη"
+
+msgid "Change"
+msgstr "Αλλαγή"
+
+msgid "Deletion"
+msgstr "Διαγραφή"
+
+msgid "action time"
+msgstr "ώρα ενέργειας"
+
+msgid "user"
+msgstr "χρήστης"
+
+msgid "content type"
+msgstr "τύπος περιεχομένου"
+
+msgid "object id"
+msgstr "ταυτότητα αντικειμένου"
+
+#. Translators: 'repr' means representation
+#. (https://docs.python.org/library/functions.html#repr)
+msgid "object repr"
+msgstr "αναπαράσταση αντικειμένου"
+
+msgid "action flag"
+msgstr "σημαία ενέργειας"
+
+msgid "change message"
+msgstr "μήνυμα τροποποίησης"
+
+msgid "log entry"
+msgstr "καταχώριση αρχείου καταγραφής"
+
+msgid "log entries"
+msgstr "καταχωρίσεις αρχείου καταγραφής"
+
+#, python-format
+msgid "Added “%(object)s”."
+msgstr "Προστέθηκε «%(object)s»."
+
+#, python-format
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Τροποποιήθηκε «%(object)s» — %(changes)s"
+
+#, python-format
+msgid "Deleted “%(object)s.”"
+msgstr "Διαγράφηκε «%(object)s»."
+
+msgid "LogEntry Object"
+msgstr "Αντικείμενο LogEntry"
+
+#, python-brace-format
+msgid "Added {name} “{object}”."
+msgstr "Προστέθηκε {name} “{object}”."
+
+msgid "Added."
+msgstr "Προστέθηκε."
+
+msgid "and"
+msgstr "και"
+
+#, python-brace-format
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "{name} «{object}»: Αλλαγή {fields}."
+
+#, python-brace-format
+msgid "Changed {fields}."
+msgstr "Αλλαγή {fields}."
+
+#, python-brace-format
+msgid "Deleted {name} “{object}”."
+msgstr "Διεγράφη {name} «{object}»."
+
+msgid "No fields changed."
+msgstr "Δεν άλλαξε κανένα πεδίο."
+
+msgid "None"
+msgstr "Κανένα"
+
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr ""
+"Κρατήστε πατημένο το «Control» («Command» σε Mac) για να επιλέξετε "
+"περισσότερα από ένα αντικείμενα."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully."
+msgstr "Προστέθηκε {name} «{obj}»."
+
+msgid "You may edit it again below."
+msgstr "Μπορεί να πραγματοποιηθεί περαιτέρω επεξεργασία παρακάτω."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"Προστέθηκε {name} «{obj}». Μπορεί να πραγματοποιηθεί νέα πρόσθεση παρακάτω."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr ""
+"Το αντικείμενο ({name}) «{obj}» τροποποιήθηκε. Μπορεί να πραγματοποιηθεί "
+"περαιτέρω επεξεργασία παρακάτω."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr ""
+"Προστέθηκε {name} «{obj}». Μπορεί να πραγματοποιηθεί περαιτέρω επεξεργασία "
+"παρακάτω."
+
+#, python-brace-format
+msgid ""
+"The {name} “{obj}” was changed successfully. You may add another {name} "
+"below."
+msgstr ""
+"Το αντικείμενο ({name}) «{obj}» τροποποιήθηκε. Μπορεί να προστεθεί επιπλέον "
+"{name} παρακάτω."
+
+#, python-brace-format
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "Το αντικείμενο ({name}) «{obj}» τροποποιήθηκε."
+
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Καμία αλλαγή δεν πραγματοποιήθηκε γιατί δεν έχετε επιλέξει αντικείμενο. "
+"Επιλέξτε ένα ή περισσότερα αντικείμενα για να πραγματοποιήσετε ενέργειες σ' "
+"αυτά."
+
+msgid "No action selected."
+msgstr "Δεν έχει επιλεγεί ενέργεια."
+
+#, python-format
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "Διεγράφη το αντικείμενο (%(name)s) «%(obj)s»"
+
+#, python-format
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "Δεν υπάρχει %(name)s με ID «%(key)s». Ίσως να έχει διαγραφεί."
+
+#, python-format
+msgid "Add %s"
+msgstr "Να προστεθεί %s"
+
+#, python-format
+msgid "Change %s"
+msgstr "%s: Τροποποίηση"
+
+#, python-format
+msgid "View %s"
+msgstr "%s: Προβολή"
+
+msgid "Database error"
+msgstr "Σφάλμα στη βάση δεδομένων"
+
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s άλλαξε επιτυχώς."
+msgstr[1] "%(count)s %(name)s άλλαξαν επιτυχώς."
+
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "Επιλέχθηκε %(total_count)s"
+msgstr[1] "Επιλέχθηκαν και τα %(total_count)s"
+
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Επιλέχθηκαν 0 από %(cnt)s"
+
+#, python-format
+msgid "Change history: %s"
+msgstr "Ιστορικό αλλαγών: %s"
+
+#. Translators: Model verbose name and instance representation,
+#. suitable to be an item in a list.
+#, python-format
+msgid "%(class_name)s %(instance)s"
+msgstr "%(class_name)s %(instance)s"
+
+#, python-format
+msgid ""
+"Deleting %(class_name)s %(instance)s would require deleting the following "
+"protected related objects: %(related_objects)s"
+msgstr ""
+"Η διαγραφή του αντικειμένου (%(class_name)s) %(instance)s θα απαιτούσε τη "
+"διαγραφή των παρακάτω προστατευόμενων συσχετισμένων αντικειμένων: "
+"%(related_objects)s"
+
+msgid "Django site admin"
+msgstr "Ιστότοπος διαχείρισης Django"
+
+msgid "Django administration"
+msgstr "Διαχείριση Django"
+
+msgid "Site administration"
+msgstr "Διαχείριση του ιστότοπου"
+
+msgid "Log in"
+msgstr "Σύνδεση"
+
+#, python-format
+msgid "%(app)s administration"
+msgstr "Διαχείριση %(app)s"
+
+msgid "Page not found"
+msgstr "Η σελίδα δεν βρέθηκε"
+
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "Λυπούμαστε, αλλά η σελίδα που ζητήθηκε δεν βρέθηκε."
+
+msgid "Home"
+msgstr "Αρχική"
+
+msgid "Server error"
+msgstr "Σφάλμα στο server"
+
+msgid "Server error (500)"
+msgstr "Σφάλμα στο server (500)"
+
+msgid "Server Error <em>(500)</em>"
+msgstr "Σφάλμα στο server <em>(500)</em>"
+
+msgid ""
+"There’s been an error. It’s been reported to the site administrators via "
+"email and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Παρουσιάστηκε σφάλμα. Εστάλη στους διαχειριστές με email και πιθανότατα θα "
+"διορθωθεί σύντομα. Ευχαριστούμε για την υπομονή σας."
+
+msgid "Run the selected action"
+msgstr "Εκτέλεση της επιλεγμένης ενέργειας"
+
+msgid "Go"
+msgstr "Μετάβαση"
+
+msgid "Click here to select the objects across all pages"
+msgstr "Κάντε κλικ εδώ για να επιλέξετε τα αντικείμενα σε όλες τις σελίδες"
+
+#, python-format
+msgid "Select all %(total_count)s %(module_name)s"
+msgstr "Επιλέξτε και τα %(total_count)s αντικείμενα (%(module_name)s)"
+
+msgid "Clear selection"
+msgstr "Καθαρισμός επιλογής"
+
+#, python-format
+msgid "Models in the %(name)s application"
+msgstr "Μοντέλα στην εφαρμογή %(name)s"
+
+msgid "Add"
+msgstr "Προσθήκη"
+
+msgid "View"
+msgstr "Προβολή"
+
+msgid "You don’t have permission to view or edit anything."
+msgstr "Δεν έχετε δικαίωμα να δείτε ή να επεξεργαστείτε κάτι."
+
+msgid ""
+"First, enter a username and password. Then, you’ll be able to edit more user "
+"options."
+msgstr ""
+"Καταρχήν προσδιορίστε όνομα χρήστη και συνθηματικό. Κατόπιν θα σας δοθεί η "
+"δυνατότητα να εισαγάγετε περισσότερες πληροφορίες για το χρήστη."
+
+msgid "Enter a username and password."
+msgstr "Προσδιορίστε όνομα χρήστη και συνθηματικό."
+
+msgid "Change password"
+msgstr "Αλλαγή συνθηματικού"
+
+msgid "Please correct the error below."
+msgstr "Παρακαλούμε διορθώστε το παρακάτω λάθος."
+
+msgid "Please correct the errors below."
+msgstr "Παρακαλοϋμε διορθώστε τα παρακάτω λάθη."
+
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+"Προσδιορίστε νέο συνθηματικό για το χρήστη <strong>%(username)s</strong>."
+
+msgid "Welcome,"
+msgstr "Καλώς ήρθατε,"
+
+msgid "View site"
+msgstr "Μετάβαση στην εφαρμογή"
+
+msgid "Documentation"
+msgstr "Τεκμηρίωση"
+
+msgid "Log out"
+msgstr "Αποσύνδεση"
+
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s: προσθήκη"
+
+msgid "History"
+msgstr "Ιστορικό"
+
+msgid "View on site"
+msgstr "Προβολή στον ιστότοπο"
+
+msgid "Filter"
+msgstr "Φίλτρο"
+
+msgid "Clear all filters"
+msgstr "Καθαρισμός όλων των φίλτρων"
+
+msgid "Remove from sorting"
+msgstr "Αφαίρεση από την ταξινόμηση"
+
+#, python-format
+msgid "Sorting priority: %(priority_number)s"
+msgstr "Προτεραιότητα ταξινόμησης: %(priority_number)s"
+
+msgid "Toggle sorting"
+msgstr "Εναλλαγή ταξινόμησης"
+
+msgid "Delete"
+msgstr "Διαγραφή"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Επιλέξατε τη διαγραφή του αντικειμένου '%(escaped_object)s' τύπου "
+"%(object_name)s. Αυτό συνεπάγεται τη διαγραφή συσχετισμένων αντικειμενων για "
+"τα οποία δεν έχετε δικάιωμα διαγραφής. Οι τύποι των αντικειμένων αυτών είναι:"
+
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
+"following protected related objects:"
+msgstr ""
+"Η διαγραφή του αντικειμένου (%(object_name)s) «%(escaped_object)s» απαιτεί "
+"τη διαγραφή των παρακάτω προστατευόμενων αντικειμένων:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Επιβεβαιώστε ότι επιθυμείτε τη διαγραφή των επιλεγμένων αντικειμένων "
+"(%(object_name)s \"%(escaped_object)s\"). Αν προχωρήσετε με τη διαγραφή, όλα "
+"τα παρακάτω συσχετισμένα αντικείμενα θα διαγραφούν επίσης:"
+
+msgid "Objects"
+msgstr "Αντικείμενα"
+
+msgid "Yes, I’m sure"
+msgstr "Ναι"
+
+msgid "No, take me back"
+msgstr "Όχι"
+
+msgid "Delete multiple objects"
+msgstr "Διαγραφή πολλαπλών αντικειμένων"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Η διαγραφή των επιλεγμένων αντικειμένων τύπου «%(objects_name)s» θα είχε "
+"αποτέλεσμα τη διαγραφή των ακόλουθων συσχετισμένων αντικειμένων για τα οποία "
+"δεν έχετε το διακαίωμα διαγραφής:"
+
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Η διαγραφή των επιλεγμένων αντικειμένων τύπου «%(objects_name)s» απαιτεί τη "
+"διαγραφή των παρακάτω προστατευμένων συσχετισμένων αντικειμένων:"
+
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Επιβεβαιώστε ότι επιθυμείτε τη διαγραφή των επιλεγμένων αντικειμένων τύπου "
+"«%(objects_name)s». Αν προχωρήσετε με τη διαγραφή, όλα τα παρακάτω "
+"συσχετισμένα αντικείμενα θα διαγραφούν επίσης:"
+
+msgid "Delete?"
+msgstr "Διαγραφή;"
+
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Ανά %(filter_title)s "
+
+msgid "Summary"
+msgstr "Περίληψη"
+
+msgid "Recent actions"
+msgstr "Πρόσφατες ενέργειες"
+
+msgid "My actions"
+msgstr "Οι ενέργειές μου"
+
+msgid "None available"
+msgstr "Κανένα διαθέσιμο"
+
+msgid "Unknown content"
+msgstr "Άγνωστο περιεχόμενο"
+
+msgid ""
+"Something’s wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Υπάρχει κάποιο πρόβλημα στη βάση δεδομένων. Βεβαιωθείτε πως οι κατάλληλοι "
+"πίνακες έχουν δημιουργηθεί και πως υπάρχουν τα κατάλληλα δικαιώματα "
+"πρόσβασης."
+
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+"Έχετε ταυτοποιηθεί ως %(username)s, αλλά δεν έχετε δικαίωμα πρόσβασης σ' "
+"αυτή τη σελίδα. Θέλετε να συνδεθείτε με άλλο λογαριασμό;"
+
+msgid "Forgotten your password or username?"
+msgstr "Ξεχάσατε το συνθηματικό ή το όνομα χρήστη σας;"
+
+msgid "Toggle navigation"
+msgstr "Εναλλαγή προβολής πλοήγησης"
+
+msgid "Date/time"
+msgstr "Ημερομηνία/ώρα"
+
+msgid "User"
+msgstr "Χρήστης"
+
+msgid "Action"
+msgstr "Ενέργεια"
+
+msgid ""
+"This object doesn’t have a change history. It probably wasn’t added via this "
+"admin site."
+msgstr ""
+"Αυτό το αντικείμενο δεν έχει ιστορικό αλλαγών. Πιθανότατα δεν προστέθηκε "
+"μέσω του παρόντος διαχειριστικού ιστότοπου."
+
+msgid "Show all"
+msgstr "Εμφάνιση όλων"
+
+msgid "Save"
+msgstr "Αποθήκευση"
+
+msgid "Popup closing…"
+msgstr "Κλείσιμο popup..."
+
+msgid "Search"
+msgstr "Αναζήτηση"
+
+#, python-format
+msgid "%(counter)s result"
+msgid_plural "%(counter)s results"
+msgstr[0] "%(counter)s αποτέλεσμα"
+msgstr[1] "%(counter)s αποτελέσματα"
+
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s συνολικά"
+
+msgid "Save as new"
+msgstr "Αποθήκευση ως νέου"
+
+msgid "Save and add another"
+msgstr "Αποθήκευση και προσθήκη καινούργιου"
+
+msgid "Save and continue editing"
+msgstr "Αποθήκευση και συνέχεια επεξεργασίας"
+
+msgid "Save and view"
+msgstr "Αποθήκευση και προβολή"
+
+msgid "Close"
+msgstr "Κλείσιμο"
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Να τροποποιηθεί το επιλεγμένο αντικείμενο (%(model)s)"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Να προστεθεί %(model)s"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Να διαγραφεί το επιλεγμένο αντικείμενο (%(model)s)"
+
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Ευχαριστούμε που διαθέσατε χρόνο στον ιστότοπο."
+
+msgid "Log in again"
+msgstr "Επανασύνδεση"
+
+msgid "Password change"
+msgstr "Αλλαγή συνθηματικού"
+
+msgid "Your password was changed."
+msgstr "Το συνθηματικό σας αλλάχθηκε."
+
+msgid ""
+"Please enter your old password, for security’s sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Δώστε το παλιό σας συνθηματικό και ακολούθως το νέο σας συνθηματικό δύο "
+"φορές ώστε να ελέγξουμε ότι το πληκτρολογήσατε σωστά."
+
+msgid "Change my password"
+msgstr "Αλλαγή του συνθηματικού μου"
+
+msgid "Password reset"
+msgstr "Επαναφορά συνθηματικού"
+
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Το συνθηματικό σας ορίστηκε. Μπορείτε τώρα να συνδεθείτε."
+
+msgid "Password reset confirmation"
+msgstr "Επιβεβαίωση επαναφοράς συνθηματικού"
+
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Δώστε το νέο συνθηματικό σας δύο φορές ώστε να ελέγξουμε ότι το "
+"πληκτρολογήσατε σωστά."
+
+msgid "New password:"
+msgstr "Νέο συνθηματικό:"
+
+msgid "Confirm password:"
+msgstr "Επιβεβαίωση συνθηματικού:"
+
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Ο σύνδεσμος που χρησιμοποιήσατε για την επαναφορά του συνθηματικού δεν είναι "
+"σωστός, ίσως γιατί έχει ήδη χρησιμοποιηθεί. Πραγματοποιήστε εξαρχής τη "
+"διαδικασία αίτησης επαναφοράς του συνθηματικού."
+
+msgid ""
+"We’ve emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Σας στείλαμε email με οδηγίες ορισμού συνθηματικού. Θα πρέπει να το λάβετε "
+"σύντομα."
+
+msgid ""
+"If you don’t receive an email, please make sure you’ve entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Εάν δεν λάβετε email, παρακαλούμε σιγουρευτείτε ότι έχετε εισαγάγει τη "
+"διεύθυνση με την οποία έχετε εγγραφεί, και ελέγξτε το φάκελο ανεπιθύμητης "
+"αλληλογραφίας."
+
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Λαμβάνετε αυτό το email επειδή ζητήσατε επαναφορά συνθηματικού για το "
+"λογαριασμό σας στον ιστότοπο %(site_name)s."
+
+msgid "Please go to the following page and choose a new password:"
+msgstr ""
+"Παρακαλούμε επισκεφθείτε την ακόλουθη σελίδα και επιλέξτε νέο συνθηματικό: "
+
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Το όνομα χρήστη, σε περίπτωση που δεν το θυμάστε:"
+
+msgid "Thanks for using our site!"
+msgstr "Ευχαριστούμε που χρησιμοποιήσατε τον ιστότοπό μας!"
+
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Η ομάδα του ιστότοπου %(site_name)s"
+
+msgid ""
+"Forgotten your password? Enter your email address below, and we’ll email "
+"instructions for setting a new one."
+msgstr ""
+"Ξεχάσατε το συνθηματικό σας; Εισαγάγετε το email σας και θα σας στείλουμε "
+"οδηγίες για να ορίσετε καινούργιο."
+
+msgid "Email address:"
+msgstr "Διεύθυνση email:"
+
+msgid "Reset my password"
+msgstr "Επαναφορά του συνθηματικού μου"
+
+msgid "All dates"
+msgstr "Όλες οι ημερομηνίες"
+
+#, python-format
+msgid "Select %s"
+msgstr "Επιλέξτε αντικείμενο (%s)"
+
+#, python-format
+msgid "Select %s to change"
+msgstr "Επιλέξτε αντικείμενο (%s) προς αλλαγή"
+
+#, python-format
+msgid "Select %s to view"
+msgstr "Επιλέξτε αντικείμενο (%s) για προβολή"
+
+msgid "Date:"
+msgstr "Ημ/νία:"
+
+msgid "Time:"
+msgstr "Ώρα:"
+
+msgid "Lookup"
+msgstr "Αναζήτηση"
+
+msgid "Currently:"
+msgstr "Τώρα:"
+
+msgid "Change:"
+msgstr "Επεξεργασία:"

Някои файлове не бяха показани, защото твърде много файлове са промени